通过python实现dxf文件的读取并转成png

使用ezdxf来 实现

安装ezdxf

我使用的是python 3.10

pip install ezdxf

如果想使用其他辅助功能,比如说查看或者格式转换等等,可以安装完整版

pip install ezdxf[draw]

那么接下来就是简单的生成dxf文件和读取并转成png格式的功能

生成dxf

画一条直线

import ezdxf

doc = ezdxf.new('R2010')

msp = doc.modelspace()
msp.add_line((0, 0), (10, 10))
doc.saveas('line.dxf')

通过insert引入块的方式画一个⚪

import ezdxf

# 创建一个新的 DXF 文档,指定版本为 R2010
doc = ezdxf.new('R2010')

# 获取块定义管理器
blocks = doc.blocks

# 定义一个名为 'CIRCLE_BLOCK' 的块
circle_block = blocks.new(name='CIRCLE_BLOCK')

# 在块中添加一个圆形,圆心为 (0, 0),半径为 5,颜色为红色(颜色代码 1 代表红色)
circle = circle_block.add_circle(center=(0, 0), radius=5)
circle.dxf.color = 1

# 在圆心添加一个点,颜色为蓝色(颜色代码 5 代表蓝色)
center_point = circle_block.add_point((0, 0))
center_point.dxf.color = 5

# 获取模型空间
msp = doc.modelspace()

# 在模型空间中插入 'CIRCLE_BLOCK' 块,插入点为 (10, 10)
msp.add_blockref('CIRCLE_BLOCK', insert=(10, 10))

# 保存 DXF 文件
doc.saveas('circle_block.dxf')

最终会生成两个文件:line.dxf 和 circle_block.dxf ,通过cad看太费劲了,不如直接看

ezdxf view .\circle_block.dxf

是不是非常方便,而且还可以直接转成其他格式,比如png

ezdxf draw -o out.png line.dxf

当然如果要通过python读取dxf并修改矢量图的话,需要在代码中进行

查看dxf内容

import ezdxf
import matplotlib.pyplot as plt
from ezdxf.addons.iterdxf import modelspace
from matplotlib.patches import Circle


# read dxf file
doc = ezdxf.readfile("test01.dxf")
# read model space
msp = doc.modelspace()

blocks = doc.blocks

# 遍历模型空间中的所有Insert实体
for entity in msp.query('INSERT'):
    if isinstance(entity, ezdxf.entities.Insert):
        print(f"块参照名称: {entity.dxf.name}")
        print(f"插入点: {entity.dxf.insert}")

具体的dxf的相关操作看官方文档

ezdxf 1.4.0 文档

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值