vb.net的代码问题
本帖最后由 作者 于 2008-4-18 14:40:01 编辑 <br /><br /> <p>Dim strfilename As String '文件名<br/> Dim acadapp As New AcadApplication<br/> Dim doc As AcadDocument</p><p> opfd.ShowDialog() '获取文件名<br/> strfilename = opfd.FileName</p><p> doc = acadapp.Documents.Open(strfilename) '打开CAD文件 </p><p> Dim ssetobj As AcadSelectionSet '定义一个选择集<br/> Dim acadent As AcadEntity '定义一个图元实体<br/> Dim adadpl As AcadPolyline<br/> </p><p> ssetobj = acadapp.ActiveDocument.SelectionSets.Add("test")<br/> ssetobj.Select(AcSelect.acSelectionSetAll, , , , ) '选择所有实体</p><p> For Each acadent In ssetobj<br/> If acadent.ObjectName = "AcDbPolyline" Then<br/> <font color="#f70909">adadpl = acadent ' 这句出错</font><br/> End If<br/> Next</p><p>以上代码的红色部分出错,本人初学,弄了很长时间不知道原因,请高手解答!!</p><p>错误原因:</p><p>无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“AutoCAD.AcadPolyline”。此操作失败的原因是对 IID 为“{4D07B3DA-1D65-4D58-967A-E3A02E255EE0}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。</p><p></p> <p><font color="#f70909">adadpl 是 <font color="#000000">AcadPolyline</font></font></p><p><font color="#f70909">acadent 是 <font color="#000000">AcadEntity</font><br/></font><font color="#f70909">两者的数据类型不一样,这样的赋值需要一个显式转换</font></p><p><font color="#f70909">adadpl = (<font color="#000000">AcadPolyline)</font>acadent 这是C#的语法,VB的忘了!</font></p><p><font color="#f70909">不敢肯定是这个原因或只有这个原因导致出错,你应该把出错提示贴出来</font></p> <p>我是想得到图层所有acadpolyline 的有关数据,楼上所说我试过了,还是有问题</p><p>不过还是谢谢楼上的大哥</p>
页:
[1]