Dieses Script erzeugt beim Schließen ein PDF des Projektes.
Vielen Dank an FrankS
Der Code ist in VB.NET!
Im Script kann der Speicherort festgelegt werden (Zeile 30):
‘Hier einstellen wohin die PDF-Datei gespeichert werden soll!’1 = in den Projekt-Ordner’2 = in den Ordner eine Ebene über dem Projekt-Ordner’3 = in Ordner “Eigene Dateien”‘4 = auf den Desktop
1 = in den Projekt-Ordner
2 = in den Ordner eine Ebene über dem Projekt-Ordner
3 = in Ordner “Eigene Dateien”
4 = auf den Desktop
5 = Speicherort frei wählbar
Suplanus - Scripts - PDFbyProjectClose V2.1.0.vb (2432 Downloads )
' PDFbyProjectClose, Version 2.1.0, vom 14.04.2009
'
' Beim schließen eines Projektes wird automatisch eine
' PDF-Datei mit Projektnamen angelegt.
'
' Copyright by Frank Schöneck, 2008
' letzte Änderung: nairolf , 04.12.2008 V1.1.0, Projekt-Ordner ermitteln
' Frank Schöneck, 15.01.2009 V1.2.0, Auswahl Ausgabe-Ordner
' Frank Schöneck, 26.01.2009 V1.3.0, Progressbar hinzugefügt
' Frank Schöneck, 14.04.2009 V2.0.0, Neue Funktionen für Projektname + Pfad
' Johann Weiher, 12.03.2010 V2.1.0, Neue Funktionen für Speicherort frei wählbar
'
' für Eplan Electric P8, ab V1.9.5
'
'
Public Class PDFbyProjectClose
<DeclareEventHandler("onActionStart.String.XPrjActionProjectClose")> _
Public Function MyEventHandlerFunction(ByVal iEventParameter As IEventParameter) As Long
'MessageBox.Show("Projekt schließen wurde gestartet!")
Dim strPDFDatei As String
Dim strProjektOrdner As String
Dim strAusgabeOrdner As String
Dim AusgabeNach As Integer
'Hier einstellen wohin die PDF-Datei gespeichert werden soll!
'1 = in den Projekt-Ordner
'2 = in den Ordner eine Ebene über dem Projekt-Ordner
'3 = in Ordner "Eigene Dateien"
'4 = auf den Desktop
'5 = Speicherort manuell wählen
AusgabeNach = 5 '<-- hier einstellen
strProjektOrdner = PathMap.SubstitutePath("$(PROJECTPATH)")
Select Case AusgabeNach
Case 1
'in den Projekt-Ordner
strAusgabeOrdner = strProjektOrdner
Case 2
'in den Ordner eine Ebene über dem Projekt-Ordner
strAusgabeOrdner = strProjektOrdner.Substring(0, strProjektOrdner.LastIndexOf("\"))
Case 3
'in Ordner "Eigene Dateien"
strAusgabeOrdner = Environment.GetFolderPath(Environment.SpecialFolder.Personal)
Case 4
'in Ordner "Desktop"
strAusgabeOrdner = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
Case 5
Dim FolderBrowserDialog1 As New FolderBrowserDialog
With FolderBrowserDialog1
.RootFolder = Environment.SpecialFolder.Desktop
.Description = "Zielordner:"
If .ShowDialog = DialogResult.OK Then
' Display the selected folder if the user clicked on the OK button.
strAusgabeOrdner = .SelectedPath
End If
End With
Case Else
MessageBox.Show("Variable 'AusgabeNach' wurde nicht korrekt eingestellt.", "PDFbyProjectClose", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Function
End Select
strPDFDatei = strAusgabeordner & "\" & PathMap.SubstitutePath("$(PROJECTNAME)") & ".pdf"
'MessageBox.Show(strPDFDatei)
PDFexport(strPDFDatei)
Return 0
End Function 'MyEventHandlerFunction
Public Sub PDFexport(ByVal strZielDatei As String)
'Gesamtes Projekt als PDF ausgeben
'Progressbar ein
Dim oProgress as New Eplan.EplApi.Base.Progress("SimpleProgress")
oProgress.ShowImmediately
Dim pdfContext As New ActionCallingContext()
pdfContext.AddParameter("TYPE", "PDFPROJECT")
pdfContext.AddParameter("EXPORTFILE", strZielDatei) 'Name export.Projekt, Vorgabewert: Projektname
pdfContext.AddParameter("USEZOOMLEVEL", "1") 'Springen in Navigationsseiten
pdfContext.AddParameter("ZOOMLEVEL", "1") 'wenn USEZOOMLEVEL auf 1 dann hier Zoomstufe in mm
pdfContext.AddParameter("USESIMPLELINK", "1") '1 = einfache Sprungfunktion
pdfContext.AddParameter("FASTWEBVIEW", "1") '1 = schnelle Web-Anzeige
pdfContext.AddParameter("READONLYEXPORT", "2") '1 = PDF wird schreibgeschützt
pdfContext.AddParameter("BLACKWHITE", "1") '1 = PDF wird schwarz-weiss
Dim CommandLineInterpreter As New CommandLineInterpreter()
CommandLineInterpreter.Execute("export", pdfContext)
'Progressbar aus
oProgress.EndPart(True)
Return
End Sub
End Class
Hallo jonny
gibt es in dem Script “PDF on closing project” eine Möglichkeit das PDF in ein bestimmtes Verzeichnis erzeugen zulassen. Das Zielverzeichnis steht im Benutzer Zusatzfeld 50.
Ich kenne mich nicht mit der Erstellung von Scripten aus, es wäre für mich sehr hilfreich wenn man das vorhandene Script hieraus erweitern könnte.
Gruß Martin
Was ist es für ein Verzeichnis? wenn es im Projektordner ein “festes” Verzeichnis ist kann man das ganz einfach machen.
Aber der Umweg über Benutzer Zusatzfeld 50 (Projekteigenschaft? Genaue ID wäre hilfreich!) würde auch gehen…
Sag kurz Bescheid :cool:
Hall Jonny,
besteht auch die Möglichkeit das Script so zu änderen,das man auch ohne das Projekt zu schließen ein PDF erzeugen kann? Über Icon?
Gruß Uli
Ja das geht… hab das noch auf meiner To-Do-Liste… ich werde das ganze gleich für 2.0 bauen, aber da wir noch nicht umgestellt haben, ist dieser Punkt noch ziemlich weit hinten :silly:
Hallo Jonny
Ich hatte an das Benutzter Zusatzfeld 100 in den Projekteigenschaften gedacht
Danke
Hallo Jonny
Konnstest Du schon für mich etwas tun.
Danke
Martin
Sorry
Die Feld ID ist
Gruß Martin
Zuerst will ich den PDF export machen für 2.0 mit vielen Einstellmöglichkeiten.
Werd dann deines miteinbauen…
Mach mal die Script-Schulung von EPLAN. Dauert 2 Tage danach kannst du dir das selber bauen :) (uuuuund viel mehr)
Gruß
Jonny
DANKE für die Info
Hi,
kannst du mir verraten wie man den Returncode vom Progressbar abfragt (sofern der einen hat) ?
Ich muss prüfen ob jemand den “Abbruch” Knopf gedrückt hat.
Wenn es den Progressbar auch ohne Abbruch Button gibt wäre es natürlich auch fein :smile:
Besten Dank für Deine Skripte. Ich finde es super das Du sie teilst.
Eiso eine Progressbar ohne abbrechen gibt es leider nicht (muss man selber bauen).
Beispiel:
Aber es kommt immer auf die Eplan Action an, ob diese das abbrechen unterstützt.
In cs scheint das zu funktionieren:
in VB aber anscheinend nicht.
Danke für das Beispiel.
Prima wäre, wenn man auch vom normalen PDF Export “Seite->Exportieren->PDF”das dort eingestellte “Ausgabeverzeichnis” auch beim “PDF on closing project” auswählen kann, dort haben wir nämlich immer den kompletten Pfad hinterlegt, wo das PDF abgelegt werden soll, wenn es per Hand erzeugt wird. Und logischerweise soll das “Automatische” PDF beim Schliessen ja auch genau da hin.
Ansonsten ist das Skript genau das, was wir jeden Tag brauchen, damit bei uns alle immer aktuelle Pläne haben. Viele nDank für dieses tolle Skript!
I was recommended this blog by my cousin. I’m not sure whether this post is written by him as nobody else know such detailed about my difficulty. You’re wonderful! Thanks!
Hi,
wäre es auch möglich, dass beim Schließen des Projektes eine Abfrage erscheint ob ein pdf erstellt werden soll oder nicht.
Außerdem wäre es gut, wenn bei der abgespeicherten Datei automatisch das Tagesdatum angehängt wird (z.B. PROJEKTNAME_20110907) .
Danke
Gruß
Kein Problem.
Schau dir die Beispiele meines Buches an. Kannst auch kostenlos downloaden:
12_Dateien_schreiben/03_PDF_beim_Schließen_erzeugen.cs
10_Dateien_und_Ordner/04_Datei_mit_Datumstempel.cs
Beides im Visual-Studio Projekt zu finden:
Buch
Hallo Jonny,
habe Dein Buch gekauft und finde den Einstieg sehr gut. Vielleicht kannst Du mir folgende Frage beantworten:
Ist es möglich beim PDF-Export nur bestimmte Seiten(typen) auszugeben?
Wir würden gerne einige spezielle Seiten aus einem größeren EPLAN-P8 Projket in ein eigenes PDF schreiben (z.B. Lageplan, Prinzipschaltpläne)
Danke
Hoi,
leider nicht, da ein Script nicht auf die Selektion etwas ausführen kann sondern nur auf das Projekt.
Mir ist kein Weg bekannt, sorry.
Gruß
Johann
Hallo,
wenn die betreffenden Seiten mit einem Filter im Seiten-Navi zu packen sind, sollte es gehen.
Gruß
FrankS
Hallo Zusammen,
den Weg, selektierte Seiten als PDF zu erzeugen, habe ich über diverse Foren gefunden. Im Prinzip brauch ich “nur” einen Befehl, der mit via Script Seiten selektiert. So wie FrankS es angedacht hat.
Ok nächstes Jahr weiter.
Auch schöne Weihnachten und eine guten Rutsch
Burkhard
Hallo Johann,
da ich von Scripten keine Ahnung habe,bitte ich dich,mir das Script
so zu ändern,das der Speicherort Z:\ordner1(fest eingestellt)\ordner2(fest eingestellt)\ordner 3(frei wählbar)ist.
Danke im vorraus.
Gruß Uli
@fritzemann
Ändere Zeile 52 bitte wie folgt ab:
ALT:
.RootFolder = Environment.SpecialFolder.Desktop
NEU:
.RootFolder = “Z:\ordner1(fest eingestellt)\ordner2(fest eingestellt)”
und kontrollier ob in Zeile 33 folgendes steht:
AusgabeNach = 5 ‘<– hier einstellen
@FrankS
hallo und vielen Dank für die schnelle Hilfe.
Leider funktioniert es nicht ganz richtig.
Das Programm sollte nach dem 2.Ordner stehen bleiben damit ich manuell den 3.Ordner aussuchen kann. Der 3.Orndner sind die Kundenordner,die
sich jeh nach Projekt verändern. Ordner 1+Ordner 2 verändern sich nicht.
Danke Uli
Ok, man sollte vielleicht doch den Code vorher ausprobieren :whistle:
NEUE Zeile 52:
.SelectedPath = “Z:\ordner1(fest eingestellt)\ordner2(fest eingestellt)”
ist nicht die perfekte Lösung, aber besser geht es im Moment nicht :cwy:
Guten Morgen FrankS,
danke für deine Hilfe .
Es hat soweit funktioniert.
Gruß Uli
:?Hallo allerseits,
ich habe das Problem, dass in dem Script zwar der richtige Dateiname generiert wird (ich lasse den zur Kontrolle in einer MsgBox anzeigen), aber die Datei dann unter dem Dateinamen der zuletzt gewählten PDF-Export-Konfiguration von EPLAN gespeichert wird.
Anscheinend gibt es bei der Übergabe der Variablen ‘strZielDatei’ ein Problem.
Jemand ne Idee, woran das liegt?
Gruß, Andreas.
Hallo Andreas,
ohne dein Script zu sehen hab ich keine Idee :(
Hallo,
kann mir jemand bitte weiter helfen. Ich möchte in Zeile 65 statt $(PROJECTNAME) den Wert aus dem Benutzer Zusatzfeld 1 einfügen ID=40001. Habe mir das ProjectInfo Skript auch schon angeschaut. Bekomme die beiden aber nicht zusammen gebastelt.
Habe auch schon erfolgreich eine Abfrage eingebaut ob er beim schließen eine PDF erzeugen soll oder nicht.
Du musst die Projekteigenschaft auslesen, das geht leider nicht so einfach, siehe hier.
Ich möchte den PDF-Export immer in deutsch ausführen. Deshalb habe ich folgende Zeilen am Anfang des Scripts ergänzt:
ActionCallingContext LanguageContext = new ActionCallingContext();
LanguageContext.AddParameter(“display”, “de_DE”);
LanguageContext.AddParameter(“variable”, “de_DE”);
oCli.Execute(“SetProjectLanguage”, LanguageContext);
Leider wird die Sprachumschaltung erst wirksam, nach dem das Script beendet ist. Somit erfolgt der PDF-Export in der zuletzt benutzen Sprache.
Was kann ich gegen diese Laufzeitprobleme tuen?
Bei mir klappt das ohne Probleme. Kann es sein dass du evtl. an anderer Stelle die Sprache setzt?
Danke für die aufmunternden Worte – heutiger erneuter Versuch brachte den ersehnten Erfolgt :-). Nun wird das Projekt automatisch in deutsch und mit einer eingeschalteten eigenen Ebene ausgegeben. Folgende Zeilen sind o.a. Zeilen nachgeordnet und schalten eine eigene Ebene sichtbar:
ActionCallingContext EbeneEin = new ActionCallingContext();
EbeneEin.AddParameter(“Layerstate”, “MONTAGEINFORMATIONEN| |y|y|”); // “<EBENE>|<Textgröße>|<Sichtbar>|<Drucken>|<Farbe>”
new CommandLineInterpreter().Execute(“ToggleLayers”, EbeneEin);
Hallo Zusammen
Ich verwende im Script den Befehl unten um vor dem PDF Export die Ebene Ein- bzw. Auszuschalten.
Gibt es auch eine Möglichkeit zu prüfen ob die Ebene Ein- bzw. Ausgeschaltet ist?
“`csharp
new CommandLineInterpreter().Execute(“ToggleLayers /LAYERSTATE:\”MontageHinweis|||n|13\””);
“`
Bei uns ist es üblich die Kommentare ab einem gewissen Index auszuschalten.
Da das Schema meist mit Index 1 unser Haus verlässt prüfe ich den Index
und biete dem Benutzer an die Ebene mit den Kommentaren auszuschalten. Soweit klappt das.
Jedoch möchte dies aber nur dann anzeigen wenn die Kommentare noch nicht ausgeblendet wurden.
Gruss und schöne Ostern, Yves
Hallo Yves,
einfach leider nur per API.
Mit Scripting fällt mir nur der Workaround ein die Ebenen vor dem Export als XML zu exportieren und diese dann zu durchsuchen ob eine Ebene aktiv ist:
https://www.eplan.help/help/platform/2.8/de-DE/help/EPLAN_help.htm#htm/availableactions_o_GraphicalLayerTable.htm
Hallo, funktioniert das Script noch in Eplan 2024? Ausgeführt wird es, jedoch erzeugt er leider keine PDF. Eine Fehlermeldung gibt es auch nicht. Kenne mich mit den Scripten leider nicht so gut aus und bin etwas ratlos. Vielen Dank für eure Hilfe
Versuch mal den PDFAssistent von Frank:
https://ww3.cad.de/foren/ubb/Forum467/HTML/014513.shtml#000012