Personal Designer portable

Beschreibung


Allgemein

  • da dieses CAD ein MS-DOS Programm aus der guten alten Zeit ist, würde es unter den heutigen neueren Betriebssystemen (Windows 7 bis 10) nicht mehr laufen
  • die Druckausgabe erfolgte damals über die parallele Schnittstelle, die neuere Geräte überhaupt nicht mehr besitzen
  • um die Nutzung unter heutigen Bedingungen zu gewährleisten, nutze ich den Emulator DOSBox
  • der Start erfolgt durch eine simple Batch Datei (pd6_1024_start.bat bzw. pd6_1280_start.bat)
  • damit können zwei verschiedene Fenstergrößen für die Arbeit eingerichtet werden
  • das Programm läuft völlig isoliert in einem virtuellen Laufwerk
  • mit dem Programm Pd6_DosBox_Setup.exe muss vor dem ersten Start nur der Laufwerksbuchstabe gewählt werden (dabei werden auch gleichzeitig evtl. fehlende Runtime Dateien im Windows System Ordner installiert)
  • zur Druckausgabe (ALT + P) wird sofort eine PDF Datei generiert und angezeigt
  • somit kann jeder beliebige Windows Drucker genutzt werden
  • bei “Personal Designer” handelt es sich um ein 3D-fähiges CAD-Programm (Drahtmodell) welches über eine vollgrafische Menüoberfläche verfügt
  • es ist ein  MS-DOS-Programm,  das den 386/DOS-Extender von PharLap nutzt
  • damit läuft das Programm im Protected Mode, der die Nutzung der 32-bit-Funktionen der Prozessoren ermöglicht
  • glücklicherweise wurden kurz vor Einstellung der Programmentwicklung noch einige Optimierungen vorgenommen, die einen stabilen Lauf unter neueren Windows Versionen zu gewährleisten
  • obwohl es sich um ein englischsprachiges Programm handelt, sind zu dessen Bedienung kaum Englischkenntnisse erforderlich
  • zur Programmierung sind diese jedoch unumgänglich, da die dazu notwendigen Dokumentationen nicht in Deutsch verfügbar sind
  • bei der Downloadversion ist die SURFACE-Option entfernt worden, d.h. es lassen sich keine Oberflächen in die Zeichnungen einfügen, die nötig sind, um Linienmodelle als Körper darstellen zu können
  • bei der “klassischen Konstruktion” werden diese Funktionen aber sicherlich nicht vermisst

 

Vor- und Nachteile

  • meiner Meinung nach ist der herausragende Vorteil die Filterfunktion bei der Objektauswahl und dem Punktefang
  • sie ist sehr flexibel anwendbar
  • dadurch kann das nervige Zoomen in dichtgepackten Zeichnungen drastisch vermindert werden, ebenso kann die Auswahl falscher Objekte bzw. Punkte verhindert werden
  • so kann man auch in vielen Fällen auf eine Verteilung der Zeichnungsobjekte auf verschiedene Layer verzichten
  • die Funktion gestattet es, dass das Fangkreuz nur Objekte oder Punkte mit bestimmten Eigenschaften (z.B. Objekttyp, Farbe, Linientyp, Layer) anwählen kann, dabei sind beliebige Kombinationen möglich, auch können die Kriterien während der Befehlausführung zurückgesetzt und neu bestimmt werden
  • das Programm speichert alle Werte der Objektkoordinaten in 4 Byte REAL-Zahlen, womit eine Genauigkeit von 6 Stellen erreichbar ist, das spart Speicherplatz (bedeutsam für Onlinetransfer) und verkürzt die Rechenzeit
  • es gibt sicherlich Anwendungsgebiete, bei denen diese Rechengenauigkeit nicht genügt, bei meiner Tätigkeit bin ich aber nie an die Grenzen gestoßen
  • die Speicher- und Ladezeiten der Zeichnungsdateien sind mit der heutigen Hardware extrem kurz (auch bei großer Objektanzahl)
  • konvertiert man eine “Personal Designer”-Zeichnung  über DXF in eine Autocad14-Zeichnung, ist deren Speicherbedarf um ein vielfaches höher
  • das Programm läuft sehr stabil, Abstürze treten praktisch nicht auf
  • als einzigen richtigen Nachteil kann ich nur den geringen Bekanntheitsgrad des Dateiformates (.DRW) nennen, der zur Folge hat, dass kaum ein anderes Programm dieses Format liest, geschweige denn konvertiert
  • Fremdformate können nur über DXF eingelesen werden
  • da in meiner beruflichen Praxis bei der Zusammenarbeit mit anderen Firmen immer wieder die Forderung besteht, Zeichnungen im DXF- bzw. DWG-Format zu liefern, habe ich mich mit der Programmierung einer Exportschnittstelle beschäftigt
  • ich habe ein UPL-Programm entwickelt, mit dem die aktuelle Zeichnung direkt im Programm als DXF-Datei gespeichert werden kann
  • Ziel war es, ein sauberes DXF-Format zu schreiben, das direkt in AUTO-CAD  mit dem Menüpunkt "Datei öffnen" eingelesen werden kann, ohne daß ein Nachbearbeiten notwendig ist 
  • das funktioniert inzwischen so gut, daß die konvertierte Zeichnung dem PD-Original fast gleicht
  • so werden Farben, Linienstile ,Schriftform (Simplex) ,Schriftgröße, Schraffuren fehlerfrei übersetzt
  • die dynamische Bemaßung (linear und Winkel) bleibt dynamisch veränderbar
  • wer einmal Zeichnungen konvertiert hat, weiß wie sie hinterher aussehen (nach meinen Erfahrungen wird das Layout dabei meistens vollständig zerstört)

 

Bildschirmenüs

  • zwei verschiedene Menüsysteme (Old-Style und an Windows angelehntes Dialogbox -System), wobei jedes spezielle Vorteile aufweist
  • obwohl beide im Programmieransatz vollkommen unterschiedlich sind, habe ich einen Weg gefunden, beide Systeme in einem Menü zu kombinieren
  • ich habe das Ziel verfolgt, das Menü so zu gestalten, dass das Digitalisiertablett zur Befehlseingabe überflüssig wird
  • der Grund dafür ist der, dass ich als Brillenträger bei 8 Stunden tagtäglicher Arbeitszeit den ständigen Blickwechsel zwischen Bildschirm,Tablett und Tastatur als sehr anstrengend empfunden habe
  • mein aktuelles Bildschirmmenü erlaubt jetzt in Kombination mit der Tastatur die vollständige Programmkontrolle (einschließlich Bibliotheksverwaltung)
  • das Old-Style Menü wird aus einer Zeichnungsdatei generiert, wodurch sich sehr aussagekräftige Schaltflächen erzeugen lassen
  • beim zweiten System ist zur Zeichnung noch ein Programm erforderlich, die Programmierung ist nicht ganz einfach, aber es lässt sich damit praktisch alles  erzeugen (Programmieranleitung steht im WINWORD 2003-Format zur Verfügung)
  • die Möglichkeiten sind so vielfältig, dass an dieser Stelle unmöglich eine komplette Beschreibung erfolgen kann
  • Aufruf der Menüs kann durch die Tastatur oder durch das Anklicken von Schaltflächen bereits eingeblendeter Menüs erfolgen
  • eine sehr praktische Menüanwendung habe ich selbst programmiert: am linken Bildschirmrand habe ich zwei schmale unsichtbare Dialogboxen (Breite 5 Pixel) plaziert
  • berühre ich mit dem Fangkreuz den linken oberen Bildschirmrand, wird die REPAINT-Funktion aufgerufen
  • Klickt man mit der linken Maustaste wenn sich der Mauszeiger im linken unteren Bereich befindet, öffnet sich ein umfangreiches Bildschirmmenü
  • auf diesem ist auch der Funktionstastenmenü abgebildet (diese Tasten sind auf dem Bildschirm alle anklickbar)
  • das dient zugleich als Hilfe zur Belegung der Funktionstasten
  • im unteren Bereich des Bildschirmrandes erfolgt im Objekt- oder Punktfangmodus automatisch die Einblendung einer FILTER-Dialogbox
  • Letztere wird durch Anwahl einer Schaltfläche oder durch Hinein- und Herausbewegen des Fangkreuzes (wenn Box irrtümlich aufgerufen wurde) vom Bildschirm entfernt

 

Tastatur

  • ein großer Vorteil von PD ist die Möglichkeit, alle Tasten bzw. Tastenkombinationen frei zu belegen
  • so sind unter anderem alle Funktionstasten belegbar, ohne eine Windows-Aktivität auszulösen
  • in der Textdatei "Pd_mac.def" werden die Belegungen mit einem einfachen Editor eingetragen
  • die so erstellte oder geänderte Datei wird mit dem Compiler "BLDF.EXE" compiliert, wodurch eine Tastatursteuerungsdatei erzeugt wird
  • Tasten sind auch mit speziellen Menüsteuerungsbefehlen belegbar, z.B. kann ich mit meiner Tastaturbelegung mit den Funktionstasten Untermenüs in das Hauptmenü einfügen
  • Befehle einer Funktionsgruppe sind dadurch mit einem Tastendruck verfügbar, eine Methode, die sich in der Praxis als außerordentlich praktisch erwiesen hat

 

Macrosprache

  • PD führt Dateien mit der Endung ".SGX" als Batchdateien aus
  • diese können alle ausführbaren Befehle der PD-Syntax enthalten (das sind die Befehle, die links oben in das Textfenster geschrieben werden)
  • ich benutze sie eigentlich nur zu speziellen Zwecken (z.B. erzeugt mein Dateiauswahlprogramm, welches in POWER-Basic geschrieben ist, solche Dateien, die anschließend automatisch ausgeführt werden
  • mit dem Befehl "SEL JOURNAL ON" kann die Aufzeichnung der folgenden Befehlsfolgen gestartet werden (mit "SEL JOURNAL OFF" wird der Vorgang beendet)
  • die so erzeugte Datei kann man beispielsweise als Demovorführung laufen lassen

 

UPL (User Programming Language)

  • mit dieser zum PD gehörigen Programmiersprache besitzt man ein mächtiges Werkzeug, um zusätzliche Befehle zu programmieren
  • sie kennt alle wichtigen mathematischen Funktionen und erlaubt den Zugriff auf die Elemente-Datenbank der aktuellen Zeichnung
  • da diese Befehle nur zur Ausführung geladen werden, ist dieses offene System praktisch unbegrenzt erweiterbar
  • werden diese zusätzlichen Befehle geschickt programmiert und in die Menüs eingebaut, ist bei deren Ausführung kein Unterschied zu den Standardbefehlen des PD zu bemerken
  • die UPL-Befehle werden in eine Textdatei mit der Endung ".UPL" geschrieben
  • mit der "UPL.EXE" wird diese compiliert
  • die so erzeugte Datei mit der Endung ".UCD" kann im PD mit dem Befehl "RUN xxx.UCD" aufgerufen werden

 

Beispiele

Konstruktion einer Tangente von einem Punkt an einen Kreis

PROC main

COORD end1, end2, end3, m, rotvec
INTEGER i, ndigs,daten(8),entdata(5),anzahl,acpl
INTEGER iend,err,minpunkt
INTEGER4 nents,linmib,newmib
REAL transform(15),xradius,abeg,aend,lg,tglg,deltal,winkel

ECHO ON
TEXTCOLOR (15)
PRINT 'INS TANGENT:',
TEXTCOLOR(13)

LOOP
   eingabe1:
   ENTMASK(0)
   PRINT 'dig ',
   GETDIG(1, 1, ndigs, end1)
   IF LASTCHAR = 3 OR LASTCHAR = 13 THEN
      RETURN
   ENDIF
   IF ndigs=0 THEN
      GOTO eingabe1
   ENDIF

   ECHO OFF ALL
   INPUTSTR('dig \e+\')
   GETDIG(1, 1, ndigs, end3)

   eingabe2:
   ENTMASK(0); ENTMASK(3)
   PRINT ' cir ',
   GETENT(1, nents, linmib, iend)
   RETURN WHEN LASTCHAR = 3 OR LASTCHAR = 13
   IF nents<1 THEN
      GOTO eingabe1
   ENDIF

   RPNTENT(linmib, 1, err)
   RSUBRECAC(linmib,1,err,transform(1),xradius,abeg,aend)

   end2.X=transform(10)
   end2.Y=transform(11)
   end2.Z=transform(12)

   lg=VLEN(end1,end2)

   IF lg<=xradius THEN
      PRINT ' invalid point '
      GOTO eingabe1
   ENDIF
   tglg=lg*lg-xradius*xradius
   tglg=SQRT(tglg)
   winkel=ATAN(xradius/tglg)

   m=end1-end2
   end2.X=end1.X-tglg/lg*m.X
   end2.Y=end1.Y-tglg/lg*m.Y
   end2.Z=end1.Z-tglg/lg*m.Z

   SYSVARI(12,acpl)
   GETCPL(acpl,transform(1))
   rotvec.X=transform(7)
   rotvec.Y=transform(8)
   rotvec.Z=transform(9)
   ROTMAT(winkel,rotvec,transform(1))
   transform(10)=end1.X
   transform(11)=end1.Y
   transform(12)=end1.Z

   m=end2

   ROTPNT(transform(1),m,1)

   GETCPL(acpl,transform(1))
   rotvec.X=transform(7)
   rotvec.Y=transform(8)
   rotvec.Z=transform(9)
   ROTMAT(-winkel,rotvec,transform(1))
   transform(10)=end1.X
   transform(11)=end1.Y
   transform(12)=end1.Z

   ROTPNT(transform(1),end2,1)

   IF VLEN(LASTDIG(),m)>VLEN(LASTDIG(),end2) THEN
      INSERT LINE ENDS(end1,end2),RPNT(TRUE)
   ELSE
      INSERT LINE ENDS(end1,m),RPNT(TRUE)
   ENDIF
   IF LASTCHAR = 13 THEN
      RETURN
   ENDIF
END LOOP

END PROC


DXF-Ausgabe der aktuellen Zeichnung

Mit der Downloadversion wird nur der Konverter PUTDXF.EXE geliefert, dessen Konvertierungsergebnisse völlig unbrauchbar sind. Daher habe ich das UPL-Programm "DXFOUT8.UPL" geschrieben, um möglichst fehlerfreie DXF-Dateien zu erhalten. Dieses kann direkt im PD mit dem Befehl "RUN DXFOUT8" gestartet werden bzw. kann man ihn in das Menü integrieren.

Hier erst mal eine Beschreibung meines Programmes. Wenn Ihnen die Funktionen ausreichen, können Sie das Programm verwenden.


Das Programm besitzt folgende Eigenschaften:

- speichert zuerst die aktuelle Zeichnung
- danach erfolgt die Konvertierung folgender Elemente in die Datei
  <aktueller Name>.DXF  (bereits vorhandene Datei wird überschrieben):

  • Linie
  • String
  • Kreis und Kreisbogen
  • Text (feste Fontvorgabe Simplex fuer PD-Font Nr.2)
  • Lineare Bemassung
  • Winkelbemassung

Folgende Elemente werden als Block exportiert:

  • Schraffur
  • Label
  • Radius-Bemassung
  • Durchmesser-Bemassung
  • Ordinaten-Bemassung

Folgende Elemente werden als String exportiert:

  • Ellipse

Folgende Elemente werden ignoriert:

  • Punkt
  • Konstruktionslinie
  • Figur
  • MView
  • Display Image
  • View
  • alle 3D-Elemente des PD mit Surface-Option (CPole, Spole, Plane,
    Connect node, NURB ...)
  • Centerline

Bei Bedarf könnte man sicherlich das Programm für die fehlenden Elemente weiterentwickeln (daher veröffentliche ich auch den Quellcode). Die ignorierten Elemente kommen in meinen Zeichnungen nicht vor bzw. sind beim Export ohne Bedeutung. Kommt der Objekttyp "Figur" vor, muß er vor dem Konvertieren zerlegt werden.

Wenn man die erzeugte DXF-Datei z.B. in ACAD unter "Datei öffnen... (*.dxf)" direkt aufruft, kommt das Aussehen der Zeichnung dem PD-Original sehr nahe. Ich habe mitlerweile recht positive Rückmeldungen von anderen Firmen erhalten, die die unterschiedlichsten CAD-Systeme verwenden. Mit den importierten DXF-Dateien hat es nur wenig Probleme gegeben.

Da ich sehr viele Anfragen zu diesem Programm hatte, möchte ich es nun als Download zur Verfügung stellen. Im eigenen Interesse bitte zuerst mit Kopien der Originalzeichnungen testen, um Datenverlust durch eventuelle Fehler zu vermeiden. Die Nutzung des Programmes erfolgt auf eigene Gefahr !

Die Dateien 'dxfhead.dat' und "DXFOUT8.UCD" bitte in das Verzeichnis '\pd6\pd\' kopieren.

Das UPL-Programm wird direkt im PD gestartet (run dxfout8<ENTER>). Natürlich kann man den Befehl auch auf das Tablett oder in das Bildschirmmenue legen.Das ist eigentlich schon alles. Das Programm liest die Systemvariable des aktuellen Dateipfades aus und wandelt die Endung in .DXF. Keine Panik bei den dann folgenden Bildschirmaktionen. Diverse Elemente werden in Einzelteile zerlegt um sie in Blöcken speichern zu koennen. Die Zeichnung geht aber nicht verloren. Sie wird zuvor gespeichert. Beim Programmende wird diese gespeicherte Zeichnung wiederhergestellt. Die "zerstörte" Zeichnung wird nicht gespeichert.


 

 

 

© 2019 Gunnar Daehling

Datenschutzerklärung