5. Modul DXFIN - AutoCAD DXF lesen

5.1. Allgemeines

Mit dem Modul DXFIN können Objekte aus einer AutoCAD DXF Datei gelesen werden.

Der Modul wird mit:

|INCL \script\dxfin.mod

in einer ICS RUN1-Konfiguration verfügbar gemacht.

5.2. Abhängigkeiten von anderen Modulen

Keine Abhängigkeiten vorhanden.

5.3. Parametermap DXFIN_PARAM

Folgende Parameter können in der Map DXFIN_PARAM für den Modul gesetzt werden:

Parameterreq/optBeschreibung
ERROR_OBJECTSoUnbekannte Objekte als Fehler melden (ON oder OFF).
ATTRIB_AS_TEXToAttribute als Text liefern.
HEADEROBJECTSoLesen und Display von Headerobjects, z.B. Blockdefinitionen (ON oder OFF).
HEADERINFOoLesen und Display von Headerinformationen (ON oder OFF).
ATTRIB_AS_TEXToEXTENDED Entities als TEXT liefern (ON oder OFF).
ATTRIB_SCANoEXTENDED Entities lesen (ON oder OFF).
MTEXT_AS_TEXToMTEXT als TEXT liefern (ON oder OFF).
DEBUGrDEBUG Modus ein- oder ausschalten (ON oder OFF).
STATISTICSrON oder OFF, Default = OFF. Statistik anzeigen.

5.4. Objektmodell

Allgemeine Komponenten für jedes IN-Objekt
Komponentereq/optBeschreibung
IN.TYPE(s)rObjekttyp. Mögliche Werte sind: POINT, BLOCK, SHAPE, CIRCLE, TEXT, LINE, POLYLINE, LWPOLYLINE, ELLIPSE, ARC.
IN.LINE(i) r

Zeilennummer in der Inputdatei.

IN.OBJID(s) r

Eindeutige Objektidentifikation.

IN.LAYER(s)rDXF-Layer.
IN.LTYPE(i)rDXF-Linientyp.
IN.COLOR(i)rDXF-Farbe (0 .. 255).
IN.THICKNESSrDXF-Thickness.
Zusätzliche Komponenten für DXF-Extended Data

Das IN-Objekt kann ausserdem mehrere Komponenten als DXF-Extended Data aufweisen. Die erste DXF-Extended Data Komponente hat den Namen IN.EXTENDED1, alle weiteren erhalten im Namen als Suffix einen fortlaufenden Index: IN.EXTENDED2, IN.EXTENDED3,etc.

Komponentereq/optBeschreibung
IN.EXTENDED1(m) o1. DXF-Extended Data.
IN.EXTENDED2(m)o

2. DXF-Extended Data.

IN.EXTENDEDn(m)o

n. DXF-Extended Data.

Jede DXF-Extended Data Map ist wie folgt aufgebaut:

Komponentereq/optBeschreibung
APPLICATION(s) r1. DXF-Extended Data.
LAYER(s)r

2. DXF-Extended Data.

NUMBER(s)r

n. DXF-Extended Data.

ATTRIBUTE1(1,r,s)oAttributwert 1. Attribut.
ATTRIBUTE1(2,r,s)oAttributwert 2. Attribut.
ATTRIBUTE1(n,r,s)oAttributwert n. Attribut.
Zusätzliche Komponenten für IN.TYPE = 'POINT'
Komponentereq/optBeschreibung
IN.GEOM(p) rPunktposition.
Zusätzliche Komponenten für IN.TYPE = 'BLOCK'
Komponentereq/optBeschreibung
IN.GEOM(p) rBlockposition.
IN.BLOCK(s)rBlockname.
IN.SCALE(r)rSkalierung.
IN.ROT(r)rRotationswinkel in Altgrad.
Zusätzliche Komponenten für IN.TYPE = 'SHAPE'
Komponentereq/optBeschreibung
IN.GEOM(p) rShapeposition.
IN.SHAPE(s)rShapename.
IN.SIZE(r)rGrösse des Symbols.
IN.ROT(r)rRotationswinkel in Altgrad.
Zusätzliche Komponenten für IN.TYPE = 'CIRCLE'
Komponentereq/optBeschreibung
IN.GEOM(p) rZentrumsposition.
IN.RADIUS(s)rKreisradius.
Zusätzliche Komponenten für IN.TYPE = 'TEXT'
Komponentereq/optBeschreibung
IN.TXT(s) rTextinhalt.
IN.GEOM(p)rTextposition.
IN.HEIGHT(r)rTexthöhe.
IN.STYLE(s)rTextfont.
IN.JUST(s)rJustierung. Mögliche Werte sind: LEFT, CENTER, RIGHT, MIDDLE.
IN.HJUST(i)rHorizontale Justierung (DXF-Gruppencode 72).
IN.VJUST(i)rVertikale Justierung (DXF-Gruppencode 73).
IN.SLANT(r)rTextneigungswinkel in Altgrad.
IN.XSCALE(r)rTextskalierung entlang der X-Achse.
IN.ROT(r)rRotationswinkel in Altgrad.
Zusätzliche Komponenten für IN.TYPE = 'MTEXT'
Komponentereq/optBeschreibung
IN.TXT(s) rTextinhalt. Zeilenumbrüche sind im Text codiert.
IN.GEOM(p)rTextposition.
IN.HEIGHT(r)rTexthöhe.
IN.STYLE(s)rTextfont.
IN.JUST(s)rJustierung. Mögliche Werte sind: LEFT, CENTER, RIGHT, MIDDLE.
IN.HJUST(i)rHorizontale Justierung (DXF-Gruppencode 72).
IN.VJUST(i)rVertikale Justierung (DXF-Gruppencode 73).
IN.SLANT(r)rTextneigungswinkel in Altgrad.
IN.XSCALE(r)rTextskalierung entlang der X-Achse.
IN.ROT(r)rRotationswinkel in Altgrad.
Zusätzliche Komponenten für IN.TYPE = 'LINE'
Komponentereq/optBeschreibung
IN.GEOM(l) rLiniengeometrie mit genau zwei Punkten.
Zusätzliche Komponenten für IN.TYPE = 'POLYLINE'
Komponentereq/optBeschreibung
IN.GEOM(l,a) rLinien- oder Flächengeometrie.
IN.FLAG(i)r

DXF-Polyline Flag.

Flag = 0

Polyline ist offen.

Flag = 1

Polyline ist geschlossen.

Zusätzliche Komponenten für IN.TYPE = 'LWPOLYLINE'
Komponentereq/optBeschreibung
IN.GEOM(l,a) rLinien- oder Flächengeometrie.
IN.FLAG(i)r

DXF-Polyline Flag.

Flag = 0

Polyline ist offen.

Flag = 1

Polyline ist geschlossen.

Zusätzliche Komponenten für IN.TYPE = 'ELLIPSE'
Komponentereq/optBeschreibung
IN.GEOM(p) rZentrumsposition.
IN.POINT(p)rEndpunkt auf der Hauptachse, relativ zur Zentrumsposition.
IN.RATIO(r)rRatio Nebenachse zur Hauptachse.
IN.START_ANGLE(r)rStartwinkel der Ellipse, 0.0 für eine geschlossene Ellipse.
IN.END_ANGLE(r)rEndwinkel der Ellipse 2*PI für eine geschlossene Ellipse.
Zusätzliche Komponenten für IN.TYPE = 'ARC'
Komponentereq/optBeschreibung
IN.GEOM(l) rKreisbogengeometrie.
IN.CENTER(p)rKreisradius.
IN.RADIUS(s)rKreisradius.
IN.START_ANGLE(r)rStartwinkel des Kreisbogen.
IN.END_ANGLE(r)rEndwinkel des Kreisbogen.

5.5. Exportierte Prozeduren und Methoden

ProzedurDXFIN_OPEN ! [s input][]
BeschreibungÖffnet eine bestehende DXF Datei <input> und initialisiert den Modul. Die Prozedur wird von RUN1 automatisch aufgerufen.
Beispiel
'test.dxf' DXFIN_OPEN
ProzedurDXFIN_READ_OBJECT ![][b state]
Beschreibung

Liest das nächste IN-Objekt aus der geöffneten DXF Datei. Die Prozedur wird von RUN1 automatisch aufgerufen.

Beispiel
DXFIN_READ_OBJECT [TRUE]
ProzedurDXFIN_CLOSE ! [][]
BeschreibungSchliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen.
Beispiel
DXFIN_CLOSE

5.6. Skriptbeispiel

! Diese ICS Konfiguration zeigt alle von dxfin.mod
! gelesenen Objekte in der .log Datei an.

|LICENSE \license\iltools.lic

MAP USER_INPUT1
   DIALOG => FILE ! FILE | FILES | STRING | ODBC
   MESSAGE => 'Enter .dxf Input File'
   FILE_FILTER => dxf
   FILE_EXISTS => TRUE
   OPT => input
END_MAP

MAP DXFIN_PARAM
   TRACE      => OFF
   STATISTICS => ON
END_MAP

MAP INPUT_SOURCES
   I1 => DXFIN,OPT.input
END_MAP

MAP INOUT
   I1 => DISPLAY_OBJECT1,IN
END_MAP

|INCL \script\dxfin.mod
|INCL \script\run1.prg