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

vb.net的代码问题

Dim strfilename As String '文件名
      Dim acadapp As New AcadApplication
      Dim doc As AcadDocument
      opfd.ShowDialog() '获取文件名
      strfilename = opfd.FileName
      doc = acadapp.Documents.Open(strfilename) '打开CAD文件
      Dim ssetobj As AcadSelectionSet '定义一个选择集
      Dim acadent As AcadEntity '定义一个图元实体
      Dim adadpl As AcadPolyline
      
      ssetobj = acadapp.ActiveDocument.SelectionSets.Add("test")
      ssetobj.Select(AcSelect.acSelectionSetAll, , , , ) '选择所有实体
      For Each acadent In ssetobj
            If acadent.ObjectName = "AcDbPolyline" Then
                adadpl = acadent'这句出错
            End If
      Next
以上代码的红色部分出错,本人初学,弄了很长时间不知道原因,请高手解答!!
错误原因:
无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“.AcadPolyline”。此操作失败的原因是对 IID 为“{4D07B3DA-1D65-4D58-967A-E3A02E255EE0}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。

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

adadpl 是 AcadPolyline
acadent 是 AcadEntity
两者的数据类型不一样,这样的赋值需要一个显式转换
adadpl = (AcadPolyline)acadent 这是C#的语法,VB的忘了!
不敢肯定是这个原因或只有这个原因导致出错,你应该把出错提示贴出来

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

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