Mit dem Modul DXFOUT können Objekte in eine AutoCAD DXF Datei geschrieben werden.
Der Modul DXFOUT wird mit:
|INCL \script\dxfout.mod
in einer ICS RUN1-Konfiguration verfügbar gemacht.
Folgende Parameter können in der Map
      DXFOUT_PARAM für den Modul gesetzt werden:
| Parameter | req/opt | Beschreibung | 
TEMPLATE | r | Name der Headerdatei. Für die Headerdatei muss ein
                  DXF-File gemäss Autocad Version 10-14 Standard angegeben
                  werden. Bemerkung: eine allfällig vorhandene
                  ENTITIES Section wird ignoriert. | 
FILTER_LAYERS | o | Definiert, ob nur die Layer aus der Headerdatei
                  übertragen werden sollen, für die auch Objekte übertragen
                  wurden (ON oder OFF).
                  Per Default werden alle Layer übertragen. | 
FILTER_BLOCKS | o | Definiert, ob nur die Blockdefinitionen aus der
                  Headerdatei übertragen werden sollen, für die auch Objekte
                  übertragen wurden (ON oder
                  OFF). Per Default werden alle
                  Blockdefinitionen übertragen | 
DEFAULT_LAYER | o | Name eines Default-Layers. Definiert einen Default-Layer, der einem Element zugeordnet wird, falls der in der Konfiguration definierte Layer nicht existiert. Der Default-Layer muss in der Headerdatei existieren. | 
DEFAULT_BLOCK | o | Name eines Default-Blocks. Definiert einen Default-Block, der einem Element zugeordnet wird, falls der in der Konfiguration definierte Block nicht existiert. Der Default-Block muss in der Headerdatei existieren. | 
CREATE_LAYERS | o | Definiert ob ein Layer eines übertragenen Elementes
                  im Header erzeugt werden sollen, falls der Layer nicht
                  bereits in der Headerdatei vorhanden ist
                  (ON oder OFF). Per
                  Default werden keine Layer erzeugt. | 
HANDLES | o | Für jedes Objekt ein DXF Handle erzeugen
                  (ON oder OFF). | 
DIMENSION | o | 2 oder 3.
                  Definiert ob das DXF-File 2D oder 3D Geometrien enthalten
                  soll. Wenn nicht definiert, kann das File 2D und 3D
                  Geometrien enthalten. | 
UNDEFZ | o | REAL. Definiert eine Z-Koordinate
                  für Geometrien ohne Z-Koordinate. | 
DEBUG | r | ON oder OFF,
                  Default = OFF. Debugmodus ein oder
                  aus. | 
STATISTICS | r | ON oder OFF,
                  Default = OFF. Objektstatistik am Ender
                  der .log Datei anzeigen. | 
PRIORITY | o | ON oder OFF,
                  Default = OFF. Soll PRIORITY verarbeitet
                  werden. Siehe auch Procedure
                  DXFOUT_SET_PRIORITY1. | 
Der Modul verlangt für jedes OUT-Objekt folgende Systemkomponenten:
Pro Objekttyp müssen ausserdem folgende Komonenten des OUT-Objekts gesetzt werden:
| Komponente | req/opt | Beschreibung | 
OUT.TYPE(s)  | r | Objekttyp (s.a. unten).  | 
OUT.LAYER(s) | r | DXF-Layer. | 
OUT.LTYPE(s)  | o | DXF-Linientyp.  | 
OUT.COLOR(i)  | o | DXF-Farbe (0 .. 255).  | 
OUT.THICKNESS(r)  | o | DXF-Thickness.  | 
OUT.TYPE =
            'POINT'| Komponente | req/opt | Beschreibung | 
OUT.GEOM(p)  | r | Punktposition.  | 
OUT.TYPE =
            'BLOCK'| Komponente | req/opt | Beschreibung | 
OUT.GEOM(p)  | r | Blockposition.  | 
OUT.BLOCK(s)  | r | Blockname.  | 
OUT.SCALE(r)  | o | Blockskalierungsfaktor.  | 
OUT.ROT(r)  | o | Blockorientierung in Altgrad.  | 
OUT.TYPE =
            'SHAPE'| Komponente | req/opt | Beschreibung | 
OUT.GEOM(p)  | r | Shapeposition. | 
OUT.SHAPE(s) | r | Shapename. | 
OUT.SIZE(r) | r | Shapegrösse. | 
OUT.ROT(r) | r | Shapeorientierung in Altgrad. | 
OUT.TYPE =
            'CIRCLE'| Komponente | req/opt | Beschreibung | 
OUT.GEOM(p) | r | Kreiszentrum.  | 
OUT.RADIUS(r) | r | Kreisradius. | 
OUT.TYPE =
            'TEXT'| Komponente | req/opt | Beschreibung | 
OUT.TXT(s) | r | Textinhalt.  | 
OUT.GEOM(p) | r | Textposition.  | 
OUT.HEIGHT(r) | r | Texthöhe.  | 
OUT.STYLE(s) | r | Textfont.  | 
OUT.JUST(p) | r | Justierung. Mögliche Werte sind:
                             | 
OUT.SLANT(r) | r | Textneigung in Altgrad.  | 
OUT.XSCALE(r) | r | Textskalierung entlang X-Achse.  | 
OUT.ROT(r) | r | Orientierungswinkel in Altgrad. | 
OUT.TYPE =
            'LINE'| Komponente | req/opt | Beschreibung | 
OUT.GEOM(l) | r | Liniengeometrie. Falls die übergebene Linie aus mehren Linien bzw. Keisbogenstücken besteht, wird die Liniengeometrie automatisch in Linien und Kreisbögen aufgelöst.  | 
OUT.TYPE =
            'POLYLINE'| Komponente | req/opt | Beschreibung | 
OUT.GEOM(l,a) | r | Linien- oder Flächengeometrie. Falls eine Flächengeometrie übergeben wird, werden geschlossene Polylines für jeden Rand der Fläche (inkl. Inseln) geschrieben.  | 
OUT.TYPE =
            'BLOCKDEF'| Komponente | req/opt | Beschreibung | 
OUT.XGEOM(L)  | r | Liste von Geometrien für den Block.  | 
OUT.BLOCK(s)  | r | Blockname.  | 
OUT.GEOM(p)  | o | Punktgeometrie. Wenn definiert werden
                           die Geometrien in   | 
OUT.SCALE(r)  | o | Blockskalierungsfaktor. Wenn definiert
                           werden die Geometrien in
                             | 
OUT.ROT(r)  | o | Blockorientierung in Altgrad. Wenn
                           definiert werden die Geometrien in
                             | 
Den Prozeduren DXFOUT_WRITE_* müssen die Namen
      von Signaturen übergeben werden. Eine Signatur ist eine Zusammenfassung
      bestimmter graphischer Eigenschaften (z.B. Layer oder Farbe) unter einem
      Namen. Die Signaturnamen werden in den nachfolgenden Maps der
      .cfg Datei definiert:
MAP POINT_SYMBOLOGY
   ...
   <symbology> => <layer>,<ltype>,<color>,<thickness>
   ...
END_MAP
MAP BLOCK_SYMBOLOGY
   ...
   <symbology> => <layer>,<ltype>,<color>,<thickness>,
                  <block>,<scale>
   ...
END_MAP
MAP SHAPE_SYMBOLOGY
   ...
   <symbology> => <layer>,<ltype>,<color>,<thickness>,
                  <shape>,<size>
   ...
END_MAP
MAP TEXT_SYMBOLOGY
   ...
   <symbology> => <layer>,<ltype>,<color>,<thickness>,
                  <style>,<height>,<xscale>,<slant>
   ...
END_MAP
MAP LINE_SYMBOLOGY
   ...
   <symbology> => <layer>,<ltype>,<color>,<thickness>
   ...
END_MAP
MAP POLYLINE_SYMBOLOGY
   ...
   <symbology> => <layer>,<ltype>,<color>,<thickness>,
                  <width>,<pgroup>,<priority>
   ...
END_MAP
Die einzelnen Parameter haben folgende Bedeutung:
<symbology>Name der definierten Signatur.
<layer>DXF-Layer.
<ltype>Liniensignatur, z.B. DOTTED.
<color>DXF-Farbwert (0 .. 255).
<thickness>DXF-Thickness (3D Linienhöhe).
<block>Blockname.
<scale>Blockskalierungsfaktor.
<shape>Shapename.
<size>Shapeskalierungsfaktor.
<style>Textfont, z.B. STANDARD.
<height>Texthöhe in Benutzereinheiten.
<xscale>Textskalierung in Textrichtung.
<slant>Textneigungswinkel.
<width>Linienbreite.
<pgroup>Prioritätsgruppe. Optional für Polylines. Polylines
               innerhalb einer Gruppe <pgroup> und
               mit gleicher Geometrie werden über die
               <priority> eliminiert.
<priority>Priorittätswert. Optional für Polylines. Innerhalb einer
               Gruppe <pgroup> eliminiert eine
               Polyline mit der <priority> = n eine identische Polyline
               mit der <priority> <= n.
Mit dem Parameter DXFOUT_PARAM.TEMPLATE muss
      ein DXF-Template definiert werden, dass folgende Inhalt aufweisen
      muss.
SECTION HEADER
   - Header section mit allen benötigten Definition
   - im Format DXF Version 10-14
SECTION TABLES
   TABLE LTYPE
      - alle verwendeten Linestyles
   TABLE LAYER
      - alle verwendeten Layers
      - mit DXFOUT_PARAM.CREATE_LAYERS => ON können nicht definierte Layers auch erzeugt werden
   TABLE STYLE
      - alle verwendeten Styles (Fonts)
SECTION BLOCKS
      - alle verwendeten Blocks    In der Section Header ist insbesondere darauf zu achten, dass der Wert des Keywords HANDLING auf 0 gesetzt ist.
9 $HANDLING 70 0 <--- !!!
Ein solches DXF-Template kann wie folgt erstellt werden:
Erzeugen Sie mit AutoCAD ein neues DWG-File.
Definieren Sie mit AutoCAD alle benötigen Eelemente wie Layers und Blocks.
Speichern Sie das File mit AutoCAD als DXF Version 14 ab.
Editieren Sie das DXF File bei Bedarf (z.B. Anpassung Keyword HANDLING).
| Prozedur | DXFOUT_OPEN ! [s file][] | 
| Beschreibung | Öffnet den DXFOUT Modul auf der
                  Outputdei <file>. Die Prozedur wird
                  von RUN1 automatisch aufgerufen. | 
| Beispiel |  | 
| Prozedur | DXFOUT_WRITE_CIRCLE3 ! p position, r radius, s linesymbology | 
| Beschreibung | Schreibt einen Kreis in die aktuelle Outputdatei.  | 
| Beispiel |  | 
| Prozedur | DXFOUT_WRITE_POINT2 ! p position, s pointsymbology | 
| Beschreibung | Schreibt einen Punkt in die aktuelle Outputdatei.  | 
| Beispiel |  | 
| Prozedur | DXFOUT_WRITE_SHAPE3 ! p position, r rotation, s shapesymbology | 
| Beschreibung | Schreibt eine DXF-Shape Symbol in die aktuelle Outputdatei.  | 
| Beispiel |  | 
| Prozedur | DXFOUT_WRITE_BLOCK3 ! p position, r rotation, s blocksymbology | 
| Beschreibung | Schreibt eine DXF-Block Symbol in die aktuelle Outputdatei.  | 
| Beispiel |  | 
| Prozedur | DXFOUT_WRITE_ATTRIB7 ! s tag, s txt, p pos, r rotation, i hali, i vali, s textsymbology | 
| Beschreibung | Schreibt ein
                  DXF-Attribute in die aktuelle Outputdatei. Ein DXF-Attribute
                  kann nur direkt nach einem DXF-Block geschrieben werden. Das
                  Schreiben eines DXF-Attributes wird nicht im
                  DXF-Konfigurationseditor untestützt. Damit trotzdem
                  DXF-Attribute mit dem DXF-Konfigurationseditor geschrieben
                  werden können, muss in die Konfiguration
                    | 
| Beispiel |  | 
| Prozedur | DXFOUT_WRITE_TEXT6 ! s txt, p pos, r rotation, i hali, i vali, s textsymbology | 
| Beschreibung | Schreibt einen DXF-Text in die aktuelle Outputdatei.  | 
| Beispiel |  | 
| Prozedur | DXFOUT_WRITE_LINE2 ! l geometry, s linesymbology | 
| Beschreibung | Schreibt einen DXF-Linie in die aktuelle Outputdatei.  | 
| Beispiel |  | 
| Prozedur | DXFOUT_WRITE_POLYLINE2 ! l geometry, s polylinesymbology | 
| Beschreibung | Schreibt einen DXF-Linie in die aktuelle Outputdatei.  | 
| Beispiel |  | 
| Prozedur | DXFOUT_SET_PRIORITY1 ! i priority | 
| Beschreibung | Es kann eine Priorität gesetzt werden, mit der die nachfolgenden Elemente in das Output-File geschrieben werden. Die Priorität bestimmt die Reihenfolge in der die Elemente in das Output-File geschrieben werden. Ein Element mit einer höheren Priorität wird nach einem Element mit einer tieferen Priorität in das Output-File geschrieben. Ein später geschriebenes Element wird über einem früher geschriebenen Element dargestellt. Nur wirksam wenn auch
                    | 
| Beispiel |  | 
| Prozedur | DXFOUT_CLOSE ! [][] | 
| Beschreibung | Schliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen. | 
| Beispiel |  | 
| Prozedur | DXFOUT_CREATE_BLOCK ! [][] | 
| Beschreibung | Spezial Prozedur zur Kreation
                  eine Blocks. Kreiert eine Block-Definition im Outpufile. Für
                  die Prozedur muss das OUT-Objekt gemäss dem Objektmodell für
                  den Typ BLOCKDEF aufbereitet
                  werden. | 
| Beispiel |  | 
! Diese ICS Konfiguration kopiert alle von DXFIN ! gelesenen Objekte mit DXFOUT in in eine .dxf Datei. |LICENSE \license\iltools.lic MAP USER_INPUT1 DIALOG => FILE ! FILE | FILES | DIRECTORY | STRING | ODBC MESSAGE => 'Enter .DXF Input File' FILE_FILTER => itf FILE_EXISTS => TRUE OPT => input END_MAP MAP USER_INPUT2 DIALOG => DIRECTORY ! FILE | FILES | DIRECTORY | STRING | ODBC MESSAGE => 'Enter .DXF Output Directory' OPT => output END_MAP MAP DXFIN_PARAM STATISTICS => ON DEBUG => OFF END_MAP MAP DXFOUT_PARAM STATISTICS => ON DEBUG => OFF END_MAP MAP INPUT_SOURCES I1 => DXFIN,OPT.input END_MAP MAP INOUT I1 => COPY_INOUT0 END_MAP |INCL \script\ilin.mod |INCL \script\ilout.mod PROCEDURE COPY_INOUT0 ! copy IN map &IN &OUT MAPCOPY DXFOUT_WRITE_OBJECT END_PROCEDURE |INCL \script\run1.prg