xiaoqicsu 发表于 2008-4-18 08:38:00

vb.net的代码问题

本帖最后由 作者 于 2008-4-18 14:40:01 编辑 <br /><br /> <p>Dim strfilename As String '文件名<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim acadapp As New AcadApplication<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim doc As AcadDocument</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; opfd.ShowDialog() '获取文件名<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strfilename = opfd.FileName</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; doc = acadapp.Documents.Open(strfilename) '打开CAD文件 </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim ssetobj As AcadSelectionSet '定义一个选择集<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim acadent As AcadEntity '定义一个图元实体<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim adadpl As AcadPolyline<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ssetobj = acadapp.ActiveDocument.SelectionSets.Add("test")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ssetobj.Select(AcSelect.acSelectionSetAll, , , , ) '选择所有实体</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For Each acadent In ssetobj<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If acadent.ObjectName = "AcDbPolyline" Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#f70909">adadpl = acadent&nbsp; '&nbsp;&nbsp;这句出错</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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>

sieben 发表于 2008-4-18 10:14:00

<p><font color="#f70909">adadpl&nbsp;是 <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>

xiaoqicsu 发表于 2008-4-18 15:10:00

<p>我是想得到图层所有acadpolyline 的有关数据,楼上所说我试过了,还是有问题</p><p>不过还是谢谢楼上的大哥</p>
页: [1]
查看完整版本: vb.net的代码问题