Externes Bearbeiten (lassen) von Daten

Problemstellung

Nicht immer liegen alle Unterlagen/Daten/Kennzeichnungen/.. direkt vor, nicht selten möchte der Kunde eigene Kennzeichnungen in den Plänen sehen, oder es sind schlicht Daten aus anderen Abteilungen, die das Projekt ergänzen sollen. Eplan hat hierfür das wirklich schöne Funktion „Externe Bearbeitung„. Es lassen sich schöne Vorlagen zaubern und dem Kunden oder anderen Abteilungen zur weiteren Eintragung zur Verfügung stellen.

Nun möchte ich dies aber vielleicht als Austauschformat gebrauchen, was bei jedem (ersten) Start diese Daten einließt, wenn die Datei vorhanden ist. Ebenso sollte beim Schließen des Projekts der aktuelle Stand für andere (wieder) bereit gestellt werden (nach Erweiterungen oder Änderungen). Ansich auch kein Problem, denn es gibt XMActionDCCommonExport fürs ausschreiben und XMActionDCImport für den Import. Nur schaut man sich die Beschreibung zum Import an heißt es dort: DataConfigurationFile : path of data configuration file. Also geht’s doch nicht so einfach?

Problemlösung

Doch! Es geht so einfach: Als Configfile wird auch eine *.xlsx von der Funktion akzeptiert, was leider nicht dokumentiert ist. Darüber bin auch ich lange gestolpert, bis ich zufällig den Hinweis gefunden hatte (siehe hier). Beim Export bedarf es dann einfach nur noch dem Schemata, mit dem Exportiert werden soll (lässt sich zB. auch mittels XSettingsImport importieren oder per Addon verteilen). Kurz und knapp sieht die Funktion dazu etwa so aus:

public void exportlist(string schemata, string dst) {
  CommandLineInterpreter cli = new CommandLineInterpreter();
  ActionCallingContext acc = new ActionCallingContext();

  acc.AddParameter("COMPLETEPROJECT", "1");
  acc.AddParameter("CONFIGSCHEME", schemata);
  acc.AddParameter("LANGUAGE", "de_DE,en_US");
  acc.AddParameter("DESTINATION", dst);
  acc.AddParameter("EXECUTIONMODE","0");

  cli.Execute("XMActionDCCommonExport", acc);
}

Das ganze geht dann auch wieder Rückwärts. Hier ist das schöne, dass man nicht mehr wissen muss, welches Schema für den Export genutzt wurde. Allerdings sollte bei Dateien, die man von Extern bekommt definitiv wenigstens mal drüber geschaut werden (da wird gerne mal an der Tabelle wild herum editiert). Worauf man dann gleich mit achten sollte: EPlan hat beim ausschreiben der Tabelle

  • Das Sheet entsprechend benannt, Umbenennungen könnten problematisch werden
  • Tabellenbereiche mit Namen versehen. Das lässt sich mit dem Namensmanager prüfen und ggf. korrigieren. Hier sollten folgende vorhanden sein:
    • EPL_HEADER (der Bereich mit den Notizen, was in den Spalten zu finden ist)
    • EPL_VALUES (der Bereich mit den Daten)
  • Die IDs eindeutig sind, da nicht ggf. einer Duplikate erstellt hat
  • Das die Liste für eben genau das Projekt oder eine 1:1 Kopie davon ist (IDs passen sonst nicht!)

Ist das alles soweit OK, geht es mit dem Import ähnlich einfach:

public void importlist(string src, string projectwithpath) {
  CommandLineInterpreter cli = new CommandLineInterpreter();
  ActionCallingContext acc = new ActionCallingContext();

  acc.AddParameter("ProjectLink", projectwithpath);
  acc.AddParameter("DataConfigurationFile", src);
  acc.AddParameter("ProgressTitle","Import von " + GetFileName(src));

  cli.Execute("XMActionDCImport", acc);
}

Tipp meinerseits: Leider hab ich mir damit tatsächlich schon ein Projekt zerschossen, was noch offen war. Daher idealerweise den kompletten Projektpfad mit übergeben, auf dem das zur Anwendung kommen soll, alles anderen Projekte vorher schließen (Anwendersache), oder wenn verfügbar, den kompletten Projektpfad mit Projektnamen übergeben. Die IDs werden nach Entstehung aufgrund interner Zähler festgelegt -> in einem anderen Projekt gibt es die IDs sehr wahrscheinlich ebenso, sind nur anders vergeben -> fehlerhafte Zuordnung der Elemente aus der Liste zu denen in eurem Projekt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert