| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
| | |
 | Effektives Anforderungsmanagement und agile Entwicklung, eine Pressemitteilung
|
|
Autor
|
Thema: aus .asm Komponenten auslesen (JLink) (559 mal gelesen)
|
magic_halli Mitglied
 
 Beiträge: 361 Registriert: 03.07.2006 WF2 M210 / WF3 M110 Linux Fedora C4 WinXP Pro Java 1.6.0_06
|
erstellt am: 27. Jul. 2006 08:58 <-- editieren / zitieren --> Unities abgeben:         
Hi, ich bastel jetzt schon ne Ewigkeit mit JLink an einer Stelle herum und komme einfach nicht vorwärts ! Ich will aus einer geöffneten .asm-Datei mir lediglich alle darin enthaltenen Komponenten ausgeben lassen. Sämtlicher anderer Mist, wie Pfadangaben, Filenames etc. bekomme ich angezeigt, nur die enthaltenen Komponentnen eben nicht... Hier mal das Codesniplet:
Code:
public static void start() { Session curSession = null; //ProE session object Assembly asm; Model model; try { curSession = pfcGlobal.GetProESession(); // ProE Session model = curSession.GetCurrentModel(); asm = (Assembly) model; ModelItems m_items = asm.ListItems(ModelItemType.ITEM_COORD_SYS); for (int i = 0; i < m_items.getarraysize(); i++){ String m_items_name = m_items.get(i).GetName(); curSession.UIDisplayMessage(m_items_name +"\n",null,null); } } catch (jxthrowable e) { e.printStackTrace(); // Auto-generated catch block } }
Kann mir bitte jemand nen Tip geben, was ich falsch mache? Wenn ich nun die Application in ProE starte (vorher irgendeine asm geöffnet), kommt als Ausgabe lediglich, dass die Applikation erfolgreich gestartet wurde - mehr nicht! Vielen Dank, Rico. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
anagl Ehrenmitglied V.I.P. h.c.
     
 Beiträge: 4566 Registriert: 28.05.2001 CREO2 M140 PDMLink 10.2 M020 HW diverse Das Schreiben bei CAD.de ist freiwillig und kein Muss !!!!!
|
erstellt am: 27. Jul. 2006 19:05 <-- editieren / zitieren --> Unities abgeben:          Nur für magic_halli
|
GüntherP Mitglied CAD Administrator / Konstrukteur

 Beiträge: 82 Registriert: 18.02.2005 HP xw4100 NVIDIA Quadro 980XGL<P>Wildfire 2.0 / 3.0 Intralink 3.4 F000 PDMLink 8.0 M030
|
erstellt am: 27. Jul. 2006 19:33 <-- editieren / zitieren --> Unities abgeben:          Nur für magic_halli
Hallo, Punkt1 ist, dass man von ModelItems keine Namen bekommt. Besser sind Features. Die haben den Namen, der im Modellbaum angezeigt wird. Punkt2 ist, dass du einen Fehler im Aufruf von curSession.UIDisplayMessage hast. Wenn du in der Dokumentation nachließt, wirst du sehen, dass als erste Argument eine Textdatei mit den Messageformaten, als zweites Argument der Formattyp und als drittes Argument die eigentliche Message als stringseq verlangt wird. Gruß, Günther [Diese Nachricht wurde von GüntherP am 27. Jul. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GüntherP Mitglied CAD Administrator / Konstrukteur

 Beiträge: 82 Registriert: 18.02.2005 HP xw4100 NVIDIA Quadro 980XGL<P>Wildfire 2.0 / 3.0 Intralink 3.4 F000 PDMLink 8.0 M030
|
erstellt am: 27. Jul. 2006 20:51 <-- editieren / zitieren --> Unities abgeben:          Nur für magic_halli
Hallo noch mal, ich habe versuch, das ganze in einer kleine Demo zusammenzufassen. Im Zip File sind die Sourcen, Klassen, Jar Archive, Textdateien und die protk.dat. Das Programm wird beim ProE start sofort gestartet und legt ein neues Menü und einen Button im Menü an. Die Namen der Menüs und Buttons werden in der buttonnames.txt festgelegt. Wenn du auf den neuen Button klicks, wird die Klasse TestCommand aufgerufen, die das machen sollte was du brauchst. Die unterschiede zwischen deinem Code und meinem kanst du in der Datei TestCommand.java nachlesen. Achtung, das ganze wurde mit JDK 1.5.0 kompiliert, solltest du eine ander verwenden, muss das ganze noch einmal kompiliert werden. Die Pfade in der protk.dat usw. müssen auch angepasst werden. Gruß, Günther
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
magic_halli Mitglied
 
 Beiträge: 361 Registriert: 03.07.2006 WF2 M210 / WF3 M110 Linux Fedora C4 WinXP Pro Java 1.6.0_06
|
erstellt am: 28. Jul. 2006 10:18 <-- editieren / zitieren --> Unities abgeben:         
@GüntherP ...tausend Dank - ich denke, jetzt hab ich den Ablauf viel besser verstanden! Wie Du das gemacht hast, hab ich sehr gut nachvollziehen können  ! Ich hab die protk.dat auf meine Pfade angepasst - nur leider passiert beim ProE-Start bzw. über manuelles einbinden und starten der protk.dat nichts. Es wird kein Menü/Button eingebunden!? Hab mal spaßenshalber in beiden Dateien eine einfach Message mit eingebaut, welche eigentlich angezeigt werden sollte - nur leider wird die auch nicht angezeigt. Woran könnte das liegen? Gruß, Rico. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GüntherP Mitglied CAD Administrator / Konstrukteur

 Beiträge: 82 Registriert: 18.02.2005 HP xw4100 NVIDIA Quadro 980XGL<P>Wildfire 2.0 / 3.0 Intralink 3.4 F000 PDMLink 8.0 M030
|
erstellt am: 28. Jul. 2006 18:19 <-- editieren / zitieren --> Unities abgeben:          Nur für magic_halli
Hallo Rico, welche Java Version verwendest du? Die Class Dateien wurden mit JDK1.5.0 kompiliert. Wenn du die Klassen neu kompilierst, musst du den Pfad in der protk.dat unter java_app_classpath möglicherweise ändern. Welche ProE Version? Sind schon einmal JLink Programme gelaufen (z.B install_test)? Gruß, Günther Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
magic_halli Mitglied
 
 Beiträge: 361 Registriert: 03.07.2006 WF2 M210 / WF3 M110 Linux Fedora C4 WinXP Pro Java 1.6.0_06
|
erstellt am: 31. Jul. 2006 07:25 <-- editieren / zitieren --> Unities abgeben:         
Hi, ich verwende Java1.4.2_12 mit Java2 RE - installiert ist hier das J2SDK1.4.2. Habe die Klassen per Konsole neu kompiliert und auch die Pfade angepaßt. Von ProE benutze ich Wildfire2 M210. Hab schonmal kleinere Testprogramme laufen lassen, wo sich z.B. die geöffnete Zeichnung dreht, wenn die JLink-Application gestartet wird... also von daher geht JLink eigentlich. Mit der install_test habe ich immer gewisse Probleme beim kompilieren bezüglich dieses Asynchronen Packages gehabt. Gruß EDIT: Hab grad nochmal die Anwendung laufen lassen... Also das Programm selbst läuft anscheinend ohne Probleme - nur wird eben keine Menüeintrag mit Button erzeugt. Zumindest sehe ich keinen.
EDIT2: Hab testweise die Buttonerstellung rausgenommen und nur den Teil laufen lassen, der mir die Komponenten der geöffnetet Baugruppe ermitteln soll. Da erhalte ich eine Meldung in Form eines Window mit OK-Button:"com.ptc.pfc.Implementation.pfcExtensions$XToolkitMSG Not Found". Mhhhh?!?! [Diese Nachricht wurde von magic_halli am 31. Jul. 2006 editiert.] [Diese Nachricht wurde von magic_halli am 31. Jul. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GüntherP Mitglied CAD Administrator / Konstrukteur

 Beiträge: 82 Registriert: 18.02.2005 HP xw4100 NVIDIA Quadro 980XGL<P>Wildfire 2.0 / 3.0 Intralink 3.4 F000 PDMLink 8.0 M030
|
erstellt am: 31. Jul. 2006 10:32 <-- editieren / zitieren --> Unities abgeben:          Nur für magic_halli
Hallo, ein Fehler der mir am Anfang häufig passiert ist, ist, dass ich den Pfad zu den Textverzeichnissen nicht richtig angegeben habe. Es könnte auch sein, dass der Menü oder Buttonname (wenn er im Code geändert wurde), nicht im Textverzeichnis eingetragen wurde. Im CLASSPATH darf nur die pfc.jar stehen. Die pfcasync.jar wird nur bei asynchronen Programmen (<Info>Programme die ausserhalb von ProE gestartet werden und auf ProE zugreifen</Info> ) verwendet. Die install_test ist synchron und asynchron möglich. Aber immer nur entweder oder. Versuch aber erst mal das ganze mit synchronen Programmen. Ich hab noch eine für Java 1.4 kompiliert Variante fertig konfiguriert mit einer kleinen Anleitung angehängt. HTH Gruß, Günther
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
magic_halli Mitglied
 
 Beiträge: 361 Registriert: 03.07.2006 WF2 M210 / WF3 M110 Linux Fedora C4 WinXP Pro Java 1.6.0_06
|
erstellt am: 31. Jul. 2006 12:05 <-- editieren / zitieren --> Unities abgeben:         
Sehr geil, jetzt funktioniert die Button-Geschichte  !!! Hab einfach die Pfade geändert und fertig... Frage: Mit welcher IDE erstellst Du das ganze und wie kompilierst Du das? (Ich nehme Eclipse unter Unix.) Legst Du die Ordnerstrukturen selbst fest (build, src, text ...) oder wird das durch Deine IDE gehandelt? Die Frage deshalb, weil wenn ich mir nur Deine *.java-Files hernehme, ein neues Projekt anlege, dann über die Konsole mit "javac *.java" die Dinger kompiliere und *.class erhalte, die protk.dat anpasse und schließlich ProE starte - dann passiert gar nichts (kein Menüeintrag erscheint). Entweder bin ich wirklich zu doof oder gehe einfach falsch bei der Projekterstellung von ! Na eben... oder aber dürfte ich gar kein Projekt erstellen, sondern nur die *.java-Files letztendlich nur so schreiben??? Gruß Rico. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fussel Mitglied

 Beiträge: 39 Registriert: 08.02.2002 Pro|E Wildfire2.0 (Student) Windows 2000 SP4 AMD Athlon XP 2600+ ATI FireGL 8800 1024 MB RAM
|
erstellt am: 31. Jul. 2006 13:50 <-- editieren / zitieren --> Unities abgeben:          Nur für magic_halli
|
magic_halli Mitglied
 
 Beiträge: 361 Registriert: 03.07.2006 WF2 M210 / WF3 M110 Linux Fedora C4 WinXP Pro Java 1.6.0_06
|
erstellt am: 31. Jul. 2006 14:07 <-- editieren / zitieren --> Unities abgeben:         
Also: 1. neues Java-Projekt erstellen --> Name vergeben und Add externel JAR´s (pfc.jar) einbinden 2. new File --> neue Klasse hinzufügen 3. Quelltext erstellen 4. Run/Debug... Remote Java Application --> New 5. Debuggen: funktioniert soweit, nur dass immer die Meldung "failed to connect to remote VM. Connection refused." kommt!?! 6. per Konsole java-files kompilieren "javac *.java" (*.class-files werden aber eigentlich auch beim Debuggen erstellt - machs aber trotzdem meist nochmal per Hand) 7. protk.dat auf Pfade anpassen (8. hab mir nun angewöhnt Ordner wie build, scr uws. anzulegen) Erkenntnis: Hab festgestellt, dass ich zwingend einen Ordner text für die Textdatein brauche - sonst läuft die App in ProE nicht!?! Thats it! Diese Fehlermeldung von der VM scheint aber keine Auswirkung zu haben. Die kommt selbst bei einer standalone HelloWorld-Anwendung und diese läuft trotzdem einwandfrei! Gruß Rico.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GüntherP Mitglied CAD Administrator / Konstrukteur

 Beiträge: 82 Registriert: 18.02.2005 HP xw4100 NVIDIA Quadro 980XGL<P>Wildfire 2.0 / 3.0 Intralink 3.4 F000 PDMLink 8.0 M030
|
erstellt am: 31. Jul. 2006 14:13 <-- editieren / zitieren --> Unities abgeben:          Nur für magic_halli
Hallo, freut mich, dass es jetzt funktioniert . Ich verwende die Netbeans IDE. Ich hab auch kurze Zeit mit Eclipse gearbeitet. Mir persönlich gefällt die von Netbeans besser, aber das kann ja jeder machen wie er möchte. In der Demo sind nur einige der Verzeichnisse aus dem Projekt. Ich bin mir auch nicht sicher ob es überhaupt möglich ist, ein Netbeans Projekt in Eclipse zu importieren. Umgekehrt ist es aber möglich. Bei den IDE's muss man nur aufpassen, dass die auch wissen müssen, wo die pfc.jar Datei liegt. Sonst kann man es nicht kompilieren. Bei deinem Problem könnte ich mir nur vorstellen, dass etwas mit dem Textverzeichnis nicht richtig war (vorausgesetzt die Klassen wurden fehlerfrei kompiliert ) Gruß, Günther Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fussel Mitglied

 Beiträge: 39 Registriert: 08.02.2002 Pro|E Wildfire2.0 (Student) Windows 2000 SP4 AMD Athlon XP 2600+ ATI FireGL 8800 1024 MB RAM
|
erstellt am: 31. Jul. 2006 17:03 <-- editieren / zitieren --> Unities abgeben:          Nur für magic_halli
Hallo, @Guenther: bei mir war es gerade umgekehrt. Ich bin nach kurzer Netbeans Zeit zur Eclipse konvertiert . Mit dem Import von Netbeans Projekten in Eclipse bin ich mir gerade auch nicht sicher. Man kann aber auf jeden Fall ein neues Projekt aus bestehenden Quellcodes erzeugen (und dann die Bibliotheken per Hand dazufrickeln), das duerfte Rico ja erst mal genuegen. @Rico: wie ich schon vermutet hatte machst du schraege Sachen . Ich gehe das mal Schritt fuer Schritt durch. zu 1: OK, hier kannst du auch einstellen, in welche Ordner Eclipse Quellen (src) und Klassen (bin) legt. zu 2: OK zu 3: zu 4: da wir die Debug Connection spaeter ohnehin benutzen wollen ist es egal wann die definiert wird. Die sollte auch in deinem Workspace gespeichert werden und jederzeit wiederverwendbar sein. zu 5: gar nicht OK. Wir koennen erst debuggen wenn die Kiste laeuft. Daher auch die Fehlermeldung. In diesem Beitrag http://ww3.cad.de/foren/ubb/Forum12/HTML/011713.shtml#000017 habe ich ja schon den Java Startbefehl fuer Remote Applikationen beschrieben. Die Debug Connection in Schritt 4 muss also entsprechend konfiguriert werden. Den Debugger lassen wir erst loslaufen wenn die App. in Pro/E laeuft. zu 6: Warum kompilierst du mit der Konsole, wenn du mit ner IDE arbeitest. Vor allem da Eclipse ueber eine automatische Buildfunktion verfuegt: Deine App. wird immer dann compiliert, wenn du speicherst. Falls du die Funktion nicht magst, kannst du sie auch deaktivieren und stattdessen jedesmal "Build Project" druecken. zu 7: OK, beachte auch die gute Refactoring Funktion in Eclipse. Die aendert etwa den protk.dat Eintrag wenn du eine Klasse oder ein Package umbenennst. zu 8: diese Ordner koennen wie gesagt ganz am Anfang eingestellt werden. Ich lege je Projekt aber auch noch einen Ordner dat (fuer die protk.dat) und den text ordner an. Und uebrigens, du hoerst dich immer so an, also ob der text ordner laestig sei. Das Ding ist aber kein Bug sondern ein Feature! Ich empfehle dir, dein Projekt mit "ant" zu automatisieren. So lasse ich etwa die protk.dat an den richtigen Ort kopieren und das text verzeichnis ebenso. Dann wird aus den Klassen ein JAR gebastelt und auch an die richtige Stelle verschoben. Das spart Frust und Zeit, denn all deine Dateien sind schoen innerhalb der IDE bearbeitbar und erst zum Schluss verteilt man das Zeugs auf der Platte. Gruss Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |