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