使用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的相关操作看官方文档
2490

被折叠的 条评论
为什么被折叠?



