Code:
'Makro zum Entfernen leerer Geosets'-------------------- DEKLARATION GLOBALE VARIABLEN----------------------------
Dim part1 As Part
Dim GeoSelection As Selection
'-----------------------------------------------------------------------------
'----------------------------HAUPTBLOCK---------------------------------------
'-----------------------------------------------------------------------------
Sub CATMain()
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set bodies1 = part1.Bodies
Set GeoSelection = partDocument1.Selection
GeoSelection.clear
strPfad = "part1"
strPfadAdd = ""
strPfadCount = ""
strPfadPass = ""
strPfadNew = ""
iNbDeletedGeoSets = 1
iNbDeletedGeoSetsAbsolut = 0
'Schleife wird so oft wiederholt, bis keine leeren GeoSets mehr vorhanden sind
Do
deepScan strPfad
iNbDeletedGeoSets = GeoSelection.Count
iNbDeletedGeoSetsAbsolut = iNbDeletedGeoSetsAbsolut + iNbDeletedGeoSets
if (iNbDeletedGeoSets > 0) Then
GeoSelection.Delete
End If
strPfad = "part1"
Loop Until iNbDeletedGeoSets=0
part1.Update()
Box1 = MsgBox ("Es wurde(n) " & iNbDeletedGeoSetsAbsolut & " leere GeoSets gelöscht.", 64)
End Sub
'------------------------------------------------------------------------------
'--------------------------FUNKTIONEN-------------------------------------
'------------------------------------------------------------------------------
'----------------rekursiver Baumdurchlauf mit Löschfuntkion--------------------
Function deepScan (strPfadPass As String) As String
strPfadCount = strPfadPass + ".HybridBodies.Count"
strPfadAdd = strPfadPass + ".HybridBodies.Item("
for i =1 to eval(strPfadCount)
strPfadNew = strPfadAdd + CStr(i) + ")"
Set hbGeoSet = eval(strPfadNew)
iElements=hbGeoSet.HybridShapes.Count + hbGeoSet.HybridBodies.Count + hbGeoSet.HybridSketches.Count
if (iElements = 0) then
GeoSelection.Add hbGeoSet
Else
deepScan strPfadNew
End If
Next
End Function