Michaels 发表于 2022-7-6 09:46:11

如何在我的r

你好
 
我期待着在我的例程中包含相同的Undo命令
作为直线和多段线命令中的一个。
 
一些事情,比如在没有完成的情况下重复整个程序。
 
非常感谢

Lee Mac 发表于 2022-7-6 10:01:37

例子:
 

(defun c:test ( / p1 p2 p3 elist )

;;---------------------------------------------;;
;; Example © Lee Mac 2011-www.lee-mac.com;;
;;---------------------------------------------;;

(if (setq p1 (getpoint "\nSpecify First Point: ") p3 p1)
   (while
   (progn (initget "Undo")
       (setq p2 (getpoint (strcat "\nSpecify Next Point" (if elist " " "") ": ") p1))
      
       (cond
         (
         (and p2 (listp p2))

         (setq elist
             (cons
               (entmakex
               (list
                   (cons 0 "LINE")
                   (cons 10 (trans p1 1 0))
                   (cons 11 (trans p2 1 0))
               )
               )
               elist
             )
             p1 p2
         )
         )
         (
         (eq "Undo" p2)

         (if elist
             (progn
               (entdel (car elist))
               (if (setq elist (cdr elist))
               (setq p1 (cdr (assoc 11 (entget (car elist)))))
               (setq p1 p3)
               )
             )
             (princ "\n** Nothing to Undo **")
         )
         )
       )
   )
   )
)

(princ)
)

Michaels 发表于 2022-7-6 10:18:55

李太棒了。
 
我有这个例程,我想在其中包括Undo命令,我尝试了很长时间,但没有机会。
 
你能带我去吗?
 
这是我漫长的日常生活的一部分,所有动作都是用defuns完成的,如下图所示。
2

Lee Mac 发表于 2022-7-6 10:30:29

例子:
 
(defunc:test(/elist opt pt str ucsxdir ucsz);;----------------------------------------------------;;;;示例©Lee Mac 2011-www.Lee-Mac。通用域名格式;;;;---------------------------------------------------;;(UCSZ(trans'(0。10tUCSXDIR(角度'(0。0。0。trans(getvar'UCSXDIR)0UCSZt)(而(initget“文本多行文字撤消”(opt(2A2A]“\n文字或多行文字?[文字/多行文字”(ifelist“/Undo””“]:“)((2a)“撤消”opt(ifelist(prognentdel(carelist)elist(cdrelist)[(princ“\n**无需撤消**”t(opt(

Michaels 发表于 2022-7-6 10:34:20

李真是太棒了。
 
非常感谢你。

Lee Mac 发表于 2022-7-6 10:54:45

不客气,迈克尔,希望你能从中学到一些东西
页: [1]
查看完整版本: 如何在我的r