[lisp程序]:做匿名块的程序
;做匿名块的程序
(defun Nblock (ss insertpt / InstPt blocks blk i Objs)
(setq InstPt (vlax-3d-point insertpt)) ;转化为ActiveX的点
(setq blocks (vla-get-blocks *DOC))
(setq blkobj (vla-add blocks InstPt "*U")) ;定义匿名图块
(setq i -1)
(repeat (sslength ss)
(setq objs (cons (vlax-ename->vla-object (ssname ss (setq i(1+ i)))) objs))
) ;把选择集的物体加入到匿名图块
(vlax-invoke *DOC 'copyobjects objs blkobj) ;采用 copyobjects方式插入图块
(mapcar 'vla-delete objs) ;删除选择集
(vla-insertblock *MSP InstPt (vla-get-name blkobj) 1 1 1 0)
blkobj
)
;;测试程序
(defun C:test()
(vl-load-com)
(setq *OBJ (vlax-get-acad-object)
*DOC (vla-get-activeDocument *OBJ)
*MSP (vla-get-Modelspace *DOC)
)
(if (setq ss (ssget)) ;取得选择集
(if (setq insertpt (getpoint "\n请输入插入点: "));取得插入点
(nblock ss insertpt) ;做匿名图块
)
)
)
不好意思,帖子发重了,麻烦版主删除掉那个空内容贴。
不知道是不是浏览器问题,发帖和编辑帖子及回帖老出错。 应该是个好东西,不过不知道干什么用的,能讲讲吗? 楼主的方法比较好,采用的是vlisp,顶了! 这个 非常有用有助于批量块的建立 要是哪位大神 做个非常好的 选择集 分组的函数 就完美了
页:
[1]