编写 DXF 接口程序   
写入 DXF 文件

与编写读取 DXF 文件的程序相比,编写创建 DXF 文件的程序更困难一些,因为必须保持图形的一致性,这样 AutoCAD 才能找到可接受的文件。AutoCAD 允许省略 DXF 文件中的很多项目,且仍然能够获得可用的图形。

以下 Visual Basic 子例程创建了表示多边形的 DXF 文件。

' WriteDXFPolygon 创建一个最小的 DXF 文件,其中只
' 包含 ENTITIES 段。此子例程需要五个参数:
' DXF 文件名、多边形的边数、最右侧
' 一条边(这条边为竖直方向)底部端点的 X 坐标和 Y 坐标
' 以及每条边的
' 长度。注意,因为这里只要求二维点,所以
' 不包含 Z 坐标(代码 30 和 31)。直线
' 置于“多边形”图层中。
'
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

只要在需要数据的行上写入了格式正确的项目,DXFIN 就会接受此项目。(当然,字符串项目不应该包含前导空格,除非这些空格是字符串的一部分。)此 BASIC 程序利用了输入格式的灵活性,它生成的文件与 AutoCAD 生成的文件并不完全相同。

如果在使用要加载的 DXFIN 时出现错误,AutoCAD 将通过一条消息报告错误,指明错误的性质和检测到错误之前在 DXF 文件中处理的最后一行数据。错误可能并不出现在这一行,尤其是当出现省略所需组这样的错误时更是如此。

   评论?