Hatte das Script schon länger hier, aber irgendwie vergessen zu posten.
Aufgrund dieses Beitrages wurde ich daran erinnert :)
Die Funktion um Projekt-Sprachen zu erhalten war im MultiLanguageTool von EPLAN enthalten (freie API). Diese wurde aber nicht mehr entwickelt und ein Teil kam als offizielle Action… leider nicht die Projektsprachen.
/* Usage private static string GetProjectLanguages() { string value = null; ActionCallingContext actionCallingContext = new ActionCallingContext(); new CommandLineInterpreter().Execute("GetProjectLanguages", actionCallingContext); actionCallingContext.GetParameter("value", ref value); return value; } */ using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Xml; using Eplan.EplApi.ApplicationFramework; using Eplan.EplApi.Base; using Eplan.EplApi.Scripting; namespace EplanScriptingProjectBySuplanus.GetProjectLanguages { public class GetProjectLanguages { private readonly string TempPath = Path.Combine( PathMap.SubstitutePath("$(TMP)"), "GetProjectLanguages.xml"); [DeclareAction("GetProjectLanguages")] public void Action(out string value) { ActionCallingContext actionCallingContext = new ActionCallingContext(); actionCallingContext.AddParameter("prj", FullProjectPath()); actionCallingContext.AddParameter("node", "TRANSLATEGUI"); actionCallingContext.AddParameter("XMLFile", TempPath); new CommandLineInterpreter().Execute("XSettingsExport", actionCallingContext); if (File.Exists(TempPath)) { string languagesString = GetValueSettingsXml(TempPath, "/Settings/CAT/MOD/Setting[@name='TRANSLATE_LANGUAGES']/Val"); if (languagesString != null) { List<string> languages = languagesString.Split(';').ToList(); languages = languages.Where(obj => !obj.Equals("")).ToList(); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < languages.Count; i++) { var language = languages[i]; stringBuilder.Append(language); // not last one if (i != languages.Count - 1) { stringBuilder.Append("|"); } } // returns list: "de_DE|en_EN" value = stringBuilder.ToString(); return; } } value = null; return; } // Returns the EPLAN Project Path private static string FullProjectPath() { ActionCallingContext acc = new ActionCallingContext(); acc.AddParameter("TYPE", "PROJECT"); string projectPath = string.Empty; new CommandLineInterpreter().Execute("selectionset", acc); acc.GetParameter("PROJECT", ref projectPath); return projectPath; } // Read EPLAN XML-ProjectInfo and returns the value private static string GetValueSettingsXml(string filename, string url) { XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(filename); XmlNodeList rankListSchemaName = xmlDocument.SelectNodes(url); if (rankListSchemaName != null && rankListSchemaName.Count > 0) { // Get Text from MultiLanguage or not :) string value = rankListSchemaName[0].InnerText; return value; } else { return null; } } } }
[…] Ich hatte mal schon geschrieben wie man die Projekt-Sprachen rausfindet… […]