兰州人 发表于 2006-12-24 14:30:00

不用遍历方法,真的不能直接更改图块中子图元的颜色吗?

<p>我现在更改图块中子图元颜色的方法,是通过遍历图块,再通过条件语句找到需要更改子图元的句柄号handle后,来实现目标</p><p>&nbsp;Dim ent As AcadEntity<br/>&nbsp; Dim pblock, obj</p><p>&nbsp;&nbsp;&nbsp; For Each obj In ThisDrawing.Blocks("aa") '遍历已知图块名<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If obj.Handle = "92" Then '判断图块中符合条件的子图元句柄handle<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;obj.color = 5 ' 更改子图元颜色<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ThisDrawing.Regen (acActiveViewport) '刷新活动窗口<br/>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;End If<br/>&nbsp;&nbsp; Next obj</p><p>从理论讲,已知图块名+子图元名柄handle,从上面小程序分析,可以不用遍历的方法,直接更改子图元的颜色.</p><p>图块有三种类型:简单块, XRef 块 和布局块.简单块是可以联合在一起形成单个对象或块定义的对象集合,</p><p>从简单块定义看,遍历图块更改子图元的颜色是唯一方法.不用遍历的方法,直接更改子图元的颜色是不可行的???</p><p>我这种结论对吗????</p><p></p>

chengaokkk 发表于 2011-6-13 19:45:19

同问,尝试了用block.truecolor.colormethod的办法,发现无法更改colormethod的值,通过调试发现,虽然程序中更改了,但是一更改colormethod的值就立即变回原来的值,不知道为什么。求助!

chman 发表于 2011-6-13 20:23:24

用选择集试试呢

chengaokkk 发表于 2011-6-16 19:08:55

回复 chman 的帖子

选择集还不如遍历省事,只是想找个更方便的的办法
页: [1]
查看完整版本: 不用遍历方法,真的不能直接更改图块中子图元的颜色吗?