用于创建/操作 DXF 绘图的 Python 包。
项目描述
ezdxf
抽象的
用于创建和修改 DXF 绘图的 Python 包,无论 DXF 版本如何。您可以打开/保存任何 DXF 文件而不会丢失内容(注释除外)。DXF 文件中的未知标签会被忽略,但会保留以供保存。通过此行为,还可以打开包含来自第三方应用程序的数据的 DXF 图纸。
快速信息
- ezdxf是一个 Python 包,用于创建新的 DXF 文件和读取/修改/写入现有的 DXF 文件
- 麻省理工学院许可证
- 目标受众是程序员
- 至少需要 Python 3.7
- 独立于操作系统
- 用 CPython 和 pypy3 测试
- 有类型注释并
mypy --ignore-missing-imports -p ezdxf
成功通过 - 没有附加组件的核心包的其他必需包: typing_extensions, pyparsing
- DXF 版本的读/写/新支持:R12、R2000、R2004、R2007、R2010、R2013 和 R2018
- 只读支持 DXF 版本 R13/R14(升级到 R2000)
- 只读支持比 R12 更早的 DXF 版本(升级到 R12)
- 对 ASCII DXF 和二进制 DXF 的读/写支持
- 保留第三方 DXF 内容
- 二进制轮子中包含 CPython 的可选 C 扩展,可用于 Windows、Linux 和 macOS的PyPI
包含的扩展
在基本设置期间不会自动安装这些附加组件所需的其他软件包,有关设置和依赖项的更多信息,请访问文档。
- 该
drawing
插件是一个将 DXF 数据发送到渲染后端的翻译层,与matplotlib的接口,可以将图像导出为 png、pdf 或 svg,并实现了 PyQt5。 r12writer
将基本 DXF 实体直接快速写入 DXF R12 文件或流的附加组件iterdxf
用于从不适合内存的巨大 DXF 文件 (> 5GB) 的模型空间中迭代 DXF 实体的附加组件Importer
从另一个 DXF 文档导入实体、块和表格条目的附加组件dxf2code
为从 DXF 文档加载的 DXF 结构生成 Python 代码的附加组件,作为参数化 DXF 实体创建的起点acadctb
读取/写入绘图样式文件的附加组件 (CTB/STB)pycsg
基本构造实体几何 (CSG) 建模的附加组件MTextExplode
用于将 MTEXT 实体分解为单行 TEXT 实体的附加组件text2path
将文本转换为线性路径的附加组件geo
附加组件以支持__geo_interface__
meshex
用于将网格与其他工具交换为 STL、OFF 或 OBJ 文件openscad
附加组件,OpenSCAD的接口odafc
插件,ODA 文件转换器的接口, 用于读取和写入 DWG 文件
一个简单的例子:
import ezdxf
# Create a new DXF document.
doc = ezdxf.new(dxfversion="R2010")
# Create new table entries (layers, linetypes, text styles, ...).
doc.layers.add("TEXTLAYER", color=2)
# DXF entities (LINE, TEXT, ...) reside in a layout (modelspace,
# paperspace layout or block definition).
msp = doc.modelspace()
# Add entities to a layout by factory methods: layout.add_...()
msp.add_line((0, 0), (10, 0), dxfattribs={"color": 7})
msp.add_text(
"Test",
dxfattribs={
"layer": "TEXTLAYER"
}).set_pos((0, 0.2), align="CENTER")
# Save the DXF document.
doc.saveas("test.dxf")
r12writer的示例,它写入一个没有内存结构的简单 DXF R12 文件:
from random import random
from ezdxf.addons import r12writer
MAX_X_COORD = 1000
MAX_Y_COORD = 1000
with r12writer("many_circles.dxf") as doc:
for _ in range(100000):
doc.add_circle((MAX_X_COORD*random(), MAX_Y_COORD*random()), radius=2)
r12writer 仅支持 DXF R12 绘图的 ENTITIES 部分,不存在 HEADER、TABLES 或 BLOCKS 部分,除了写入 FIXED-TABLES 之外,还有一些额外的预定义文本样式和线型可用。
安装
通过 pip 进行基本安装,包括来自 PyPI 的可选 C 扩展作为二进制轮子:
pip install ezdxf
完整安装所有依赖项(matplotlib、PyQt5)以使用绘图插件:
pip install ezdxf[draw]
有关设置和依赖项的更多信息,请访问 文档。
网站
文档
https://ezdxf.mozman.at/docs上的开发版本文档
最新版本的文档在https://ezdxf.readthedocs.io/
贡献
ezdxf的源代码可以在GitHub 上找到,将您的拉取请求定位到master
分支:
https://github.com/mozman/ezdxf.git
反馈
GitHub 讨论中的问题和反馈:
https://github.com/mozman/ezdxf/discussions
Stack Overflow 上的问题:
在堆栈溢出时发布问题并使用标签dxf
或ezdxf
.
GitHub 上的问题跟踪器:
http://github.com/mozman/ezdxf/issues
接触
请始终在论坛 或堆栈溢出中发布问题,以便其他用户也可以使用答案。
非常感谢您的反馈。
曼弗雷德
消息
版本 0.18.1 - 2022-09-03
- 发行说明:https ://ezdxf.mozman.at/release-v0-18.html
drawing
新:改进了对附加组件的填充图案支持- 新:
drawing
附加组件获得基本VIEWPORT
渲染(仅顶视图),由PyQtBackend
和支持PillowBackend
- 新:
ezdxf.render.forms.turtle()
通过类似海龟图形的命令创建二维折线顶点的功能 ezdxf pillow
新:用于绘制和转换 DXF 文件的子命令Pillow
- 新:
ezdxf.path.triangulate()
,将(嵌套)路径细分为三角形面 - 更改:替换函数
clip_polygon_2d()
,通过裁剪类ClippingPolygon2d()
和ClippingRect2d()
- BUGFIX:CPython 实现
Vec2()
在就地操作中不是不可变的+=
,-=
和*=
Cython/=
实现一样 - BUGFIX:固定边界框计算
LinePrimitive()
- BUGFIX:#729
修复
$FINGERPRINTGUID
和$VERSIONGUID
处理
版本 0.18 - 2022-07-29
- 发行说明:https ://ezdxf.mozman.at/release-v0-18.html
- 新:角度尺寸渲染支持,新工厂
方法:
add_angular_dim_2l()
,,,,add_angular_dim_3p()
add_angular_dim_cra()
add_angular_dim_arc()
- 新:弧长尺寸渲染支持,新工厂方法
:
add_arc_dim_3p()
,,,add_arc_dim_cra()
add_arc_dim_arc()
- 新:纵坐标渲染支持,新工厂方法
:
add_ordinate_dim()
,,,add_ordinate_x_dim()
add_ordinate_y_dim()
EntityQuery
新:类的扩展查询功能- 新:
ezdxf.tools.text.is_upside_down_text_angle()
WCS 中的功能 - 新:
ezdxf.tools.text.upright_text_angle()
WCS 中的功能 - 新:辅助类
ezdxf.math.ConstructionPolyline
来测量、插值和划分折线以及任何可以近似或展平为顶点的东西 - 新:参数化曲线的近似工具:
ezdxf.math.ApproxParamT()
- NEW:
BoundingBox(2d).intersection(other)
, 返回交集空间的 3D/2D bbox - 新:
BoundingBox(2d).has_intersection(other)
替换不推荐使用的方法intersect()
- 新:
BoundingBox(2d).has_overlap(other)
替换不推荐使用的方法overlap()
- 已弃用:方法
BoundingBox(2d).intersect()
将在 v1.0.0 中删除 - 已弃用:方法
BoundingBox(2d).overlap()
将在 v1.0.0 中删除 - CHANGE:用于任意维度大小
BoundingBox(2d).is_empty
为True
0或没有数据的边界框 - 新:
ezdxf.gfxattribs.GfxAttribs()
类,文档 - 新:
TextEntityAlignment
枚举替换基于字符串的对齐定义 - 新:方法
Text.get_placement()
,替换get_pos()
- 新:方法
Text.set_placement()
,替换set_pos()
- 新:方法
Text.get_align_enum()
,替换get_align()
- 新:方法
Text.set_align_enum()
,替换set_align()
- 新:虚拟 DXF 属性
MText.dxf.text
,增加与其他基于文本的实体的兼容性:TEXT, ATTRIB, ATTDEF
- 新:DXF 文件的命令
ezdxf info FILE [FILE ...]
、显示信息和可选统计信息 - 新:模块
ezdxf.appsettings
,文档 - 新:模块
ezdxf.addons.binpacking
,2D 和 3D 中装箱问题的简单解决方案,文档 - 新:参数
height
和rotation
工厂方法add_text()
和add_attdef()
- 新:函数
size_inches
中的参数ezdxf.addons.drawing.matplotlib.qsave()
- 新:DXF/DWG 转换器功能
ezdxf.addons.odafc.convert()
- 新:支持 VIEWPORT 实体中的图层属性覆盖
- 新:网格交换附加组件
ezdxf.addons.meshex
:STL、OFF 和 OBJ 网格加载器和 STL、OFF、OBJ、PLY、OpenSCAD 和 IFC4 网格导出器、文档 - 新:作为OpenSCAD
ezdxf.addons.openscad
接口的附加组件, 文档 - 新:
acis
模块,处理 ACIS 数据的工具箱,文档 add_helix()
新:创建新HELIX
实体的工厂函数- 新:贝塞尔曲线的精确边界框计算
- 新:
ezdxf.math.trianglation
带孔支持的多边形三角剖分模块 - 新:空间搜索树
ezdxf.math.rtree.RTree
- 新:
ezdxf.math.clustering
用于 DBSCAN 和 K-means 聚类的模块 dxfattribs
更改:工厂方法的仅关键字参数add_text()
和add_attdef()
- 更改:
recover
模块 - 恢复的整数和浮点值被记录为严重错误 - CHANGE:方法
Path.all_lines_to_curve3
替换为函数path.lines_to_curve3()
- CHANGE:方法
Path.all_lines_to_curve4
替换为函数path.lines_to_curve4()
- 更改:替换参数
flatten
和工具函数segments
的参数fast
Path.bbox()
- 更改:模块中
flatten
的参数替换参数fast
ezdxf.bbox
- CHANGE:重组
ezdxf.math
子包 - BUGFIX #663:改进对大坐标
Bezier4P
和Bezier3P
类的处理 - BUGFIX #655:修复了 3D ARC 实体的无效展平
- BUGFIX #640:DXF 加载程序忽略
EOF
标签之外的数据 - BUGFIX #620:添加缺少的插入符号解码到
fast_plain_mtext()
- BUGFIX:
3DSOLID
DXF R2004 的导出没有子类AcDb3dSolid
版本 0.17.2 - 2022-01-06
- 新:扩展的二元轮支持
manylinux2010_x86_64
对于 Python < 3.10 和manylinux2014_x86_64
对于 Python >= 3.10musllinux_2010_x86_64
对于 Python < 3.10 和musllinux_2014_x86_64
对于 Python >= 3.10manylinux_2014_aarch64
用于基于 ARM64 的 Linuxmusllinux_2014_aarch64
用于基于 ARM64 的 Linuxmacosx_11_0_arm64
苹果硅macosx_10_9_universal2
适用于 Apple Silicon 和 x86
- 新:审核员修复了无效的透明度值
- 新:审核员修复了
MESH
实体中的无效折痕数据 - 新:添加
transparency
参数LayerTable.add()
- 新:支持透明度
BYLAYER
和附加组件BYBLOCK
drawing
- 新:
Textstyle.make_font()
返回 ezdxf 字体抽象 - 新:
dxfattribs
为方法添加参数Drawing.set_modelspace_vport()
- 新:
ezdxf.math.split_bezier()
分割任意度数的贝塞尔曲线的功能 - 新的:
ezdxf.math.intersection_line_line_3d()
- 新的:
ezdxf.math.intersect_poylines_2d()
- 新的:
ezdxf.math.intersect_poylines_3d()
- 新的:
ezdxf.math.quadratic_bezier_from_3p()
- 新的:
ezdxf.math.cubic_bezier_from_3p()
- 新:
BoundingBox.contains()
,检查一个边界框是否完全包含另一个边界框 - 新:
TextEntityAlignment
枚举替换基于字符串的对齐定义 - 新:方法
Text.get_placement()
,替换get_pos()
- 新:方法
Text.set_placement()
,替换set_pos()
- 新:方法
Text.get_align_enum()
,替换get_align()
- 新:方法
Text.set_align_enum()
,替换set_align()
- 已弃用:方法
Text.get_pos()
将在 v1.0.0 中删除 - 已弃用:方法
Text.set_pos()
将在 v1.0.0 中删除 - 已弃用:方法
Text.get_align()
将在 v1.0.0 中删除 - 已弃用:方法
Text.set_align()
将在 v1.0.0 中删除 - 更改:将枚举
MTextEntityAlignment
移至ezdxf.enums
- 更改:将枚举
MTextParagraphAlignment
移至ezdxf.enums
- 更改:将枚举
MTextFlowDirection
移至ezdxf.enums
- 更改:将枚举
MTextLineAlignment
移至ezdxf.enums
- 更改:将枚举
MTextStroke
移至ezdxf.enums
- 更改:将枚举
MTextLineSpacing
移至ezdxf.enums
- 更改:将枚举
MTextBackgroundColor
移至ezdxf.enums
- 更改
Dimstyle.set_tolerance()
::参数align
作为枚举MTextLineAlignment
- 更改
DimstyleOverride.set_tolerance()
::参数align
作为枚举MTextLineAlignment
- CHANGE:
MeshData.add_edge()
改为,这修正了我对实体MeshData.add_edge_crease()
中边缘和折痕数据的误解。MESH
- BUGFIX #574:扁平化
Path()
和ConstructionEllipse()
- BUGFIX:
drawing
附加组件在ACAD_TABLE
正确的位置显示块引用 - BUGFIX #589:
Polyface.virtual_entities()
产生正确的三角形面 - BUGFIX:防止
MESH
实体的无效DXF导出 - 预览:弧长尺寸渲染支持,新工厂方法
:
add_arc_dim_3p()
,,,add_arc_dim_cra()
add_arc_dim_arc()
- 预览:纵坐标尺寸渲染支持,新工厂方法:
add_ordinate_dim()
,,,add_ordinate_x_dim()
add_ordinate_y_dim()
- 预览:
ezdxf.gfxattribs.GfxAttribs()
类,文档 - 预览:DXF 文件的命令
ezdxf info FILE [FILE ...]
、显示信息和可选统计信息 - 预览:参数化曲线的近似工具:
ezdxf.math.ApproxParamT()
版本 0.17.1 - 2021-11-14
- 更改:使用PySide6作为 Qt 绑定(如果已安装
PyQt5
)仍支持作为后备 - 新:DXF 实体副本的跟踪功能,新属性
DXFEntity
source_of_copy
- 实体副本的直接来源origin_of_copy
- 实体副本的第一个非虚拟源实体is_copy
-True
如果实体是副本
- 新:虚拟子实体的源实体跟踪:
POINT
,LWPOLYLINE
,POLYLINE
,LEADER
,MLINE
,ACAD_PROXY_ENTITY
- 新:从块参考创建的虚拟实体的源块参考跟踪,新属性
DXFEntity
has_source_block_reference
-True
如果虚拟实体是由块引用创建的source_block_reference
- 创建虚拟实体的直接源块引用 (INSERT
),否则None
- 新:
ezdxf.tools.text_size
测量模块TEXT
和MTEXT
实体维度 - 更改:命令的
--ltype
参数与附加配置 同步。draw
approximate
accurate
drawing
- 更改:命令的
--ltype
参数与附加配置 同步。view
approximate
accurate
drawing
- REMOVE命令
--scale
的参数view
- REMOVE:
PolylinePath.PATH_TYPE
,PolylinePath.type
改用 - REMOVE:
EdgePath.PATH_TYPE
,EdgePath.type
改用 - BUGFIX:无效的 XDATA 处理
XData.safe_init()
- BUGFIX:组码 1003 在 XDATA 部分有效
- BUGFIX:修复
DIMSTYLE
属性加载错误dimtxsty
browse
BUGFIX:修复命令中的“下一个实体”和“上一个实体”操作- BUGFIX:导出
MTEXT
实体的列数与链接MTEXT
实体的数量不同 - BUGFIX:修复线性尺寸的相对文本移位的无效文本旋转
- 预览:角度尺寸渲染支持,新工厂方法
:
add_angular_dim_2l()
,,,add_angular_dim_3p()
add_angular_dim_cra()
- 预览:辅助类
ezdxf.math.ConstructionPolyline
来测量、插值和划分折线以及任何可以近似或展平为顶点的东西
版本 0.17 - 2021-10-01
- 发行说明:https ://ezdxf.mozman.at/release-v0-17.html
- 新:支持 MTEXT 读取和创建的列,但不能编辑
- 新:工厂方法
BaseLayout.add_mtext_static_columns()
- 新:工厂方法
BaseLayout.add_mtext_dynamic_manual_height_columns()
- 新:将
MTextExplode()
MTEXT 实体分解为单行 TEXT 实体和附加 LINE 实体以模拟笔划的附加工具,需要Matplotlib
包 - 新:类
move_to()
的命令和多路径支持ezdxf.path.Path
- 新:常规
make_path()
支持 HATCH 实体,返回多路径对象 - 新:定期
make_primitive()
支持 HATCH 实体 - 新:
text2path.make_path_from_str()
返回一个多路径对象 - 新:
text2path.make_path_from_enity()
返回一个多路径对象 - 新:
MPOLYGON
加载/写入/创建支持 - 新:
ezdxf.path.to_mpolygons()
函数:Path() 到 MPOLYGON 转换器 - 新:
ezdxf.path.render_mpolygons()
功能:渲染 MPOLYGON 实体形成路径 - 新:在 DXF 文件中存储ezdxf和自定义元数据
- 新:命令
ezdxf browse FILE ...
,PyQt DXF 结构浏览器 - 新:
dxf2code
附加组件:函数black()
和方法返回由BlackCode.black_code_str()
格式化的代码字符串 - 新:
ezdxf.upright
翻转反向挤压向量的模块,有关更多信息,请阅读文档 - 新:支持
ACAD_PROXY_ENTITY
- 新的:
BaseLayout.add_mtext_static_columns()
- 新的:
BaseLayout.add_mtext_dynamic_manual_height_columns()
-
新:在附加组件的
MTEXT
实体中呈现对内联代码的支持drawing
- 新:
XDATA
转换支持 - 新:对扩展词典的复制支持
- 更改:
drawing
附加组件:将后端params
参数(无类型字典)替换Configuration
为作为参数传递给前端类的新类型对象config
from_...(entity)
删除:从Path
类中弃用的类方法,path.make_path(entity)
改为使用- 已移除:不推荐使用的
Path
方法add_...(entity)
,请改用path.add_...(path, entity)
函数 - BUGFIX:如果属性不存在,实体查询与默认值不匹配
- BUGFIX:如果属性不存在,groupby 查询与默认值不匹配
- BUGFIX:ODAFC 附加组件 - 重新引入意外删除的全局变量
exec_path
作为win_exec_path
- BUGFIX:图形实体不允许作为
DICTIONARY
条目 - BUGFIX:复制
DICTIONARY
未通过调用添加到 OBJECTS 部分factory.bind()
- BUGFIX:
XRecord.copy()
复制内容标签
版本 0.16.6 - 2021-08-28
- 新:
MPOLYGON
支持drawing
附加组件 - 新:
MPOLYGON
支持geo
附加组件 - 新:
fast
方法的参数MText.plain_text()
- 新:在 DXF R2018 中支持多行
ATTRIB
和实体ATTDEF
- 新:
Auditor
从布局、块和对象部分中删除无效的 DXF 实体 - 新:
Auditor
从布局和块中删除独立的 ATTRIB 实体 - 新:
Drawing.layers.add()
创建新层的工厂方法 - 新:
Drawing.styles.add()
创建新文本样式的工厂方法 - 新:
Drawing.linetypes.add()
创建新线型的工厂方法 - 更改:重命名
RenderContext.current_layer
为RenderContext.current_layer_properties
- 更改:重命名
RenderContext.current_block_reference
为RenderContext.current_block_reference_properties
- 更改:扩展实体验证
GROUP
- 已移除:添加独立
实体
BaseLayout.add_attrib()
的工厂方法。实体不能作为独立实体存在。ATTRIB
ATTRIB
- BUGFIX:向 DXF 加载器添加缺少的“doc”参数,DXF 版本在加载阶段不可用
- BUGFIX:DXF 导出为
ARC_DIMENSION
- BUGFIX:
Arc.flattening()
总是必须返回Vec3
实例 - 预览:要试用的新功能,API 可能会在 v0.17 正式发布之前更改
- 预览:支持
ACAD_PROXY_ENTITY
- 预览:在附加组件的
MTEXT
实体中呈现对内联代码的支持。drawing
版本 0.16.5 - 2021-07-18
- 新:硬依赖
typing_extensions
- 更改:替换
ezdxf.tools.rgb
为ezdxf.colors
- 更改:
options
模块重命名为_options
; 这消除了options
模块和全局对象之间的混淆ezdxf.options
- 新:配置文件支持,请参阅文档
- 新:
ezdxf config
管理配置文件的命令 - 新:
ezdxf.path.have_close_control_vertices(a, b)
,测试两个Path
对象的紧密控制顶点 - 已移除:环境变量选项,这些是仅配置文件选项:
EZDXF_AUTO_LOAD_FONTS
EZDXF_FONT_CACHE_DIRECTORY
EZDXF_PRESERVE_PROXY_GRAPHICS
EZDXF_LOG_UNPROCESSED_TAGS
EZDXF_FILTER_INVALID_XDATA_GROUP_CODES
- 已移除:
ezdxf.options.default_text_style
,未使用 - 已移除:
ezdxf.options.auto_load_fonts
,禁用自动加载没有任何优势 - 已移除:
Vector
别名Vec3
- 已移除:
get_acis_data()
和 来自基于 ACIS 的实体的set_acis_data()
上下文管理器,将属性用作或edit_data()
acis_data
List[str]
List[bytes]
- BUGFIX:
Spline.construction_tool()
从拟合点识别 B 样条曲线的起点和终点切线(如果已定义) - 预览:要试用的新功能,API 可能会在 v0.17 正式发布之前更改
- PREVIEW:
dxf2code
add-on: 函数black()
和方法返回BlackCode.black_code_str()
格式化的代码字符串 - 预览:
ezdxf.upright
翻转反向挤压向量的模块,有关更多信息,请阅读文档
版本 0.16.4 - 2021-06-20
- 新:作为
PolylinePath.type
枚举EdgePath.type
ezdxf.entities.BoundaryPathType
- 新:
LineEdge.type
、、ArcEdge.type
和 作为EllipseEdge.type
枚举SplineEdge.type
ezdxf.entities.EdgeType
- 新:
Path.all_lines_to_curve3()
,将所有 LINE_TO 命令转换为线性 CURVE3_TO 命令 - 新:
Path.all_lines_to_curve4()
,将所有 LINE_TO 命令转换为线性 CURVE4_TO 命令 - 新: ezdxf
EZDXF
保存 DXF 文件时创建 AppID CADViewer
BUGFIX:加载 PyQt类的崩溃- BUGFIX:加载
GEODATA
版本 1,可能数据不正确,记录为警告 - BUGFIX:
HATCH
拟合点的样条线边缘需要起点和终点切线 - BUGFIX:
disassemble.make_primitive()
将包括宽度值的 LWPOLYLINE 转换为 WCS HATCH
BUGFIX:忽略边缘路径中的开环- BUGFIX:
Dimension.dxf.insert
属性的正确应用 - BUGFIX:修复了 OCS 实体的不正确“厚度”转换
- BUGFIX:向 POLYLINE 和 LWPOLYLINE 添加缺少的“宽度”转换
- BUGFIX:绘图插件处理 INSERT 正确的不可见标志
- 预览:要试用的新功能,API 可能会在 v0.17 正式发布之前更改
- 预览:类
move_to()
的命令和多路径支持ezdxf.path.Path
- 预览:
MPOLYGON
加载/写入/创建支持 - 预览:将ezdxf和自定义元数据存储在 DXF 文件中,请参阅文档
- 预览:命令
ezdxf browse FILE
,PyQt DXF 结构浏览器 - 预览:命令
ezdxf strip FILE [FILE ...]
,删除注释标签 (999) 和 THUMBNAILIMAGE 部分
版本 0.16.3 - 2021-05-22
- 新:
ezdxf.tools.text.MTextEditor
类,从类中MText
提取 - NEW: ,添加文本框的
MText.set_bg_color()
新参数text_frame
- 更改:将
MText
常量移动到MTextEditor
类 - 改变:移动
MText.set_font()
到MTextEditor.change_font()
- 改变:移动
MText.set_color()
到MTextEditor.change_color()
- 改变:移动
MText.append_stacked_text()
到MTextEditor.stacked_text()
- BUGFIX: GROUP 检查已删除实体的 DXF 导出
- BUGFIX:改进的虚拟尺寸处理
- BUGFIX:DIMENSION 转换也会转换相关匿名几何块内容的内容
- BUGFIX:
drawing
附加的真实颜色值总是覆盖 ACI 颜色 - BUGFIX:
drawing
附加组件,将 SOLID 处理为 OCS 实体,如 TRACE - BUGFIX/CHANGE:(
Vec2/3.__eq__()
运算==
符)将所有组件与全浮点精度进行比较,用于Vec2/3.isclose()
考虑浮点不精度。 这是一个烦人但必要的改变! - 更改:新签名
Vec2/3.isclose(other, *, rel_tol=1e-9, abs_tol=1e-12)
,新参数rel_tol
,参数rel_tol
和abs_tol
仅是关键字
版本 0.16.2 - 2021-04-21
- 更改:
ezdxf.path.add_bezier4p()
,添加线性贝塞尔曲线段作为 LINE_TO 命令 - 更改:
ezdxf.path.add_bezier3p()
,添加线性贝塞尔曲线段作为 LINE_TO 命令 - 已更改:
$FINGERPRINTGUID
匹配 AutoCAD 模式{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
- 已更改:
$VERSIONGUID
匹配 AutoCAD 模式{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
- BUGFIX:检查退化的贝塞尔曲线
have_bezier_curves_g1_continuity()
- BUGFIX:删除和取消链接对 DXFTagStorage 的支持(不支持的实体)
版本 0.16.1 - 2021-04-10
- BUGFIX:
disassemble.recursive_decompose()
不是递归的 - BUGFIX:
Frontend
如果没有定义常规字体文件,字体解析器将使用 XDATA - BUGFIX:标头变量的版本特定组代码
$XCLIPFRAME
- BUGFIX:(
INSERT
块参考)转换
版本 0.16 - 2021-03-27
- 发行说明:https ://ezdxf.mozman.at/release-v0-16.html
- 新:
ezdxf
命令行启动器,支持的命令:pp
上一条dxfpp
命令,DXF 漂亮的打印机audit
DXF 文件draw
并通过 Matplotlib 后端转换 DXF 文件view
PyQt 查看器的 DXF 文件
- 新:从文本字符串和文本实体
text2path
创建对象的附加组件,请参阅文档Path
- 新:
bbox
检测 DXF 实体范围(边界框)的模块,请参阅文档 - 新:
zoom
重置布局的活动视口的模块,请参阅文档 - 新:
path
子包,前一个ezdxf.render.path
模块的扩展版本,请参阅文档 - 新:支持模块
disassemble
,请参阅文档- 将复杂的嵌套 DXF 实体解构为平面序列
- 创建 DXF 实体的“原始”表示
- 新:默认情况下使用可选
Matplotlib
包以更好地计算字体度量和字体渲染(如果可用)。 - 新:缓存的字体指标在启动时加载,这可以通过环境变量禁用
EZDXF_AUTO_LOAD_FONTS=False
,如果这会减慢解释器的启动速度。 - 新:
Layout.reset_extents()
,将布局范围重置为给定值或 AutCAD 默认值 - 新:
Layout.reset_limits()
,将布局限制重置为给定值或 AutCAD 默认值 - 新:
Paperspace.reset_main_viewport()
,将图纸空间布局的主视口重置为自定义或默认值 Path()
新:类的二次贝塞尔曲线支持- 新:
ezdxf.entity.Text
getter/setter 属性is_backward
和is_upside_down
- 新:
ezdxf.entity.TextStyle
getter/setter 属性is_backward
,is_upside_down
和is_vertical_stacked
- 新:
ezdxf.math.Bezier3P
,优化的二次贝塞尔曲线构造工具 - 新:
ezdxf.math.quadratic_to_cubic_bezier()
,Bezier3P
到Bezier4P
转换器 - 新:
ezdxf.math.bezier_to_bspline()
,贝塞尔曲线到 B 样条转换器 - 新:
ezdxf.math.clip_polygon_2d()
,通过凸剪裁多边形剪裁多边形 - 新:
ezdxf.math.basic_transformation()
,返回一个组合变换矩阵,用于围绕 z 轴进行平移、缩放和旋转 - 新:
ezdxf.math.best_fit_normal()
,返回平面空间平面的法向量 - 新:
fit_points_to_cubic_bezier()
从拟合点创建一个视觉上相等的样条线,没有像 BricsCAD 那样的端切线,但仅适用于短 B 样条线。 - CHANGED:
fit_points_to_cad_cv()
,删除了未使用的参数degree
和method
- 已更改:
ezdxf.render.nesting
内容已移入ezdxf.path
包中 - 更改:重命名
MeshBuilder.render()
为MeshBuilder.render_mesh()
- CHANGED:
ezdxf.math.BSpline
不可变,所有方法都返回一个新BSpline
对象 BSplineU()
更改:由工厂函数替换类ezdxf.math.open_uniform_bspline()
BSplineClosed()
更改:由工厂函数替换类ezdxf.math.closed_uniform_bspline()
- 更改:重命名
rational_spline_from_arc()
为rational_bspline_from_arc()
- 更改:重命名
rational_spline_from_ellipse()
为rational_bspline_from_ellipse()
- BUGFIX:修复了
ezdxf.math.rational_bspline_from_ellipse()
无效的参数转换 - 已弃用:
ezdxf.render.path
模块,由ezdxf.path
包替换 - 已弃用:
Path.from_lwpolyline()
,由工厂替换path.make_path()
- 已弃用:
Path.from_polyline()
,由工厂替换path.make_path()
- 已弃用:
Path.from_spline()
,由工厂替换path.make_path()
- 已弃用:
Path.from_ellipse()
,由工厂替换path.make_path()
- 已弃用:
Path.from_arc()
,由工厂替换path.make_path()
- 已弃用:
Path.from_circle()
,由工厂替换path.make_path()
- 已弃用:
Path.add_curve()
, 替换为函数path.add_bezier4p()
- 已弃用:
Path.add_ellipse()
, 替换为函数path.add_ellipse()
- 已弃用:
Path.add_spline()
, 替换为函数path.add_spline()
- 已弃用:
Path.from_vertices()
,由工厂替换path.from_vertices()
- 已移除:
Path.from_hatch_boundary_path()
,由工厂替换path.from_hatch()
- 已移除:
Path.from_hatch_polyline_path()
- 已移除:
Path.from_hatch_edge_path()
- 已移除:
BlocksSection.purge()
, 不安全操作 - REMOVED:
dxfpp
命令,替换为ezdxf pp ...
- 已移除:
Layout.add_closed_spline()
,坏掉了,没有人注意到它 - 已移除:
Layout.add_closed_rational_spline()
,坏掉了,没有人注意到它
版本 0.15.2 - 2021-02-07
- 移除了对 Python 3.6 的活动支持,没有测试,也没有为 Python 3.6 部署二进制轮子
- 新:
BoundingBox()
相交测试、内部和外部测试、两个边界框的并集。 - 新:
ezdxf.math.ellipse_param_span()
, 工作方式与arc_angle_span_deg()
特殊情况相同 - 新:
DXFEntity.uuid
属性,按需返回一个 UUID,它甚至可以在没有句柄的情况下区分虚拟实体 - 更改:将许多文本实用程序函数提取到
ezdxf.tools.text
- CHANGE:
add_polyline2d()
,add_polyline3d()
,add_lwpolyline()
和add_mline()
got 参数close
来创建一个封闭的多边形并且 dxfattribclosed
已被弃用,close
并且dxfattribs
对于这些工厂是关键字参数。 - 更改:改进了绘图插件中的文本对齐渲染
- 更改:移入
ezdxf.addons.drawing.fonts.py
并ezdxf.tools
添加了字体测量缓存。 - BUGFIX:绘图插件中的文本
FIT
渲染ALIGNED
- BUGFIX:matplotlib 后端对实心填充的多边形使用 linewidth=0,对带有图案填充的多边形使用缩放的线宽
- BUGFIX:IMAGE 和 WIPEOUT 的剪切路径计算
- BUGFIX:闭合(360度)弧的变换保留了闭合弧
- BUGFIX:凸出值接近 0 但 != 0 导致异常
Path.add_2d_polyline()
- BUGFIX:
geo
插件中的多边形构建无效
版本 0.15.1 - 2021-01-15
- 新:
Spline.audit()
对 SPLINE 实体的审计支持 - 新:该
recover
模块允许格式错误的组代码和值标签。 - 将 Python 实现中的属性更改
Matrix44.matrix
为“私有”属性Matrix44._matrix
,因为该属性在 Cython 实现中不可用 - BUGFIX:大端系统上的代理图形解码错误
- BUGFIX:
dxf2code
附加组件中的顶点下标访问无效 - BUGFIX:
cubic_bezier_from_ellipse()
识别完整的椭圆 - BUGFIX:
cubic_bezier_from_arc()
识别完整的圆圈 - BUGFIX
:pickle 支持 C 扩展
Vec2
、、Vec3
和Matrix44
Bezier4P
- BUGFIX:在 MATERIAL 实体中导出矩阵时出现属性错误
版本 0.15 - 2020-12-30
- 发行说明:https ://ezdxf.mozman.at/release-v0-15.html
- 新:对 matplotlib 和 pyqt 绘图后端的线型支持
- 新:HATCH 岛支持 matplotlib- 和 pyqt 绘图后端
- 新:matplotlib 和 pyqt 绘图后端的基本 HATCH 模式支持
- 新:对 matplotlib 和 pyqt 绘图后端的字体支持
- 新:点模式支持 matplotlib- 和 pyqt 绘图后端,不支持相对点大小
- 新:绘图插件的代理图形支持
- 新:恢复
AcDbEntity
子类的错位标签(颜色、图层、线型,...),所有加载模式都支持 - 新:
ezdxf.addons.geo
模块,支持__geo_interface__
,请参阅文档和 教程 - 新:
GeoData.setup_local_grid()
为 CRS 设置地理数据,类似于 EPSG:3395 World Mercator - 新:MLINE 支持,但没有换行和填充中断(间隙)功能
- 新:
Bezier.flattening()
自适应递归展平(近似) - 新:
Bezier4P.flattening()
自适应递归展平(近似) - 新:
Path.flattening()
自适应递归展平(近似) - 新:
Circle.flattening()
由最大值确定的近似值。矢状面值 - 新:
Arc.flattening()
由最大值确定的近似值。矢状面值 - 新:
ConstructionArc.flattening()
由最大值确定的近似值。矢状面值 - 新的:
ezdxf.math.distance_point_line_3d()
- 新:
ConstructionEllipse.flattening()
自适应递归展平(近似) - 新:
Ellipse.flattening()
自适应递归展平(近似) - 新:
BSpline.flattening()
自适应递归展平(近似) - 新:
Spline.flattening()
自适应递归展平(近似) - 新:
matplotlib.qsave()
,ltype
在基于 matplotlib dpi 的线型渲染和基于 AutoCAD 的绘图单元的线型渲染之间切换的参数 - 新:
Solid.vertices()
以正确的顺序返回 OCS 顶点(也Trace
) - 新:
Solid.wcs_vertices()
以正确的顺序返回 WCS 顶点(也Trace
) - 新:
Face3D.wcs_vertices()
SOLID 和 TRACE 的兼容性接口 - 新:
Hatch.paths.external_paths()
返回可迭代的外部边界路径 - 新:
Hatch.paths.outermost_paths()
返回最外层边界路径的可迭代 - 新:
Hatch.paths.default_paths()
返回可迭代的默认边界路径 - 新:
Hatch.paths.rendering_paths()
返回可迭代的路径以进行渲染 - 新:
Drawing.units
获取/设置文档/模型空间单位的属性 - 新:设置文档和模型空间单位的
ezdxf.new()
参数units
以及 $MEASUREMENT 设置和线型设置基于此 $MEASUREMENT 设置。 - 新:
pattern.load(measurement, factor)
负载缩放填充图案 - 新的:
Path.from_hatch_boundary_path()
- 新:
odafc.export_dwg()
删除现有 DWG 文件的新替换选项 - 新
Style
表条目支持扩展字体数据 - 新:
Point.virtual_entities()
,将 POINT 实体生成为 DXF 基元 - 新:
ezdxf.render.point
,支持模块Point.virtual_entities()
- 新:一些低级数学类的可选 Cython 实现:Vec2、Vec3、Matrix44、Bezier4P
- 新:支持 Importer 附加组件的复杂线型
- 更改:优化了加载 DXF 属性的基础架构
- 更改:
Hatch.set_pattern_fill()
使用 HEADER 变量 $MEASUREMENT 确定预定义填充图案的默认缩放比例。 - 更改:修复无效线型设置 - 新线型缩放,如常见 CAD 应用程序
- 更改:
ezdxf.colors
模块将整合所有与颜色/透明度相关的功能 - 更改:重命名
ezdxf.math.Vector
为Vec3
,但Vector
仍为同义词 - 已弃用:
ezdxf.tools.rgb
模块替换为ezdxf.colors
- 删除:不推荐使用
DXFEntity.transform_to_wcs()
的接口,使用DXFEntity.transform(ucs.matrix)
- 已移除:不推荐使用
Hatch.edit_boundary()
的上下文管理器,使用Hatch.paths
属性 - 删除:不推荐使用
Hatch.get_gradient()
的方法,使用Hatch.gradient
属性 - 已移除:不推荐使用
Hatch.edit_gradient()
的上下文管理器,使用Hatch.gradient
属性 - 已移除:不推荐使用
Hatch.edit_pattern()
的上下文管理器,使用Hatch.pattern
属性 - 删除:不推荐使用
Hatch.get_seed_points()
的方法,使用Hatch.seeds
属性 - 删除:不必要的参数
non_uniform_scaling
来自Insert.explode()
- 删除:不必要的参数
non_uniform_scaling
来自Insert.virtual_entities()
- 已移除:不推荐使用的
Spline.edit_data()
上下文管理器、 使用fit_points
、control_points
和属性knots
weights
- BUGFIX:逆时针
ezdxf.math.has_clockwise_orientation()
返回True
,反之亦然 - BUGFIX:HATCH 的默认颜色为 256(按层)
- BUGFIX:修复了损坏的复杂线型设置
- BUGFIX:验证加载的句柄种子
版本 0.14.2 - 2020-10-18
- 发行说明:https ://ezdxf.mozman.at/release-v0-14.html
- BUGFIX:修复无效的属性引用
self.drawing
版本 0.14.1 - 2020-09-19
- 发行说明:https ://ezdxf.mozman.at/release-v0-14.html
- BUGFIX:MLEADER 和 MLEADERSTYLE min DXF 版本更改为 R2000
- BUGFIX:AutoCAD 会忽略 ACDBDICTIONARYWDFLT 中不存在的默认对象,因此 ezdxf 必须这样做。
Auditor()
创建一个占位符对象作为默认值。
版本 0.14 - 2020-09-12
- 发行说明:https ://ezdxf.mozman.at/release-v0-14.html
- 新:DXF 属性设置器验证,一些特殊和未记录的 Autodesk 表名称可能会引发
ValueError()
异常,请报告此表名称(图层、线型、样式......)。DXF unicode 符号 "\U+xxxx" 如果用作资源名称,如图层名称或文本样式名称,则会引发 aValueError()
,此类文件只能由新recover
模块加载。 - 新:
ezdxf.recover
加载具有结构缺陷的 DXF 文档的模块,请参阅 文档 - 新:所有 DXF 加载函数都接受 unicode 解码错误处理程序:“surrogateescape”、“ignore”或“strict”,有关更多信息,请参阅
模块文档。
recover
- 新:
addons.drawing.Frontend()
支持 LWPOLYLINE 和 2D POLYLINE 实体的宽度属性 - 新:
TraceBuilder()
从 LWPOLYLINE 或 2D POLYLINE 生成四边形(TRACE、SOLID 或 3DFACE)的渲染工具,带有宽度信息,请参阅文档 - 新:
Path()
用于构建直线和三次贝塞尔曲线的路径的渲染工具,用于更快地渲染 LWPOLYLINE、POLYLINE 和 SPLINE 实体以用于渲染后端,请参阅文档 - 新:
drawing.matplotlib.qsave()
功能,简化的 matplotlib 导出接口 - 新:
Arc.construction_tool()
返回 2DConstructionArc()
- 新:
Arc.apply_construction_tool()
应用参数ConstructionArc()
- 新:
Leader.virtual_entities()
产生“虚拟”DXF 原语 - 新:
Leader.explode()
将 LEADER 作为 DXF 基元分解为目标布局 - 新:
LWPolyline.has_width
属性是True
如果设置了任何宽度属性 - 新:
Polyline.has_width
属性是True
如果设置了任何宽度属性 - 新:
Polyline.audit()
扩展验证和修复支持 - 新:
Polyline.append_formatted_vertices()
,支持用户定义的点格式 - 新:
DXFVertex.format()
支持用户定义的点格式 - 新:
Drawing.blocks.purge()
删除所有未使用的块,但保护模型空间和图纸空间布局、特殊箭头块以及正在使用的 DIMENSION 和 ACAD_TABLE 块,但另请参阅 文档中的警告 - 新:
Insert.explode()
支持 MINSERT(多插入) - 新:
Insert.virtual_entities()
支持 MINSERT(多插入) - 新:
Insert.mcount
属性返回多插入计数 - 新:
Insert.multi_insert()
为 MINSERT 实体的每个网格元素生成一个虚拟 INSERT 实体 - 新:
Layout.add_wipeout()
创建 WIPEOUT 实体的接口 - 新:
Image.boundary_path_wcs()
,返回 WCS 坐标中的边界路径 - 新:
Wipeout.boundary_path_wcs()
,返回 WCS 坐标中的边界路径 - 新的:
Wipeout.set_masking_area()
- 新:
BSpline.is_clamped
属性True
用于夹紧(打开)B 样条 - 新:
UCS.transform()
通用转换界面 - 新:
Bezier4P.transform()
通用转换界面 - 新:
Bezier4P.reverse()
返回具有相反控制点顺序的对象 - 新:
Bezier.transform()
通用转换界面 - 新:
Bezier.reverse()
返回具有相反控制点顺序的对象 - 新:如果二维顶点的封闭多边形具有顺时针方向,则
has_clockwise_orientation(vertices)
返回True
- NEW:
DXFEntity.new_extension_dict()
, 显式创建一个新的扩展字典 - 新:
ezdxf.reorder
,支持模块来实现修改后的实体重绘顺序 - 新:从环境变量中获取 DXF 测试文件路径
EZDXF_TEST_FILES
,自动导入为ezdxf.EZDXF_TEST_FILES
- 新:
arc_chord_length()
和arc_segment_count()
工具功能ezdxf.math
- 新:
Drawing.encode()
使用正确的编码和错误处理程序对 unicode 字符串进行编码 - 新:
ezdxf.has_dxf_unicode()
检测“\U+xxxx”编码字符 - 新:
ezdxf.decode_dxf_unicode()
要解码包含
“\U+xxxx”编码字符的字符串,新recover
模块会自动解码这些字符串。 - CHANGE: ,如果实体没有扩展字典,则
DXFEntity.get_extension_dict()
引发AttributeError
- 更改:
DXFEntity.has_extension_dict
现在是属性而不是方法 - CHANGE:
linspace()
用于Decimal()
精确计算,但仍返回可迭代的float
- 更改:
Drawing.blocks.delete_all_blocks()
,不安全模式被禁用,参数safe
被弃用,将在 v0.16 中删除 - 更改:
DXFValueError
添加无效句柄的字典引发 - 更改:
BaseLayout.add_entity()
如果可能,将实体自动绑定到 doc/db - 更改:将所有布局名称处理为不区分大小写的字符串:
Model == MODEL
- REMOVE:
option.check_entity_tag_structure
, 实体检查仅在恢复模式下进行 - REMOVE:
legacy_mode
在ezdxf.read()
和中ezdxf.readfile()
,使用ezdxf.recover
模块加载有结构缺陷的DXF文档 - 删除:别名
DXFEntity.drawing
使用DXFEntity.doc
- 消除:
DXFEntity.entitydb
- 消除:
DXFEntity.dxffactory
- 删除:
DXFInvalidLayerName
,替换为DXFValueError
- REMOVE:
Image.get_boundary_path()
, 替换为属性Image.boundary_path
- REMOVE:
Image.get_image_def()
, 替换为属性Image.image_def
- 删除:和
filter_stack
中的参数ezdxf.read()
ezdxf.readfile()
- BUGFIX:
non-constant-attribs
如果存在非常量 ATTDEF 实体,则在 DXF 导出时在 BLOCK 中设置标志 (2)。 - BUGFIX:DXF R2018 -
HATCH
挤压矢量 (210) 是强制性的吗? - BUGFIX:布局名称不区分大小写;“型号”==“型号”
- BUGFIX:使用“surrogateescape”错误处理程序将二进制数据保存在 ASCII DXF 文件中。ezdxf 的早期版本使用“忽略”错误处理程序破坏了这些数据;XRECORD 中包含二进制数据的示例文件对 TrueView 2020 无效 - 因此可能不允许使用二进制数据。
版本 0.13.1 - 2020-07-18
- 发行说明:https ://ezdxf.mozman.at/release-v0-13.html
- BUGFIX:从结构标签中删除空格,例如
"SECTION "
- BUGFIX:
MeshBuilder.from_polyface()
POLYMESH 实体的处理错误
版本 0.13 - 2020-07-04
- 发行说明:https ://ezdxf.mozman.at/release-v0-13.html
- 新:通用转换接口:
DXFGraphic.transform(m)
,通过转换矩阵m
就地转换实体 - 新:专门的实体转换接口:
DXFGraphic.translate(dx, dy, dz)
DXFGraphic.scale(sx, sy, sz)
DXFGraphic.scale_uniform(s)
DXFGraphic.rotate_axis(axis, angle)
DXFGraphic.rotate_x(angle)
DXFGraphic.rotate_y(angle)
DXFGraphic.rotate_z(angle)
- 新: Matt Broadway 的绘图插件是一个翻译层,用于将 DXF 数据发送到渲染后端,目前支持的后端: matplotlib和PyQt5,这两个包都是可选的,不需要安装ezdxf。
- 新:
DXFGraphic.unlink_from_layout()
从关联的布局中取消链接实体 - 新: ,以逆时针顺序
Arc.angles(num)
产生从开始到结束角度的角度num
- 新:
Circle.to_ellipse()
,将 CIRCLE/ARC 转换为 ELLIPSE 实体 - 新:
Circle.to_spline()
,将 CIRCLE/ARC 转换为 SPLINE 实体 - 新:
Ellipse.params(num)
,num
以逆时针顺序从开始到结束参数产生参数 - 新:
Ellipse.construction_tool()
,返回椭圆数据为ConstructionEllipse()
- 新:
Ellipse.apply_construction_tool()
,应用ConstructionEllipse()
数据 - 新的:
Ellipse