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 +='\t';
}
}
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开始下一属性,或者0\a\n0ENDSEC
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/