1.引言

CAD是工程中常见的画图软件,dxf是CAD中经常用到的文件,在工作中有用到对dxf文件进行解析的情况。这篇文章将说明如何用代码将dxf文件中的信息解析出来。

2.dxf文件(可以了解一下)

DXF是一种开放的矢量数据格式,可以分为两类:ASCII格式和二进制格式;ASCII具有可读性好的特点,但占用的空间较大;二进制格式则占用的空间小、读取速度快。

DXF文件是由很多的"代码"和"值"组成的"数据对"构造而成,这里的代码称为"组码"(group code),指定其后的值的类型和用途。每个组码和值必须为单独的一行的。

DXF文件是由很多的"代码"和"值"组成的"数据对"构造而成,这里的代码称为"组码"(group code),指定其后的值的类型和用途。每个组码和值必须为单独的一行的。

DXF 文件的基本组成如下所示:

●HEADER 部分 - 图的总体信息。每个参数都有一个变量名和相应的值。

●CLASSES 部分 - 包括应用程序定义的类的信息,这些实例将显示在 BLOCKS、ENTITIES 以及

●OBJECTS 部分-通常不包括用于充分用于与其它应用程序交互的信息。

●TABLES 部分 - 这部分包括命名条目的定义。

Application ID (APPID) 表

Block Recod (BLOCK_RECORD) 表

Dimension Style (DIMSTYPE) 表

Layer (LAYER) 表

Linetype (LTYPE) 表

Text style (STYLE) 表

User Coordinate System (UCS) 表

View (VIEW)表

Viewport configuration (VPORT) 表

●BLOCKS 部分- 这部分包括 Block Definition 实体用于定义每个 Block 的组成。

●ENTITIES 部分 - 这部分是绘图实体,包括 Block References 在内。

●OBJECTS 部分 -- 包括非图形对象的数据,供 AutoLISP 以及 ObjectARX应用程序所使用。

●THUMBNAILIMAGE 部分 -- 包括 DXF 文件的预览图。

●END OF FILE

3.开始进入解析(先从文件的ASCII码中的组码解析)

      需要准备dxf的解析库dxflib,链接如下:

https://download.csdn.net/download/weixin_40196271/12471365

      以及在CAD中安装好帮助文件。可以去官网进行下载,需要安装在CAD中

https://knowledge.autodesk.com/zh-hans/support/autocad/learn-explore/caas/downloads/downloads/CHS/content/download-install-autocad-2021-product-help.html

也可以用下面的链接进行下载,直接的帮助文档

https://download.csdn.net/download/weixin_40196271/12471381

一般我们需要解析的部分会有两个,一个是dxf中的层的信息,一个是具体的图中的线,圆,圆弧,多段线等信息。

先来解析层。

(1)层的解析

层信息可以通过TABLES部分来进行解析。以下是帮助文档中对layer做的说明,打开dxf文件,查找到TABLES中layer的部分,可以对照找到相关的层的信息。

dxflib中也是通过组码的信息来解析具体信息的。通常层信息比较有用的是图层名的信息。

(2)线的解析

线的信息可以通过ENTITIES部分来进行解析。以下是帮助文档中对line的说明。

其中10,20,30后面对应的数字为起点的x,y,z左边,11,21,31后面对应的数字为终点的x,y,z坐标。

(3)圆的解析

圆的信息可以通过ENTITIES部分来进行解析。以下是帮助文档中对circle的说明。

其中10,20,30为x,y,z对应的圆心坐标,40为圆的半径。

(4)圆弧的解析

圆弧的信息可以通过ENTITIES部分来进行解析。以下是帮助文档中对arc的说明。

其中,10,20,30为x,y,z的圆心坐标,40为圆的半径,50为圆的起点角度(弧度制),51为圆的终点角度(角度制)

(5)多段线的解析

多段线的信息可以通过ENTITIES部分来进行解析。多段线是由多个角点连接起来的。一般我们解析LWPOLYLINE,POLYLINE属于旧版本了,不过有的时候也会出现。以下是帮助文档中对lwpolyline的说明:

其中,90为多段线中角点的个数,10,20为多段线中的角点的x,y坐标,42为角点的凸度,为角点对应的圆弧的圆心角的四分之一的正切(这么说有点复杂,后面会具体讲到)。一般我们会把角点信息进一步解析出来,变成线和圆的信息。

(6)椭圆的解析

椭圆的信息可以通过ENTITIES部分来进行解析。以下是帮助文档中对ellipse的说明。

其中,10,20,30为椭圆圆心的x,y,z坐标。11,21,31为相对于中心的长轴端点的x,y,z坐标,40为短轴与长轴的比例,可以用来计算长短轴半径。41,42为起始和终止角度(弧度制)。

4.未完待续

由于内容较多,具体的用dxflib中的解析见下一篇

CAD中的dxf文件解析(一):准备工作相关推荐

  1. CAD中的dxf文件解析(二):dxflib的使用

    1.前言 上一篇中对dxf文件及文件中常见的需要解析的直线,圆,圆弧,椭圆,多段线的说明,对dxf文件有了初步的了解,并做好了下载dxflib,dxf帮助文档的准备(没有准备的可以回到上一篇). CA ...

  2. CAD中的dxf文件解析(三):多段线篇

    1.前言 在前面的CAD中的dxf文件解析(二)中讲到了一些CAD的dxf文件解析点.线.圆弧.圆.块等的思路.下面提供链接: (二): CAD中的dxf文件解析(二):dxflib的使用_不爱学习 ...

  3. vb如何实现在cad中打开dxf文件_CDR转CAD方法

    在CDR文档中又是如何将文档转换为CAD格式的呢?其实只要简单几步就能搞定,下面系统天地小编就来给大家分享cdr(CorelDRAW)文档转换为CAD格式的方法,供大家参考. cdr文档转换为CAD格 ...

  4. python读取dxf文件_GitHub - XUIgit/dxfReader: dxf文件解析 用来提取CAD中的dxf文件格式所保存的图像信息...

    dxfReader 介绍 用来解析,提取CAD中的dxf文件格式所保存的图像信息 环境 python36(在python35中会失效, 其他环境未测试) 软件架构 主要采用简单工厂模式: Sectio ...

  5. asp.net中各种类型文件解析 收藏

    asp.net中各种类型文件解析 收藏 ASP.NET的页面文件是*.aspx,每个页面对应一个*.resx资源文件和一个*.aspx.cs的代码文件. *.resx是资源文件.每个页面都有一个资源文 ...

  6. dxf文件解析,g代码解析,图片解析C#工程文件

    dxf文件解析,g代码解析,图片解析C#工程文件 1.解析完成的图形坐标自动保存,通过通信接口直接下发即可 2.可用于激光切割机,打印机,打码机,巡边机,点胶机等运动控制系统 ID:693000659 ...

  7. dxf文件解析,g代码解析,图片解析C#工程文件 可用于激光切割机,打印机,打码机,巡边机,点胶机等运动控制系统

    dxf文件解析,g代码解析,图片解析C#工程文件 1.解析完成的图形坐标自动保存,通过通信接口直接下发即可 2.可用于激光切割机,打印机,打码机,巡边机,点胶机等运动控制系统 ID:483000659 ...

  8. 关于PADS 9.5导入CAD图(dxf文件)的说明

    关于PADS 9.5导入dxf文件的说明 一.前言 在使用PADS layout画PCB时,需要将公司LOGO图案放到PCB面板上,但是PADS不支持直接将图片格式(jpg,png,bmp等)的文件导 ...

  9. 汽车车牌识别系统(六)-- 项目中的各个文件解析

    汽车车牌识别系统上传至CSDN之后,好多小伙伴都对项目中的各个文件存在疑问,该篇文章主要是为了解析项目中的各个文件.如果对项目中的各个文件已经很熟悉的小伙伴,请自觉略过. - LPR:项目名称- ch ...

  10. .dat数据文件怎么打开_CAXA线切割版,打开CAD的DWG, DXF文件的终极绝招

    经常会有朋友会问到这个问题,今天来解答一下,希望对大家有帮助.老鸟可以绕道,喜欢喷的请口下留情,谢谢! 年后东莞大朗一线切割操作师傅在微信上说,对我们这个机床文件无线传输装置很感兴趣,想了过来了解一下 ...

最新文章

  1. pytorch使用gpu就是这么简单
  2. Spring开发环境搭建和第一个示例程序
  3. linux下tmpfs文件系统简介
  4. Promise源码实现
  5. dns提供商主机名_DNS域名解析的过程
  6. EOJ 262 润清的烦恼
  7. 位移密码 nyist768
  8. 地图导航定位二维码如何制作呢?
  9. 脸上为什么长痘及处理方式
  10. LaTeX 插入章节和目录
  11. 总结整理Echarts双y轴曲线图(全)
  12. java 地图模式_MapL 实现了百度地图定位以及感应方向和各种模式切换的 Demo Java Develop 238万源代码下载- www.pudn.com...
  13. 解决nrm ls命令没有*(星号)的问题
  14. 从基础到进阶,一文详解RocketMQ事务消息,看完不会跪键盘
  15. 武汉地图json文件_echarts各省市地图js和json文件
  16. 一种人吃蜂蜜火上浇油
  17. 有趣且重要的css知识合集(1)纯css实现div左右拖拽效果
  18. 【软件工程师学硬件】之 开发板
  19. K12市场乱象丛生,焦虑背后资本如何起死回生?
  20. “遗憾中国”7大IT名人

热门文章

  1. uc云观媒体服务平台_自媒体平台UC云观开放收益功能,自媒体作者有收入了
  2. 上计算机课睡觉检讨书400,课堂睡觉200字检讨书
  3. 网页版网络聊天室设计与实现(Java+SSH+MySQL)
  4. 如何从linux下载超过4G的文件到windows
  5. Docker 配置加速器
  6. 搭建自己的网站(服务器羊毛篇)
  7. Win7升级Win10系统提示错误0x80070057的解决方法
  8. 软件工程师待遇怎么样?软件工程师薪水到底有多高?
  9. 等保三全面安全检查表_全面的安全方法
  10. vscode英文界面转换为中文界面