DXF 文件本质上由代码及关联值对组成。代码(通常称为组码)表明其后的值的类型。使用这些组码和值对,可以将
DXF 文件组织到由
组成的区域中,这些记录由组码和数据项目组成。在 DXF 文件中,每个组码和值都各占一
行。
每个段都以一个后跟字符串 SECTION 的组码 0 开始,其后是组码 2 和表示该段名称的字符串(例如,HEADER)。
每个段都由定义其元素的组码和值组成。每个段都以一个后跟字符串 ENDSEC 的组码 0 结束。
从小图形中生成 DXF 文件,打印出来并在阅读本文时参考,可能会有助于用户理解本文的内容。
DXF 文件完整的结构如下:
z HEADER 段。 包含有关图形的基本信息。它由 AutoCAD 数据库版本号和一些系统变量组成。每个参数都包含
一个变量名称及其关联的值。
z CLASSES 段。包含应用程序定义的类的信息,这些类的实例出现在数据库的 BLOCKS、ENTITIES 和 OBJECTS
段中。类定义在类的层次结构中是固定不变的。
z TABLES 段。 包含以下符号表的定义:
APPID(应用程序标识表)
BLOCK_RECORD(块参照表)
DIMSTYLE(标注样式表)
LAYER(图层表)
LTYPE(线型表)
STYLE(文字样式表)
UCS(用户坐标系表)
VIEW(视图表)
VPORT(视口配置表)
z BLOCKS 段。包含构成图形中每个块参照的块定义和图形图元。
z ENTITIES 段。包含图形中的图形对象(图元),其中包括块参照(插入图元)。
z OBJECTS 段。 包含图形中的非图形对象。除图元、符号表记录以及符号表以外的所有对象都存储在此段。
OBJECTS 段中的条目样例是包含多线样式和组的词典。
z THUMBNAILIMAGE 段。包含图形的预览图像数据。此段为可选。
如果使用 SAVE 或 SAVEAS 命令的“选择对象”选项,那么所得到的 DXF 文件的 ENTITIES 段将只包含选择的图
元。
页码,1/1DXF 文件的基本结构 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
jack
附注
本文摘自autocad2004帮助,开发者文档-图形交换及autocad帮助
jack
附注
“jack”设置的“MigrationPending”
下表列出了 DXF™ 文件的 HEADER 段中出现的变量。关于此表中使用的缩写和格式方面的信息,请参见“本参考的
格式惯例”。
DXF 标题变量
变量 组码 说明
$ACADMAINTVER 70 维护版本号(应忽略)
$ACADVER 1 AutoCAD® 图形数据库版本号:
AC1006 = R10;AC1009 = R11 和 R12;
AC1012 = R13;AC1014 = R14;AC1015 = AutoCAD 2000;
AC1018 = AutoCAD 2004
$ANGBASE 50 0 角度方向
$ANGDIR 70 1 = 顺时针角度
0 = 逆时针角度
$ATTMODE 70 属性的可见性:
0 = 无
1 = 普通
2 = 全部
$AUNITS 70 角度的单位格式
$AUPREC 70 角度的单位精度
$CECOLOR 62 当前图元颜色号:
0 = 随块;256 = 随层
$CELTSCALE 40 当前图元线型比例
$CELTYPE 6 图元线型名称、随块或随层
$CELWEIGHT 370 新对象的线宽
$CEPSNID 390 新对象的打印样式句柄。如果 CEPSNTYPE 为 3,则此值代表该句柄
$CEPSNTYPE 380 新对象的打印样式类型:
0 = 随层打印样式
1 = 随块打印样式
2 = 词典默认的打印样式
3 = 随对象 ID/句柄打印样式
$CHAMFERA 40 第一个倒角距离
$CHAMFERB 40 第二个倒角距离
$CHAMFERC 40 倒角长度
$CHAMFERD 40 倒角角度
$CLAYER 8 当前图层名
$CMLJUST 70 当前多线对正:
0 = 顶端对正;1 = 居中对正;2 = 底端对正
$CMLSCALE 40 当前多线比例
$CMLSTYLE 2 当前多线样式名称
$DIMADEC 70 角度标注中显示的精度位的位数
$DIMALT 70 非零时执行的换算单位标注
$DIMALTD 70 换算单位小数位数
$DIMALTF 40 换算单位比例因子
$DIMALTRND 40 确定换算单位的舍入值
$DIMALTTD 70 换算单位标注的公差值的小数位数
$DIMALTTZ 70 控制是否对换算公差值做消零处理:
0 = 消除零英尺和零英寸
1 = 包含零英尺和零英寸
2 = 包含零英尺,消除零英寸
3 = 包含零英寸,消除零英尺
$DIMALTU 70 所有标注样式族成员(角度标注除外)的换算单位的单位格式:
1 = 科学;2 = 小数;3 = 工程;
4 = 建筑(堆叠);5 = 分数(堆叠);
页码,1/8HEADER 段组码 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
6 = 建筑;7 = 分数
$DIMALTZ 70 控制是否对换算单位标注值做消零处理:
0 = 消除零英尺和零英寸
1 = 包含零英尺和零英寸
2 = 包含零英尺,消除零英寸
3 = 包含零英寸,消除零英尺
$DIMAPOST 1 换算标注后缀
$DIMASO 70 1 = 创建关联标注
0 = 绘制单独图元
$DIMASSOC 280 控制标注对象的关联性
0 = 创建分解标注;即标注的各元素之间没有任何关联,直线、圆弧、箭头及标注文
字均作为单独的对象进行绘制
1 = 创建无关联标注对象;将标注的各种元素组成单一对象,如果对象上的定义点移
动,标注值将被更新
2 = 创建关联标注对象;标注的各种元素组成单一对象,并且标注的一个或多个定义
点与几何对象上的关联点相联结
$DIMASZ 40 标注箭头尺寸
$DIMATFIT 70 当尺寸界线的空间不足以同时放置标注文字和箭头时用来控制两者的位置:
0 = 将文字和箭头均置于尺寸界线之外
1 = 先移动箭头,然后移动文字
2 = 先移动文字,然后移动箭头
3 = 移动文字和箭头中较合适的一个
如果 DIMTMOVE 设置为 1,AutoCAD 将为被移动的标注文字添加一条引线。
$DIMAUNIT 70 角度标注的角度格式:
0 = 十进
数;1 = 度/分/秒;
2 = 百分度;3 = 弧度;4 = 勘测单位
$DIMAZIN 70 控制是否对角度标注做消零处理:
0 = 显示所有前导零和后续零
1 = 消除十进制标注中的前导零
2 = 消除十进制标注中的后续零
3 = 消除前导零和后续零
$DIMBLK 1 箭头块名
$DIMBLK1 1 第一个箭头块名
$DIMBLK2 1 第二个箭头块名
$DIMCEN 40 中心标记/中心线的大小
$DIMCLRD 70 尺寸线颜色:
范围是:0 = 随块;256 = 随层
$DIMCLRE 70 尺寸界线颜色:
范围是:0 = 随块;256 = 随层
$DIMCLRT 70 标注文字的颜色:
范围是:0 = 随块;256 = 随层
$DIMDEC 70 主单位标注的公差值的小数位数
$DIMDLE 40 尺寸线超出尺寸界线的距离
$DIMDLI 40 尺寸线增量
$DIMDSEP 70 创建单位格式为小数的标注时使用的单字符小数分隔符
$DIMEXE 40 尺寸界线延伸
$DIMEXO 40 尺寸界线偏移
$DIMFAC 40 用于计算标注分数和公差的文字高度的比例因子。AutoCAD 将 DIMTFAC 和 DIMTXT 相
乘从而设置分数或公差的文字高度
$DIMGAP 40 尺寸线间距
$DIMJUST 70 水平标注文字位置:
0 = 在尺寸线上方,且在尺寸界线之间居中对正
1 = 在尺寸线上方,且紧邻第一条尺寸界线
2 = 在尺寸线上方,且紧邻第二条尺寸界线
3 = 在第一条尺寸界线上方且居中对正
4 = 在第二条尺寸界线上方且居中对正
$DIMLDRBLK 1 引线的箭头块名
$DIMLFAC 40 线性测量的比例因子
$DIMLIM 70 非零时生成的标注界限
$DIMLUNIT 70 为所有标注类型(除角度标注外)设置单位:
页码,2/8HEADER 段组码 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
1 = 科学;2 = 小数;3 = 工程;
4 = 建筑;5 = 分数;6 = Windows 桌面
$DIMLWD 70 尺寸线线宽:
-3 = 标准
-2 = 随层
-1 = 随块
0-211 = 表示百分之几毫米的整数
$DIMLWE 70 尺寸界线线宽:
-3 = 标准
-2 = 随层
-1 = 随块
0-211 = 表示百分之几毫米的整数
$DIMPOST 1 基本标注后缀
$DIMRND 40 标注距离的舍入值
$DIMSAH 70 非零时使用单独的箭头块
$DIMSCALE 40 全局标注比例因子
$DIMSD1 70 收缩第一条尺寸界线:
0 = 不收缩;1 = 收缩
$DIMSD2 70 收缩第一条尺寸界线:
0 = 不收缩;1 = 收缩
$DIMSE1 70 非零时收缩第一条尺寸界线
$DIMSE2 70 非零时收缩第二条尺寸界线
$DIMSHO 70 1 = 拖动时重计算标注
0 = 拖动原始图像
$DIMSOXD 70 非零时收缩位于尺寸界限之外的尺寸线
$DIMSTYLE 2 标注样式名
$DIMTAD 70 非零时文字在尺寸线上方
$DIMTDEC 70 显示公差值的小数位数
$DIMTFAC 40 标注公差显示比例因子
$DIMTIH 70 非零时将文字水平放在内侧
$DIMTIX 70 非零时将文字强制放在尺寸界线的内侧
$DIMTM 40 下偏差
$DIMTMOVE 70 标注文字移动规则:
0 = 尺寸线和标注文字一起移动
1 = 移动标注文字时添加引线
2 = 允许标注文字自由移动而不添加引线
$DIMTOFL 70 如果文字放在尺寸界线的外侧,非零时则强制在尺寸界线之间画直线
$DIMTOH 70 非零时将文字水平放在外侧
$DIMTOL 70 非零时生成标注公差
$DIMTOLJ 70 公差值的垂直对正:
0 = 顶端对正;1 = 居中对正;2 = 底端对正
$DIMTP 40 上偏差
$DIMTSZ 40 标注标记大小:
0 = 无标记
$DIMTVP 40 文字垂直位置
$DIMTXSTY 7 标注文字样式
$DIMTXT 40 标注文字高度
$DIMTZIN 70 控制是否对公差值做消零处理:
0 = 消除零英尺和零英寸
1 = 包含零英尺和零英寸
2 = 包含零英尺,消除零英寸
3 = 包含零英寸,消除零英尺
$DIMUPT 70 用户定位文字的光标功能:
0 = 仅控制尺寸线的位置
1 = 控制文字位置和尺寸线位置
$DIMZIN 70 控制是否对主单位值做消零处理:
0 = 消除零英尺和零英寸
1 = 包含零英尺和零英寸
页码,3/8HEADER 段组码 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
2 = 包含零英尺,消除零英寸
3 = 包含零英寸,消除零英尺
$DISPSILH 70 控制“线框”模式下体对象轮廓曲线的显示:
0 = 关;1 = 开
$DWGCODEPAGE 3 图形代码页;创建新图形时被设置为系统代码页,但不再由 AutoCAD 维护
$ELEVATION 40 由 ELEV 命令设置的当前标高
$ENDCAPS 280 新对象的线宽封口设置:
0 = 无;1 = 圆形;2 = 角度;3 = 方形
$EXTMAX 10,
20,
30
X、Y 和 Z 图形范围右上角(在 WCS 中)
$EXTMIN 10,
20,
30
X、Y 和 Z 图形范围左下角(在 WCS 中)
$EXTNAMES 290 控制符号表命名:
0 = R14 兼容。名称最多可以包含 31 个字符。名称中可以包括字母 A 到 Z,数字 0
到 9,以及特殊字符美元符号 ($)、下划线 (_) 和连字符 (-)。
1 = AutoCAD 2000。名称中最多可以包含 255 个字符,包括字母 A 到 Z,数字 0 到
9,空格以及任何未被 Microsoft Windows 和 AutoCAD 用于其他目的的特殊字符。
$FILLETRAD 40 圆角半径
$FILLMODE 70 非零时启用填充模式
$FINGERPRINTGUID 2 在创建时设置,用于唯一标识特定图形
$HALOGAP 280 指定在某一对象被另一对象隐藏处显示的间距;该值被指定为一种单位的百分数,并
且不受缩放级别的影响。使用 HIDE 或 SHADEMODE 的 Hidden 选项时,在晕圈行的隐
藏点处缩短晕圈行
$HANDSEED 5 下一个可用的句柄
$HIDETEXT 290 指定 HIDETEXT 系统变量:
0 = 在生成隐藏视图时 HIDE 忽略文字对象
1 = HIDE 不忽略文字对象
$HYPERLINKBASE 1 图形中所有相对超链接的路径。如果为空,则使用图形路径
$INDEXCTL 280 控制是否创建图层和空间索引并保存到图形文件中:
0 = 不创建索引
1 = 创建图层索引
2 = 创建空间索引
3 = 创建图层和空间索引
$INSBASE 10,
20,
30
由 BASE 命令设置的插入基点(在 WCS 中)
$INSUNITS 70 用于 AutoCAD
中心块的默认图形单位:
0 = 无单位;1 = 英寸;2 = 英尺;3 = 英里;4 = 毫米;
5 = 厘米;6 = 米;7 = 千米;8 = 微英寸;
9 = 密耳;10 = 码;11 = 埃;12 = 纳米;
13 = 微米;14 = 分米;15 = 十米;
16 = 百米;17 = 百万公里;18 = 天文单位;
19 = 光年;20 = 秒差距
$INTERSECTIONCOLOR 70 指定相交多段线的图元颜色:
1 到 255 的值可以指定 AutoCAD 颜色索引 (ACI)
0 = 颜色“随块”
256 = 颜色“随层”
257 = 颜色“随图元”
$INTERSECTIONDISPLAY 290 指定相交多段线的显示:
0 = 关闭相交多段线的显示
1 = 打开相交多段线的显示
$JOINSTYLE 280 新对象的线宽接头设置:
0 = 无;1= 圆形;2 = 角度;3 = 平面
$LIMCHECK 70 如果打开了界限检查则为非零值
$LIMMAX 10,
20
XY 图形界限右上角(在 WCS 中)
$LIMMIN 10,
20
XY 图形界限左下角(在 WCS 中)
$LTSCALE 40 全局线型比例
页码,4/8HEADER 段组码 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
$LUNITS 70 坐标和距离的单位格式
$LUPREC 70 坐标和距离的单位精度
$LWDISPLAY 290 控制“模型”选项卡或“布局”选项卡中线宽的显示:
0 = 不显示线宽
1 = 显示线宽
$MAXACTVP 70 设置要重生成的视口的最大数目
$MEASUREMENT 70 设置图形单位:0 = 英制;1 = 公制
$MENU 1 菜单文件名
$MIRRTEXT 70 非零时镜像文字
$OBSCOLOR 70 指定暗显直线的颜色。暗显直线是通过更改颜色和线型使其可见的隐藏线,并且仅在
使用 HIDE 或 SHADEMODE 命令时才可见。只有将 OBSCUREDLTYPE 设置为非 0 值将其
打开时,OBSCUREDCOLOR 设置才可见。
0 和 256 = 图元颜色
1-255 = AutoCAD 颜色索引 (ACI)
$OBSLTYPE 280 指定暗显直线的线型。与常规的 AutoCAD 线型不同,暗显直线的线型不受缩放级别影
响。默认值,即 0 值,将关闭暗显直线的显示。线型值定义如下:
0 = 关
1 = 实线
2 = 虚线
3 = 点
4 = 短划
5 = 中划
6 = 长划
7 = 双短划
8 = 双中划
9 = 双长划
10 = 中长划
11 = 疏点
$ORTHOMODE 70 非零时启用正交模式
$PDMODE 70 点显示模式
$PDSIZE 40 点显示尺寸
$PELEVATION 40 当前图纸空间标高
$PEXTMAX 10,
20,
30
图纸空间的 X、Y 和 Z 的最大范围
$PEXTMIN 10,
20,
30
图纸空间的 X、Y 和 Z 的最小范围
$PINSBASE 10,
20,
30
图纸空间插入基点
$PLIMCHECK 70 非零时图纸空间中的界限检查
$PLIMMAX 10,
20
图纸空间中 X 和 Y 的最大界限
$PLIMMIN 10,
20
图纸空间中 X 和 Y 的最小界限
$PLINEGEN 70 控制是否围绕二维多段线的顶点生成线型图案:
1 = 围绕多段线顶点生成连续的线型图案
0 = 多段线的每一段都以虚线开始和结束
$PLINEWID 40 默认的多段线宽度
$PROJECTNAME 1 为当前图形指定工程名称。在原始路径中没有找到外部参照或图像时使用。此工程名
称指向注册表中的一段,其中包含每个已定义工程名称的一个或多个搜索路径。工程
名称及其搜索路径可以在“选项”对话框的“文件”选项卡中设置
$PROXYGRAPHICS 70 控制代理对象图像的保存
$PSLTSCALE 70 控制图纸空间的线型比例:
1 = 无特殊线型比例
0 = 视口比例缩放决定线型比例缩放
$PSTYLEMODE 290 指示当前图形处于“颜色相关打印样式”还是“命名打印样式”模式:
0 = 使用当前图形中的命名打印样式表
1 = 使用当前图形中的颜色相关打印样式表
$PSVPSCALE 40 新视口的视图比例因子:
页码,5/8HEADER 段组码 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
0 = 按图纸空间缩放
>0 = 比例因子(正实数值)
$PUCSBASE 2 定义正交 UCS 设置(仅用于图纸空间)的原点和方向的 UCS 名称。
$PUCSNAME 2 当前图纸空间 UCS 名称
$PUCSORG 10,
20,
30
当前图纸空间 UCS 原点
$PUCSORGBACK 10,
20,
30
将 PUCSBASE 设置为 WORLD 并将图纸空间 UCS 改为 BACK 后成为新的 UCS 原点的点
$PUCSORGBOTTOM 10,
20,
30
将 PUCSBASE 设置为 WORLD 并将图纸空间 UCS 改为 BOTTOM 后成为新的 UCS 原点的
点
$PUCSORGFRONT 10,
20,
30
将 PUCSBASE 设置为 WORLD 并将图纸空间 UCS 改为 FRONT 后成为新的 UCS 原点的
点
$PUCSORGLEFT 10,
20,
30
将 PUCSBASE 设置为 WORLD 并将图纸空间 UCS 改为 LEFT 后成为新的 UCS 原点的点
$PUCSORGRIGHT 10,
20,
30
将 PUCSBASE 设置为 WORLD 并将图纸空间 UCS 改为 RIGHT 后成为新的 UCS 原点的
点
$PUCSORGTOP 10,
20,
30
将 PUCSBASE 设置为 WORLD 并将图纸空间 UCS 改为 TOP 后成为新的 UCS 原点的点
$PUCSORTHOREF 2 如果图纸空间 UCS 为正交(PUCSORTHOVIEW 不等于 0),该名称即为与正交 UCS 相
关的 UCS 的名称。如果为空,则 UCS 与 WORLD 相关
$PUCSORTHOVIEW 70 图纸空间 UCS 的正交视图类型:
0 = UCS 为非正交视图;
1 = 俯视图;2 = 仰视图;
3 = 主视图;4 = 后视图;
5 = 左视图;6 = 右视图
$PUCSXDIR 10,
20,
30
当前图纸空间 UCS X 轴
$PUCSYDIR 10,
20,
30
当前图纸空间 UCS Y 轴
$QTEXTMODE 70 非零时启用“快速文字”模式
$REGENMODE 70 非零时启用 REGENAUTO 模式
$SHADEDGE 70 0 = 表面着色,边不亮显
1 = 表面着色,边亮显为黑色
2 = 表面不填充,边以图元的颜色绘制
3 = 表面为图元颜色,边为黑色
$SHADEDIF 70 以百分比表示的环境/漫射光;范围从 1 到 100;默认值为 70
$SKETCHINC 40 徒手画记录增量
$SKPOLY 70 0 = 徒手画直线;1 = 徒手画多段线
$SORTENTS 280 控制对象的排序方式;可从通过“选项”对话框的“用户系统配置”选项卡访问。
SORTENTS 使用以下位码:
0 = 禁用 SORTENTS
1 = 为选择的对象排序
2 = 为捕捉的对象排序
4 = 为重画的图形排序
8 = 为 MSLIDE 命令创建的幻灯片排序
16 = 为 REGEN 命令排序
32 = 为打印的对象排序
64 = 为 PostScript 输出的对象排序
$SPLFRAME 70 样条曲线控制多边形显示:1 = 开;0 = 关
$SPLINESEGS 70 每个样条曲线曲面的直线段数目
$SPLINETYPE 70 PEDIT 样条曲线的样条曲线类型
$SURFTAB1 70 在第一个方向上的网格平移数目
页码,6/8HEADER 段组码 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
$SURFTAB2 70 在第二个方向上的网格平移数目
$SURFTYPE 70 PEDIT 平滑的曲面类型
$SURFU 70 在 M 方向上的曲面密度(用于 PEDIT 平滑)
$SURFV 70 在 N 方向上的曲面密度(用于 PEDIT 平滑)
$TDCREATE 40 创建图形的本地日期/时间(参见“日期/时间变量的特殊处理”)
$TDINDWG 40 此图形的累计编辑时间(参见“日期/时间变量的特殊处理”)
$TDUCREATE 40 创建图形的通用日期/时间(参见“日期/时间变量的特殊处理”)
$TDUPDATE 40 上次更新图形的本地日期/时间(参见“日期/时间变量的特殊处理”)
$TDUSRTIMER 40 用户消耗时间计时器
$TDUUPDATE 40 上次更新/保存图形的通用日期/时间(参见“日期/时间变量的特殊处理”)
$TEXTSIZE 40 默认文字高度
$TEXTSTYLE 7 当前文字样式名
$THICKNESS 40 由 ELEV 命令设置的当前厚度
$TILEMODE 70 1 表示以前版本的兼容模式;0 表示其他模式
$TRACEWID 40 默认宽线宽度
$TREEDEPTH 70 指定空间索引的最大深度
$UCSBASE 2 定义正交 UCS 设置的原点和方向的 UCS 名称
$UCSNAME 2 当前 UCS 的名称
$UCSORG 10,
20,
30
当前 UCS 的原点(在 WCS 中)
$UCSORGBACK 10,
20,
30
将 UCSBASE 设置为 WORLD 并将模型空间 UCS 改为 BACK 后成为新的 UCS 原点的点
$UCSORGBOTTOM 10,
20,
30
将 UCSBASE 设置为 WORLD 并将模型空间 UCS 改为 BOTTOM 后成为新的 UCS 原点的
点
$UCSORGFRONT 10,
20,
30
将 UCSBASE 设置为 WORLD 并将模型空间 UCS 改为 FRONT 后成为新的 UCS 原点的点
$UCSORGLEFT 10,
20,
30
将 UCSBASE 设置为 WORLD 并将模型空间 UCS 改为 LEFT 后成为新的 UCS 原点的点
$UCSORGRIGHT 10,
20,
30
将 UCSBASE 设置为 WORLD 并将模型空间 UCS 改为 RIGHT 后成为新的 UCS 原点的点
$UCSORGTOP 10,
20,
30
将 UCSBASE 设置为 WORLD 并将模型空间 UCS 改为 TOP 后成为新的 UCS 原点的点
$UCSORTHOREF 2 如果模型空间 UCS 为正交(UCSORTHOVIEW 不等于 0),该名称即为与正交 UCS 相关
的 UCS 的名称。如果为空,则 UCS 与 WORLD 相关
$UCSORTHOVIEW 70 模型空间 UCS 的正交视图类型:
0 = UCS 为非正交视图;
1 = 俯视图;2 = 仰视图;
3 = 主视图;4 = 后视图;
5 = 左视图;6 = 右视图
$UCSXDIR 10,
20,
30
当前 UCS X 轴的方向(在 WCS 中)
$UCSYDIR 10,
20,
30
当前 UCS Y 轴的方向(在 WCS 中)
$UNITMODE 70 设置的低位 = 按照输入的格式显示分数、英尺-英寸和勘测角度
$USERI1 - 5 70 供第三方开发商使用的五个整数变量
$USERR1 - 5 40 供第三方开发商使用的五个实数变量
$USRTIMER 70 0 = 关闭计时器;1 = 打开计时器
$VERSIONGUID 2 唯一标识图形的特定版本。修改图形时更新
页码,7/8HEADER 段组码 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
本节内容包括:
z 修订的 VPORT 标题变量
z 日期/时间变量的特殊处理
$VISRETAIN 70 0 = 不保留与外部参照相关的可见性设置
1 = 保留与外部参照相关的可见性设置
$WORLDVIEW 70 1 = 在 DVIEW/VPOINT 期间将 UCS 设置为 WCS
0 = 不更改 UCS
$XCLIPFRAME 290 控制外部参照剪裁边界的可见性:
0 = 剪裁边界不可见
1 = 剪裁边界可见
$XEDIT 290 控制当前图形被其他图形参照时是否可以在位编辑。
0 = 不能进行在位参照编辑
1 = 可以进行在位参照编辑
页码,8/8HEADER 段组码 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
应用程序可以使用 AutoLISP getvar 函数检索这些变量的值。
以下是 DXF™ 文件 HEADER 段的样例:
0
SECTION
2
HEADER
HEADER 段的开始
9
$<变量>
<组码>
<值>
每出现一个标题变量便重复一次
0
ENDSEC
HEADER 段的结尾
页码,1/1DXF 文件中的标题组码 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
以下是 DXF 文件 CLASSES 段的样例:
0
SECTION
2
CLASSES
CLASSES 段的开始
0
CLASS
1
<类 dxf 记录>
2
<类名>
3
<应用程序名>
90
<标志>
280
<标志>
281
<标志>
每出现一个条目便重复一次
0
ENDSEC
CLASSES 段的结尾
页码,1/1DXF 文件中的类组码 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
以下是 DXF 文件 TABLES 段的样例。
本节内容包括:
z 符号表样例
0
SECTION
2
TABLES
TABLES 段的开始
0
TABLE
2
<表类型>
5
<处理>
100
AcDbSymbolTable
70
<最大条目>
常用表组码;每出现一个条目便重复一次
0
<表类型>
5
<处理>
100
AcDbSymbolTableRecord
.
. <数据>
.
表条目数据;每出现一个表记录便重复一次
0
ENDTAB
表的结尾
0
ENDSEC
TABLES 段的结尾
页码,1/1DXF 文件中的符号表组码 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
以下是 DXF 文件 BLOCKS 段的样例:
0
SECTION
2
BLOCKS
BLOCKS 段的开始
0
BLOCK
5
<句柄>
100
AcDbEntity
8
<图层>
100
AcDbBlockBegin
2
<块名>
70
<标志>
10
20
30
3
<块名>
1
<外部参照路径>
开始每个块条目(块图元定义)
0
<图元类型>
.
. <数据>
.
块中的每个图元定义有一个条目
0
ENDBLK
5
<句柄>
100
AcDbBlockEnd
每个块条目的结尾(endblk 图元定义)
0
ENDSEC
BLOCKS 段的结尾
页码,1/1DXF 文件中的块组码 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
以下是 DXF 文件 ENTITIES 段的样例:
0
SECTION
2
ENTITIES
ENTITIES 段的开始
0
<图元类型>
5
<句柄>
330
<指向所有者的指针>
100
AcDbEntity
8
<图层>
100
AcDb<类名>
.
. <数据>
.
每个图元定义有一个条目
0
ENDSEC
ENTITIES 段的结尾
页码,1/1DXF 文件中的图元组码 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
以下是 DXF 文件 OBJECTS 段的样例:
0
SECTION
2
OBJECTS
OBJECTS 段的开始
0
DICTIONARY
5
<句柄>
100
AcDbDictionary
命名对象词典的开始(根词典对象)
3
<词典名>
350
<子对象句柄>
每出现一个条目便重复一次
0
<对象类型>
.
. <数据>
.
对象数据组
0
ENDSEC
OBJECTS 段的结尾
页码,1/1DXF 文件中的对象组码 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
以下是一个简单的 Visual Basic 程序样例,它读取 DXF 文件,并且从给定段的给定对象中提取特定代码和值。
' ReadDXF 从 DXF 文件中提取指定的代码/值对。
' 此函数需要四个字符串参数、一个有效的 DXF
' 文件名、一个 DXF 段名、该段中对象的
' 名称以及由逗号分隔的代码列表。
'
Function ReadDXF( _
ByVal dxfFile As String, ByVal strSection As String, _
ByVal strObject As String, ByVal strCodeList As String)
Dim tmpCode, lastObj As String
Open dxfFile For Input As #1
' 获取第一个代码/值对
codes = ReadCodes
' 遍历整个文件,直到“EOF”行
While codes(1) <> "EOF"
' 如果组码为“0”,并且值为“SECTION”,则
If codes(0) = "0" And codes(1) = "SECTION" Then
' 这必须是一个新的段,以便获取下一个
' 代码/值对。
codes = ReadCodes()
' 如果此段是要获取的段,则
If codes(1) = strSection Then
' 获取下一个代码/值对,并
codes = ReadCodes
' 遍历此段,直到“ENDSEC”
While codes(1) <> "ENDSEC"
' 在某一段中,所有的“0”代码都表示
' 对象。如果找到了“0”代码,则存储
' 对象名称,供以后使用。
If codes(0) = "0" Then lastObj = codes(1)
' 如果此对象是用户所需的对象,
If lastObj = strObject Then
' 则在代码前后加上逗号
tmpCode = "," & codes(0) & ","
' 如果此代码位于代码列表中,
If InStr(strCodeList, tmpCode) Then
' 则附加返回值。
ReadDXF = ReadDXF & _
codes(0) & "=" & codes(1) & vbCrLf
End If
End If
' 读取其他代码/值对
codes = ReadCodes
Wend
End If
Else
codes = ReadCodes
End If
Wend
Close #1
End Function
' ReadCodes 从打开的文件中读取两行,并返回一个包含两个项目
' 的数组、一个组码及其组码值。只要一次读取 DXF 文件中的两行代码,
' 所有程序应该都能够顺利运行。但为了使代码
' 更可靠,应该添加一些进行错误检查和其他
' 检查的代码。
'
页码,1/2读取 DXF 文件 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
Function ReadCodes() As Variant
Dim codeStr, valStr As String
Line Input #1, codeStr
Line Input #1, codeStr
' 修剪代码中的前导空格和后续空格
ReadCodes = Array(Trim(codeStr), valStr)
End Function
页码,2/2读取 DXF 文件 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
与编写读取 DXF 文件的程序相比,编写创建 DXF 文件的程序更困难一些,因为必须保持图形的一致性,这样
AutoCAD 才能找到可接受的文件。AutoCAD 允许省略 DXF 文件中的很多项目,且仍然能够获得可用的图形。
z 如果不设置标题变量,则可以省略整个 HEADER 段。
z 如果不需要创建条目,则可以省略 TABLES 段中的任何表;如果不需要 TABLES 段中的任何内容,则可以省略
整个 TABLES 段。
z 如果在 LTYPE 表中定义了线型,则此表必须显示在 LAYER 表之前。
z 如果图形中未使用任何块定义,则可以省略 BLOCKS 段。
z 如果 BLOCKS 段存在,则该段必须出现在 ENTITIES 段之前。
z 在 ENTITIES 段中,即使尚未在 LAYER 表中定义图层名,也可以对这些图层名进行参照。系统自动使用颜色
7 和 CONTINUOUS 线型创建此类图层。
z 文件结尾处必须存在 EOF 项目。
以下 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"
页码,1/2写入 DXF 文件 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
Print #1, 0
Print #1, "EOF"
Close #1
End Sub
只要在需要数据的行上写入了格式正确的项目,DXFIN 就会接受此项目。(当然,字符串项目不应该包含前导空格,
除非这些空格是字符串的一部分。)此 BASIC 程序利用了输入格式的灵活性,它生成的文件与 AutoCAD 生成的文件
并不完全相同。
如果在使用要加载的 DXFIN 时出现错误,AutoCAD 将通过一条消息报告错误,指明错误的性质和检测到错误之前在
DXF 文件中处理的最后一行数据。错误可能并不出现在这一行,尤其是当出现省略所需组这样的错误时更是如此。
页码,2/2写入 DXF 文件 [DXF 参考:DXF]
2009-6-22mk:@MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad_dev.chm::...
下表列出了 DXF™ 文件的 HEADER 段中出现的变量。关于此表中使用的缩写和格式方面的信息,请参见“本参考的
格式惯例”。
DXF 标题变量
变量 组码 说明
$ACADMAINTVER 70 维护版本号(应忽略)
$ACADVER 1 AutoCAD® 图形数据库版本号:
AC1006 = R10;AC1009 = R11 和 R12;
AC1012 = R13;AC1014 = R14;AC1015 = AutoCAD 2000;
AC1018 = AutoCAD 2004
$ANGBASE 50 0 角度方向