Skip to main content

用于创建/操作 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_extensionspyparsing
  • 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用于将 MTEX​​T 实体分解为单行 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/

文档

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 上的问题:

在堆栈溢出时发布问题并使用标签dxfezdxf.

GitHub 上的问题跟踪器:

http://github.com/mozman/ezdxf/issues

接触

始终论坛堆栈溢出中发布问题,以便其他用户也可以使用答案。

ezdxf@mozman.at

非常感谢您的反馈。

曼弗雷德

消息

版本 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_emptyTrue0或没有数据的边界框
  • 新: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 中装箱问题的简单解决方案,文档
  • 新:参数heightrotation工厂方法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 网格导出器、文档
  • 新:作为OpenSCADezdxf.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:改进对大坐标Bezier4PBezier3P类的处理
  • 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.10
    • musllinux_2010_x86_64对于 Python < 3.10 和musllinux_2014_x86_64 对于 Python >= 3.10
    • manylinux_2014_aarch64用于基于 ARM64 的 Linux
    • musllinux_2014_aarch64用于基于 ARM64 的 Linux
    • macosx_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 #589Polyface.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测量模块TEXTMTEXT实体维度
  • 更改:命令的--ltype参数与附加配置 同步。drawapproximateaccuratedrawing
  • 更改:命令的--ltype参数与附加配置 同步。viewapproximateaccuratedrawing
  • REMOVE命令--scale的参数view
  • REMOVE: PolylinePath.PATH_TYPEPolylinePath.type改用
  • REMOVE: EdgePath.PATH_TYPEEdgePath.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
  • 新:支持 MTEX​​T 读取和创建的列,但不能编辑
  • 新:工厂方法BaseLayout.add_mtext_static_columns()
  • 新:工厂方法BaseLayout.add_mtext_dynamic_manual_height_columns()
  • 新:将MTextExplode()MTEX​​T 实体分解为单行 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_layerRenderContext.current_layer_properties
  • 更改:重命名RenderContext.current_block_referenceRenderContext.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.rgbezdxf.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_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 命令
  • 新: ezdxfEZDXF保存 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_tolabs_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,请参阅文档
    1. 将复杂的嵌套 DXF 实体解构为平面序列
    2. 创建 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_backwardis_upside_down
  • 新:ezdxf.entity.TextStylegetter/setter 属性is_backwardis_upside_downis_vertical_stacked
  • 新:ezdxf.math.Bezier3P,优化的二次贝塞尔曲线构造工具
  • 新: ezdxf.math.quadratic_to_cubic_bezier(),Bezier3PBezier4P转换器
  • 新: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(),删除了未使用的参数degreemethod
  • 已更改: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.pyezdxf.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、、Vec3Matrix44Bezier4P
  • 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.VectorVec3,但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_pointscontrol_points和属性knotsweights
  • BUGFIX:逆时针ezdxf.math.has_clockwise_orientation()返回True,反之亦然
  • BUGFIX:HATCH 的默认颜色为 256(按层)
  • BUGFIX:修复了损坏的复杂线型设置
  • BUGFIX:验证加载的句柄种子

版本 0.14.2 - 2020-10-18

版本 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" 如果用作资源名称,如图层名称或文本样式名称,则会引发 a ValueError(),此类文件只能由新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_modeezdxf.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

版本 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 数据发送到渲染后端,目前支持的后端: matplotlibPyQt5,这两个包都是可选的,不需要安装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