Thomas Woelfers Baustatik Blog

Baustatik-Software und was sonst des Weges kommt

Dokumentation online

Ich hatte (glaube ich) bisher noch nie darauf hingewiesen: Für alle Programme die in der Baustatik enthalten sind, steht die komplette Dokumentation auch online zur Verfügung. Wer sich also einfach mal einen Überblick über die Programme verschaffen will, der braucht nicht unbedingt eine Demo zu installieren - sich aber auch nicht mit einer "spärlichen" Programmbeschreibung aus der Reklame zu begnügen: Die online verfügbare Dokumentation ist genau die gleiche, die auch mit den Programmen ausgeliefert wird. Zu finden unter http://www.die.de/docs.

Dort finden sich auch technische Hintergründe, zum Beispiel zu den verwendeten hybriden Elementen, zum Bemessungskonzept oder zu den Berechnungsmodellen.

Neue Updates verfügbar

Ab sofort gibt es im Download-Bereich Updates für das Stützenprogramm, für das Programm für die Bemessung von Betonquerschnitten, sowie für die 'Baustatik' mit dem Faltwerksprogramm und dem Programm für Dachberechnungen.

Details zu den Updates gibt es wie immer im Update-Protokoll im Download-Bereich.

Wichtig: Ab dieser Version der Baustatik (Faltwerk und Dach mit neuer Holzbaunorm) benötigen Sie für den Betrieb des Programms eine Lizenzdatei. Wie Sie da dran kommen hatte ich hier bereits beschrieben.

Anstehende Veränderungen bei 'Baustatik': Lizenzdateien

In Kürze (vermutlich ab morgen) wird es ein neues Update für die 'Baustatik' geben. Über die darin enthaltenen Änderungen sage ich später nochmals etwas - eine der Veränderungen will ich aber hier separat ansprechen: Ab dem nächsten Update - das wird Version 1.7 sein - benötigt man für den Betrieb des Programms Lizenzdateien.

Bisher war die Benutzung der Baustatik für alle Kunden kostenlos, ab dem nächsten Update wird das nicht länger der Fall sein. Jeder Kunde mit einem Work&Cash Vertrag wird die Baustatik natürlich weiterhin im Rahmen seines Vertrages nutzen können - die Baustatik ist dann also einfach ein weiteres Programm in der per Work&Cash verfügbaren Programmpalette. Wer keinen Work&Cash Vertrag hat, muss das Programm dann aber anderweitig lizensieren.

Bisher haben aber weder Kunden mit einem Work&Cash Vertrag, noch Kunden mit Kauflizenzen und auch Nutzer des Programmes, die die Software an (Hoch)schulen einsetzen eine passende Lizenzdatei. (Der Inhalt der Lizenzdatei wird übrigens ab Version 1.7 im 'Info über' Dialog angezeigt.)

Es ist also notwendig, das Sie sich für die Arbeit mit dem Programm passende Lizenzdateien besorgen. Das geht relativ einfach:

Wenn Sie einen Work&Cash Vertrag haben, senden Sie bitte einfach eine Mail an 'dk@die.de' mit dem Betreff 'Lizenzen' - wir senden Ihnen dann eine ZIP-Datei zurück: Diese Datei enthält die Lizenz für die 'Baustatik' und ein Installationsprogramm, das diese Datei richtig installiert. Sie müssen dieses Installationsprogramm

  • mit administrativen Rechten ausführen
  • erst nach der Installation der Version 1.7 ausführen

Wenn Sie eine kostenlose Hochschulversion verwenden: Bitte fordern Sie einfach auf dem normalen Weg einen neuen Satz an Lizenzdateien an. Früher haben Sie dann eine eMail mit einem ganzen Satz an einzelnen Lizenzen im Attachment erhalten - ab sofort erhalten Sie dann ebenfalls eine ZIP-Datei mit den Lizenzen sowie einem Installationsprogramm, das diese installiert. Auch dieses Installationsprogramm muss erst nach der Installation von Version 1.7 und ebenfalls mit administrativen Rechten ausgeführt werden.

Wenn Sie die Software kaufen möchten: Setzen Sie sich bitte einfach mit uns in Verbindung.

Das geht natürlich alles nicht "über Nacht" - schließlich brauchen Sie ein wenig Zeit um die Lizenzen anzufordern, und wir brauchen ein bisschen, um die zuzustellen. Darum finden Sie auf dem Webserver eine temporäre Lizenzdatei, die Sie herunterladen können. Der Link zum herunterladen befindet sich auf der Seite, auf der Sie sich zum download der Programme und Updates anmelden, direkt oberhalb des Anmeldeformulares.

Diese "temporäre" Lizenz gilt bis zum 30.11.2007 - Wir haben also gemeinsam etwa einen Monat Zeit, um jedermann mit passenden Lizenzdateien auszustatten.

Captchas sind auch nicht mehr, was sie mal waren

Ein Captcha (Completely Automated Public Turing Test to Tell Computers and Humans Apart) kommt Blog-Lesern die auch selber mal Kommentare schreiben vielleicht bekannt vor: Es handelt sich dabei um kleine Bilder von Buchstaben und Zahlen, die besonders verformt dargestellt werden - und zwar so, das ein Computer den "gemeinten" Inhalt nicht automatisch ermitteln kann. Will man nun einen Kommentar z.B. in einem Blog hinterlassen, muss man das Bildchen entziffern, und dessen Inhalt zusätzlich zum Kommentar mit eingeben.

Sinn der Sache: Nachdem das Bildchen von einem Computer nicht automatisch zu entziffern ist, können Spammer auch nicht automatisch Spam-Kommentare hinterlassen.

Leider klappt das nicht immer - wie man hier bei Pandasecurity nachlesen kann.

Probleme mit dem Ausdruck leerer Seiten

Beim Ausdruck von Graphiken innerhalb der Statik kommt es zu einem Problem: Wenn die zu druckende Graphik, die Parameter aus dem zugehörigen Navigationspunkt und die Einstellungen aus der Ausgabesteuerung ungünstig zusammenkommen, dann erfolgt hinter dem Ausdruck der Graphik noch ein Ausdruck einer zusätzlichen leeren Seite. Das Problem war mir schon seit einiger Zeit bewusst, allerdings hatte ich es nie geschafft, genau dieses Verhalten hier vor Ort zu reproduzieren. (Letztlich spielen dabei auch noch so Dinge wie der ausgewählte Druckertreiber, dessen Einstellungen und Papiergrößen und diverse andere Parameter eine Rolle - das macht die Sache etwas kompliziert.)

Seit letzte Woche ist das aber nun anders: Wir konnten den Problemfall reproduzieren - und das Problem auch beseitigen: Ab dem nächsten Update sollten von der Baustatik keine weiteren leeren Seiten  mehr gedruckt werden.

ZipFiles mit der PowerShell bestücken

Ich hatte vor kurzem ein kurzes Fragment eines PowerShell Skripts gepostet, mit dem man "ganz einfach" eine Zip-Datei anlegen kann. Damit will man natürlich auch was tun - in meinem Fall will ich da Dateien reintun, weil die dann später in gezippter Form per eMail versendet werden sollen. Dazu braucht man zunächst ein Folder-Objekt. Das bekommt man relativ einfach per new-Object:

function CreateZip( $path )
{
   set-content $path ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
   $zipFile = (new-object -com shell.application).NameSpace( $path )
   return $zipFile
}

Das Folder Objekt (das ist, was man tatsächlich bekommt) hat dazu eine passende Methode: CopyHere(). Wenn man danach sucht, dann findet man auch schnell Beispiele, wie man damit Dateien in die Zip-Datei bekommt. Angenommen, man hat eine Liste von vollständigen Pfaden zu Dateien in $files, dann geht das laut den Beispielen so:

$files | foreach {
   $zipFile.CopyHere( $_.fullname )
}
 

Das Problem dabei: Das klappt nicht richtig. Manchmal sind dann nämlich alle Dateien drin, manchmal nur die erste oder die letzte, und manchmal bekommt man eine Fehlermeldung, das die Zip-Datei defekt sei.

Ich habe ein bisschen nachgewühlt und die Symptome untersucht, und meiner Ansicht nach ist der Grund dafür der, das (im Gegensatz zum normalen Verhalten von Methoden in COM-Objekten) die Methode CopyHere() asynchron ist. Das bedeutet, der Aufruf von CopyHere() kommt sofort zurück, startet aber vorher einen asynchronen Vorgang der das eigentliche kopieren und komprimieren besorgt.

Macht man das also in einer Schleife für mehrere Dateien, laufen mehrere dieser asynchronen Vorgänge gleichzeitig - und kommen sich natürlich beim schreiben in die Zip-Datei in die Quere, da es offenbar keine Instanz gibt, die sich dann wieder um synchronisieren kümmert. Man muss das also selbst machen - zumindest habe ich keinen anderen Weg gefunden.

Man kann es aber dankbarerweise selbst machen, indem man überprüft, was das Zipfile über seinen eigenen Inhalt denkt: Das Folder-Objekt das das Zipfile abbildet, hat nämlich eine Methode Items(), und die hat ein Property Count. Man kann also nachsehen, ob bereits die Anzahl an Files im Zip sind, von denen man denkt das sie drin sein sollten. Sind sie es nicht, dann muss man noch ein bisschen warten. Eine funktionierende Method sieht also so aus:

$filesCopied = 1
$files | foreach { 
   $zipFile.CopyHere( $_.fullname )
   do {
      start-sleep -milliseconds 500
   } 
   while ( $zipFile.Items().count -lt $filesCopied )
   $filesCopied++;
}

Änderung bei den Studentenversionen

Schon seit über 10 Jahren ist unsere Software für den (Hoch)Schulbedarf völlig kostenlos und ohne Einschränkungen einsetzbar. Die Studentenversionen der Programme sind ganz normale Vollversionen mit einer einzigen Einschränkung: Die Programme dürfen nicht für kommerzielle Zwecke verwendet werden. Seit es diese Studentenversionen gibt, hat sich ein Umstand noch nie verändert, und das ist die Art&Weise wie wir die Lizenzen dafür verteilen.

Diese kamen bisher immer einfach als Anhang in einer eMail - was dann mit zunehmender Menge an Lizenzen immer etwas unhandlicher wurde. Dieser Umstand ändert sich ab sofort: Die Lizenzen für die Studenten- und Hochschulversionen werden zwar weiterhin per eMail verschickt, allerdings befindet sich ab sofort nur noch eine einzelne Zip-Datei im Anhang der Mail. Darin befinden sich dann die Lizenzen, sowie ein Installationsprogramm (setup.exe), das die Lizenzen installiert.

Damit das gelingt, müssen die Statikprogramme allerdings bereits installiert sein - es werden nur Lizenzen für Programme installiert, die bereits auf dem Rechner vorhanden sind. Wenn man nachträglich noch andere unserer Programme installiert, muss man das Installationsprogramm für die Lizenzen erneut laufen lassen.

Weiterhin gilt: Die Lizenzen gelten für ein Jahr, können aber jederzeit für ein weiteres Jahr verlängert werden.

ZIP-Datei mit PowerShell erzeugen

Einige Dinge sind noch immer so einfach wie vor 20 Jahren. Ein Beispiel dafür ist das Erzeugen einer ZIP-Datei mit der PowerShell. (Kleiner Aufsatz für den Einstieg in die Powershell von mir hier.)

Von Haus aus gibt es kein Kommando mit dem man unter Windows "einfach so" eine neue Zip-Datei per Kommandozeile anlegen kann - zumindest kenne ich keins. Mit der PowerShell ist das aber leicht nachgerüstet, denn (leere) Zip-Dateien sind nicht besonders kompliziert. Sie bestehen im wesentlichen aus einem konstanten Header. Der beginnt immer mit PK (Phil Katz), gefolgt von ein paar konstanten Byte. Wenn man die kennt, kann man mit dem folgenden PowerShell Skript "einfach so" eine passende Zip-Datei anlegen:

set-content $args[0] ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))

Der Name der Datei muss dem Script als erster Parameter übergeben werden: Fertig.

 

Das MDac Problem

Letzthin hatte ein Kunde ein Problem beim anlegen eines neues Projektes in der Baustatik. Es gab eine Fehlermeldung, mit (im wesentlichen) folgenden Inhalt:

System.InvalidOperationException:
The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.

Das stellte sich als sehr unangenehm heraus: Im Kern bedeutet das nämlich, das der von uns verwendete Datenbankmechanismus nicht funktioniert. Man kann das Programm aber gar nicht installieren, ohne diesen Datenbank-Kram mit zu installieren - und der lässt sich seinerseits auch nicht mehr deinstallieren.

Mit einem Wort: Irgend ein anderes Programm hat den Datenbank-Systemdienst "zerschossen" - und darum lief unsere Software nicht mehr.

Nach einigem Suchen fanden wir dann dankbarerweise ein Reparier-Programm, das den Fehler behoben hat - und die Baustatik lief dann auch wieder problemlos.