Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  mysteriöses Verhalten beim Auslesen des Strukturbaums

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  mysteriöses Verhalten beim Auslesen des Strukturbaums (1504 mal gelesen)
Antelito
Mitglied



Sehen Sie sich das Profil von Antelito an!   Senden Sie eine Private Message an Antelito  Schreiben Sie einen Gästebucheintrag für Antelito

Beiträge: 88
Registriert: 27.11.2013

CATIA R24
WIN 10 x64

erstellt am: 03. Apr. 2014 12:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Strukturbaum-Bild.jpg

 
Hallo,

obwohl ich mir bewusst bin, dass das Thema "Strukturbaum auslesen" ein alter Hut ist und es unzählige Beiträge dazu gibt, kann ich das bei mir auftretende Problem nicht lösen und hoffe, dass jemand von Euch besser Bescheid weiss.

Es geht eigentlich nur darum, die Struktur aus CATIA in Excel zu übetragen. Dafür durchlaufe ich den Baum rekursiv. Das klappt auch soweit ganz gut, bis auf eine entscheidende Kleinigkeit (siehe Bild):

Ich komme nie bis zum letzten Element (auf dem Bild ist es das Element F), sondern das Makro stoppt bei E und geht dann weiter zum nächsten Element, welches wieder auf Ebene B liegt 

Mein Code sieht wie folgt aus

Code:
Sub CATMain()

On Error Resume Next

Dim objExcel As Object
Dim strExcelPfad As String

Dim doc As Document
Dim ProdWurzel As Product
Dim intLetzteZeile As Integer

Set doc = CATIA.ActiveDocument

'Prüfung, ob ein Produkt in Catia geladen ist
If doc Is Nothing Then

  MsgBox "Bitte ERST ein Produkt laden - DANN dieses Makro neustarten!"
  Return
 
End If

Set ProdWurzel = doc.Product

'Funktionsaufruf um die Struktur auszulesen
BaumDurchlaufen ProdWurzel, 0, objExcel, intLetzteZeile

MsgBox "FERTIG!"

End Sub
____________________________________________________________________________________________________________________________________________

Sub BaumDurchlaufen(prod As Product, p_intEbene As Integer, Excel As Object, intLetzteZeile As Integer)

On Error Resume Next

Dim strZeichen As Integer
Dim ProdChildren As Products
Dim i As Integer
Dim ProdChild As Product
Dim strNumber As String
Dim intZaehler As Integer
Dim intPosArr(11)
Dim objChildren As Product
Dim objPosition As Object
Dim strDescrRef As String
Dim strQuelle As String
Dim strVersion As String
Dim strDefinition As String

Set ProdChildren = prod.Products
Set objChildren = ProdChildren.Item(ProdChildren.Count)

Set objPosition = objChildren.Position

'Transformationsmatrix auslesen
objPosition.GetComponents intPosArr

    For intZaehler = 0 To p_intEbene
   
        strZeichen = strZeichen + 1
       
    Next


'Informationen aller Objekte eines Astes des Strukturbaums auslesen
For i = 1 To ProdChildren.Count

  Set ProdChild = ProdChildren.Item(i)

  strQuelle = ProdChild.Nomenclature
  strVersion = ProdChild.Revision
  strDefinition = ProdChild.Definition
 
  strNumber = ProdChild.Name
  strNumber = Left(strNumber, InStr(strNumber, "_") - 1)
 
 
  'Excel-Liste füllen
 
  'Rekursion
  BaumDurchlaufen ProdChild, p_intEbene + 1, Excel, intLetzteZeile
 
Next i

End Sub


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DasDon
Mitglied
Konstruktuer


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 03. Apr. 2014 12:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Antelito 10 Unities + Antwort hilfreich

Moin moin,


Das ist meiner Meinung nach nicht mysteriös, sondern ganz logisch. Ebene F befindet sich nicht im CATProduct, sonder ist Bestandteil von einem CATPart. Doppelklick drauf, das Workbench wird sich vom "Assembly Design" nach "Part Design" z.B. ändern.

Gruß,

------------------
wer ist diese Catia und wo kann ich sie finden?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Antelito
Mitglied



Sehen Sie sich das Profil von Antelito an!   Senden Sie eine Private Message an Antelito  Schreiben Sie einen Gästebucheintrag für Antelito

Beiträge: 88
Registriert: 27.11.2013

CATIA R24
WIN 10 x64

erstellt am: 03. Apr. 2014 14:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

ok, klingt logisch... Und wie muss ich den Code anpassen, damit auch Ebene F mit ausgelesen wird?

Danke!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 03. Apr. 2014 14:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Antelito 10 Unities + Antwort hilfreich

Servus
Du solltest in die Doku schauen um zu sehen wie sich die Objekte verzweigen, und dann so deinen Code an passen
Part -> Bodies -> Shapes
              -> Sketches
Part -> Hybidbodies -> HybridShapes
                  -> Sketches
                  -> ...
Leider verzweigen sich die Objekte so, dass du den Strukturbaum nicht 1:1 per Makro abfragen kannst.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DasDon
Mitglied
Konstruktuer


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 03. Apr. 2014 16:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Antelito 10 Unities + Antwort hilfreich

moin moin,

müsste nicht bei F das gleiche (partnumber, revision etc.) sein wie bei E?

Gruß,
Dean

------------------
wer ist diese Catia und wo kann ich sie finden?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Antelito
Mitglied



Sehen Sie sich das Profil von Antelito an!   Senden Sie eine Private Message an Antelito  Schreiben Sie einen Gästebucheintrag für Antelito

Beiträge: 88
Registriert: 27.11.2013

CATIA R24
WIN 10 x64

erstellt am: 04. Apr. 2014 09:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ja, es ist vom Namen her das selbe, allerdings befindet sich auf Ebene F (und Ebenen darunter) noch weitere wichtige Information, die ausgelesen werden müssten.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DasDon
Mitglied
Konstruktuer


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 04. Apr. 2014 10:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Antelito 10 Unities + Antwort hilfreich

moin moin,

also, wenn du noch weiter absteigen möchtest als dein Bild es vermuten lässt, geht es so.

.
..
...

set oPartDoc = oChild.referenceProduct.Parent
set oPart = oPartDoc.Part

oChild ist "E".

Gruß,
Dean

------------------
wer ist diese Catia und wo kann ich sie finden?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 04. Apr. 2014 12:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Antelito 10 Unities + Antwort hilfreich

Servus
Ich empfehle noch unbedingt das "On Error Resume Next" aus dem Makro zu entfernen.
IMHO sollte diese Vorgehensweise nur an wenigen Ausnahmen ganz bewusst eingesetzt werden (und dann aber auch der Fehler ausgelesen/verarbeitet werden).
Sonst sucht man sich bei Fehlern einen Wolf.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DasDon
Mitglied
Konstruktuer


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 04. Apr. 2014 12:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Antelito 10 Unities + Antwort hilfreich

stimme Bernd hier auch zu!

------------------
wer ist diese Catia und wo kann ich sie finden?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ptit.tom
Mitglied
CAD-Berater


Sehen Sie sich das Profil von ptit.tom an!   Senden Sie eine Private Message an ptit.tom  Schreiben Sie einen Gästebucheintrag für ptit.tom

Beiträge: 114
Registriert: 11.02.2005

win10, CATIA R19 bis R30

erstellt am: 17. Apr. 2014 09:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Antelito 10 Unities + Antwort hilfreich

ich habe in solche Fälle mit eine Sucheabfrage geprüft, ob ein part mit dem geliche Partnumber vorhanden ist...
Ich werde deine Lösung testen.

[Diese Nachricht wurde von ptit.tom am 17. Apr. 2014 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz