Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Componente oder CATProduct?

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:  Componente oder CATProduct? (3633 mal gelesen)
tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 30. Okt. 2012 08:39    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,
ich unterscheide Components und CATProducts in einer verschachtelten Struktur normalerweise über einen Vergleich des Parents und des Parent.Parents, also so:
If oItem.ReferenceProduct.Parent Is oItem.Parent.Parent.ReferenceProduct.Parent Then.... (-> dann Comp oder cgr.)
Funktioniert soweit seit langem hervorragend.
Jetzt habe ich eine Strukutr vorliegen, in der in Componenten andere Componeneten bzw. CATProducts verbaut sind, und da funktioniert das nicht mehr.
Hat jemand eine andere Idee bzw. das Problem auch schon mal gehabt?

Gruß TomTom

------------------
tomtom1972

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: 30. Okt. 2012 21:24    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 tomtom1972 10 Unities + Antwort hilfreich

Servus TomTom
Kannst du die konkrete Struktur näher beschreiben (Screenshot, Upload, ..)?
Ich konnte das Problem nicht nachstellen, vermutlich ist meine Teststruktur nicht komplex genug.

Gruß
Bernd

PS: Bitte Systeminfo ausfüllen.

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

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 01. Nov. 2012 13:36    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 Bernd,

danke für deine Antwort / Nachfrage.


CATProduct
    L-------Componente
                L-------A.Componente
                L-------B.CATProduct
    L-------sonstwas
    L-------sonstwas

Es geht darum beim (rekursiven) durchlaufen der Strutur zu unterscheiden, ob Knoten A oder Knoten B eine Component oder ein CATProduct ist, aber es geht mir um eine generelle Methode: d.h. die Struktur ist ein Bsp und kann beliebig anders aussehen, also tiefer verschachtelt oder sonst was.

Keiner eine Idee?

Gruß


------------------
tomtom1972


P.S.: die Systeminfo hilft nix, weil ständig andere Releases/SPs/HFs und Rechner.
Ich könnte nur reinschreiben CATIA V5 aber das ergibt sich von selbst, sonst wäre ich nicht in dem Forum unterwegs.


[Diese Nachricht wurde von tomtom1972 am 01. Nov. 2012 editiert.]

[Diese Nachricht wurde von tomtom1972 am 01. Nov. 2012 editiert.]

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: 01. Nov. 2012 21:18    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 tomtom1972 10 Unities + Antwort hilfreich

moin moin,

habe keine ahnung ob es funktioniert aber probiere .GetMasterShapeRepresentationPathName auf das object. Es könnte sein das Komponenten hier einen Fehler verursachen. Dann könntest du mit ErrorHandling bestimmen ob component oder Product. Wie gesagt, ich habe es nicht probiert, aber es könnte funktionieren.

Gruß,
DasDon

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 02. Nov. 2012 11:04    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 DasDon,

danke für deine Antwort.
Eine MasterShapRepresentation haben allerdings nur Dateien, die Geometrie enthalten, also cgrs, Parts .... .
Im Prinzip alle die Dateien, die im CacheModus als temporäre .cgrs geladen werden.
CATProducts und Components nicht.
Hilft also nix.

Gruß TomTom 

------------------
tomtom1972

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

Rainer Schulze
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. im Ruhestand


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

Beiträge: 4419
Registriert: 24.09.2012

erstellt am: 02. Nov. 2012 11:50    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 tomtom1972 10 Unities + Antwort hilfreich

>>ist ein Bsp und kann beliebig anders aussehen

Tomtom,
vielleicht bin ich ja mit dem Fachjargon von Catia nicht ausreichend vertraut, aber ich habe "component" bislang immer als Einzelteil (=CATPart) verstanden. Damit wäre Dein Beispiel unzulässig - ein Einzelteil darf keine untergeordnete Struktur haben.

Sehe ich das falsch?

------------------
Rainer Schulze

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: 02. Nov. 2012 12:09    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 tomtom1972 10 Unities + Antwort hilfreich

Servus Rainer
Eine "componente" ist eine (Bau)Gruppe ohne extra Datei.
Erzeugt wird diese über "Einfügen -> Neue Komponente"

Gruß
Bernd

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

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

Rainer Schulze
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. im Ruhestand


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

Beiträge: 4419
Registriert: 24.09.2012

erstellt am: 02. Nov. 2012 12:27    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 tomtom1972 10 Unities + Antwort hilfreich

Bernd,

danke für die Aufklärung.
Wir arbeiten nur selten mit Catia.

------------------
Rainer Schulze

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: 02. Nov. 2012 12:57    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 tomtom1972 10 Unities + Antwort hilfreich

Servus
Anbei ein (zusammengebastelter) Code der auch in verschachtelten Strukturen funktioniert. Bei mir funktioniert der Vergleich der Objekt über "Is" nicht deshalb vergleiche ich den Fullname der CATProducts:
Code:
Sub Start()

Dim RootProduct As Product

Set RootProduct = CATIA.ActiveDocument.Product

If RootProduct.Products.Count <> 0 Then
    Call Rekursiv(RootProduct)
End If

End Sub

'*****
Sub Rekursiv(RootProduct As Product)

Dim oProduct As Product

For Each oProduct In RootProduct.Products
    If oProduct.ReferenceProduct.Parent.FullName = oProduct.Parent.Parent.ReferenceProduct.Parent.FullName Then
        MsgBox oProduct.Name & " ist eine Componente"
    Else
        MsgBox oProduct.Name & " ist ein CATProduct"
    End If
   
    If oProduct.Products.Count <> 0 Then
        Call Rekursiv(oProduct)
    End If

Next
End Sub


Funktioniert es damit bei dir? Wie sieht dein Code aus?
Gruß
Bernd

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

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 02. Nov. 2012 13:27    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 Bernd,

schaue ich mir mal an. Danke schön erstmal.

Gruß TomTom

------------------
tomtom1972

[Diese Nachricht wurde von tomtom1972 am 02. Nov. 2012 editiert.]

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 05. Nov. 2012 06:32    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 Bernd,
das ist ja der Code, den ich ganz oben in aufgeführt habe; nur ich mache den Vergleich eben über IS.
Das ganze funktioniert aber wie gesagt nicht, wenn sich das Product bzw. die Componente selbst in einer Componente befinden.
Das war ja die ursprüngliche Frage meinerseits ?!

Gruß

------------------
tomtom1972

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: 05. Nov. 2012 07:19    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 tomtom1972 10 Unities + Antwort hilfreich

Servus
Auf meinen Testrechner (R19) funktioniert der Code auch bei verschachtelten Strukturen. Ich hab es allerdings nur in VBA getestet.

Gruß
Bernd

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

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 05. Nov. 2012 09:56    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,

edit. Jetzt hab ich mich verhaspelt. Antwort folgt gleich.

Gruß

[Diese Nachricht wurde von tomtom1972 am 05. Nov. 2012 editiert.]

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: 05. Nov. 2012 11:27    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 tomtom1972 10 Unities + Antwort hilfreich

moin moin,
evtl folgendes ausprobieren.

Baugruppe in Desing Mode setzen.
Dann für jedes Product der Baugruppe schauen ob das Dokument in CATIA offen ist. Bei einen component müsste kein Dokument geladen werden.

Vielleicht geht das ja...

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 05. Nov. 2012 13: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 danke, das geht. Dauert scheinbar nur elendig lange bei großen Strukturen.

Gruß

------------------
tomtom1972

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: 05. Nov. 2012 13:13    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 tomtom1972 10 Unities + Antwort hilfreich

ja, das stimmt.

z.B
Anzahl der Products = 200
Anzahl der Components = 50
Anzahl der Items = Products + Components = 250
Anzahl der Documents = Products

Items * Documents = 250 * 200 = 50.000 vergleiche.

Das beste wäre einen Dictionary einzubauen der alle abgefragten Items speichert und diese dann mit if Exists (oder wie auch immer es heißt) zu suchen um dopellete, dreifache etc vergleiche zu unterbinden.

Das andere wäre bei ItemXYZ = Document(n) die Schleife (is ItemXYZ in OPEN DOCUEMENTS) zu verlassen.

Gruß,
DasDon

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

Randle
Mitglied
CAD/PLM Consultant


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

Beiträge: 695
Registriert: 12.04.2003

Win10 x64
CATIA V5 R18, R19, R21, R27-29

erstellt am: 06. Nov. 2012 09:19    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 tomtom1972 10 Unities + Antwort hilfreich

Hallo,

mal eine Frage wie sind eure Daten denn abgelegt?

Ich bin gerade dabei ein Stücklistenmakro zu schreiben, bzw. bin damit gerade fertig. Von daher kenne ich diese Problematik. Hier stelle ich an die Anwender ganz klare Vorgaben.
Alle Dokumente müssen in einem Ordner liegen und Dateiname entspricht immer der Teilenummer.
Ich frage dann einfach ab, ob das Dokument unter dem Pfad des ActiveDocuments (also des Top Level Produktes) existiert. Wenn nicht behandel ich das als Komponente.

Ich weiss das man diese Vorgabe nicht bei allen Kunden durchsetzen kann, aber vielleicht geht es ja bei deinem Kunden.

Kein Paradies ohne Schlange.

Gruß
Marcus

------------------
MfG
Randle

! It's not a bug, it's a feature !

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 07. Nov. 2012 07:06    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,

das in etwa ist mein Problem. Nun umgekehrt. Vorgabe aus der Richtlinie ist:
FileName = PartNumber = InstanceName + Punkt + Index, Nomenklatur und Ordnerstruktur (verschachtelt) sind ganz klar vorgegeben. Aber Fehler machen wir alle: dafür dann das Script.
Das Script prüft die komplette Struktur und korrigiert automatisch, maßgebend ist dabei der PartNumber, d.h. FileName (und Speicherort) + InstanceName werden automatisch angepasst, weil sie einer bestimmten Logig unterliegen (in dem Fall der aus den Richtlinien für die BemiKonstrution einiger OEMs). Eventuelle Fehler in der Nomenklatur werden beseitigt (Leerzeichen, verbotene Sonderzeichen ...). Voraussetzung ist immer, das der PartNumber mehr oder weniger korrekt ist, was soweit auch seit langem gut funktioniert.

An der Art und Weise an sich soll auch gar nichts geändert werden, da wir das Script auch zum Weiterkopieren und Umbenennen von kompletten Strukturen mit mehreren hundert Teilen verwenden: und spätestens dann wird mein Problem wieder auftreten, weil ich PartNumber, FileName und Speicherort + InstanceName aller Knoten der Struktur verändere.

Und bei Parts / Products / WasAuchImmer, die in Componeten verbaut sind, deren Parents wiederum Componenten sind habe ich einen Fehler, dessen ich mir nie bewusst war, weil ich das Szenario vorher nie hatte.

Das Problem ist auch in soweit nur theoretischer Natur, als das ich vorgeben kann, das keine Componenten in Componeten verbaut sein dürfen; da mir das selbst aber keine Ruhe lässt, suche ich eigentlich aber doch eher nach einer funktionierenden Lösung.

Gruß TomTom


------------------
tomtom1972

[Diese Nachricht wurde von tomtom1972 am 07. Nov. 2012 editiert.]

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 07. Nov. 2012 11:00    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 Bernd,
natürlich funktioniert dein Code auch bei verschachtelten Strukturen; darum gehts mir ja auch überhaupt nicht.
Vieleicht habe ich mich mit der Schilderung meines Problems zu kurz gefasst, als das es nachvollziehbare wäre. Deshalb nun die ausführliche Variante.

Also ganz weit ausgeholt. Es geht um das aufbröseln einer Struktur beim rekursiven Durchlauf vom Root aus. Die Frage ist: was ist was und wodrin ist es verbaut, im speziellen was ist eine Componente und was ist ein CATProduct (und befindet es sich in einer Comp oder in einem Product). Das ist z.B. relevant, wenn ich den Instanz-Namen eines Knotens ändere: die Methode ist anders, wenn sich der Knoten in einer Componente oder in einem Product befindet.
Dein Ansatz bzw. mein alter (von ganz oben, der ja der gleiche ist) basiert also auf dem Phänomen, das eine Componente bei der Abfrage einer Propertie des ReferenceProduct.Parent nicht den Wert des Componenten-Nodes sondern den des übergeordneten Knotens zurück gibt. (Das ist auch irgendwie logisch, da ich über das ReferenceProduct.Parent aus einer Struktur mit Instanzen in das zugehörige Dokument wechsle - und es zu einer Componente eben kein Dokument gibt.)

Vergleicht man nun die zwei Eigenschaften (du den Fullname bzw. ich das Object selbst mit IS) so folgert man salopp ausgedrückt: Eigenschaft vom ReferenceProduct.Parent vom Node und Eigenschaft vom ReferenceProduct.Parent vom Parent von Node sind gleich, so ist es eine Componente. Soweit so gut.

Ein Bsp mit dem ich keine Probleme habe:

Product1
    L Product2
          L  Componente3
                  L WasAuchimmer4
                  L WasAuchimmer5

Ich will wissen: Was ist der Node Componente3 (mal davon ausgehend, das ich noch nicht weiss, das es eine Componente ist).
Frag ich nun den Fullname vom ReferenceProduct.Parent von Comp3 ab, so bekomme ich den vom Product2 zurück. Frag ich den Fullname vom Parent vom ReferenceProduct.Parent von Comp3 ab (also vom Prod2), so bekomme ich ebenfalls den vom Product2 zurück. Vergleiche ich die zwei, so sind sie gleich. Aus obenstehendem Phänomen resultiert nun: der Knoten Comp3 ist eine in Product2 verbaute Componente.

Das Problem um das es mir hier geht tritt nun auf, wenn der Parent-Knoten von der Componente auch eine Componente ist.

Also nochmal ein Bsp.:
Product1
    L Componente2
          L  Componente3
                  L WasAuchimmer4
                  L WasAuchimmer5

Ich will immer noch wissen: Was ist Componente3.
Frag ich nun den Fullname vom ReferenceProduct.Parent von Comp3 ab, so bekomme ich den vom ROOT zurück (also von Prod1). (Unser o.s. Phänomen wird sozusagen über die Componenten nach oben hin weiter durchgegeben.) Frag ich den Fullname vom Parent vom ReferenceProduct.Parent von Comp3 ab (also Comp2), so bekomme ich ebenfalls den vom ROOT zurück. Vergleiche ich die zwei, so sind sie gleich, heißt also: Comp3 ist eine Komponente in Product1.

Und das stimmt nicht. Ausgehend von dieser falschen Annahme treten nun Folgefehler auf.

Ich hoffe mein Problem ist nun klarer, auch wenns viel zu lesen ist.

Eigentlich kann das auch gar keiner richtig nachvollziehen, wenn er es nicht schon mal selber hatte:
ich habe eine ganze Weile gebraucht um die Ursache meiner Folgefehler (in diesem Fall z.B. falsch umbenannte Instanz-Namen) auf das hier beschriebene Problem einzugrenzen.

Gruß TomTom

------------------
tomtom1972

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: 08. Nov. 2012 09:28    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 tomtom1972 10 Unities + Antwort hilfreich

MOIN;
WIE WÄRE ES WENN DU IN DEINEM TREEWALK SCHLEIFE DEN VATER übermittelst und diese dann mit .Parent vergleichst.

irgendwie so...

Sub CATMAIN()

  Treewalk CAtia.ActiveDocument.Product, catia.ActiveDocument.Product.Name
END SUB

Sub Treewalk (oProd, oVaterInstanceName)

  For each oChild in oProd.Products
    Treewalk oChild, oProd.Name
  Next

  IF oChild.ReferenceProduct.Parent.Name = oVaterInstanceName THEN
    'Product
  Else
    'komponente
  End
End sub

irgendwie so könnte es gehen. ist nur pseudo code. mein kopf dröhnt noch einwenig vom bier und fussball gestern... 
gruß, dasdon

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: 08. Nov. 2012 09:35    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 tomtom1972 10 Unities + Antwort hilfreich

ach sch...schade. habe wat vergessen. wie gesagt, der kopf!

du muss natürlich auch alle indentifizierten komponenten in einem dictionary speichern bzw. deren instance name. dann vergleichst du bei positive identifizierung von einen komponente ob der vater auch einer ist. IF oVaterInstanceName Exists in Dictionary.
Dann weiß du: sohn ist component, vater ist component. enkel müssen andres behandelt werden oder wat auch immer...

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 08. Nov. 2012 11:06    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

Moin,

darauf wirds wohl hinauslaufen. Ich werds ausprobieren, wenn ich dazu komme. Code wird dann nachgetragen. Danke nochmal an alle.

Gruß

------------------
tomtom1972

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