日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

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

發(fā)布時間:2024/1/1 python 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python读取cad表格_使用Python读取AutoCAD DXF文档 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作為《使用Python創(chuàng)建AutoCAD DXF文檔》的姊妹篇,本文介紹用Python讀取DXF

==================================================================================================================================================================================================================

1. 老規(guī)矩

pip install dxfgrabber

2.獲取圖層

首先用AutoCAD畫一個圖,然后導(dǎo)出為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文件中,而不是與圖層間形成層級關(guān)系。圖形所在的層是通過圖形的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)

對于線的端點、圓心之類的屬性,點坐標(biāo)均為三維的(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里創(chuàng)建一個圖塊,并插入2個圖塊。由于定義的圖形也轉(zhuǎn)換成了圖塊,所以現(xiàn)在應(yīng)該有3個圖塊。

作為圖塊插入到繪圖中的圖形,其類型是INSERT。可以通過其name屬性得到其圖塊的名稱,通過其insert屬性得到其位置。

import dxfgrabber

dxf = dxfgrabber.readfile("mydraw.dxf")

for e in dxf.entities:

print(e.dxftype,e.name,e.insert)

運行結(jié)果

(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. 總結(jié)

dxfgrabber的功能很強大,但是由于1. DXF是純文本格式 2. dxfgrabber是純Python實現(xiàn)的,故在讀取大型設(shè)計的時候,可能力不從心。在這種情況下,可以考慮使用Python的COM接口。

總結(jié)

以上是生活随笔為你收集整理的python读取cad表格_使用Python读取AutoCAD DXF文档的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。