Es gibt eine inoffizielle (somit nicht supportete) EPLAN Action zum Erstellen von Projekten: XPrjActionProjectNew
Parameter: /SOURCE: Basisprojekt oder Projektvorlage /TARTGET: Zieldatei (*.elk) /CREATIONDATE: Erstelldatum (UNIX) /CREATOR: Ersteller /QUIET: 0 oder 1 ob Dialoge unterdrückt werden sollen (z.B. Aktualisierung)
Anbei ein Beispiel. Ich habe noch dank dem tollen EPLAN Support einen QuietModeStep eingebaut, da beim Projekt öffnen dann auch Dialog wie z.B. Stammdaten aktualisieren unterdrückt werden.
class XPrjActionProjectNew { [Start] public void Function() { string source = @"G:\ibKastl.EPLAN.2025\Data\Vorlagen\IEC_bas001.zw9"; string target = @"G:\Downloads\Test.elk"; string creationDate = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString(); string creator = "Neo"; ActionCallingContext acc = new ActionCallingContext(); acc.AddParameter("SOURCE", source); acc.AddParameter("TARGET", target); acc.AddParameter("CREATIONDATE", creationDate); acc.AddParameter("CREATOR", creator); acc.AddParameter("QUIET", "1"); using (QuietModeStep quietModeStep = new QuietModeStep(QuietModes.ShowNoDialogs)) { new CommandLineInterpreter().Execute("XPrjActionProjectNew", acc); } } }
Hallo,
versuche das wie folgt zu nutzen, jedoch ohne Erfolg. Wo könnte mein Fehler liegen:
Bekommst du Systemmeldungen?
Welche EPLAN Version?
Leider nein, es geht einfach der normale Dialog “Projekt erstellen” auf.
In den Feldern Projektname, Speicherort und Vorlage seht die ePlan Standard Vorbelegung drin. Die Haken bei Datum und Ersteller fehlen.
Nachtrag: ePlan Versoin 2.8
Deine Source und Target Dateipfade schauen bisl komisch aus.
Gibt es diese auch?
Auf C:\ zu schreiben benötigt oft Adminrechte.
Trotzdem sollte eigentlich der Dialog nicht kommen.
Kann es leider nicht testen da ich eine Netzwerklizenz habe und somit keine 2.8 nutzen kann.
Habe es eben mal in der 2.7 getestet, mit dem gleichen Ergebnis.
habe zwar Adminrechte aber hab den Pfad trozdem mal verändert außerdem mal den Schalter Quiet auf 0 gesetzt…
Habe es gerade in der 2.7 über die Toolbar getestet:
Hat ohne Probleme funktioniert!
Das kann ich bestätigen, habe ich eben auch noch mal probiert, via Toolbar ging es bei mir auch ohne Probleme.
Mein Ziel war aber leider aus einem Script heraus das Projekt an zu legen.
:)
TARTGET muss TARGET heißen.
Ja vielen DANK, das war es jetzt gehts wie es soll…
manchmal hat man Tomaten auf den Augen :-)
Hallo, bei mir funktioniert alles soweit. Aber! Es wird nicht der Ersteller und das Erstellungsdatum gesetzt. Woran kann das liegen?
Hier mein Code:
string filename = PathMap.SubstitutePath(@”D:\EPlan\Zuordnungsliste_SPS\A24-125\Test.xml”);
//Ziel und Ursprung lese ich aus der Test.xml raus und das funktioniert wunderbar nur meine Settings vom Datum und Ersteller setzt er nicht
oSettings.SetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreationDate”, true);
oSettings.SetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreator”, true);
ActionCallingContext contextProjectPropDate = new ActionCallingContext();
contextProjectPropDate.AddParameter(“SOURCE”, Ursprung);
contextProjectPropDate.AddParameter(“TARGET”, Ziel);
contextProjectPropDate.AddParameter(“QUIET”, “1”);
new CommandLineInterpreter().Execute(“XPrjActionProjectNew”, contextProjectPropDate);
Kannst Du mal das komplette script posten?
Bin ein aboluter Neuling im Scripte schreiben und weiß nicht mal wie ich das hier so schön reinbekomme. Habe einfach mal den Code als Kommentar reingeschrieben.
Nicht wundern MessageBox ist für mich um die Schritte nachzuvollziehen
using Eplan.EplApi.Scripting;
using System;
using System.Xml;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace ParameterSetzen
{
class NewParameter
{
[Start]
public void Funktion()
{
string filename = PathMap.SubstitutePath(@”D:\EPlan\Zuordnungsliste_SPS\A24-125\Test.xml”);
//string filename = @”D:\EPlan\Zuordnungsliste_SPS\A24-125\Test.xml”;
var result;
string Ursprung = “”;
string Ziel = “”;
string[] arStrID = new string[100];
string[] arStrValue = new string[100];
bool bEOF= false;
bool[] arbSetting= new bool[3];
string[] arstrSetting= new string[3];
filename =
int iPos =0;
int iwhile=0;
result = MessageBox.Show(“Setting lesen \n”+arStrValue[iwhile],”Information”,MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
if (result == DialogResult.Cancel)
{
return;
}
Eplan.EplApi.Base.Settings oSet= new Eplan.EplApi.Base.Settings();
arbSetting[1]=oSet.GetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreationDate”, 0);
arbSetting[2]=oSet.GetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreator”, 0);
arstrSetting[1]=arbSetting[1].ToString();
arstrSetting[2]=arbSetting[2].ToString();
result = MessageBox.Show(“Setting \n”+arstrSetting[1]+arstrSetting[2],”Information”,MessageBoxButtons.OK, MessageBoxIcon.Information);
if (result == DialogResult.Cancel)
{
return;
}
Eplan.EplApi.Base.Settings oSettings= new Eplan.EplApi.Base.Settings();
oSettings.SetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreationDate”, true,0);
oSettings.SetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreator”, true,0);
MessageBox.Show(“Setting geschrieben \n”,”Information”,MessageBoxButtons.OK, MessageBoxIcon.Information);
arbSetting[1]=oSet.GetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreationDate”, 0);
arbSetting[2]=oSet.GetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreator”, 0);
arstrSetting[1]=arbSetting[1].ToString();
arstrSetting[2]=arbSetting[2].ToString();
MessageBox.Show(“Setting \n”+arstrSetting[1]+arstrSetting[2],”Information”,MessageBoxButtons.OK, MessageBoxIcon.Information);
//return;
XmlTextReader reader = new XmlTextReader(filename);
//XmlReader reader = XmlReader.Create(filename);
CommandLineInterpreter oCLI = new CommandLineInterpreter();
ActionCallingContext acc = new ActionCallingContext();
oCLI.Execute(“XPrjActionProjectClose”);
//MessageBox.Show(“Quelle \n”,”Information”,MessageBoxButtons.OK, MessageBoxIcon.Information);
int ireader=0;
int iLine=0;
while (reader.Read())
{
iLine=reader.LineNumber;
if (reader.HasAttributes)
{
while (reader.MoveToNextAttribute())
{
if (reader.Name == “id”)
{
iPos =iPos+1;
arStrID[iPos]=reader.Value;
arStrValue[iPos]=reader.ReadString();
MessageBox.Show(“ID \n”+arStrID[iPos]+” “+arStrValue[iPos],”Information”,MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
bEOF=reader.EOF;
string temp=bEOF.ToString();
string temp1=iPos.ToString();
string temp2=ireader.ToString();
string temp3=iLine.ToString();
MessageBox.Show(“Dateiende \n”+temp+” “+temp1+” “+temp2+” “+temp3,”Information”,MessageBoxButtons.OK, MessageBoxIcon.Information);
ireader=ireader+1;
//if (reader.EOF)
//{
//MessageBox.Show(“Nach einlesen \n”+”Dateiende”,”Information”,MessageBoxButtons.OK, MessageBoxIcon.Information);
//reader.Close();
//}
}
reader.Close();
MessageBox.Show(“Nach einlesen \n”+”reader geschlossen”,”Information”,MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show(“Vor Setzen \n”+”Durchlauf:”+”1: “+arStrValue[1]+”2: “+arStrValue[2]+”3: “+arStrValue[3]+”4: “+arStrValue[4]+”5: “+arStrValue[5]+”6: “+arStrValue[6]+” “+arStrValue[7]+” “+arStrValue[8]+” “+arStrValue[9]+” “+arStrValue[10]+” “+arStrValue[11]+” “+arStrValue[12]+” “+arStrValue[13]+” “+arStrValue[14]+” “+arStrValue[15]+” “+arStrValue[16]+” “+arStrValue[17]+” “+arStrValue[18]+” “+arStrValue[19]+” “+arStrValue[20]+” “+arStrValue[21]+” “+arStrValue[22]+” “+arStrValue[23]+” “+arStrValue[24]+” “+arStrValue[25]+” “+arStrValue[26]+” “+arStrValue[27]+” “+arStrValue[28]+” “+arStrValue[29]+” “+arStrValue[30]+” “+arStrValue[31]+” “+arStrValue[32]+” “+arStrValue[33]+” “+arStrValue[34]+” “+arStrValue[36]+” “+arStrValue[37]+” “+arStrValue[38]+” “+arStrValue[39]+” “+arStrValue[40]+” “+arStrValue[41]+” “+arStrValue[42]+” “+arStrValue[43]+” “+arStrValue[44]+” “+arStrValue[45]+” “+arStrValue[46]+” “+arStrValue[47]+” “+arStrValue[48]+” “+arStrValue[49]+” “+arStrValue[50]+” “+arStrValue[51],”Information”,MessageBoxButtons.OK, MessageBoxIcon.Information);
Ursprung=arStrValue[2];
Ziel=arStrValue[1];
iwhile=2;
MessageBox.Show(“Projekt erstellen \n”+”Ursprung: “+Ursprung+” Ziel: “+Ziel,”Information”,MessageBoxButtons.OK, MessageBoxIcon.Information);
//Eplan.EplApi.Base.Settings oSettings= new Eplan.EplApi.Base.Settings();
oSettings.SetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreationDate”, true);
oSettings.SetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreator”, true);
ActionCallingContext contextProjectPropDate = new ActionCallingContext();
contextProjectPropDate.AddParameter(“SOURCE”, Ursprung);
contextProjectPropDate.AddParameter(“TARGET”, Ziel);
contextProjectPropDate.AddParameter(“QUIET”, “1”);
oSettings.SetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreationDate”, true);
oSettings.SetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreator”, true);
new CommandLineInterpreter().Execute(“XPrjActionProjectNew”, contextProjectPropDate);
oSettings.SetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreationDate”, true);
oSettings.SetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreator”, true);
do
{
iwhile = iwhile+1;
MessageBox.Show(“Parameter setzen \n”+arStrID[iwhile]+” “+arStrValue[iwhile],”Information”,MessageBoxButtons.OK, MessageBoxIcon.Information);
acc.AddParameter(“PropertyId”, arStrID[iwhile]);
acc.AddParameter(“PropertyIndex”, “0”);
acc.AddParameter(“PropertyValue”, arStrValue[iwhile]);
oCLI.Execute(“XEsSetProjectPropertyAction”, acc);
} while (iwhile <= iPos);
}
}
}
Hab das mal hiermit getestet und konnte es in 2025 nachvollziehen dass das Erstelldatum nicht korrekt gesetzt wurde:
class Test
{
[Start]
public void Function()
{
Eplan.EplApi.Base.Settings settings = new Eplan.EplApi.Base.Settings();
settings.SetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreationDate”, true);
settings.SetBoolSetting(“USER.PrjManagementGUI.PrjNew.SetCreator”, true);
string source = @”G:\ibKastl.EPLAN.2025\Data\Vorlagen\IEC_bas001.zw9″;
string target = @”G:\Downloads\test.elk”;
ActionCallingContext contextProjectPropDate = new ActionCallingContext();
contextProjectPropDate.AddParameter(“SOURCE”, source);
contextProjectPropDate.AddParameter(“TARGET”, target);
contextProjectPropDate.AddParameter(“QUIET”, “1”);
new CommandLineInterpreter().Execute(“XPrjActionProjectNew”, contextProjectPropDate);
}
}
Ich schreib mal den Support und würde die Antwort hier posten.
Ich habe noch die Eplan Version: 2.9 SP1 Update 14.
Und ich habe auch dein Buch EPLAN Electric P8 automstisieren! Das Buch ist einfach Klasse
Ich habe den Blogbeitrag aktualisiert.
DateTimeOffset wird in der 2.9 nicht klappen. Da lass ich dich mal versuchen das selbst zu fixen :)
:-) …..das ist eine Herausforderung…wie gesagt ich bin hier ein absoluter Laie! Gib mir einen Roboter und ich Programmiere alles was du brauchst…
Lass mich aber wissen, was der Support dazu sagt bei 2025