Makro-Aufzeichnung als aktives PDF-Blatt

Hallo ihr alle

Ich habe derzeit ein Makro, mit dem ich mein .slddrw-Dokument im PDF-Format unter demselben Verzeichnis und demselben Namen speichern kann.

So weit so gut, das Problem ist, dass es alle Blätter meiner Zeichnung speichert und ich möchte, dass es mir nur das aktive Blatt speichert, wenn ich mein Makro starte.

Ich bin mir sicher, dass die Lösung einfach ist, aber nichts zu tun Ich kann den richtigen Code nicht finden, hier ist das Makro, das ich aus dem Forum bekommen habe und das ich verwende:

'**************************************************************************************************************************
'* Beispiel für ein Makro, mit dem Sie Dokumente als PDFs speichern können
'* Sie können die Erweiterung ändern, um das Dokument in jedem Format zu speichern, das von SW unterstützt wird
'* Basierend auf dem Beispiel von Axemble "Saveas_pdf"
'* Bearbeiten von MCD
'**************************************************************************************************************************
Sub main()
    Dim swApp als SldWorks.SldWorks
    Dim swmodel As SldWorks.ModelDoc2
    Dim stPath As String
    Dim lgFile so lange
    Dim blretval as Boolean
    Fehler so lange dimmen
    Schwache Warnungen, solange sie nicht angezeigt werden
    
    Legen Sie swApp = Application.SldWorks fest
    "Wir erhalten das aktive Dokument
    Legen Sie swmodel = swApp.ActiveDoc fest.
    
    Wenn nicht, ist swmodel nichts, dann
       "Wir überprüfen, ob die Datei registriert ist
        Wenn swmodel. GetPathName = "" dann
            MsgBox "Bitte speichern Sie Ihr Dokument, bevor Sie das Makro starten", vbInformation
            Ende
        Oder
            "Wir erhalten den Speicherort der Datei
            stPath = swmodel. GetPathName (Englisch)
            "Wir bringen die Anzahl der Zeichen auf . der Erweiterung
            lgFile = InStrRev(stPath, ".", -1, vbTextCompare) - 1
            "Wir gewinnen den Weg ohne die Verlängerung zurück
            Wenn lgFile 0 >, dann
                  stPath = Links(stPath, lgFile)
            Ende, wenn
        Ende, wenn
        
        "Handelt es sich bei dem Dokument um ein Dokument
        Wenn swmodel. GetType = swDocPART Dann
           Wir schaffen die entwickelten
            'blretval = swmodel. ExportFlatPatternView(stPath & ". DXF", 1)
            Das DXF wurde erstellt
            'blretval = swmodel. SaveAs3(stPath & ". DXF", 0, 0)
             MsgBox "Dies ist eine Piéce-Datei. Öffnen Sie die Zeichnung, um das PDF zu erstellen", vbInformation
            
            "Handelt es sich bei dem Dokument um eine Zeichnung
        ElseIf sw-Modell. GetType = swDocDRAWING Dann
            Das DXF wurde erstellt
            'blretval = swmodel. SaveAs3(stPath & "_drw.pdf", 0, 0)
            Erstellen der PDF-Datei
            blretval = swmodel. SaveAs3(stPath & ".pdf", 0, 0)
            
            
        Ende, wenn
    
        "Wir speichern die Datei
        blretval = swmodel. Speichern3(0, 0, 0)
   
    Ende, wenn

Ende Sub

 

Hallo

Sie verwenden die SaveAs3-Methode, wenn Sie auf die Hilfeseite gehen, können Sie sehen, dass diese Methode veraltet ist:

http://help.solidworks.com/2012/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IModelDoc2~SaveAs3.html

Und dass Sie stattdessen SaveAs verwenden sollten:

http://help.solidworks.com/2012/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IModelDocExtension~SaveAs.html

Mit dieser letzten Methode können Sie angeben, welches Blatt Sie speichern möchten, siehe dieses Beispiel:

http://help.solidworks.com/2012/English/api/sldworksapi/Save_File_as_PDF_Example_VB.htm

Weitere Informationen zur Auswahl der Blätter:

http://help.solidworks.com/2012/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IExportPdfData.html

 

4 „Gefällt mir“

Es fängt an, kompliziert für mich zu werden, können Sie versuchen, mein Makro-STP  zu ändern?

Sie haben alle Informationen, um dies zu tun.

Andernfalls, da Sie myCADtools haben, können Sie eines der Tools verwenden, um dies zu tun, es könnte für Sie einfacher sein: Integration oder Batch Converter können dies tun.

3 „Gefällt mir“

Ich stimme .PL voll und ganz zu, alle Arbeiten sind vor ;). Wenn Ihnen VBA komplex erscheint und Sie sich nicht damit herumschlagen möchten (was völlig verständlich ist, es gibt kein Werturteil!), ist kleine fertige Software sehr gut.

 

Ich möchte jedoch die Bemerkungen @PL etwas abschwächen. Ich bin sicher, wenn du Dinge ausprobierst, nach Erklärungen zu obskuren Punkten fragst usw., wird er oder eine andere Person hier in der Lage sein, dich zu führen. Aber Dinge bereits vorgefertigt zu geben... Ist das nicht wirklich die Philosophie des Forums:)

1 „Gefällt mir“

Es liegt mir fern, hochmütig zu sein, aber ich habe SolidWorks nicht zur Hand, so dass ich ein Makro blind testen kann, wenn ich Zeit habe, was heute nicht mehr der Fall ist!

Guten Abend

Probieren Sie dieses aus:

 

Dim swApp als SldWorks.SldWorks
Dim swModel As ModelDoc2
Fehler so lange dimmen
Dim lWarnungen so lange

Sub main()

Legen Sie swApp = Application.SldWorks fest
Festlegen von swModel = swApp.ActiveDoc
swModel.Extension.SaveAs GetFilename(swModel.GetPathName) & " rev." & swModel.GetCustomInfoValue("", "Revision") & ".pdf", swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nichts, lErrors, lWarnungen

Ende Sub

Funktion GetFilename(strPath als Zeichenfolge) als Zeichenkette
Dim strTemp As String
strTemp = Mid$(strPfad, InStrRev(strPfad, "\") + 1)
GetFilename = Links$(strTemp, InStrRev(strTemp, ".") - 1)
Ende-Funktion

Vielen Dank für Ihre Antworten, sorry Manu67, beim Starten des Makros passiert nichts.

Wenn es nicht funktioniert, liegt es daran, dass Sie im Jahr 2015 sind... Bei mir hat es 2014 funktioniert, aber nicht 2015 und funktioniert 2016 wieder. Ich kann es nicht erklären. Versuchen Sie, zu 2016 SP2 zu wechseln, oder warten Sie einige Zeit auf SP3, wenn Sie dies tun können.