| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | SOLIDWORKS Electrical 3D Schulung, ein Seminar am 26.06.2025
|
Autor
|
Thema: API Druckbefehl abfangen (2118 mal gelesen)
|
KeepCat Mitglied CAE-Admin

 Beiträge: 82 Registriert: 01.06.2004
|
erstellt am: 30. Mrz. 2007 15:24 <-- editieren / zitieren --> Unities abgeben:         
Moin moin nochmals die ganz konkrete FRAGE (auf die ich leider keine Antwort im Forum gefunden habe): Wie kann ich den Druck-Befehl in SolidWorks (2006,2007) abfangen, so dass ich ein Makro automatisch ausführen lassen, bevor gedruckt wird? Gruß Thomas ------------------ Jeder ist zu etwas nütze, er kann immer noch als schlechtes Beispiel dienen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau

 Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 30. Mrz. 2007 15:52 <-- editieren / zitieren --> Unities abgeben:          Nur für KeepCat
Bei bestimmten Aktionen freuert SW zu Beginn der Aktion ein Event (s. API-Hilfe), das man mit einem Event-Handler abfangen kann. Fürs Drucken kenne ich da keins, vielleicht gibt es das aber auch oder vielleicht im Windows, das genauso mit Events um sich wirft?! Du könntest aber einen eigenen MakroKnopf einrichten, der alles tut, was vorher getan werden muß und dann das Drucken abschickt. Und die anderen Symbole und Menüleisten so bearbeiten, daß da kein anderes Drucken mehr zu sehen ist... ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 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: 30. Mrz. 2007 15:54 <-- editieren / zitieren --> Unities abgeben:          Nur für KeepCat
|
KeepCat Mitglied CAE-Admin

 Beiträge: 82 Registriert: 01.06.2004
|
erstellt am: 30. Mrz. 2007 15:56 <-- editieren / zitieren --> Unities abgeben:         
Danke Lutz, a b e r ... wie binde ich das "normale" Drucken in das Script mit ein? Hast du ggf. mal ein Beispiel? Gruß Thomas ------------------ Jeder ist zu etwas nütze, er kann immer noch als schlechtes Beispiel dienen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau

 Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 30. Mrz. 2007 17:02 <-- editieren / zitieren --> Unities abgeben:          Nur für KeepCat
Du könntest in der API-Hilfe nachsehen im Index bei Sachen, die mit Print anfangen. Wenn Deine Seiten korrekt eingerichtet sind, kannst Du mit ModelDoc2.PrintDirect auf dem Standarddrucker drucken, als ob Du in der Symbolleiste auf den Druckbefehlsknopf gedrückt hättest... ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 21. Mai. 2007 13:16 <-- editieren / zitieren --> Unities abgeben:          Nur für KeepCat
Ok, nochmals für API-D***en: Wie wende ich "ModelDoc2.PrintDirect" für das aktuelle Dokument an, dass wenn das Makro an dieser Stelle vorbei kommt, das Dokument auch einfach so gedruckt wird? In der API Hilfe habe ich für mich leider nur ungenügend Informationen erhalten... Vielen Dank! ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 21. Mai. 2007 22:20 <-- editieren / zitieren --> Unities abgeben:          Nur für KeepCat
Hallo Gilbert, was hast du genau vor, bzw. was möchtest du wann, wie Drucken? Beschreibe bitte dein gewünschtes Zeil, damit ich dir evtl. mit einem kleinen Codeschnipsel helfen kann. Vieleicht hilft dir auch unser kostenloses SolidWorks Tool SDA-QuickPrint weiter. Mit Hilfe dieses Add-Ins kannst du unter anderem Dokumente mit einem Mausklick auf A3 und A4 oder alle Zeichnungen aus einem Ordner (Stapelverarbeitung) drucken. Weiter Informationen, sowie den kostenlosen download findes du hier: SDA-QuickPrint.
------------------ Mfg Daniel Lesen ist super. Nur die Buchstaben machen einen verrückt! ------------------
SolidWorks Programmierung | Tools | Makros | Software; Schuler Design Automation GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 22. Mai. 2007 07:05 <-- editieren / zitieren --> Unities abgeben:          Nur für KeepCat
Vielen Dank tbd! Ich werds gleich mal ausprobieren - Bei der nächsten Gelegenheit. Was ich eigentlich vor hatte, war, durch alle geöffneten Dokumente gehen und jedes auf den Standaraddrucker (Direct.Print) zu drucken. Da wir den Drucker in der Vorlage definiert haben, ginge das Problemlos - wenn man wüsste wie!  Ich reihe meine Fenster immer "Untereinander" an, wenn ich dann jedes einzelne drucke - CTRL+Tab, Print - CTRL+Tab, Print usw... geht 10x schneller als wenn die Zeichnungen maximiert auf dem Schirm liegen  ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 22. Mai. 2007 08:08 <-- editieren / zitieren --> Unities abgeben:          Nur für KeepCat
|
tbd Mitglied Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 22. Mai. 2007 08:40 <-- editieren / zitieren --> Unities abgeben:          Nur für KeepCat
Hallo Gilbert, schon passiert: Code:
Dim oSwApp As SldWorks.SldWorks Dim oModelDoc As SldWorks.ModelDoc2Sub main() 'SolidWorks belegen Set oSwApp = Application.SldWorks 'Erstes Dokument belegen Set oModelDoc = oSwApp.GetFirstDocument 'Mal schauen was alles offen ist und die Dokumente drucken Do While Not oModelDoc Is Nothing Debug.Print (oModelDoc.GetTitle) 'Dokument in SolidWorks aktivieren oSwApp.ActivateDoc (oModelDoc.GetTitle) 'Dokument auf den Standarddrucker Drucken oModelDoc.PrintDirect 'Nächstes Dokument Set oModelDoc = oModelDoc.GetNext Loop End Sub
Bei Zeichnungen wird in diesem Makro die Blattgröße und Ausrichtung nicht berücksichtigt. Bei Bauteilen und Baugruppen funktioniert das aber wunderbar. ------------------ Mfg Daniel Lesen ist super. Nur die Buchstaben machen einen verrückt! ------------------
SolidWorks Programmierung | Tools | Makros | Software; Schuler Design Automation GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 22. Mai. 2007 08:47 <-- editieren / zitieren --> Unities abgeben:          Nur für KeepCat
Ok! Vielen Dank! Es druckt wie wild! Doch ein "Problem"! Wenn ich ein paar Zeichnungen offen habe und das Makro starte, öffnet er mir auch die Modelle zur Zeichnung und druckt diese mit...?! Dies habe ich mir nicht ganz so gedacht. Er sollte nur die Zeichnungen (oder eben alle geöffneten Dokumente) drucken. EDIT: Debug-Print ist: Ausstosserbrücke Ausstosserdruckstück Distanzring_02 94003286-3P-ST3-002 - Blatt1 94003286-3P-ST3-003 - Blatt1 94003286-3P-ST3-006 - Blatt1 Debug-Print soll:
94003286-3P-ST3-002 - Blatt1 94003286-3P-ST3-003 - Blatt1 94003286-3P-ST3-006 - Blatt1 ------------------ [Diese Nachricht wurde von G. Dawg am 22. Mai. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 22. Mai. 2007 09:35 <-- editieren / zitieren --> Unities abgeben:          Nur für KeepCat
Da bei einer Zeichnung bekanntlich auch ein Dokument angezeigt wird, ist dieses wie die Zeichnung in SolidWorks geöffnet. Das Dokument ist eben nur nicht sichtbat. Genau das können wir in der Schleife abfragen: Code:
Sub main() 'SolidWorks belegen Set oSwApp = Application.SldWorks 'Erstes Dokument belegen Set oModelDoc = oSwApp.GetFirstDocument 'Mal schauen was alles offen ist und die Dokumente drucken Do While Not oModelDoc Is Nothing Debug.Print (oModelDoc.GetPathName) 'Nur sichtbare Dokumente drucken If oModelDoc.Visible Then 'Dokument in SolidWorks aktivieren oSwApp.ActivateDoc (oModelDoc.GetTitle) 'Dokument auf den Standarddrucker Drucken oModelDoc.PrintDirect End If 'Nächstes Dokument Set oModelDoc = oModelDoc.GetNext Loop End Sub
Und siehe da, es werden nur noch sichtbare Dokumente gedruckt! ------------------ Mfg Daniel Lesen ist super. Nur die Buchstaben machen einen verrückt! ------------------
SolidWorks Programmierung | Tools | Makros | Software; Schuler Design Automation GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 22. Mai. 2007 09:39 <-- editieren / zitieren --> Unities abgeben:          Nur für KeepCat
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 22. Mai. 2007 15:38 <-- editieren / zitieren --> Unities abgeben:          Nur für KeepCat
Ich habe mir erlaubt, das Makro um ein Force.Rebuild zu ergänzen  Code: ' http://ww3.cad.de/foren/ubb/Forum2/HTML/012488.shtml ' tbd - Mitglied - Softwareentwickler / Konstrukeur Dim oSwApp As SldWorks.SldWorks Dim oModelDoc As SldWorks.ModelDoc2 Dim bRet As Boolean
Sub main() 'SolidWorks belegen Set oSwApp = Application.SldWorks 'Erstes Dokument belegen Set oModelDoc = oSwApp.GetFirstDocument 'Mal schauen was alles offen ist und die Dokumente drucken Do While Not oModelDoc Is Nothing Debug.Print (oModelDoc.GetPathName) 'Nur sichtbare Dokumente drucken If oModelDoc.Visible Then 'Dokument zwingen sich neu aufzubauen bRet = oModelDoc.ForceRebuild3(False) 'Dokument in SolidWorks aktivieren oSwApp.ActivateDoc (oModelDoc.GetTitle) 'Dokument auf den Standarddrucker Drucken oModelDoc.PrintDirect End If 'Nächstes Dokument Set oModelDoc = oModelDoc.GetNext Loop End Sub
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |