Hi,
ich muss den Strukturbaum abbilden, sprich alle Producte, Komponenten und Parts auflisten (z.B. in Form einer MsgBox) -> Siehe Bild.
Dass Bild habe ich mit folgendem Makro erzeugt:
'**********************************************************************
Sub CATMain()
Set Basic = CATIA.ActiveDocument
'tstr = tstr & & vbcrlf
tstr = "" & vbcrlf
tstr = tstr & "Struktur von " & Basic.Product.Name & ":" & vbcrlf
for a = 1 to Basic.Product.Products.count
tstr = tstr & Basic.Product.Products.item(a).PartNumber & vbcrlf
if Basic.Product.Products.item(a).Products.count > 0 then
for b = 1 to Basic.Product.Products.item(a).Products.count
tstr = tstr & Basic.Product.Products.item(a).Products.item(b).PartNumber & vbcrlf
if Basic.Product.Products.item(a).Products.item(b).Products.count > 0 then
for c = 1 to Basic.Product.Products.item(a).Products.item(b).Products.count
tstr = tstr & Basic.Product.Products.item(a).Products.item(b).Products.item(c).PartNumber & vbcrlf
if Basic.Product.Products.item(a).Products.item(b).Products.item(c).Products.count > 0 then
for d = 1 to Basic.Product.Products.item(a).Products.item(b).Products.item(c).Products.count
tstr = tstr & Basic.Product.Products.item(a).Products.item(b).Products.item(c).Products.item(d).PartNumber & vbcrlf
if Basic.Product.Products.item(a).Products.item(b).Products.item(c).Products.item(d).Products.count > 0 then
for e = 1 to Basic.Product.Products.item(a).Products.item(b).Products.item(c).Products.item(d).Products.count
tstr = tstr & Basic.Product.Products.item(a).Products.item(b).Products.item(c).Products.item(d).Products.item(e).PartNumber & vbcrlf
if Basic.Product.Products.item(a).Products.item(b).Products.item(c).Products.item(d).Products.item(e).Products.count > 0 then
end if
next
end if
next
end if
next
end if
next
end if
next
msgbox tstr
End Sub
'**********************************************************************
So, erstens sau umständlich und zweitens auf 5 Ebenen der tiefe des Strukturbaums begrenzt.
Kennt jemand eine möglichkeit wie ich dies dynamisch realisieren kann?
Ich müsste quasie die ganzen aneinandergereihten Blöcke Products.item() durch etwas ersetzen was ich mit einer schleife durchlaufen kann (z.B. in einer Funktion).
Durchlaufe ich diese Schleifen und merke, dass Teil hat noch Unterstrukturen muss ich die Funktion nochmals aufrufen und dort eine Schleife durchlaufen bis ich alle Unterstrukturen ausgelesen hab, dann regulär weiter nach der Stelle der unterbrechung bis eben der Baum zu ende ist.
Ist aber leichter gesagt wie getan.
Ich denke dass könnte mir am meisten helfen:
--------------------------------------------
Um auf dem Name des Productes S_1.1.1 zugreifen zu können brauche ich folgenden Befehl:
Basic.Product.Products.item(a).Products.item(b).Products.item(c).PartNumber
Kann ich bei diesem Befehl die Passage
// Basic.Product.Products.item(a).Products.item(b).Products.item(c)
durch einen Bezeichner ersetzen der direkt über den Namen S_1.1.1 (getitem oder so) mir diese Passage ersetzt? Dann könnte ich mit
// BEZEICHNER.Proucts.count
weiterarbeiten und nicht mit
// Basic.Product.Products.item(a).Products.item(b).Products.item(c).Products.count
was ja nicht dynmisch wäre
Danke für alle Zuschriften und Ideen!
------------------
Es gibt nichts langweiligeres als ein vollständiges, stabil laufendes Catia...
[Diese Nachricht wurde von Florian.Held am 23. Jul. 2005 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP