[求助]哪位高手请帮忙看看,出错了. 函数被取消
<p>(defun C:ZHL_CV (/ p1 p2 s e cn) <br/> (defun ttt (ss n / m) <br/> (setq ee e <br/> ns (ssadd) <br/> ) <br/> (while (setq ee (entnext ee)) <br/> (setq ns (ssadd ee ns)) <br/> ) <br/> (command "erase" ns "") <br/> (command "copy" ss "" "m" "non" p1) <br/> (setq m 0) <br/> (repeat (atoi n) <br/> (setq m (1+ m)) <br/> (cond <br/> (t <br/> (command "non" <br/> (mapcar '(lambda (x y) (+ x (* m (- y x)))) p1 p2) <br/> ) <br/> ) <br/> ) <br/> ) <br/> ;(command) <br/> ) <br/> (princ "\n选择要复制的物体:") <br/> (setq s (ssget)) <br/> (setq p1 (getpoint "\n复制的起点:")) <br/> (setq p2 (getpoint p1 "\n复制的终点(输入距离或点取):")) <br/> (setq e (entlast)) <br/> (command "copy" s "" "non" p1 "non" p2) <br/>(setq dist (distance p1 p2))<br/>(setq xx_dis (getdist "\n确定距离: ")<br/>) <br/> (while (/= 0 (ATOF (setq cn (itoa (/ (fix xx_dis) (fix DIST))))))<br/> (ttt s cn) <br/> ) <br/> (princ) <br/>)</p><p><br/>需要点或选项关键字。<br/>; 错误: 函数被取消</p><p>指定第二个点或 [退出(E)/放弃(U)] <退出>: *取消*<br/></p> <p>我这儿 Run 过关!?</p><p>请说明测试环境与单步执行时的出错点<br/>最好是顺带提供测试用图档</p> <p>我的运行环境是CAD2006,我想在(setq xx_dis (getdist "\n确定距离: "))时,点取第二点后就结束命令,但在点取第二点是却出现:</p><p>需要点或选项关键字。<br/>; 错误: 函数被取消</p><p>指定第二个点或 [退出(E)/放弃(U)] <退出>:</p> <p>隔行如隔山 :-)</p><p>说实在的,您这个程序,还是不甚了了</p><p>有些叙述参不透个中玄机,可加注用意说明么<br/>若加上执行前图面,与本欲达成的目标图面 .....</p><p>getdist ==>单纯的 keyin/给定两点 皆可<br/>看不出为何不行!?</p><p></p> <p>这个程序是以前下的,我改了一下,功能是:</p><p>阵列复制</p> <p>阵列是阵列(Array)<br/>复制是复制(Copy)</p><p>什么是阵列复制? 附个截图如何?</p><p></p> 就是按一定的方向和一定的距离,在指定范围内进行复制! 1、1楼的问题出在:(command "copy" s "" "non" p1 "non" p2) 一句。2、2楼说运行过关,是因为2楼使用的是ACAD2005或其一下更低版本。
3、问题的关键在于acad在版本升级过程中对copy命令做了改动。
即将多重复制作为了默认。
代码高亮显示参见:http://zml84.blog.sohu.com/54114843.html
;;关闭命令回显
(setvar "CMDECHO" 0)
;;;================================================
;;功能:在指定的方向上定长复制
;;日期:zml84 于 2007-07-07
(defun C:tt (/ s p1 p2 ang dist xx_dis n)
(princ "\n选择要复制的物体:")
(if (and (setq s (ssget))
(setq p1 (getpoint "\n1.复制的基点:"))
(setq p2 (getpoint p1 "\n2.复制的目标点:"))
(progn
(setq ang(angle p1 p2)
dist (distance p1 p2)
)
(princ "\n>>>复制间距=")
(princ dist)
(setq xx_dis (getdist p1 "\n3.确定距离范围: "))
)
)
(progn
(setq n (fix (/ xx_dis DIST)))
(princ "\n>>>复制范围=")
(princ xx_dis)
(princ " 复制次数=")
(princ n)
(repeat n
;;小提示:acad2006及其以后版本的copy命令已默认为多重模式。
;;为了上下版本兼容,在下面一句中使用了"m"选项。
(command "_.copy" s "" "m" "non" p1 "non" p2 "")
(setq p2 (polar p2 ang dist))
)
)
) ;_结束 if
(princ)
) ;_结束 defun
;;;================================================
页:
[1]