honboo 发表于 2004-12-23 18:14:00

又来麻烦大家了,帮我看看程序哪里错了?

程序是想实现这样的功能:擦除一排写在图框里的图号,但是程序却只能擦除一个,请帮帮忙了!!哈哈


       (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>        )

xyp1964 发表于 2004-12-23 19:34:00

本帖最后由 作者 于 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)
)

lockmyeye 发表于 2004-12-23 19:35:00

<BR>                                                       (SETQ poin1 (LIST (+ (CAR point1) 420) (CADR poin1)))<BR>                                                       (SETQ poin2 (LIST (+ (CAR point2) 420) (CADR poin2)))


变量poin1和poin2,应该是point1和point2吧。

zhongys 发表于 2004-12-23 20:10:00

(setq point2 (getpoint "\n请确定第二个对角点"))               


改为


                                       (setq point2 (getcorner "\n请确定第二个对角点"))                比较直观

honboo 发表于 2004-12-24 09:10:00

本帖最后由 作者 于 2004-12-24 10:10:18 编辑

非常感谢各位,如果我图框是个块,而每个图框的图号在固定的位置,如何查找块,并且定位到图号的位置??


不过好象更改后还是不能运行出来,只能擦除第一个!

meflying 发表于 2004-12-24 11:54:00

把改好的程序和你的图给上来比较好点
页: [1]
查看完整版本: 又来麻烦大家了,帮我看看程序哪里错了?