6742948 发表于 2025-2-28 16:04:17

关于 AddAttribute 使用

Dim rkBlock As AcadBlock
Dim a As AcadBlock
Set rkBlock = AcadApplication.ActiveDocument.Blocks.Item("房间块")


Dim rkbattr As AcadAttribute
Dim rkhet As Double
Dim rkbit As Variant
rkhet = 3
rkbit = Array(-10, 2, 0) '定义变量,将数组赋值给变量,用于坐标
Set rkbattr = rkBlock.AddAttribute(rkhet, 0, "信号功能代码:", rkbit, "1231", "123")

各位大神,如上,是我的代码
第一组:将定义的块 赋值rkblock
第二组:准备给块添加属性

问题出来了,总是提示AddAttribute未定义,看了deepseek,要求使用acadblocktable。
但 cad vba 里面没有啊。怎么办?
我的环境 cad 2016 ,vba已安装,库文件cad 2016 type library已经引用。
感谢各位大神


yshf 发表于 2025-3-1 14:18:59

怎么改了一下,就不见了   Dim rkBlock As AcadBlock
   Dim a As AcadBlock

   On Error Resume Next
   Set rkBlock = AcadApplication.ActiveDocument.Blocks.Item("房间块")

   If Err Then
      Err.Clear
      MsgBox "未找到名为:“房间块”的块", 48, "提示"
      End
   Else
       Dim rkbattr As AcadAttribute
       Dim rkhet As Double
      
      'Dim rkbit As Variant
      'rkhet = 3
      'rkbit = Array(-10, 2, 0) '定义变量,将数组赋值给变量,用于坐标
      'Set rkbattr = rkBlock.AddAttribute(rkhet, 1, "信号功能代码:", rkbit, "1231", "123")
      
      rkhet = 3
      Dim rkbit(2) As Double
      rkbit(0) = -10: rkbit(1) = 2: rkbit(2) = 0
      Set rkbattr = rkBlock.AddAttribute(rkhet, acAttributeModeNormal, "信号功能代码:", rkbit, "1231", "123")
      AcadApplication.ActiveDocument.Regen acActiveVieeport
End If

yshf 发表于 2025-2-28 21:17:56

本帖最后由 yshf 于 2025-3-1 14:15 编辑

改为下面的试一试




6742948 发表于 2025-3-1 22:34:01

yshf 发表于 2025-3-1 14:18
怎么改了一下,就不见了

太牛了,我把块名“房间块” 替换成我的 “左侧房间块”,程序顺利运行下去了。:handshake
页: [1]
查看完整版本: 关于 AddAttribute 使用