| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
Autor
|
Thema: ProE zu langsam für J-Link Abarbeitung??? (1243 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: 18. Aug. 2006 14:22 <-- editieren / zitieren --> Unities abgeben:
Hi, ein ganz komisches Ding passiert hier. Ich lasse ein J-Link Programm in ProE laufen, welches mir zu einem prt die zugehörige drw öffnet, dann daraus ein pdf und eine dxw erzeugt und danach die drw (bzw. das Window) wieder schließt.
Code:
if(<meine Bedingung - ist erfüllt!!!> ){ ModelDescriptor openDrw = pfcModel.ModelDescriptor_Create(ModelType.MDL_DRAWING, drwName, null); Model mymodel = curSession.RetrieveModel(openDrw); Window win = curSession.CreateModelWindow(mymodel); win.Activate(); createPDF(curSession, mymodel,setFilename_PDF(model)); createDXF(mymodel, setFilename_DXF(model)); win.Close(); }
Erklärung: -ModelDescriptor zur drw erzeugen -Model laden -neues Window für Model erzeugen -Window aktivieren -Funktionen zur pdf- und dxf-Erstellung aufrufen -Window schließenAllerdings ist die Abarbeitung so schnell (für ProE wohl zu schnell??), dass die beiden Funktionen (pdf+dxf erstellen) gar nicht erst ausgeführt werden, weil sich forher das Window schon wieder schließt!!! Wenn ich die Zeile win.Close() rausnehme, dann gehts die Erstellung! Wieso ist das wohl so? Ich sitze hier schon Ewigkeiten an dieser Stelle und komme einfach nicht voran - HILFE!!! 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: 18. Aug. 2006 15:15 <-- editieren / zitieren --> Unities abgeben: Nur für magic_halli
Hi, da musst du - soweit ich das einschaetzen kann - wohl mit "Threads" ran. Damit funktionieren Dinge wie gleichzeitige Ausfuehrung, bedingte Ausfuehrung, etc.. Leider habe ich selbst aber noch keine grosse Erfahrung mit Threads, und darueber hinaus wollen wir das cad.de Forum ja nicht in ein Java Forum verwandeln. Daher verweise ich mal auf das Buch von Christian Ullenboom das es auch kostenlos als Onlineversion gibt. Gruss Martin 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: 19. Aug. 2006 09:14 <-- editieren / zitieren --> Unities abgeben: Nur für magic_halli
Hi, bei mir funktioniert so ein Ablauf. Ich habe vor kurzem begonnen, ein Programm zum Exportieren von Zeichnungen und 3D Daten (derzeit in Arbeit) für Prototypbestellungen zu entwickeln. Der Ablauf dürfte ähnlich sein. Hier ist eine kurze Beschreibung meiner Funktionen: 1. Über eine GUI kann man verschiedene Formate und Nachbearbeitungen wählen 2a. Wenn das aktuelle Modell ein Part ist, kann man ein PS, DXF usw von der Zeichnung exportieren. 2b. Wenn das aktuelle Modell eine Zeichnung ist, kann man PS, DXF usw exportieren. Zusätzlich kann man, wenn das Zeichnungsmodell eine Baugruppe ist, von allen Einzelteilen und Unterbaugruppen die Zeichnung exportieren. 2c. Wenn das aktuelle Modell eine Baugruppe ist, kann von jedem Einzelteil und Unterbaugruppe die Zeichnung exportiert werden. 3. Zusätzlich kann man die Farbe der DXF's auf schwarz/weiß ändern und noch zusätzlich eine speziell formatierte DXF Zeichnung für unsere Laserschneidanlage generieren. Das Öffnen des Modells würde ich nicht über ein Window Objekt machen, da ProE damit Probleme hat und gelegentlich abstürzt. Ich öffne Zeichnungen mit dieser Methode (die wurde mir von PTC vorgeschlagen):
Code:
// Methode der Klasse pDrawing // Öffnen einer DRW zu einem Model public Model findExistingDrawing (Model curModel) { try { ModelDescriptor existDrw = pfcModel.ModelDescriptor_Create (ModelType.MDL_DRAWING, curModel.GetFullName(), null); Model model = curSession.RetrieveModel(existDrw); model.Display(); return model; } catch (Exception ierr) { } return null; }
Hier ist meine Methode zum Exportieren von DXF Dateien:
Code:
// Methoden der Klasse pExport // Dateien aufräumen, wenn sie existieren private void cleanup (File f) { if (f.exists()) f.delete(); } // DXF exportieren, Returnwert wird nicht berücksichtigt public boolean exportDXF (Drawing curDrw, int sheet) { try { DXFExportInstructions export = pfcModel.DXFExportInstructions_Create(); curDrw.SetCurrentSheetNumber(sheet); File sheet1 = new File(dirname + "/" + curDrw.GetFullName() + "_" + sheet + ".dxf"); cleanup(sheet1); // Log Daten können gelöscht werden, müssen aber nicht cleanup(new File (dirname + "/" + curDrw.GetFullName() + "_" + sheet + "_dxf__out.log.1")); curDrw.Export(sheet1.toString(), export); return true; } catch (Exception err) { } return false; }
Es ist sehr wichtig, dass bestehende DXF gelöscht werden, bevor man neue exportiert. Wenn ich also ein Part exportieren möchte: Code:
// Part Export public void exportPRT (Model exModel) { try { pDrawing pd = new pDrawing(); // Suche des DRW Modells Model model = pd.findExistingDrawing(exModel); if (model != null) { exportDRW((Drawing)model); model.Erase(); } } catch (Exception err) { } } // Drawing Export public void exportDRW (Drawing exModel) { try { pExport exp = new pExport(); // Modell und Seite zum exportieren angeben exp.exportDXF(exModel, 1); } catch (Exception err) { } }
Das sind in vereinfachter Form die wichtigsten Methoden. Ich hoffe die können dir ein bisschen weiterhelfen. 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: 21. Aug. 2006 13:43 <-- editieren / zitieren --> Unities abgeben:
Erstmal danke... habe hierdurch wieder neue Anregungen bekommen (und Du Unities ). Die dxf-Erstellung funktioniert soweit. Frage noch dazu: Ich lasse mir den Dateinnamen des dxf generieren (Sachnr__Menge__Blechdicke__Werkstoff.dxf). Kann es sein, dass das speichern der dxf nicht funktioniert, wenn ein Punkt im Dateinamen vorkommt - ausser natürlich vor der Dateiendung? Was mich interessieren würde: wie erstellst Du ein *.ps-File aus der geöffneten Zeichnung??? Wie leitest Du dann daraus ein pdf ab (wenn Du das überhaupt machst)? Ich hab hierfür ein Macro, nur das geht irgendwie nicht auf die geöffnete drw. Es fehlen in der geöffneten drw unter Datei/Drucken... die entsprechenden Einstellungen bzw. meine vordefinierte pcf-Datei (die wird einfach nicht angezeigt) - und darauf geht aber nun mal mein Macro! Gruß Rico. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael 18111968 Moderator F&E & CAD
Beiträge: 4893 Registriert: 25.07.2002 Wildfire 4 M220 (+SUT 2012) PDMLink 9.1 M050 NVIDIA Quadro FX 1700 Intel DualCore E8400 / 8GB WinXP 64 Prof. SP2
|
erstellt am: 21. Aug. 2006 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für magic_halli
|
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: 21. Aug. 2006 16:19 <-- editieren / zitieren --> Unities abgeben: Nur für magic_halli
Zitat: Original erstellt von magic_halli: [i] Kann es sein, dass das speichern der dxf nicht funktioniert, wenn ein Punkt im Dateinamen vorkommt - ausser natürlich vor der Dateiendung?[i]
Wahrscheinlich Prüfe auch auf die Länge des Filenamen (evtl. nur 31 Charakter) ------------------ Servus Alois 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: 21. Aug. 2006 16:34 <-- editieren / zitieren --> Unities abgeben: Nur für magic_halli
Hallo, bei der Zeichenlänge könnte was dran sein, habs aber nicht getestet. Ich denke alles man man üder "Kopie speichern" erzeugen kann, sollte kein Problem machen. Versuch mal eine DXF mit deinem Namen händisch anzulegen. Ich erzeuge Postscripts über die Export Funktion von JLink. Die ps Dateien werden in ein Verzeichnis gespeichert das von einem Acrobat Distiller Prozess überwacht wird. Der haken bei der Sache ist, dass ich noch nicht sinnvoll herausfinden kann, wann die pdf Datei fertig ist. Zusätzlich gibts noch ein kleines Problem bei A4 Hochformat Zeichnungen. Die können anscheinend mit JLink als ps nicht richtig exportiert 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: 22. Aug. 2006 07:53 <-- editieren / zitieren --> Unities abgeben:
So, ich hab jetzt durchgetestet, was die Länge des Dateinamen anbelangt: Bis zu einer Länge von 39 Zeichen wird eine Datei (hier dxf-Datei) abgespeichert. Es darf im Dateinamen kein Punkt, Leerzeichen und keine @-Zeichen (ist mir so aufgefallen ) vorkommen. Ansonsten gibts Probleme beim speichern, d.h. es wird dann lediglich der <Dateiname der drw>.dxf gesetzt! Soweit mein Test... 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: 22. Aug. 2006 08:03 <-- editieren / zitieren --> Unities abgeben:
wichtiger Nachtrag: der eigentliche Nachtrag (nach Edit von mir entfernt!) hat sich erledigt - sorry für den dummen Post an dieser Stelle! [Diese Nachricht wurde von magic_halli am 22. Aug. 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: 24. Aug. 2006 12:02 <-- editieren / zitieren --> Unities abgeben: Nur für magic_halli
Hallo Rico, hier ist eine Klasse die dir bei deinem Assembly Problem weiterhelfen sollte. Es kann aber sein, dass sie nicht ganz kompilierbar ist, weil ich die Klasse aus meiner Bibliothek kopiert habe und ein paar Kleinigkeiten verändern musste. Die Funktion ist aber gleich geblieben. 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: 24. Aug. 2006 14:08 <-- editieren / zitieren --> Unities abgeben:
1000 Dank... ich war schon auf dem richtigen Wege (mit der rekursiven Herangehensweise), aber hier bekomme ich echt noch ne Menge Anregungen bzw. Verbesserungen mit auf den Weg!!! Allerdings, so hab ich festgestellt, fehlt mir echt noch bisl das Background-Wissen über die ganzen Jlink-Methoden zu ProE. Aber dafür, dass ich seit ca. 6 Wochen erst an Jlink sitze, bin ich ganz zufrieden soweit . Also Danke nochmals... Gruß Rico. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |