Drawing Export Multi-Document Monochrom / CATIA V5 Programmierung
C.Samer 14. Okt. 2019, 15:13

Hallo Leute,

ich würde gerne ein Drawing mit mehreren Sheets und Detail-Sheets als PDF speichern.
Und zwar

    *alle Sheets in einem PDF
    *ohne den Detail-Sheets
    *monochrom (schwarz weiss)

Habe jetzt zwei Ansätze probiert.

    *Alles elektieren und visProperties auf 0 0 0 0 zu stellen, funktioniert aber leider nicht bei Area Fill und eingefügten Excel Tabellen
    *Mit PrintToFile drucken und vorher die Sheet.PageSetup.color = catColorMonochrome zu stellen. Funktioniert super, nur leider nicht
    Multisheet!

Jemand eine Idee wie ich PrintToFile Multisheet ohne Details bekomme?
Oder eine andere Idee? In den Druckeinstellungen von Catia kann man auf Multi-Documents -> All Sheets einstellen und
"print detail sheet" rausnehmwen.

Danke und Gruß,
Christoph

[Diese Nachricht wurde von C.Samer am 23. Okt. 2019 editiert.]

bgrittmann 14. Okt. 2019, 15:51

Servus

Schon mal probiert einzelnen PDFs zB mit Ghostscript zusammen zufassen (ohne die Detail Sheets)?

Gruß
Bernd

C.Samer 14. Okt. 2019, 16:04

Hallo Bernd,

danke soweit für deine Antwort.
Leider kenne ich mich mit Ghostscript nicht aus,
wie würde denn das funktionieren?

Muss man (jeder Client) das extra herunterladen und installieren?

Edit: Oder weißt du vielleicht wie ich die anderen Varianten zum Laufen bekommen könnte?

Gruß,
Christoph

[Diese Nachricht wurde von C.Samer am 14. Okt. 2019 editiert.]

bgrittmann 14. Okt. 2019, 19:44

Servus

Da es von GhostScript eine portable Version gibt, vermute dass du die Anwendung (zB ExecuteProcessus) direkt aufrufen kannst (siehe zB hier)

Gruß
Bernd

C.Samer 15. Okt. 2019, 09:23

Schade, hätte mir gewunschen, es gibt eine Lösung in Catia mit welcher ich
PDF, ohne Detail-Sheets, schwarz weiß, in ein File erstellen kann.

Mit Ghostscript kenn ich mich leider nicht aus und wirkt etwas mit der Kirche ums Kreuz 

Danke trotzdem! Falls jemand einmal eine Lösung findet, bitte, bitte Bescheit geben!

Danke und Gruß,
Christoph

Randle 15. Okt. 2019, 10:46

Moin,

muss die Zeichnung abschließend gespeichert werden?

Gruß
Randle

C.Samer 15. Okt. 2019, 10:55

Hallo Randle!

Nein, das Drawing selbst muss anschließend nicht gespeichert werden :-)

Gruß,
Christoph

Randle 15. Okt. 2019, 11:05

... dann könntest du die Detailblätter vor der PDF Erstellung löschen und dann die Zeichnung ohne zu speichern schließen.

Vorher solltest du allerdings alle 2D Komponenten auf den regulären Blättern zerlegen (die sind sonst weg wenn du die Detailblätter löscht).

Und noch eine Anmerkung:
Ghostscript lässt sich auch aus einem CATIA Makro (zumindest aus catvba) heraus nutzen.

Gruß
Randle

tobul 15. Okt. 2019, 11:21

Hallo!

Mir ist bisher auch keine elegante Lösung ausschließlich in Catia bekannt.

Um die per "Druck" erzeugten einzelnen pdf zusammenzufassen ist nicht unbedingt Ghostscript nötig, das geht (einfacher) mit spezalisierten pdf-Manipulations-Tools wie z.B. pdftk.
cpdf ist auch ein super Tool, aber für kommerziellen Einsatz definitiv kostenpflichtig.

Muss nicht installiert werden, die exe kann einfach irgendwo liegen.
Ansteuerung aus VBA relativ simpel.
Und die pdf werden nicht neu gerendert, was bei Ghostscript u.U. passieren kann.

salu'
tobul

C.Samer 18. Okt. 2019, 09:20

Danke für all eure Antworten!

Wenn ich die Details vor dem Export lösche, dann müsste ich trotzdem noch alles auf dem Drawing befindliche schwarz-weiß bekommen. Bei VisProperties auf 0 0 0 0 sind leider Area Fill und das importierte Excel farbig geblieben (und wer weiß was sonst noch). Wenn das noch jemand lösen kann (Vor allem das Excel, welches ja quasi nur als "Bild" vorliegt, wenn man das Original-Excel nicht hat), dann würde ich das Makro so basteln 

Schade dass es scheinbar keine Möglichkeit gibt alle Blätter direkt aus Catia in ein pdf in schwarz weiß zu exportieren 

Mit Ghostscript kenne ich mich halt leider wirklich nicht aus, mit welchem Befehl ich das von außerhalb starten würde, wenn ich mir die Portable wo ablege, damit er das macht. Und ich glaube, es ist auch weniger erwünscht alle Mitarbeiter dazu zu bringen, sich noch ein Programm auf den Rechner zu ziehen 

Vielen Dank auf jeden Fall und Gruß,
Christoph

bgrittmann 18. Okt. 2019, 16:49

Servus

Hast du mal die Links geöffnet?
Bei Ghostscript sollte es wohl reichen die entsprechende exe in den Aufruf mit einbauen.
Oder bei PDFtk (Server) auch die Zeile anzupassen (vermutlich auch die exe mit Pfad ergänzen).

Gruß
Bernd

C.Samer 23. Okt. 2019, 16:02


SchwarzWeissPDF.zip

 
Hallo Bernd!

Bin schlussendlich nicht um Ghostscript herum gekommen. Danke nochmal an euch alle für die Hilfe!
Für alle die vor dem gleichen Problem stehen, hier mein Code für Schwarz Weiß MultiSheet PDF.

Musste ich leider als Anhang hochladen.
Kann den Code nicht direkt posten, da ich immer folgende Meldung bekomme    :

Gruß,
Christoph

[Diese Nachricht wurde von C.Samer am 23. Okt. 2019 editiert.]

Lionel Hutz 24. Okt. 2019, 14:54

Es folgt Christophs Code:

Code:
' Const glbProject = "Schwarz Weiss PDF"
' Const glbVersion = "1.0"
' Const glbLanguage = "CATSCRIPT"
' Const glbAuthor = "Samer Christoph"
' Const glbCreationDate = "17.Oct.2019, 08:00"
' Const glbLastUpdate = "23.Oct.2019, 16:00"
' Const glbLastUpdatedBy = "Samer Christoph"

Dim objShell
Dim objCMDRun
Dim objFileSystem

Dim strComputer
Dim strProcess

strComputer = "." ' local computer
strProcess = "gswin32c.exe"

sDestinationFile = C:\PDFName

oDrawingDoc.ExportData sDestinationFile, "ps"
Set objShell = CreateObject("WScript.Shell")
objCMDRun = objShell.Run("" & Chr(34) & Chr(37) & "ProgramFiles(x86)" & Chr(37) & _
"\gs\gs9.50\bin\gswin32c.exe" & Chr(34) & " -sBATCH -dNOPAUSE -q" & _
" -sDEVICE=pdfwrite -sColorConversionStrategy=Gray -sProcessColorModel=DeviceGray" & _
" -sOutputFile=" & Chr(34) & sDestinationFile & ".pdf" & Chr(34) & " -c " & Chr(34) & _
"/setrgbcolor{0 mul 3 1 roll 0 mul 3 1 roll 0 mul 3 1 roll 0 mul add add setgray}def" & Chr(34) & _
" -f " & Chr(34) & sDestinationFile & ".ps" & Chr(34), 0, True)

Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Do While isProcessRunning(strComputer, strProcess)
DoEvents
Loop
 
objFileSystem.DeleteFile ("" & sDestinationFile & ".ps")