乐筑天下

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

求助!VB2010 调用方式连接autocad2014 调用setxdata时出错!

[复制链接]

6

主题

12

帖子

2

银币

初来乍到

Rank: 1

铜币
36
发表于 2021-6-14 22:30:00 | 显示全部楼层 |阅读模式
请教高手,我用VB2010 通过调用2014方式编程,试图用setxdata方法为一个图形对象添加扩展数据,VBA手册中说明对象方法setxdata第一个参数为integer,第二个参数类型为varant类型,但VB2010没有varant类型,在VB2010的setxdata方法提示中,第一和第二参数均为了object类型。我试图用cobj函数把参数变为object型,调用setxdata方法时,老是提示参数类型不对,vb6中这样做无问题,但在VB2010中却出了这样的问题,这如何处理啊?
代码如下:不知道错误在哪里              
        oCad = CreateObject("autocad.application")
        oCad.visible = True
        Dim cfilename As String = AppStartDir & "\test.dwg"
        oCad.Documents.open(cfilename)     
        Dim pfSS As AutoCAD.AcadSelectionSet = oCad.ActiveDocument.PickfirstSelectionSet  
        Dim objsl As Integer = pfSS.Count
        Select Case pfSS.Count
            Case 0
                MsgBox("没有选择对象")
            Case 1
                Dim xDataType(1) As Object
                Dim strdata(1) As Object
                xDataType(0) = 1001
                xDataType(1) = 1000
                strdata(0) = "范围"
                strdata(1) = "5"
                pfSS.Item(0).SetXData(xDataType, strdata)              '提示:参数类型无效
         case >1
               MsgBox("选择对象f过多")
end select
回复

使用道具 举报

14

主题

404

帖子

13

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
455
发表于 2021-6-15 08:37:00 | 显示全部楼层
详见:http://blog.sina.com.cn/s/blog_af1320c70102xraw.html
'读取扩展数据
Public Function GetCode(objEnt As AcadEntity, strAppName As String) As Variant
  Dim DataType As Variant, DataVaue As Variant, i As Integer
  If HasXData(objEnt, strAppName) = False Then
    GetCode = ""
  Else
    objEnt.GetXData strAppName, DataType, DataValue
    For i = LBound(DataType) To UBound(DataType)
        If DataType(i) = 1000 Then GetCode = DataValue(i): Exit For
    Next i
  End If
End Function
'设置扩展数据
Public Function SetCode(objEnt As AcadEntity, strAppName As String, strDataValue As String)
    Dim DataType(0 To 1) As Integer
    Dim DataValue(0 To 1) As Variant
    DataType(0) = 1001: DataValue(0) = strAppName
    DataType(1) = 1000: DataValue(1) = strDataValue
   objEnt.SetXData DataType, DataValue
End Function
回复

使用道具 举报

6

主题

12

帖子

2

银币

初来乍到

Rank: 1

铜币
36
发表于 2021-6-17 09:26:00 | 显示全部楼层
谢谢楼上的回复,VB2010没有Variant变量类型,查看VB2010引用的autocad类型库关于setxdata函数的参数类型,均为object型。所以才会出现参数无效的提示。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2024-11-22 00:25 , Processed in 0.138626 second(s), 58 queries .

© 2020-2024 乐筑天下

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