JohannWeiher

Über Johann Weiher

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

Übersetzen / Lokalisierung für C# / WPF

Ach, das mit der Übersetzung ist immer ein Problem, versteh nicht warum. Aber die Aufwände in einer Software/ in der Programmierung was zu übersetzen sind enorm.

Für WPF / C# habe ich eine Möglichkeit gefunden mit der es relativ einfach ist.

Ich verwende das Framework WPFLocalizationExtension. Man muss bisl Hand anlegen, aber wenn die Ressourcedatei mal steht ist es einfach zu pflegen.
Es ist auch möglich aus dem Code heraus, z.B. MessageBox, die Texte zu verwenden.

Um das ganze schön in Excel machen zu können verwende ich das Programm ResXManager. Gibt es als Addin für Visual Studio oder als Stand-Alone-Version.

Danach schön in Excel die Texte eintragen / eintragen lassen und wieder importieren.

Von |2015-06-01T12:41:53+02:002015-06-02|C#|

Laptop/Mac/Monitor reinigen

Dachte nicht dass ich hier irgendwann Tips zum Putzen geben werde…

Aber eigentlich kennt es jeder an einem PC-Arbeitsplatz. Der Bildschirm fängt Staub wie Manuel Neuer Bälle :^)
Die Tastatur wird genau so designed dass der Spalt reicht um Krümel zu sammeln, bei mir vorzugsweise Brezen-Salz, ein Problem dass wohl meist nur Bayer haben.

Aber wie reinige ich dann meinen Laptop/Mac/Bildschirm?

 

Bildschirm

Hier sieht man die Flecken & den Staub meist nur wenn der Bildschirm schwarz ist. Am besten wenn der PC hochfährt und die Beleuchtung an ist, aber eben der Hintergrund schwarz. Hierfür eine einfach Lösung für den laufenden Betrieb, funktioniert für alle Plattformen :^)

Einen Bildschirmschoner mit schwarzer Farbe einrichten und diesen aktiv schalten. Für den Mac muss man hier eine Datei kopieren, das ist hier beschrieben.

Das tolle ist, wenn man z.B. wie ich drei Monitore aktiv hat, werden alle schwarz :^)

 

Tastatur

Bei der Tastatur ist es ein bisschen schwieriger, diese sollte inaktiv sein. Generell sollte man ja nur im ausgeschalteten Zustand putzen (feuchte Tücher oder Ähnliches). Aber was ist mit meinen Brezen-Salz?

Hier gibt es kostenlose Programme für Mac und Windows, welche die Tastatur für Eingaben sperren.

 

Putzmittel

Oh mein Gott ich fühle mich gerade wie ein Vertreter im Shopping-Kanal, aber habe hier eine Empfehlung die mich immer wieder glücklich macht. Es handelt sich eigentlich um ein Mittel für Monitore, aber mein Macbook wird hier auch immer schön sauber. Es klebt auch nicht oder ähnliches, darum auch für die Tastatur geeignet…

Rogge TFT/LCD Reiniger

81Ka5LFsvpL._SL1500_

Hier empfehle ich auch die Kombination mit dem super Putztuch!

Soll wirklich keine Werbung sein, sondern nur ein Produkt was mir immer wieder Freude bereitet… und das beim Putzen :^)

Von |2018-02-26T08:21:28+01:002015-06-01|Hardware|

EPLAN-API: Showcase 2015 Mai

Ich habe die letzten Wochen paar Kundenlösungen entwickelt. Sind alles Funktionen welche, meiner Meinung nach, in EPLAN nicht fehlen sollten…

Falls jemand auch so schöne Funktionen haben möchte, einfach melden :^)

 

CorrectLocationDescription

Mit CorrectLocationDescription können Strukturkennzeichenbeschreibungen, welche leer sind automatisch gesetzt werden. So können für unterschiedliche Maschinen die Beschreibungen vorgehalten werden.

 

ToggleVariant

Mit ToggleVariant können schnell Varianten eines Symbol durchgeschaltet werden.

 

UpdateDevice

Mit UpdateDevice werden alle Artikeldaten des ersten Artikels, an das Betriebsmittel geschrieben. Es erfolgt hier keine Abfrage mehr wie in der EPLAN Standard-Funktion.

 

ReplaceDevice

Mit ReplaceDevice können Artikelnummern automatisch ersetzt werden. Es werden alle Eigenschaften des Artikels an das Betriebsmittel geschrieben.

 

ChangeCableLength

Mit ChangeCableLength können die Längen von selektierten Kabeln mit einem Offsetwert angepasst werden. Somit können zum Beispiel alle Kabel verlängert werden, wenn die Schaltschrankposition geändert wird.

Von |2015-10-29T11:29:53+01:002015-05-28|EPLAN|

EPLAN-API: Signierung automatisieren

Ach, es ist schon anstrengend jedesmal die API-Addins zu signieren. Gerade wenn man in der Entwicklung ist.
Ich mag keine Arbeitsschritte die ich immer wieder gleich manuell machen muss, das dürfte ja bekannt sein :^)

Darum habe ich mich umgeschaut wie man denn das Signieren automatisieren kann.

Mit dem Befehlszeilentool MsBuild kann man Projekte bauen und mit Parametern auch gleich signieren:

msbuild myapplication.sln /p:SignAssembly=true /p:DelaySign=true /p:AssemblyOriginatorKeyFile=mykey.snk

Einfach die Pfade zu den Dateien (Projekt/Key-File) eintragen und fertig… Denkt man. Aber es klappt nicht, habe schon einige Zeit damit verbracht dieses Verhalten nachzuvollziehen.

Aber ich habe einen Workaround gefunden. Die Projektdatei (bei C# *.csproj) kann man so anpassen dass beim Release auch signiert wird:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
  <PlatformTarget>x86</PlatformTarget>
  <OutputPath>bin\Release\</OutputPath>
  <SignAssembly>true</SignAssembly>
  <AssemblyOriginatorKeyFile>myKey.snk</AssemblyOriginatorKeyFile>
  <DelaySign>true</DelaySign>
</PropertyGroup>

Zu beachten: Bei Änderungen an den Eigenschaften im Projekt können sich diese Werte ändern.

Ich habe mir den Arbeitsablauf schon soweit automatisiert, dass bei jedem Release-Build die DLL gleich signiert wird. Alle Abhängigkeiten werden auch gleich zusammenkopiert. Für das Debuggen das gleiche, aber ohne Signing :^)

Jetzt muss ich nur noch den Upload zu EPLAN automatisieren, wenn da Jemand was für mich hat, wäre sehr dankbar!

Von |2015-05-12T14:03:21+02:002015-05-17|EPLAN|

EPLAN-API: Kabellänge in Einheit setzen

Aufgrund eines aktuellen Projektes bin ich in Berührung mit der Klasse UnitParser gekommen. Hat mir ziemlich Kopfschmerzen bereitet, aber mit Hilfe vom (super) EPLAN-Support konnte ich mein Vorhaben realisieren.

Zur Kabellänge sollte ein gewisser Wert (in Meter) addiert werden. Generell kein Problem.
Aber man kann in EPLAN die Einheit am Kabel selbst bestimmen. So kann die Projekteinstellung Meter sein, aber am Kabel kann ein Wert in Millimeter angegeben werden.

Dadurch ergibt sich folgender Workflow:

  • Konvertierung der Kabellänge zu Länge in Meter
  • Addieren des Offsets
  • Konvertierung der Kabellänge von Meter in die Quell-Einheit (z.B. Millimeter)

 

Schön ist auch dass der ParserParameter gleich ein Property für die Unterdrückung von Nullstellen mitbringt.

private void SetCableLenght(Cable cable, double offsetInMeter)
{
    // Get cable properties
    UnitParser unitParserOld = new UnitParser();
    ParserParameter parserParameterOld = new ParserParameter();
    parserParameterOld.Group = UnitGroup.Length;
    parserParameterOld.SuppressFloatingZeroes = true; // remove trailling zeros

    string oldLengthInSourceUnit = cable.Properties.FUNC_CABLELENGTH;
    unitParserOld.Set(oldLengthInSourceUnit, parserParameterOld);

    // get the right enum
    String unitString = unitParserOld.GetUnit();
    foreach (Unit unit in Enum.GetValues(typeof(Unit)))
    {
        if (unit.ToString() == "Length_" + unitString)
        {
            parserParameterOld.UnitID = unit;
            break;
        }
    }

    // calc in meter
    ParserParameter parserParameterNew = new ParserParameter();
    parserParameterNew.UnitID = Unit.Length_m;
    double oldLengthInMeter = unitParserOld.ValueToUnit(parserParameterNew);
    double newLengthInMeter = oldLengthInMeter + offsetInMeter;
    UnitParser unitParserNew = new UnitParser();
    unitParserNew.Set(newLengthInMeter, "m", parserParameterNew);

    // calc in source unit
    string newLengthInSourceUnit = unitParserNew.ToDisplay(parserParameterOld);
    cable.Properties.FUNC_CABLELENGTH = newLengthInSourceUnit;
}
Von |2015-05-06T08:44:11+02:002015-05-06|EPLAN|
Nach oben