又来麻烦大家了,帮我看看程序哪里错了?
程序是想实现这样的功能:擦除一排写在图框里的图号,但是程序却只能擦除一个,请帮帮忙了!!哈哈(setq os (getvar "osmode"))<BR>(setvar "osmode" os)
(defun c:ca()<BR> (setq point1 (getpoint "\n请确定第一个对角点"))<BR> (setq point2 (getpoint "\n请确定第二个对角点"))<BR> (setq time (getstring "\n请输入图框数量:"))<BR> (setq tim (atoi time))<BR> (setvar "osmode" 0)<BR> <BR>(repeat tim<BR> (setq clu (ssget "w" point1 point2))<BR> (if (/= clu nil)<BR> (command "._erase" clu "")<BR> (princ "完成擦处!")<BR> )<BR> (setq poin1 (list (+ (car point1) 420) (cadr poin1)))<BR> (setq poin2 (list (+ (car point2) 420) (cadr poin2)))<BR> )
(setvar "osmode" os)<BR> ) 本帖最后由 作者 于 2004-12-25 19:41:29 编辑
试试:(defun c:test ()
(setq os (getvar "osmode"))
(setq point1 (getpoint "\n请确定第一个对角点 : "))
(setq point2 (getpoint "\n请确定第二个对角点 : "))
(setq tim (getreal "\n请输入图框数量 : "))
;;(setq tim (atoi time))
(setvar "osmode" 0)
(command "undo" "BE")
(repeat tim
(setq clu (ssget "w" point1 point2))
(if(/= clu nil)
(command "._erase" clu "")
(princ "完成擦处!")
)
(setq point1 (list (+ (car point1) 420) (cadr point1)))
(setq point2 (list (+ (car point2) 420) (cadr point2)))
)
(command "undo" "E")
(setvar "osmode" os)
) <BR> (SETQ poin1 (LIST (+ (CAR point1) 420) (CADR poin1)))<BR> (SETQ poin2 (LIST (+ (CAR point2) 420) (CADR poin2)))
变量poin1和poin2,应该是point1和point2吧。 (setq point2 (getpoint "\n请确定第二个对角点"))
改为
(setq point2 (getcorner "\n请确定第二个对角点")) 比较直观 本帖最后由 作者 于 2004-12-24 10:10:18 编辑
非常感谢各位,如果我图框是个块,而每个图框的图号在固定的位置,如何查找块,并且定位到图号的位置??
不过好象更改后还是不能运行出来,只能擦除第一个! 把改好的程序和你的图给上来比较好点
页:
[1]