Archiv für das Jahr: 2017

EPLAN-API: Signierung automatisieren (Update 1)

Ich hatte hier ja mal was ausprobiert… aber so ganz zufrieden war ich da nicht:

  1. Es kann nur ein Keyfile angegeben werden
  2. Irgendwas da in der Projektdatei rumschreiben macht nur Probleme

Nun hab ich mir das nochmal angeschaut und eine Lösung gefunden. Per Kommandozeile kann man die DLLs in IL Code umwandeln und dann neu kompilieren mit Keyfile. Achtet darauf dass die Ausgabepfade auch alle vorhanden sind.

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\ildasm.exe" "C:\Testprojekt\bin\Release\Suplanus.Test.EplAddIn.Template.dll" /all /out="C:\Testprojekt\bin\Release\Signed\Suplanus.Test.EplAddIn.Template.il"
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe" "C:\Testprojekt\Signed\Suplanus.Test.EplAddIn.Template.il" /dll /key:"C:\Testprojekt\Build\Keyfiles\MyKeyFile.snk"

Im Signed Ordner findet ihr dann die signierte DLL. Diese dann bei EPLAN hochladen und das wars.

Von |2017-11-07T16:37:57+01:002017-11-08|EPLAN, EPLAN-API|

EPLAN Offline Console Application

Bin schon paar mal selbst drüber gestolpert, darum hier eine Notiz an mich selbst:
Will man eine EPLAN Offline Anwendung als Konsolenapplikation erstellen muss die Main()  Methode mit dem Compiler Attribut [STAThread]  ausgestattet werden:

using System;
using System.IO;
using System.Linq;
using Suplanus.Sepla.Application;

namespace ibKastl.Meco.Test.Console
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            // Start EPLAN
            System.Console.WriteLine("Starting EPLAN...");
            string binPath = Starter.GetEplanInstallations()
                .Last(obj => obj.EplanVariant
                .Equals("Electric P8"))
                .EplanPath;
            binPath = Path.GetDirectoryName(binPath);
            EplanOffline eplanOffline = new EplanOffline(binPath, "API");
            eplanOffline.StartWithoutGui();

            // Close
            eplanOffline.Close();           
            System.Console.ReadKey();
        }
    }
}

 

Hab das auch noch in den Kommentar der Starter gepackt:

Von |2017-11-07T07:09:10+01:002017-11-07|EPLAN, EPLAN-API|

SelectionSet pages

Ich hab hier schon ein paar Scripte bereitgestellt welche über SelectionSet die markierten Seiten einlesen.

Dieses kleine Script dient als Kopiervorlage und geht über alle markierte Seiten und springt diese auch an. Dadurch kann man z.B. Seiteneigenschaften setzen usw.

using System;
using System.Diagnostics;
using System.Threading;
using System.Windows.Forms;
using Eplan.EplApi.ApplicationFramework;
using Eplan.EplApi.Base;
using Eplan.EplApi.Scripting;

class Program
{
    [Start]
    public void Action()
    {
        // Get selected pages
        var pages = GetPages();

        // Setup progressbar
        Progress progress = new Progress("EnhancedProgress");        
        progress.SetTitle("Do Something with pages");            
        progress.SetAllowCancel(true);               
        progress.ShowImmediately();
        progress.SetNeededSteps(pages.Length + 1);

        try
        {
            // Do something with pages
            foreach (var page in pages)
            {
                progress.SetActionText(page);
                progress.Step(1);

                SelectPage(page);

                MessageBox.Show(page, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        catch (Exception exception)
        {
            MessageBox.Show(exception.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        finally
        {
            progress.EndPart(true);
        }
    }

    private static string[] GetPages()
    {
        ActionCallingContext actionCallingContext = new ActionCallingContext();
        string pagesString = string.Empty;
        actionCallingContext.AddParameter("TYPE", "PAGES");
        new CommandLineInterpreter().Execute("selectionset", actionCallingContext);
        actionCallingContext.GetParameter("PAGES", ref pagesString);
        string[] pages = pagesString.Split(';');
        return pages;
    }

    private void SelectPage(string page)
    {
        ActionCallingContext actionCallingContext = new ActionCallingContext();
        actionCallingContext.AddParameter("PAGENAME", page);
        new CommandLineInterpreter().Execute("edit", actionCallingContext);
    }
}

 

Von |2017-11-09T11:16:25+01:002017-10-27|EPLAN, EPLAN-Scripts|

Smartineer.com

Ich wollte Euch mal auf einen Blog aufmerksam machen, der auch EPLAN Themen beinhaltet.
Gerald Mayer hat schon einige tolle Sachen gepostet und auf alle Fälle einen Blick wert.

Auch die EPLAN Kommandozeile könnte ein super Script werden. Bin mal gespannt was da noch alles kommt.
Mach weiter so Gerald!

Von |2017-10-25T15:38:44+02:002017-10-26|EPLAN|

CustomItemType

Aus der Rubrik “Ich bau mir die Artikelverwaltung wie Sie mir gefällt…”, wieder eine nicht offizielle Möglichkeit die Artikelverwaltung zu erweitern (kein Support von EPLAN). Nämlich über eine eigene Objekt Art. Weiß garnicht wie man ItemType in dem Kontext korrekt übersetzt.

Naja schaut euch mal das Video an, den Code findet ihr auf GitHub.

Von |2017-10-24T14:49:39+02:002017-10-24|EPLAN, EPLAN-API|
Nach oben