JAVA 解析 DXF 文件 点线面圆
一、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()
即可获取到解析出来的数据。
主要的业务逻辑类为 DxfCollectorImpl
和 DxfAnalysis
类,其中多用建造者模式与单例模式,避免了程序与程序之间的耦合,使项目整体上的使用模式简单化。
在 entity
包下面定义了项目支持解析的 dxf
格式类型,后续可以自行添加其他类型。
JAVA 解析 DXF 文件 点线面圆相关推荐
- java解析dxf文件_浅析JVM方法解析、创建和链接
一:前言 上周末写了一篇文章<你知道Java类是如何被加载的吗?>,分析了HotSpot是如何加载Java类的,干脆趁热打铁,本周末再来分析下Hotspot又是如何解析.创建和链接类方法的 ...
- java解析dxf文件_CAD文件无法打开,这两点原因你必须要知道
CAD文件我们平时很少见,因为从事设计行业的人,才经常接触.有时候我们发现,想要打开一个CAD文件查看,发现硬是打不开,这是为什么呢?其中有两点原因你要知道,下面我就来带大家一起来解决. 无法打开图纸 ...
- java 解析 csv 文件
文章分类:JavaEye 一.貌似有bug,不行用 二.或 三. 的方法 Java代码 import java.io.BufferedReader; import java.io.FileInpu ...
- 用正则表达式和java解析csv文件
用正则表达式和java解析csv文件 作者:弹着钢琴设计 来源:博客园 发布时间:2009-06-15 18:31 阅读:337 次 原文链接 [收藏] 在解析csv文件之前,先来看看 ...
- java解析xml文件
使用java解析xml文件,通过dom4j. 代码如下: package com.java.team; import java.io.File; import java.util.ArrayList; ...
- Qt 解析 DXF 文件
Qt 解析 DXF 文件 自己编写,亲测可用 使用示例 #include "dxfhelper.h" int main() {DxfHelper dxfHelper;if(dxfH ...
- java解析Excel文件
下文介绍java解析Excel文件的方案 前置准备 1.第三方jar包或者Maven配置 org.apache.poi的jar包 Maven配置如下 <groupId>org.apache ...
- XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML
XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...
- JAVA解析.xlsb文件
Java解析.Xlsb文件 pom.xml <dependency><groupId>org.apache.poi</groupId><artifactId& ...
最新文章
- java 运算顺序 从左到右_java – 表达式与运算符优先级的从左到右的评估.为什么从左到右的评估似乎胜出了?...
- Android: Bundle机制
- [转]对数据仓库进行数据建模
- Java 8 Stream中间操作(方法)示例
- 流浪猫流浪狗H5完整运营源码下载/可封装APP
- 基础编程题目集 7-4 BCD解密 (10 分)
- 为bootstrap+angularJs打造的表格代码生成器
- 未来经济会发展到什么程度?
- Jenkins不同job之间传递参数
- Java 实现中文汉字转拼音
- 极限编程和极限编程方法采用的有效的开发实践
- 【利用python3和微信接口给女朋友做个公众号推送】
- PTA 乙级 【1005】继续(3n+1)猜想
- 带你读懂——频率响应与采样频率之间的关系
- 【Python标准库】base64模块
- Joan Baez - Willie Moore
- Echarts修改图例legend文字颜色和字体大小
- error TS7056
- 理顺一下C++三种内存分配方式
- 飞机订票系统的模拟(C语言实现)
热门文章
- java clob http传送,java之clob类型数据的处理
- C语言—[Game]猜数字
- 计算机主板故障与维修论文,主板维护计算机硬件论文
- 一些获取当前登录Windows系统用户信息的命令
- 计算机文件保密管理,密级文件保密管理制度
- 如何 退出ThunderPlatform.exe进程
- 一款小巧、开源免费、可观性强的流量监控软件——TrafficMonitor
- zookeeper shell_李孟_新浪博客
- java和office二级证书用处_计算机二级证书有什么作用
- KFS replicator安装(Mysql-KES)