Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro für die AV

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 SOLIDWORKS
  
Zerspanungstreff mit SolidCAM bei der Hoffmann GmbH in Achim/Bremen
Autor Thema:  Makro für die AV (3338 mal gelesen)
Ein Konstrukteur
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 24.10.2013

erstellt am: 25. Okt. 2013 10:54    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


SaveAsPDFSingle.zip


SichernalsDXFmitAVundStuckzahl.zip

 
Hallo Leute,
ich habe eine Makro für die AV erstellt und dabei
kräftig bei euch abgekupfert.
Alles funktioniert wie beschrieben aber ich schaffe es nicht
jedes Blatt einer Zeichnung einzeln als PDF abzuspeichern

' **********************************************************************
' * Makro erzeugt aus dem aktiven Zeichnungsdokument für alle Blätter
' * eine DXF Datei und eine PDF Datei in einem Unterordner im Verzeichnis der Zeichnung.
' * Außerdem in einen Ordner der AV (x:\Gemeinsam\Arbeitsvorbereitung\test\) wenn gewünscht
' * und in einen eigenen Ordner wie in "C:\SolidPfad.txt" abgespeichert, wenn gewünscht
' * Außerdem wird ein Text generiert für die AV mit Stückzahl, Liefertermin, Auftrag
' * Blatt 1 einer Zeichnung erhält den Blattnamen = Dateinamen, Blatt 2 erhält den Blattnamen = Dateinamen.A1
' * Basiert auf einer Vorlage von:
' *
' * 05.04.2001 Stefan Berlitz (stefan.berlitz@solidworks.cad.de)
' * http://solidworks.cad.de
' * http://swtools.cad.de
' **********************************************************************
Variablen deklaration


Dim SwApp As Object
Dim DrawingDoc As Object
Dim swModelDocExt As Object
Dim swExportPDFData As Object
Dim Sheet As Object
Dim swPs  As Object


Dieser Teil funktioniert nicht

  '---------------------------------------------------------------------------------------------
   
          ' wir wollen alle Blätter als PDF mit den eingestellten Optionen abspeichern jedes Blatt einzelnd
        Set Sheet = DrawingDoc.GetCurrentSheet
        StrSheetName = Sheet.GetName
       
        PDFDateiname = "x:\Gemeinsam\Arbeitsvorbereitung\test\" & StrSheetName & "test" & ".pdf"
       
        ' dann erfolgt das Speichern als PDF mittels swModelDocExt.SaveAs
        ' wenn alles geklappt hat, wird TRUE zurückgeliefert, ansonsten FALSE
       
        Set swModelDocExt = DrawingDoc.Extension
        Set swExportPDFData = SwApp.GetExportFileData(1)
       
        bReturn = swExportPDFData.SetSheets(swExportData_ExportCurrentSheet, Nothing)
       

        bReturn = swModelDocExt.SaveAs(PDFDateiname, swSaveAsCurrentVersion, swSaveAsOptions_Copy, _
                  swExportPDFData, lErrors, lWarnings)
                   
       
'
'        If bReturn Then
'            strMsgtxt = strMsgtxt & "erfolgreich gespeichert: " & strDateiname & " - " & swSheet.GetName & _
'                    ".pdf" & Chr$(10) & Chr$(13)
'        Else
'            intReturn = SwApp.SendMsgToUser2("FEHLER BEIM SPEICHERN VON " & strDateiname & " - " & swSheet.GetName & _
'                  ".pdf" & Chr$(10) & Chr$(13), swMbInformation, swMbOk)
'            strMsgtxt = strMsgtxt & "*** FEHLER bei: " & strDateiname & " - " & swSheet.GetName & _
'                    ".pdf" & Chr$(10) & Chr$(13)
'        End If
       
      '----------------------------------------------------------------------------
Debugge ich im Einzelsatz sehe ich das
swExportPDFData kein Wert zugewiesen wird
bei Set swExportPDFData = SwApp.GetExportFileData(1)
Diesen Teil des  Quelltextes habe ich dem Makro SaveAsPDF_Single
entnommen dort funktioniert der Teil
die Variable ist dort allerdings so dimensioniert
Dim swExportPDFData    As SldWorks.ExportPdfData
bei mir
Dim swExportPDFData    As object
weil sonst habe ich einen Syntaxfehler
Ich habe die Variable im Makro SaveAsPDF_Single probeweise als object
dimensioniert und da funktioniert das Makro immer noch

Hat jemand eine Idee

------------------
L.G. W.Wegener

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ein Konstrukteur
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 24.10.2013

erstellt am: 28. Okt. 2013 09:45    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

Kann mir wirklich keiner weiterhelfen?

------------------
L.G. W.Wegener

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 28. Okt. 2013 11:03    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 Ein Konstrukteur 10 Unities + Antwort hilfreich

Hallo

so wie ich das verstehe kann man mit "swExportPDFData" nur die Blätter
in eine einzige PDF Datei mit mehreren Seiten speichern, aber nicht jedes Blatt in eine einzelne Datei.

Es wird Dir wohl nichts anderes übrig bleiben, als alle Blätter in
einer Schleife durchlaufen und jedes einzeln ausgeben.

Kann aber auch sein, dass jemand eine bessere Lösung hat und ich es doch nicht richtig verstehe.

------------------
Grüße
Heinz

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ein Konstrukteur
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 24.10.2013

erstellt am: 28. Okt. 2013 11:26    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 Nahe,
danke für deine Mühe, aber ich habe den Quelltext so kastriert gepostet,
dass man nicht sehen kann, dass sich der Teil in einer Schleife befindet.
Ich kann einfach nicht nur das aktive Blatt als PDF abspeichern.
Die Ausgabe als DXF in einzelne Blätter funktioniert wenn ich es unter Export Optionen
passend eingestellt habe. Beim Export von PDF fehlt die Option nur das aktive Blatt exportieren.
In dem Macro SaveasPDF_Single funktioniert es mit

bReturn = swModelDocExt.SaveAs(strPDFDateiname, swSaveAsCurrentVersion, swSaveAsOptions_Copy, _
                    swExportPDFData, lErrors, lWarnings)

wobei die Variable _swExportPDFData scheinbar der Parameter ist für das einzeln speichern ist.
Aber in meinem Macro funktioniert es nicht
Set swExportPDFData = swApp.GetExportFileData(1)

Im Debugger sehe ich das swExportPDFData kein Wert zugewiesen wurde.

------------------
L.G. W.Wegener

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 28. Okt. 2013 12:06    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 Ein Konstrukteur 10 Unities + Antwort hilfreich

ev. eine blöde Frage, aber hat "SwApp" einen Wert?

Es ist halt immer ein wenig schwierig einen Fehler zu finden, wenn
nicht der ganze Code ersichtlich ist.

------------------
Grüße
Heinz

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 28. Okt. 2013 12:18    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 Ein Konstrukteur 10 Unities + Antwort hilfreich

Hallo Ein Konstrukteur,

bei mir klappt es mit diesem Makroschnipsel von der aktiven Zeichnung nur das aktive Blatt als pDf zu speichern:

Code:
Option Explicit

Dim swApp              As SldWorks.SldWorks
Dim swModel            As SldWorks.ModelDoc2
Dim swModelDocExt      As SldWorks.ModelDocExtension
Dim swExportPDFData    As SldWorks.ExportPdfData
Dim boolstatus          As Boolean
Dim filename            As String
Dim lErrors            As Long
Dim lWarnings          As Long


' ACHTUNG: der Parameter hat als Wert eine 2, also entweder definieren oder die
' SolidWorks XXXX Constant library einbinden
Const swExportData_ExportCurrentSheet = 2

Sub main()

    ' Path to which to save PDF file of drawing
    filename = "c:\temp\test.pdf"

    Set swApp = Application.SldWorks
    swApp.Visible = True

    ' an das aktuelle Dokument anklinken
    Set swModel = swApp.ActiveDoc
    Set swModelDocExt = swModel.Extension
   
    ' die ExportPDFData vorbereiten
    Set swExportPDFData = swApp.GetExportFileData(1)
    boolstatus = swExportPDFData.SetSheets(swExportData_ExportCurrentSheet, "")
   
    ' nur zum schnelleren Testen PDF anschlißend öffnen
    swExportPDFData.ViewPdfAfterSaving = True

    ' und PDF erzeugen
    boolstatus = swModelDocExt.SaveAs(filename, 0, 0, swExportPDFData, lErrors, lWarnings)

End Sub


Aber du schreibst noch:

Zitat:
Original erstellt von Ein Konstrukteur:
die Variable ist dort allerdings so dimensioniert
Dim swExportPDFData    As SldWorks.ExportPdfData
bei mir
Dim swExportPDFData    As object
weil sonst habe ich einen Syntaxfehler

Damit könnte es zusammenhängen. Ich hatte mal den SPR 539515 "API issue: Late binding for SldWorks.ExportPdfData not working...", das ging zumindest bis einschließlich SW2010 nicht. In meiner SW2013 funktioniert das Makro oben auch mit Late Binding (laso Deklaration "As Object"), aber wenn du eine ältere Version benutzt musst du die Typebibliothel mit einbinden und early bindung dafür nutzen.

Ciao,
Stefan


------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ein Konstrukteur
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 24.10.2013

erstellt am: 28. Okt. 2013 12:58    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 Danke für den Hinweis,
nachdem ich
Const swExportData_ExportCurrentSheet = 2
eingefügt habe funktioniert alles wunderprächtig.
Das ist das Problem wenn man sich den Code von mehreren
Stellen (ohne alles zu verstehen)zusammen kopiert.
Der Tipp hat mir eine Menge Zeit gespart.
Aber wo ist die SolidWorks XXXX Constant library in dem Beispiel
SaveAsPDF_Single eingebunden oder die Konstante definiert.

------------------
L.G. W.Wegener

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 28. Okt. 2013 13:33    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 Ein Konstrukteur 10 Unities + Antwort hilfreich


26383_extras-verweise.png

 
Zitat:
Original erstellt von Ein Konstrukteur:
Aber wo ist die SolidWorks XXXX Constant library in dem Beispiel
SaveAsPDF_Single eingebunden oder die Konstante definiert.

Wie alle Verweise im vba Editor im Menu Extras/Verweise zu finden, siehe Screenshot.

Das ist wirklich ziemlich wichtig zu verstehen, was diese Verweise sollen, wie damit umzugehen ist und was die bewirken. Ich schätzen mal 80% aller Fragen hier im Brett nach irgendwelchen Problemen haben mit den Verweise zu tun.

Such dazu hier im Brett mal zu den Stichworten "early binding", "late binding", "verweise" im Zusammenhang mit Makros (bzw. API Programmierung) und lies da mal ne Stunde oder zwei quer, dann wird es in Zukunft einfacher solche Fehler zu analysieren bzw. gar nicht erst zu machen  

Ich hab auf meiner MakroMania Seite auch die Konstantenmodule zum direkt durchsuchen und einbinden, wie z.B. auf http://solidworks.cad.de/mm_989.htm

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ein Konstrukteur
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 24.10.2013

erstellt am: 30. Okt. 2013 11:26    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

Danke guter Geist.
Ich werde es beherzigen.
Ich versuche jetzt einmal das Makro in c# nach zu programmieren.
( Was ich noch weniger kann als VB )

------------------
L.G. W.Wegener

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