乐筑天下

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

正在检查块是否存在。。

[复制链接]

24

主题

1265

帖子

1028

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
362
发表于 2008-3-10 05:37:43 | 显示全部楼层 |阅读模式
您好,我如何检查某个块是否存在或插入到图形中,该图形可以位于任何布局或模型空间中,而无需在布局中循环检查
是否使用ThisDrawing.Blocks。项目(“)?我想按名称检查,真的,一个名为“的块;“固定图”

回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2008-3-10 07:07:20 | 显示全部楼层
你可以这样做:
  1. Function BlockExists(ByRef blockName as String) as Boolean
  2.   Dim block as AcadBlock
  3.   On Error Resume Next
  4.   Set block = ThisDrawing.Blocks(blockName)
  5.   If Err = 0 then
  6.     BlockExists = True
  7.   Else
  8.     BlockExists = False
  9.   End If
  10.   Err.Clear
  11.   On Error Goto 0
  12.   Set block = Nothing
  13. End Function
;我通常不喜欢内联错误处理,但有时也有例外。
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2008-3-10 07:38:25 | 显示全部楼层
或使用选择集搜索
  1. Set sset1 = ThisDrawing.SelectionSets.Add("SSbks")
  2.         Dim FilterType(0 To 1) As Integer
  3.         Dim FilterData(0 To 1) As Variant
  4.         FilterType(0) = 0: FilterData(0) = "INSERT"
  5.         FilterType(1) = 2: FilterData(1) = "MyBlockName"
  6.     sset1.Select acSelectionSetAll, , , FilterType, FilterData
然后检查选择集计数,如果sset1.count=0,则块不't存在
回复

使用道具 举报

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2008-3-10 08:00:33 | 显示全部楼层

哎呀 我想我没有'我读得不够仔细 我的只会告诉你块表中是否存在块定义。
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
362
发表于 2008-3-10 08:02:47 | 显示全部楼层

原始请求要求;检查是否存在某个块;(你的人是这样做的)-或;插入到图形中;,(亨迪是这样做的)-所以我认为这篇文章涵盖了。。。
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2008-3-10 08:16:18 | 显示全部楼层
您好,谢谢你们两位的输入。好的,用这两个选项中的任何一个,检查块是否存在,如何检查属性值。现在我知道我只能在插入块引用的情况下检查它们,所以我知道我现在可以检查块集合中是否存在块,但我需要检查的是是否插入了一个块,但没有在所有布局中循环,我希望它几乎是即时的,所以当用户窗体加载时,它检查插入的块并在表单上显示属性值。我可以进行属性检查并填充表单,它只检查插入的图块,而不检查我不检查的每个布局;我不知道
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2008-3-10 08:17:07 | 显示全部楼层
啊,对不起,当最后两篇帖子进来时,我正在输入,哈哈
回复

使用道具 举报

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2008-3-10 09:46:10 | 显示全部楼层
您好,所以使用Hendie#039;s代码:
  1. Set sset1 = ThisDrawing.SelectionSets.Add("SSbks")
  2.         Dim FilterType(0 To 1) As Integer
  3.         Dim FilterData(0 To 1) As Variant
  4.         FilterType(0) = 0: FilterData(0) = "INSERT"
  5.         FilterType(1) = 2: FilterData(1) = "MyBlockName"
  6. sset1.Select acSelectionSetAll, , , FilterType, FilterData
如何访问块,选择集中的对象是什么状态?它是一个AcadEntity,还是一个AcadObject或AcadBlockReference,还是作为其他内容存储在选择集中。我现在想从这里访问属性,但是为了检查它是正确的对象类型,我需要放置什么/选择集中项目的变量名是什么
希望你能理解我,哈哈。。
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
362
发表于 2008-3-10 09:51:03 | 显示全部楼层
我的意思是,我有这个代码:
  1.         attribX = BlockX.GetAttributes
  2.                
  3.     For countz = LBound(attribX) To UBound(attribX)
  4.         Select Case attribX(countz).TagString
  5.             Case "FIX1"
  6.                 fx1descTXT.text = attribX(countz).TextString
  7.             Case "FIX2"
  8.                 fx2descTXT.text = attribX(countz).TextString
  9.             Case "FIX3"
  10.                 fx3descTXT.text = attribX(countz).TextString
  11.             Case "FIX4"
  12.                 fx4descTXT.text = attribX(countz).TextString
  13.             Case "FIX5"
  14.                 fx5descTXT.text = attribX(countz).TextString
  15.             Case "FIX6"
  16.                 fx6descTXT.text = attribX(countz).TextString
  17.             Case "FIX7"
  18.                 fx7descTXT.text = attribX(countz).TextString
  19.             Case "FIX8"
  20.                 fx8descTXT.text = attribX(countz).TextString
  21.             Case "FIX9"
  22.                 fx9descTXT.text = attribX(countz).TextString
  23.             Case "FIX10"
  24.                 fx10descTXT.text = attribX(countz).TextString
  25.             End Select
  26.     Next 'End countx HasAttributes check loop..
那么我该如何将其与选择集代码联系起来呢?我已经将BlockX标注为AcadBlockReference,但这对ss中的内容正确吗?
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
362
发表于 2008-3-10 10:02:10 | 显示全部楼层
好吧,这个想法让我思考,这是我可以经常使用的东西。不是属性部分,而是找出块是否存在。奇怪的是,它还可以用来计算特定块的插入次数…所以这是给所有后代的…
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-6 06:04 , Processed in 1.250610 second(s), 72 queries .

© 2020-2025 乐筑天下

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