| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für EPLAN |
Autor
|
Thema: Projekt per Script kopieren (3566 / mal gelesen)
|
fency Mitglied Eplan Konstrukteur
Beiträge: 185 Registriert: 15.07.2011
|
erstellt am: 22. Feb. 2016 16:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich brauche mal wieder eure Hilfe. Hat jemand ein Beispiel oder einen Denkanstoss für mich, wie ich ein Projekt per Script kopiere / erstelle? Das Ausgangsprojekt ist immer das gleiche. Dieses möchte ich kopieren und ihm gleich den richtigen Namen geben. Den Befehl "XPrjActionProjectCopy" habe ich gefunden, aber wie sieht es mit den Parametern dafür aus? Brauche ja zumindest Quelle, Ziel und wahrscheinlich auch den "Kopiermodus", also "mit Auswertung", usw. Kann mir da einer weiterhelfen? Eine Möglichkeit wäre natürlich, wenn ich den Ordner und die Verknüpfung auf Dateiebene kopiere, möchte ich aber eigentlich vermeiden. Bin für jede Hilfe sehr dankbar. beste Grüße Florian ------------------ Eplan 5.70 Prof. Eplan P8 2.0 Prof. (mit Optionstool) Eplan P8 2.1 SP1 Prof. (mit Optionstool) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sbg Markus Mitglied
Beiträge: 516 Registriert: 24.11.2009 Eplan P8 2.7 Eplan P8 2.5 Eplan P8 2.3 Eplan P8 2.2 Eplan P8 2.0 Eplan 5.70.4.26200
|
erstellt am: 23. Feb. 2016 07:45 <-- editieren / zitieren --> Unities abgeben: Nur für fency
Ich hab das mit einer BAT Datei gemacht. In dieser Datei werden folgende Befehle abgearbeitet: - Die Auftragsdaten ( Kunde, Lieferdatum, EVU, Kommission ) werden abgefragt - Es wird eine XML Datei für die Projekteigenschaften erzeugt - Das Basis Projekt wird kopiert, der Projektname = Auftragsnummer - Die Projekteigenschaften importiert - Über eine Abfrage werden, werden Seiten Makros ins Projekt eingelesen - Die Stammdaten des Projektes werden aktualisiert.
------------------ --------------- mfg Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fency Mitglied Eplan Konstrukteur
Beiträge: 185 Registriert: 15.07.2011
|
erstellt am: 24. Feb. 2016 11:24 <-- editieren / zitieren --> Unities abgeben:
|
Straight-Potter Mitglied Dipl.Ing. E-Technik
Beiträge: 601 Registriert: 14.07.2008 EPLAN Plattform 2.9 SP1 API EEC Prof EEC One
|
erstellt am: 24. Feb. 2016 14:06 <-- editieren / zitieren --> Unities abgeben: Nur für fency
Das geht leider nicht per Scripting... Die Action die du gefunden hast ist eine Inoffizielle Action (ohne dokumentierte Parameter). Da diese Benutzerinteraktionen benötigt, kannst Du diese leider nicht per Script automatisieren. Das ganze wäre was für die API (Namespace Eplan::EplApi: ataModel::ProjectManager) Straight-Potter ------------------ Wenn wir bedenken, dass wir alle verrückt sind, ist das Leben erklärt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonny Wire Mitglied Script-Troll
Beiträge: 786 Registriert: 08.12.2008 EPLAN Electric P8 ... in allen Versionen/Varianten
|
erstellt am: 24. Feb. 2016 15:39 <-- editieren / zitieren --> Unities abgeben: Nur für fency
Geht schon, habe das mal gemacht, wie folgt: Projekt schließen Code: new CommandLineInterpreter().Execute("XPrjActionProjectClose");
Auf Dateiebene kopieren
Code: private static void Copy(string pathSourceElk, string pathDestinationElk, string pathSourceEdb, string pathDestinationEdb) { // elk File.Copy(pathSourceElk, pathDestinationElk, true); // edb foreach (string directory in Directory.GetDirectories(pathSourceEdb, "*", SearchOption.AllDirectories)) { Directory.CreateDirectory(directory.Replace(pathSourceEdb, pathDestinationEdb)); } foreach (string file in Directory.GetFiles(pathSourceEdb, "*.*", SearchOption.AllDirectories)) { File.Copy(file, file.Replace(pathSourceEdb, pathDestinationEdb), true); } }
Pfad in elk Datei setzen
Code: private static void ChangePathInElkFile(string pathDestinationElk, string pathDestinationEdb) { var lines = File.ReadAllLines(pathDestinationElk); lines[0] = Path.GetFileName(pathDestinationEdb); // Crazy naming, but working File.WriteAllLines(pathDestinationElk, lines, Encoding.Unicode); }
Projekt öffnen
Code: ActionCallingContext actionCallingContext = new ActionCallingContext(); actionCallingContext.AddParameter("Project", pathDestinationElk); new CommandLineInterpreter().Execute("ProjectOpen", actionCallingContext);
------------------ → Scripting in EPLAN ist einfach (toll)!
→ Scripte & Anwendungen rund um EPLAN! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fency Mitglied Eplan Konstrukteur
Beiträge: 185 Registriert: 15.07.2011
|
erstellt am: 24. Feb. 2016 16:42 <-- editieren / zitieren --> Unities abgeben:
|
F.S. Moderator
Beiträge: 1815 Registriert: 23.04.2003 EPLAN Electric P8 2023 Prof.
|
erstellt am: 25. Feb. 2016 07:28 <-- editieren / zitieren --> Unities abgeben: Nur für fency
Hallo, um welche Eplan Version geht es hier? Wenn wirklich nur 2.1 dann bleibt dir wohl nur kopieren auf Dateiebene, Jonny hat das ja schon sehr schön gezeigt. Wenn 2.4 oder höher dann gibt es einen neuen noch nicht richtig dokumentierten Befehl:
Code:
projectmanagement /TYPE:CREATESNAPSHOTCOPY /PROJECTNAME:\"{0}\" /FILENAME:\"{1}\"
Von mir wurde dieser Befehl bisher noch nicht eingesetzt, daher erstmal gründlich testen! ------------------ grüße FrankS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fency Mitglied Eplan Konstrukteur
Beiträge: 185 Registriert: 15.07.2011
|
erstellt am: 27. Feb. 2016 14:00 <-- editieren / zitieren --> Unities abgeben:
Es geht um Version 2.5. Wie genau könnte der Befehl aussehen? wo gebe ich ihm das zu kopierende Projekt an und wo den Dateinpfad + Name für das neue Projekt? Danke für eure Hilfe mfg Florian ------------------ Eplan 5.70 Prof. Eplan P8 2.0 Prof. (mit Optionstool) Eplan P8 2.1 SP1 Prof. (mit Optionstool) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonny Wire Mitglied Script-Troll
Beiträge: 786 Registriert: 08.12.2008 EPLAN Electric P8 ... in allen Versionen/Varianten
|
erstellt am: 29. Feb. 2016 07:19 <-- editieren / zitieren --> Unities abgeben: Nur für fency
|
fency Mitglied Eplan Konstrukteur
Beiträge: 185 Registriert: 15.07.2011
|
erstellt am: 02. Mrz. 2016 16:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Jonny, Wie immer ist auf dich verlass. Hat super funktioniert. Ich hab das mal schnell geschrieben, können ja sicher auch andere brauchen. Ich kopiere dabei ein Projekt, öffne es dann und werte dann noch die Auswertungsvorlagen aus. Kannst es natürlich gerne so noch in deinem Blog posten. Code: //Projekt kopieren CommandLineInterpreter oCLY = new CommandLineInterpreter(); ActionCallingContext acy = new ActionCallingContext(); acy.AddParameter("TYPE", "CREATESNAPSHOTCOPY"); acy.AddParameter("PROJECTNAME", EplanOriginal); // "EplanOriginal" ist mein string mit dem Dateipfad des zu kopierenden Eplan acy.AddParameter("FILENAME", EplanNewProject2015);// "EplanNewProject2015" ist mein string mit dem Dateipfad des zu erstellenden Eplan oCLY.Execute("projectmanagement", acy); //Projekt öffnen -> öffnet das neue Projekt CommandLineInterpreter oCLZ = new CommandLineInterpreter(); ActionCallingContext acz = new ActionCallingContext(); acz.AddParameter("PROJECT", EplanNewProject2015); oCLZ.Execute("XPrjActionProjectOpen", acz); //Auswertungen: -> hier wird das neue Projekt ausgewertet CommandLineInterpreter oCLA = new CommandLineInterpreter(); oCLA.Execute("XFgEvaluateProjectAction");
------------------ Eplan 5.70 Prof. Eplan P8 2.0 Prof. (mit Optionstool) Eplan P8 2.1 SP1 Prof. (mit Optionstool) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |