Das Script muss geladen werden. Wird nun ein Projekt geschlossen erscheint eine Messagebox:
- Ja: Backup im Projektordner
- Nein: Nix :tongue:
BackupOnClosingProject (1895 Downloads )
public class BackupOnClosingProject
{
[DeclareEventHandler("onActionStart.String.XPrjActionProjectClose")]
public void Function()
{
string strProjectname = PathMap.SubstitutePath("$(PROJECTNAME)");
string strFullProjectname = PathMap.SubstitutePath("$(P)");
string strDestination = strFullProjectname;
DialogResult Result = MessageBox.Show(
"Soll eine Sicherung für das Projekt\n'"
+ strProjectname +
"'\nerzeugt werden?",
"Datensicherung",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question
);
if (Result == DialogResult.Yes)
{
string myTime = System.DateTime.Now.ToString("yyyy.MM.dd");
string hour = System.DateTime.Now.Hour.ToString();
string minute = System.DateTime.Now.Minute.ToString();
Progress progress = new Progress("SimpleProgress");
progress.BeginPart(100, "");
progress.SetAllowCancel(true);
if (!progress.Canceled())
{
progress.BeginPart(33, "Backup");
ActionCallingContext backupContext = new ActionCallingContext();
backupContext.AddParameter("BACKUPMEDIA", "DISK");
backupContext.AddParameter("BACKUPMETHOD", "BACKUP");
backupContext.AddParameter("COMPRESSPRJ", "0");
backupContext.AddParameter("INCLEXTDOCS", "1");
backupContext.AddParameter("BACKUPAMOUNT", "BACKUPAMOUNT_ALL");
backupContext.AddParameter("INCLIMAGES", "1");
backupContext.AddParameter("LogMsgActionDone", "true");
backupContext.AddParameter("DESTINATIONPATH", strDestination);
backupContext.AddParameter("PROJECTNAME", strFullProjectname);
backupContext.AddParameter("TYPE", "PROJECT");
backupContext.AddParameter("ARCHIVENAME", strProjectname + "_" + myTime + "_" + hour + "." + minute + ".");
new CommandLineInterpreter().Execute("backup", backupContext);
progress.EndPart();
}
progress.EndPart(true);
}
return;
}
}
Ich hab das Skript gerade mal probiert und es funktioniert sehr gut!
Das Projekt wird jedoch im Ordner “Projektname.edb” gesichert, besteht hier die Möglichkeit den Pfad so zu ändern, das die Sicherung in der Ordnerstruktur im gleichen Ordner gespeichert wird wo das Projekt liegt & nicht im Projektordner selbst.
Da die Projektsicherung beim nächsten sichern ja wieder mit gesichert wird und somit die Projektsicherung immer Größer wird :ninja:
Gruß Marco
Klar (ich schreibe solche Dateien auch immer in die Ebene darüber).
Zeile 8:
ersetzen durch:
Zusätzlich musst du in die allererste Zeile folgendes schreiben:
Gruß
Johann
super danke… und ich such schon ne halbe Ewigkeit nach einer Funktion um den String zu kürzen :unsure:
Gruß
Marco
Verzeihen Sie meine Rechtschreibung. Wie Sie Code hinzufügen, um ein Verzeichnis auszuwählen, um zu sparen? Danke.
Hi,
You mean a OpenFileDialog?
Try this:
Greets
Johann
Hallo Johann,
ich würde gerne das Projekt im Projektordner und auf einer Datenfestplatte gleichzeitig sichern, wobei Sicherungspfad dem unter EPLAN P8( Optionen-Einstellungen -Benutzer-Datensicherung-Voreinstellung-Projekte ) Sicherungsmedium festgelegt ist.
Zur Zeit wird nur im Projektordner gesichert.
Könntest du mir das ändern?
Gruß aus Troisdorf
Uli
Hi Uli,
ja das geht, aber versuche es erstmal selbst. Wenn du Fragen hast kannst du hier gerne fragen.
Folgende Tips von mir:
– Lese das Benutzer-Setting um den Pfad herauszufinden
– Kopiere das Backup, geht schneller als die EPLAN-Backup-Action zweimal auszuführen (Stichwort: File.Copy() )
Hier noch Links für dich:
Einstellungspfad kopieren
File.Copy()
Gruß
Johann
[…] взят с сайта https://www.suplanus.de/backuponclosingproject/ – переведен, сильно сказано, но теперь в нем русские […]
Hallo Johann,
ich möchte das Bachup Script mit einem Menüpunkt starten
siehe Script
using System;
using System.Diagnostics; // Zusätzlich
using System.Windows.Forms;
using Eplan.EplApi.Base;
using Eplan.EplApi.Scripting;
public class Class
{
[DeclareAction(“StartProcess”)]
public void Function(string PROCESS, string PARAMETER)
{
try
{
Process.Start(PROCESS, PARAMETER);
}
catch (Exception ex)
{
MessageBox.Show(
ex.Message,
“Fehler”,
MessageBoxButtons.OK,
MessageBoxIcon.Error
);
}
return;
}
[DeclareMenu]
public void MenuFunction()
{
Eplan.EplApi.Gui.Menu oMenu = new Eplan.EplApi.Gui.Menu();
string quote = “\””;
uint MenuID = new uint(); // Menü-ID vom neu erzeugten Menü
MenuID = oMenu.AddMainMenu(
“Loesch Archivierung”, // Name: Menü
“Hilfe”, // neben Menüpunkt
“eplan-projekt”, // Name: Menüpunkt
“”, // Name: Action
“eplan-projekt Archivieren”, // Statustext
1 // 1 = Hinter Menüpunkt, 0 = Vor Menüpunkt
);
MenuID = oMenu.AddMenuItem(
“Elektroplan(PDF)”, // Name: Menüpunkt
“”, // Name: Action
“Elektroplan Archivieren”, // Statustext
MenuID, // Menü-ID: Einfügen/Fenstermakro…
1, // 1 = Hinter Menüpunkt, 0 = Vor Menüpunkt
false, // Separator davor anzeigen
false // Separator dahinter anzeigen
);
MenuID = oMenu.AddMenuItem(
“Pneumatikplan(PDF)”, // Name: Menüpunkt
“”, // Name: Action
“Pneumatikplan Archivieren”, // Statustext
MenuID, // Menü-ID: Einfügen/Fenstermakro…
1, // 1 = Hinter Menüpunkt, 0 = Vor Menüpunkt
false, // Separator davor anzeigen
false // Separator dahinter anzeigen
);
return;
}
}
wie kann ich das Bachup script starten oder mit einpflegen
sind das zuviele fragen ? :-(
gruss Mathias
Mir ist nicht ganz klar was du eigentlich machen willst :/
Schau dir doch mein Kapitel im Buch oder Beispiele hier auf Suplanus an. Dort wird oftmals ein Menüpunkt erzeugt.
Bei dir im Code ist auch diese Zeile falsch:
Hier muss der Name der Action hinterlegt werden.
dein buch hab ich schon :-)
die einzelne befehle oder Scripte das geht.
den Actionsnamen kenn ich nicht.
ich versuche eine neue Menüleiste eizufügen->Menüpunkt und über den Menüpunkt das script Bachup zu starten
beite Script giebt es in irgent einer form aber zusammen ?
oder mach ich das mit dem “ExecuteScript”
und jetzt bin ich gestern Abent auf das script bachUpwithdate gestossen.
da müsste ich mehr Menüpunkte hinzufügen können.
gruß Mathias
Hallo zusammen!
Ich möchte das Projekt auf einem anderen Laufwerk im Netz sichern. Der Pfad soll allerdings identisch zu dem unter Projekte sein. Wie kann ich denn den Laufwerksbuchstaben in der Variable strDestination ändern?
Gruß
Christian
Würde suchen nach :\ und dann splitten und den ersten Teil ersetzen durch dein Ziellaufwerk (funktioniert nicht mit UNC Pfaden).
Hallo Johann!
Habe den Anfang des Scriptes angepasst. Läuft super.
string strProjectDir = @”C:\EPLAN\Projekte”; // ePlan Projektverzeichnis
string strBackupDir = @”S:\Backup”; // Backupverzeichnis
string strProjectpath = PathMap.SubstitutePath(“$(PROJECTPATH)”);
string strProjectname = PathMap.SubstitutePath(“$(PROJECTNAME)”);
string strFullProjectname = PathMap.SubstitutePath(“$(P)”);
string strTempDir = strProjectpath.Replace(strProjectDir, strBackupDir);
string strBackupPath = strTempDir.Remove(strTempDir.LastIndexOf(@”\”), strProjectname.Length + 5);
die lokale Pfadangabe dient dazu, diesen Teil aus der Variable Projectpath gegen das Backupverzeichnis zu ersetzen. Alle nachfolgenden Unterverzeichnisse werden übernommen.
So können evtl. auch UNC Pfade verwendet werden.
Hallo, wenn ich das Script im Eplan P8 V2.7 lade und danach Eplan beende, passiert nichts. Es kommt keine Abfrage, ob das Backup erstellt werden soll. Wenn ich auf Script Ausführen klicke und das Script auswähle, komme eine Meldung: Es wurde keine öffentliche Funktion mit dem Attribut [Start] deklariert.
Funktioniert das Skript überhaupt noch bei der aktuellen Eplan Version oder was mache ich falsch?
Gruß
Michael
Habe es in der 2.7 HF5 geladen und Script funktioniert wie erwartet.
Hast du eine Systemmeldung?
Ausführen geht nicht, nur das Laden.
Nein,nix. EPlan geht wie immer zu, wenn ich auf rechts aus das X klicke. Da kommt keine Messagebox.
Hast du das Script auch wirklich geladen? Siehst du wenn du unter Scripte > entladen… schaust.
Ja auf jeden Fall. Da es nicht funktioniert hat, hätte ich es vom Desktop gelöscht. Nach erneutem Öffnen von EPlan kam dann eine FM, da das geladene Skript nicht mehr da war.
Die Datei muss schon vorhanden sein.
Sonst bin ich leider auch ratlos.
Ich nutze das Skript in EPLAN P8 V2.6 HF3 unter Win7 ohne Probleme. Auf einem neuen Rechner mit Win10 kommt eine Fehlermeldung in den Systemmeldungen – “Unzulässige Funktion” und es passiert nichts. Woran kann das liegen?
Servus Jonny!
Ich habe mir ein Skript gebastelt, mit welchem ich beim schließen des Projektes ein Backup mache und dabei das Projekt-Zusatzfeld 100 für den Projekt- Pfad verwende (Abfrage des Pfades mit Textbox). Funktioniert einwandfrei.
Jetzt habe ich das Problem, dass wenn ich mehrere Projekte gleichzeitig schließe, kein Backup gemacht wird, bzw. ein Backup in einen Falschen Pfad abgelegt wird. Gibt es hier eine Möglichkeit?
Gibt es eine Möglichkeit, ein Backup beim Schließen von EPLAN zu erstellen?
Danke im Voraus,
Lg Falki
Schaue mal wie das “aktuelle” Projekt ermittelt wird.
EPLAN hat Probleme wenn es mehrere sind.
Versuche mal `SelectionSet`, das dürfte hier besser funktionieren.
Guten Tag, ich bin heute übder das Script gestolpert. Es funktioniert super. Ich habe versucht eine “kleine” Anpassung beim Archivname zu erreichen. Da ich aber keine Ahnung vom Programmieren habe bin ich leider gescheitert.
Wenn man über den Befehl Projekt–>Sichern–>Projekt geht, gibt es in dem nächsten Fenster die Möglichkeit bei Sicherungsname nach einem Klick auf den Pfeil nach unten nicht nur den Namen sondern auch den Projektpfad (getrennt durch Punkte) als Sicherungsnamen auszuwählen.
Dies habe ich versucht über das Script zu erreichen, aber wie schon gesagt bin ich gescheitert. Daher meine Frage ob mir jemand helfen kann.
MfG Jörg
Der Pfad wird im Parameter `DESTINATIONPATH` angegeben, der Dateiname wird im Parameter `ARCHIVENAME` angegeben. Siehe hier:
https://www.eplan.help/de-de/Infoportal/Content/Plattform/2022/Content/htm/availableactions_o_backup.htm
Hallo Johann,
meine Vermutug war das ich bei Archivname meine Anpassungen vor nehmen muss. Ich habe hier auch ein paar Versuche gemacht aber leider bekomme ich dann immer eine Fehlermeldung.
Ich habe in der Zeile 46 aus …strProjectname –>strFullProjectname gemacht. Danach bekomme ich in den E-Plan Statusmeldungen “Fehler beim Sichern eines Projektes”. Ich vermute wegen der “\” Zeichen. Wie kann ich diese denn durch “.” (Punkt) ersetzen?
Schick mir doch mal dein Script per Email. Dann schaue ich es mir an.