Autor
|
Thema: PDF Export in Catia (669 mal gelesen)
|
bobbob Mitglied
Beiträge: 8 Registriert: 22.02.2023
|
erstellt am: 22. Feb. 2023 14:55 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich habe folgendes Problem: Ich möchte DWG Dateien in PDFs umwandeln. Das funktioniert soweit auch, nur ist das ausgegebene PDF-Format zu klein und bildet nur einen Ausschnitt der originalen Datei ab. Beispiel: DWG ist A2 -> PDF ist nur A4 und bildet nur diesen Ausschnitt ab (offene DWG über speichern unter (PDF)) Gibt es eine Einstellung, mit der sich dieses Problem beheben lässt? Variable Anpassung des Druckbereiches oder Ähnliches? Ich würde die DWGs gern automatisch in PDFs umwandeln, das Makro habe ich bereits und es funktioniert, nur das Format passt noch nicht. Ich hoffe ihr könnt mir da weiterhelfen. Danke Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 22. Feb. 2023 16:54 <-- editieren / zitieren --> Unities abgeben: Nur für bobbob
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 22. Feb. 2023 19:32 <-- editieren / zitieren --> Unities abgeben: Nur für bobbob
Servus Ergänzend zu der Rückfrage von Randle: - willst DWG oder CATDrawings in PDFs umwandeln?
- ist das Blattform richtig in der Zeichnung eingestellt?
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bobbob Mitglied
Beiträge: 8 Registriert: 22.02.2023
|
erstellt am: 23. Feb. 2023 06:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Randle, hallo Bernd, erstmal danke für eure Antworten. Ich benutze folgenden Code: Sub CatMain() Dim fileSys Set fileSys = CATIA.FileSystem Dim FolderPath FolderPath = InputBox("Enter a folder path:", "Folder path to convert the drawings", sDocPath & "P:\DrawingtoPDF") Dim filefolder Set filefolder = fileSys.GetFolder(FolderPath) Dim i As Integer 'loop through all files in the folder For i = 1 To filefolder.Files.Count Dim IFile Set IFile = filefolder.Files.Item(i) 'if the file is a CATDrawing, then open it in CATIA If InStr(IFile.Name, ".CATDrawing") <> 0 Then Dim Doc Set Doc = CATIA.Documents.Open(IFile.Path) Set PartDocument1 = CATIA.ActiveDocument Dim drawingName As String drawingName = Len(CATIA.ActiveDocument.Name) pdfName = Left(CATIA.ActiveDocument.Name, drawingName - 11) 'msgbox partt PartDocument1.ExportData FolderPath & "\" & pdfName, "pdf" 'close the open drawing documentCATIA.ActiveDocument.Close() End If Next 'go to the next drawing in the folder End Sub Ich gehe also über Export. Wenn ich selbst ein Drawing erstelle und mein Seitenformat selbst festlege, dann funktioniert es. Nur ich möchte gern auch DWGs umwandeln, die von anderen erstellt wurden. Das funktioniert auch (Abänderung Code), nur passt das Format nicht. Auch wenn ich die DWG Dateien in CATDrawings und dann erst in PDFs umwandle wird es nicht besser.
Ich suche eine Einstellmöglichkeit, mit der ich die Exporteinstellung des PDF Formates flexibel an die tatsächliche Größe der Datei anpassen kann. Gibt es so etwas überhaupt? Ich würde mich freuen, wenn ihr mir da weiterhelfen könnt. Bis jetzt habe ich die DWGs immer manuell über PDF Drucken und die Einstellung des Dateiformates auf (A3,A2,...) exportiert. Das ist bei hunderten Zeichnungen aber extrem lästig... VG Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bobbob Mitglied
Beiträge: 8 Registriert: 22.02.2023
|
erstellt am: 23. Feb. 2023 15:06 <-- editieren / zitieren --> Unities abgeben:
Ich habe noch etwas probiert und festgestellt, dass es so bei 50% der Dateien funktioniert. Könnte auch sein dass die ursprünglichen DWG Dateien unterschiedlich erstellt wurden. Mein zweiter Ansatz wäre noch der Versuch über Sendkeys und die Option Drucken über Print to PDF. Meine SendKeys werden aber nicht in der einzigen offenen DWG Datei ausgeführt sondern in der Programmierumgebung, wie verweise ich von da auf mein aktives Dokument? Das ist mein Ansatz: (den würde ich, wenn er funktioniert in mein bestehendes Makro einfügen) Sub CATMain() Dim activedoc As Document Set activedoc = CATIA.ActiveDocument CATIA.RefreshDisplay = True SendKeys "^p{enter}" SendKeys "{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}" SendKeys "^v{Enter}" End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 23. Feb. 2023 16:22 <-- editieren / zitieren --> Unities abgeben: Nur für bobbob
Servus Ich vermute dass beim öffnen der DWGs nicht das richtige Blattformat gesetzt wird. Falls dem so ist kannst du für jedes Sheet mit .PaperSize das richtige Format einstellen (falls bekannt) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bobbob Mitglied
Beiträge: 8 Registriert: 22.02.2023
|
erstellt am: 24. Feb. 2023 16:14 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, das habe ich schon gemacht. Das ändert aber nur meine Ausgabegröße und nicht das, was eigentlich gedruckt wird. Der kleine Ausschnitt wird nur skaliert auf A4 bzw. A3... Der Ausschnitt bleibt aber der selbe. Wie kann ich die Druckeinstellungen festlegen? Wenn ich händisch drucke kann ich zum Beispiel auswählen: Microsoft Print to Pdf und dann A3 und dann FIT IN PAGE und schon wird alles passend skaliert. Das reicht mir auch. Wie bekomme ich das im Makro umgesetzt? Vielen Dank für eure Hilfe und ein schönes Wochenende! VG Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 24. Feb. 2023 16:36 <-- editieren / zitieren --> Unities abgeben: Nur für bobbob
|
bobbob Mitglied
Beiträge: 8 Registriert: 22.02.2023
|
erstellt am: 27. Feb. 2023 08:15 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich benutze folgen Code: Sub Draw_tif() Dim Shell As Object Dim Anzahl As Integer Dim sDruckerAktuell As String Dim aktiverDrucker CATIA.ActivePrinter = CATIA.Printers.Item("Microsoft Print to PDF") 'Dim objClip As DataObject 'Set objClip = New DataObject Set Shell = CreateObject("Shell.Application") Ordner = InputBox("Enter a folder path:", "Folder path to convert the drawings", sDocPath & "Y:\") 'Start ab Ordner 'Ordner = Shell.BrowseForFolder(0, "Wähle den Ordner mit den Drawings aus", 0).Self.Path 'alternativ 'ZielOrdner = Shell.BrowseForFolder(0, "Wähle den ZielOrdner für die Tiffs aus", 0, "C:\V5-TIF").Self.Path 'Start ab Ordner ZielOrdner = Ordner If Ordner <> "" Then File = Dir(Ordner & "\*.DWG") Do While Len(File) Filename = Ordner & "\" & File tiffilename = ZielOrdner & "\" & Replace(File, ".DWG", ".PDF") CATIA.Documents.Open (Filename) Set activedoc = CATIA.ActiveDocument Set drawingDocument1 = CATIA.ActiveDocument Set drawingSheets1 = drawingDocument1.Sheets Set drawingSheet1 = drawingSheets1.Item("Model")
'drawingSheet1.PageSetup.FitToSheetFormat = True 'drawingSheet1.PageSetup.Zoom = 1 'drawingSheet1.PaperSize = catPaperA0 'drawingSheet1.PageSetup.PaperHeight = 860 'drawingSheet1.PageSetup.PaperWidth = 1700 'drawingSheet1.Orientation = catPaperLandscape 'activedoc.ExportData tiffilename, "pdf" 'drawingSheet1.PrintOut CATIA.RefreshDisplay = True ' drawingSheet1.PrintToFile tiffilename 'activedoc.Close File = Dir
Anzahl = Anzahl + 1 Loop MsgBox "keine weiteren DWGs, umgewandelten DWGs " & Anzahl End If End Sub
sowohl Printto als auch export führen zum selben Ergebnis.
Im Anhang habe ich mal eine funktionierende DWG und eine nicht funktionierende DWG angehangen. Die Zeichnungen habe ich etwas unkenntlich gemacht, also nicht wundern Mir erschließt es sich nicht, warum es nicht funktioniert... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bobbob Mitglied
Beiträge: 8 Registriert: 22.02.2023
|
erstellt am: 27. Feb. 2023 08:17 <-- editieren / zitieren --> Unities abgeben:
|
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 27. Feb. 2023 11:56 <-- editieren / zitieren --> Unities abgeben: Nur für bobbob
Hallo, also wenn ich mir das so ansehe, stelle ich fest das die Blattgröße viel zu klein für die Ansicht ist (oder andersrum die Ansicht ist zu groß für die Blattgröße) -> siehe Screenshot. Auch wenn man die PDF manuell erzeugt, ist nicht alles drauf. Also am Makro liegt es nicht. (getestet mit R27 SP2) Wie werden denn die DWG's erzeugt? Haben da alle die gleichen Einstellungen? Sind da in den Originaldateien irgendwelche Maßstäbe mit drin? Gruß Randle ------------------ Planung ersetzt Fehler durch Irrtum! [Diese Nachricht wurde von Randle am 27. Feb. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bobbob Mitglied
Beiträge: 8 Registriert: 22.02.2023
|
erstellt am: 27. Feb. 2023 12:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Randle, genau das Problem habe ich. Die DWGs werden nicht von mir erzeugt. Ich bekomme sie vom Anlagenaufbauer und habe keinen Einfluss darauf. Es ist nur komisch, dass die Blattgröße wahllos variiert. Ich kann da kein System erkennen. Was meinst du mit den Maßstäben? Kann ich die auslesen? Wobei die Option Zoom hat mich auch nicht weitergebracht. Wenn ich die Datei händisch drucke (PDF) kann ich Fit in Page auswählen und dann geht es. Nur wie bekomme ich das ins Makro rein? Das finale Format und die Blattausfüllung ist nicht so wichtig. Ich möchte nur alles auf einem Dokument haben. Ich hatte noch die Idee, den händischen Druckablauf über Sendkeys nachzubilden. Strg +P -> nur leider werden die Sendkeys immer nur im VBA Fenster ausgeführt. Keine Ahnung was ich da noch für einen Befehl davor setzen könnte, um die Sendkeys aufs aktuelle Catia Fenster zu beziehen. Ich danke euch für eure Hilfe. VG Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 27. Feb. 2023 14:56 <-- editieren / zitieren --> Unities abgeben: Nur für bobbob
Meine Vermutung ist, das die Ersteller der Originale einen Maßstab auf das Zeichnungsblatt und/oder die Ansicht angewendet haben. Das wirst du aber ohne die Originale nicht rausbekommen, da der Import auf beides immer (soweit ich sehen und testen konnte) den Maßstab 1:1 anwendet. Ich konnte das "Verhalten" innerhalb von CATIA V5 "nachstellen", so das ich ähnliche Ergebnisse hatte. Evtl. geht es mit einem anderen Format (DXF) besser, oder man gibt dem Zulieferer klare Vorgaben (z.B. das er die PDFs selber liefert). Wenn du da was mit Sendkey machen willst muss du das entsprechende Fenster vorher aktivieren. Code:
Dim WshShell Set WshShell = CreateObject("WScript.Shell") Call WshShell.AppActivate(FENSTERNAME/TITEL AS STRING, True)
Gruß Randle ------------------ Planung ersetzt Fehler durch Irrtum! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bobbob Mitglied
Beiträge: 8 Registriert: 22.02.2023
|
erstellt am: 27. Feb. 2023 15:22 <-- editieren / zitieren --> Unities abgeben:
Ich habe jetzt eine Lösung gefunden. mit dem Befehl MaximumSize = True wird alles auf ein Blatt gepresst. Die zu großen Dateien passen nun perfekt in das vor eingestellte Ausgabeformat (A0). Alle kleineren werden in ihrer tatsächlichen Größe abgedruckt. Also A3 eben als A3 auf A0 Format, das ist für mich aber okay. drawdrawingsheet1.PageSetup.MaximumSize = Trueingsheet1.PageSetup.MaximumSize = True Zukünftig soll der Lieferant uns gleich die passenden PDFs zu Verfügung stellen, das habe ich schon so weiter gegeben. Spart mir zukünftig eine Menge Nerven und Zeit. Danke für eure Hilfe! Vielleicht bekomme ich es noch hin die richtige Größe auszulesen und das Ausgabeformat (A0..A3) entsprechend einzustellen. Viele Grüße Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |