| | |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo | | | |  | BOM Assistant für Stücklistenerstellung , eine App
|
|
Autor
|
Thema: Asynchroner Modus in Jlink (2319 mal gelesen)
|
diplomand2608 Mitglied Dipl.-Ing. (FH), Konstruktion & Produktentwicklung

 Beiträge: 18 Registriert: 24.10.2007 ProEngineer Wildfire 2.0 Intralink 3.3 Windows XP SP2
|
erstellt am: 25. Jan. 2008 14:08 <-- editieren / zitieren --> Unities abgeben:         
hallo zusammen, nachdem ich den installTest und den paramEditor im synchronen Modus gut zum laufen bekommen habe, möchte ich mich mit dem asynchronen modus beschäftigen. für meine aufgabe ist eine oberfläche für die parametereingabe geschaffen worden, dessen parameter an das proE modell übergeben werden. währen d der synchrone modus ja lediglich das arbeiten in der appliktation ODER im Modell erlaubt, kann ich ja im asynchronen Modus in beiden anwendungen gleichzeitig arbeiten und das bevorzuge ich hier an dieser stelle. jetzt hab ich die dokumentation zwar durchgearbeitet und wollte zumindest den asychronen installTest zum laufen kriegen, aber es funktioniert nicht. ich krieg immer die mitteilung, dass er die pfcasyncmt - library nicht findet. die umgebungsvariablen hab ich gesetzt, aber vielleicht liegt da noch der fehler: set CLASSPATH = %CLASSPATH%;C:\ptc\proeWildfire20\text\java\pfcasync.jar set PATH = C:\ptc\proeWildfire20\i486_nt\lib;%PATH% daher meine fragen: 1. sind die umgebungsvariablen so richtig? 2. hat jemand noch einige beispiele für eine asynchrone applikation 3. ergänzend zu 2. : einen genauen Quellcode, wie ich aus der anwendung heraus proE starten kann 4. kann ich mein problem vieleicht auch mit einer synchronen Anwendung lösen, da es heißt, dass der asynchrone Modus ziemlich zeitanfällig in seiner anwendung ist danke gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bilch Mitglied

 Beiträge: 78 Registriert: 01.02.2005
|
erstellt am: 25. Jan. 2008 15:59 <-- editieren / zitieren --> Unities abgeben:          Nur für diplomand2608
Hallo, Zitat: Original erstellt von diplomand2608: 1. sind die umgebungsvariablen so richtig? 2. hat jemand noch einige beispiele für eine asynchrone applikation 3. ergänzend zu 2. : einen genauen Quellcode, wie ich aus der anwendung heraus proE starten kann 4. kann ich mein problem vieleicht auch mit einer synchronen Anwendung lösen, da es heißt, dass der asynchrone Modus ziemlich zeitanfällig in seiner anwendung ist
zu 1. Die Syntax zum setzen von Umgebungsvariablen lautet so: set Variable=Zeichenfolge Mit den leerzeichen vor und nach dem Gleichheitszeichen klappt das nicht. zu 3.
Code: pfcAsyncConnection.AsyncConnection_Start( PROECOMMAND, TEXTPATH );
zu 4. Diese Frage kann ich schlecht beantworten, da ich nicht verstanden habe wie der Ablauf deines Programms sein soll.Gruss. [Diese Nachricht wurde von bilch am 25. Jan. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
diplomand2608 Mitglied Dipl.-Ing. (FH), Konstruktion & Produktentwicklung

 Beiträge: 18 Registriert: 24.10.2007 ProEngineer Wildfire 2.0 Intralink 3.3 Windows XP SP2
|
erstellt am: 28. Jan. 2008 08:46 <-- editieren / zitieren --> Unities abgeben:         
danke erst einmal für die antwort! zu 4. mein problem ist folgendes, ich habe eine oberfläche geschaffen, auf der parameter für einen nockenwellenversteller eingetragen werden sollen, diese parameter sollen nun je nach anwendungsfall vom benutzer verändert werden können, diese dann an das Modell übergeben werden und anschließend regeneriert sich dieses. Arbeiten im modell und auf der oberfläche sollten aber schon parallel durchgeführt werden können, so dass ich denke, dass sich der synchrone modus nicht anbietet??!! kannst du mir mal mitteilen, wie die methode run() aussehen muss, was muss ich ihr an variablen mitgeben, dass sich mein proE eben mit meinem entsprechenden modell öffnet?? oder reicht diese beispielapplikation aus, um das proE schon zum laufen zu bekommen?? Bisher habe ich dises applikation im eclipse eingebaut, krieg aber noch die fehlermeldung, dass die bibliothek ("pfcasyncmt") nicht gefunden wurde, aber dass kann an den fehlerhaften umgebungsvariablen liegen. Woher weiß denn jetzt diese applikation, dass sie mein proE öffnen soll, muss ich eventuell noch irgendetwas, ähnlich der protk.dat beim synchronen modus, erstellen und im proE einfügen?? import com.ptc.cipjava.jxthrowable; import com.ptc.pfc.pfcAsyncConnection.AsyncConnection; import com.ptc.pfc.pfcAsyncConnection.pfcAsyncConnection; import com.ptc.pfc.pfcModel.Model; import com.ptc.pfc.pfcModel.ModelDescriptor; import com.ptc.pfc.pfcModel.ModelType; import com.ptc.pfc.pfcModel.pfcModel; import com.ptc.pfc.pfcSession.Session; public class pfcAsyncStartExample { public static void main (String [] args) { System.loadLibrary("pfcasyncmt"); runProE(); } public static void runProE() { try { AsyncConnection connection = pfcAsyncConnection.AsyncConnection_Start("pro -g:no_graphics -i:rpc_input", null); Session session = connection.GetSession(); ModelDescriptor desc = pfcModel.ModelDescriptor_Create(ModelType.MDL_PART, "modelname", null); Model model = session.RetrieveModel(desc); connection.End(); } catch (jxthrowable x) { System.out.println("Exception: " + x); } } } danke und gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bilch Mitglied

 Beiträge: 78 Registriert: 01.02.2005
|
erstellt am: 28. Jan. 2008 09:28 <-- editieren / zitieren --> Unities abgeben:          Nur für diplomand2608
Hallo, Zitat: ... dass der asynchrone Modus ziemlich zeitanfällig ...
Das liegt daran, das die beiden einzelnen Prozesse mit Hilfe von RPC und JNI kommunizieren. RPC bei WikipediaJNI bei Wikipedia Zitat: Original erstellt von diplomand2608: ... diese parameter sollen nun je nach anwendungsfall vom benutzer verändert werden können, diese dann an das Modell übergeben werden und anschließend regeneriert sich dieses. Arbeiten im modell und auf der oberfläche sollten aber schon parallel durchgeführt werden können, so dass ich denke, dass sich der synchrone modus nicht anbietet??!!
synchron = Der Konstrukteur startet Pro/ENGINEER und arbeitet an einen nockenwellenversteller, dann entschließt er sich dazu die Parameter zu belegen und startet aus dem Menü heraus den Parameter Editor (ich meine deine Applikation). Nach dem er die Parameter entsprechend belegt hat, speichert er diese. Die Applikation schreibt die Parameter und lässt das Model regenerieren. Der Konstrukteur arbeitet weiter. asynchron = Ein Konstrukteur/Sachbearbeiter/Student startet ein Java-Programm und ein Dialog Fenster öffnet sich. Im Dialog Fenster wählt er die entsprechende Datei(Modell) aus und gibt Werte für Parameter ein. Danach klickt er auf den Button übernehmen. Die Java Applikation startet Pro/ENGINEER mit den Parametern und öffnet das Modell und passt die Parameter an. Anschließend regenerieren und Model abspeichern. (Pro/ENGINEER wieder beenden). Die Java Applikation erhält einen Return Code und der User das Feedback. ... Gruss
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
diplomand2608 Mitglied Dipl.-Ing. (FH), Konstruktion & Produktentwicklung

 Beiträge: 18 Registriert: 24.10.2007 ProEngineer Wildfire 2.0 Intralink 3.3 Windows XP SP2
|
erstellt am: 28. Jan. 2008 09:47 <-- editieren / zitieren --> Unities abgeben:         
zumindest zeigt er mir jetzt nicht mehr den fehler an, dass er die library nicht gefunden habe in der ausgabe krieg ich jetzt folgende Mitteilung: Exception: com.ptc.pfc.Implementation.pfcExceptions$XToolkitGeneralError was hat dieser Ausdruck zu bedeuten?? gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
diplomand2608 Mitglied Dipl.-Ing. (FH), Konstruktion & Produktentwicklung

 Beiträge: 18 Registriert: 24.10.2007 ProEngineer Wildfire 2.0 Intralink 3.3 Windows XP SP2
|
erstellt am: 28. Jan. 2008 09:54 <-- editieren / zitieren --> Unities abgeben:         
danke, erstmal noch für deine antwort!! was würdest du denn für einen modus empfehlen oder bevorzugen?? momentan krieg ich das mit den synchronen applikationen schon gut hin, aber nach deinen ausführungen würde ich eher zum asynchronen tendieren! aber es ist mit noch nicht so klar, wie ich das zum laufen krieg!! was muss ich denn in der zeile pfcAsyncConnection.AsyncConnection_Start für PROECOMMAND und TEXTPATH eingeben, um ProE zu starten! gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JLinker Mitglied CAD Administrator / Konstrukteur

 Beiträge: 36 Registriert: 10.03.2007 ProE Wildfire 2.0 M270 /3.0 M090 Intralink 3.4 M040 PDMLink 9.0 F000<P>HP xw4400 NVIDIA QuadroFX 1500 NVIDIA Treiber 84.80 WinXP SP2
|
erstellt am: 28. Jan. 2008 14:08 <-- editieren / zitieren --> Unities abgeben:          Nur für diplomand2608
Hallo, für den asynchronen Programmbetrieb hab ich folgende Pfade gesetzt: set PATH=C:\ptc\proeWildfire20\i486_nt\lib;C:\ptc\proeWildfire20\i486_nt\deflib;%PATH% set CLASSPATH=c:\ptc\proeWildfire20\text\java\pfcasync.jar;%CLASSPATH% (Beim Classpath die eigenen Klassen und JAR's nicht vergessen) set PRO_COMM_MSG_EXE=c:\ptc\proeWildfire20\i486_nt\obj\pro_comm_msg.exe
Was die Wahl zwischen synchron und asynchron betrifft kann ich dir nur empfehlen die Applikation so aufzubauen, dass beide Varianten möglich sind. Ich hab meine rein synchronen Zusatztools nachträglich auf den Dualbetrieb umgestellt. Der Vorteil für mich war, dass ich zum Testen ProE nicht immer neu starten muss (Mir ist schon klar, dass man JLink Programme auch über Tools > Hilfsapplikationen neu starten kann , das funktionert aber nach meiner Erfahrung nicht immer richtig ). Der ansychrone Modus hat auch einige Nachteile. Man kann (oder sollte) keine Trigger (z.b OnBeforeModelSave, usw.) verwenden, da die Kommunikation zwischen ProE und dem asynchronen Programm nicht oder nur sehr langsam läuft wodurch ProE ausgebremst wird. Eigene Menüs in ProE sind auch nicht zu empfehlen über den asynchronen Modus. Gruß, Günther
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
diplomand2608 Mitglied Dipl.-Ing. (FH), Konstruktion & Produktentwicklung

 Beiträge: 18 Registriert: 24.10.2007 ProEngineer Wildfire 2.0 Intralink 3.3 Windows XP SP2
|
erstellt am: 28. Jan. 2008 14:35 <-- editieren / zitieren --> Unities abgeben:         
hallo danke, dass mit den pfaden hat funktioniert, krieg jetzt beim starten der applikation aus eclipse heraus in der ausgabe nun die meldung: Exception: com.ptc.pfc.Implementation.pfcExceptions$XToolkitGeneralError was hat dieses com.ptc.pfc.Implementation.pfcExceptions$XToolkitGeneralError zu bedeuten?? mal eine generelle frage, wenn ich aus proE heraus programme wie ansys starte, dann ist das ja auch ein programm, welches mit proE in der hinsicht zusammenarbeitet, dass es die modellstruktur zur Überprüfung an ansys übergibt. Wie sind diese beiden programme denn dann miteinander verbunden?? auch über einen synchronen oder asynchronen modus?? ich möchte ja auch ein programm haben, bei dem ich parameter eingebe(siehe bild) und sie dann zur weiterverarbeitung ans proE übergebe. und ir passt ja auch der synchrone modus soweit, nur dass ich meine applikation schließen muss, um im Modell zu arbeiten, wenn ich dann wieder in der applikation arbeiten möchte, muss ich sie wieder öffnen, anstelle die ganze zeit parallel zu arbeiten! gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JLinker Mitglied CAD Administrator / Konstrukteur

 Beiträge: 36 Registriert: 10.03.2007 ProE Wildfire 2.0 M270 /3.0 M090 Intralink 3.4 M040 PDMLink 9.0 F000<P>HP xw4400 NVIDIA QuadroFX 1500 NVIDIA Treiber 84.80 WinXP SP2
|
erstellt am: 28. Jan. 2008 16:24 <-- editieren / zitieren --> Unities abgeben:          Nur für diplomand2608
Die Exception bedeutet, dass an deinem Programm oder am Programmaufruf etwas faul ist. Meistens sind es Systempfade oder Textdateien die fehlen oder falsch sind. deshalb noch die Frage, ob in deiner PATH Variabe die Verzeichnisse c:\ptc\proewildfire20 und c:\ptc\proewildfire20\bin sind und ob das die einzige ProE Version auf dem Rechner ist. Die Schnittstelle zu Ansys arbeitet sowohl im synchronen als auch im asynchronen Modus. Wenn man ProE startet und den Eintrag zur Ansys Toolkitapplikation in der config.pro hat, bekommt man ein eigenes Menü. In diesem Menü kann man die Geometriedaten entsprechend übertragen. Man kann aber auch aus Ansys heraus auf eine laufende ProE Sitzung zugreifen und sich so die Geometrie holen. Ich kann mir gut vorstellen, dass es der gleiche Kern für die Schnittstelle ist und nur vom synchronen oder asynchronen Teil aufgerufen wird. Für deine Aufgabenstellung solltest du Entscheiden, ob man am Modell Änderungen machen darf während man in deiner Applikation Änderungen eingibt. Wenn das der Fall sein sollte ist das asynchrone Programm besser geeignet. Wenn du aber verhindern möchtest, dass während der Eingaben in deinem Programm Änderungen im Modell gemacht werden dürfen ist das synchrone Prgramm besser, da die Dialogfenster die von JLink aus erzeugt werden modal (alle ProE Eingaben sind gesperrt, nur der Dialog ist aktiv) sein müssen. Hier habe ich noch eine run Methode die eine ProE Sitzung und anschließend ein Teil aus den Arbeitsverzeichnis öffnet. Die Übergabeargumente hab ich mal weggelassen. Code:
public void run () { try { System.loadLibrary("pfcasyncmt"); AsyncConnection curConnection = pfcAsyncConnection.AsyncConnection_Start("c:/ptc/proeWildfire20/bin/proe1.bat", null); Session curSession = curConnection.GetSession (); if (curConnection.IsRunning ()) { try { ModelDescriptor md = pfcModel.ModelDescriptor_Create(ModelType.MDL_PART, "mypart.prt", null); Model model = curSession.OpenFile(md).GetModel(); } catch (Exception err) { System.out.println(err); } } } catch (Exception err) { System.out.println ("Main Exception: " + err); } }
Gruß, Günther Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
diplomand2608 Mitglied Dipl.-Ing. (FH), Konstruktion & Produktentwicklung

 Beiträge: 18 Registriert: 24.10.2007 ProEngineer Wildfire 2.0 Intralink 3.3 Windows XP SP2
|
erstellt am: 28. Jan. 2008 16:36 <-- editieren / zitieren --> Unities abgeben:         
|
diplomand2608 Mitglied Dipl.-Ing. (FH), Konstruktion & Produktentwicklung

 Beiträge: 18 Registriert: 24.10.2007 ProEngineer Wildfire 2.0 Intralink 3.3 Windows XP SP2
|
erstellt am: 03. Mrz. 2008 11:26 <-- editieren / zitieren --> Unities abgeben:         
leider klappt das mit dem asynchronen modus immer noch nicht so einwandfrei.. kann ich auch bauteile aus dem intralink direkt über die methode aufrufen oder müssen diese vorher andeswo abgespeichert werden?? die proe.bat datei im oberen beispiel, um was für eine datei handelt es sich da direkt?? ich krieg nämlich immer noch folgende fehlermeldung angezeigt: com.ptc.pfc.Implementation.pfcExceptions$XToolkitGeneralError über eine kleine hilfe würde ich mich nochmal freuen.
gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |