jwitteman 发表于 2022-7-6 22:52:32

具有filtertype的选择集

您好,我想在我的图形中选择两种类型的块,插入点位于(比方说)-10、-10,0和10,10,0之间
 
以下代码正在运行(没有插入点部分)
 
 
Dim ssNew as acadselectionset
set ssNew = thisdrawing.selectionsets.add("newset")

Dim FilterType(0 to 2) as integer
Dim FilterData(0 to 2) as variant

FilterType(0) = 0: FilterData(0) = "INSERT"
FilterType(1) = 2: FilterData(1) = "Blockname1, Blockname2"
FilterType(2) = 67: FilterData(2) = 0 'only modelspace...

ssNew.Select acSelectionSetAll, , , FilterType, FilterData

将点-10、-10,0和10,10,0向右添加到选择部分将不起作用,因为这样整个块需要在该区域中,我只需要插入点。所以有些事
 
FilterType(3)=10:FilterData(3)=>=-10和
 
有什么想法吗?
 
提前谢谢。

jwitteman 发表于 2022-7-6 23:25:19

好的,发现了以下问题。。。
 

Dim ssNew as AcadSelectionSetset ssNew = ThisDrawing.Selectionsets.add("newset")

Dim dblPoint(0 to 2) as double
dblPoint(0) = 0: dblPoint(1) = 0: dblPoint(2) = 0

Dim FilterType(0 to 3) as integer
Dim FilterData(0 to 3) as variant

FilterType(0) = 0: FilterData(0) = "INSERT"
FilterType(1) = 2: FilterData(1) = "Blockname1, Blockname2"
FilterType(2) = 67: FilterData(2) = 0 'only modelspace...
FilterType(3) = 10: FilterData(3) = dblPoint

ssNew.Select acSelectionSetAll, , , FilterType, FilterData

 
通过这段代码,我得到了插入点与dblPoint完全相同的块。但我想要的不仅仅是点,而是一个点的窗口。。。

BIGAL 发表于 2022-7-7 00:05:05

只需选取所有块,然后单步穿过它们,检查插入点是否在您的窗口内,而不是尝试在选择中过滤。
 
 
对于Cntr=0到SSnew。计数-1
xmin xmax和ymin ymax true=在窗口内,然后执行某些操作
页: [1]
查看完整版本: 具有filtertype的选择集