OGR gère la lecture de la plupart des versions DXF d’AutoCAD et l’écriture des fichiers de versions AutoCAD 2000. DXF est un format ascii utilisé pour l’échange de données AutoCAD entre différents logiciels de l’éditeur. Le contenu complet du fichier est représenté comme un couche unique nommée “entities”.
Les fichiers DXF sont considéré sans informations de géo-référencement via OGR. Les features possèderont toutes les attributs génériques suivants :
Les types d’éléments suivants sont gérés :
Une tentative raisonnable est réalisée pour préserver la couleur, la largeur de la ligne, la taille et l’orientation du texte via les informations de styles des features lors de la traduction des éléments. Pour l’instant aucun effort n’est réalisé pour préserver les styles de remplissage ou les attributs de styles des lignes complexes.
L’approximation des arcs, ellipses, cercles et polylignes arrondis comme linestring est réalisée en découpant les arcs en sous-arcs inférieure au seuil d’un angle. Cet angle est définie par OGR_ARC_STEPSIZE. Par défaut à 4 degrés, mais peut être écrasé par la variable de configuration OGR_ARC_STEPSIZE.
Le comportement par défaut pour les entités INSERT est d’être étendue avec la géométrie du bloc qu’ils référencent. Cependant si l’option de configuration DXF_INLINE_BLOCKS est définie à la valeur FALSE, alors le comportement est différent comme décrit ici.
L’intention est qu’avec le paramètre DXF_INLINE_BLOCKS désactivé, les blocs de références resteront comme références et le bloc original de définition sera disponible via la couche blocs. En export cette configuration entrainera la création de blocs identiques.
Normalement les fichiers DXF sont dans l’encodage ANSI_1252 / Win1252. GDAL/OGR tente de traduire cela vers l’UTF-8 lors de la lecture puis en ANSI_1252 pour l’écriture. Les fichiers DXF peuvent aussi avoir un champ en-tête ($DWGCODEPAGE) indiquant l’encodage du fichier. Dans GDAL 1.8.x et plus ancien cela était ignoré mais à partir de GDAL 1.9.0 et plus récent une tentative est réalisée pour utiliser cela pour re-encoder des autres encodages vers l’UTF-8. Cela fonctionnera en fonction du nom du code d’encodage et si GDAL/OGR a été compilé avec la bibliothèque iconv pour le re-encodage des caractères.
Dans certains as le paramètre $DWGCODEPAGE dans le fichier DXF sera erroné, ou ne sera pas reconnu par OGR. Il peut être édité manuellement, ou la variable de configuration DXF_ENCODING peut être utilisée pour écraser l’id qui sera utilisé par OGR lors du transcodage. La valeur de DXF_ENCODING doit être un nom d’encodage géré par CPLRecode() (ie un nom iconv), et pas un nom $DWGCODEPAGE du DXF. Utiliser le nom “UTF-8” pour le DXF_ENCODING évitera toute tentative de re-encodage lors de la lecture.
Les fichiers DXF sont écrits au format AutoCAD 2000. Un en-tête standard (Tout jusqu’au mot clé ENTITIES) est écrit à partir du fichier $GDAL_DATA/header.dxf, et le fichier $GDAL_DATA/trailer.dxf est ajouté après les entités. Une seule couche peut être créée dans le fichier output.
Les features points avec un style de LABEL sont écrit comme des entités MTEXT basé sur les informations de style.
Les features points sans style de LABEL sont écrits sous forme d’entité POINT.
LineString, MultiLineString, Polygon et MultiPolygons sont écrit sous forme d’une ou plusieurs entités LWPOLYLINE, fermé dans le cas d’un anneau polygonale. Un effort est réalisé pour préserver la largeur des lignes et leur couleur.
La création de jeu de données gère les options de création de jeu de données suivants :
Notez que dans GDAL 1.8 et supérieur, les modèles d’en-tête et trailer peut être des fichiers DXF complet. Le pilote les scannera et extraira seulement les portions nécessaires (portion avant ou après la section ENTITIES).
Il est possible d’exporter un “bloc” de couche vers le DXF en plus de la couche “entities” dans le but de produire les définitions des BLOCKs réel DXF dans le fichier en sortie. Il est également possible d’écrire les entités INSERT si un nom de bloc est fournie pour une entité. Pour que cela fonctionne les conditions suivantes s’appliquent :
L’intention est qu’une simple traduction à partir d’un DXF avec DXF_INLINE_BLOCKS définie à FALSE reproduira approximativement les blocs originaux et gardera les entités INSERT comme des entités INSERT plutôt que des les éclater.
Lors de l’écriture des entités, si il est rempli le champs Layer est utilisé pour définir la couche entités écrite. Si la couche n’est pas déjà définie dans le modèle d’en-tête alors une nouvelle définition de couche sera introduite, copiée de la définition de la couche par défaut (“0”).
Lors de l’écriture des entités LWPOLYLINE les règles suivantes s’appliquent au regard des définitions Linetype.
L’objectif est que le motif de style “dot dash” soient préservé lors de l’écriture vers le DFX et que les linetypes spécifiques puisse être prédéfinie dans le modèle d’en-tête et référencé en utilisant le champ Linetype si désiré.
[1] | [NdT] those with their budge of vertices attributes set |