Lisphk 发表于 2018-4-24 11:45:50

有个苗木表,想把里面的图块按表的内容改名和增加属性

有个苗木表,想把里面的图块按表的内容改名和增加属性,如图,现在这些图块名字无意义的字母,想窗口选下,自动把名字改成图块右边第一个文字,增加隐藏的属性,把右边第二个文字写进去。这样以后用就方便了。谢谢!




kiwiairui 发表于 2018-4-25 09:41:46

{:1_20:}好东西            

yangjian001 发表于 2018-4-25 10:07:36

非常好的不错

Lispboy 发表于 2018-4-25 11:45:13

本帖最后由 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



liunian0524 发表于 2018-4-25 12:53:36

感谢大师分享

开心68602 发表于 2018-5-19 18:57:06

感谢老师分享。

rxbwyl 发表于 2018-6-15 08:50:45

感谢老师们的无私分享,谢谢,

jeaker8 发表于 2018-8-24 09:43:01

感谢分享,谢谢!

xudongchu 发表于 2018-8-27 10:33:41

厉害!晓东论坛很适合学习

rxbwyl 发表于 2018-9-9 20:10:52

感谢分享,谢谢!

renyonghua2014 发表于 2018-9-19 03:53:28

呵呵,看看!

sys1538 发表于 2018-10-4 16:36:23

谢谢,您的帖子太好了,解决了工作的问题,提高了效率。

tht-0 发表于 2018-10-13 16:35:59

感谢分享,谢谢!

ming1789 发表于 2018-10-20 23:21:56

感謝分享                     

shizp123 发表于 2019-4-6 20:34:43


厉害!晓东论坛很适合学习{:1_7:}
页: [1] 2 3 4
查看完整版本: 有个苗木表,想把里面的图块按表的内容改名和增加属性