图形学论文DXF接口方法研究与实现_第1页
图形学论文DXF接口方法研究与实现_第2页
图形学论文DXF接口方法研究与实现_第3页
图形学论文DXF接口方法研究与实现_第4页
图形学论文DXF接口方法研究与实现_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DXF 接口方法研究与实现接口方法研究与实现 摘要 AutoCAD 的 DXF 文件数据格式由标题 HEADER 段 类 CLASSES 段 符号表 TABLES 段 块 BLOCKS 段 图元 ENTITIES 段 对象 OBJECTS 段 文件的结束符号 7 大段组成 用 Visualc 读取 DXF 文件 实现 DXF 文件的外部接口 在 AutoCAD 与 自行开发软件之间建立数据通道 实现数据传递 和共享 关键词 DXF 文件 Visualc 接口程序 引言 DXF DrawingExchangeFile 文件是 Autodesk 公司推出的与外部 CAD CAM 进行图形信息交 换的一个接 口 是图形信息交换的文件格式 可以是 ASCII 码格式或二进制格式 由于 ASCII 码 DXF 文件易于被其它程序处理 通常情况下的 DXF 文件指 ASCII 格式文件 主要用于实现高级语言编写的程 序与 AutoCAD 系统的连接 对 DXF 接口方法行研究 用 VC 设计了接口程序 1 1 DXF 文件的一般结构 DXF Drawing eXchang File 文件的最小组成单位是组 GROUP 一个 DXF 文件由多个组组成 每 个组在 DXF 文件中占两行 第一行是组码 GROUP CODE 它是一个整数 第二行是组值 GROUP VALUE 它的数据类型取决于组码的数值 DXF 文件的组码分成很多类 每类组码具有确定的用途 并 确定其相应的组值的类型 DXF 文件分成多个节 SECTION 每个节均由多个组 GROUP 组成 每个节均由一个组值为字 符串 SECTION 的 0 组开始 后跟组值为表示节名的字符串的 2 组 其后为组成该节的各个组 最后以组 值为字符串 ENDSEC 的 0 组表示该节结束 所有节结束后 在 DXF 文件的最后是组值为字符串 EOF End Of File 的组作为文件结束标志 典型的 DXF 文件由下面几个节组成 1 标题节 HEADER 标题节记录了图形的一般信息 它包括 AutoCAD 图形数据库的版本号以及大量的系统变量 每个参数都 有一个表示变量名字符串的 9 组和若干个变量值的组 2 类节 CLASSES 类节保存由应用程序定义的类 而该类的实例则出现在块节 BLOCKS 实体节 ENTITIES 和对象节 OBJECTS 中 3 表节 TABLES 表节按顺序包含表 1 1 所述的 9 个符号表信息 序 号表 名说 明 1APPID应用程序标识符表 2BLOCK RECORD块应用描述表 3DIMSTYLE尺寸标注格式描述表 4LAYER层描述表 5LTYER线型定义表 6STYLE文本格式表 7UCS用户坐标系统表 8VIEW视图表 9VPORT视口配置表 表 1 1 4 块节 BLOCKS 2 块节描述图形中所包含的块的定义 包括块中的实体 5 实体节 ENTITIES 实体节描述构成图形的所有图形实体和块引用 但不包括块内的实体 6 对象节 OBJECTS 对象节包含图形数据库中所有非图形实体的定义数据 所有那些既不是实体 也不是块表记录 又不是符 号表的实体出现在该节中 7 文件结束 END OF FILE 1 2 DXF 文件组成代码 在 DXF 文件中 组值的数据类型取决于代码的数值 表 1 2 是常用的组代码范围 组代码即可表示 组值类型 又可表示组的一般用途 组代码特定功能取决于它描述的是变量 表项还是实体 表 1 3 是一 些在后续编写子程序时常用到的组代码的功能 其中注明 固定 字样的组代码只有一种功能 表 1 2 组代码范围 组代码数值范围组值类型 0 9 10 59 60 79 字符串 浮点 整型数 表 1 2 AutoCAD 部分实体组代码 组代码值类型 0 标识实体 表项或文件分隔符 其后的组值指明所标识的内 容 1实体的初始文本值 2名称 属性标志 块名等 3 4其它文本或名称值 5实体名字表示成十六进制 6线型名 固定 7字体式样名 固定 8图层名 固定 9标识变量名 仅在 DXF 文件的标题节中使用 10 初始 X 坐标 直线起点 文本实体的起点 一个圆的中心等 等 11 18其它的 X 坐标 20 初始 Y 坐标 2n 值总是对应于 1n 值 并在文件中直接跟在 它们的后面 21 28其它 Y 坐标 30 初始 Z 坐标 3n 值总是对应于 1n 和 2n 值 并在文件中直接 跟在它们后面 31 37其它 Z 坐标 40 48浮点数的值 字符高度 比例因子等 49 重复的值 数个 49 组可以出现在一个实体中供变量长度表用 例如在线型表中定义线的各短划线长度 50 58角度 62颜色号 表 1 2 1 3 DXF 文件接口子模块的建立 3 AutoCAD 系统的命令虽不能由高级语言 本文用 Fortran 或 C 来调用 但却可以通过建立 DXF 接口子 程序来调用 接口程序的作用就是将高级语言与 AutoCAD 系统绘图命令联系起来 以便利用高级语言提 供的数据生成能输入给 AutoCAD 的 DXF 文件 如前所述 DXF 文件包括七部分 要编写一个构造完整的 DXF 文件的高级语言程序是很困难的且几乎 不可能 因为必须保持其前后的一致性 以便让 AutoCAD 能找到其所需的一切信息 而在设计图中 仅 需画出图形 标注尺寸 写出必要的说明 所以可省略标题节 类节 表节 块节及对象节 而只要实体 节和文件结尾 就可以正常输入 AutoCAD 生成可用的图形 为了用高级语言边写绘图程序 必须先建 立各种实体的接口子程序 在 AutoCAD 中的实体即用 Line Circle Arc Solid Text 等命令生成的图形或文本 一 实体节的组成 DXF 文件的实体节的构成如下 0 SECTION 实体节开始 2 ENTITTIES 绘图图素 实体的描述 0 ENDSEC 实体节结束 实体节中可包含多个实体 每个实体以组码为 0 其值为实体名的组开始 实体描述没有明显的结束标 志 到下一个实体开始 即意味着本实体的结束 每个实体中除了表示实体所驻留的层名组 8 及其值是必 须的外 其它有关实体的标高 Elevation 厚度 Thickness 线型 Linetype 和颜色 Color 的组 分别由组码 38 39 6 和 62 表示 除非需特殊指定 均可用系统缺省值 0 0 0 0 Byblock 和 Bylayer 当采用系统缺省值时 其相应的组可不出现在该实体的描述中 以上省缺的线型和颜色可在进入 Auto CAD 后 在 Layer 一项中很方便地设置所需线型和颜色 由于本章 主要讨论工程图的绘制 是平面 即二维 问题 所以标高和厚度不作考虑 二 接口 的建立 基于上述 DXF 文件实体节的结构特点 组成格式及编码 本节建立直线 圆 圆弧 文本 圆环等的 接口子程序 为便于设计和调试接口程序 根据 DXF 文件中实体节的特点 接口程序设计成相对独立模块 这些模 块相当于子程序 在主程序中调用它们 下面是一些子程序及变量说明 1 实体节开始 SUBROUTINE Hsec WRITE 22 100 100 FORMAT 0 SECTION 2 ENTITES RETURN END 2 Line 直线 实例 画一条从 3 5 3 8 到 5 0 5 8 的直线 且将此直线段设置在 A1 层上 其 DXF 文件的实体节 如下 0 画线 实体开始 LINE 直线 实体名 8 层组代码 A1 层名 4 10 起点 x 坐标组代码 3 5 x 坐标 20 起点 y 坐标组代码 3 8 y 坐标 11 终点 x 坐标组代码 5 0 x 坐标 21 终点 y 坐标组代码 5 8 y 坐标 由上例 DXF 文件的格式 可建立如下的直线接口子程序 SUBROUTINE LIN x1 y1 x2 y2 LS 此画线子程序可在主程序中被调用 在 DXF 文件中生成相应的实体节 其调用格式如下 CALL LINE 3 0 4 5 0 5 5 3 LS1 后续其它子程序的调用方法类同 说明 l x1 y1 直线的起点坐标 实型数 l x2 y2 直线的终点坐标 实型数 l LS 直线所在层的层名 字符型 3 ARC 圆弧 圆弧的 DXF 文件的组代码含义如下 10 20 和 30 组给出圆心坐标 40 组给出半径 50 组给出弧的起始角 51 组给出弧的终止角 画圆弧的接口子程序如下 SUBROUTTTINE ARC xo yo R ANGO ANGI LS 哑元说明 l xo yo 圆心坐标 实型数 l R 圆弧坐标 实型数 l ANGO 圆弧起始角 实型数 l ANGI 圆弧终止角 实型数 l LS 圆弧所在层的层名 字符型 注 角度按逆时针方向旋转取值 4 CIRCLE 圆 圆的组代码含义 10 20 和 30 给出圆心坐标 40 组给出圆半径 画圆子程序如下 SUBROUTINE CIRCLE xo yo R LS 哑元说明 l Xo yo 圆心坐标 实型数 l R 圆半径 实型数 l LS 圆所在层的层名 字符型 5 SOLID 区域填充 组码分别用 10 20 和 30 11 21 和 31 12 22 和 32 13 23 和 33 给出 4 个角点的坐标 SUBROUTINE SOLID x1 y1 x2 y2 x3 y3 x4 y4 LS x1 y1 x2 y2 x3 y3 x4 y4 分别为填充区域 4 个角点的坐标 根据需要调整坐标顺序 可填充三 角形区和四边形区域 LS 含义同前 6 DTEXTI WTEXTI 文本 组代码含义如下 10 20 和 30 组给出插入点坐标 40 组给出字符高度 1 组给出字符串 50 组给出旋转角 任选 0 41 组给出 X 比例因子 任选 1 7 组给出文本字体名 任选 STANDARD 51 组给出倾斜角 71 组给 出文字生成标志 72 组给出对齐方式 11 21 和 31 组给出对齐坐标点 任选 仅当 72 或 73 组的值非零 时使用 子程序根据所书写文本的类型不同可编写两个子程序 5 书写数字文本子程序 SUBROUTINE DTEXTI x y LS ZH TX1 ROTATE 书写字符文本子程序 SUBROUTINE WTEXI x y LS ZH TX2 ROTATE 以上两个子程序的功用如下 DTEXTI 用于标注尺寸数字 编号等 WTEXTI 用于书写字母如 A B C 以及钢筋直径 等字符 哑元说明 l x y 文本书写位置 用于对齐方式 实型 l ZH 所书写文本的高度 实型 l TXI 数字文本 一般为整型 也 可为实型 l TX2 字符文本 字符型 l ROTATE 文本旋转角度 整型 7 DONUT 圆环 填充状态打开 组代码同圆的组代码 子程序如下 SUBROUTINE DONUT x y R1 R2 LS 该子程序的功能 画填充圆或圆环 当圆环内径为零时 为实心填充圆 哑元说明 l x y 圆环圆心坐标 实型 l R1 R2 分别为内圆及外圆半径 实型 l LS 同前 1 4 用 C 语言生成 DXF 文件 一 主程序内容 有了以上的接口子程序后 就可以用 C 语言直接编写绘图程序 来生成 DXF 文件 此 DXF 文件即可在 Auto CAD 状态下直接调用 生成所设计的图形 并且在 Auto CAD 状态可进行各种编辑 修改操作 主程序一般应包括以下几个方面的内容 1 变量定义 应与子程序中的变量类型相一致 2 输入所要生成的 DXF 文件名 或预定义此文件后 打开此文件并将其作为新文件 如果文件存在 则更新其内容 3 按提示输入或采用规定格式的文件输入所需参数 4 实体段开始 5 调用子程序绘制图形 6 写出实体结束标志 文件结尾和关闭这个 DXF 文件 二 程序举例 2 用 C 语言生成 DXF 文件 include stdio h include conio h FILE fp void hsec endsec void line void arc void text void begain 6 void wline void wcircle void end main char a 8 KEY40 clrscr fp fopen C stu key dxf w if fp NULL printf can t open n exit 1 hsec fp line fp 20 0 20 0 50 0 20 0 line fp 20 0 30 0 50 0 30 0 arc fp 20 0 25 0 5 0 90 0 270 0 arc fp 50 0 25 0 5 0 90 0 90 0 text fp 30 0 45 0 3 5 0 0 0 0 a endsec fp fclose fp 接口子程序 void hsec FILE fp fprintf fp 0 nSECTION n2 nENTITIES n n 为换行符 void line FILE fp double x1 double y1 double x2 double y2 fprintf fp 0 nline n8 nA n10 n A 为层名 fprintf fp 9 4f n x1 fprintf fp 20 n fprintf fp 9 4f n y1 fprintf fp 11 n fprintf fp 9 4f n x2 fprintf fp 21 n fprintf fp 9 4f n y2 void arc FILE fp double x double y double r double sang double eang fprintf fp 0 narc n8 nA n10 n A 为层名 fprintf fp 9 4f n x fprintf fp 20 n fprintf fp 9 4f n y fprintf fp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论