Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Pro ENGINEER
  JLink: Probleme mit aktualisieren der View Transform 3D

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: Probleme mit aktualisieren der View Transform 3D (579 mal gelesen)
Auron
Mitglied


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

Beiträge: 3
Registriert: 04.09.2006

Pro/ENGINEER Wildfire 2.0
JRE 1.5
JDK 1.5
Win XP auf verschiedenen Laptops / Tablet PC's

erstellt am: 04. Nov. 2006 18: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 Pro-E Gemeinde:

Ich "darf" zur Zeit an einem Projekt programmieren das die JLink Schnittstelle von Pro-E benutzt.

Es geht hier bei um die Version 2.0 von Pro ENGINEER.

Im eigentlichen Projekt wird eine Asynchrone Verbindung mit Pro-E aufgebaut. Wobei genau ein aktives Modell geladen sein muss.

Die gundlegende Initialisierung ist bei mir wie folgt:

Code:

String dllname = "pfcasyncmt";
System.loadLibrary(dllname);
pfcAsyncConnection.AsyncConnection_Connect(null, null, null, null);
        m_pProEConnection = pfcAsyncConnection.AsyncConnection_GetActiveConnection();
m_pProESession = m_pProEConnection.GetSession();
m_pProEWindow = m_pProESession.GetCurrentWindow();
m_pProEModelView = m_pProEWindow.GetModel().GetCurrentView();

In diesem Teil des Projektes geht es darum, die TransformationsMatrix (Model) des Views in nahezu Echtzeit zu aktualisieren. Wobei die Aktualisierung zur Zeit in Abständen von 200 Millisekunden aufgerufen wird.

Hier der gundlegende Code-Ausschnitt:

Code:

m_pProEModelView.SetTransform(pfcBase.Transform3D_Create(MultAB(HMori, Mori)));
m_pProEWindow.Refresh();

wobei ich nach kurzer Zeit eine Exception geworfen bekomme:

Code:
com.ptc.pfc.Implementation.pfcExceptions$XToolkitBadInputs

um auszuschließen das es an den übergebenen Daten liegt, habe ich den Code zu Testzwecken so modifiziert:

Code:

m_pProEModelView.SetTransform(m_pProEModelView.GetTransform());
m_pProEWindow.Refresh();

leider bekomme ich hier genau die gleiche Exception geworfen !?
Man sollte dazu sagen das sich der View des Models am Anfang auch wie gewünscht ändert, allerdings nach kurzer Zeit eben nur noch diese Exception geworfen wird.

Kann mir jemand diesen Sachverhalt erklären oder mir Tips dazu geben warum die Exception geworfen wird oder am besten natürlich was ich hier falsch mache. :-)

Mfg Torsten

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

GüntherP
Mitglied
CAD Administrator / Konstrukteur


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

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: 04. Nov. 2006 19: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 Nur für Auron 10 Unities + Antwort hilfreich

Hallo,


kommt die Exception immer an der gleichen Stelle, sprich, sind die Daten mit der dur die Transformation erstellst in Ordnung? Ich nehme an, der Ablauf ist über eine Schleife. Du könntest dir also eine Zähler ausgeben, bei welchem Schritt er abbricht. Wenn's immer der gleich ist, ist die Transformation nicht OK.


Läuft das Ganze durch, wenn du die Zeit zum Refresh testweise verlängerst. Vielleicht bricht ProE ab, weil es mit etwas anderem beschäftigt ist. Hier kann man auch vergleichen bis zu welchem Schritt er kommt.


Gruß,
Günther

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

Auron
Mitglied


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

Beiträge: 3
Registriert: 04.09.2006

Pro/ENGINEER Wildfire 2.0
JRE 1.5
JDK 1.5
Win XP auf verschiedenen Laptops / Tablet PC's

erstellt am: 04. Nov. 2006 20: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

Hi

Zitat:
kommt die Exception immer an der gleichen Stelle, sprich, sind die Daten mit der dur die Transformation erstellst in Ordnung? Ich nehme an, der Ablauf ist über eine Schleife. Du könntest dir also eine Zähler ausgeben, bei welchem Schritt er abbricht. Wenn's immer der gleich ist, ist die Transformation nicht OK.

Wenn ich die eigentlich errechnete Transformation benutze ( wobei ich zu r Zeit nur einen Testwert dazu verwende ) kommt die Exception nur seh unregelmäßig. Z.B.:

0 --> Exception
1 --> i.O
2 --> i.O
3 --> i.O
4 --> Exception
5 --> Exception
6 --> i.O
7 --> Exception

usw. und so fort.

Zitat:
Läuft das Ganze durch, wenn du die Zeit zum Refresh testweise verlängerst. Vielleicht bricht ProE ab, weil es mit etwas anderem beschäftigt ist. Hier kann man auch vergleichen bis zu welchem Schritt er kommt.

Habe zwischen den Refreshs nun ein Delay von knapp ner Sekunde eingebaut.

Das komische Ist das wenn ich die Transformation einfach mit getTransformation bekomme und sie auch gleich wieder setze ( also nicht verändere ) dann bekomme ich ständig Exceptions geworfen.

Echt merkwürdig.

Mfg Torsten

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

Auron
Mitglied


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

Beiträge: 3
Registriert: 04.09.2006

Pro/ENGINEER Wildfire 2.0
JRE 1.5
JDK 1.5
Win XP auf verschiedenen Laptops / Tablet PC's

erstellt am: 07. Nov. 2006 19:22    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!

Da ich nun neue Erkenntnisse habe, möchte ich diese nun auch hier posten.

Also ich konnte zumindest die Exceptions beim Aufruf der View.SetTransform(...) Methode verhindern.
Zum einen durch das Update auf Pro-E Wildfire 3 und zum anderen
durch das ausschalten der Bewegungsanimationen, wenn die View Transformation geändert wird. Diese Animation sollte beim often
aufrufen der View.SetTransform(...) Methode auf jeden Fall deaktiviert werden.

Zu finden ist diese Einstellung unter:

Ansicht->Darstellungseinstellungen->Modelldarstellung

Animationen während Neuorientierung->Häkchen bei Animation während Neuorientierung wegmachen

Das muss man natürlich nicht immer wieder neu machen, sondern kann die ganze Aktion auch als Mapkey speichern.


Leider kommt es vor das Aufrufe an ProE stecken bleiben und somit das Programm beendet werden muss. Das geschieht auch bei dem Aufruf von View.SetTransform(...). Leider ist der Fehler nicht reproduzierbar noch bekomme ich Ausgaben die überhaupt einen Fehler andeuten. Die Häufigkeit ist auch sehr unterschiedlich.
Auch kann es vorkommen das die pro_comm_msg.exe plötzlich doppelt vorhanden ist und somit das Session Objekt nicht mehr benutzt werden kann.

Die ganze asynchrone Applikation die nun mal viele Aufrufe an die Pro-E JLink Schnittstelle beinhaltet, läuft somit äußert instabil.

Gibt es hier erfahrene JLink Programmierer die mir Tips geben könnten wie man die Stabilität einer asynchronen JLink Applikation erhöhen kann.

Folgende Methoden sind mir aufgefallen:

Window.GetModel()
Model.Export()
View.SetTransform()

Würde mich freuen, wenn jemand was zu dem Thema schreiben könnte.

Vielen Dank schonmal im vorraus.

Mfg Torsten

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)2024 CAD.de | Impressum | Datenschutz