-KarL- 发表于 2022-7-6 15:00:28

VBA-选择集

如何在vba中创建设备选择集?
 
提前感谢
 
卡尔

ML0940 发表于 2022-7-6 15:05:39

设备选择集?
卡尔,你说的设备是什么意思?
 
毫升

Adesu 发表于 2022-7-6 15:10:08

也许他想要这样

Sub sss()

Dim SS As AcadSelectionSet

Set SS = ThisDrawing.SelectionSets.Add("SS")
SS.SelectOnScreen

Dim Ent As AcadEntity
Dim EntName As String

For Each Ent In SS
EntName = Ent.ObjectName
EntName = Mid(EntName, 5, 10)
MsgBox "This object selected is = " & EntName
Next Ent

SS.Delete ' to delete selection set exist
End Sub

 

-KarL- 发表于 2022-7-6 15:14:36

我有一段代码,它创建了一个名为SYSNODE的块选择集
 
我想修改它以选择设备而不是块,但我不知道怎么做。
 
 
除了智能块之外,不确定如何定义它们。例如,我们使用的设备之一是插座。它存储设备的所有电气信息(面板、电路、电压、电流、导线尺寸等),然后我们使用标签显示某些信息。我认为设备仅在acad的MEP/ABS版本中可用。

ML0940 发表于 2022-7-6 15:17:20

哦,那就可以解释了
因此,它们不是块引用;否则,另一个代码将起作用。
 
在VBAIDE(VBA环境)中,如果转到“工具参考”(Tools References),
向下滚动,您可能会看到特定于该应用程序的类型库。
当我使用LDD时,有一个特定于这些对象的类型库。
 
因此,如果您看到MEP的类型库,然后选中该框,那么您应该能够访问这些对象进行编程。
当您发现这个对象(设备)在VBA中被调用时,您将能够在代码中包含它。如果还有问题,我们可以帮你更多。
 
毫升

-KarL- 发表于 2022-7-6 15:20:47

好的,我能够找到一个设备的解决方案,但是有人知道如何创建动态块的选择集吗?

CmdrDuh 发表于 2022-7-6 15:22:05

我手头没有代码,但基本上是为块创建一个过滤器

borgunit 发表于 2022-7-6 15:28:01

基本上,您将获得一组blockref并根据其属性查询它们。IsDynamicBlock

-KarL- 发表于 2022-7-6 15:31:20

 
这就是我遇到的问题,我不知道如何设置过滤器。

CmdrDuh 发表于 2022-7-6 15:33:13

      Set objSelSet = objSelCol.Add("SSName")
   intType(0) = 0: varData(0) = "INSERT"
   intType(1) = 2: varData(1) = "BlkName"
   objSelSet.Select Mode:=acSelectionSetAll, filtertype:=intType, filterdata:=varData
页: [1] 2
查看完整版本: VBA-选择集