块扩展数据设计中心数据
我没有#039;t将扩展数据连接到as I'之前的块;我总是把它添加到blockreferences中但现在我发现,如果我将其添加到现有块定义中,它将自动成为acad设计中心数据的一部分
此处';这是一对替补来展示它
如果运行第一个,则会得到预期(和期望)结果;1001年    ;您的;1000    ;CCCC第二个调试。打印;1001年    ;ACAD;1000    ;设计中心数据;1002    ;{1070 1
;1001年    ;您的;1000    ;中交Sub MakeBlockwithXdata()
Dim oBlock As AcadBlock
Dim Zero(2) As Double
Set oBlock = ThisDrawing.Blocks.Add(Zero, "L")
oBlock.AddCircle Zero, 4
Dim DataType(1) As Integer
Dim Data(1) As Variant
DataType(0) = 1001: Data(0) = "Yours"
DataType(1) = 1000: Data(1) = "CCCC"
oBlock.SetXData DataType, Data
getxd "L"
End Sub
Sub AddXdatatoBlock()
Dim oBlock As AcadBlock, P
Dim br As AcadBlockReference
ThisDrawing.Utility.GetEntity br, P, "Pick"
Set oBlock = ThisDrawing.Blocks(br.Name)
Dim DataType(1) As Integer
Dim Data(1) As Variant
DataType(0) = 1001: Data(0) = "Yours"
DataType(1) = 1000: Data(1) = "CCCC"
oBlock.SetXData DataType, Data
getxd oBlock.Name
End Sub
Function getxd(sBlock As String)
Dim oBlock As AcadBlock
Set oBlock = ThisDrawing.Blocks(sBlock)
Dim sMt As String
Dim xdataOut As Variant
Dim xtypeOut As Variant
Dim i As Integer
Debug.Print
oBlock.GetXData "", xtypeOut, xdataOut
If IsEmpty(xtypeOut) = False Then
For i = 0 To UBound(xtypeOut)
Debug.Print xtypeOut(i), xdataOut(i)
Next
End If
End Function
不知道你在问什么或说什么,因为我不知道block和blockreference之间的区别
我唯一能看到的是,您没有在写入时清除以前的扩展数据。注意:如果是一次性写入,没什么大不了的,但可能您根本没有真正将数据添加到块中。比如,它已经在那里了
在写入之前尝试清除数据。确保测试对象。您看到的数据可能需要acad稍后使用,并导致腐败问题
Public Function setXdataInformation(ByVal itm As AcadObject, sAppName As String, sValue As String) As Boolean
Dim DataType(0 To 1) As Integer
Dim Data(0 To 1) As Variant
Dim clearDataType(0) As Integer
Dim clearData(0) As Variant
If itm Is Nothing Then
'MsgBox "not found"
Exit Function
End If
' -- create new xdata item
clearDataType(0) = 1001: clearData(0) = sAppName
itm.SetXData clearDataType, clearData
' -- save data
DataType(0) = 1001: Data(0) = sAppName
DataType(1) = 1000: Data(1) = sValue
itm.SetXData DataType, Data
' -- cleanup
Set itm = Nothing
End Function Dave我试图表明Acad正在添加内容#039;s自己的。(acad2006)
块基本上是关于如何将一些对象组合在一起的非图形描述,块参照是将对象组插入图形中的图形部分
我可以';我不认为有必要清除扩展数据,因为setxdata似乎已经清除了应用程序中的任何内容
感谢您解释差异
我知道你是说ACAD自己写的。我一点也不惊讶,知道它允许程序员在需要的时候创造性地使用它。我们的代码只是不断附加扩展数据,除非它被清除。我甚至看到一些帖子,人们问如何删除它,答案是先不写任何内容,所以我们就是这么做的。也许你的代码和我们当时的代码有点不同。我不知道现在的代码是什么,所以不可能进行比较。
页:
[1]