一、DXF 文件简介

1.人肉解析

观察几个具有代表性的 dxf 文件,点、文本、线。

使用文本工具直接打开 DXF 文件,可以看到很多字段,这里根据官方文档找规律,找到具有代表性的一些字段如下:


点的特点:

  • 都是 POINT 开头
  • 8 下面对应的图层名称
  • 10 下面的是 x 坐标
  • 20 下面的是 y 坐标
  • 30 下面的是 z 坐标
POINT5
668B
330
1F
100
AcDbEntity8
井号6
Continuous
100
AcDbPoint10
398266.5220
2791465.83330
14.414
1001
NAME
1000
w-6
1001
CODE
10000

文本的特点:

  • 有两个点,体现在数据中就是对应的 x y z 都有 11 21 31
  • x 为例 10 表示左边的点,11 表示右边的点(中心点)
  • 1 下面一行是对象的名称
TEXT5
3CF
330
1F
100
AcDbEntity8
备注6
Continuous
100
AcDbText10
398394.282546486220
2791348.10834703130
0.040
1.01
入户自接 前云80641
0.87
HZ72411
398396.886958250921
2791348.56545487431
0.0
100
AcDbText
1001
SOUTH
1000
2000090

线段的特点:

  • x 为例,10 表示线段的起点,11 表示线段的终点;
LINE5
42F
330
1F
100
AcDbEntity8
Ocean_Line6
Continuous62548
2.0
370-3
100
AcDbLine10
13578004.8246805420
3636021.18469223530
0.011
13578399.487395221
3636290.01095722731
0.00

2.分析实现

既然有上面的规律,那么在实现的时候就可以先逐行读取文件,然后遍历每一行,判断是否是我们需要的数据,如果是就保存起来。


如上图所示,每一个 if 代表一个判断,红框里的表示,如果是枚举类中定义的 x 坐标类型,则保存起来。

二、代码实现

已经发布到 Gitee ,地址 https://gitee.com/wsuo/parse-dxf

https://gitee.com/wsuo/parse-dxf.git

程序运行的入口是:

DxfCollector collector = DXF.build(new FileInputStream(file));

DXF 的 build 方法接收一个文件输入流,可以是直接从文件对象获取的输入流。随后调用 collector.getMap() 即可获取到解析出来的数据。

主要的业务逻辑类为 DxfCollectorImplDxfAnalysis 类,其中多用建造者模式与单例模式,避免了程序与程序之间的耦合,使项目整体上的使用模式简单化。

entity 包下面定义了项目支持解析的 dxf 格式类型,后续可以自行添加其他类型。

JAVA 解析 DXF 文件 点线面圆相关推荐

  1. java解析dxf文件_浅析JVM方法解析、创建和链接

    一:前言 上周末写了一篇文章<你知道Java类是如何被加载的吗?>,分析了HotSpot是如何加载Java类的,干脆趁热打铁,本周末再来分析下Hotspot又是如何解析.创建和链接类方法的 ...

  2. java解析dxf文件_CAD文件无法打开,这两点原因你必须要知道

    CAD文件我们平时很少见,因为从事设计行业的人,才经常接触.有时候我们发现,想要打开一个CAD文件查看,发现硬是打不开,这是为什么呢?其中有两点原因你要知道,下面我就来带大家一起来解决. 无法打开图纸 ...

  3. java 解析 csv 文件

    文章分类:JavaEye 一.貌似有bug,不行用 二.或 三. 的方法 Java代码   import java.io.BufferedReader; import java.io.FileInpu ...

  4. 用正则表达式和java解析csv文件

    用正则表达式和java解析csv文件 作者:弹着钢琴设计  来源:博客园  发布时间:2009-06-15 18:31  阅读:337 次  原文链接   [收藏]   在解析csv文件之前,先来看看 ...

  5. java解析xml文件

    使用java解析xml文件,通过dom4j. 代码如下: package com.java.team; import java.io.File; import java.util.ArrayList; ...

  6. Qt 解析 DXF 文件

    Qt 解析 DXF 文件 自己编写,亲测可用 使用示例 #include "dxfhelper.h" int main() {DxfHelper dxfHelper;if(dxfH ...

  7. java解析Excel文件

    下文介绍java解析Excel文件的方案 前置准备 1.第三方jar包或者Maven配置 org.apache.poi的jar包 Maven配置如下 <groupId>org.apache ...

  8. XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML

    XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...

  9. JAVA解析.xlsb文件

    Java解析.Xlsb文件 pom.xml <dependency><groupId>org.apache.poi</groupId><artifactId& ...

最新文章

  1. java 运算顺序 从左到右_java – 表达式与运算符优先级的从左到右的评估.为什么从左到右的评估似乎胜出了?...
  2. Android: Bundle机制
  3. [转]对数据仓库进行数据建模
  4. Java 8 Stream中间操作(方法)示例
  5. 流浪猫流浪狗H5完整运营源码下载/可封装APP
  6. 基础编程题目集 7-4 BCD解密 (10 分)
  7. 为bootstrap+angularJs打造的表格代码生成器
  8. 未来经济会发展到什么程度?
  9. Jenkins不同job之间传递参数
  10. Java 实现中文汉字转拼音
  11. 极限编程和极限编程方法采用的有效的开发实践
  12. 【利用python3和微信接口给女朋友做个公众号推送】
  13. PTA 乙级 【1005】继续(3n+1)猜想
  14. 带你读懂——频率响应与采样频率之间的关系
  15. 【Python标准库】base64模块
  16. Joan Baez - Willie Moore
  17. Echarts修改图例legend文字颜色和字体大小
  18. error TS7056
  19. 理顺一下C++三种内存分配方式
  20. 飞机订票系统的模拟(C语言实现)

热门文章

  1. java clob http传送,java之clob类型数据的处理
  2. C语言—[Game]猜数字
  3. 计算机主板故障与维修论文,主板维护计算机硬件论文
  4. 一些获取当前登录Windows系统用户信息的命令
  5. 计算机文件保密管理,密级文件保密管理制度
  6. 如何 退出ThunderPlatform.exe进程
  7. 一款小巧、开源免费、可观性强的流量监控软件——TrafficMonitor
  8. zookeeper shell_李孟_新浪博客
  9. java和office二级证书用处_计算机二级证书有什么作用
  10. KFS replicator安装(Mysql-KES)