乐筑天下

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

块扩展数据设计中心数据

[复制链接]

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-4-8 12:42:57 | 显示全部楼层 |阅读模式
我没有#039;t将扩展数据连接到as I&#039之前的块;我总是把它添加到blockreferences中
但现在我发现,如果我将其添加到现有块定义中,它将自动成为acad设计中心数据的一部分
此处'这是一对替补来展示它
如果运行第一个,则会得到预期(和期望)结果;1001年&nbsp&nbsp&nbsp 您的;1000&nbsp&nbsp&nbsp CCCC第二个调试。打印;1001年&nbsp&nbsp&nbsp ACAD;1000&nbsp&nbsp&nbsp 设计中心数据;1002&nbsp&nbsp&nbsp {1070 1
;1001年&nbsp&nbsp&nbsp 您的;1000&nbsp&nbsp&nbsp 中交
  1. Sub MakeBlockwithXdata()
  2.     Dim oBlock As AcadBlock
  3.     Dim Zero(2) As Double
  4.     Set oBlock = ThisDrawing.Blocks.Add(Zero, "L")
  5.     oBlock.AddCircle Zero, 4
  6.     Dim DataType(1) As Integer
  7.     Dim Data(1) As Variant
  8.     DataType(0) = 1001: Data(0) = "Yours"
  9.     DataType(1) = 1000: Data(1) = "CCCC"
  10.     oBlock.SetXData DataType, Data
  11.     getxd "L"
  12.    
  13. End Sub
  14. Sub AddXdatatoBlock()
  15.     Dim oBlock As AcadBlock, P
  16.     Dim br As AcadBlockReference
  17.     ThisDrawing.Utility.GetEntity br, P, "Pick"
  18.     Set oBlock = ThisDrawing.Blocks(br.Name)
  19.     Dim DataType(1) As Integer
  20.     Dim Data(1) As Variant
  21.     DataType(0) = 1001: Data(0) = "Yours"
  22.     DataType(1) = 1000: Data(1) = "CCCC"
  23.     oBlock.SetXData DataType, Data
  24.     getxd oBlock.Name
  25.    
  26. End Sub
  27. Function getxd(sBlock As String)
  28.     Dim oBlock As AcadBlock
  29.     Set oBlock = ThisDrawing.Blocks(sBlock)
  30.     Dim sMt As String
  31.     Dim xdataOut As Variant
  32.     Dim xtypeOut As Variant
  33.     Dim i As Integer
  34.    
  35.     Debug.Print
  36.     oBlock.GetXData "", xtypeOut, xdataOut
  37.     If IsEmpty(xtypeOut) = False Then
  38.     For i = 0 To UBound(xtypeOut)
  39.         Debug.Print xtypeOut(i), xdataOut(i)
  40.     Next
  41.     End If
  42.    
  43. End Function


回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-4-8 23:57:45 | 显示全部楼层
不知道你在问什么或说什么,因为我不知道block和blockreference之间的区别
我唯一能看到的是,您没有在写入时清除以前的扩展数据。注意:如果是一次性写入,没什么大不了的,但可能您根本没有真正将数据添加到块中。比如,它已经在那里了
在写入之前尝试清除数据。确保测试对象。您看到的数据可能需要acad稍后使用,并导致腐败问题
  1. Public Function setXdataInformation(ByVal itm As AcadObject, sAppName As String, sValue As String) As Boolean
  2.     Dim DataType(0 To 1) As Integer
  3.     Dim Data(0 To 1) As Variant
  4.     Dim clearDataType(0) As Integer
  5.     Dim clearData(0) As Variant
  6.    
  7.     If itm Is Nothing Then
  8.         'MsgBox "not found"
  9.         Exit Function
  10.     End If
  11.   
  12.     ' -- create new xdata item
  13.     clearDataType(0) = 1001: clearData(0) = sAppName
  14.     itm.SetXData clearDataType, clearData
  15.     ' -- save data
  16.     DataType(0) = 1001: Data(0) = sAppName
  17.     DataType(1) = 1000: Data(1) = sValue
  18.     itm.SetXData DataType, Data
  19.    
  20.     ' -- cleanup
  21.     Set itm = Nothing
  22.   
  23. End Function
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-4-9 10:26:21 | 显示全部楼层
Dave我试图表明Acad正在添加内容#039;s自己的。(acad2006)
块基本上是关于如何将一些对象组合在一起的非图形描述,块参照是将对象组插入图形中的图形部分
我可以'我不认为有必要清除扩展数据,因为setxdata似乎已经清除了应用程序中的任何内容
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-4-9 10:48:40 | 显示全部楼层
感谢您解释差异
我知道你是说ACAD自己写的。我一点也不惊讶,知道它允许程序员在需要的时候创造性地使用它。我们的代码只是不断附加扩展数据,除非它被清除。我甚至看到一些帖子,人们问如何删除它,答案是先不写任何内容,所以我们就是这么做的。也许你的代码和我们当时的代码有点不同。我不知道现在的代码是什么,所以不可能进行比较。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-7 14:33 , Processed in 1.576757 second(s), 60 queries .

© 2020-2025 乐筑天下

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