| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
Autor
|
Thema: PDF-Export per VB API (1767 mal gelesen)
|
magge84 Mitglied Dipl.-Ing. (Entwicklung)
Beiträge: 66 Registriert: 04.09.2008
|
erstellt am: 04. Aug. 2015 12:52 <-- editieren / zitieren --> Unities abgeben:
Hallo Gemeinde, ich bin gerade dabei erste Schritte mit der VB API zu machen. Ich hab auch schon erste kleiner Programme verfasst. Nun möchte ich gerne einen PDF-Export programmieren. Dabei soll die geöffnete Zeichnung auf einen Ordner am Desktop gespeichert werden. Außerdem will ich ein paar Exportoptionen festlegen. Hier ein Code-Ausschnitt: ... Dim SpeicherPfad As String Dim pdfeigenschaften As pfcls.IpfcPDFExportInstructions = Nothing conn = cAC.Connect("", "", ".", Nothing) session = conn.Session Desktop = Environment.GetFolderPath(SpecialFolder.Desktop) SpeicherPfad = Desktop + "\pdf-Creo\" pdfeigenschaften = (New pfcls.CCpfcPDFExportInstructions).Create() pdfeigenschaften.OptionType = EpfcPDFColorDepth.EpfcPDF_CD_MONO ==> hier kommt ein Fehler pdfeigenschaften.FilePath = SpeicherPfad Try model = session.CurrentModel If model Is Nothing Then MsgBox("Kein Modell im Hauptfenster!", vbCritical, "Fehler") Exit Try End If Dirname = session.GetCurrentDirectory() Mdlname = session.CurrentModel.FullName.ToLower model.Export(Mdlname + ".pdf", pdfeigenschaften) ... Jetzt habe ich zwei Fragen. 1. Die PDF-Export-Optionen werden nicht anerkannt. Sprich, weder der Ausgabeordner, noch die Farbgebung ist korrekt. 2. Wenn ich beim Export anstatt "Mdlname + ".pdf"", "Desktop + Mdlname + ".pdf"" schreibe, kommt der Fehler Zeichenkette zu lang. Wie kann ich das Problem umgehen? Ich hoffe, mir kann da jemand helfen. PS.: Ich verwende VB 2010 Express.
------------------ Gruß, Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NicoFTB Mitglied Ingenieur Entwicklung/Konstuktion
Beiträge: 806 Registriert: 08.05.2012 Creo Parametric 3.0 M120 PDM Essentials 10.1 M040
|
erstellt am: 04. Aug. 2015 13:36 <-- editieren / zitieren --> Unities abgeben: Nur für magge84
zu 1) OptionType ist ein Objekt von pfcPDFOption. Das musst du an deine ExportInstructions anhängen. zu 2) Keine Ahnung wo das die Grenzen waren. Ich speichere die in einem Temp-Ordner um und kopiere die dann mit neuen Namen dahin wo ich die möchte. Ohne VB-API. Hier noch kurz zu 1) wie das bei mir in Python aussieht: Code: def pdfOption(self, _type, _value): pdfOption = dynDis('pfcls.pfcPDFOption').Create() pdfOption.OptionType = _type if isinstance(_value, int): pdfOption.OptionValue = dynDis('pfcls.MpfcArgument').CreateIntArgValue(_value) if isinstance(_value, bool): #Wichtig bool muss danach untersucht werden, da bool auch int ist! pdfOption.OptionValue = dynDis('pfcls.MpfcArgument').CreateBoolArgValue(_value) return pdfOption
Code: def makePDF(self, model, path, _format=None): exportPDF = dynDis('pfcls.pfcPDFExportInstructions').Create() #Optionen PDFOptions = dynDis('pfcls.pfcPDFOptions') PDFOptions.Append(self.pdfOption(1, 2)) #Color Mono PDFOptions.Append(self.pdfOption(0, 1)) #TrueType PDFOptions.Append(self.pdfOption(25, True)) #Use Pentable PDFOptions.Append(self.pdfOption(5, False)) #Viewer aus exportPDF.Options = PDFOptions ...
------------------ Grüße Nico \o/ Üs - ProE-Beziehungen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
magge84 Mitglied Dipl.-Ing. (Entwicklung)
Beiträge: 66 Registriert: 04.09.2008
|
erstellt am: 05. Aug. 2015 12:05 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von NicoFTB:
Code: def pdfOption(self, _type, _value): pdfOption = dynDis('pfcls.pfcPDFOption').Create() pdfOption.OptionType = _type if isinstance(_value, int): pdfOption.OptionValue = dynDis('pfcls.MpfcArgument').CreateIntArgValue(_value) if isinstance(_value, bool): #Wichtig bool muss danach untersucht werden, da bool auch int ist! pdfOption.OptionValue = dynDis('pfcls.MpfcArgument').CreateBoolArgValue(_value) return pdfOption
Ich habe jetzt eine Funktion erstellt, die die pdfOption (_type,_value) weitergibt. Allerdings funktioniert nur die Zuweisung von _type. Bei der Zuweisung von _value gibt es die Fehlermeldung, dass OptionValue kein Member von pdfOption ist. Was mache ich da falsch. Ich hab mal ein Bild aus dem UserGuide angehängt, wie man das machen soll. Hier mein Code für die Funktion: [/code] Public Function pdfOption(ByVal _type As Object, ByVal _value As Object) pdfOption = (New pfcls.CCpfcPDFOption).Create() pdfOption.OptionType = _type pdfOption.OptionValue = (New pfcls.CMpfcArgument).CreateIntArgValue(_value) Return pdfOption End Function [/code] ------------------ Gruß, Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
magge84 Mitglied Dipl.-Ing. (Entwicklung)
Beiträge: 66 Registriert: 04.09.2008 Solid Works 2018 + PDM Windows 10 64-bit HP Z-Book Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz NVIDIA Quadro M3000M
|
erstellt am: 06. Aug. 2015 09:27 <-- editieren / zitieren --> Unities abgeben:
Jetzt funktioniert's. Hier der Code für die Funktion in VB: ... Public Function pdfOption(ByVal _type As Object, ByVal _value As Object) As pfcls.IpfcPDFOption pdfOption = (New pfcls.CCpfcPDFOption).Create() pdfOption.OptionType = _type If TypeOf _value Is Integer Then pdfOption.OptionValue = (New pfcls.CMpfcArgument).CreateIntArgValue(_value) ElseIf TypeOf _value Is Boolean Then pdfOption.OptionValue = (New pfcls.CMpfcArgument).CreateBoolArgValue(_value) Else MsgBox("Unzulässige Werte für Funktionsabruf!", vbCritical, "Fehler") Exit Function End If Return pdfOption End Function ...
------------------ Gruß, Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| |
magge84 Mitglied Dipl.-Ing. (Entwicklung)
Beiträge: 66 Registriert: 04.09.2008
|
erstellt am: 10. Aug. 2015 09:52 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe jetzt den Export einer geöffneten Zeichnung nach PDF mit Hilfe der VB API (firmenspezifisch) umgesetzt. Nun möchte ich das Programm so abändern, dass man alle vorhandenen Zeichnungen in einem gewählten Arbeitsverzeichnis auf einmal zu PDF exportiert. Wenn ich die jeweilige Zeichnung öffne, anschließend exportiere und dann wieder schließe, funktioniert das schon. Ich habe jetzt aber gesehen, dass man auch Modelle abfragen kann, ohne diese öffnen zu müssen. Stichwort: "RetrieveModel". Nun meine Frage: Weiß jemand, wenn ich mit diesem Befehl mir eine Zeichnung hole, ob ich diese auch ohne Sie darzustellen exportieren kann. Wenn ja, wie? Meine bisherigen Versuche scheitern dann mit dem Befehl "model.export(..., ...)". Hier bekomme ich den Fehler wie angehängt. Kann mir da jemand weiterhelfen?
------------------ Gruß, Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|