Thomas Woelfers Baustatik Blog

Baustatik-Software und was sonst des Weges kommt

Die Baustatik und Ihre Dateien

Die Baustatik legt eine ganze Menge Dateien an, und ich glaube, wir haben nirgendwo eine komplette Liste davon in der Dokumentation stehen. (Was natürlich auch unter anderem damit zusammenhängt, das sich diese Dateien hin- und wieder ändern.). Daher hier mal ein Versuch, eine aktuelle Liste mit ein wenig Informationen zu den einzelnen Dateien aufzuführen.

Zunächst einmal sind da die Dateien im "Lokalen" Anwendungsverzeichnis. Unter Vista ist das der Ordner \Benutzer\[Account]\AppData\Local\D.I.E. CAD und Statik Software GmbH\D.I.E. Baustatik\[Aktuelle Version]\.

Darin befinden sich folgende Dateien:

DisplayAttributeDefaults.xml: Ein "menschenlesbare" Datei, die die Vorgabewerte für die Darstellungseigenschaften der Objekte enthält.

[DokumentType (z.b.: "Faltwerk", "Dach")].memento: Eine nicht von Menschen lesbare Datei mit Daten über die letzte Benutzung dieses Dokumenttypes. Enthält zum Beispiel die Angabe, welches Material beim letzten Mal verwendet wurde.

*.user.mdb: Datenbankdateien, die man (im Prinzipi) mit Microsoft Access oder einen ähnlichen Werkzeug ansehen kann. Diese Dateien enthalten vom Benutzer eingegebene Daten des passenden Typs - also zum Beispiel Materialien.

mementos.bin: Eine nicht von Menschen lesbare Datei, die z.B. Informationen über die letzten Fensterpositionen und Größen enthält, sodas Fenster beim nächsten Programmstart an der gleichen Stelle und in gleicher Größe erscheinen.

parameters.xml: Ein von Menschen lesbare Datei, im Wesentlichen eine Information enthält: Das zuletzt geladene Projekt. Das ist das Projekt, das beim nächsten Programmstart automatisch geladen wird.

Ferner gibt es einen Ordner Debug-Logs: Der enthält von Menschen lesbare Dateien, die wir zum Teil bei der Hotline einsetzen. Die Dateien enthalten zusätzliche Informationen über eventuell aufgetretene Fehler im Programm. Der Ordner de-DE enthält die Definitionen (von Menschen lesbar) für Menüleisten und Werkzeugleisten.

Der nächste wichtige Ordner befindet sich in "Dokumente bzw. Meine Dateien" und hat den Namen "Baustatik". Darin befindet sich das Beispielprojekt. Selbiges besteht aus der Projektdatei *.baustatik, aus Eingabedateien *.S0X, den dazu gehörenden Ausgabesteuerungen *.0X.composition.xml (beides von Menschen lesbar) sowie einer .memento Datei (nicht von Menschen lesbar) mit Informationen über die letzten Zustände im Programm bei der Arbeit mit der zugehörigen Eingabedatei.

Dann gibt es unter "Baustatik" noch den Ordner "Makros" - der enthält Makros, sofern welche definiert wurden.

Und schließlich gibt es noch den Ordner "Vorlagen". Dieser Ordner enthält:

*.style: Dateien, die die Stildefinitionen für den Ausdruck enthalten. Nicht von Menschen lesbar, aber mit einem Werkzeug der Baustatik bearbeitbar.

*.stationary: Briefpapier-Definitionen: Ebenfalls innerhalb der Baustatik bearbeitbar.

*.template: Vorlage für neue Makros

... und außerdem: Dateien, die zum Beispiel fürs definieren eigener Logos im Briefpapier oder eigener Texturen verwendet werden.

 

Nochmal: Der neue Durchlaufträger

Vorab eine kurze Klarstellung: Ich habe schon mehrfach auf den kommenden neuen Durchlaufträger in der Baustatik hingewiesen aber eines wohl nicht klar genug dargestellt. Der neue Durchlaufträger ist zur Zeit NOCH NICHT in der Baustatik enthalten. Er wird zwar zunehmend vollständiger und wird wohl bald enthalten sein, zur Zeit ist er das aber nicht - und auch im Update Anfang nächsten Monats wird er nicht enthalten sein. aber er kommt, ganz sicher :-)

Zu Eingabe beim neuen Durchlaufträger

Nachdem der Durchlaufträger Teil der Baustatik sein wird, hat er natürlich alle Eingabe- und Bearbeitungsmöglichkeiten, die man dort erwartet: Es gibt eine Tabelleneingabe, die Eigenschaften- und die Dokumenten-Ansicht. Ebenso gibt es graphische Eingabemöglichkeiten und die typischen Möglichkeiten innerhalb der Visualisierung: Man kann also in der Graphik auf Felder, Lager, Laste, etc. klicken, und dann deren Eigenschaften bearbeiten oder die Elemente löschen.

Darüber hinaus gibt es aber auch ein sehr hilfreiches kleines Hilfsmittel: Die Träger-Schnelleingabe. Damit kann man "auf die Schnelle", mit nur einer einzigen Dialogbox, einen Einfeld- oder Mehrfeldträger erzeugen. Man gibt ein G und ein P an, definiert die Lagerung sowie die Feldlängen - sowie optional noch Kragarme - und die Schnelleingabe erzeugt daraus ein vollständiges Durchlaufträgersystem mit allem drum und dran. Das kann man dann natürlich ganz normal mit den gewohnten Möglichkeiten bearbeiten - also in der Graphik, per Tabelleneingabe etc. etc..

Wieso muss man beim installieren von Updates immer wieder administrative Daten eingeben?

Heute kam bei einem Kundengespräch die Frage auf, wieso man beim installieren der Updates für die Baustatik, immer wieder den Namen und das Passwort eines administrativen Kontos eingeben muss - immerhin hätte man das ja einmal bei der Erstinstallation getan. Hätte man da nicht einfach diese Daten irgendwo speichern können, um sie dann bei späteren Installation zu verwenden? Das würde doch die Installation der Updates viel einfacher machen, weil man nicht jedesmal den Administrator zur Hilfe holen müsste.

Interessante Frage, und zwar eine aus der Kategorie, die man am besten mit einer Gegenfrage beantwortet. Die Gegenfrage ist bei Fragen dieser Kategorie immer die gleiche, und zwar wörtlich die gleich. Sie lautet.

Was würde denn passieren, wenn wir das täten?

Das Programm das nach den administativen Rechten fragen würde, wäre ja einfach die Baustatik, und die läuft nunmal (zumindest sollte man sie so betreiben) ohne administrative Rechte. Das tut sie darum, weil der Benutzer der das Programm gestartet hat, sich selbst mit Daten angemeldet hat, die eben keine administativen Rechte haben. Das ist ja der Grund dafür, weshalb nach solchen Daten gefragt werden muss.

Wir haben also ein Programm, das ohne administrative Rechte läuft - und dieses Programm würde nun die Daten eines administrativen Accounts speichern. Und wo würde es diese Daten speichern? Natürlich innerhalb eines Bereiches auf der Festplatte, auf den der Benutzer OHNE administrative Rechte Zugriff hat - denn ansonsten könnte das Programm ja "später", also bei der Installation der Updates, nicht mehr darauf zugreifen.

Effekt: Die Daten eines administrativen Accounts lägen nun plötzlich ungeschützt einfach so auf der Festplatte, und zwar an einer Stelle, auf die JEDES Programm zugreifen kann, das unter dem Account des angemeldeten Benutzers läuft.

Mit anderen Worten: Das administrative Konto wäre plötzlich völlig ungeschützt und kann dann von jeder Schadsoftware die unter dem Benutzeraccount ohne administrative Rechte läuft verwendet werden. Zum Beispiel, um irgendwelche Trojaner oder sonstigen Kram zu installieren - und zwar für ALLE Benutzer auf dem System. [Natürlich ist die Sache nicht ganz so einfach, vom Prinzip her ist das aber völlig korrekt.] 

Mit anderen Worten: Wenn die Baustatik sich die Daten des Administator-Kontos in einer Form merken würde die es erlaubt, spätere Updates ohne einen administrative Account zu installieren, würde das die komplette Sicherheit des Systems aushebeln.

Und das ist der Grund, wieso wir das nicht tun. Und sollte ein anderer Hersteller das tun, dann mag er das vielleicht als "einfachere Bedienbarkeit" verkaufen - in Wirklichkeit handelt es sich aber einfach nur um die Einführung einer massiven Sicherheitslücke.

Neue Updates verfügbar

Ab sofort sind zwei neue Updates verfügbar: Eines für das Fundamentprogramm, ein anderes für den Durchlaufträger. Details dazu gibt es wie immer im Update-Protokoll und im Blog meines Bruders.

Manche Dinge sind deutlich aufwendiger, als man glaubt

Oder um genau zu sein: Eigentlich sind die meisten deutlich aufwendiger als es aussieht. Zum Beispiel, diese kleine Graphik aus dem neuen Durchlaufträger-Programm:

Wer das alte Programm kennt sieht wohl recht schnell, das sich an der Graphik doch einiges getan hat. Was dabei wirklich verblüffend ist: Die Ausgabe der Kurvenbeschriftung - tatsächlich nur der Beschriftung - benötigt etwa 600 Zeilen Quellcode. Im Normalfall merkt man davon noch nicht einmal etwas - viel davon wird nur benötigt, um Kollisionen von Beschriftungen zu vermeiden, bzw. die Beschriftungstexte möglichst "gut" zu plazieren.

Das ist übrigens auch der Grund warum Dinge meist nicht "mal so eben" geändert werden können - wenn man sich überlegt, das alleine die Beschriftung der Kurven 600 Zeilen hat, dann kann man sich vielleicht vorstellen, wie umfangreich alles zusammen ist: Dadurch wird keine Änderung eine "kleine" Änderung.

Bleche im Stahlprofileditor verschieben und kopieren

Im Faltwerk gehts, im Stahlprofileditor fehlt er leider, der Befehl "Geometrie verschieben". Das ist lästig, wenn man zusammengesetzte Querschnitte aus importierten Querschnitten anlegen will, denn mit einem einfachen "Kopier" Befehl geht diese Arbeit viel leichter von der Hand.

Als Lösung bis der "richtige" Befehl verfügbar wird, hier ein kleines Makro, das die zur Zeit ausgewählten Bleche um ein Delta in Y und Z verschiebt, und dabei Kopien anlegt. Knoten werden bei Bedarf ebenfalls kopiert. (Bitte Achtung: Kein offizielles Programmstück, nicht supportet oder gewartet und schon gar nicht ausführlich getestet... Sollte aber gehen :-) )

--

using System;
using DIE.Framework.ApplicationModell.Scripting;
using DIE.Framework.ApplicationModell.Commands;
using DIE.Framework.DocumentModell;
using DIE.Framework.ObjectModell;
using DIE.Geometry;

using DIE.Applications.ProfileEditor.Objects.Nodes;
using DIE.Applications.ProfileEditor.Objects.Beams;

namespace MeineMakros
{
 public class SPE : UserCommandBase
 {
    private class Dyz
    {
   private double y,z;
       public double Y { get { return y;} set { y = value; }}
       public double Z { get { return z;} set { z = value; }}
    }
 
    /*
       * Initialisierung des Makrobefehls.
       */
  public SPE() : base(@"spe", @"Kopiert und verschiebt ausgewählte Bleche im Stahlprofileditor")
  {
  }
  
  /*
   * Einsprungsfunktion des Makros
   */
  public override void Execute(IExecuteCommandContext context)
  {
   System.Windows.Forms.MessageBox.Show(this.TooltipText, this.CommandName);
   
   Dyz dyz = new Dyz();
   MacroTools.EditValue( dyz);
   XVector3d delta = new XVector3d( 0, dyz.Y, dyz.Z);
   
   IDocObjectCollection beams = context.TargetDocument.GlobalSelection.GetObjects( typeof( Beam ));
   if( beams.Count == 0)
   {
    System.Windows.Forms.MessageBox.Show("Es sind keine Bleche ausgewählt.");
    return;
   }
   
   foreach( Beam beam in beams)
   {
      Beam copy = Beam.CreateNamed( context.TargetDocument );
      copy.Dicke = beam.Dicke;
     
      XPoint3d pntStart = beam.Anfangsknoten.Punkt;
      XPoint3d pntEnd = beam.Endknoten.Punkt;
     
      Node nodeBegin = Node.Find( context.TargetDocument, pntStart + delta);
      if( nodeBegin == null)
      {
         nodeBegin = Node.CreateNamed( context.TargetDocument, pntStart + delta );
         context.TargetDocument.AddObject( nodeBegin );
    }
     
      Node nodeEnd = Node.Find( context.TargetDocument, pntEnd + delta);
      if( nodeEnd == null)
      {
     nodeEnd = Node.CreateNamed( context.TargetDocument, pntEnd + delta);
     context.TargetDocument.AddObject( nodeEnd );
      }
     
      copy.Anfangsknoten = nodeBegin;
      copy.Endknoten = nodeEnd;
     
      context.TargetDocument.AddObject( copy );
   }
  }
 }
}

--

Wie man im VS 2005 eigenen Kommandos Bitmaps zuweist

Ich habe nun nur etwa 3 Jahre gebraucht um drauf zu kommen... vielleicht hilft es ja an anderer Stelle auch weiter :-)

Wenn man das Visual Studio per Macro um einen eigenen Befehl erweitert, dann erscheint der zunächst als NameOfModule.NameOfHabeIchVergessen.NameOfFunction im Menü bzw. der Werkzeugleiste: Jedenfalls als ein etwas hässlicher FQN des Kommandos. Wenn man nun will, das statt dessen ein Bitmap angezeigt wird, dann ist das _gaaaanz_ einfach, zumindest, wenn man drauf kommt.

Es geht so:

1.) Den "Customize" Dialog öffnen. (z.B. per Rechtsklick auf die Werkzeugleiste.

2.) Dann bei geöffnetem Dialog das Kommando anklicken, das man optisch aufpeppen will.

3.) Was wiederum dazu führt, das der "Modify Selection" Drop-Down Button enabled wird - und man z.b. einen anderen Button auswählen kann.

Zur Normauswahl in der Ausgabesteuerung

Die Ausgabesteuerung - also die Kontrolle des Ausdrucks - in der Baustatik ist weitestgehend unabhängig vom auszudruckenden Dokument. Das ist deshalb so, damit eine einmal eingestellte Ausgabesteuerung als Vorlage für zukünftige Ausdrucke verwendet werden kann. Nun gibt es aber dummerweise ein paar Dinge, bei denen die Sache mit der "Dokumentenunabhängigkeit" nicht ganz so einfach ist. Eines davon ist die Kontrolle der auszugebenden Norm bei linearen Überlagerungen.

Und ja, doch, man kann dort in der Tat einstellen, welche Norm mit ausgedruckt werden soll, und welche Bemessungssituation(en) dabei berücksichtigt werden sollen. Die Sache ist allerdings ein bisschen "versteckt" - das folgende Bild sollte da aber Abhilfe schaffen: