匿名块更改为普通块
本帖最后由 muwind 于 2020-8-6 22:41 编辑;最近开始用三维建模,导出的dwg图纸全是匿名块;发现点问题,当有多个同名的匿名块(普通块转为匿名块后经常遇到)的时候,会改名出错, 重新修改了下,详见附件
附件有个5个函数
ab2b全部匿名块更改为普通块
ab2bs 选择的匿名块更改为普通块
ab2b2 全部匿名块更改为普通块的另一个算法
b2ab 选择的普通块更改为匿名块
b2b 选择的任意块更改为输入的文件名
static/image/hrline/2.gif
论坛现有的不太适合自己,所以根据论坛的改了一个适合自己的
(defun c:brab(/ blks ss m n e nam bnnew)
(setq BLKs (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))));取得图形的Blocks集合
(if (setq ss (ssget "_X" '((0 . "INSERT")(2 . "`**"))))
(progn
(repeat (setq n (sslength ss))
(if (setq e (ssname ss (setq n (1- n))))
(progn
(setqnam (vla-get-name (vlax-ename->vla-object e)));获取匿名块名字
(setqbnnew(substrnam 2));获取匿名块星号后面的字符串
(setqm 0)
(while (/= (tblsearch"BLOCK" bnnew) nil)
(setqm (1- m))
(setqbnnew(strcatbnnew(rtosm 2 2)))
)
(vla-put-name (vla-item blks nam) bnnew);Blocks中名为nam的Block重命名为bnnew
)
)
)
(vla-auditinfo (vla-get-activedocument (vlax-get-acad-object)) :vlax-true)
)
)
(princ)
)
匿名块我感觉是星号+一个字母开头的都应该是了,从我的三维软件转出来的是 *A开头的,
我也根据自家情况写两个 普通块转为匿名块的(排除部分块更名,如果很多块排除估计用表方便点)
(defun c:b2ab(/ blks ssn e nam bnnew)
(setq BLKs (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))));取得图形的Blocks集合
(if (setq ss (ssget "_X"'((0 . "INSERT")(2 . "~`**"))))
(progn
(repeat (setq n (sslength ss))
(if (setq e (ssname ss (setq n (1- n))))
(progn
(setqnam (vla-get-name (vlax-ename->vla-object e)));获取普通块名字
(if (and (/= nam "BTL") (/= nam "mxl") )
(vla-put-name (vla-item blks nam) "*A");Blocks中名为nam的Block重命名为匿名
)
)
)
)
)
)
(princ)
)
本帖最后由 maiko 于 2020-8-3 22:45 编辑
给楼主顶个赞,感谢楼主分享@~~~
(defun c:bnm ( / blks a blk i obj ss doc )
(setq blks (vla-get-blocks (setq doc (vla-get-activedocument (vlax-get-acad-object)))))
(if (setq i -1 ss (ssget "_X" '((0 . "INSERT")(2 . "`*U*"))))
(while (setq obj (vlax-ename->vla-object(ssname ss (setq i (1+ i)))))
(setq blk (vla-item blks (vla-get-name obj)))
(vla-put-name blk (setq a (strcat "BNM-" (rtos (* (getvar "cdate") 1e8)))))
(vla-auditinfo doc :vlax-true)
(vla-put-name blk a)
)
)
)
楼主感谢分享啊
楼主感谢分享啊 多谢楼主分享 感谢分享,这个太实用了 好用学习了~~~~ 不知道为什么其他工具箱集成的这个功能好像没反应。。 这个可以,方便
页:
[1]
2