| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Alle geöffneten idw's Drucken (2213 mal gelesen)
|
dero2k Mitglied Technicher Zeichner ma bau
Beiträge: 53 Registriert: 24.04.2009 Inventor 2008 (hauptsächlich) win xp
|
erstellt am: 12. Okt. 2011 08:09 <-- editieren / zitieren --> Unities abgeben:
Hi Ich habe mir ein macro erstellt um die geöffnete IDW mit meinen Einstellungen auf A3 Drucken zu lassen. Funktioniert so weit auch supper. Jetzt würde ich das macro gerne abändern, bzw. Ein 2. Erstellen mitdem alle geöffneten IDW's so gedruckt werden. Gibt es dazu villeicht schon Beispiel Code oder könnt ihr mir sagen mit welchem Befehl ich das ganze realisieren kann ? Danke schonmal Dero Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noctis79 Mitglied Konstrukteur/ CAD-Administrator
Beiträge: 164 Registriert: 07.10.2009 Inventor Pro 2017 Cideon Workspace
|
erstellt am: 12. Okt. 2011 18:39 <-- editieren / zitieren --> Unities abgeben: Nur für dero2k
Abend! Code: Sub test() Dim oapp As Inventor.Application Dim oDocument As Inventor.Document Set oapp = ThisApplication If oapp.ActiveDocument Is Nothing Then MsgBox "Kein Dokument geöffnet" Exit Sub End If For Each oDocument In oapp.Documents.VisibleDocuments If oDocument.DocumentType = kDrawingDocumentObject Then MsgBox oDocument.FullDocumentName End If Next End Sub
Probier´s mal damit.. Anstelle von der MsgBox rufst Du dann dein vorhandenes Makro auf... Bzw. machst vorher ein oDocument.activate und rufst dann dein Makro auf... Sollte funktionieren... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 12. Okt. 2011 18:40 <-- editieren / zitieren --> Unities abgeben: Nur für dero2k
Hallo Versuch mal: Code: Private Sub PrintAll()Dim oDoc as Document for each oDoc in ThisApplication.Documents if oDoc.DocumentSubType = kDrawingDocument Then ...und hier deinen Code für's Einzelzeichnung drucken einfügen end if next End Sub
------------------ MfG RK EDIT: Mist, zu langsam. Da merkt das man alt wird. [Diese Nachricht wurde von rkauskh am 12. Okt. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noctis79 Mitglied Konstrukteur/ CAD-Administrator
Beiträge: 164 Registriert: 07.10.2009 Inventor Pro 2017 Cideon Workspace
|
erstellt am: 13. Okt. 2011 07:30 <-- editieren / zitieren --> Unities abgeben: Nur für dero2k
@RK Hast Du ThisApplication.Documents mal getestet? Wenn ich eine Baugruppen- Zeichnung hab, dann ruft IV damit die kpl. Struktur ab. Hast Du das Phänomen auch? Deswegen bin ich auf ThisApplication.VisibleDocuments ausgewichen... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dero2k Mitglied Technicher Zeichner ma bau
Beiträge: 53 Registriert: 24.04.2009 Inventor 2008 (hauptsächlich) win xp
|
erstellt am: 13. Okt. 2011 08:42 <-- editieren / zitieren --> Unities abgeben:
Hi danke schonmal für den beispiel code hier mal mein code um zu drucken villeicht kann mir ja jemand zeigen wie ich ihn richtig einfügen muss. habe gerade leider wenig zeit auf arbeit um das ganze auszuprobieren Code:
Public Sub DruckenA3() 'Print all sheets in drawing document 'Get the active document and check whether it's drawing document If ThisApplication.ActiveDocument.DocumentType = kDrawingDocumentObject Then Dim oDrgDoc As DrawingDocument Set oDrgDoc = ThisApplication.ActiveDocument ' Set reference to drawing print manager ' DrawingPrintManager has more options than PrintManager ' as it's specific to drawing document Dim oDrgPrintMgr As DrawingPrintManager Set oDrgPrintMgr = oDrgDoc.PrintManager ' Set the printer name ' comment this line to use default printer or assign another one oDrgPrintMgr.Printer = "TOSHIBA e-STUDIO4520CSeriesPCL6" oDrgPrintMgr.PrintRange = kPrintAllSheets 'Set the paper size and scale On Error Resume Next Select Case oDrgDoc.ActiveSheet.Size Case kA4DrawingSheetSize oDrgPrintMgr.PaperSize = kPaperSizeA4 oDrgPrintMgr.ScaleMode = kPrintCustomScale oDrgPrintMgr.[Scale] = 1 Case kA3DrawingSheetSize oDrgPrintMgr.PaperSize = kPaperSizeA3 oDrgPrintMgr.ScaleMode = kPrintCustomScale oDrgPrintMgr.[Scale] = 1 Case kA2DrawingSheetSize oDrgPrintMgr.PaperSize = kPaperSizeA3 oDrgPrintMgr.ScaleMode = kPrintBestFitScale Case kA1DrawingSheetSize oDrgPrintMgr.PaperSize = kPaperSizeA3 oDrgPrintMgr.ScaleMode = kPrintBestFitScale Case kA0DrawingSheetSize oDrgPrintMgr.PaperSize = kPaperSizeA3 oDrgPrintMgr.ScaleMode = kPrintBestFitScale Case Else ' Andere Werte. Debug.Print "ungültiges Papierformat" End Select 'Set the paper orientation On Error Resume Next Select Case oDrgDoc.ActiveSheet.Orientation Case kLandscapePageOrientation oDrgPrintMgr.Orientation = kLandscapeOrientation Case kPortraitPageOrientation oDrgPrintMgr.Orientation = kPortraitOrientation Case Else ' Andere Werte. Debug.Print "ungültige Orientierung" End Select oDrgPrintMgr.SubmitPrint End If End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noctis79 Mitglied Konstrukteur/ CAD-Administrator
Beiträge: 164 Registriert: 07.10.2009 Inventor Pro 2017 Cideon Workspace
|
erstellt am: 13. Okt. 2011 12:32 <-- editieren / zitieren --> Unities abgeben: Nur für dero2k
Nicht getestet, probiers mal.... Code: Public Sub DruckenA3() 'Print all sheets in drawing document 'Get the active document and check whether it's drawing document Dim oapp As Inventor.Application Dim oDocument As Inventor.Document Set oapp = ThisApplication If oapp.ActiveDocument Is Nothing Then MsgBox "Kein Dokument geöffnet" Exit Sub End If For Each oDocument In oapp.Documents.VisibleDocuments If oDocument.DocumentType = kDrawingDocumentObject Then oDocument.Activate Dim oDrgDoc As DrawingDocument Set oDrgDoc = ThisApplication.ActiveDocument ' Set reference to drawing print manager ' DrawingPrintManager has more options than PrintManager ' as it's specific to drawing document Dim oDrgPrintMgr As DrawingPrintManager Set oDrgPrintMgr = oDrgDoc.PrintManager ' Set the printer name ' comment this line to use default printer or assign another one oDrgPrintMgr.Printer = "TOSHIBA e-STUDIO4520CSeriesPCL6" oDrgPrintMgr.PrintRange = kPrintAllSheets 'Set the paper size and scale On Error Resume Next Select Case oDrgDoc.ActiveSheet.Size Case kA4DrawingSheetSize oDrgPrintMgr.PaperSize = kPaperSizeA4 oDrgPrintMgr.ScaleMode = kPrintCustomScale oDrgPrintMgr.[Scale] = 1 Case kA3DrawingSheetSize oDrgPrintMgr.PaperSize = kPaperSizeA3 oDrgPrintMgr.ScaleMode = kPrintCustomScale oDrgPrintMgr.[Scale] = 1 Case kA2DrawingSheetSize oDrgPrintMgr.PaperSize = kPaperSizeA3 oDrgPrintMgr.ScaleMode = kPrintBestFitScale Case kA1DrawingSheetSize oDrgPrintMgr.PaperSize = kPaperSizeA3 oDrgPrintMgr.ScaleMode = kPrintBestFitScale Case kA0DrawingSheetSize oDrgPrintMgr.PaperSize = kPaperSizeA3 oDrgPrintMgr.ScaleMode = kPrintBestFitScale Case Else ' Andere Werte. Debug.Print "ungültiges Papierformat" End Select 'Set the paper orientation On Error Resume Next Select Case oDrgDoc.ActiveSheet.Orientation Case kLandscapePageOrientation oDrgPrintMgr.Orientation = kLandscapeOrientation Case kPortraitPageOrientation oDrgPrintMgr.Orientation = kPortraitOrientation Case Else ' Andere Werte. Debug.Print "ungültige Orientierung" End Select oDrgPrintMgr.SubmitPrint End If Next End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dero2k Mitglied Technicher Zeichner ma bau
Beiträge: 53 Registriert: 24.04.2009 Inventor 2008 (hauptsächlich) win xp
|
erstellt am: 13. Okt. 2011 13:44 <-- editieren / zitieren --> Unities abgeben:
danke noctis funktioniert supper
jetzt versuche ich nurnoch irgendwo festzulegen das er das ganze dann 2 mal druckt. habe auch schon folgenden befehl gefunden oPrintMgr.NumberOfCopies = 2 allerdings weis ich nicht genau an welcher stelle ich ihn einfügen muss. entweder er bringt nen fehler oder der befehl wird einfach ignoriert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noctis79 Mitglied Konstrukteur/ CAD-Administrator
Beiträge: 164 Registriert: 07.10.2009 Inventor Pro 2017 Cideon Workspace
|
erstellt am: 13. Okt. 2011 16:13 <-- editieren / zitieren --> Unities abgeben: Nur für dero2k
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 13. Okt. 2011 18:41 <-- editieren / zitieren --> Unities abgeben: Nur für dero2k
Hi Natürlich listet ThisApplication.Documents alle Bauteile einer Baugruppe mit auf. Die Bauteile müssen ja auch geöffnet werden, damit die Baugruppe auch einen Inhalt hat. Das ist normal und richtig so. Für den Druck prüft man halt auf den Dokumenttyp und wenn's keine IDW ist, springt man zum nächsten. ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noctis79 Mitglied Konstrukteur/ CAD-Administrator
Beiträge: 164 Registriert: 07.10.2009 Inventor Pro 2017 Cideon Workspace
|
erstellt am: 13. Okt. 2011 19:16 <-- editieren / zitieren --> Unities abgeben: Nur für dero2k
k, verstanden. Documents gibt mir also alles zurück und visibledocuments nur die Teile/ Zeichnungen die im Moment im IV- Fenster auch angezeigt werden. Man kann also davon ausgehen, dass bei diesem Makro die Funktion visibleDocuments (je nach größe der BG) etwas schneller arbeitet als documents. Stellt sich nur die Frage ob der User davon was mitbekommt... Thx! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |