Archiv für das Jahr: 2016

EPLAN API: Masterdata

Nochmals ein tolles API-Beispiel von Fritz, vielen Dank.

Arbeiten mit Formularen ist (mit dem Helper) nicht schwer!

using System.Collections.Specialized;
using Eplan.EplApi.DataModel;
using Eplan.EplApi.HEServices;

namespace Suplanus.Sepla.Helper
{
	public class MasterdataUtility
	{
		bool IsFormInProject(Project project, string formName)
		{
			return new Masterdata().get_ProjectEntries(project).Contains(formName);
		}

		bool IsFormInSystem(string formName)
		{
			return new Masterdata().SystemEntries.Contains(formName);
		}

		bool AddFormToProject(Project project, string formName)
		{
			Masterdata masterdata = new Masterdata();
			StringCollection newForms = new StringCollection();
			StringCollection projectForms = masterdata.get_ProjectEntries(project);

			if (!IsFormInSystem(formName))
			{
				return false;
			}

			if (!projectForms.Contains(formName))
			{				
				newForms.Add(formName);
				masterdata.AddToProjectEx(project, newForms);
			}
			return true;
		}
	}
}
Von |2017-11-09T11:23:07+01:002016-03-12|EPLAN, EPLAN-API|

EPLAN API: PlaceHolder

Nicht ganz so einfach wie man es sich vorstellt, ist das arbeiten mit Platzhaltern.
Vielen Dank an Fritz für die Zusendung. Ich hab mal die Helperklassen erweitert.

using System.Collections.Generic;
using System.Linq;
using Eplan.EplApi.DataModel;
using Eplan.EplApi.DataModel.Graphics;

namespace Suplanus.Sepla.Helper
{
	public class PlaceHolderUtility
	{
		/// <summary>
		/// Apply a record to placeholder by name
		/// </summary>
		/// <param name="placeHolders"></param>
		/// <param name="placeHolderName"></param>
		/// <param name="recordName"></param>
		/// <returns></returns>
		public bool ApplyRecord(PlaceHolder[] placeHolders, string placeHolderName, string recordName)
		{
			List<PlaceHolder> foundPlaceHolder = placeHolders
				.Where(placeHolder => placeHolder.Name.Equals(placeHolderName)) // name
				.Where(placeHolder => placeHolder.FindRecord(recordName) != -1) // record
				.ToList();

			using (Transaction transaction = new TransactionManager().CreateTransaction())
			{
				foreach (PlaceHolder placeHolder in foundPlaceHolder)
				{
					placeHolder.ApplyRecord(recordName, true); // apply (with page data)
					transaction.Commit(); // needed if not placed in project
				}
			}

			return foundPlaceHolder.Any(); // true == found | false == not found
		}

		/// <summary>
		/// Create a record to a placeHolder by name and apply a record
		/// </summary>
		/// <param name="placeHolders"></param>
		/// <param name="placeHolderName"></param>
		/// <param name="recordName"></param>
		/// <param name="variableName"></param>
		/// <param name="value"></param>
		/// <returns></returns>
		public bool CreateRecordWithValueAndApply(PlaceHolder[] placeHolders, string placeHolderName, string recordName, string variableName, string value)
		{
			List<PlaceHolder> foundPlaceHolder = placeHolders
				.Where(placeHolder => placeHolder.Name.Equals(placeHolderName)) // name
				.ToList();

			foreach (PlaceHolder placeHolder in foundPlaceHolder)
			{
				placeHolder.AddRecord(recordName);
				placeHolder.set_Value(recordName, variableName, value);
				using (Transaction transaction = new TransactionManager().CreateTransaction())
				{
					placeHolder.ApplyRecord(recordName, true); // apply (with page data)
					transaction.Commit(); // needed if not placed in project
				}
			}

			return foundPlaceHolder.Any(); // true == found | false == not found
		}
	}
}
Von |2017-11-09T11:23:13+01:002016-03-10|EPLAN, EPLAN-API|

Aufrufparameter Sprache

Wenn man wie ich EPLAN in Deutsch und Englisch lizensiert hat, möchte man die Variante jeweils schnell starten.

Das geht über den Aufrufparameter /Language :

"C:\Program Files\EPLAN\Platform\2.5.4\Bin\Eplan.exe" /Variant:"Electric P8" /Language:en_US

Wichtig: Die Einstellung für Dialogsprache wird nicht verändert, was schlimm ist wenn man wie ich die Dialogsprache per Script ermitteln will.

2016-03-01_14-12-18

Naja, aber wir haben ja die Möglichkeit es manuell zu setzen:

"C:\Program Files\EPLAN\Platform\2.5.4\Bin\Eplan.exe" /Variant:"Electric P8" /Language:en_US XAfActionSetting /set:"USER.SYSTEM.GUI.LANGUAGE" /value:"en_US" /index:0

Ich habe mir einfach eine weitere Verknüpfung ins Startmenü gemacht :^)

2016-03-01_14-21-16

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

EPLAN-API: Templates

Ich hab mal drei Templates für die EPLAN API Programmierung erstellt.

Dadurch können Addins/Verfications und Actions sehr schnell eingefügt werden:

2016-02-26_10-36-04

Beim ActionTemplate wird gleich der Klassenname als Actionname verwendet, was ich immer sehr praktisch finde.

Einfach in euer Template Verzeichnis packen (z.B. Documents\Visual Studio 2015\My Exported Templates) und freuen :^)

Von |2017-11-09T11:23:18+01:002016-02-27|EPLAN, EPLAN-API|

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|
Nach oben