[求助]访问直线对象的问题
<p>假设在过程中</p><p>Dim SpanLine As AcadLine</p><p>但是在运行下面语句时,会遇到类型不匹配错误</p><p>For Each SpanLine In ThisDrawing.ModelSpace</p><p>如果定义成AcadEntity,则可以运行过去</p><p>cad为2009.</p><p>我在一本书上看到过完全相同的例子,是定义成acadline的,不知道到底能不能这样</p><p>如果不能,应该如何解决访问的问题?谢谢了</p> <p>For Each XX In ThisDrawing.ModelSpace是对ModelSpace空间进行for each操作。</p><p>Dim SpanLine As AcadLine这是对CAD线进行定义</p><p>在ModelSpace中要对Line操作,需要用选择集方法。</p> 只能用selectionset?<br/>我只是想对一个层内的所有直线进行操作,因为要提取直线的属性,所以必须定义成line<br/>有没有什么可以不用用户选择就能都直接操作的办法呢<br/> Dim i As Integer<br/>For i = 0 To ThisDrawing.ModelSpace.Count - 1<br/> Debug.Print ThisDrawing.ModelSpace.Item(i).Layer<br/>Next <p>先定义成AcadEntity,针对每一个对象,先判断对象的.Name属性是不是AcDbLine,再后续的操作。</p><p>但还是用选择集好些,虽然对初学者难一些,如果文件大则速度会明显快。</p> 选择集也不是感觉难,我也做了一个,也测试过了,只不过感觉还要选一下比较麻烦<br/>最后的解决办法是用了一个中间值转换了一下<br/>先定义成entity,然后判断类型是否line,如果是的话赋值给另一个定义成line的变量,就可以了<br/><br/>速度的问题还好,一次性替换了几万个图元,也没花啥时间<br/><br/> <p>选择集并不需要点一下,使用SelectSet.Select方法中的acSelectionSetAll模式再加上过滤器过滤直线就可以。</p> <p>谢谢,我再去研究</p><p>现在只是任务驱动法,有啥想法再去找解决方案,所以对一般的东西都还没有系统了解</p>
页:
[1]