明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2586|回复: 8

如何获得已知块名的块的位置??

[复制链接]
发表于 2003-11-7 19:09:00 | 显示全部楼层 |阅读模式
有vba的例程吗?
objectarx的也可以
发表于 2003-11-7 19:25:00 | 显示全部楼层
用选择集选择图形中指定块名的块,然后遍历所有的图块,并取得插入点位置或框位置。
发表于 2003-11-7 19:28:00 | 显示全部楼层
下面的两种方法都可以实现:

  1. Sub Test1()
  2.     Dim BlockRefObj As AcadBlockReference
  3.     Dim EntObj As AcadEntity
  4.    
  5.     Dim BlockName As String
  6.     BlockName = "块名"
  7.    
  8.     '遍历模型空间,判断实体的类型。如果是块,判断块名。
  9.    
  10.     For Each EntObj In ThisDrawing.ModelSpace
  11.         If TypeOf EntObj Is AcadBlockReference Then
  12.             Set BlockRefObj = EntObj
  13.             If BlockRefObj.Name = BlockName Then
  14.                 Debug.Print "插入点位置: " & BlockRefObj.InsertionPoint(0) & BlockRefObj.InsertionPoint(1)
  15.             End If
  16.         End If
  17.     Next
  18. End Sub

  19. Sub Test2()
  20.     Dim BlockRefObj As AcadBlockReference
  21.     Dim EntObj As AcadEntity
  22.     Dim SSetObj As AcadSelectionSet
  23.    
  24.     Dim BlockName As String
  25.     BlockName = "块名"
  26.    
  27.     '使用过滤机制,全部选中指定名称的块。
  28.    
  29.     On Error Resume Next
  30.     Set SSetObj = ThisDrawing.SelectionSets("Test")
  31.     If Err Then
  32.         Err.Clear
  33.         Set SSetObj = ThisDrawing.SelectionSets.Add("Test")
  34.     End If
  35.     SSetObj.Clear
  36.     On Error GoTo 0
  37.    
  38.     Dim GroupCode(0 To 1) As Integer
  39.     Dim DataValue(0 To 1) As Variant
  40.     GroupCode(0) = 0
  41.     DataValue(0) = "INSERT"
  42.     GroupCode(1) = 2
  43.     DataValue(1) = BlockName
  44.    
  45.     SSetObj.Select acSelectionSetAll, , , GroupCode, DataValue
  46.     For Each EntObj In SSetObj
  47.         Set BlockRefObj = EntObj
  48.         If BlockRefObj.Name = BlockName Then
  49.             Debug.Print "插入点位置: " & BlockRefObj.InsertionPoint(0) & BlockRefObj.InsertionPoint(1)
  50.         End If
  51.     Next
  52. End Sub
发表于 2003-11-11 16:23:00 | 显示全部楼层
有个奇怪的问题,
我用的是AddLWPolyLine来创建的对象
选择时用
“LightWeightPolyLine"却不行
用“polyline"才可以,
这是什么道理

我用AddPolyLine创建的对象
选择时用“Polyline"也不行了,不知道用什么好
发表于 2003-11-12 08:41:00 | 显示全部楼层
发表于 2010-7-18 05:21:00 | 显示全部楼层

有没有C#的例子啊

 

发表于 2011-1-23 21:27:33 | 显示全部楼层
谢谢了,帮助很大,终于让我可以已知块名改此块的属性了,大好人了
发表于 2011-6-1 21:38:47 | 显示全部楼层
谢谢,这个对我的帮助也挺大的!
发表于 2011-6-1 22:02:32 | 显示全部楼层
还是选择集靠谱。遍历图纸的画,如果图形数据较多,半天都没反应啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 21:33 , Processed in 0.178507 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表