Archiv für das Jahr: 2016

Pfadvariablen Update 2.6

Es sind wieder neue Pfadvariablen dazugekommen, Ihr findet findet die Daten hier:

EPLAN_Pfadvariablen

 

Neuerungen

  • $(EPLAN_EXECUTABLE): Pfad zur EPLAN.exe
  • $(EPLAN_VARIANT): Name der gestarteten Produktvariante
  • $(EPLAN_VERSION): Versionsnummer
  • $(EPLAN_VERSION_SHORT): Hauptversionsnummer
  • $(RIGHTS_DB_PATH): Pfad zur Rechtedatenbank
Von |2019-04-10T10:19:25+02:002016-04-14|EPLAN, EPLAN-Scripts|

EPLAN 2.6: Scripting Neuerungen

Die Betaversion für EPLAN 2.6 ist nun verfügbar und ich schreibe hier mal was ich bzgl. Scripting aus den News und der Hilfe lesen konnte.

Die Actions CreateTopologyFunctions und RouteTopology wurden in die Action Topology verschoben.

 

Folgende Actions sind nun (offiziell) hinzugekommen:

Action

Beschreibung

GenerateMacros

Erzeugt Makros aus einem Projekt.

SwitchProjectType

Schaltet die Eigenschaft “Art des Projekts” um.

Topology

Verlegt Topologie-Verbindungen oder erzeugt Topologie-Funktionen.

XEsUserPropertiesExportAction

Exportiert benutzerdefinierte Eigenschaften in eine Datei.

XEsUserPropertiesImportAction

Importiert benutzerdefinierte Eigenschaften aus einer Datei.

XPamsDeviceSelectionAction

Führt eine Geräteauswahl durch oder aktualisiert Gerätedaten.

XPrjActionUpgradeProjects

Aktualisiert ein oder mehrere Projekte auf das aktuelle Datenbankschema.

XSettingsExport

Exportiert Benutzer-, Stations- oder Firmeneinstellungen.

 

Die Action projectmanagement wurde erweitert um folgende Funktionen:

Projekt Korrigieren

/TYPE:CORRECTPROJECTITEMS
/SCHEME:"My scheme"

 

Projekt reorganisieren

/TYPE:REORGANIZE
/EXTENDEDMODE:1
Von |2018-12-11T08:08:35+01:002016-04-06|EPLAN, EPLAN-Scripts|

EPLAN-API: Showcase 2016 März

Bei der Version 2.4 sind in EPLAN benutzerdefinierte Eigenschaften hinzugekommen.
Erst habe ich mich gefreut. Leider gibt es mit diesen Eigenschaften viele Probleme. Übernimmt man z.B. aus einer alten Versionen einen Schaltplan, hat man keine Möglichkeit mehr den Namen zu ändern.

Darum habe ich mir eine kleine API-Erweiterung geschrieben welche eine Übernahme über eine Mapping-Tabelle macht.
Man kann festlegen welche Eigenschaft zu welcher konvertiert werden soll.

Es kann auch angegeben werden ob Werte nach der Konvertierung gelöscht werden sollen oder nicht.

 

SetUserDefProp

Von |2016-03-01T15:36:31+01:002016-03-31|EPLAN|

EPLAN API: UserDefinedPropertyDefinition

Die benutzerdefinierten Eigenschaften… die Idee von EPLAN war gut, aber die Umsetzung ist in meinen Augen nicht optimal.

Nichts desto Trotz müssen wir damit leben und das auch in der API. Es ist nicht ganz so einfach wie mit den “normalen” Eigenschaften.

Ich hab hier mal paar Methoden geschrieben um (Projekt-) Eigenschaften zu Lesen/Schreiben:

using System;
using System.Linq;
using Eplan.EplApi.Base;
using Eplan.EplApi.DataModel;

namespace Suplanus.Sepla.Helper
{
	public class UserDefiniedPropertyUtility
	{
		public static PropertyValue GetProjectPropertyValueAndCheckIfEmpty(Project project, string identName)
		{
			PropertyValue propertyValue = GetProjectPropertyValue(project, identName);
			if (propertyValue.IsEmpty)
			{
				return null;
			}
			return propertyValue;
		}

		public static PropertyValue GetProjectPropertyValue(Project project, string identName)
		{
			UserDefinedPropertyDefinition userDefProp = project.Properties.ExistingIds
				.Select(anyPropertyId => anyPropertyId.Definition)
				.OfType<UserDefinedPropertyDefinition>()
				.FirstOrDefault(obj => obj.IdentifyingName.Equals(identName));
			if (userDefProp != null)
			{
				AnyPropertyId anyPropertyId = userDefProp.Id;
				PropertyValue propertyValue = project.Properties[anyPropertyId];
				return propertyValue;
			}
			return null;
		}

		public static void SetProjectPropertyValue(Project project, string identName, object value)
		{
			PropertyValue propertyValue = GetProjectPropertyValue(project, identName);
			if (propertyValue != null)
			{
				if (value is bool)
				{
					propertyValue.Set((bool)value);
					return;
				}
				if (value is double)
				{
					propertyValue.Set((double)value);
					return;
				}
				if (value is MultiLangString)
				{
					propertyValue.Set((MultiLangString)value);
					return;
				}
				if (value is PointD)
				{
					propertyValue.Set((PointD)value);
					return;
				}
				if (value is int)
				{
					propertyValue.Set((int)value);
					return;
				}
				if (value is string)
				{
					propertyValue.Set((string)value);
					return;
				}
				if (value is DateTime)
				{
					propertyValue.Set((DateTime)value);
					return;
				}

				throw new Exception("Type not supported");
			}
			throw new Exception("Property not found");
		}
	}
}

 

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

EPLAN API: DisplayLanguages

Ich hab mir mal ne kleine API Methode um die Anzeigesprachen zu bekommen:

public static StringCollection DisplayLanguages()
{
	using (new LockingStep())
	{
		var project = ProjectUtility.GetCurrentProject();
		ProjectSettings projectSettings = new ProjectSettings(project);
		var displayLanguagesString = projectSettings.GetStringSetting("TRANSLATEGUI.DISPLAYED_LANGUAGES", 0);

		var languages = new StringCollection();
		var displaylanguages = displayLanguagesString.Split(';')
			.Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().ToArray(); // remove empty
		languages.AddRange(displaylanguages);

		return languages;
	}
}

Habe mich hier für ne StringCollection entschieden, da man diese oft in der API braucht (z.B. Fehlwortliste exportieren).

Von |2017-11-09T11:23:00+01:002016-03-13|EPLAN, EPLAN-API|
Nach oben