pBe 发表于 2022-7-6 08:51:37

 
我明白了,我的想法更像是。。。。
 
指定第二点或:*拾取*“…哎呀,我不喜欢它…”
指定第二点或:*拾取*“…垃圾仍然不好…”
指定第二点或:*拾取*“…哦,是的…”
 
如果用户对第一个和后续拾取的位置不满意,则减少一个命令(移动)

LISP2LEARN 发表于 2022-7-6 08:59:00

谢谢艾伦。我学到了很多关于你的代码。这正是我想要的。
 
米尔恰,
你中了头奖,很有魅力。谢谢你们的帮助。

Lee Mac 发表于 2022-7-6 08:59:33

要演示如何使用块来避免移动命令的橡皮筋,请执行以下操作:
 
(defun c:test ( / *error* e l n s v )

   (defun *error* ( msg )
       (if l (mapcar 'setvar v l))
       (if (and n (setq e (tblobjname "BLOCK" n)))
         (vla-delete (vlax-ename->vla-object (cdr (assoc 330 (entget e)))))
       )
       (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
         (princ (strcat "\nError: " msg))
       )
       (princ)
   )
   
   (if
       (and
         (setq e (car (entsel)))
         (eq "INSERT" (cdr (assoc 0 (setq e (entget e)))))
         (setq e (strcase (cdr (assoc 2 e))))
       )
       (progn
         (setq s
               (cond
                   (   (eq e "P1")   "1\"")
                   (   (eq e "P1.5") "1-1\\2\"")
                   (   (eq e "P2")   "2\"")
                   (   "N/A"   )
               )
         )

         (setq n 0)
         (while (tblsearch "BLOCK" (itoa (setq n (1+ n)))))
         (setq n (itoa n))

         (entmake
               (list
                  '(0 . "BLOCK")
                  '(8 . "0")
                   (cons 2 n)
                  '(70 . 0)
                  '(10 0.0 0.0 0.0)
               )
         )
         (entmake
               (list
                  '(0 . "TEXT")
                   (cons 7 (if (tblsearch "STYLE" "romans") "romans" "Standard"))
                  '(40 . 10.0)
                  '(8 . "TEXT")
                  '(10 0.0 0.0 0.0)
                   (cons 1 s)
                  '(41 . 0.
               )
         )
         (entmake '((0 . "ENDBLK")))

         (setq v '(CMDECHO QAFLAGS)
               l(mapcar 'getvar v)
               e(entlast)
         )
         (mapcar 'setvar v '(0 1))
         (princ "\nPosition Text: ")
         (command "_.-insert" n "_S" 1.0 "_R" 0.0 pause)
         (if (not (equal e (setq e (entlast))))
               (command "_.explode" e "")
         )
         (mapcar 'setvar v l)
         (vla-delete (vlax-ename->vla-object (cdr (assoc 330 (entget (tblobjname "BLOCK" n))))))
       )
   )
   (princ)
)
(vl-load-com) (princ)

LISP2LEARN 发表于 2022-7-6 09:07:30

谢谢你,李。效果很好!

Lee Mac 发表于 2022-7-6 09:10:50

不客气
页: 1 [2]
查看完整版本: 请改进我的Lisp程序