阻止 xdata 设计中心数据
我以前没有将扩展数据附着到块,因为我总是将其添加到块参照中。但现在我发现,如果将它添加到现有的块定义中,它会自动成为acad设计中心数据的一部分。
这里有几个例子来展示它。
如果运行第一个,您将得到预期的(和想要的)结果
1001您的
1000 CCCC
第二个debug . prints
1001 ACAD
1000设计中心数据
1002 {
1070 1
1070 1
1002 }
1001您的
1000 CCCC
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
**** Hidden Message ***** 不确定你在问什么或告诉什么,因为我不知道块或块引用之间的区别。
我唯一能看到的是你没有在写入时清除以前的xdata。注意:如果是一次写入,没什么大不了的,但也许你根本没有真正将数据添加到块中。就像在,它已经在那里了???
尝试在写入之前清除数据。确保您测试了对象。您看到的数据可能需要由acad稍后使用并导致损坏问题???
Dave我试图证明Acad正在自己添加东西。(acad2006)
块基本上是对如何将一些对象组合在一起的非图形描述,块引用是将对象组插入绘图的图形部分。
我看不出有必要清除xdata,因为setxdata似乎已经清除了应用程序中的任何内容。
感谢您解释差异。
我看到你说ACAD自己写了这一点。我并不感到惊讶,并且知道在那里允许编码人员在需要时以创造性的方式使用它。
有趣。我们的代码只是不断追加xdata,除非它被清除。我甚至看到过人们询问如何删除它的帖子,答案是先写任何东西,所以这就是我们所做的。也许你的代码和我们当时的代码之间有细微的区别。我不知道现在的代码是什么,所以不可能进行比较。
页:
[1]