Escritura de un archivo DXF

AutoCAD DXF Format

 
Escritura de un archivo DXF
 
 
 

Elaborar un programa que cree un archivo DXF puede ser más difícil que crear uno que lo lea, ya que siempre es necesario mantener la coherencia dentro del dibujo para que AutoCAD encuentre aceptable el archivo. AutoCAD permite omitir muchos elementos de los archivos DXF y aun así obtener un dibujo utilizable.

  • Se puede omitir la sección HEADER entera si no se definen variables de encabezamiento.
  • Cualquier tabla de la sección TABLES puede omitirse si no es necesario realizar entradas, e incluso la sección completa si no es necesario incluir nada en ella.
  • Si define cualquier tipo de línea en la tabla LTYPE, esta tabla debe preceder a la tabla LAYER.
  • Si en el dibujo no se utilizan definiciones de bloques, se puede omitir la sección BLOCKS.
  • Si existe, la sección BLOCKS debe figurar antes de la sección ENTITIES.
  • Dentro de la sección ENTITIES, puede hacer referencia a nombres de capas aunque éstas no se hayan definido en la tabla LAYER. Estas capas se crean automáticamente con color 7 y el tipo de línea CONTINUA.
  • El elemento EOF debe figurar al final del archivo.

La siguiente subrutina de Visual Basic 6 crea un archivo DXF que representa un polígono.

' WriteDXFPolygon crea un archivo DXF que sólo contiene
' la sección ENTITIES. Esta subrutina requiere cinco parámetros,
' el nombre del archivo DXF, el número de lados del polígono, las
' coordenadas X e Y del extremo inferior del lado situado más a la derecha
' (comienza en dirección vertical) y la longitud de cada
' lado. Observe que, debido a que sólo se requieren puntos 2D,
' no se incluyen coordenadas Z (códigos 30 y 31). Las líneas se
' sitúan en la capa "Polígono".
'
Sub WriteDXFPolygon( _
        dxfFile As String, iSides As Integer, _
        dblX As Double, dblY As Double, dblLen As Double)
    Dim i As Integer
    Dim dblA1, dblA, dblPI, dblNX, dblNY As Double
    Open dxfFile For Output As #1
    Print #1, 0
    Print #1, "SECTION"
    Print #1, 2
    Print #1, "ENTITIES"
    dblPI = Atn(1) * 4
    dblA1 = (2 * dblPI) / iSides
    dblA = dblPI / 2
    For i = 1 To iSides
        Print #1, 0
        Print #1, "LINE"
        Print #1, 8
        Print #1, "Polygon"
        Print #1, 10
        Print #1, dblX
        Print #1, 20
        Print #1, dblY
        dblNX = dblLen * Cos(dblA) + dblX
        dblNY = dblLen * Sin(dblA) + dblY
        Print #1, 11
        Print #1, dblNX
        Print #1, 21
        Print #1, dblNY
        dblX = dblNX
        dblY = dblNY
        dblA = dblA + dblA1
    Next i
    Print #1, 0
    Print #1, "ENDSEC"
    Print #1, 0
    Print #1, "EOF"
    Close #1
End Sub

Siempre y cuando un elemento con formato correcto aparezca en la línea en la que deben estar los datos, CARGADXF lo aceptará. Por supuesto, los elementos de cadena no deben tener espacios a la izquierda a menos que éstos deban formar parte de la cadena. Este programa BASIC aprovecha la flexibilidad del formato de entrada y no genera un archivo exactamente igual que los generados por AutoCAD.

En caso de que se produjera un error al utilizar CARGADXF para efectuar la carga, AutoCAD mostrará un mensaje de error indicando su naturaleza, así como la última línea procesada en el archivo DXF antes de la detección del error. Puede ocurrir que dicha línea no sea la misma en la cual se ha producido el error, especialmente en los casos de errores provocados por la omisión de grupos necesarios.