乐筑天下

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

阻止 xdata 设计中心数据

[复制链接]

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-4-8 12:42:57 | 显示全部楼层 |阅读模式
我以前没有将扩展数据附着到块,因为我总是将其添加到块参照中。
但现在我发现,如果将它添加到现有的块定义中,它会自动成为acad设计中心数据的一部分。
这里有几个例子来展示它。
如果运行第一个,您将得到预期的(和想要的)结果
1001您的
1000 CCCC
第二个debug . prints
1001 ACAD
1000设计中心数据
1002 {
1070 1
1070 1
1002 }
1001您的
1000 CCCC
  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

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2007-4-8 23:57:45 | 显示全部楼层
不确定你在问什么或告诉什么,因为我不知道块或块引用之间的区别。
我唯一能看到的是你没有在写入时清除以前的xdata。注意:如果是一次写入,没什么大不了的,但也许你根本没有真正将数据添加到块中。就像在,它已经在那里了???
尝试在写入之前清除数据。确保您测试了对象。您看到的数据可能需要由acad稍后使用并导致损坏问题???
[1]
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-4-9 10:26:21 | 显示全部楼层
Dave我试图证明Acad正在自己添加东西。(acad2006)
块基本上是对如何将一些对象组合在一起的非图形描述,块引用是将对象组插入绘图的图形部分。
我看不出有必要清除xdata,因为setxdata似乎已经清除了应用程序中的任何内容。
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2007-4-9 10:48:40 | 显示全部楼层
感谢您解释差异。
我看到你说ACAD自己写了这一点。我并不感到惊讶,并且知道在那里允许编码人员在需要时以创造性的方式使用它。
有趣。我们的代码只是不断追加xdata,除非它被清除。我甚至看到过人们询问如何删除它的帖子,答案是先写任何东西,所以这就是我们所做的。也许你的代码和我们当时的代码之间有细微的区别。我不知道现在的代码是什么,所以不可能进行比较。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

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

© 2020-2025 乐筑天下

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