Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Pro ENGINEER
  JLink: Selektion analysieren

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo
Autor Thema:  JLink: Selektion analysieren (1012 mal gelesen)
philth
Mitglied
Student

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

Beiträge: 3
Registriert: 20.04.2009

Wildfire3, Java1.6

erstellt am: 25. Apr. 2009 13:42    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 zusammen,

ich habe folgendes Problem: Mit J-Link lasse ich den Bediener ein "Part" aus meiner Baugruppe auswählen. Wenn sich dieses Teil jetzt in der Hierarchie weit unten befindet, also Teil eines Subassembly ist z.B., möchte ich für den ganzen Weg dorthin die Namen (und Dateinamen) der Elemente des Modellbaums haben. Ich habe dazu den "ComponentPath" zur Verfügung, der mir die ID des jeweiligen Elementes in seinem Oberelement liefert. Wie verwadle ich diese ID nun in ein "Model"?

Ich habe hier die Dokumentation zur Verfügung, die bei der ProE-Installation dabei ist, leider finde ich sie überhaupt nicht gelungen.

ratlose Grüße,
Philipp

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

Erich Z
Mitglied
 ProE und Catia System und Anwenderbetreuer


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

Beiträge: 280
Registriert: 26.10.2000

WF5 M190 - Win7-64

erstellt am: 26. Apr. 2009 19:55    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 philth 10 Unities + Antwort hilfreich

Hallo!
ist schon etwas her das ich geJlinkt habe - aber so aus dem Bauch raus würd ich sagen machs umgekehrt und nimm das offene Fenster und gehe da den ganzen Baum durch (so lange bis Du die angeklickte Komponenten gefunden hast)
mfg

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

Stahl
Mitglied
unbeschreiblich


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

Beiträge: 1475
Registriert: 30.01.2001

erstellt am: 27. Apr. 2009 00: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 Nur für philth 10 Unities + Antwort hilfreich

Mit GetRoot() bekommt man die Oberbaugruppe, mit GetLeaf() das Modell. Meinst Du das?
Achso du willst das Modell einer beliebigen Id dazwischen? Nunja, die Assemblies erben auch ModelItemOwner, also sollte man mit der Methode GetItemById() ein ModelItem mi des Typs Feature kriegen (oder ist es sogar ein eigenes ComponentFeature? - egal). Eine Komponente ist ja ein Feature. Den Modellnamen der Komponente kriegt man dann z.B. mit mi.GetModelDescr().GetFullName()
Der Rest sollte dann nicht mehr so schwer sein oder?
Der Weg drängt sich mir jedenfalls auf, vielleicht gibts sogar noch einen einfacheren.

[Diese Nachricht wurde von Stahl am 27. Apr. 2009 editiert.]

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

philth
Mitglied
Student

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

Beiträge: 3
Registriert: 20.04.2009

Wildfire3, Java1.6

erstellt am: 27. Apr. 2009 06: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

Vielen Dank für eure Antworten!
Stahl: GetRoot() und GetLeaf() hab ich im Griff. Aber je nach Schachtelungstiefe der Baugruppe gibt es ja noch Elemente dazwischen. Ich verstehe das so, dass ich auf diese mit GetComponentPath() und die Elemente dessen zugreife. Die Elemente sind eine Sequenz von Ganzzahlen. Angenommen, die erste ID aus dem ComponentPath ist 3: Jetzt muss ich irgendwie mit GetRoot() arbeiten, mir in diesem Element eben die dritte Komponente geben lassen, und in dieser dann das nächste Element aus dem ComponentPath suchen, zumindest stell ich mir das so vor.
Was sind denn die Klassen, die Baugruppen und Bauteile repräsentieren? Ich seh immer nur ModelItem, außerdem muss man bei der Methode ListComponents() (so heißt sie glaub ich) noch einen ModelItemType angeben, welchen sollte ich denn hier nehmen? ModelItemType.ITEM_SOLID_GEOMETRY?
Ich paste später hier mal etwas Code, ich muss jetzt aber gleich los.

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

Stahl
Mitglied
unbeschreiblich


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

Beiträge: 1475
Registriert: 30.01.2001

erstellt am: 27. Apr. 2009 11:46    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 philth 10 Unities + Antwort hilfreich

Ist dir klar, was eine Komponente ist? Das ist ein Feature, also ein KE der Baugruppe. Wenn Du einen Teil x.prt in der Baugruppe 5 mal verbaust, hast du 5 Komponenten. Aber nur 1 Model.

Frage:
Was sind denn die Klassen, die Baugruppen und Bauteile repräsentieren?
Antwort:
com.ptc.pfc.pfcModel.Model

Frage:
[..]welchen sollte ich denn hier nehmen? ModelItemType.ITEM_SOLID_GEOMETRY?
Antwort:
ITEM_FEATURE

GetItemByID liefert die Komponente. Und wenn du die Komponente hast, kriegst du den Namen des Modells über die zuvor beschriebenen Methoden raus. Und wenn du den Namen hast, kriegst du über session.GetModel() das Modell.
Wie gesagt, das ist der Weg den ich ohne selber auszuprobieren klar vor mir sehe, was nicht heißt, dass es der kürzeste ist.

------------------
Stahl.

Dies ist keine Signatur. Es gibt hier nichts zu sehen. Bitte lesen Sie weiter.

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

philth
Mitglied
Student

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

Beiträge: 3
Registriert: 20.04.2009

Wildfire3, Java1.6

erstellt am: 27. Apr. 2009 21: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

Stahl, vielen vielen Dank schonmal! Hab gerade ein Minimalbeispiel ausprobiert, es tut das, was ich mir erhofft habe. Der ComponentFeat hat mir gefehlt, ich hab hier mal ein Stück Code:


Model model =  s.RetrieveModel(descr);
ModelItems items = model.ListItems(ModelItemType.ITEM_FEATURE);
for (int i = 0; i < items.getarraysize(); i++){
ModelItem mi = items.get(i);
System.out.println(mi);
System.out.println(mi.GetName());
try {
ComponentFeat f = (ComponentFeat) mi;
System.out.println(f.GetModelDescr().GetFullName());
} catch (Exception e) {
System.out.println(mi+": Konnte nicht gecastet werden.");
}
}

... das noch etwas ausbauen, und ich sollte bald einen kompletten Baum parsen können. Vielen Dank!

Grüße
Philipp

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