有个苗木表,想把里面的图块按表的内容改名和增加属性
有个苗木表,想把里面的图块按表的内容改名和增加属性,如图,现在这些图块名字无意义的字母,想窗口选下,自动把名字改成图块右边第一个文字,增加隐藏的属性,把右边第二个文字写进去。这样以后用就方便了。谢谢!{:1_20:}好东西 非常好的不错 本帖最后由 Lispboy 于 2018-4-25 11:48 编辑
很不错的植物图块啊,挺丰富,也挺好看,写了处理代码,把他们都改名和添加常量属性了
(defun c:tt ()
(if (and (xdrx_initssget "选择图块<退出>:")
(setq ss (xdrx_ssget '((0 . "INSERT"))))
)
(progn
(setq num 0)
(mapcar '(lambda (x)
(setq blk (xdrx_getpropertyvalue x "blocktablerecord")
blkname (car blk)
blk (last blk)
box (xdrx_entity_box x)
p1 (car box)
p4 (last box)
p2 (cadr box)
v (mapcar '- p2 p1)
v (xdrx_vector_normalize v)
p2 (mapcar '+ p1 (xdrx_vector_product v 100.0))
p3 (mapcar '+ p4 (xdrx_vector_product v 100.0))
box (list p1 p2 p3 p4)
)
(if (setq ss1 (ssget "cp" box '((0 . "*text"))))
(progn
(setq lst (mapcar '(lambda (y)
(xdrx_getpropertyvalue
y
"position"
"textstring"
)
)
(xdrx_pickset->ents ss1)
)
lst (vl-sort lst '(lambda (x y) (< (caar x) (caar y))))
name (cadr (car lst))
desc (cadr (cadr lst))
)
(setq ins (xdrx_getpropertyvalue blk "position"))
;(princ "\n")(princ name)(princ " ")(princ desc)
(xdrx_block_addattdef blkname "说明" ins desc desc (getvar "textstyle") 1.0 0.0 ""tnil t t)
(setq name (xdrx_string_regexpr "(?<=[\\u4e00-\\u9fa5])\\s+(?=[\\u4e00-\\u9fa5])" name ""))
(if (xdrx_setpropertyvalue blk "name" name)
(setq num (1+ num))
)
)
)
)
(xdrx_pickset->ents ss)
)
(xdrx_prompt "\n共选择了 " (sslength ss) " 个图块,改名和添加属性成功 " num "个图块.")
)
)
(princ)
)
下面是苗木统计的,生成苗木表,执行命令: XDTB_TJMiaoMu
**** Hidden Message *****
附件是处理后的DWG
感谢大师分享 感谢老师分享。
感谢老师们的无私分享,谢谢, 感谢分享,谢谢! 厉害!晓东论坛很适合学习 感谢分享,谢谢! 呵呵,看看! 谢谢,您的帖子太好了,解决了工作的问题,提高了效率。 感谢分享,谢谢! 感謝分享
厉害!晓东论坛很适合学习{:1_7:}