highflybird 发表于 2007-1-25 21:12:21

[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)                           ;做匿名图块
    )
)
)

不好意思,帖子发重了,麻烦版主删除掉那个空内容贴。
不知道是不是浏览器问题,发帖和编辑帖子及回帖老出错。

dszyg 发表于 2007-3-13 14:07:44

应该是个好东西,不过不知道干什么用的,能讲讲吗?

jx2008 发表于 2007-4-10 00:14:08

楼主的方法比较好,采用的是vlisp,顶了!

qxlonmsn 发表于 2022-7-1 15:34:11

这个 非常有用有助于批量块的建立    要是哪位大神   做个非常好的   选择集   分组的函数   就完美了
页: [1]
查看完整版本: [lisp程序]:做匿名块的程序