用于创建/操作 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为True0或没有数据的边界框 - 新:
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的参数fastPath.bbox() - 更改:模块中
flatten的参数替换参数fastezdxf.bbox - CHANGE:重组
ezdxf.math子包 - BUGFIX #663:改进对大坐标
Bezier4P和Bezier3P类的处理 - BUGFIX #655:修复了 3D ARC 实体的无效展平
- BUGFIX #640:DXF 加载程序忽略
EOF标签之外的数据 - BUGFIX #620:添加缺少的插入符号解码到
fast_plain_mtext() - BUGFIX:
3DSOLIDDXF 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和附加组件BYBLOCKdrawing - 新:
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 实体副本的跟踪功能,新属性
DXFEntitysource_of_copy- 实体副本的直接来源origin_of_copy- 实体副本的第一个非虚拟源实体is_copy-True如果实体是副本
- 新:虚拟子实体的源实体跟踪:
POINT,LWPOLYLINE,POLYLINE,LEADER,MLINE,ACAD_PROXY_ENTITY - 新:从块参考创建的虚拟实体的源块参考跟踪,新属性
DXFEntityhas_source_block_reference-True如果虚拟实体是由块引用创建的source_block_reference- 创建虚拟实体的直接源块引用 (INSERT),否则None
- 新:
ezdxf.tools.text_size测量模块TEXT和MTEXT实体维度 - 更改:命令的
--ltype参数与附加配置 同步。drawapproximateaccuratedrawing - 更改:命令的
--ltype参数与附加配置 同步。viewapproximateaccuratedrawing - 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 browseBUGFIX:修复命令中的“下一个实体”和“上一个实体”操作- 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()的工厂方法。实体不能作为独立实体存在。ATTRIBATTRIB - 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_FONTSEZDXF_FONT_CACHE_DIRECTORYEZDXF_PRESERVE_PROXY_GRAPHICSEZDXF_LOG_UNPROCESSED_TAGSEZDXF_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_dataList[str]List[bytes] - BUGFIX:
Spline.construction_tool()从拟合点识别 B 样条曲线的起点和终点切线(如果已定义) - 预览:要试用的新功能,API 可能会在 v0.17 正式发布之前更改
- PREVIEW:
dxf2codeadd-on: 函数black()和方法返回BlackCode.black_code_str()格式化的代码字符串 - 预览:
ezdxf.upright翻转反向挤压向量的模块,有关更多信息,请阅读文档
版本 0.16.4 - 2021-06-20
- 新:作为
PolylinePath.type枚举EdgePath.typeezdxf.entities.BoundaryPathType - 新:
LineEdge.type、、ArcEdge.type和 作为EllipseEdge.type枚举SplineEdge.typeezdxf.entities.EdgeType - 新:
Path.all_lines_to_curve3(),将所有 LINE_TO 命令转换为线性 CURVE3_TO 命令 - 新:
Path.all_lines_to_curve4(),将所有 LINE_TO 命令转换为线性 CURVE4_TO 命令 - 新: ezdxf
EZDXF保存 DXF 文件时创建 AppID CADViewerBUGFIX:加载 PyQt类的崩溃- BUGFIX:加载
GEODATA版本 1,可能数据不正确,记录为警告 - BUGFIX:
HATCH拟合点的样条线边缘需要起点和终点切线 - BUGFIX:
disassemble.make_primitive()将包括宽度值的 LWPOLYLINE 转换为 WCS HATCHBUGFIX:忽略边缘路径中的开环- 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 漂亮的打印机auditDXF 文件draw并通过 Matplotlib 后端转换 DXF 文件viewPyQt 查看器的 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.Textgetter/setter 属性is_backward和is_upside_down - 新:
ezdxf.entity.TextStylegetter/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和Matrix44Bezier4P - 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和属性knotsweights - 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