EPLAN-Scripts

Action: projectmanagement Parameter

Ach… das mit der Dokumentation der Actions ist bei EPLAN immer so eine Sache.

In der API Dokumentation steht es drin, in der EPLAN Hilfe nicht.

Die Aktion projectmanagement  hat mehrere Parameter (ab EPLAN 2.4). Praktisch ist hier das kopieren eines Projektes:

projectmanagement /TYPE:CREATESNAPSHOTCOPY /FILENAME:"C:\Test\Copy.elk"

Dadurch wird das aktuelle Projekt unter neuem Pfad gespeichert. Hier kann auch noch /PROJECTNAME  angegeben werden um ein bestimmtes Projekt zu “sichern”.

Es gibt auch noch die Typen /PUBLISHTODISK  und /PUBLISHTOEMAIL  hier kann man auch noch ein /SCHEME  mit angeben.

Von |2017-11-09T11:22:15+01:002016-02-26|EPLAN, EPLAN-Scripts|

EPLAN RemoteClient

Ich hatte ja schon erklärt wie man EPLAN per COM-Schnittstelle ansprechen kann.

Nachteil: Bei 32/64bit gewinnt der Server der als erstes gestartet wurde.
Aber es gibt einen Weg mit dem man sogar die Version auswählen kann (wenn z.B. mehrere EPLAN Versionen installiert bzw. geöffnet sind).

Diese Schnittstelle ist nicht offiziell dokumentiert!

 

Ihr müsst eine Referenz auf die DLL Eplan.EplApi.RemoteClientu.dll machen, welche sich im Installationsverzeichnis von EPLAN befindet, z.B.:

C:\Program Files\EPLAN\Platform\2.5.4\Bin\

 

Hier ein Beispiel wie man die aktuellen EPLAN Versionen erhält und bei der aktuellsten das Projekt schließt:

EplanRemoteClient eplanRemoteClient = new EplanRemoteClient();
List eplanServerDatas = new List();
eplanRemoteClient.GetActiveEplanServersOnLocalMachine(out eplanServerDatas);
if (eplanServerDatas.Count > 0)
{
	var eplanServerDataLast = eplanServerDatas.OrderBy(obj=>obj.EplanVersion).LastOrDefault();
	if (eplanServerDataLast != null)
	{
		eplanRemoteClient.Connect("localhost", eplanServerDataLast.ServerPort.ToString(),new TimeSpan(0,0,0,5));
		eplanRemoteClient.ExecuteAction("XPrjActionProjectClose");
		eplanRemoteClient.Disconnect();
	}
}

Localhost für den lokalen Rechner verwenden, den Timespan brauchte ich, da EPLAN zu langsam reagierte.

Von |2017-11-09T11:22:15+01:002016-01-29|EPLAN, EPLAN-Scripts|

GetProjectVariableLanguage

Ich hatte mal schon geschrieben wie man die Projekt-Sprachen rausfindet

Hier noch ein Script wie man die variable Sprache herausfindet.
Einfach das Script laden und in einem anderen Script das Usage ausführen.

 

using System.IO;
using System.Xml;
using Eplan.EplApi.ApplicationFramework;
using Eplan.EplApi.Base;
using Eplan.EplApi.Scripting;

class GetProjectVariableLanguage
{
	/* Usage
	private static string GetProjectVariableLanguage()
	{
		string value = null;
		ActionCallingContext actionCallingContext = new ActionCallingContext();
		new CommandLineInterpreter().Execute("GetProjectVariableLanguage", actionCallingContext);
		actionCallingContext.GetParameter("value", ref value);
		return value;
	}
	*/

	private readonly string TempPath = Path.Combine(
		PathMap.SubstitutePath("$(TMP)"), "GetProjectLanguages.xml");

	[DeclareAction("GetProjectVariableLanguage")]
	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='VAR_LANGUAGE']/Val");

			if (languagesString != null)
			{
				value = languagesString;
				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;
		}
	}
}
Von |2017-11-09T11:22:16+01:002016-01-11|EPLAN, EPLAN-Scripts|

XPrjActionProjectCreateBaseProject

Mit dieser inoffiziellen Action ist es möglich per Script aus einem Projekt ein Basisprojekt zu erstellen:

XPrjActionProjectCreateBaseProject

Parameter:

  • PROJECTfull name of the project
  • TARGETfull name of the target file
Von |2017-11-09T11:22:18+01:002015-12-15|EPLAN, EPLAN-Scripts|
Nach oben