当前位置:文档之家› ReadDXF从DXF文件中提取指定代码

ReadDXF从DXF文件中提取指定代码

8
图层名(固定)
9
DXF:变量名标识符(仅用于
DXF文件的 HEADER 区域)。
10
主要点。此点为直线或文字图元的起点,圆的圆心等等。
DXF:主要点的 X 值(其后为 Y 和 Z 值的组码 20 和 30) APP:三维点(三个实数构成的表)
11-18
其他点。
DXF:其他点的 X 值(其后为 Y 和 Z 值的组码 21-28 和 31-38) APP:三维点(三个实数构成的表)
127 个字节的数据数据组。
320-329
任意对象句柄。句柄值保留原样,在执行 INSERT 和 XREF 操作时它们不被转化。
330-339
软键指针句柄。任意指向同一 DXF 文件或图形中的其他对象的软键指针,在执行 INSERT
和 XREF 操作时被转化。
340-349
硬键指针句柄。任意指向同一 DXF 文件或图形中的其他对象的硬键指针,在执行 INSERT
0
SECTION
2
BLOCKS
BLOCKS 区域的开始
0
BLOCK
5
<句丙>
100
AcDbEntity
8
<图层>
100
AcDbBlockBegin
2
<图块名>
70
<标志>
10
<X 值>
20
<Y 值>
30
<Z 值>
3
<图块名>
1
<外部参照路径>
每一图块条目的开始(一个图块图元定义)
0
<图元类型>
.
. <数据>
0
TABLE
代表一个符号表条目
2
STYLE
文字样式符号表条目。组码 0 完全定义类型规则的例外。
5
1C
STYLE 表句柄;与图元和其他对象的相同
70
3
其后能跟随的STYLE表记录的最大数目(R13前的字段)
1001
APP_X
APP_X 已将外部数据放入符号表中。
1040
42.0
是一个单精度浮点数。
0
5
<句柄>
100
AcDbSymbolTable
70
<最大条目数>
公用表组码,
重复每一条目
0
<表类型>
5
<句丙>
100
AcDbSymbolTableRecord
.
. <数据>
.
表条目数据,重复每一表记录
0
ENDTAB
表结束
0
ENDSEC
TABLES 区域的结束
本节内容包括:
符号表样例
符号表样例
该DXF顺序代表三个完整的对象:符号表本身再加上两个条目。
If codes(1) = strSection Then
' 取得下一代码/值对并且..
codes = ReadCodes
' 在该区域中循环直到找到"ENDSEC"
While codes(1) <> "ENDSEC"
' 在这个区域中,所有"0"代码表示一个对象。
' 如果发现"0"就可保存对象名以便以后使用。
和 XREF 操作时被转化。
350-359
软键从属句柄。链接到同一 DXF 文件或图形中其他对象的任意软键从属链接,在执行 INSERT
和 XREF 操作时被转化。
360-369
硬键从属句柄。链接到同一 DXF 文件或图形中其他对象的任意硬键从属链接,在执行 INSERT
和 XREF 操作时被转化。
0
SECTION
2
OBJECTS
OBJECTS 区域的开始
0
DICTIONARY
5
<句柄>
100
AcDbDictionary
命名对象词典的开始(根词典对象)
3
<词典名称>
350
<子句柄>
重复每一条目
0
<对象类型>
.
. <数据>
.
对象数据组
0
DSEC
OBJECTS 区域的结束
下面是DXF文件中的ENTITIES区域的一个例子:图元组码
49。组码 7x 总是在第一个组码 49 前出现,用于指定表的长度。
50-58
角度(在 DXF 文件中单位为度,在 AutoLISP 和 ARX 应用程序中单位为弧度)。
60
表示图元可见性的整数值。不赋值或值为 0 时表示可见;为 1 时表示不可见。
62
颜色代码(固定)
66
“图元跟随”标志(固定)
67
打印样式名类型枚举(AcDb::PlotStyleNameType)。作为短整数保存并移动。自定义非图元对象可使用全部范围组码,但图元类只能在其描述中使用381-389的DXF组码,其原因与上面的线宽范围相同。
If codes(0) = "0" Then lastObj = codes(1)
' 如果该对象是所需要的对象
If lastObj = strObject Then
' 在代码的前后加上逗号
tmpCode = "," & codes(0) & ","
' 如果该代码为列表中的代码..
If InStr(strCodeList, tmpCode) Then
0
SECTION
2
ENTITIES
ENTITIES 区域的开始
0
<图元类型>
5
<句柄>
330
<指向所有者>
100
AcDbEntity
8
<layer>
100
AcDb<类名>
.
. <数据>
.
每一图元定义为一个条目
0
ENDSEC
ENTITIES 区域的结束
下面是DXF文件中的BLOCKS区域的一个例子:图块组码
0
STYLE
开始第二条目。在第一个条目中无外部数据或 永久反应器。
5
C2
第二个条目的句柄。
2
ENTRY_2
第二个条目的文字名称。
...
...
下至组码 3 的其他字节。
3
BUFONTS.TXT
主字体文件名和最后的对象类型:特定组。
102
{ACAD_REACTORS
此条目具有一对永久反应器。
330
3C2
370-379
线宽枚举值 (AcDb::LineWeight)。作为短整数保存并移动。自定义非图元对象可使用全部范围组码,但图元类只能在其描述中使用371-379的DXF组码,因为AutoCAD和AutoLISP都总是采用370组码作为图元的线宽。在这里370组码就象其它的“公用”图元字段一样。
380-389
将DXF文件读入
const ACHAR* dxfFilename,
const ACHAR* logFilename = NULL);
将DXF文件读入
按数字次序排列的图元组码
组码
说明
-5
APP:persistent reactor
链表
-4
APP:条件运算符(仅用于ssget)
-3
APP:扩展数据(XDATA)
下面是DXF文件中的HEADER区域的一个例子:头部组码
0
SECTION
2
HEADER
HEADER区域的开始
9
$<变量>
<组码>
<值>
重复每一头部变量
0
ENDSEC
HEADER区域的结束
下面是DXF文件中的CLASSES区域的一个例子:类组码
0
SECTION
2
CLASSES
CLASSES 区域的开始
.
在图块中定义的每一图元为一个条目
0
ENDBLK
5
<句柄>
100
AcDbBlockEnd
每一图块条目的结束(一个endblk图元定义)
0
ENDSEC
BLOCKS 区域的结束
下面是DXF文件中的TABLES区域的一个例子:符号表组码
0
SECTION
2
TABLES
TABLES 区域的开始
0
TABLE
2
<表类型>
STYLE
STYLE 符号表中第一个元素的开始
5
3A
第一条目的句柄(DIMSTYLE 表条目此处为组码105)。
2
ENTRY_1
第一条目的文字名称。
70
64
标准标志值。
40
.4
文字高度。
41
1.0
宽度比例因子。
50
0.0
倾斜角。
71
0
文本生成标志。
42
0.4
最后使用的高度。
3
BUFONTS.TXT
主字体文件名。
End Function
' ReadCodes从打开的文件中读取两行并返回一个两项的数组:
' 一个组码和它的值。只要在读取DXF文件能同时读取两行,
相关主题