| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
| | |
 | Effiziente Migration nach PTC Windchill: Software Factory stellt Migration Factory für komplexe Transformationsprojekte vor, eine Pressemitteilung
|
|
Autor
|
Thema: DXF-Ausleitung 1:1 (2353 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: 10. Aug. 2006 07:42 <-- editieren / zitieren --> Unities abgeben:         
Hi, ich habe eine kleine Funktion, welche mir aus einer drw eine dxf erzeugt. Allerdings erzeugt es mir quasi die Zeichnung analog als dxf, also mit Zeichnungsrahmen, Schriftfeld etc. Die Ausleitung soll im Maßstab 1:1 erfolgen und nur in der Ansicht von vorn - ohne all den anderen Schnickschnack. Hier mal mein Code:
Code:
//filename wird später übergeben werden String filename = "TestFileName"; com.ptc.pfc.pfcModel.DXFExportInstructions dxfexportinstructions = pfcModel.DXFExportInstructions_Create(); model.Export(filename, dxfexportinstructions);
Die API gibt nicht viele Zusatzinfos her... gibts da Möglichkeiten, meine Vorgaben umzusetzen??? Danke, Rico. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hagen123 Ehrenmitglied V.I.P. h.c. Application Specialist
     
 Beiträge: 2312 Registriert: 12.11.2000 Pro/Engineer Wildfire 4 Pro/Intralink 3.4
|
erstellt am: 10. Aug. 2006 07:58 <-- editieren / zitieren --> Unities abgeben:          Nur für magic_halli
... dxf's koennen nicht ansichtsbezogen gespeichert werden, ich sage no go, ausser manuell hand anlegen (also nicht gewuenschte anischten loeschen). ueber folien viel zu kompliziert, da dann ueber schnappschuss zu gehen ist... ... so long Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
U_Suess Moderator CAD-Admin / manchmal Konstrukteur
       

 Beiträge: 10679 Registriert: 14.11.2001 CREO 8.0.6.0 (+Geniustool für Creo 10.0.1) PDMLink 12.0.2.8 NTSI Contender E64 SC8 mit NVIDIA Quadro P4000 Intel Core i7-10700KF / 3,80 GHz 64GB DDR4-RAM / 2933 MHz Win 10 Prof. 64Bit
|
erstellt am: 10. Aug. 2006 08:10 <-- editieren / zitieren --> Unities abgeben:          Nur für magic_halli
Zitat: Original erstellt von magic_halli: gibts da Möglichkeiten, meine Vorgaben umzusetzen???
erzeuge dir ein zusätzliches Blatt mit der gewünschten Ansicht und ohne Rahmen und das kannst du dann auch als dxf ausgeben ------------------ Gruß Udo Keine Panik, Du arbeitest mit Pro/E! Und Du hast cad.de gefunden! 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: 10. Aug. 2006 11:08 <-- editieren / zitieren --> Unities abgeben:         
Zitat: erzeuge dir ein zusätzliches Blatt mit der gewünschten Ansicht und ohne Rahmen und das kannst du dann auch als dxf ausgeben
Geht das komplett mit JLink zu realisieren??? Ich will/kann später nicht mehr mit der Hand rumhantieren, da dies ein Automatismus werden soll. [Diese Nachricht wurde von magic_halli am 10. Aug. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hagen123 Ehrenmitglied V.I.P. h.c. Application Specialist
     
 Beiträge: 2312 Registriert: 12.11.2000 Pro/Engineer Wildfire 4 Pro/Intralink 3.4
|
erstellt am: 10. Aug. 2006 11:25 <-- 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: 10. Aug. 2006 11:30 <-- editieren / zitieren --> Unities abgeben:         
|
U_Suess Moderator CAD-Admin / manchmal Konstrukteur
       

 Beiträge: 10679 Registriert: 14.11.2001 CREO 8.0.6.0 (+Geniustool für Creo 10.0.1) PDMLink 12.0.2.8 NTSI Contender E64 SC8 mit NVIDIA Quadro P4000 Intel Core i7-10700KF / 3,80 GHz 64GB DDR4-RAM / 2933 MHz Win 10 Prof. 64Bit
|
erstellt am: 10. Aug. 2006 11:45 <-- editieren / zitieren --> Unities abgeben:          Nur für magic_halli
Zitat: Original erstellt von magic_halli: Geht das komplett mit JLink zu realisieren???
isch nix wissen, isch Konstrukteur und machen alles mid de Hand Wenn es im Modell ordentlich definiert ist (Ansicht vorn ist bei den entsprechenden Modellen die richtige) kann man das vielleicht sogar über eine Zeichnungsschablone definieren. Problematisch wird es warscheinlich nur, wenn die Anzahl der Blätter einer solchen Zeichnung variiert. ------------------ Gruß Udo Keine Panik, Du arbeitest mit Pro/E! Und Du hast cad.de gefunden! 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: 10. Aug. 2006 11:47 <-- editieren / zitieren --> Unities abgeben:          Nur für magic_halli
Ich hab zwar so etwas noch nicht gemacht, sollte aber möglich sein. -> Neue Seite mit JLink anlegen ist kein Problem -> Neue Ansicht anlegen funktioniert auch mit JLink (laut API). Das komplizierte daran ist, dass man eine Orientierung für die Ansicht braucht. Entweder man verwendet eine vordefinierte Ansicht oder man nimmt die Ausrichtung von einer auf der ersten Seite. Zu diesem Thema gibt es auch ein Beispiel in der API -> Der Export bleibt gleich. Gruß, Günther
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: 10. Aug. 2006 12:24 <-- editieren / zitieren --> Unities abgeben:          Nur für magic_halli
Zitat: Original erstellt von hagen123: ... nein
@hagen WF2 ist um Optionen für Zeichnungen in den freien ToolKit-Anwendungen (J-LINK,WebLINK) erheblich erweitert worden. Wie Günther schreibt sollte es gehen. Einfach mal die Beispiele hernehmen und erweitern oder modifizieren. Über Erfolgsmeldungen freuen wir uns und belohnen entsprechenden CODE auch mit U's ------------------ Servus Alois 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: 11. Aug. 2006 07:50 <-- editieren / zitieren --> Unities abgeben:         
So, hab´s jetzt erstmal soweit gebracht, das ich eine neue Zeichung aus einer geöffneten prt heraus erstelle. Code:
//create a new drawing - using predefined template Drawing draw; String filename = model.GetFullName(); String template = "brennteil"; DrawingCreateOptions options = DrawingCreateOptions.create(); options.insert(0,DrawingCreateOption.DRAWINGCREATE_DISPLAY_DRAWING); //create the required drawing draw = curSession.CreateDrawingFromTemplate(filename+"_test",template,model.GetDescr(),options);
Jetzt sehe ich eine Zeichnungsausleitung im Maßstab 1:1 (steht zumindest unter dem Teil in der neuen Zeichnung). Allerdings ist jetzt keine Option im Menü Datei mehr wählbar, ausser "Fenster schließen". Aber nichts mit "Kopie speichern", um eine dxf zu speichern! Gut, ich schließe das eben erzeugte Zeichnungsfenster und will nochmals die Zeichnungserstellung der prt ausführen, doch jetzt erhalte ich einen Error: "com.ptc.pfc.Implementation.pfcExceptions$XToolkitFound"! Na toll... Was is da los??? (wird da evtl. noch irgendwas im Speicher gehalten?)[Diese Nachricht wurde von magic_halli am 11. Aug. 2006 editiert.] [Diese Nachricht wurde von magic_halli am 11. 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: 11. Aug. 2006 08:10 <-- 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: 11. Aug. 2006 08:17 <-- editieren / zitieren --> Unities abgeben:         
Mhhh... ich denke schon. ich schließe ja ProE nicht zwischendrin. Nach erneutem ProE-Start funktioniert die Erstellung wieder genau 1 mal. Zum Verständnis: eine Sitzung ist quasi einmal ProE starten und dann hantieren - egal wieviel neue prt´s, drw´s etc. ich offen habe (so denke ich das)!? 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: 11. Aug. 2006 08:40 <-- editieren / zitieren --> Unities abgeben:          Nur für magic_halli
Versuch doch mal das Modell bevor du die Zeichnung erzeugtst aus der Sitzung zu löschen. Code:
Session curSession = pfcGlobal.GetProESession(); ModelDescriptor descr = pfcModel.ModelDescriptor_Create(ModelType.MDL_DRAWING, DRWNAME, null); Model model = curSession.GetModelFromDescr(descr); try { model.Erase(); } catch (Exception err) { }
Damit sollte das Modell aus der Sitzung gelöscht werden. "DRWNAME" ist dabei der Name der Zeichnung ohne .drw Gruß, Günther [Diese Nachricht wurde von GüntherP am 11. Aug. 2006 editiert.] 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: 11. Aug. 2006 09:48 <-- editieren / zitieren --> Unities abgeben:         
...Das geht nicht gut, d.h. es wird mir aus dem geöffneten prt eine Zeichnung erstellt, aber durch das Erase() wird im nächsten Moment das Model aus der Zeichnung gelöscht und ProE beendet sich von allein! Hier mal mein geänderter Code: Code:
public void test(Session curSession, Model model) throws jxthrowable{ String filename = model.GetFullName(); String template = "brennteil"; ModelType modeltype = model.GetType(); ModelDescriptor descr = pfcModel.ModelDescriptor_Create(modeltype, filename, null); Model curModel = curSession.GetModelFromDescr(descr); try{ //create a new drawing - using predefined template curModel.Erase(); Drawing draw; DrawingCreateOptions options = DrawingCreateOptions.create(); options.insert(0,DrawingCreateOption.DRAWINGCREATE_DISPLAY_DRAWING); //create the required drawing draw = curSession.CreateDrawingFromTemplate(filename+"_test",template,descr,options); } catch(Exception err){ log(err.toString()); JOptionPane.showMessageDialog(null, err.toString()); } }
Sorry, aber mir ist irgendwie nicht ganz klar, für was ich diesen ModelDescriptor brauche .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: 11. Aug. 2006 10:18 <-- editieren / zitieren --> Unities abgeben:          Nur für magic_halli
Uups, das hab ich wohl zu kurz beschrieben. Versuchs mal so: Code:
public void test(Session curSession, Model model) throws jxthrowable{ String filename = model.GetFullName(); String template = "brennteil"; ModelType modeltype = model.GetType(); ModelDescriptor descr = pfcModel.ModelDescriptor_Create(ModelType.MDL_DRAWING, filename, null); Model drawing = curSession.GetModelFromDescr(descr); try{ //create a new drawing - using predefined template drawing.Erase(); Drawing draw; DrawingCreateOptions options = DrawingCreateOptions.create(); options.insert(0,DrawingCreateOption.DRAWINGCREATE_DISPLAY_DRAWING); //create the required drawing draw = curSession.CreateDrawingFromTemplate(filename,template,descr,options); } catch(Exception err){ log(err.toString()); JOptionPane.showMessageDialog(null, err.toString()); } }
Du musst vorher das Drawing Modell löschen. Die Drawing wird durch den ModelDescriptor beschrieben. Du hast dort den ModelType vom übergebenen Modell angegeben. Damit wird aber auch dieses Modell aus der Sitzung gelöscht und nicht die Drawing. Ich hoffe das ist jetzt so besser erklärt. 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. Aug. 2006 10:31 <-- editieren / zitieren --> Unities abgeben:         
Hallo, nochwas zu diesem Thema mit dxf im Mapstab 1:1... Ich erstelle mir nun aus einem geöffneten Teil eine Zeichnung anhand einer Zeichnungsvorlage (klappt 1a):
Code:
String filename = model.GetFullName(); String filenamedxf = setFilename_DXF(model); String template = "brennteil";//create a new drawing - using predefined template DrawingCreateOptions options = DrawingCreateOptions.create(); options.insert(0,DrawingCreateOption.DRAWINGCREATE_DISPLAY_DRAWING); //create the required drawing Drawing draw = curSession.CreateDrawingFromTemplate(filename+"_temp",template,drawing.GetDescr(),options); //"neues" Model ist die temporäre Zeichnung Model mymodel = (Model)draw; //dxf erzeugen createDXF(mymodel,filenamedxf); ...
Wenn ich in der Zeichnungsvorlage den Standardmaßstab, der von seitens ProE bereits drinsteht verwende... Ist es dann möglich, diesen Maßstab per Jlink-Funktion nachträglich zu ändern??? Gibts hierfür irgendeine Funktion, um Zeichnungseinstellungen zu ändern???Gruß Rico. Edit: Gibts da nicht irgendeine Funktion bei den Sheet´s - ist das vielleicht ein Ansatz??? [Diese Nachricht wurde von magic_halli am 31. Aug. 2006 editiert.] 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. Aug. 2006 11:12 <-- editieren / zitieren --> Unities abgeben:         
Hab da was über SetSheetScale() gelesen und gleichmal umgesetzt - geht aber irgendwie nicht so richtig: Code:
... int sheets = draw.GetNumberOfSheets(); for (int i = 1; i <= sheets; i++){ draw.SetSheetScale(i,10,null); } //"neues" Model ist die temporäre Zeichnung Model mymodel = (Model)draw; //dxf erzeugen createDXF(mymodel,filenamedxf); ...
Sollte hier nicht eigentlich der Maßstab der Zeichnung gesetzt werden - hab ich so verstanden?!?!? Aber es passiert trotzdem nichts - keine Maßstabsänderung!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. Aug. 2006 14:51 <-- editieren / zitieren --> Unities abgeben:         
Final-Post: So, das Ding ist gelöst! Aufgabe: Aus einer *.prt-Datei eine Zeichnung ausleiten und diese Zeichnung im Maßstab 1:1 als dxf speichern. meine Lösung: 1. *.prt ist geöffnet --> Zeichnung ausleiten
Code:
Session curSession = pfcGlobal.GetProESession(); Model model = curSession.GetCurrentModel();String filename = model.GetFullName(); //Dateiname der *.prt String template = "brennteil_ohne_rahmen"; //Name meiner Zeichnungsvorlage DrawingCreateOptions options = DrawingCreateOptions.create(); options.insert(0,DrawingCreateOption.DRAWINGCREATE_DISPLAY_DRAWING); //create the required drawing Drawing draw = curSession.CreateDrawingFromTemplate(filename+"_temp",template,drawing.GetDescr(),options);
2. Maßstab der ausgeleiteten Zeichnung auf 1:1 setzen
Code:
//setzt den Maßstab der Zeichnung auf 1:1 //Zeichnungsvorlage.drw (template) muss Haken raus bei Maßstab draw.SetSheetScale(1,1.0,null); //erste '1' ist Sheetnummer - gibt eh nur ein Sheet bei der Ausleitung
3. Zeichnung zum Model Casten, um diese Model an dxfInstructions zu übergeben
Code:
//"neues" Model ist die temporäre Zeichnung Model mymodel = (Model)draw;
4. dxf Export ausführen
Code:
DXFExportInstructions dxfexportinstructions = pfcModel.DXFExportInstructions_Create(); model.Export(filename, dxfexportinstructions);
5. Zeichnungsfenster schließen und ursprüngliches ProE-Fenster wieder aktivieren
Code:
//"temporäre" Zeichnung aus Sitzung löschen mymodel.Erase(); //"Ausgangsfenster" wieder aktiv schalten curSession.GetCurrentWindow().Activate();
FERTIG! Es gibt vielleicht auch andere Lösungswege, aber dieser hier funktioniert einwandfrei. Danke für die Hilfen und Anregungen - aller Anfang ist schwer Gruß Rico.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |