自贡黄明儒 发表于 2012-10-24 15:36:53

本帖最后由 自贡黄明儒 于 2012-10-24 15:40 编辑

;;154.7 [功能] 复制非打开文件的块至本图
;;154.8 [功能] 复制非打开文件的特定块至本图
;;154.9 [功能] 复制特定文件的块至本图(不论打开或者非打开)

;;154.7 [功能] 复制非打开文件的块至本图
;;(Odbx-copyblocks 文件名)
;;(Odbx-copyblocks "D:\\DrawingA.dwg"),之后输入命令i,就可以看到DrawingA的块均在本图中了
(defun Odbx-copyblocks (DwgName / DBXBLOCKS DBXDOC NUM)
(setq      dbxDoc (vla-GetInterfaceObject
               (vlax-get-acad-object)
               (GetObjectDBXVer)
               )
)
(vla-open dbxDoc DwgName)                ;不能打开.dxf文件,返回nil
(setq DBXBLOCKS (vla-get-blocks dbxDoc))
(vlax-for BLK      DBXBLOCKS
    (if      (and (not (wcmatch (substr (vla-get-name BLK) 1 1) "`*"))
             (= (vla-get-isxref BLK) :vlax-false)
      )                              ;去除系统块、匿名块和参照类对象
      (setq namelst (append namelst (list (vla-get-name BLK))))
    )
)
(foreach name      namelst
    (setq num (vla-item DBXBLOCKS name))
    (vla-copyobjects
      dbxDoc
      (vlax-safearray-fill
      (vlax-make-safearray vlax-vbobject '(0 . 0))
      (list num)
      )
      (vla-get-modelspace
      (vla-get-activedocument (vlax-get-acad-object))
      )
    )
)
(if dbxDoc
    (vlax-release-object dbxDoc)
)
)

**** Hidden Message *****

qingbo9818 发表于 2012-10-24 16:00:22

还有多少?

xiaxiang 发表于 2012-10-24 16:43:12

为什么不在一楼更新呢?差点没找到。。。

hhhlike 发表于 2012-10-24 17:00:12

学习一下

xiaxiang 发表于 2012-10-24 17:49:13

没有问题的,在一楼更新附件,下过的就不会重复收币,小菜选择易就是最经典的例子

clh521 发表于 2012-10-24 22:36:32

经典,经典

Atsai 发表于 2012-10-25 06:55:37

建议楼主可在一楼统一更新,

这样小弟才比较不会有遗漏,赞啦!

namezg 发表于 2012-10-25 20:29:59

支持楼主l希望楼主多发精品好帖.....

jh1005 发表于 2012-10-26 00:11:19

很实用的函数,谢谢分享。

USER2128 发表于 2012-10-26 08:26:41

精彩贴,差点被遗漏!谢谢大虾们!
页: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19
查看完整版本: 常用函数.lsp