Lectura de un archivo DXF

AutoCAD DXF Format

 
Lectura de un archivo DXF
 
 
 

El ejemplo siguiente es un programa sencillo de Visual Basic 6 para leer archivos DXF y extraer códigos y valores específicos de un objeto concreto perteneciente a una sección determinada.

' ReadDXF extrae pares de códigos/valores específicos del archivo DXF.
' Esta función requiere cuatro parámetros de cadena, un nombre de archivo
' DXF válido, un nombre de sección DXF, el nombre de un objeto en dicha
' sección y una lista de códigos delimitada por comas.
'
Function ReadDXF( _
        ByVal dxfFile As String, ByVal strSection As String, _
        ByVal strObject As String, ByVal strCodeList As String)
    Dim tmpCode, lastObj As String
    Open dxfFile For Input As #1
    ' Obtener primer par código/valor
    codes = ReadCodes
    ' Bucle en archivo hasta llegar a la línea "EOF"
    While codes(1) <> "EOF"
        ' Si el código del grupo es '0' y el valor es 'SECTION' ...
        If codes(0) = "0" And codes(1) = "SECTION" Then
            ' Tiene que ser una nueva sección; obtener el siguiente
            ' par de código/valor.
            codes = ReadCodes()
            ' Si esta sección es la correcta ...
            If codes(1) = strSection Then
                ' Obtener siguiente par de código/valor y ...
                codes = ReadCodes
                ' Bucle en esta sección hasta encontrar 'ENDSEC'
                While codes(1) <> "ENDSEC"
                    ' Mientras se esté en esta sección, todos los códigos '0' indican
                    ' un objeto. Si se encuentra un '0', almacenar el
                    ' nombre del objeto para su uso futuro.
                    If codes(0) = "0" Then lastObj = codes(1)
                    ' Si éste es el objeto que le interesa ...
                    If lastObj = strObject Then
                        ' Acotar el código mediante comas.
                        tmpCode = "," & codes(0) & ","
                        ' Si este código está en la lista de códigos ...
                        If InStr(strCodeList, tmpCode) Then
                            ' Añadir el valor de devolución.
                            ReadDXF = ReadDXF & _
                                codes(0) & "=" & codes(1) & vbCrLf
                        End If
                    End If
                    ' Leer otro par de código/valor
                    codes = ReadCodes
                Wend
            End If
        Else
            codes = ReadCodes
        End If
    Wend
    Close #1
End Function
    
' ReadCodes lee dos líneas de un archivo abierto y devuelve una matriz de dos
' elementos, un código de grupo y su valor. Siempre y cuando un archivo DXF lea 
' dos líneas al mismo tiempo, todo será correcto. Sin embargo, para que el código 
' sea más fiable, debe añadir una comprobación rutinaria adicional de
' errores y funcionamiento.
'
Function ReadCodes() As Variant
    Dim codeStr, valStr As String
    Line Input #1, codeStr
    Line Input #1, valStr
    ' Recortar el espacio a la izquierda y a la derecha del código
    ReadCodes = Array(Trim(codeStr), valStr)
End Function