Servus miteinander,
ich habe mal wieder ein Problem oO
Im laufe einer Konstruktion / Entwicklung werden bei uns erst mal
nicht mehr benötigte Parts / Products deaktiviert da man so schneller
wieder darauf zugreifen kann falls man diese doch wieder verwenden
möchte.
Wenn nun die Konstruktion abgeschlossen ist müssen diese nun raus
und dies habe / versuche ich als Makro zu lösen.
Das Makro läuft einwandfrei durch und selektiert alle deaktivierten
Parts / Products. Nun gebe ich die Selection weiter und will diese
löschen. oSel.Delete müsste funktionieren das habe ich schon oft
benutzt. Aber deaktiviertes muss im Assembly ja zuerst aktiviert
werden bevor man es löschen kann. Hier liegt das Problem...
...wie bekomm ich die Elemente der oSel aktiviert?!
Public oSel
Sub CATMain()
Set oProducts = Catia.ActiveDocument.Product.Products
Set oSel = Catia.ActiveDocument.Selection
SUB_Scan oProducts
Call Delete(oProducts , oSel)
End Sub
Sub SUB_Scan(oProducts)
For Each oItem In oProducts
If oItem.Parameters.Count > 0 Then
Set oComActState = oItem.Parameters.Item(oItem.Parent.Parent.PartNumber & "\" & oItem.Name & "\" & "Component Activation State")
If oComActState.Value = 0 Then
oSel.Add(oItem)
Else
If oItem.Products.Count > 0 Then
SUB_Scan oItem.Products
End If
End If
Else
If oItem.Products.Count > 0 Then
SUB_Scan oItem.Products
End If
End If
Next
End Sub
Sub Delete(ByVal oProd As Product, ByRef oSel As Selection)
If oSel.Count > 0 Then
RetCode = MsgBox(oSel.Count & " defekte Bedingungen gefunden. Sollen diese gelöscht werden?", vbYesNo)
If RetCode = vbYes Then
oSel.ActivateDefaultShape
oSel.Delete
End If
End If
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP