是的,这就是在-INSERT命令中使用暂停等待用户输入的缺点-无法控制接收到的输入。
另一种方法是事先获得点,但牺牲了插入预览:
- (defun c:block-reinsert ( / att blk ins sel )
- (if (setq sel (ssget "_+.:E:S" '((0 . "INSERT"))))
- (progn
- (setq blk (LM:al-effectivename (ssname sel 0))
- att (getvar 'attreq)
- )
- (setvar 'attreq 0)
- (while (setq ins (getpoint "\nSpecify insertion point <exit>: "))
- (command "_.-insert" blk "_S" 1.0 "_R" 0.0 "_non" ins)
- )
- (setvar 'attreq att)
- )
- )
- (princ)
- )
- ;; Effective Block Name - Lee Mac
- ;; ent - [ent] Block Reference entity
- (defun LM:al-effectivename ( ent / blk rep )
- (if (wcmatch (setq blk (cdr (assoc 2 (entget ent)))) "`**")
- (if
- (and
- (setq rep
- (cdadr
- (assoc -3
- (entget
- (cdr
- (assoc 330
- (entget
- (tblobjname "block" blk)
- )
- )
- )
- '("AcDbBlockRepBTag")
- )
- )
- )
- )
- (setq rep (handent (cdr (assoc 1005 rep))))
- )
- (setq blk (cdr (assoc 2 (entget rep))))
- )
- )
- blk
- )
但是,请注意按ESC退出提示,因为如果没有错误处理程序,ATTREQ sys var将不会重置。 |