【AI+CAD】(一)ezdxf 解析DXF文件

AI百科7个月前更新 快创云
233 0

DXF文件格式是矢量图形文件格式,其详细说明了如何表示不同的图形元素。

DXF是一个矢量图形文件,它捕获CAD图形的所有元素,例如文本,线条和形状。更重要的是,DXF是用于在CAD应用程序之间传输数据的图形交换文件。

使用和表示数据:

DXF文件中的每个变量都与一个组码相关联(组码的范围从1到1071)。

每个组代码都在特定情况下使用,并包含特定类型的信息。

例如,组代码2用于名称,例如节的名称或块的名称。

组代码0表示实体的开头或文件的结尾。

与每个变量关联的值存储为整数,浮点数或字符串。例如,线的长度存储为整数,而点坐标存储为浮点数。

DXF文件结构

DXF文件分为几个部分:每个部分都由记录组成,而记录又由和关联的组成。

您可以按以下顺序在DXF文件中找到以下部分:

在一个 DXF 文档中, 类是一个核心的管理结构,它负责组织和管理整个绘图的元素。Drawing 类提供了创建、修改和访问DXF文件中不同部分的方法,如实体(entities)、块(blocks)、图层(layers)、样式(styles)等。

Drawing 类充当了绘图元素的容器,允许轻松地对绘图元素进行操作和互动。它通常代表整个 DXF 文档,并提供了与文档内容有效交互的功能。

获取DXF :

访问DXF的:

提供了访问的方法:

提供了访问的方法:

Header Section

Drawing的设置存储在 HEADER 部分,可通过对象header的属性访问。具体key看这里。

例如看header中CAD的版本:

Classes Section

DXF 文件中的 CLASSES 部分保存应用程序定义的类的信息,这些类的实例出现在Layout对象中。作为通常的包用户,无需担心类。

Tables Section

Tables Section是DXF 文档的ps://www.ecreat.cn/tag/%e8%b5%84%e6%ba%90" target="_blank">资源表,用于 图层layers、线型linetypes、文本样式和形状文件 styles、尺寸样式 dimstyles、唯一应用程序ID appids、用户坐标系 ucs、msp视图 views、psp视图 viewports、块记录block_records等。

Blocks Section

Blocks Section是DXF 文档的所有块定义 ( BlockLayout ) 的所在地。除了使用的 之外,(因为有和所有)在 BLOCKS 部分中至少有一个相应的 BLOCK 定义。模型空间 BLOCK 的名称为“*Model_Space”,图纸空间 BLOCK 的名称为“*Paper_Space”。

Entities Section

Entities Section是Modelspace 和 active Paperspace中的主页。查看Modelspace 和 active Paperspace中entity的个数。

Objects Section

Objects Section 是 DXF 文档中所有的主页。

DXF Entities 是存储在 , 和 三种Layouts中的 。它们代表构成 2D 或 3D 设计的各种形状、线条和其他元素。

查看modelspace中各个:CIRCLE、POLYLINE、LINE等

DXF 实体的一些常见类型包括:(所有DXF entity的基类)

和 这些是 DXF 文件的基本构建块。它们代表。

和 这些实体分别表示和。

和 ,可用于标记设计的各个部分或提供其他信息。

,用于填充具有特定图案或纹理的区域。

,它提供设计中各种元素的精确测量。

BlockLayouts是一组实体,其中每个实体是 INSERT类型的,可用用于多次插入到其他layouts中,这使其成为重用设计元素的有用方法。

DXFEntity 和 DXFGraphic

DXFEntity是所有DXF实体的基类,查看DXFEntity的:

DXFGraphic是所有图像DXF实体的基类,继承了DXFEntity,拥有众多图形实体的属性:, , , , , ,。方返回各种图形实体的属性。

Graphical Entity Attributes 图形实体属性

所有图形实体的属性, , , , , ,都可以通过.dxf属性命名空间获取:。 除了true_color 和transparency是必须的,有默认值,其他属性都是可选的。

不同DXF版本支持不同的属性:

AutoCAD 颜色索引 (ACI):该属性表示ACI (AutoCAD 颜色索引)。该color属性的默认值为 256,这意味着采用与实体关联的layer定义的颜色。

真彩色True Color:所有图形实体都直接支持 /属性来获取和设置真彩色作为 (r, g, b) 元组,其中分量必须在 0 到 255 的范围内。真实颜色值True Color的优先级高于AutoCAD 颜色索引 (ACI)值。

透明度Transparency:所有图形实体都支持 transparency获取和设置透明度的属性,该属性是一个介于 0.0 到 1.0 范围内的浮点值,其中 0.0 表示不透明,1.0 表示完全透明:

线型Linetypes:定义线性图形实体(如 LINE、ARC、CIRCLE 等)的渲染模式。查看dxf文件中可用的线性及其描述。默认值为“”:ByLayer随层,图形对象的属性使用它所在图层的属性。图形对象的默认属性是ByLayer,也就是将同类的很多图形放到一个图层上,通过图层来控制图形的属性。未设置默认Cotinuous。

线宽Lineweights:以 为单位的整数值,例如 0.25mm = 25,与 DXF 文档中使用的单位系统无关。:随块,图形对象的属性使用它所在图块的属性。如果图形对象属性设置成ByBlock,但没有被定义成块,此对象将使用默认的属性,颜色是白色、线宽为默认线宽、线型为实线。默认值为 -1。

将 HEADER 变量设置为 1,激活对在屏幕上显示线宽的支持:

线型比例 ltscale:ltscale属性通过浮点值缩放线型图案,是可选的,默认值为 1.0

不可见性invisible:invisible属性是一个布尔值(0/1),定义实体是不可见还是可见。默认值为 0可见。

世界坐标系(WCS):世界坐标系——参考坐标系。所有其他坐标系都是相对于 WCS 定义的,永远不会改变。用户坐标系(UCS): 用户定义的工作坐标系,使绘图任务更容易。,而不是 UCS。对象坐标系 (OCS):对象坐标系是相对于对象本身的坐标。OCS 的主要目标是将 2D 元素放置在 3D 空间中,OCS 由实体的挤压向量定义。只要挤压矢量为 (0, 0, 1),OCS 就与 WCS 重合,这意味着 OCS 坐标等于 WCS 坐标,大多数情况下对于 2D 实体来说都是如此。

以下不位于特定平面内。所有点均以世界坐标表示。在这些实体中,只能挤出线和点。它们的挤出方向可能与世界 z 轴不同:Line、Point、3DFace、Polyline(3D)、Vertex(3D)、Polymesh、Polyface、Viewport。以下本质上是平面的。所有点均以对象坐标表示。所有这些实体都可以被挤压。它们的挤出方向可能与世界 z 轴不同:Circle、Arc、Solid、Trace、Text、Attrib、Attdef、Shape、Insert、Polyline(二维)、Vertex(二维)、LWPolyline、Hatch、Image。

图层Layers:Layers是一种。每个对象都有一个Layers作为其之一。layer 然后通过将传递Layers name字符串,将这些Layers 的属性分配给其他 DXF 实体。如实体可以通过使用字符串’BYLAYER’作为线型字符串、256颜色或-1线宽,从名称为’BYLAYER’的Layers继承此属性,所有这些值都是新实体的默认值。

Point,LINE,Circle,Arc,Ellipse,Text,Insert

以下示例中的图元始终放置在 WCS 的 xy 平面(即 2D 绘图空间)中。 其中一些实体只能放置在 3D 空间的 xy 平面之外 利用 OCS,这里没用涉及。

Point 在 WCS 中标记一个 3D 点:

Line 包含 start 和 end Point 在世界坐标系WCS

Circle包含在OCS中的 中心点center point 和 半径radius:

Arc圆弧 包括 中心点center point, radius半径, 起始角 start angl,结束角 end angle(以度为单位):

Ellipse椭圆 需要 DXF R2000 或更高版本,并且是 真正的 WCS 实体。椭圆包括 中心点,长轴major axis,长轴和短轴之间的比率ratio,起点start_param和终点end_param (以弧度为单位):

TEXT 实体 表示一行文本。表示文本内容字符串, 表示 第一个LEFT, ALIGNED 和 FIT对齐的2D/3D Point in OCS, 表示主对齐点非LEFT对齐或者ALIGNED和FIT对齐的第二个对齐点, 水平对齐标志作为 int 值默认0, 垂直对齐标志作为 int 值默认0, 文本高度为浮点值,默认值为 1, 宽度比例因子作为浮点值,默认值为 1, 文本旋转(以度为单位)作为浮点值,默认值为 0, 表示Textstyle的名字默认Standard。

水平对齐标志:

垂直对齐标志:

INSERT实体:代表一个 块引用block reference,其中代表BLOCK基点的插入位置(OCS中的2D/3D点),代表x 方向的比例因子(浮点数),代表y 方向的比例因子(浮点数),代表z 方向的比例因子(浮点数),代表以度为单位的旋转角度(浮动)

DXF Objects 是,没有视觉表示,它们存储管理数据、图纸空间布局定义、多种实体类型的样式定义、数据和对象。DXF 文件中的 OECTS 部分充当这些非图形对象的容器。

DXF 对象的一些常见 DXF 类型包括:

:字典对象由一系列对组成,其中名称是标识字典中特定对象的字符串,值是对该对象的引用。对象本身可以是任何类型的 DXF 实体或 DXF 文件中定义的自定义对象。

用于将自定义应用程序数据存储在 DXF 文件中。

是一个 DXF 实体,表示 DXF 文件中的单个图纸空间布局。图纸空间是 CAD 绘图中的区域,表示将在其上绘制或打印设计的纸张或其他物理介质。

定义存储在某些 DICTIONARY 对象中。

包含引用绘图中其他 DXF 实体的句柄列表。组中的实体可以是任何类型,包括来自模型空间或图纸空间布局的实体。

ezdxf包支持许多但不是所有实体类型,所有这些不支持的类型都存储为实例,以便在通过ezdxf 导出编辑的 DXF 内容时保留其数据。

作为,如LINE, CIRCLE, TEXT 等等。每个 DXF entity只能驻留在一个Layouts中。

共有三种不同的Layouts类型:(DXF文件由一个和至少一个组成,且所有对象都是)

:模型空间是 DXF 文件中用来表示。在模型空间中,用户可以绘制和编辑实际的图形元素,比如线条、圆形、多边形等。模型空间通常用于表示实际的设计内容。

:纸张空间用来表示,通常用于设置图纸的打印布局、视图窗口等。在纸张空间中,用户可以安排模型空间的内容,设置视图窗口的大小和位置,以便在打印或显示时呈现出所需的效果。

:块是 DXF 文件中的,类似于 CAD 软件中的符库。块可以包含线条、弧线、文本等元素,并被定义为一个单独的对象。这使得用户可以多次插入相同的块,而不必重复绘制相同的图形元素。

Modelspace

Modelspace始终存在且无法删除。

Modelspace可以具有一个或多个称为Modelspace Viewport的矩形区域。Modelspace Viewport可用于。重要的是要知道Modelspace Viewport ( ) 与Paperspace Viewport() 不同。

Paperspace

Paperspace 是为了 而组装和组织模型空间绘图内容的地方,例如打印在一张纸上,或作为数字文档(例如 PDF 文件)。

每个 DXF 文档可以有一个或多个Paperspace ,但 DXF 版本 R12 仅支持一种Paperspace ,因此不建议依赖 DXF 版本 R12 中的Paperspace 。

BlockLayout

BlockLayout只是另一种Entity空间,它可以通过 实体,插入到其他Layouts和BlockLayout中,也称为,这是 DXF 格式的一个非常强大且重要的概念。 可以旋转、缩放、通过OCS放置在 3D 空间中并以类似网格的方式排列,每个INSERT实体可以附加单独的属性 。

通过block name 获取BlockLayout:

查看msp中所有INSERT的实体及其属性:

© 版权声明

相关文章