作为《使用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用于cad_使用Python读取AutoCAD DXF文档相关推荐

  1. python读取cad表格_使用Python读取AutoCAD DXF文档

    作为<使用Python创建AutoCAD DXF文档>的姊妹篇,本文介绍用Python读取DXF ============================================= ...

  2. Python用于文本分析的一个demo—统计文档中只出现一次的字符

    学习Python也有一周的时间,将学到的内容通过一个文本处理的小程序进行总结,需求如下: 分析文件长度,按单词计数 追踪文件中只出现一次的不同单词 文本采用1863年林肯先生的<葛底斯堡演说&g ...

  3. Python使用标准库zipfile+re提取docx文档中超链接文本和链接地址

    推荐教材: <Python程序设计实用教程>,ISBN:978-7-5635-6065-3,董付国,北京邮电大学出版社 教材封面: 全国各地新华书店有售 京东购买链接: 配套资源:教学大纲 ...

  4. python word 合并单元格_在word文档选项卡中检测合并单元格

    一点背景 我有一个软件规范,我需要以表格的形式解析需求.它们的格式也不总是相同的.我继承了一个python脚本,它使用win32com解析word文档,然后openpyxl将需求导出到excel文件, ...

  5. C#培训2019-9-30第十课 Dxf转档 读取DXF文档 读取圆信息 生成 NC加工档

    DXF格式资料 DXF文档原来是AutoCAD的专用格式,后来开发了.因此格式内容可以直接查看AutoCAD给出的帮助文档:http://docs.autodesk.com/ACD/2011/CHS/ ...

  6. Python数据分析大作业 4000+字 图文分析文档 销售分析

    资源地址:Python数据分析大作业 4000+字 图文分析文档 销售分析 +完整python代码 数据来自某商场,具体商业数据保密 资源地址:Python数据分析大作业 4000+字 图文分析文档 ...

  7. AutoCAD帮助文档下载

    AutoCAD帮助文档下载 AutoCAD2016: https://knowledge.autodesk.com/support/autocad/downloads/caas/downloads/c ...

  8. python使用xlrd读取xlsx文件_$ 用python处理Excel文档(1)——用xlrd模块读取xls/xlsx文档...

    本文主要介绍xlrd模块读取Excel文档的基本用法,并以一个GDP数据的文档为例来进行操作. 1. 准备工作: 1. 安装xlrd:pip install xlrd 2. 准备数据集:从网上找到的1 ...

  9. python读取html_从零开始的Python爬虫教程(一):获取HTML文档

    前言:在上一节从零开始的Python爬虫教程(零):粗识HTML结构中,粗略给大家介绍了一下HTML文档,是为了在接下来的教程中让大家更容易理解和掌握.在接下来的教程中,需要大家提前安装python3 ...

最新文章

  1. php查找顶级分类,php 无限级分类 获取顶级分类ID,php顶级_PHP教程
  2. (转)C#开发微信门户及应用(1)--开始使用微信接口
  3. [转]在EntityFramework6中执行SQL语句
  4. Python Tricks(六)—— 删除一个可迭代序列中等于某值的全部元素
  5. SpringMVC+MyBatis整合——事务管理
  6. paip.SOCKET抓包工具总结
  7. 关闭计算机主机还亮着,Win10系统电脑关机后主机电源灯依然亮着的解决方法
  8. 使用php监控系统运行状态、网站运行状态监控系统
  9. win7右键没有新建文本文档怎么办
  10. 【转载】国医大师熊继柏:用中医思维彻底把新冠病毒中医治疗方案说清楚!值得中医人收藏
  11. CF1290F Making Shapes——数位背包DP
  12. 固态硬盘是什么接口_经常买错各种SATA和NVMe固态硬盘,有没有办法快速分辨呢?看接口...
  13. 当我们谈深度学习时,我们用它落地了什么?
  14. 威步百科 | Blurry Box
  15. java设置打印机默认纸张_java 打印设置打印A4 A5纸
  16. jsp案例:计算矩形、圆形面积
  17. 共享单车蓝牙锁方案phy6222系列蓝牙芯片
  18. 每天一个IDA小技巧(二):基本代码转换
  19. 机动车驾驶科一/科四
  20. android x86小白安装教程,电脑上安装Android 10小白教程,大屏Android用起来

热门文章

  1. jacob操作excel、word、AutoCAD分享
  2. 交流结果 2020年4月25日
  3. 瑞成科技加入openKylin,推动社区生态繁荣发展!
  4. {“error“:“incorrect region, please use up-z1.qiniup.com“}
  5. 卡尔曼滤波器之经典卡尔曼滤波
  6. 文件系统可视化与文件管理
  7. 一文带你搞定svg-icon的使用
  8. Jenkins简介与应用
  9. 公众号bmob_newgd.js
  10. canvas内的字体实现阴影效果