Hallo Leute,
ich brauche dringend Hilfe
Mein Model (PartCAT) besteht aus vielen Bodies, die erstmal umbenannt und danach alphanummerisch sortiert werden müssen. Die Bodies sind alle tode Solides (Vater & Children spielt keine Rolle).
Ich habe hier im Forum ein Makro gefunden, womit man den Baum in einem Product sortieren kann. Zwar funktioniert es, allerdings hilft mir nicht:
Sub CATMain()
'Abfrage Dokumente
If CATIA.Windows.Count = 0 Then
Box = MsgBox("Es ist kein Dokument geladen!" + Chr(10) + "Das Makro kann nicht ausgefuehrt werden und wird beendet!", vbCritical, "Keine Dokument geladen")
Exit Sub
End If
Set Dokument = CATIA.ActiveDocument
If TypeName(Dokument) <> "ProductDocument" Then
Box = MsgBox("Das aktiv geladen Dokument ist KEIN CATProduct!" + Chr(10) + "Bitte aktivieren sie ein CATProduct und starten sie das Makro erneut!", vbExclamation, "Abbruch falscher Dateityp")
Exit Sub
End If
set Product_Collection = new Collection
Set Produkte = Dokument.Product.Products
for each Product in Produkte
Product_Collection.add Product.Name
next
Product_Collection.sort
Set oSel = Dokument.Selection
oSel.clear
for i = 1 to Product_Collection.Count
oSel.add Produkte.Item(Product_Collection.Item(i))
oSel.cut
oSel.clear
oSel.add Dokument.Product
oSel.Paste
oSel.clear
next
end sub
'==================================================================================================
class Collection
private Array()
sub class_initialize()
'Array mit 1 (leeren) Datenfeld anlegen'
Redim Array(0)
end Sub
'Elemat am Ende des Arrays hinzufuegen (automatische erweitern))_________________________________________
public Sub add(Datenfeld)
Index = Ubound(Array)
ReDim preserve Array((Index+1))
Array(Index+1) = Datenfeld
end Sub
'Datenfeld ausgeben___________________________________________
public function Item(Index)
'Ueberpruefen: Index zu hoch? Index 0 ist leer'
if (Index <= 0 and Index > Ubound(Array)) then
Item = "ungueltiger Index"
Else
Item = Array(Index)
End If
end function
'den Array aufsteigend sortieren'
Sub sort
'Bubblesort
for i = 1 to Ubound(Array)-1
for u = i to Ubound(Array)
if Array(i) > Array(u) then
'temp-Variable schreiben, danach austauschen
temp = Array(i)
Array(i) = Array(u)
Array(u) = temp
end if
next
next
end Sub
public function Count
Count = Ubound(Array)
end function
end class
Kann mir einer dabei helfen das Makro für ein Part umzuschreiben bzw. paar Hinweise geben, die mir zum Ziel bringen können.
Danke für eure Hilfe
[Diese Nachricht wurde von karlos1 am 12. Nov. 2012 editiert.]
[Diese Nachricht wurde von karlos1 am 12. Nov. 2012 editiert.]
[Diese Nachricht wurde von karlos1 am 12. Nov. 2012 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP