Добавляет поле семантической базы, по равенству значений которого разрешается объединение участков.
Visual Basic:
Sub AddEqualityCheckField(sFldName As String)
sFldName - имя поля семантической базы участков.
Участки объединяются, только если значения указанного поля у обоих участков совпадают. Метод добавляет одно поле; чтобы задать несколько условий, вызывается несколько раз.
Visual Basic:
Sub ExcludeSymbolsParams_AddEqualityCheckField 'Берем активный слой карты Set L = Zulu.ActiveMapDoc.Layers.Active Set P = CreateObject("ZuluLib.ExcludeSymbolsParams") 'Без добавленных типов операция не выполняется Set OTs = L.ObjectTypes For i = 0 To OTs.Count - 1 Set T = OTs.GetItemByIndex(i) If T.GraphicType = 1 Then For m = 1 To T.Modes.Count - 1 P.AddTypeMode T.Id, m, 1 Next End If Next 'Объединять только участки с совпадающим диаметром подающего трубопровода. 'Поле Dpod - из семантической базы участков примера Thermo\Ctp P.AddEqualityCheckField "Dpod" Set S = L.Selection S.SelectAll n = L.ElementKeys.Count S.ExcludeSymbolsEx P MsgBox "Объектов было: " & n & vbCrLf & "стало: " & L.ElementKeys.Count End SubPython:
import zulu def Macro_ExcludeSymbolsParams_AddEqualityCheckField(): # Берем активный слой карты L = zulu.App.ActiveMapDoc.Layers.Active P = zulu.ExcludeSymbolsParams() # Без добавленных типов операция не выполняется OTs = L.ObjectTypes for i in range(OTs.Count): T = OTs.GetItemByIndex(i) if T.GraphicType == 1: for m in range(1, T.Modes.Count): P.AddTypeMode(T.Id, m, 1) # Объединять только участки с совпадающим диаметром подающего трубопровода. # Поле Dpod - из семантической базы участков примера Thermo\Ctp P.AddEqualityCheckField("Dpod") S = L.Selection S.SelectAll() n = L.ElementKeys.Count S.ExcludeSymbolsEx(P) print("Объектов было:", n, "стало:", L.ElementKeys.Count)