Archiv für das Jahr: 2015

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|

ActionList

Das “Automatisiert Bearbeiten” dürfte vielen von euch ein Begriff sein.
Leider hat EPLAN hier nicht viel gemacht bzw. eher Features weggenommen.

Darum haben wir uns entschlossen das Script ActionList zu schreiben, welches es ermöglicht verschiedene Aktionen nacheinander auszuführen.

Das ganze schön per Drag & Drop festlegen und alle Aktionen werden automatisch ausgeführt.

Gerade in Kombination der automatischen Ausgabe von Beschriftungen oder PDF ist super!

ActionList auf ShopForProcess.com

Von |2015-11-18T15:08:10+01:002015-11-18|EPLAN, ShopForProcess|

Entity Framework MySql mit SSH-Tunnel in Mono

Der Titel sagt schon dass es nicht gerade das ist was man gerne programmiert…

Kurz zu meiner Anwendung:
Ich möchte gerne Werte von einem Raspberry Pi auf meinem Uberspace in einer MySql Datenbank speichern. Erst wollte ich das auf Azure tun, leider wird hier Mono noch nicht korrekt unterstützt.

Dann eben in MySql… aber Uberspace lässt Zugriff auf die Datenbank nur per SSH zu.

Gut, dann bauen wir uns mal einen SSH-Tunnel in Mono. Hier gibt es ein schönes NuGet-Packeg namens SSH.NET

Die Objekte wie folgt initialisieren:

private const string passwordSsh = "myPassword";
private const string username = "myUsername";
private const string server = "my.server.de";
static ForwardedPort port = new ForwardedPortLocal("localhost", 3306, "localhost", 3306);
private static SshClient sshClient = new SshClient(server, 22, username, passwordSsh);

Den Port benötigen wir um später die Daten durch Port 3306 zu tunneln.

 

Die Verbindung ist dann relativ einfach:

if (!sshClient.IsConnected)
{
    sshClient.Connect();

    // offline
    if (sshClient.IsConnected)
    {
        // Start port if not started
        if (!port.IsStarted)
        {
            // Add port if not added yet
            if (!sshClient.ForwardedPorts.Contains(port))
            {
                sshClient.AddForwardedPort(port);
            }
            port.Start();
        }
    }
}

Jetzt schnell noch das Entity Framework (Code First) einbinden und fertig … dachte ich.

Leider kommt mir das alle ziemlich buggy und nicht fertig vor. Drum weiß ich nicht ob ich das wirklich in einer Produktivumgebung einsetzten werde / würde.

Per NuGet gibt es MySql packages … aber welche brauche ich?
Bin selbst noch nicht durchgestiegen was für was ist, kann aber sagen, bei mir hat es nur mit folgenden geklappt:

  <package id="EntityFramework" version="6.1.3" targetFramework="net4" />
  <package id="MySql.Data" version="6.8.7" targetFramework="net4" />
  <package id="MySql.Data.Entities" version="6.8.3.0" targetFramework="net4" />

Nun gibt es aber noch einen Bug der unter einer Mono-Runtime die Version des Servers falsch parsed, somit braucht man folgenden fix (hab es bisl erweitert dass jeder Server/Version richtig gewandelt wird):

using System.Data;
using System.Data.Common;
using System.Data.Entity.Infrastructure;
using System.Text.RegularExpressions;

namespace OpenHop.Database
{
    public class ManifestTokenResolver : IManifestTokenResolver
    {
        public string ResolveManifestToken(DbConnection connection)
        {
            try
            {
                connection.Open();
                string version = OnlyNumbers(connection.ServerVersion);
                return version;

            }
            finally
            {
                if (connection.State == ConnectionState.Open)
                {
                    connection.Close();
                }
            }
        }

        private static readonly Regex digitsOnly = new Regex(@"[^\d]");
        public static string OnlyNumbers(string text)
        {
            return digitsOnly.Replace(text, "");
        }
    }
}

 

In der app.config dann noch die Daten eintragen:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="MySql.Data.MySqlClient.EF6" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
      </provider></providers>
  </entityFramework>
  <connectionStrings>
    <add name="MyContext" providerName="MySql.Data.MySqlClient.EF6" connectionString="server=localhost;database=myDatabase;uid=myUsername;pwd=myPassword" />
  </connectionStrings>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.8.7.0" newVersion="6.8.7.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <system.data>
    <DbProviderFactories>
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient.EF6" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data, Version=6.8.1.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    <remove invariant="MySql.Data.MySqlClient" /><add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /></DbProviderFactories>
  </system.data>
</configuration>
Von |2015-11-02T11:14:25+01:002015-11-02|C#, Mono, Raspberry Pi|

EPLAN-API: Showcase 2015 Oktober

Hatte leider nicht viel Zeit, um was in der EPLAN API zu machen. Aber eine Sache kann ich euch zeigen…

OpenHyperlink

2015-10-29_11-32-25

Listet alle Externen Dokumente der markierten Objekte. Dies gilt für Symbole, Makros oder sogar Seiten. Selbst das ganze Projekt kann gewählt werden.

Es werden alle Artikelnummern (einmal) aufgelistet mit den jeweiligen externen Dokumenten / Bilddateien.

Von |2015-10-29T12:48:03+01:002015-10-29|EPLAN|

MenuCreator: Rabatt

Man hat ja irgenwie auch Software auf die man stolz ist. Bei mir ist es im EPLAN Bereich das Script MenuCreator.
Schön einfach per Drag & Drop Menüs in EPLAN bauen… einfach toll.

2015-10-27_11-37-33

Viele Kunden nutzen es sehr intensiv und haben Toolbars, welche nur selten genutzt wurden, durch ein Menü ersetzt.

Wir haben nun 50% Rabatt auf den tollen MenuCreator!

Von |2015-10-30T14:36:27+01:002015-10-27|EPLAN|
Nach oben