Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Part in Produktstruktur lokalisieren

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:  Part in Produktstruktur lokalisieren (1933 mal gelesen)
Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 16. Apr. 2007 09: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

Hallo,

ich bräuchte mal wieder einen kleinen Anreiz von euch.

Folgende Problemstellung:

1. Ich selektiere ein "PART" in einer beliebigen Produktstruktur.
2. Nach der Selektion möchte ich feststellen in welchem Produkt (CATProduct) dieses Part angeordnet ist.


Ich habe mir schon überlegt über einen rekursivscan über die Produktstruktur das entsprechende Part zu suchen. Ich denke jedoch das dies bei grossen Strukturen einfach zu lange dauern würde. Deshalb die Frage ob vielleicht jemand eine Ahnung hat, wie man das am geschicktesten lösen könnte.

Vielen Dank für eure Mühen

Gruß Timber

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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: 16. Apr. 2007 09:47    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 Timberwolve 10 Unities + Antwort hilfreich

Hallo,

ich weiß nicht, ob ich dein Problem richtig verstanden habe !?
Wenn du ein in einer Struktur verbautes Part selektiert hast:

Msgbox Catia.ActiveDocument.Selection.Item(1).Value.Parent.Parent.Parent.Name

Gruß

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

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 16. Apr. 2007 10: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

Ja du hast es richtig verstanden.

ich hab nur ein kleines Problem.

Ich hab für die Prüfung ne Routine gebastelt.

erst habe ich es versucht als Part zu übergeben.Also kommt aus der Selektion das Object "Part"

Damit hab ich mir mit ".Parent" das Dokument geholt und vom Dokument wiedderrum das "Product" mit ".Product"

versuche ich dann mit ".Parent.Parent.Name" zu gehen, bekomm ich immer "CNEXT" angezeigt

Mach ich das ganze mit dem Product zum selektieren, so funktioniert es. Aber warum????


Gruß Timber

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

[Diese Nachricht wurde von Timberwolve am 16. Apr. 2007 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: 16. Apr. 2007 10: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 Nur für Timberwolve 10 Unities + Antwort hilfreich

Hallo,

das ist klar: Das Part, welches du auswählst, ist ein .Item der CATIA.Documents. Und das Parent.Parent... der selbigen ist die CATIA.Installation, also die CNEXT.exe

Wenn du in deiner Rotine nur Parts selektieren können möchtest, musst du erst wieder von .Document (dem CATPart) auf die Instanz des selbigen (.Product) und von da aus übers .Partent.Parent.... das .CATProduct suchen.

Also so:

Sub CATMain()
Set oSelection = Catia.ActiveDocument.Selection
Dim InputObjectType(0)
InputObjectType(0) = "Part"
Status = oSelection.SelectElement3(InputObjectType, "", False, CATMultiSelTriggWhenUserValidatesSelection, False) '--- UserSel
Set oFObj = oSelection.FindObject("CATIAProduct")
Msgbox oFObj.Parent.Parent.Parent.Name

End Sub

Gruß

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

[Diese Nachricht wurde von tomtom1972 am 16. Apr. 2007 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: 16. Apr. 2007 11: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 Timberwolve 10 Unities + Antwort hilfreich


Struktur.pdf

 
Noch mal Hallo,

im Anhang (pdf) findest du mal zur Veranschaulichung ein paar Screenshots von VB-WatchWindow (CATIA Sturuktur).

1 Seite: Selection wenn  InputObjectType(0) = "Part":
Das .Parent der Selektion ist das Document, und das ist ein Item der CATIA.Documents. Von da aus kommst du über .Parent auf die Application selbst (CNext).
2 Seite: Links oben: InputObjectType(0) = "Part", aber über .FindObject wieder auf die zugehörige Instanz ist das gleiche wie (rechts unten im Bild) von oben durch den Tree gewandert (nur eben Rückwärts).
Wirds klarer?
Gruß

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

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 16. Apr. 2007 12:02    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

Ok, jetzt ist es mir auch klar ;-)

Das Mit dem FindObject hab ich aber noch net ganz verstanden.

Ich selektiere mit InputObjectType(0) "Part" das gewünschte Part.
Nach dem es jetzt in der Selection drin ist also
Selection.Item(1).Value, ist doch eigentlich nur das Part drin, oder??
und mit FindObject findet das Script dann trotzdem das Product????

Hab an meiner jetzigen Maschine leider kein VB oder VBA :-( deshalb kann ich momentan mit dem schönen Watch-fenster nicht arbeiten.

Aber bis auf FindObject hab ich alles soweit verstanden, Vielen Dank.

Vielleicht kannst mir ja das FindObject noch etwas näher bringen ;-)

Gruß Timber

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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: 16. Apr. 2007 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 Nur für Timberwolve 10 Unities + Antwort hilfreich

Hallo,

"FindObject" ist eine Methode die zur Selection gehört.
Damit kannst du Objekte ausfindig machen, zu welchen das selektierte Elemente gehört. Oder anders gesagt: Dein selektiertes Element ist immer auch Teil verschiedener anderer Objekte, die du dir mit Hilfe dieser Methode ausgeben lassen kannst.
Bsp.: Teilfläche(BRep) > ist Teil einer Surface > ist Teil eines Parts > gehört zu einer Instance etc. ....

Immer den Automation Typ mit dem prefix "CATIA".
Also z.B.:
Suchst du das Solid, dann .FindObject("CATIAShape")
Suchst du den Body, dann .FindObject("CATIABody")
Suchst du das Product (die Instanz), dann .FindObject("CATIAProduct")
usw.

Gruß

[Diese Nachricht wurde von tomtom1972 am 16. Apr. 2007 editiert.]

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 17. Apr. 2007 10: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

Hallo nochmal,

erstmal vielen Dank für deine Hilfe, die hat mich sehr weit nach vorn gebracht. Danke.

Jetzt hab ich noch ne Frage, vielleicht hast du eine Idee.

Wie kann ich einen Baum rekursiv nach oben scannen?

Folgendes bräuchte ich für eine Analyse.

Es wird ja ein Part selektiert, daraus bekomme ich dann mit FindObject das dazugehörige Product(vom Part).
Jetzt möchte ich gerne bis zum ActiveDocument nach oben scannen und alle Elternkomponenten, bzw. Produktstufen in der das Part angeordnet ist aufgelistet.

Mal Grafisch:


Activedocument.Product
      |
      |-Unterprodukt1
      |      |
      |      |-Unterprodukt2
      |      |      |
      |      |      |-Selektiertes_Part
      |      |
      |      |-Unterprodukt3
      |
      |-Unterprodukt4


Bei solch einer Struktur soll die liste folgendes ausgeben.

1. Elternprodukt = Unterprodukt2
2. Elternprodukt = Unterprodukt1
3. Elternprodukt = Activedocument.Product


Hast du da vielleicht eine Idee????

Gruß Timber

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 17. Apr. 2007 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 habs bereits rausgefunden ;-)

Hatte diesmal auch ne zündende Idee.
Bin einfach mit Obj.Parent.Parent solang nach oben gegangen bis der
Name der vom ActiveDocument ist ;-)

Trotzdem nochmal vielen vielen Dank für deine Hilfe

Gruß Timber

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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