Всё проще. Нужно создать массив удаляемых элементов, заполнить его в цикле по элементам набора, а затем в цикле по элементам массива удалять их из набора.
Здравствуйте. Воспользовался Вашим советом. Да объекты удаляются из набора в соответствии с назначенным условием ,но в моем случае мне нужно создать два, а в перспективе больше наборов из одного
Selectionset -а . И я теперь не могу понять как же разделить наборы, что бы изменения происходили только с нужным набором.
Задав
Set fs_sel_det = fs_sel_all
как понял я предопределил, что наборы будут меняться оба , если изменить один. Подскажите, если нетрудно, а как же мне оставить первый набор
нетронутым. Создал массив с набором первоначальных объектов, а что с ним делать не могу придумать
Если на словах объяснять, то мне нужно создать два набора одним выделением(не прибегая к методу Select acSelectionSetAll), так что бы перебирая первый набор вырезать из текущего солида все взаимодействующие с ним солиды второго набора
Option Explicit
Public fs_sel_det As AcadSelectionSet
Public fs_sel_all As AcadSelectionSet
Public Sub FS_Lay()
Dim j, w, m, d As Integer
ThisDrawing.ActiveSpace = acModelSpace
Dim FilterType(0) As Integer
Dim FilterData(0) As Variant
On Error Resume Next
ThisDrawing.SelectionSets.Item("ms0").Delete
ThisDrawing.SelectionSets.Item("ms1").Delete
Set fs_sel_det = ThisDrawing.SelectionSets.Add("ms0")
Set fs_sel_all = ThisDrawing.SelectionSets.Add("ms1")
FilterType(0) = 0
FilterData(0) = "3DSolid"
Dim groupCode As Variant, dataCode As Variant
groupCode = FilterType
dataCode = FilterData
fs_sel_all.SelectOnScreen groupCode, dataCode
Set fs_sel_det = fs_sel_all
Dim ini_l, la_r As String
ReDim sel_obj_all(0 To fs_sel_all.Count - 1) As AcadEntity
For w = 0 To fs_sel_all.Count - 1
Set sel_obj_all(w) = fs_sel_all(w)
Next
ReDim sel_obj_det(0 To fs_sel_det.Count - 1) As AcadEntity
For w = 0 To fs_sel_det.Count - 1
Set sel_obj_det(m) = fs_sel_det(m)
la_r = fs_sel_det(m).Layer
ini_l = Left(la_r, 1)
If Not ini_l = "." Then
ReDim sel_obj_del(j) As AcadEntity
Set sel_obj_del(j) = sel_obj_det(m)
fs_sel_det.RemoveItems sel_obj_del
End If
Next
'Call FS_Lay_act.FS_Lay_act
End Sub
Надеюсь я в ту тему написал или нужно новую создавать?
Спасибо.