// XMActionDCCommonExport DataConfiguration XML verändern.cs // // XML-Datei (.edc) die über Externe Bearbeitung erstellt wurde verändern // Das Standard Schema "Seiteneigenschaften" muß hierfür um die Eigenschaft "Normblatt <11016>" erweitert werden // // Copyright by Frank Schöneck, 2024 // letzte Änderung: // V1.0.0, 16.09.2024, Frank Schöneck, Projektbeginn // // für Eplan Electric P8, ab V2024 using Eplan.EplApi.ApplicationFramework; using Eplan.EplApi.Base; using Eplan.EplApi.Scripting; using System; using System.Xml.Linq; public class DataConfigurationClass { //Pfad und Dateiname der Export Datei string sXMLFileName = PathMap.SubstitutePath("$(TMP)") + @"\DataConfiguration.edc"; [Start] public void DataConfiguration() { //Externe Bearbeitung in Datei exportieren ActionCallingContext Context = new ActionCallingContext(); Context.AddParameter("CONFIGSCHEME", "Page properties"); Context.AddParameter("DESTINATION", sXMLFileName); Context.AddParameter("COMPLETEPROJECT", "1"); Context.AddParameter("EXECUTIONMODE", "0"); new CommandLineInterpreter().Execute("XMActionDCCommonExport", Context); //Seiteneigenschaft Normblatt an bestimmter Struktur eintragen string sStruktur = "ABE.100"; //Struktur (hier Einbauort) string sNormblatt = "FN1_001"; //Normblatt (<11016>) XMLWork(sXMLFileName, sStruktur, sNormblatt); //Aufruf XML-Datei bearbeiten //Externe Bearbeitung aus Datei importieren Context.AddParameter("DataConfigurationFile", sXMLFileName); new CommandLineInterpreter().Execute("XMActionDCImport", Context); //Fertig string strDecisionId = string.Empty; bool bShowCheckBox = false; new Decider().Decide( EnumDecisionType.eOkDecision, // type "Fertig!\nDie Seiteneigenschaften wurden geändert.", // Text "DataConfigurationFile", // Title EnumDecisionReturn.eOK, // selected Answer EnumDecisionReturn.eOK, // Answer if quite-mode on strDecisionId, bShowCheckBox, EnumDecisionIcon.eINFORMATION); } //XML-Datei bearbeiten //hier eintragen eines Normblatt wenn Seitenstruktur einen bestimmten Text enthält public void XMLWork(string sXMLFileName, string sStruktur, string sNormblatt) { XDocument doc = XDocument.Load(sXMLFileName); //XML-Datei lesen foreach (XElement cell in doc.Element("EplanPxfRoot").Elements("O4")) //Tags selektieren { if (cell.Attribute("P11016") != null) //nur Tags die das Attribute haben { if (cell.Attribute("P11009").Value.Contains(sStruktur)) //wenn das Attribute den richtigen Inhalt hat { cell.Attribute("P11016").Value = sNormblatt; //neuen Wert schreiben } } } doc.Save(sXMLFileName); //neue XML-Datei schreiben } }