我明白了,我的想法更像是。。。。
指定第二点或:*拾取*“…哎呀,我不喜欢它…”
指定第二点或:*拾取*“…垃圾仍然不好…”
指定第二点或:*拾取*“…哦,是的…”
如果用户对第一个和后续拾取的位置不满意,则减少一个命令(移动) 谢谢艾伦。我学到了很多关于你的代码。这正是我想要的。
米尔恰,
你中了头奖,很有魅力。谢谢你们的帮助。 要演示如何使用块来避免移动命令的橡皮筋,请执行以下操作:
(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) 谢谢你,李。效果很好! 不客气
页:
1
[2]