python dxf_使用Python读取AutoCAD DXF文档
作为《使用Python创建AutoCAD DXF文档》的姊妹篇,本文介绍用Python读取DXF
==================================================================================================================================================================================================================
1. 老规矩
pip install dxfgrabber
2.获取图层
首先用AutoCAD画一个图,然后导出为DXF格式。
这个图有两个图层,图层0和自定义的Mylayer。图层0有一些线段,图层Mylayer有一个圆和一个圆弧。
dxfgrabber可以读取多个版本的DXF,这里,把这个工程保存为R12 DXF,起名为『mydraw.dxf』
import dxfgrabber
dxf = dxfgrabber.readfile("mydraw.dxf")
for layer in dxf.layers:
print(layer.name,layer.color,layer.linetype)
得到输出为
(u'0', 7, u'CONTINUOUS')
(u'MYLAYER', 5, u'CONTINUOUS')
3.获取图形
在DXF中,所有的图形(Entity)都『打散』在dxf文件中,而不是与图层间形成层级关系。图形所在的层是通过图形的layer属性得到的。
import dxfgrabber
dxf = dxfgrabber.readfile("mydraw.dxf")
for e in dxf.entities:
print(e.dxftype,e.layer)
if e.dxftype == 'LINE':
print (e.start,e.end)
if e.dxftype == 'CIRCLE':
print (e.center,e.radius)
if e.dxftype == 'ARC':
print (e.center,e.radius,e.start_angle,e.end_angle)
对于线的端点、圆心之类的属性,点坐标均为三维的(x,y,z)形式。上述程序的输出为:
(u'LINE', u'0')
((0.0, 500.0, 0.0), (700.0, 500.0, 0.0))
(u'LINE', u'0')
((700.0, 500.0, 0.0), (1000.0, 0.0, 0.0))
(u'LINE', u'0')
((1000.0, 0.0, 0.0), (0.0, 250.0, 0.0))
(u'LINE', u'0')
((0.0, 250.0, 0.0), (0.0, 500.0, 0.0))
(u'CIRCLE', u'MYLAYER')
((1500.0, 800.0, 0.0), 450.0)
(u'ARC', u'MYLAYER')
((3450.0, 700.0, 0.0), 750.0, 180.0, 42.0)
4. 获取图块
下面在AutoCAD里创建一个图块,并插入2个图块。由于定义的图形也转换成了图块,所以现在应该有3个图块。
作为图块插入到绘图中的图形,其类型是INSERT。可以通过其name属性得到其图块的名称,通过其insert属性得到其位置。
import dxfgrabber
dxf = dxfgrabber.readfile("mydraw.dxf")
for e in dxf.entities:
print(e.dxftype,e.name,e.insert)
运行结果
(u'INSERT', u'MYBLOCK', (0.0, 0.0, 0.0))
(u'INSERT', u'MYBLOCK', (2000.0, 0.0, 0.0))
(u'INSERT', u'MYBLOCK', (3000.0, 0.0, 0.0))
用以下方法得到所有的block:
import dxfgrabber
dxf = dxfgrabber.readfile("mydraw.dxf")
for b in dxf.blocks:
print(b.name)
对于每一个block对象,可以直接用枚举的方法得到其包含的图形:
import dxfgrabber
dxf = dxfgrabber.readfile("mydraw.dxf")
myblock = dxf.blocks['MYBLOCK']
for e in b:
print (e.dxftype)
得到
CIRCLE
POLYLINE
5. 总结
dxfgrabber的功能很强大,但是由于1. DXF是纯文本格式 2. dxfgrabber是纯Python实现的,故在读取大型设计的时候,可能力不从心。在这种情况下,可以考虑使用Python的COM接口。
python dxf_使用Python读取AutoCAD DXF文档相关推荐
- python用于cad_使用Python读取AutoCAD DXF文档
作为<使用Python创建AutoCAD DXF文档>的姊妹篇,本文介绍用Python读取DXF ============================================= ...
- python读取cad表格_使用Python读取AutoCAD DXF文档
作为<使用Python创建AutoCAD DXF文档>的姊妹篇,本文介绍用Python读取DXF ============================================= ...
- Python使用标准库zipfile提取docx文档中所有图片
清华科技大讲堂免费直播课预告: 免费直播课|Python数据可视化与科学计算可视化案例分享,5月28日晚20:00-21:30 ============ 哔哩哔哩网站免费视频观看地址: 董老师在哔哩哔 ...
- C#培训2019-9-30第十课 Dxf转档 读取DXF文档 读取圆信息 生成 NC加工档
DXF格式资料 DXF文档原来是AutoCAD的专用格式,后来开发了.因此格式内容可以直接查看AutoCAD给出的帮助文档:http://docs.autodesk.com/ACD/2011/CHS/ ...
- Python借助jieba包对中文txt文档去停用词、分词
Python借助jieba包对中文txt文档去停用词.分词` import jieba# 创建停用词list def stopwordslist(filepath):stopwords = [line ...
- 孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档
孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数据库 ...
- Python量化交易平台:JQData | API使用文档(转)
Python量化交易平台:JQData | API使用文档(转) #原文地址:https://www.joinquant.com/help/api/help?name=JQData JQData说明书 ...
- python连接mysql输出数据库结构docx文档
python连接mysql输出数据库结构docx文档-Python文档类资源-CSDN下载
- python pyh模块下载_PyH首页、文档和下载 - 生成HTML页面的Python模块 - OSCHINA - 中文开源技术交流社区...
PyH 是一个用来生成HTML页面的Python模块,使用面向对象的方式,HTML的标签都会对应一个Python的对象,输出的HTML文档排版良好,易于阅读. 示例代码: from pyh impor ...
- 基于pdf2docx模块Python实现批量将PDF转Word文档(安装+完整代码教程)
PDF文件是一种常见的文档格式,但是在编辑和修改时不太方便,因为PDF本质上是一种静态的文档格式.因此,有时候我们需要将PDF文件转换成Word格式,以便更好地编辑和修改文档.在本篇文章中,我们将介绍 ...
最新文章
- ACMNO.35 C语言-宏润年 给年份year,定义一个宏,以判别该年份是否闰年。提示:宏名可以定义为LEAP_YEAR,形参为y,既定义宏的形式为 #define LEAP_YEAR(y)
- c++ 窗体上输出文字_C/C++经典面试题
- springcloud 与springboot的依赖关系以及版本的选择
- Android源码打包命令
- 0009:err:listview:LISTVIEW_WindowProc unknown msg 108c问题解决
- 如何实现 asp.net core 安全优雅退出 ?
- 国家开放大学本科计算机应用基础,【(精华版)最新国家开放大学电大本科《计算机应用基础》网络课网考形考作业一及三试题答案】.docx...
- c#打印程序原码_C#程序打印新行
- ”0元中标的商业逻辑“ -- 如何更好防范项目风险(北京软件造价评估技术创新联盟:李培圣)...
- 如何卸载 Internet Explorer 7
- struts2+json(3)
- VM12即VMware Workstation 12 序列号
- SSM框架---开发免费小说网站(h5+电脑端)
- 如何使用计算机管理员账户,如何使用管理员身份运行程序【图解】
- 苹果笔记本突然开机黑屏
- 兰斯洛特·δ零式·开发计划
- fetch_array()与fetch_assoc()的用法
- 从投资人发现“新大陆”,看“产融星城”为何成?
- 参考文献格式要首行缩进吗_参考文献顶格写吗
- Note For Linux By Jes(20)-Linux 核心编译与管理
热门文章
- 台式机主板常见接口资料
- 不要让采购欺诈吃掉你的利润
- 蓝桥杯就要开赛了,填空题还不会?我教你一篇学会填空题,从此填空满分,信心大涨
- Virtual Table — RTTI — typeinfo dynamic_cast 模板编程 orocos OperationCaller 类的设计
- ruby 安装问题的 一二事
- chrome视频无法播放的解决方法(Solve the problem of Google player cannot be played normally)
- X99-DELUXE II 无线网卡linux驱动RHEL8.5-centos8.5
- Unity Android Ios 微信SDK 接入
- 使用Resnet网络对人脸图像分类识别出男女性别(包含数据集制作+训练+测试)
- CIO40: IT 人之读书与家庭