作为《使用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读取pdf表格_[转]Python 解析 PDF 文本和表格的四大方法介绍

    Python 解析 PDF 文本和表格的四大方法介绍 == code for paper and NSFC Proj. parsing==: https://gitee.com/sonica/pdf_ ...

  3. python读取pdf表格_【Python 库】解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比...

    pdf 是个异常坑爹的东西,有很多处理 pdf 的库,但是没有完美的. 一.pdfminer3k pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本. ...

  4. python怎么读取石墨表格_用python和柳比歇夫工作法,自动做每周的周总结,导出周小节图表...

    今天我写短一点,主要讲我是怎样参照柳比歇夫的工作方法,去记录自己每天每项工作所花费的时间,以及怎样用python去汇总. 关于柳比歇夫的时间统计法,之前的推送写过,这里不再赘述. <奇特的一生& ...

  5. python 提取pdf表格_用Python提取pdf文件中的表格数据

    本文作者:杨慧琳 本文编辑:周聪聪 技术总编:张学人有问题,不要怕!访问 http://www.wuhanstring.com/uploads/5_aboutus/爬虫俱乐部-用户问题登记表.docx ...

  6. 读取excel表格内容,并写入到word文档中

    import pandas as pd import docx from docx.shared import RGBColor ''' 该代码段适合,将excel题库转换成word格式的题库,写入的 ...

  7. python pdfminer读取pdf表格_使用Python中的PDFMiner从PDF文件提取文本?

    富国沪深 DuckPuncher的出色回答,对于Python3,请确保您安装pdfminer2并执行以下操作:import iofrom pdfminer.pdfinterp import PDFRe ...

  8. python自动汇总表格_用Python自动生成Excel报表

    作者 / 来源:林骥(ID:linjiwx) 01 安装和导入模块 以 Python 中的 openpyxl 模块为例,它能够读取和修改 Excel 文件,如果你还没有安装,可以通过以下命令进行安装: ...

  9. 用python处理excel表格_使用Python处理excel表格(openpyxl)及表格中的中文处理

    现在有个小任务,需要处理excel中的数据.其实就是简单的筛选,excel玩的不熟练,而且需要处理的表有70多个,于是想着写个脚本处理一下吧. python中的openpyxl包可以轻松实现读写exc ...

最新文章

  1. 机器学习-贝叶斯分类器
  2. 【读薄Effective Java】创建和销毁对象
  3. 我们需要现在就进入LTE时代
  4. 齐聚上海,get多媒体开发新技能(内附讲师资料下载)
  5. 浙江文成“红领巾”向交警敬礼:上下学感谢有你
  6. Linux 脚本编写基础(二)
  7. BlogEngine(4)---Widget小部件
  8. linux编码 form表单,Linux curl 模拟form表单提交信息和文件
  9. linkButton与Button 的click事件与onclientClick事件
  10. 媒体应用大数据,先解决三大难题
  11. 开发者供不应求,垃圾项目在去年已造成2.1万亿美元损失
  12. 期望E==>加权均值(每个元素×它们各自的概率)
  13. 2022春节档新片预售总票房达1.08亿
  14. system verilog中的参数传递——ref,input,output
  15. Unity中实现VR摄像机
  16. 零基础Python学习(2) --- 《我想你猜》1.0版
  17. 大学生HTML期末作业网页:使用DIV+CSS技术制作一个简单的小说网站 (3个页面 登录+注册+首页 )
  18. python内置数值运算函数有哪几个_Python这68个内置函数,建议你吃透!
  19. WPS中文档横线的问题
  20. 2019年风险投资人 ( VCPE ) 汇总

热门文章

  1. 俄罗斯方块java机器人_H5版俄罗斯方块(4)---火拼对战的雏形
  2. python注销一段代码_请写出一段Python代码实现删除一个list里面的重复元素?
  3. 通俗易懂的主成分分析法(PCA)详解
  4. [maya学习笔记(22)] 插入关节 重定骨架根 移除关节 断开关节 镜像关节
  5. ni visa pci_希捷酷玩固态520系列1TB评测:PCI-E 4.0让游戏进一步加速
  6. 中山大学路由器如何通过h3c认证上网(极路由设置方法)
  7. html---学习之路(form表单的基本属性)
  8. 工作技巧篇--职场邮箱
  9. input使用maxlength报错
  10. 网页导航树的简单快速美观之实现