klpocska 发表于 2022-7-6 11:35:35

按名称选择块

如何使用VBA在模型空间中按(块)名称选择块?

alanjt 发表于 2022-7-6 11:45:53

http://www.cadtutor.net/forum/showthread.php?t=25142

klpocska 发表于 2022-7-6 12:00:11

谢谢,
 
如何按块名创建Acad选择集?

SEANT 发表于 2022-7-6 12:06:17

创建一个包含特定名称的所有块引用的过滤选择集的过程如下所示:
 
Sub GetNamedInserts()
Dim entbref As AcadBlockReference
Dim TempObjSS As AcadSelectionSet
Dim intCode(2) As Integer
Dim varData(2) As Variant
Dim strName As String

   strName = ThisDrawing.Utility.GetString(0, "Enter Block name to select: ")

   SSInit
   Set TempObjSS = ThisDrawing.SelectionSets.Add("TempSSet")
   intCode(0) = 0: varData(0) = "Insert"
   intCode(1) = 67: varData(1) = 0
   intCode(2) = 2: varData(2) = strName
   TempObjSS.Select acSelectionSetAll, , , intCode, varData
   MsgBox "There are " & TempObjSS.Count & " inserts referencing " & strName & " in Modelspace"
End Sub


Sub SSInit()
Dim SSS As AcadSelectionSets
Dim SS As AcadSelectionSet
Set SSS = ThisDrawing.SelectionSets
   If SSS.Count > 0 Then
      For Each SS In SSS
         If SS.Name = "TempSSet" Then
            SS.Delete
            Exit For
         End If
      Next
   End If
End Sub
 
 
还要注意,过滤器数据还可以包含通配符,以便进行更广泛的选择。例如,如果过滤器是:
 
intCode(2)=2:varData(2)=strName&“*”
 
strName为“Block”,则选择集将包括引用“Block1”、“Block2”、“Block3”等的插入。

edwinprakoso 发表于 2022-7-6 12:11:40

我们不能用filter或QSELECT来实现这一点吗?

SEANT 发表于 2022-7-6 12:18:48

 
绝对地
 
然而,可以想象,一个有用的VBA例程将处理选择集,而不仅仅是返回计数。

klpocska 发表于 2022-7-6 12:34:18

 
谢谢,
 
以及如何缩放到模型空间中的选定块?

SEANT 发表于 2022-7-6 12:42:42

该线程的第#6条显示了一种基于实体的边界框将视图缩放到特定实体的方法。
 
http://www.cadtutor.net/forum/showthread.php?t=42967
页: [1]
查看完整版本: 按名称选择块