Archiv für den Monat: November 2015

Pushover unter Mono

Ich hab ja die Superkraft in Probleme zu laufen die wohl sonst keiner hat…

Wenn man unter Mono auf den Dienst Pushover zugreifen will dann ist es notwendig das Zertifikat zu registrieren (Shell):

certmgr -ssl https://api.pushover.net --machine

Mir ist es aufgefallen als ich mit der .NET-Library NPushOver gearbeitet habe… kann ich sehr empfehlen.
Da hatte ich aber auch das Problem dass ich Push-Notifications ohne Inhalt (Body) versenden wollte. Bekam dann immer einen 400er Fehler. Liegt daran dass Pushover keine leeren Notifications erlaubt.

Pushover API

Von |2015-11-24T10:39:24+01:002015-11-24|C#, Mono|

ToggleLayers

Ich habe im letzten Jahr, seit Veröffentlichung von EPLAN 2.4, viele Anfragen bzgl. der EPLAN API Erweiterung ToggleLayers erhalten.

Mit diesem API Addin das von allen EPLAN Anwendern, auch ohne API genutzt werden kann, ist es möglich Ebenen per Scripting zu steuern.

Leider habe ich keine Freigabe für den Download bekommen. Aber die Anmerkung dass User welche diese Funktion brauchen beim Support danach fragen sollen.

Somit ist geklärt: Auch mit EPLAN 64bit (2.4/2.5) ist es möglich die Ebenen umzuschalten.

Hier die Doku der Action:

Actionname
ToggleLayers

Parameter
LAYERSTATE

Werte

  • Name der Ebene zum Beispiel EPLAN491
  • Textgröße zum Beispiel 1,0
  • Sichtbar Wert y für sichtbar / n für unsichtbar
  • Drucken Wert y für Druckausgabe / n für keine Druckausgabe
  • Farbe gemäß der Farbnummern in EPLAN z.B. 102

Beispiel:

ToggleLayers /LAYERSTATE:"EPLAN491|1,0|y|y|102"
Von |2017-11-09T11:22:18+01:002015-11-24|EPLAN, EPLAN-Scripts|

Abkündigung EPLAN 5 / EPLAN 21

Irgendwie ist das total an mir vorbeigegangen und hab es zufällig im EPLAN Solution Center gelesen…

Falls es auch so geht, hier die offizielle Meldung:

2015-11-23_09-35-20

Was das für Konsequenzen für EPLAN Electric P8 hat, weiß ich leider auch nicht. Ob die Funktion EPLAN 5 / 21 Import irgendwann wegfällt oder Ähnliches.

Von |2015-11-23T09:39:46+01:002015-11-23|EPLAN|

Suplanus Eplan Api… Sepla

Da ich demnächst mehr mit der EPLAN API arbeiten darf, hab ich die Entscheidung getroffen einen Teil davon Open Source zu stellen.

Es handelt sich um eine Standard Library um gewisse Abläufe zu vereinfachen.
Der Name ist nicht gerade kreativ gewählt, aber das Kind braucht ja einen Namen :)
Würde mich freuen wenn ihr auch daran mitarbeitet! Man findet alles auf GitHub

Als erstes möchte ich gleich die Implementierung einer Offline-Application vorstellen.
Es ist nicht ganz einfach ein Programm mit EPLAN Anbindung zu schreiben. Der Aufruf mit Sepla erfolgt wie folgt:

string binPath = Starter.GetBinPath();
IntPtr handle = new WindowInteropHelper(this).Handle;
EplanOffline eplanOffline = new EplanOffline();
eplanOffline.Start(handle, binPath);
if (!eplanOffline.IsRunning)
{
    throw new NotImplementedException();
}

Geschlossen wird das ganze dann über:

eplanOffline.Close();

 

Im Hintergrund arbeiten zwei Klassen, damit eine Trennung gewährleistet ist. Denn der Resolver muss erst die Assemblies laden.

Starter.cs

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using Eplan.EplApi.Starter;

namespace Suplanus.Sepla.Application
{
    /// <summary>
    /// EPLAN Starter Helper: No other EPLAN-Namespaces are allowd
    /// </summary>
    public class Starter
    {
        public static string GetBinPath()
        {
            List<EplanData> eplanVersions = new List<EplanData>();

            List<EplanData> eplanVersions32bit = new List<EplanData>();
            new EplanFinder().GetInstalledEplanVersions(ref eplanVersions32bit);
            eplanVersions.AddRange(eplanVersions32bit);

            List<EplanData> eplanVersions64bit = new List<EplanData>();
            new EplanFinder().GetInstalledEplanVersions(ref eplanVersions64bit, true);
            eplanVersions.AddRange(eplanVersions64bit);

            eplanVersions = new List<EplanData>(eplanVersions
                .Where(obj => obj.EplanVariant.Equals("Electric P8"))
                .OrderBy(obj => obj.EplanVersion));

            EplanData eplanData = eplanVersions.LastOrDefault();

            var binPath = Path.GetDirectoryName(eplanData.EplanPath);

            AssemblyResolver resolver = new AssemblyResolver();
            resolver.SetEplanBinPath(binPath);
            resolver.PinToEplan();

            return binPath;
        }
    }
}

 

EplanOffline.cs

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using Eplan.EplApi.Starter;
using Eplan.EplApi.System;

namespace Suplanus.Sepla.Application
{
    public class EplanOffline
    {
        public EplApplication Application;

        public bool IsRunning
        {
            get { return Application != null; }
        }

        public void Start(IntPtr handle, string binPath)
        {
            if (Application == null)
            {
                try
                {
                    EplApplication eplApplication = new EplApplication();
                    eplApplication.EplanBinFolder = binPath;
                    eplApplication.ResetQuietMode();
                    eplApplication.SetMainFrame(handle);
                    eplApplication.Init("", true, true);
                    Application = eplApplication;
                }
                catch
                {
                    Application = null;
                } 
            }
        }

        public void Close()
        {
            if (Application != null)
            {
                Application.Exit();
                Application = null;
            }
        }
    }
}

Suplanus.Sepla auf GitHub

Von |2017-11-09T11:24:05+01:002015-11-19|EPLAN, EPLAN-API|

EPLAN Events

Anbei eine Auflistung von Events, auf welche man sich per API & Script aufschalten kann.

Beispiel

Beim Projekt-Schließen wird die Action ausgeführt.

using System.Windows.Forms;
using Eplan.EplApi.Scripting;

public class MyEventHandler
{
    [DeclareEventHandler("onActionStart.String.XPrjActionProjectClose")]
    public void Action()
    {
        MessageBox.Show("Ich kann Scripten!");

        return;
    }
}

 

Eplan.EplApi.OnMainEnd
Send when the Main End starts.

Eplan.EplApi.OnMainStart
Send when the Main Start is done. This is when a mainframe is available. The event is not send when the application is started in offline modus or to execute an action.

Eplan.EplApi.OnPostOpenProject
Project management: After opening a project

Eplan.EplApi.OnUserPreCloseProject
Project management: Before closing a project

Ged.Redraw
Force a Redraw for the GED

NCSettingsMachineTools.Redraw
Force a Redraw for the NC Machine Tools settings tab

onActionEnd.String.*
Send after the end of any Action.

onActionStart.String.*
Send before the start of any Action.

Page.ConnectionDirty
Event when a Page gets dirty

Project.CablingDirty
Event when cabling gets dirty

Von |2017-11-09T11:22:19+01:002015-11-19|EPLAN, EPLAN-Scripts|
Nach oben