| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
| |
 | BOM Assistant für Stücklistenerstellung , eine App
|
Autor
|
Thema: Mit weblink Zeichnung plotten (1449 mal gelesen)
|
homi Mitglied
 
 Beiträge: 202 Registriert: 16.07.2001 WinXP SP3 32bit WF3 M160 HP Compaq 8710w Quadro FX 1600m
|
erstellt am: 30. Okt. 2008 11:24 <-- editieren / zitieren --> Unities abgeben:         
Hallo! Ich brauch mal die Hilfe beim Thema Weblink. Ich möchte gerne mit Hilfe von weblink ein Blatt aus einer Zeichnung drucken. folgendes habe ich jetzt eingefügt, doch irgendwie bringt er mir immer eine Fehlermeldung. Code:
var session = pfcGetProESession (); var drawing = session.CurrentModel; var instrs = pfcCreate ("pfcPlotInstructions").Create("Generisches Postscript"); drawing.Export (drawing.FullName + ".plt", instrs);
Die Fehlermeldung ist angehängt. Wo ist hier mein Fehler?
------------------ Uwe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DirkWK Mitglied Mschinenbauingenieur

 Beiträge: 47 Registriert: 20.10.2008 IBM Thinkpad T61P WinXP-Prof. Proe/E 2001 (M440) Wildfire 2 (M100) Wildfire 4 (M080) STools 2009
|
erstellt am: 30. Okt. 2008 12:49 <-- editieren / zitieren --> Unities abgeben:          Nur für homi
Ersetze den Druckernamen mal durch "postscript". Dann sollte es funktionieren. Hier einmal der Code, der bei mir funktioniert: var session = (pfcCreate ("MpfcCOMGlobal")).GetProESession(); var drawing = session.CurrentModel; var instrs = new pfcCreate ("pfcPlotInstructions").Create("POSTSCRIPT"); drawing.Export (drawing.FullName + ".plt", instrs); ------------------ Viele Grüße Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
homi Mitglied
 
 Beiträge: 202 Registriert: 16.07.2001 WinXP SP3 32bit WF3 M160 HP Compaq 8710w Quadro FX 1600m
|
erstellt am: 30. Okt. 2008 13:35 <-- editieren / zitieren --> Unities abgeben:         
Vielen Dank. Das war die Lösung. Wie kann ich denn jetzt angeben das er nur die aktuelle Seite drucken soll? In der Hilfe steht dazu Zitat: Page Range Choice--One of the PlotPageRange enumeration objects. Default is PlotPageRange.PLOT_RANGE_ALL
Wie geb ich der Anweisung PlotRangeChoise die Info mit, dass nur das aktuelle Blatt gedruckt werden soll? ------------------ Uwe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DirkWK Mitglied Mschinenbauingenieur

 Beiträge: 47 Registriert: 20.10.2008 IBM Thinkpad T61P WinXP-Prof. Proe/E 2001 (M440) Wildfire 2 (M100) Wildfire 4 (M080) STools 2009
|
erstellt am: 30. Okt. 2008 13:54 <-- editieren / zitieren --> Unities abgeben:          Nur für homi
Wie aus der Hilfe zu entnehmen ist: Enum pfcPlotPageRange This enumerated type specifies which pages to plot. Values PLOT_RANGE_ALL Plot all the pages. PLOT_RANGE_CURRENT Plot the current page. PLOT_RANGE_OF_PAGES Plot a range of pages. PlotPageRange_nil Use this enumerated value to represent "null" passed to optional properties or method arguments. Also: pfcPlotInstructions.PageRangeChoice = PLOT_RANGE_CURRENT Ich habe bei uns allerdings eine andere Lösung zum Drucken mit Hilfe von WebLink implementiert. Hierzu definiere ich mir verschiedene Drucker (pcf-Files) und drucke dann per Makro über diese Drucker. Hier einmal ein Beispiel (PLOTBEFEHL und DRUCKERNAME sind entsprechend anzupassen):
Code:
var filename = "Beipsieldatename.pdf"; var macroString = "~ Activate `main_dlg_cur` `ProCmdWinActivate.win`;" + "~ Command `ProCmdModelPrint` ;~ Select `print` `CascadeButton1`;" + "~ Close `print` `CascadeButton1`;~ Activate `print` `DRUCKERNAME`;" + "~ Close `print` `CascadeButton1`;" + "~ Update `print` `i_command` `PLOTBEFEHL " + filename + "`;~ Activate `print` `OK`;" + "~ Activate `Print_file` `OK`;~ Activate `main_dlg_cur` `main_dlg_cur`;"; session.RunMacro(macroString);
Den Makrostring erhält man am Besten, wenn man einen Mapkey erstellt und dann den entsprechenden Teil aus der config.pro herauskopiert und (modifiziert) übernimmt. Dies hat den Vorteil, daß der Mapkey nicht in der config definiert sein muß, und daß weblink den Mapkey (hier ja der Macrostring) je nach Erfordernissen noch vor der Ausführung manipulieren kann. ------------------ Viele Grüße Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
homi Mitglied
 
 Beiträge: 202 Registriert: 16.07.2001 WinXP SP3 32bit WF3 M160 HP Compaq 8710w Quadro FX 1600m
|
erstellt am: 30. Okt. 2008 14:46 <-- editieren / zitieren --> Unities abgeben:         
|
DirkWK Mitglied Mschinenbauingenieur

 Beiträge: 47 Registriert: 20.10.2008 IBM Thinkpad T61P WinXP-Prof. Proe/E 2001 (M440) Wildfire 2 (M100) Wildfire 4 (M080) STools 2009
|
erstellt am: 30. Okt. 2008 15:01 <-- editieren / zitieren --> Unities abgeben:          Nur für homi
|
homi Mitglied
 
 Beiträge: 202 Registriert: 16.07.2001 WinXP SP3 32bit WF3 M160 HP Compaq 8710w Quadro FX 1600m
|
erstellt am: 31. Okt. 2008 14:18 <-- editieren / zitieren --> Unities abgeben:         
Ich hab mal noch eine Frage zum Thema weblink. ich wollte jetzt noch ein Backup funktion einbauen jedoch hängt es bei mir. ich hab folgendes Probiert:
Code:
var session = pfcGetProESession (); var drawing = session.CurrentModel; drawing.Backup ("D:\\ProE_AV\\");
Er bringt immer Typen unverträglich beim .Backup Was mach ich falsch? Danke im Voraus. ------------------ Uwe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DirkWK Mitglied Mschinenbauingenieur

 Beiträge: 47 Registriert: 20.10.2008 IBM Thinkpad T61P WinXP-Prof. Proe/E 2001 (M440) Wildfire 2 (M100) Wildfire 4 (M080) STools 2009
|
erstellt am: 03. Nov. 2008 09:27 <-- editieren / zitieren --> Unities abgeben:          Nur für homi
Schönben guten Morgen, Die Backupfunktion ist lt. API Wizard (wie oben erwähnt) folgendermaßen definiert: void Backup (pfcModelDescriptor WhereTo) D.h., daß der übergebene Parameter vom Typ pfcModelDescriptor sein muß. Der Datentyp ist wiederum im API Wizzard definiert. Also probiere mal pfcModelDescriptor.Path auf den entsprechenden Pfad zu setzen und dann die Funktion aufzurufen. z.B. (allerdings ungetestet):
Code:
var session = pfcGetProESession (); var drawing = session.CurrentModel; var Ziel = new pfcCreate("pfcModelDescriptor"); Ziel.Path = "D:\\ProE_AV\\"; drawing.Backup (Ziel);
Generell würde ich Dir allerdings vorschlagen beim programmieren etwas strukturierter vorzugehen. Damit meine ich, wenn etwas nicht richtig funktioniert erst mal in der Dokumentation nachschauen, wie die Klasse, der Funktionsaufruf mit Parametern etc definiert sind. Hier stellt man (ich fürt mich selbst auch immer wieder) fest, daß sich schnell der ein oder andere Flüchtigkeitsfehler einschleicht. ------------------ Viele Grüße Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
homi Mitglied
 
 Beiträge: 202 Registriert: 16.07.2001 WinXP SP3 32bit WF3 M160 HP Compaq 8710w Quadro FX 1600m
|
erstellt am: 03. Nov. 2008 13:57 <-- editieren / zitieren --> Unities abgeben:         
Hallo Dirk. Danke für die Antwort, doch leider kommt da immer die Fehlermeldung, dass das Object die Methode oder Eigenschaft nicht unterstützt. mit folgendem Code greift zumindestens schon mal die Path Eigenschaft. Allerdings gibt es Probleme beim eigentlichen Backup in der letzten Zeile. Dann kommt der Fehler "pfcXUnimplemented"
Code: var session = pfcGetProESession (); var drawing = session.CurrentModel; var Ziel = new pfcCreate("pfcModelDescriptor").CreateFromFileName(drawing.FileName); Ziel.Path = "D:\\ProE_AV\\"; drawing.Backup(Ziel);
auch mit drawing.Backup(Ziel.Path); geht es nicht. Vielleicht hast du dazu noch eine Idee? ------------------ Uwe [Diese Nachricht wurde von homi am 03. Nov. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DirkWK Mitglied Mschinenbauingenieur

 Beiträge: 47 Registriert: 20.10.2008 IBM Thinkpad T61P WinXP-Prof. Proe/E 2001 (M440) Wildfire 2 (M100) Wildfire 4 (M080) STools 2009
|
erstellt am: 03. Nov. 2008 14:39 <-- editieren / zitieren --> Unities abgeben:          Nur für homi
Hallo Uwe, folgende Variante sollte funktionieren - zumindest funktioniert's bei mir:
Code:
var session = (pfcCreate ("MpfcCOMGlobal")).GetProESession(); var drawing = session.CurrentModel; var Ziel = new pfcCreate("pfcModelDescriptor"); Ziel = drawing.Descr; Ziel.Path = "Laufwerk:\\Unterverzeichnis1\\Unterverzeichnis2\\"; drawing.Backup(Ziel);
Wichtig ist allerdings, daß das Zielverzeichnis schon existiert. Es wird bei Aufruf der Backup-Funktion nicht automatisch angelegt. In einem solchen Fall wird das Script mit einem Fehler unterbrochen. ------------------ Viele Grüße Dirk 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: 03. Nov. 2008 15:01 <-- editieren / zitieren --> Unities abgeben:          Nur für homi
|
homi Mitglied
 
 Beiträge: 202 Registriert: 16.07.2001 WinXP SP3 32bit WF3 M160 HP Compaq 8710w Quadro FX 1600m
|
erstellt am: 03. Nov. 2008 15:54 <-- editieren / zitieren --> Unities abgeben:         
|