使用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 文档

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐