JohannWeiher

Über Johann Weiher

Der Autor hat bisher keine Details angegeben.
Bisher hat Johann Weiher, 531 Blog Beiträge geschrieben.

Snowboardbank V2

Jetzt werden meine Handwerker-Projekte auch schon versioniert…
Aber leider hat das Birkenholz von der ersten Snowboardbank nicht so lange gehalten. Das Holz wurde morsch.

Darum hab ich aus alten Balken eine neue gebaut. Die Balken sind aus dem alten Heustadl vom Bauernhof meiner Eltern und fast 100 Jahre alt.
Gesäubert habe ich Sie mit Soda, was super funktionierte.
Danach habe ich Sie in einem Sägewerk trocknen lassen (um den Holzwurm einzuheizen).

Mit einer Messingbürste für die Bohrmaschine habe ich die Fasern hervorgehoben. Die Schnitte an den Enden habe ich mit einer Antik-Holzbeize behandelt, damit diese nicht “wie neu” aussehen.

Am Ende alles mit Hartwachsöl eingestrichen, damit ein bisschen Witterungsschutz vorhanden ist.
Verschraubt habe ich Sie mit versenkten 18cm Schrauben. Einfach an der Rückseite mit einem Forsterbohrer ein 22mm Loch gebohrt und dort die Schraube “versteckt”. Zur Stabilität habe ich noch Eisenwinkel angebracht.
Somit keine Sichtbaren Verbindungen. Bin mit dem Resultat sehr zufrieden und habe auch einen sonnigen Platz vor meinem Büro gefunden.

Von |2021-01-29T08:07:34+01:002021-01-29|Projekte|

MAUI-Blog.com

Eigentlich wollte ich hier mehr über Xamarin / MAUI schreiben. Macht aber meiner Meinung nach nur Sinn auf Englisch.
Hätte zur Konsequenz dass ich alle Beiträge auf Suplanus auf Englisch mache. Bestehende würde ich dann auch anpassen, aber das wären 522 Stück…

Aus diesem Grund habe ich mich entschlossen einen weiteren Blog aufzusetzen: MAUI-Blog.com 🦄

Von |2020-10-23T09:29:04+02:002020-10-23|Xamarin|

MD3 – Mechatronics Designer

Seit fünf Jahren arbeiten wir an einem eigenen Generator auf Basis der EPLAN API.
Basierend auf Kundenanforderungen wurde daraus ein mechatronischer Konfigurator. Es entstand die Software MD3 – Mechatronics Designer

MD3 logo

Die 3 ist mit dabei da es drei Komponenten sind, welche die Applikation abdeckt:

  1. Konfigurator: Man kann bestehende Software per (kostenloser) API anbinden, oder man baut das Regelwerk im MD3
  2. Editor: Im Unternehmen wird ein mechatronisches Datenmodell benötigt um alle Funktionen hierarchisch abzubilden
  3. Generator: Das generieren von einzelnen Disziplinen ist das Endprodukt (EPLAN & Text)

Man merkt der Software an, dass Sie mit Praxisbezug entstand. So ist eine Vorschau integriert, um nicht jedesmal bei einer Änderung neu generieren zu müssen, wie es bei anderen Generatoren der Fall ist.
Dazu kommt dass man ohne Programmierkenntnisse einfach, per Drag & Drop oder Formeln, komplexe Formeln definieren kann.
Hier findet ihr alle weiteren Informationen. Es macht mich stolz, Teil dieser Arbeit zu sein!

Wir haben Videos zum Workflow der einzelnen Disziplinen erstellt. Vom Anlegen der Bausteine bis hin zum fertig generierten Projekt:

 

Von |2020-09-30T13:16:51+02:002020-09-30|EPLAN|

PrintYourStyle

Jan Güttler war so nett und hat ein Script bereitgestellt, welches den Druckvorgang automatisiert. Vielen Dank dafür!
Ein schönes Beispiel wie man mit Seitenfiltern im Scripting arbeiten kann.


Beschreibung:

Skript zur komfortablen und sortierten Ausgabe der Schaltungsunterlagen.
Einzelne Seiten hochkant in A3, beidseitig farbig oder einseitig schwarz weiß, völlig egal.
Alles was der Drucker unterstützt kann ausgenutzt werden.

Download

// Printyourstyle.cs 
//
// v.01
//
// Copyright by Jan Güttler 2020
// EPLAN P8 2.9
//
// Skript zur komfortablen Ausgabe der Elektrodokumentation.
// Im Prinzip kann man hier alles ansprechen, was zum Thema Ausdruck gehört.
// Voraussetzung ist, dass man Die Druckprofile der einzelnen Drucker als einzelnen Drucker installiert hat.
// Die Druckprofile innerhalb des jeweiligen Druckprogrammes lassen sich sicher auch ansprechen, da es aber unheimlich viele Druckprogramme gibt,
// gibt's keinen allgemeingültige Befehl.
//
// Mit Hilfe der Seitenfilter wird nur das an den jeweiligen Drucker gesendet, was auch gedruckt werden soll.
// 
//

using System.Threading;
public class printyourstyle
{
    [DeclareAction ("printyourstyle")] //Diese Action auf einen Button legen nachdem das Script geladen wurde
    public void Fertigung ()
    {
        //Um nicht bei Ausversehenklick gleich loszudrucken nochmal ne Abfrage
        DialogResult oDialogResult = MessageBox.Show ("Soll ich wirklich drucken?", "Letzte Chance!", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);

        if (oDialogResult == DialogResult.Yes) //Bei "Ja" gehts los, bei "Nein" wird der Befehl zurückgenommen
        {

            //Filtername aus dem Seitennavigator auslesen (muss sein, weil von diesem Filter die weiteren Schritte abhängen)
            String Pagefilter = new Settings ().GetStringSetting ("USER.PageBrowserGui.PageFilterScheme.LastUsed", 0);

            if (Pagefilter == "Filtername1") //Beispielfilter für Maschinentyp 1
            {

                //Eplan-Druckeinstellungen für den Klemmenplan auf farbig
                CommandLineInterpreter oCLI = new CommandLineInterpreter ();
                ActionCallingContext acc = new ActionCallingContext ();
                acc.AddParameter ("set", "STATION.Print.BlackWhite");
                acc.AddParameter ("value", "0"); //or 0
                oCLI.Execute ("XAfActionSetting", acc);

                //Für die Fertigung sollen Bemaßungen ausgedruckt werden
                acc.AddParameter ("LAYER1", "EPLAN107");
                acc.AddParameter ("PRINTED1", "1");
                oCLI.Execute ("changeLayer", acc);

                //Klemmenplan Maschinentyp 1ausgeben
                ActionCallingContext printContext0001 = new ActionCallingContext ();
                printContext0001.AddParameter ("printername", "Standarddrucker 1"); //z.B.: Drucker mit Druckprofil A4, bunt, einseitig
                printContext0001.AddParameter ("number", "1");
                printContext0001.AddParameter ("printcollate", "0");
                printContext0001.AddParameter ("printreverse", "0");
                printContext0001.AddParameter ("printchangedpages", "0");
                printContext0001.AddParameter ("type", "PAGES");
                printContext0001.AddParameter ("PAGEFILTERNAME", "Seitenfilter für Klemmenpläne Maschinentyp 1");
                new CommandLineInterpreter ().Execute ("print", printContext0001);

                //Zeitschleife, um Blätter nicht zu mischen
                {
                    Thread.Sleep (1000);
                }

                //Eplan-Druckeinstellungen für die Stückliste auf schwarzweiß
                acc.AddParameter ("set", "STATION.Print.BlackWhite");
                acc.AddParameter ("value", "1");
                oCLI.Execute ("XAfActionSetting", acc);

                //Stückliste
                ActionCallingContext printContext0004 = new ActionCallingContext ();
                printContext0004.AddParameter ("printername", "Standarddrucker 2"); //z.B.: Drucker mit Druckprofil A4, bunt, beidseitig
                printContext0004.AddParameter ("number", "1");
                printContext0004.AddParameter ("printcollate", "0");
                printContext0004.AddParameter ("printreverse", "0");
                printContext0004.AddParameter ("printchangedpages", "0");
                printContext0004.AddParameter ("type", "PAGES");
                printContext0004.AddParameter ("PAGEFILTERNAME", "Seitenfilter für Stücklisten Maschinentyp 1");
                new CommandLineInterpreter ().Execute ("print", printContext0004);

                //1 Sekunde warten
                {
                    Thread.Sleep (1000);
                }

                //Stromlaufplan
                ActionCallingContext printContext0013 = new ActionCallingContext ();
                printContext0013.AddParameter ("printername", "Standarddrucker 3"); //z.B.: Drucker mit Druckprofil A4, b/w, beidseitig
                printContext0013.AddParameter ("number", "1");
                printContext0013.AddParameter ("printcollate", "0");
                printContext0013.AddParameter ("printreverse", "0");
                printContext0013.AddParameter ("printchangedpages", "0");
                printContext0013.AddParameter ("type", "PAGES");
                printContext0013.AddParameter ("PAGEFILTERNAME", "Seitenfilter für Stromlaufplan");
                new CommandLineInterpreter ().Execute ("print", printContext0013);

                {
                    Thread.Sleep (1000);
                }

                //Aufbaupläne
                ActionCallingContext printContext0014 = new ActionCallingContext ();
                printContext0014.AddParameter ("printername", "Standarddrucker 4"); //z.B.: Drucker mit Druckprofil A3, farbig, einseitig
                printContext0014.AddParameter ("number", "1");
                printContext0014.AddParameter ("printcollate", "0");
                printContext0014.AddParameter ("printreverse", "0");
                printContext0014.AddParameter ("printchangedpages", "0");
                printContext0014.AddParameter ("type", "PAGES");
                printContext0014.AddParameter ("PAGEFILTERNAME", "Seitenfilter für Aufbauplan");
                new CommandLineInterpreter ().Execute ("print", printContext0014);
            }
            else

            if (Pagefilter == "Filtername2") //Beispielfilter für Kundenunterlagen 		
            {
                //Eplan-Druckeinstellungen für den Klemmenplan auf farbig
                CommandLineInterpreter oCLI = new CommandLineInterpreter ();
                ActionCallingContext acc = new ActionCallingContext ();
                acc.AddParameter ("set", "STATION.Print.BlackWhite");
                acc.AddParameter ("value", "0"); //or 0
                oCLI.Execute ("XAfActionSetting", acc);

                //Für die Kundenunterlagen sollen keine Bemaßungen ausgedruckt werden
                acc.AddParameter ("LAYER1", "EPLAN107");
                acc.AddParameter ("PRINTED1", "0");
                oCLI.Execute ("changeLayer", acc);

                //Kundenklemmenplan Maschinentyp 1 ausgeben
                ActionCallingContext printContext0001 = new ActionCallingContext ();
                printContext0001.AddParameter ("printername", "Standarddrucker 2"); //z.B.: Drucker mit Druckprofil A4, bunt, beidseitig
                printContext0001.AddParameter ("number", "1");
                printContext0001.AddParameter ("printcollate", "0");
                printContext0001.AddParameter ("printreverse", "0");
                printContext0001.AddParameter ("printchangedpages", "0");
                printContext0001.AddParameter ("type", "PAGES");
                printContext0001.AddParameter ("PAGEFILTERNAME", "Seitenfilter für Kundenklemmenpläne Maschinentyp 1");
                new CommandLineInterpreter ().Execute ("print", printContext0001);

                //Zeitschleife, um Blätter nicht zu mischen
                {
                    Thread.Sleep (1000);
                }

                //Eplan-Druckeinstellungen für die Kundenstückliste auf schwarzweiß
                acc.AddParameter ("set", "STATION.Print.BlackWhite");
                acc.AddParameter ("value", "1");
                oCLI.Execute ("XAfActionSetting", acc);

                //Stückliste Kunde
                ActionCallingContext printContext0004 = new ActionCallingContext ();
                printContext0004.AddParameter ("printername", "Standarddrucker 2"); //z.B.: Drucker mit Druckprofil A4, bunt, beidseitig
                printContext0004.AddParameter ("number", "1");
                printContext0004.AddParameter ("printcollate", "0");
                printContext0004.AddParameter ("printreverse", "0");
                printContext0004.AddParameter ("printchangedpages", "0");
                printContext0004.AddParameter ("type", "PAGES");
                printContext0004.AddParameter ("PAGEFILTERNAME", "Seitenfilter für Kundenstücklisten");
                new CommandLineInterpreter ().Execute ("print", printContext0004);

                //1 Sekunde warten
                {
                    Thread.Sleep (1000);
                }

                //Stromlaufplan Kunde
                ActionCallingContext printContext0013 = new ActionCallingContext ();
                printContext0013.AddParameter ("printername", "Standarddrucker 3"); //z.B.: Drucker mit Druckprofil A4, b/w, beidseitig
                printContext0013.AddParameter ("number", "1");
                printContext0013.AddParameter ("printcollate", "0");
                printContext0013.AddParameter ("printreverse", "0");
                printContext0013.AddParameter ("printchangedpages", "0");
                printContext0013.AddParameter ("type", "PAGES");
                printContext0013.AddParameter ("PAGEFILTERNAME", "Seitenfilter für Kundenstromlaufplan");
                new CommandLineInterpreter ().Execute ("print", printContext0013);

                {
                    Thread.Sleep (1000);
                }

                //Aufbaupläne Kunde
                ActionCallingContext printContext0014 = new ActionCallingContext ();
                printContext0014.AddParameter ("printername", "Standarddrucker 1"); //z.B.: Drucker mit Druckprofil A4, farbig, einseitig
                printContext0014.AddParameter ("number", "1");
                printContext0014.AddParameter ("printcollate", "0");
                printContext0014.AddParameter ("printreverse", "0");
                printContext0014.AddParameter ("printchangedpages", "0");
                printContext0014.AddParameter ("type", "PAGES");
                printContext0014.AddParameter ("PAGEFILTERNAME", "Seitenfilter für Kundenaufbauplan");
                new CommandLineInterpreter ().Execute ("print", printContext0014);

            }

        }
        if (oDialogResult == DialogResult.No) //Vertippt, wollte gar nicht drucken
        {
            MessageBox.Show ("Alles klar");
        }
        return;
    }
}
Von |2020-09-14T07:45:47+02:002020-09-04|EPLAN-Scripts|
Nach oben