乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 46|回复: 2

vb.net的代码问题

[复制链接]

3

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
16
发表于 2008-4-18 08:38:00 | 显示全部楼层 |阅读模式
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))。
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2008-4-18 10:14:00 | 显示全部楼层
adadpl 是 AcadPolyline
acadent 是 AcadEntity
两者的数据类型不一样,这样的赋值需要一个显式转换
adadpl = (AcadPolyline)acadent 这是C#的语法,VB的忘了!
不敢肯定是这个原因或只有这个原因导致出错,你应该把出错提示贴出来
回复

使用道具 举报

3

主题

4

帖子

1

银币

初来乍到

Rank: 1

铜币
16
发表于 2008-4-18 15:10:00 | 显示全部楼层
我是想得到图层所有acadpolyline 的有关数据,楼上所说我试过了,还是有问题
不过还是谢谢楼上的大哥
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 12:40 , Processed in 0.457201 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表