zoukankan      html  css  js  c++  java
  • dxf文件格式

    python比较详细的文档: https://pythonhosted.org/ezdxf/introduction.html
    比较全面的一个库: https://github.com/haplokuon/netDxf

    格式化dxf为比较直观的文本

             private void convertFile(String filename)
            {
                StreamReader sr = new StreamReader(filename);
                StreamWriter  sw = new StreamWriter(filename+".txt");
                string code, value;
                StringBuilder text = new StringBuilder();
                String prefix="";
                do
                {
                    code = sr.ReadLine().Trim();
                    value = sr.ReadLine();
                    if (code.Equals("0") || code.Equals("9"))
                    {
                        sw.WriteLine(text.ToString());
                        text.Clear();
                        text.Append(prefix);
                        text.Append(value);
    
                        if (value.Equals("ENDSEC") || value.Equals("ENDTAB") || value.Equals("ENDBLK"))
                        {
                            prefix = prefix.Substring(0, prefix.Length - 1);
                        }
                        else if (value.Equals("SECTION") || value.Equals("TABLE") || value.Equals("BLOCK")
                        {
                            prefix +='	';
                        }
                    }
                    else if (code.Equals("999"))
                    {
                        sw.WriteLine(value);
                    }
                    else
                    {
                        //if(text.Length <50)
                         text.Append("   ").Append(code).Append(':').Append(value);
                    }
                } while (value != DxfObjectCode.EndOfFile);
                sr.Close();
                sw.Close();
    
    
                //打开文件
                RunCmd("start " + filename + ".txt");
    
            }
    

    基本内容

    SECTION   2:HEADER
    	$ACADVER   1:AC1027
    	$HANDSEED   5:27F
    	ENDSEC
    SECTION   2:CLASSES
    	ENDSEC
    SECTION   2:TABLES
    	TABLE   2:VPORT   5:8   330:0   100:AcDbSymbolTable
    		VPORT   5:EA   330:8   100:AcDbSymbolTableRecord
    		ENDTAB
    	TABLE   2:LTYPE   5:5   330:0   100:AcDbSymbolTable
    		LTYPE   5:14   330:5   100:AcDbSymbolTableRecord
    		ENDTAB
    	TABLE   2:LAYER   5:2   102:{ACAD_XDICTIONARY   360:1FF
    		LAYER   5:10   102:{ACAD_XDICTIONARY   360:13C   102:}
    		ENDTAB
    	TABLE   2:STYLE   5:3   330:0   100:AcDbSymbolTable
    		STYLE   5:11   330:3   100:AcDbSymbolTableRecord
    		ENDTAB
    	TABLE   2:VIEW   5:6   330:0   100:AcDbSymbolTable
    		ENDTAB
    	TABLE   2:UCS   5:7   330:0   100:AcDbSymbolTable
    		ENDTAB
    	TABLE   2:APPID   5:9   330:0   100:AcDbSymbolTable
    		APPID   5:12   330:9   100:AcDbSymbolTableRecord
    		ENDTAB
    	TABLE   2:DIMSTYLE   5:A   330:0   100:AcDbSymbolTable
    		DIMSTYLE   105:27   102:{ACAD_REACTORS   330:255
    		ENDTAB
    	TABLE   2:BLOCK_RECORD   5:1   330:0   100:AcDbSymbolTable
    		BLOCK_RECORD   5:1F   102:{ACAD_XDICTIONARY   360:1CE
    		ENDTAB
    	ENDSEC
    SECTION   2:BLOCKS
    	BLOCK   5:258   330:257   100:AcDbEntity   8:0   100:AcDbBlockBegin
    		LINE   5:26C   330:257   100:AcDbEntity   8:testLayer
    		ENDBLK   5:259   330:257   100:AcDbEntity   8:0   100:AcDbBlockEnd
    	ENDSEC
    SECTION   2:ENTITIES
    	LINE   5:242   330:1F   100:AcDbEntity   8:0   100:AcDbLine
    	ENDSEC
    SECTION   2:OBJECTS
    	DICTIONARY   5:C   330:0   100:AcDbDictionary   281:     1
    	ENDSEC
    SECTION   2:ACDSDATA   70:     2   71:     6
    	ACDSSCHEMA   90:        0   1:AcDb_Thumbnail_Schema
    	ENDSEC
    
    

    最简内容

    
    SECTION   2:HEADER
    	$ACADVER   1:AC1027
    	$HANDSEED   5:111
    	ENDSEC
    SECTION   2:CLASSES
    	ENDSEC
    SECTION   2:TABLES
    	TABLE   2:APPID   5:27   330:0   100:AcDbSymbolTable   70:4
    		APPID   5:4A   330:27   100:AcDbSymbolTableRecord   100:AcDbRegAppTableRecord   2:ACAD   70:0
    		APPID   5:4B   330:27   100:AcDbSymbolTableRecord   100:AcDbRegAppTableRecord   2:AcCmTransparency   70:0
    		APPID   5:4C   330:27   100:AcDbSymbolTableRecord   100:AcDbRegAppTableRecord   2:GradientColor1ACI   70:0
    		APPID   5:4D   330:27   100:AcDbSymbolTableRecord   100:AcDbRegAppTableRecord   2:GradientColor2ACI   70:0
    		ENDTAB
    	TABLE   2:VPORT   5:21   330:0   100:AcDbSymbolTable   70:1
    		VPORT   5:31   330:21   100:AcDbSymbolTableRecord   100:AcDbViewportTableRecord   2:*Active   70:0   10:0.0   20:0.0   11:21.0   21:21.0   12:0.0   22:0.0   13:0.0   23:0.0   14:0.5   24:0.5   15:10.0   25:10.0   16:0.0   26:0.0   36:1.0   17:0.0   27:0.0   37:0.0   40:2000.0   41:1.9   75:0   76:1
    		ENDTAB
    	TABLE   2:LTYPE   5:22   330:0   100:AcDbSymbolTable   70:3
    		LTYPE   5:32   330:22   100:AcDbSymbolTableRecord   100:AcDbLinetypeTableRecord   70:0   2:ByLayer   3:   72:65   73:0   40:0.0
    		LTYPE   5:33   330:22   100:AcDbSymbolTableRecord   100:AcDbLinetypeTableRecord   70:0   2:ByBlock   3:   72:65   73:0   40:0.0
    		LTYPE   5:34   330:22   100:AcDbSymbolTableRecord   100:AcDbLinetypeTableRecord   70:0   2:Continuous   3:Solid line   72:65   73:0   40:0.0
    		ENDTAB
    	TABLE   2:LAYER   5:23   330:0   100:AcDbSymbolTable   70:1
    		LAYER   5:35   330:23   100:AcDbSymbolTableRecord   100:AcDbLayerTableRecord   2:0   70:0   62:7   6:Continuous   290:1   370:-3   390:0
    		ENDTAB
    	TABLE   2:STYLE   5:24   330:0   100:AcDbSymbolTable   70:1
    		STYLE   5:36   330:24   100:AcDbSymbolTableRecord   100:AcDbTextStyleTableRecord   2:Standard   3:arial.ttf   70:0   71:0   40:0.0   41:1.0   42:0.0   50:0.0
    		ENDTAB
    	TABLE   2:DIMSTYLE   5:28   330:0   100:AcDbSymbolTable   70:0   100:AcDbDimStyleTable
    		ENDTAB
    	TABLE   2:VIEW   5:25   330:0   100:AcDbSymbolTable   70:0
    		ENDTAB
    	TABLE   2:UCS   5:26   330:0   100:AcDbSymbolTable   70:0
    		ENDTAB
    	TABLE   2:BLOCK_RECORD   5:29   330:0   100:AcDbSymbolTable   70:2
    		BLOCK_RECORD   5:37   330:29   100:AcDbSymbolTableRecord   100:AcDbBlockTableRecord   2:*Model_Space   340:0
    		BLOCK_RECORD   5:38   330:29   100:AcDbSymbolTableRecord   100:AcDbBlockTableRecord   2:*Paper_Space   340:0
    		ENDTAB
    	ENDSEC
    SECTION   2:BLOCKS
    	BLOCK   5:39   330:37   100:AcDbEntity   8:0   100:AcDbBlockBegin   2:*Model_Space   70:0   10:0.0   20:0.0   30:0.0   3:*Model_Space
    		ENDBLK   5:4E   330:37   100:AcDbEntity   8:0   100:AcDbBlockEnd
    	BLOCK   5:3A   330:38   100:AcDbEntity   8:0   100:AcDbBlockBegin   2:*Paper_Space   70:0   10:0.0   20:0.0   30:0.0   3:*Paper_Space
    		ENDBLK   5:4F   330:38   100:AcDbEntity   8:0   100:AcDbBlockEnd
    	ENDSEC
    SECTION   2:ENTITIES
    	LINE   5:3B   330:37   100:AcDbEntity   8:0   62:0   100:AcDbLine   10:0.0   20:0.0   30:0.0   11:300.0   21:300.0   31:0.0
    	LINE   5:3C   330:37   100:AcDbEntity   8:0   62:0   100:AcDbLine   10:0.0   20:300.0   30:0.0   11:300.0   21:0.0   31:0.0
    	LWPOLYLINE   5:3D   330:37   100:AcDbEntity   8:0   62:0   100:AcDbPolyline   90:20   70:128   43:0.0   10:0.0   20:0.0   10:20.0   20:20.0   10:20.0   20:0.0   10:40.0   20:20.0   10:40.0   20:0.0   10:60.0   20:20.0   10:60.0   20:0.0   10:80.0   20:20.0   10:80.0   20:0.0   10:100.0   20:20.0   10:100.0   20:0.0   10:120.0   20:20.0   10:120.0   20:0.0   10:140.0   20:20.0   10:140.0   20:0.0   10:160.0   20:20.0   10:160.0   20:0.0   10:180.0   20:20.0   10:180.0   20:0.0   10:200.0   20:20.0
    	POLYLINE   5:3E   330:37   100:AcDbEntity   8:0   62:0   100:AcDb3dPolyline   10:0.0   20:0.0   30:0.0   70:16
    	VERTEX   5:40   330:3E   100:AcDbEntity   8:0   100:AcDbVertex   100:AcDb3dPolylineVertex   10:0.0   20:0.0   30:0.0   70:64
    	VERTEX   5:41   330:3E   100:AcDbEntity   8:0   100:AcDbVertex   100:AcDb3dPolylineVertex   10:0.0   20:0.0   30:100.0   70:64
    	VERTEX   5:42   330:3E   100:AcDbEntity   8:0   100:AcDbVertex   100:AcDb3dPolylineVertex   10:-100.0   20:0.0   30:100.0   70:64
    	SEQEND   5:3F   330:3E   100:AcDbEntity   8:0
    	CIRCLE   5:43   330:37   100:AcDbEntity   8:0   62:0   100:AcDbCircle   10:0.0   20:0.0   30:0.0   40:50.0
    	ARC   5:44   330:37   100:AcDbEntity   8:0   62:0   100:AcDbCircle   10:0.0   20:0.0   30:0.0   40:100.0   100:AcDbArc   50:0.0   51:90.0
    	ELLIPSE   5:45   330:37   100:AcDbEntity   8:0   62:0   100:AcDbEllipse   10:0.0   20:0.0   30:0.0   11:0.0   21:100.0   31:0.0   40:0.5   41:0.0   42:4.0
    	TEXT   5:48   330:37   100:AcDbEntity   8:0   62:0   100:AcDbText   10:300.0   20:0.0   30:0.0   11:300.0   21:0.0   31:0.0   40:30.0   1:aaaa中文00000  50:0.0   72:0   100:AcDbText   73:2
    	ENDSEC
    SECTION   2:OBJECTS
    	DICTIONARY   5:50   330:0   100:AcDbDictionary   280:0   281:1   3:ACAD_GROUP   350:51
    	DICTIONARY   5:51   330:50   100:AcDbDictionary   280:0   281:1
    	ENDSEC
    
    
    

    文件格式

    http://www.qcad.org/doc/dxflib/2.5/reference/writing.html
    https://www.autodesk.com/techpubs/autocad/dxf/reference/

    基本结构

    0 //section前导0
    SECTION //SECTOIN 标记
    2 //SECTION 后续标记2
    HEADER //SECTION名称:HEADER CLASSES TABLES BLOCKS ENTITIES OBJECTS THUMBNAILIMAGE
    9 //属性前导9
    $ACADVER //属性名,版本
    1 //属性类型 , 可以多个属性类型、属性值对,直到9开始下一属性,或者0a 0ENDSEC
    AC1027 //属性值
    9 //新属性
    .....
    70

    组码表

    0 T 实体类型,比如:SECTION TABLE CLASS CIRCLE LINE ENDBLK...
    2 
    1  文本值,比如dim标注		
    5  实体句柄,顺序编号的十六进制字符串
    6 线样式名
    7 文本样式名
    8 图层名,默认存在一个名称为0的图层
    100 子类标识 Subclass data marker,如AcDbEntity/AcDbPolyline/AcDbCircle/AcDbArc,
    330 owner // Soft-pointer handle  to other objects . Translated during INSERT and XREF. 
    

     0 = BYBLOCK, 256 = BYLAYER
     $MEASUREMENT 70 Sets drawing units. 0=English; 1=Metric
    

    明细

    https://www.autodesk.com/techpubs/autocad/dxf/reference/
    http://docs.autodesk.com/ACD/2011/CHS/filesDXF/WSfacf1429558a55de185c428100849a0ab7-5f35.htm
    http://help.autodesk.com/view/OARX/2018/ENU/?guid=GUID-235B22E0-A567-4CF6-92D3-38A2306D73F3
    https://www.autodesk.com/techpubs/autocad/acad2000/dxf/

  • 相关阅读:
    UVA 1513
    《ArcGIS Runtime SDK for Android开发笔记》——问题集:.geodatabase创建,创建时内容缺失问题总结
    《ArcGIS Runtime SDK for Android开发笔记》——问题集:使用TextSymbol做标注显示乱码
    《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用
    《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析
    《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)
    《ArcGIS Runtime SDK for Android开发笔记》——(4)、基于Android Studio构建ArcGIS Android开发环境
    《ArcGIS Runtime SDK for Android开发笔记》——(3)、ArcGIS Runtime SDK概述
    《ArcGIS Runtime SDK for Android开发笔记》——(2)、Android Studio基本配置与使用
    《ArcGIS Runtime SDK for Android开发笔记》——(1)、Android Studio下载与安装
  • 原文地址:https://www.cnblogs.com/wiki3d/p/dxf.html
Copyright © 2011-2022 走看看