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/

  • 相关阅读:
    null和undefined的区别
    百度小程序组件引用问题
    hbase优化操作与建议
    Hbase Rowkey设计原则
    kafka容器报内存不足异常(failed; error='Cannot allocate memory' (errno=12))
    Hbase安装
    四、hive安装
    一、linux安装mysql
    三、hadoop、yarn安装配置
    linux下磁盘进行分区、文件系统创建、挂载和卸载
  • 原文地址:https://www.cnblogs.com/wiki3d/p/dxf.html
Copyright © 2011-2022 走看看