Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Allgemein
  PDF-Export per VB API

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:  PDF-Export per VB API (1767 mal gelesen)
magge84
Mitglied
Dipl.-Ing. (Entwicklung)


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

Beiträge: 66
Registriert: 04.09.2008

erstellt am: 04. Aug. 2015 12:52    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 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


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

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 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 magge84 10 Unities + Antwort hilfreich

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)


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

Beiträge: 66
Registriert: 04.09.2008

erstellt am: 05. Aug. 2015 12:05    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


vbug.JPG

 
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)


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

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 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

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



Entwicklungsingenieur Kunststofftechnik (m/w/d) Konstruktion & Versuche

Karriere im stark wachsenden, dynamischen Unternehmen

Entwicklungsingenieur Kunststofftechnik (m/w/d)
Konstruktion & Versuche

  • Maschinen, Werkzeuge & Neue Produkte
  • Internationaler Hidden Champion ? Produzierender Mittelstand
  • Region Rhein-Neckar

Wer wartet auf Sie?
Unser Mandant: ...

Anzeige ansehenEntwicklung
magge84
Mitglied
Dipl.-Ing. (Entwicklung)


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

Beiträge: 66
Registriert: 04.09.2008

erstellt am: 10. Aug. 2015 09:52    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


Fehler.JPG

 
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 >>)

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