artken 发表于 2008-12-10 13:18:00

请教个组码读取与更新的问题

本帖最后由 作者 于 2008-12-10 13:27:07 编辑 <br /><br /> <p></p><p>请教个组码读取与更新的问题</p><p>CAD2008的MULTILEADER,DXF组码如下:</p><p>(-1 . &lt;图元名: 7efa5290&gt;)<br/>(0 . "MULTILEADER")<br/>(330 . &lt;图元名: 7efa1cf8&gt;)<br/>(5 . "1EEA")<br/>(100 . "AcDbEntity")<br/>.........<br/>(330 . &lt;图元名: 7efa4b40&gt;)<br/>(177 . 2)<br/>(44 . 0.0)<br/>(302 . "<font color="#ff0000">ST</font>")<br/>(330 . &lt;图元名: 7efa4b58&gt;)<br/>(177 . 3)<br/>(44 . 0.0)<br/>(302 . "<font color="#ff0000">大理石</font>")<br/>(330 . &lt;图元名: 7efa4b60&gt;)<br/>(177 . 4)<br/>(44 . 0.0)<br/>(302 . "<font color="#ff0000">800X800</font>")<br/>........</p><p>请问:怎么分别取出当中的<font color="#ff0000">ST、大理石、800X800,</font><font color="#000000">大家都是302???</font></p><p>其实我是想通过程序将图中所有ST、大理石、800X800组合的MULTILEADER全部更新为CT、抛光砖、600X600</p><p>&nbsp;</p><p><font color="#ff0000"></font></p><p></p><p></p><p></p>

nonsmall 发表于 2008-12-10 13:29:00

<a href="http://www.mjtd.com/bbs/dispbbs.asp?BoardID=3&amp;replyID=114765&amp;id=71907&amp;skin=0">http://www.mjtd.com/bbs/dispbbs.asp?BoardID=3&amp;replyID=114765&amp;id=71907&amp;skin=0</a>

ljttjl 发表于 2008-12-10 18:35:00

<p>实现思路:</p><p>&nbsp; &nbsp;用(nth)函数逐一读取上述关联序列内的元素,如得到a,用(= 302 (car a))条件判断是否成立,如成立将a元素再追加至一个表,形成((302 . "<font color="#ff0000">ST</font>")(302 . "<font color="#ff0000">大理石</font>")(302 . "<font color="#ff0000">800X800</font>")),然后再用(nth)函数顺序调用即可。</p>

artken 发表于 2008-12-11 23:10:00

<p>谢谢<strong><font face="Verdana" color="#61b713">nonsmal、ljttjl</font></strong></p><p>我在国外一个论坛上找到这个:</p><p>(setq ent (entsel))<br/>(setq ed (entget (car ent)))<br/>(foreach item ed<br/>(if (= (car item) 330)<br/>(setq attnamelst (cons (vlax-ename-&gt;vla-object (cdr item))<br/>attnamelst))<br/>)<br/>)</p><p>(setq vname (vla-getBlockAttributeValue<br/>(vlax-ename-&gt;vla-object (car ent))<br/>(vla-get-objectid (nth <font color="#ff0000">6</font> attnamelst))))</p><p>(if (= vname "ST")<br/>(vla-SetBlockAttributeValue<br/>(vlax-ename-&gt;vla-object (car ent))<br/>(vla-get-objectid (nth <font color="#ff0000">6</font> attnamelst))"GT")<br/>)<br/></p><p>但是只能替换指定的第几个图元302码,如:上例的<font color="#ff0000">6</font></p><p><font color="#000000">有没办法改得通用性强一点。我的目的是想将满足类似ST/大理石/800X800这种多属性组合的换成其它的。(也就是材料替换)</font></p><p>帮帮忙</p>

artken 发表于 2008-12-12 20:18:00

高手帮帮忙啊

artken 发表于 2008-12-16 16:05:00

高手帮帮忙啊

artken 发表于 2008-12-21 15:24:00

帮忙看看4楼。谢谢啊
页: [1]
查看完整版本: 请教个组码读取与更新的问题