明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1965|回复: 2

[求助]关于COM添加扩展数据

[复制链接]
发表于 2010-5-2 11:28:00 | 显示全部楼层 |阅读模式
因为.NET在CAD2006下实现不了的一些功能后,我利用COM来建立属性块,这个虽然实现了,但到添加扩展数据时,
出现了致命错误,是否是我的代码有问题。不添加扩展数据时,还是很好用的。哪位大侠帮我看看,谢了!
  1.     <CommandMethod("GCD")> Public Sub GCD()
  2.         Try
  3.             acApp = DirectCast(Marshal.GetActiveObject(progID), AcadApplication)
  4.         Catch
  5.             Try
  6.                 Dim acType As Type = Type.GetTypeFromProgID(progID)
  7.                 acApp = DirectCast(Activator.CreateInstance(acType, True), AcadApplication)
  8.             Catch
  9.                 Application.ShowAlertDialog("Cannot Create The ProgID")
  10.             End Try
  11.         End Try
  12.         If acApp IsNot Nothing Then
  13.             acApp.Visible = True
  14.             Dim aDocument As AcadDocument = acApp.ActiveDocument
  15.             Dim objBlkDef As Common.AcadBlock
  16.             For Each objBlkDef In aDocument.Blocks
  17.                 If objBlkDef.Name = "GC200" Then
  18.                     Dim pt1 As Double() = New Double(2) {1, -1, 0}
  19.                     objBlkDef.AddAttribute(2, Common.AcAttributeMode.acAttributeModeNormal, "", pt1, "height", "20.35")
  20.                     For i As Integer = 0 To 10
  21.                         Dim pt As Double() = New Double(2) {500 + i * 10, 600 + i * 10, 0}
  22.                         Dim block As Common.AcadBlockReference = aDocument.ModelSpace.InsertBlock(pt, "GC200", 1, 1, 1, 0, )
  23.                         aDocument.Application.ZoomAll()
  24.                         Dim v As Object
  25.                         v = block.GetAttributes
  26.                         v(0).textstring = (100 + i * 10).ToString
  27.                         v(0).Alignment = Common.AcAlignment.acAlignmentMiddleLeft
  28.                         v(0).TextAlignmentPoint = pt
  29.                         v(0).update()
  30.                         Dim DataType(2) As Object
  31.                         Dim Data(2) As Object
  32.                         DataType(0) = 1001
  33.                         Data(0) = "SOUTH"
  34.                         DataType(1) = 1000
  35.                         Data(1) = "202101"
  36.                         block.SetXData(DataType, Data)
  37.                     Next
  38.                 End If
  39.             Next
  40.         End If
  41.     End Sub
在block.SetXData(DataType, Data)上,出现致命错误的,因为VBA不懂,所以没有办法修改了!
发表于 2010-5-2 13:22:00 | 显示全部楼层

VbNet的数组声明语法改了么?不记得了

Dim DataType(1) As Short

Dim Data(1) As Object

 楼主| 发表于 2010-5-2 13:40:00 | 显示全部楼层
呵呵,数组声明错了,别见笑呀!谢谢版主指点!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-29 13:33 , Processed in 0.164527 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表