[转帖]LISP匿名块程序:
LISP匿名块程序:(defun c:cb ()
(setq pt (getpoint "\n插入点: "))
(entmake
(list '(0 . "BLOCK") '(2 . "*U") '(70 . 1) (cons 10 pt))
)
(prompt "\n选择实体")
(setq ss1 (ssget)
i (sslength ss1)
n (- 1)
)
(repeat i
(entmake (cdr (entget (ssname ss1 (setq n (1+ n))))))
)
(setq num (entmake '((0 . "ENDBLK"))))
(entmake (list '(0 . "INSERT") (cons 2 num) (cons 10 pt)))
(command "erase" ss1 "")
(princ)
) 时间虽久,程序在CAD2010中使用良好,谢谢楼主 程序与目前明经提供的匿名块程序有相同的缺点,对pline及带属性图块会出错,
更简单的方法可以用正常的方式建图块,再改为匿名块 龙大哥,你写一个用ActiveX方法的建匿名块的函数吧,用AX方法应该可以解决PLINE和属性块问题吧。 ;;建立匿名块
;;by 龙龙仔
(defun C:NONAME_BLK (/ HOLDECHO HOLDBLIP A AA BLKREF)
(command "_.undo" "_group")
(setq HOLDECHO (getvar "cmdecho"))
(setq HOLDBLIP (getvar "blipmode"))
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(prompt "\n选取对象建立匿名块: ")
(setq AA (ssget))
(setq A (rtos (* (getvar "CDATE") 1E8)))
(if (/= AA NIL)
(progn
(command "_.BLOCK" A "0,0" AA "")
(command "_.INSERT" A "@" "" "" "")
(setq BLKREF (vlax-ename->vla-object (entlast)))
(vla-put-name
(vla-item (vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))
)
(vla-get-name BLKREF)
)
"*U"
)
(vlax-release-object BLKREF)
)
(alert "\n没有选取任何对象!")
)
(setvar "blipmode" HOLDBLIP)
(setvar "cmdecho" HOLDECHO)
(command "_.undo" "_end")
(princ)
)
强! 佩服龙兄 强,我顶 好:
我盯 龙龙仔发表于2003-8-18 12:38:00static/image/common/back.gif程序与目前明经提供的匿名块程序有相同的缺点,对pline及带属性图块会出错,更简单的方法可以用正常的方式建图块,再改为匿名块
<BR>说的没错,那怎么把正常的图块改名为匿名块???请指教。。 用VLISP直接改正常的图块为"*U" 龙龙仔发表于2006-1-23 17:03:00static/image/common/back.gif用VLISP直接改正常的图块为\"*U\"
<BR>呵呵,还请明示!