Beiträge: 51
Themen: 10
Danke erhalten: 0 in 0 Posts
Danke gesagt: 31
Registriert seit: 03.06.2020
02.02.2021, 13:41
(Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2021, 13:46 von Olaf.)
Hallo liebes Forum,
Koter hier aus dem Forum hat mir einen tollen Code zum Exportieren einer DXF Datei aus Corel erstellt, hat jemand eine idee wie ich diesen Code genau verändern müsste damit ich die Datei als PDF exportieren kann?
Ich habe es mit kleinen Änderungen zwar hingekriegt, erhalte aber trotzdem eine Fehlermeldung und habe leider auch kein gutes Gefühl dabei da es mir nur durch rumprobieren gelungen ist ohne wikrliche Fachkenntnisse.
Dies ist der Original Code für die DXF Datei:
Code: Option Explicit
Sub ExportDXF()
Dim expflt As ExportFilter
Dim l As Layer
Dim Pfad As String, Dateiname As String
Dim Anzahl As Integer
For Each l In ActivePage.Layers: l.Printable = False: Next 'Alle Ebenen nicht druckbar schalten
ActivePage.Layers("Platten").Printable = True 'Ebene druckbar schalten
ActivePage.Layers("Export").Printable = True 'Ebene druckbar schalten
Pfad = "\\hb-dc01\work\Hauptordner_FERTIGUNG\_3_LASER\Sonderanfertigung\"
Anzahl = Dialog1.TextBox7 'Anzahl frtelegen
Dateiname = Dialog1.TextBox6 'Dateiname festlegen
Dateiname = Pfad & Dateiname & Replace("_Stck_X.dxf", "X", Anzahl) 'Dateiname vervollständigen und Anzahl einfügen
Set expflt = ActiveDocument.ExportEx(Dateiname, cdrDXF) 'Exportfilter setzen
With expflt
.Version = 4 'DXF Version festlegen
.Units = cdrMillimeter ' Maßeinheit festlegen
.Finish ' Filter ausführen
End With
End Sub
Vielleicht hat ja mjemand eine Idee dazu...
Perfekt wäre es wenn ich die Größe des Zeichnungsobjekts auf der PDF skalieren bzw. einfach erhöhen kann da es mit auf der PDF noch zu klein ist.
Vielen Dank schon im vorraus für die Hilfe.
Gruß
Olaf
Betriebssystem / Grafik-Software: Corel Draw GS SE 2018
•
Beiträge: 1.437
Themen: 11
Danke erhalten: 273 in 232 Posts
Danke gesagt: 26
Registriert seit: 24.03.2012
Hallo Olaf,
ich hatte diesen Beitrag übersehen, deshalb antworte ich erst jetzt.
Du kannst es mit diesen Code probieren:
Code: Sub ExportPDF()
Dim l As Layer
Dim Pfad As String, Dateiname As String
Dim Anzahl As Integer
For Each l In ActivePage.Layers: l.Printable = False: Next 'Alle Ebenen nicht druckbar schalten
ActivePage.Layers("Export").Printable = True 'Ebene druckbar schalten
Pfad = "\\hb-dc01\work\Hauptordner_FERTIGUNG\_3_LASER\Sonderanfertigung\"
Anzahl = Dialog1.TextBox7 'Anzahl frtelegen
Dateiname = Dialog1.TextBox6 'Dateiname festlegen
Dateiname = Pfad & Dateiname & Replace("AF_Stck_X.pdf", "X", Anzahl) 'Dateiname vervollständigen und Anzahl einfügen
With ActiveDocument.PDFSettings
.PublishRange = 1
.PageRange = "1"
.Author = "Erstellt durch Makro"
.TextAsCurves = True
.Encoding = 1
.pdfVersion = 6
End With
ActiveDocument.PublishToPDF Dateiname
End Sub
Was genau wie und wo skaliert werden soll, habe ich leider noch nicht verstanden.
Auf einen PDF-Betrachter kann man mit VBA natürlich nicht zugreifen.
Gruß
Koter
1 Benutzer bedankt sich bei koter für diesen Beitrag:1 Benutzer bedankt Danke koter für diesen Beitrag
• Olaf
Beiträge: 51
Themen: 10
Danke erhalten: 0 in 0 Posts
Danke gesagt: 31
Registriert seit: 03.06.2020
Hallo Koter,
ganz vielen Dank, der Code funktioniert sehr gut. Was ich meinte mit dem skalieren....
Die PDF soll bei Bedarf ausgedruckt werden (DIN A4). Auf dem Ausdruck bzw der PDF sind die Zeichenobjekte aus Corel sehr klein, da war die Frage ob man beim Export diese automatisch prozentual vergrößeren kann... war nur so eine idee, ist aber kein muss.
Gruß
Olaf
Betriebssystem / Grafik-Software: Corel Draw GS SE 2018
•
Beiträge: 1.437
Themen: 11
Danke erhalten: 273 in 232 Posts
Danke gesagt: 26
Registriert seit: 24.03.2012
Hallo Olaf,
Ich hoffe, dass ich es richtig verstanden habe:
Code: Sub ExportPDF()
Dim l As Layer
Dim Pfad As String, Dateiname As String
Dim Anzahl As Integer
Dim sr As ShapeRange
Dim Rand As Double
Dim RR As Shape
ActiveDocument.Unit = cdrMillimeter
Set sr = ActivePage.Layers("Export").Shapes.All
For Each l In ActivePage.Layers: l.Printable = False: Next 'Alle Ebenen nicht druckbar schalten
ActivePage.Layers("Export").Printable = True 'Ebene druckbar schalten
Pfad = "\\hb-dc01\work\Hauptordner_FERTIGUNG\_3_LASER\Sonderanfertigung\"
Anzahl = Dialog1.TextBox7 'Anzahl frtelegen
Dateiname = Dialog1.TextBox6 'Dateiname festlegen
Dateiname = Pfad & Dateiname & Replace("AF_Stck_X.pdf", "X", Anzahl) 'Dateiname vervollständigen und Anzahl einfügen
Set l = ActivePage.Layers("Export")
Rand = sr.SizeHeight * 0.05
Set RR = l.CreateRectangle(sr.LeftX - Rand, sr.TopY + Rand, sr.RightX + Rand, sr.BottomY - Rand)
RR.Outline.SetProperties , , CreateRGBColor(255, 255, 255)
sr.Add RR
sr.CreateSelection
With ActiveDocument.PDFSettings
.PublishRange = 2
.PageRange = "1"
.Author = "Erstellt durch Makro"
.TextAsCurves = True
.Encoding = 1
.pdfVersion = 6
End With
ActiveDocument.PublishToPDF Dateiname
ActiveSelectionRange.RemoveFromSelection
RR.Delete
End Sub
Gruß
Koter
1 Benutzer bedankt sich bei koter für diesen Beitrag:1 Benutzer bedankt Danke koter für diesen Beitrag
• Olaf
Beiträge: 51
Themen: 10
Danke erhalten: 0 in 0 Posts
Danke gesagt: 31
Registriert seit: 03.06.2020
Hallo Koter,
vielen Dank. Leider verstehe ich nicht welcen Wert ich ändern müsste um die Größe des Zeichenobjekts zu ändern. Logisch war für mich
Rand = sr.SizeHeight * 0.05
Das hat aber leider nicht funktioniert.
Kannst du mir eine Tipp geben?
Gruß
Olaf
Betriebssystem / Grafik-Software: Corel Draw GS SE 2018
•
Beiträge: 1.437
Themen: 11
Danke erhalten: 273 in 232 Posts
Danke gesagt: 26
Registriert seit: 24.03.2012
Hallo Olaf,
das Makro soll nur die Objekte auf der Exportebene exportieren und einen kleinen Rand einfügen, damit keine Linie auf dem Papierrand liegt.
Ich habe die Aufgabe aber wohl doch falsch verstanden.
Über die Formulierung „automatisch prozentual vergrößeren“ habe ich jetzt noch einmal ein Stündchen gegrübelt aber sie will mir nicht in den Schädel. Ich komme einfach nicht dahinter, was genau um wieviel Prozent von was automatisch vergrößert werden soll.
Kannst Du mich irgendwie auf die richtige Spur bringen?
Gruß
Koter
•
Beiträge: 51
Themen: 10
Danke erhalten: 0 in 0 Posts
Danke gesagt: 31
Registriert seit: 03.06.2020
Guten Morgen Koter,
vielleicht habe ich mich auch falsch ausgedrückt, sorry. Ich habe ein Zeichenobjekt in Corel, wenn ich dieses als PDF exportiere ist das Objekt in der PDF und auch beim Ausdruck auf DIN A4 Papier extrem klein, vielleicht 10% von der tatsächlichen Größe in mm (geschätzt).
Das Exportierte Zeichenopjekt muss auf der PDF größer sein, da dachte ich das man dies eventuell mit einem % Wert lösen kann, ich bin aber natürlich wie immer auch für andere Ideen offen.
Weisst Du was ich meine?
Vielen Dank und Dir einen schönen Tag.
Gruß
Olaf
Betriebssystem / Grafik-Software: Corel Draw GS SE 2018
•
Beiträge: 4.895
Themen: 198
Danke erhalten: 305 in 283 Posts
Danke gesagt: 65
Registriert seit: 14.12.2011
Hallo Olaf,
vielleicht würde ein Screenshot von deinem Programmfenster es mehr verdeutlichen.
Beim Screenshot sollte nichts ausgewählt und er Objektmanager sollte geöffnet sein.
Man kann jetzt auch CDRs hier direkt hochladen, falls das eine Option wäre.....
https://forum.juergens-workshops.de/show...?tid=37816
Gruß
Norre
•
Beiträge: 1.437
Themen: 11
Danke erhalten: 273 in 232 Posts
Danke gesagt: 26
Registriert seit: 24.03.2012
Hallo Olaf,
(23.02.2021, 07:56)Olaf schrieb: Das Exportierte Zeichenopjekt muss auf der PDF größer sein, da dachte ich das man dies eventuell mit einem % Wert lösen kann, ich bin aber natürlich wie immer auch für andere Ideen offen.
Wie ich das verstehe sollte das eigentlich das Makro aus Beitrag 4 machen, das läuft bei mir so:
Im Druckdialog vom Acrobat-Reader sieht es so aus:
(23.02.2021, 07:56)Olaf schrieb: Weisst Du was ich meine?
Wenn das, was Du auf den Bildern siehst, nicht das ist was Du meinst, dann weiß ich es leider immer noch nicht.
Gruß
Koter
•
|