品茗新秀 发表于 2014-3-25 19:17:22

求块上有文字,将块名称改成块上文字,相同的块相同的块,相同的名称

本帖最后由 品茗新秀 于 2014-3-25 22:23 编辑

将块名称改成块上文字,相同的块相同的块,相同的名称




达到要求,块名称为柳树





品茗新秀 发表于 2014-3-25 22:25:00

顶出高手,这个对我实在太难了

lucas_3333 发表于 2014-3-25 22:45:57

品茗新秀 发表于 2014-3-25 22:25 static/image/common/back.gif
顶出高手,这个对我实在太难了

那怎样的是简单的,拿出你的代码

品茗新秀 发表于 2014-3-26 14:24:07

顶出高手,这个确实太难了

lpl 发表于 2014-3-26 14:42:04

楼主想统计苗木表吧.......

品茗新秀 发表于 2014-3-26 14:49:13

lpl 发表于 2014-3-26 14:42 static/image/common/back.gif
楼主想统计苗木表吧.......

是这一块的内容的学习

llsheng_73 发表于 2014-3-27 14:17:45

看了一下测试图,有的块那没有文字,这比较麻烦
如果所有的文字都是压着块的话就比较容易
首先(ssget"X"'((0 . "TEXT")))把所有文字选出来
再根据每一个文字所在位置通过"CP"方式选择块,得到它的块名,进行修改
(defun change-block-name (EntNam NewNam / obj blocks BlkNam block)
(setq *DOC (vla-get-activeDocument(vlax-get-acad-object))
        blocks (vla-get-blocks *DOC))
(setq obj (vlax-ename->vla-object EntNam))
(if (=(vla-get-objectname obj) "AcDbBlockReference")
    (if (tblsearch "block" NewNam)
      (princ "\n和已有块名重复!")
      (progn
        (setq BlkNam (vla-get-name obj))
        (setq block(vla-item blocks BlkNam))
        (vlax-put-property block 'Name NewNam)
        (if (= (substr BlkNam 1 2) "*U")
          (progn
          (vla-auditinfo *Doc :vlax-true)
          (vla-put-name block NewNam)))))))
循环处理完所有文字
但一个文字不能压两种块

品茗新秀 发表于 2014-3-28 14:15:20

llsheng_73 发表于 2014-3-27 14:17 static/image/common/back.gif
看了一下测试图,有的块那没有文字,这比较麻烦
如果所有的文字都是压着块的话就比较容易
首先(ssget"X"' ...

如果能增加程序顺序执行,文字就变色,这样应该好一点

品茗新秀 发表于 2014-3-29 11:02:01


顶出高手,这个确实太难了
页: [1]
查看完整版本: 求块上有文字,将块名称改成块上文字,相同的块相同的块,相同的名称