  ##############################################################################
  ###                                                                        ###
  ###  Diese Datei enthaelt Informationen zum Konvertieren von Daten aus     ###
  ###  Sigraph-Design zu EUKLID Design und zum Einsatz von EUKLID Design     ###
  ###  Classic                                                               ###
  ###                                                                        ###
  ##############################################################################

Weitere Verfuegbarkeit der Altversion

   In vielen Kundenanfragen wurde der Wunsch nach weiterer Verfgbarkeit der 
   Altversionen Sigraph Design V3.8 und I-DEAS Variant Engineering V2.0
   unter neuen Betriebssystemen geaeussert.
   Wir kommen diesem Wunsch nun unter dem Namen 'EUKLID Design Classic' nach.
   Starten Sie dazu den Converter wie folgt mit der Startoption 

        #/cv3v4_exe -classic

   Sie erhalten dann die Funktionalitaet sowie Look and Feel der Version V3.8 in 
   mit folgenden Eigenschaften / Einschraenkungen:

        - Lizenzierung ueber den EUKLID-Software License Manager
        - .top Dateiformat der Sigraph Design V3.8 
          (nicht abwaertskompatibel zu V3.7!)
        - verfuegbar auf SGI, HP und Windows NT
        - keine IDM Funktionalitaet, kein DM
        - weitere Einschraenkungen fuer die Windows NT Version:
          - Hummingbird Exceed notwendig
          - keine Interprozesskommunikation, 
            damit kein "extern prog", kein PPSI
          - keine Bidirektionalitaet fuer die I-DEAS Schnittstelle

Konvertierungskonzept

   Zum Konvertieren alter Modelldateien nach EUKLID Design wird automatisch ein
   separates Programm gestartet, das alte Modelle liest, in die neue Daten-
   struktur umsetzt und neue Dateien in den entsprechenden Verzeichnissen er-
   zeugt. In Modellen verwendete Benutzerelemente und Tabellen werden dabei
   automatisch mitkonvertiert, und zwar nur beim ersten Auffinden. Dieses Kon-
   vertierungsprogramm wird nur zum Konvertieren benoetigt.
 
   Es werden neue Dateien mit den folgenden Endungen angelegt:

   -  .mod  ........ entsteht aus Modell mit Endung .top
   -  .udo, .uda ... entsteht aus Benutzerelement mit Endung .top
   -  .udt  ........ entsteht aus Tabelle mit Endung .tab

   Die bestehenden Dateien (.top, .tab) werden nicht veraendert.

   Zum Konvertieren alter Modelle gibt es mehrere Moeglichkeiten: 

   a. Aufruf des Konvertierungsprogrammes aus dem Installationsverzeichnis:
              #/cv3v4_exe <datei>
              <datei> = Modell/Benutzerelement,
                        mit oder ohne Endung '.top'.
              Diese Methode laeuft im Batch-Modus, ohne Graphik, und bietet
              sich an fuer die Konvertierung zahlreicher Modelle.
                        
   b. Aufruf von EUKLID Design mit dem Namen des Modells/Benutzerelements (mit oder
      ohne Endung '.top'), so wie Sie es von der alten Version her kennen.
      Dies empfiehlt sich fuer einzelne Modelle.

   c. Innerhalb der EUKLID Design-Sitzung:
      Im Menue-Punkt 'Datei' die Aktion 'Modell oeffnen' starten, im Dateifilter
      des Dialogfensters '*.top' eingeben.
      Auch dies empfiehlt sich fuer einzelne Modelle.

   Bei b. und c. wird das Konvertierungsprogramm als Hintergrundprozess aufgerufen.

   In allen Faellen wird das alte Modell mit allen seinen Benutzerelementen und
   Tabellen konvertiert. Im Startfenster wird die Konvertierung protokolliert.
   Falls die Dateien 'xx.uda' und 'xx.udo' bereits vorhanden sind, wird das
   Benutzerelement 'xx.top' nicht nochmal konvertiert.

   Vorbereitende Massnahmen:
   
   - Auf  a l l e  zum Modell gehoerigen Dateien muss ein lesender Zugriff 
     moeglich sein.
   - Fuer alle beteiligten Verzeichnisse muessen Schreibrechte vorhanden sein.  
   - Die Konfigurationsdatei ~/user_data/design.config der alten Version muss
     lesbar sein (Eintraege 'li+', Farben).
   - Kundenspezifische Verzeichnisse '#/....' muessen in das neue '#' kopiert
     oder verlinkt werden (z.B. kundenspezifisches #/sym_30b).
   

   Konvertierung grosser Verzeichnisse:
      
   Sollen in einem weitverzweigten Verzeichnisbaum alle Dateien konvertiert
   werden, dann empfiehlt sich die Anwendung einer Prozedur nach folgendem
   Schema (UNIX):
 
          #! /bin/sh
          baum=......      # <=== zu durchlaufendes Verzeichnis eintragen
          cd $baum; baum=`pwd` 
          for i in `find $baum -name '*.top' -a -type f -exec echo {} \;` 
          do 
              cd `dirname $i`; #/cv3v4_exe `basename $i`
          done

   Fuer Windows-NT steht ein AQL-Programm zur Verfuegung:

          #\examples\aql\convert.aql

   Zur Anwendung dieses Programms wechseln Sie bitte vor dem Programmstart
   in das Modell-Verzeichnis, das sie mit allen seinen Unterverzeichnissen 
   konvertieren wollen.


   Fehlermeldungen:
             
      Kommt es wegen Kompatibilitaetsproblemen zu Fehlern bei der Konvertierung,
      dann werden zwei Arten von Fehlermeldungen ausgegeben: 

      a. Ungueltige Aktionen

         Fehlermeldung (Beispiel):
         Undefined variable type
         INVALID: variable_rule named '4231_INVALID' 
                  - was valid in old model (sons also invalid)

         Eine solche Meldung erfolgt NUR, wenn
         - Primitiv/Definitionsart in der Vorgaenger-Version gueltig waren
         - alle Parameter der Aktion in der neuen Version gueltig sind

         (Behandlung der Meldung siehe unten, "Interpretation ...")


      b. Geometrieabweichungen

         Fehlermeldung (Beispiel):  
         GEOMETRY WRONG: circle_circlepoint named '4923_GEO<0.100' 
                         - difference between old/new model < 0.100 mm.

         Fehlerursache: Praezision kleiner als 0.0001 mm.
         Die Abweichung der Values zwischen der alten und neuen Version wird
         in folgenden Stufen ausgegeben: 
              < 0.001,  < 0.01,  < 0.1,  < 1.0,  > 1.0 mm  .

         Eine solche Meldung erfolgt nicht, wenn die Parameter in der alten
         Version ebenfalls ungenau waren.

   Alle uebrigen Meldungen sind fuer den Anwender irrelevant, da sie nichts zur
   Eingrenzung des Grundproblems beitragen. Beispiel fuer solche irrelevanten
   Meldungen: 
   "Objekte sind ungueltig, da sie bereits in der Vorgaenger-Version ungueltig 
    waren oder da ihre Parameter in der neuen Version ungueltig sind."
   
   Solche Meldungen dienen dazu, dem Anwender zu helfen, das alte oder das 
   konvertierte Modell so zu veraendern, dass die Fehler vermieden oder minimiert
   werden. Siehe untenstehendes Beispiel.
   
   Kennzeichnung der konvertierten Objekte durch Namen:

   - Wenn das Objekt im alten Modell schon einen Namen hatte, wird dieser IMMER 
     unveraendert uebernommen.

   - In neuen Modellen werden fehlerhafte Objekte mit Namen gekennzeichnet nach
     folgendem Muster: 

     <outnumber>_INVALID
     <outnumber>_GEO<Genauigkeit> 
     (dabei bedeutet <outnumber> das Attribut '.number' im alten Modell)

     Es werden ALLE fehlerhaften Objekte so gekennzeichnet, auch die, die
     nicht in den Fehlermeldungen auftauchen, es sei denn, sie hatten bereits
     im alten Modell einen Namen oder waren bereits ungueltig.

   - In benutzerdefinierten Objekten (UDO) werden darueberhinaus alle Objekte,
     die keinen Original- und Fehlerdiagnose-Namen haben, mit der Outnumber als
     Namen gekennzeichnet (noetig aus programmtechnischen Gruenden).

     ACHTUNG:
     Die Namen von Objekten in UDOs duerfen solange nicht veraendert werden, wie
     noch nicht alle Modelle konvertiert sind, die diese UDOs enthalten.  


   Beispiel fuer Meldungen des Konverters:

   ==> Starting Converter [ recursion level: 0 ]: diag.top ===
   Undefined variable type
   INVALID: variable_rule named 'Radius'
            - was valid in old model  ( sons also invalid )
   GEOMETRY WRONG: circle_circlepoint named '4923_GEO<0.100' 
            - difference between old/new model < 0.100 mm.
   GEOMETRY WRONG: circle_circlepoint named '4927_GEO<0.100'
            - difference between old/new model < 0.100 mm.

   No intersection of these line and circle(arc) ........    > fuer den 
   It is not allowed to open a plane ....................    > Anwender
   Plane without valid planeparts .......................    > unwichtig 
                           (Soehne von ungueltigen Objekten oder solchen, die
                           in der Vorgaenger-Version schon ungueltig waren.)
   14125 objects and 12710 actions written on file diag.mod

   Errors encountered during conversions:
   Number of objects with geometrical precision problems ..     4 
   Number of invalid actions created ......................     1 
   Number of actions invalid allready in old model ........     4 
   Number of all primitives in the old model .............. 18806 

   NOTE: actions invalid allready in old model are not mentioned 
         in a message like 'INVALID: .....' .
   <== Returned from Converter [ recursion level: 0 ]: diag.top ===


   Interpretation dieser Meldungen und Fehlerdiagnose: 

   - Die fehlerhafte Aktion 'variable_rule' erhielt keinen Namen, da sie 
     schon einen hatte.
     Die Formel lautete: (dh>d2)*(d2-0.002)+-(dh<=d2)*dh  .
     '+-' ist in der neuen Version nicht mehr zulaessig. Deshalb sollte die 
     Formel wie folgt umgeformt werden: 
     (dh>d2)*(d2-0.002)-(dh<=d2)*dh  .
   - Die Kreise koennen wegen extremer Radien (R=911500000mm) nicht exakt kon-
     vertiert werden (Beispiel). Der auftretende Fehler von 0.1 mm kann aber 
     moeglicherweise toleriert werden.               
   - Die ebenfalls ungenauen Punkte 
     point_centrecircle, Name: '4924_GEO<0.100'
     point_centrecircle, Name: '4928_GEO<0.100'
     sind in sich in Ordnung, werden nur ungenau durch ihre Abhaengigkeit von
     den Kreisen.
     Deshalb werden sie nur durch Namen gekennzeichnet, es erfolgt keine
     Meldung. (Es waere ein weiterer Fehler, wenn diese Punkte in diesem Fall
     richtig waeren.)

   Aus der Fehlerdiagnose resultierende Vorgehensweise: 

   Grundsaetzlich sind zwei Vorgehensweisen moeglich: 
   a. Das alte Modell wird modifiziert und erneut konvertiert. Auffinden der
      Problem-Primitive anhand der Fehlermeldungen des Konverters. Lautet die
      Fehlermeldung beispielsweise
      "GEOMETRY WRONG: circle_circlepoint named '4923_GEO<0.100'", 
      dann ist im alten Modell nach dem Primitiv zu suchen, das eine Identifi-
      kationsnummer 4923 besitzt. Dazu koennte folgendes einfache AQL-Programm
      dienen: 

      for i in top.list_circle do 
        if i.number = 4923 then
          name (i,string (i.number)) 
        end
      end
                            
      Nach Ablauf dieses Programms hat das Problem-Primitiv den Namen '4923' und
      kann somit interaktiv selektiert werden. 

   b. Die im neuen Modell durch den Konverter mit Namen gekennzeichneten
      Objekte werden korrigiert.  

   Achtung: Wird ein Benutzerelement konvertiert, das 'mit AQL-Programm' 
   gespeichert wurde, dann muessen das AQL-Programm und das konvertierte 
   Benutzerelement nachgearbeitet werden. Wie dies geschehen kann, geht aus 
   den Meldungen beim Konvertieren dieses Benutzerelementes hervor.

--------------------------------------------------------------------------------

Einschraenkungen

   - Vorbemerkungen
     Alle aufgefuehrten Einschraenkungen, die sich aus dem Versionsumstieg ergeben, 
     wurden bewusst in Kauf genommen, um Funktionserweiterungen und Verbesserun-
     gen durchfuehren zu koennen. Nur um diesen Preis ist es moeglich, Software
     auf de Stand der Technik zu halten. Zum Teil wurden Inkompatibilitaeten
     mit sehr hohem Aufwand vermieden, um Anwenderinvestitionen langfristig zu
     sichern.

   - X-Server Betrieb
     Um eine bessere Grafik-Performance zu erhalten, wird empfohlen, den X-Server
     im "Backing Store" Modus zu betreiben. Das verdeckte Feld hinter einem
     Dialogfenster wird dann durch die vor dem Aufbau des Dialogfensters gespei-
     cherte Pixelmatrix ersetzt und es muss kein (zeitaufwendiger) Redraw erfol-
     gen, wenn das Dialogfenster entfernt wird. Im Zusammenhang mit dieser
     X-Server-Einstellung kann es zu Problemen mit anderen Applikationen kommen.
     Fuer den hauptsaechlichen Einsatz Ihrer Workstation fuer EUKLID Design empfehlen
     wir aber unbedingt den "Backing Store" Betrieb des X-Servers. 

   - Laenge von Variablennamen in der Aktion 'variable_rule'
     Die Laenge der Variablen in der Aktion 'variable_rule' ist in EUKLID Design auf
     31 Zeichen beschraenkt. Sollten bei der Konvertierung Probleme auftreten,
     stehen im Support notwendige Informationen und Programme bereit.

   - Kompatibilitaetseinschraenkungen in AQL
     Wie auch in anderen Programmiersprachen sind nicht alle Detaileigenschaften
     aus AQL ueber die Versionen voll kompatibel zu halten. Dies betrifft, wie
     auch schon in der bestehenden Dokumentation eingeschraenkt, die Applikations-
     definierten Aktionen (das entspricht den Include Bibliotheken anderer
     Programmiersprachen), nicht die Sprache selbst (Steueranweisungen etc.). 
     Ueber eigene Kompatiblitaetsfunktionen wurde aber versucht, den Aufwand
     fuer die Programmanpassungen in Grenzen zu halten. Viele alte AQL Programme
     werden also ohne jede Aenderung ablaufen.
     Hier gilt: je sauberer programmiert wurde, desto weniger Probleme sind zu
     erwarten.
     Beachten Sie bitte, dass dadurch nicht die gleiche Datenstruktur wie in
     Vorgaengerversionen entsteht, was dazu fuehren kann, dass Programme logisch
     nicht mehr richtig ablaufen. 
     
     BEISPIEL:
        Die Funktion 'measure_pointpointhor (...)' erzeugte in den Vorgaenger-
        versionen ein Primitiv gleichnamiger Definitionsart, die es als Aktion
        nun nicht mehr gibt. Um Programme mit solchen Inhalten ablauffaehig
        zu halten, wurde eine Kompatibilitaetsfunktion implementiert, die ein
        geometrisch gleichwertiges Mass, allerdings durch die Aktion
        'measure_plc1plc2' erzeugt. Dies bewirkt, dass Modellabfragen, die sich 
        auf "pointpointhor" beziehen, leer ausgehen bzw. anschliessende
        EDIT-Vorgaenge nicht mehr ausgefuehrt werden koennen.
       
     HINWEIS:
     Funktionen die NUR der Erhaltung der Kompatibilitaet dienen, sind als
     solche in der Dokumentation gekennzeichnet. 
     Verwenden Sie bitte diese Funktionen nicht in neuen AQL-Programmen. 
     Stehen solche Funktionen der Weiterentwicklung im Wege, werden sie in 
     folgenden Versionen entfernt!

     Inkompatibilitaeten koennen auch durch Fehlerbehebungen oder fehlerhafte
     Toleranz der Vorgaengerversionen entstehen. So wurden z.B. fehlerhafte
     Selektoren in Definitionsarten toleriert, die in den neuen Aktionen zu
     Fehlerausgaben fuehren.

     Wurden Parameter oder Properties zugefuegt, so wurden diese meist mit
     dem sogenannten "skip" Attribut versehen. Dieses Attribut bewirkt, dass
     der Parameter bei Vorhandensein in einem AQL-Programm akzeptiert wird, bei
     Fehlen mit einem Standardwert versehen wird. Die Aktion wird damit kompa-
     tibel und flexibel zugleich. Der Nachteil besteht evtl. in einer schlech-
     teren Lesbarkeit der AQL-Programme und in einer verschlechterten Performance.

     Eine weitere Einschraenkung stellt der Entfall des Typs "common_type" dar.
     Dieser wird durch "Bea_action" und "Bea_object" ersetzt, was eine differen-
     ziertere Modellabfrage erlaubt. Programme, die solche Typabfragen ent-
     halten, muessen entsprechend geaendert werden.

     alt                                        neu
     ... if type(x) = "common_type" ... >>> ... if type(x) = "Bea_object" ... 
     oder                               >>> ... if type(x) = "Bea_action" ...

     Beachten Sie auch, dass in der vorliegenden Version andere Relationen aufge-
     baut werden, und damit eine wesentlich komplexere Datenstruktur moeglich ist
     als in den Vorgaengerversionen. 
     Ein einfaches rekursives Durchlaufen der '.sons' Gruppen reicht nicht mehr
     aus, um alle abhaengigen Objekte ausfindig zu machen. Hier ist es nun noetig,
     auch die neuen Moeglichkeiten wie "Effekte" und "victim parameter"
     zu bedenken.
  
     Im Anhang finden Sie alle interessanten Differenzen, die in diesem 
     Zusammenhang von Interesse sein koennten. Hier sind nicht nur Inkompati-
     bilitaeten, sondern auch Aenderungen aufgefuehrt, die zu Funktionserwei-
     terungen fuehren.

################################################################################


ANHANG

   =============================================================================
   PRIM / OBJECTS               description
   =============================================================================
   D23bs_wcoord                 new
				nearly the same as coord
   -----------------------------------------------------------------------------
   D23bs_blstring               new
				nearly the same as string
   -----------------------------------------------------------------------------
   ellips                       new property axes with skip for AQL
   -----------------------------------------------------------------------------
   measure                      new properties:
				font      REF_VALUE : D23bs_font_rec 
				italic    REF_OBJECT: D23bs_angle
                                mode      REF_OBJECT: D23bs_prop
   -----------------------------------------------------------------------------
   nilprim                      no more actions
   -----------------------------------------------------------------------------
   plane                        old: property 'fill_color'  = plane fill color
				     property 'color'       = hatch line color
				new: parameter 'color'      = plane fill color
   -----------------------------------------------------------------------------
   posball                      new
				position of symbol_balloon
   -----------------------------------------------------------------------------
   posmeas			'incompatible' means, that you have to enter
				the negative value of the old version in this
                                version to get same result
				------------------------------------------------
				action:                     | incompatible,
				if:
				------------------------------------------------
				measurepointpointhor :      | p1.x < p2.x
				measurepointpointvert :     | p1.y > p2.y
       |<------>|               measurepointpoint :         | compatible
       |        |               measureplc1plc2 :           | Element1==line &&
       x        x                                           | Element2 != line 
                                measurechain :              | compatible 
       p1       p2              measureradiusofsect :       | posmeas 
                                                            | exactly == 0
				measurediamofcircle :       | compatible
				measureangle3points :       | compatible
				measureanglesector :        | compatible
				measureangle2lines :        | compatible
				measurearclength :          | compatible
   -----------------------------------------------------------------------------
   spline                       new property spec with skip for AQL
   -----------------------------------------------------------------------------
   symbol                       new properties:
				font      REF_VALUE : D23bs_font_rec 
				italic    REF_OBJECT: D23bs_angle 
				modus     REF_OBJECT: D23bs_prop 
                                height    REF_OBJECT: D23bs_length
   -----------------------------------------------------------------------------
   text                         new properties:
				font      REF_VALUE : D23bs_font_rec 
				italic    REF_OBJECT: D23bs_angle 
                                mode      REF_OBJECT: D23bs_prop mir
				mir       REF_ENUM  : D2drw_mir
				pos       REF_ENUM  : D2drw_textpos_enu
   =============================================================================


   =============================================================================
   ENUMERATION                  description
   =============================================================================
   D2con_cut_relations          new ("directions" to cut relations)
   -----------------------------------------------------------------------------
   D23bs_an_unit                new
                                allow angles given in units as lengthes
   =============================================================================


   =============================================================================
   TYPE / VALUES                description
   =============================================================================
   D23bs_column_index           old ... was limited due to allocated memory 
                                new ... nested depth is unlimited
   -----------------------------------------------------------------------------
   D23bs_database_rec           new
                                needed for data base object.
   -----------------------------------------------------------------------------
   D23bs_tablelist              new
                                needed for data base tables 
                                (list of available tables)
   -----------------------------------------------------------------------------
   D2con_gi_el_id_rec           new (value to identify a single element of a 
                                     graph. instance)
   -----------------------------------------------------------------------------
   common_type                  old ... Basic type for all primitives
                                new ... Objects are Bea_object
                                        Actions are Bea_action 
   -----------------------------------------------------------------------------
   contour_rec                  contours don't get automatically names any more
   -----------------------------------------------------------------------------
   contour_rec                  old ... contourelements created by 
                                        contour_rounded got attribute 'ref2'
                                new ... attr. 'ref2' doesn't exist any longer
   -----------------------------------------------------------------------------
   contour_rec                  if contourelement is of type arc and order is 
                                false (reversed):
                                old  AQL attributes 'start' and 'end' of 
                                     contourelement were exchanged (can't be 
                                     corrected as taken from subtype arc of
                                     contourelement which can't be inverted)
                                new  works correctly now
   -----------------------------------------------------------------------------
   font_rec		        old ... font was selected with fontnumber 
                                        (popinteger)
		                new ... font is selected by fontname(font_rec)
   -----------------------------------------------------------------------------
   id_rec                       old ... two references (ref1=original, 
                                        ref2=next original),
                                        some internal informations
                                new ... only two D2con_object references 
                                        (ref=effect object,
                                         ref_original=original)
   -----------------------------------------------------------------------------
   text_rec: AQL_ATTRIBUTES
        fontnr                  does not exist any more, now use 
                                "par_font.fontname" instead
        thickness               real value is returned, e.g. 0.35 for text 
                                with h=3.5, medium
   =============================================================================


   =============================================================================
   DEF / ACTION                 description
   =============================================================================
   apply_tsf                    new (apply a transformation on a various number
                                     of victims; has attribute "implicit")
   -----------------------------------------------------------------------------
   circle_arconcircleangles     New action name: circle_arconcirangles
                                Necessary because old action name was cut after
                                ...oncircle (internal reason). -> Collution with
                                internal truncated name of action 
                                'circle_arconcirclepoints'.
   ----------------------------------------------------------------------------- 
   circle_of_contour            selector sel (D2con_id_rec) now points to the 
                                effect object of the contour (--> circle is always
                                created as close as possible to the picked position)
                                Old version didn't point to effect object but to  
                                first occurrence of original object in contour
   -----------------------------------------------------------------------------
   circle_of_contour            In the old version it was possible to have line 
                                or circle in id_rec, now only circle is allowed.
   -----------------------------------------------------------------------------
   circle_circlecircle            circle endpoints now created as tangentpoints.
   circle_circlepoint
   circle_linecircle
   circle_linepoint
   circle_tglineline 
   -----------------------------------------------------------------------------
   contour_parallel             selector sel (D2con_id_rec) now points to the 
                                new created effect object of the contour
                                (--> parallel contour is always created as close
                                     as possible to clicked position)
                                Old version didn't point to effect object but to  
                                  first occurrence of original object in contour
   -----------------------------------------------------------------------------
   contour_parallel             old   : parameters le, r, and rin do not get 
                                        scaled (wrong!), 
                                new   : they do
                                Example: parameter le (old) = 6, scale_x = 1.5 
                                         -> drawn old: 6mm,    
                                                  now: 6 * 1.5 = 9 mm
                                         -> converter has to change the para-
                                         meter to 6/1.5 = 4
                                Case 1 : scale_x = 1 OR parameter = 0 -> nothing
                                         to be done
                                Case 2 : parameter is absolute -> converter only
                                         changes the VALUE of the parameter
                                Case 3 : parameter not absolute -> converter 
                                         REDEFINE to length_prod = r * l1 with r 
                                         (new object)=1/scale_x
                                         (number_absolute) and l1 = the old 
                                         parameter        
                                =======> Editing the model has changed
   -----------------------------------------------------------------------------
   contour_sketch               - new name of action instead of 
                                  'scetch_make_scetch' (old)
                                - has additional parameter 'z'
   ------------------------------------------------------------------------------
   contour_tracing              new name of action instead of 'scetch_makecont' 
   -----------------------------------------------------------------------------
   create_attribute             old : strings must be set in double quotes 
                                       (create_attrib(e64,"$_Version","\"v1\""))
                                new : strings must be set in normal quotes 
                                       (create_attrib(e64,"$_Version","v1"))
   -----------------------------------------------------------------------------
   drawing_language()           old definition
                                obsolete
   -----------------------------------------------------------------------------
   drawing_point_or_slash()     old definition
                                obsolete  
   -----------------------------------------------------------------------------
   externprog_PPSI()            old definition
                                obsolete 
   -----------------------------------------------------------------------------
   externprog_dm()              old definition
                                obsolete 
   -----------------------------------------------------------------------------
   externprog_pdm()             old definition
                                obsolete 
   -----------------------------------------------------------------------------
   externprog_pdmd()            old definition
                                obsolete
   -----------------------------------------------------------------------------
   fase_fase, fase_round        AQL-Incompatible, these definitions did not 
                                work correct in aql, because the parameter
                                selector was missing. 
                                We do not want to be compatible with definitions 
                                which did not work!
                                Circle endpoints now created as tangentpoints.
   -----------------------------------------------------------------------------
   group_copy                   - has result "Basic_group"
                                - has add. parameter "name_ext" of type 
                                  "D23bs_string"
                                - has add. parameter "name_grp" of type 
                                  "D23bs_string"
                                - "star-alt" instead of "selection menu"
                                - parameter "star-alt" has attribute 
                                  "alt_extendible"
                                - it is possible to edit the number of copies
                                - it is possible to edit the transformation
                                - substitute for "inrect_copy"
   -----------------------------------------------------------------------------
   group_copymirror             - has result "Basic_group"
                                - has add. parameter "name_ext" of type 
                                  "D23bs_string"
                                - has add. parameter "name_grp" of type 
                                  "D23bs_string"
                                - "star-alt" instead of "selection menu"
                                - parameter "star-alt" has attribute 
                                  "alt_extendible"
                                - it is possible to edit the transformation
                                - substitute for "inrect_mirror"
   -----------------------------------------------------------------------------
   inpar                        These functions must be called immediately 
   inpar_ttype                  before output_save. Each object created after 
                                the first call of one of these functions will be
                                lost.
   -----------------------------------------------------------------------------
   inpar_ttype                  This function uses the number of the parameter 
                                of the creation action of an object. 
                                Attention: This number may have changed from 
                                old to new! Be aware of using compatibility
                                functions.
   -----------------------------------------------------------------------------
   inpar_icon                   old : icon is defined as string, each character
   inpar_iconascii                     resp. bit of each character corresponds
                                       to one pixel
                                new : icon is defined as a group.
                                       {"user_icon" {<int> <int> <string> ...}} 
                                       or {"std_icon" [node]} 
                                       or {"no_icon"}       
   -----------------------------------------------------------------------------
   input_dissolve               NOT implemented in this version
                                use udo_convert_to_layer instead
   -----------------------------------------------------------------------------
   input_new                    The parameter "name" has got an additional 
                                meaning. The identification of an UDA with this 
                                name is used, when after at least one inpar, 
                                output_save is called. Therefore it is required, 
                                that the name used with inpar is also passed to 
                                output_save.

                                The following example creates an UDO and an UDA.
                                The result of the UDA is the UDO, the inpars are
                                the parameters of the UDA. All objects created
                                before the first inpar are content of the UDO.

                                input_new(true,"my_user")
                                // create objects and parameter p1,...,pn

                                inpar(p1)
                                ...
                                inpar(pn)
                                output_save("my_user")
                                
                                Attention: input_new cannot be called twice in
                                a session with the same name, because after the 
                                call an UDA will be loaded and it cannot be re-
                                created with the same id later.

                                Models containing this UDA will use the new 
                                version after running the program without 
                                problems, nevertheless there are references to 
                                objects inside the UDO.
   -----------------------------------------------------------------------------
   (inrect_cut)                 - "star-alt" instead of "selection menu"
   --> redefine_cutall          - parameter "star-alt" has attribute 
                                  "alt_extendible"
   -----------------------------------------------------------------------------
   layer_normal                 old definition 
   layer_create                 new action
                                The old action will be emulated, but the edit 
                                functions of old primitive "layer" are 
                                incompatible.
                                old: 
                                layer_normal (string, string, boolean)
                                  layername  :  string   : the name of layer
                                  status     :  string   : "active","selectable"
                                                            or "inactive"
                                  locked     :  boolean  : true if locked
                                new:
                                layer_create : user = layer_create 
                                                      ( shortstring, boolean )
                                   name                 : shortstring         
                                   active               : boolean             
   -----------------------------------------------------------------------------
   length_pointpoint            new enum dist to calculate h, x, y or z length 
                                between two points
   -----------------------------------------------------------------------------
   line_of_contour              selector sel (D2con_id_rec) now points to the 
                                effect object of the contour  (--> line is always
                                created as close as possible to the picked position)
                                Old version didn't point to effect object but to  
                                first occurrence of original object in contour
   -----------------------------------------------------------------------------
   line_parallellength          enum lineleftright is not compatible between 
                                old and new in case the parameter line is of 
                                type line_angleuptoline .
   -----------------------------------------------------------------------------
   line_angleuptoline           The direction of the line is incompatible 
                                between old and new. This causes incompatibi- 
                                lities in the actions that use this line. 
   -----------------------------------------------------------------------------
   line_alfatgcircle            sel posi incompatible because of error in 
                                setting this selector in old version
   -----------------------------------------------------------------------------
   measure_chain                This action has changed principally
                                The old syntax is realised as function for
                                compatibility
   -----------------------------------------------------------------------------
   model_outofselset            new (create a new model from a selection set)
                                - substitute for "save part of model" 
                                       (output_savesection)
   -----------------------------------------------------------------------------
   move_set_to_layer            old definition 
   layer_move_objects           new action
   -----------------------------------------------------------------------------
   multi_duplicate              - has add. parameter "name_ext" of type 
                                  "D23bs_string"
                                - "star-alt" instead of "selection menu"
                                - parameter "star-alt" has attribute 
                                  "alt_extendible"
                                - it is possible to edit the transformation
   -----------------------------------------------------------------------------
   multi_duplicatemirror        - has add. parameter "name_ext" of type 
                                  "D23bs_string"
                                - "star-alt" instead of "selection menu"
                                - parameter "star-alt" has attribute 
                                  "alt_extendible"
                                - it is possible to edit the transformation
   -----------------------------------------------------------------------------
   nilprim_inpardef(user)       obsolete
   nilprim_nildesc ()           obsolete
   -----------------------------------------------------------------------------
   optional_z                   z-setting is saved with each model individualy 
                                and is available again after the loadig of the 
                                model
   -----------------------------------------------------------------------------
   output_dxf()                 old
                                output_dxf ( world, select_rect, nc_filename )
                                   xy_face              : world        
                                   head_selected        : select_rect        
                                   dxf_file             : nc_filename        
                                new
                                output_dxf ( level, filename, group_rec )
                                   level                : level        
                                   filename             : filename        
                                   group_rec            : group_rec  
   -----------------------------------------------------------------------------
   output_dxfv12()              old definition
                                obsolete
   -----------------------------------------------------------------------------
   output_outtable()            old definition
                                obsolete
   -----------------------------------------------------------------------------
   output_plotformatted         old
                                output_plotformatted ( size_rec, 
                                                       originandscale,
                                                       formattype, filename, 
                                                       boolc_t, filename )
                                   size                 : size_rec
                                   window               : originandscale
                                   form                 : formattype
                                   name                 : filename
                                   sendit               : boolc_t
                                   args                 : filename
                                new
                                output_plotformatted ( size_rec, 
                                                       selection_rec, 
                                                       format_rec, filename,
                                                       boolean, dynstring
                                   size                 : size_rec
                                   window               : selection_rec
                                   form                 : format_rec
                                   name                 : filename
                                   sendit               : boolean
                                   args                 : dynstring

                                The difference is the parameter window:
                                selection_rec instead of originandscale 
                                {{x y} scale}
                                In AQL a peculiar scale could be given.
                                Now this feature has become obsolete
   -----------------------------------------------------------------------------
   part_ppsi()                  old definition
                                obsolete
   -----------------------------------------------------------------------------
   part_to_list                 used USER must be converted into 
                                UDA's and UDO's first
   -----------------------------------------------------------------------------
   plane_circle                 parameter 'c' changed to alt parameter of circle
                                and ellips.
   -----------------------------------------------------------------------------
   plane_sketch                 new action
   -----------------------------------------------------------------------------
   plane_tracing                new name of action instead of 'scetch_makeplane'
   -----------------------------------------------------------------------------
   point_centrecircle           parameter circle changed to alt parameter of 
                                circle and ellips.
   -----------------------------------------------------------------------------
   point_intersection           selector s incomp. : intersect line with ellips 
   -----------------------------------------------------------------------------
   point_intersection           elements ellips and contour also allowed in 
                                first alt parameter 
                                old : selector > 1 allowed for tang. point
                                new : selector > 1 not allowed for tang. point
   -----------------------------------------------------------------------------
   point_lengthonline           selector incompatible in case line is of type 
                                line_angleuptoline.
   -----------------------------------------------------------------------------
   point_pointofcircle          new enum abs_or_rel to create point on mirrored
                                object relative
   point_pointofellips          or absolute. Skip for AQL.
   point_pointonellips
   -----------------------------------------------------------------------------
   point_relativex1y2           new parameter an allow to create a 
                                point_relativex1y2 with angle != 0.0
                                skip for AQL
   -----------------------------------------------------------------------------
   popup_balloon()              old definition
                                obsolete
   -----------------------------------------------------------------------------
   popup_cotable()              old definition
                                obsolete
   -----------------------------------------------------------------------------
   popup_dimension()            old definition
                                obsolete
   -----------------------------------------------------------------------------
   popup_draw()                 old definition
                                obsolete
   -----------------------------------------------------------------------------
   redefine_cutborder           - new enum parameter "cut_rel" 
                                - "star-alt" instead of "selection menu"
                                - parameter "star-alt" has attribute 
                                  "alt_extendible"
   -----------------------------------------------------------------------------
   set_attribute                old : strings must be set in double quotes 
                                       (set_attrib(e64,"$_Version", "\"v1\""))
                                new : strings must be set in normal quotes 
                                       (set_attrib(e64,"$_Version", "v1") )
   -----------------------------------------------------------------------------
   string_fromattrib            AQL attributes like "s = string_fromattrib (
                                                         obj, "AQL_attrib" )"
                                not allowed. Use s = obj.AQL_attrib.
   -----------------------------------------------------------------------------
   symbol_balloon               parameter height is property now
                                The old syntax is realised as function for
                                compatibility
   -----------------------------------------------------------------------------
   symbol_balcopy               parameter height is property now
                                parameter numberof and pos_number 
                                changed position
                                The old syntax is realised as function for
                                compatibility
   -----------------------------------------------------------------------------
   symbol_comment               These actions have changed principally
   symbol_cone
   symbol_form
   symbol_raw
   symbol_reference
   symbol_section
   symbol_spanner
                                The old syntax is realised as function for
                                compatibility
   -----------------------------------------------------------------------------
   symbol_cone                  less parameters now
   -----------------------------------------------------------------------------
   tab_one                      no longer exists.
                                substitute is tab_file
   -----------------------------------------------------------------------------
   tab_sub                      rule without column_name no longer
                                feasible
   -----------------------------------------------------------------------------
   tab_instance_row             Primitive is now selected indirect, by name or 
                                in text_window. Former was Primitiv (object) had 
                                to have an object name.
   -----------------------------------------------------------------------------
   tab_file (tab_one)           Changed file may be supervised 
                                (file access monitor)
   -----------------------------------------------------------------------------
   tab_file (tab_one)           output is written in max. accuracy, not F10.3
                                This allows small accurate numbers ( < 1.0)
   -----------------------------------------------------------------------------
   text_absolute, text_anglepos effectpoints are created at the beginning and 
                                end of the text
   -----------------------------------------------------------------------------
   text_block, text_frame       an effectpoint is created at each corner of the 
                                text
   -----------------------------------------------------------------------------
   text_frame                   new action
   -----------------------------------------------------------------------------
   undo_move                    new
   -----------------------------------------------------------------------------
   view_define                  old : 10 screen_coord (lu and rb for each view)
                                new : 5 selection_rec (view_press, x_press, 
                                                        y_press,       //lu
                                                        view_release, x_release, 
                                                        y_release) //rb
   -----------------------------------------------------------------------------
   viewdata_absolute()          old definition
                                obsolete  
   -----------------------------------------------------------------------------
   viewdate_window()            old definition
                                obsolete 

   =============================================================================
   ATTRIBUTES                   description
   =============================================================================
   Bea_object   number          old:  an integer (unique in one session only)
                                new:  a string of 29 bytes (unique)
                                the attribute session_number supplies the old
                                functionality
                 color          old  0 means color not defined
                                new -1 means color not defined
                                     0 means background color
   -----------------------------------------------------------------------------
