AutoCAD DXF#

参考

类别:

导入 - 导出

菜单:

文件 ‣ 导入/导出 ‣ AutoCAD DXF (.dxf)

导入#

DXF层被反映为Blender组。这个导入器使用一个通用的DXF库,叫做 "dxfgrabber"。

DXF类型映射#

为了尽可能做到无损,导入器旨在将尽可能多的DXF类型映射到Blender的曲线上。

DXF 到曲线#

  • LINE 作为 POLYLINE 曲线(可选择合并连接线)。

  • (LW)POLYLINE, (LW)POLYGON as POLYLINE curve if they have no bulges else as BEZIER curve.

  • ARCCIRCLEELLIPSE 作为 BEZIER 曲线。

  • HELIX (3D) 作为 BEZIER 曲线。

DXF到网格#

  • MESH 被映射到一个带有细分曲面修改器的网格对象,包括边缘折痕。

  • POLYFACEPOLYMESH 被导入到网格对象。

  • 3DFACESOLIDPOINT 被导入到每个层的一个组合网格对象中,称为 layername_3Dfaces

丢失 DXF 类型#

  • 填充(Hatches)

  • 引线

属性#

合并选项#

块作为 (Blocks As)

DXF块可以作为链接对象或组实例被导入。链接对象对DXF子块(块中的块)使用父子关系。

父块到边界框 (Parent Blocks to Bounding Boxes)

在区块周围画一个边界框。

合并对象 (Merged Objects)

由于Blender(v2.71)在添加对象方面相当缓慢,用户可能想把类似的DXF几何图形合并到一个对象上。

按层

Produces one object per DXF layer. If a layer contains multiple data types that cannot be merged will still be individual objects.

按层和DXF类型 (By Layer and DXF Type)

第二个不仅区分Blender的数据类型,也区分DXF类型,如 LWPOLYLINEPOLYLINE

按层和封闭无洞多边形 (By Layer and Closed No-bulge Polygons)

没有凸起的封闭多线,也就是没有弯曲的边缘,可以合并为一个单一的网格。当DXF折线有一个挤压和/或仰角属性时,这是有意义的,这基本上描述了一个位置/旋转/比例转换。如果选择这个合并选项,线的厚度设置将被忽略/禁用。

按层和DXF类型以及块 (By Layer and DXF-Type and Blocks)

对于DXF文件中的一个块被多次引用,这个选项允许用一个实例面的对象多次插入同一个块,而不是在每次需要插入块的时候用一个对象。不幸的是,这只适用于统一比例的图块插入。非统一比例的块插入是按照 Blocks As 中的定义导入的。

线 实体合并为多边形 (Combine LINE Entities to Polygons)

DXF中的分离线可能会被合并到一个连续的Blender多边形曲线。类似于 移除双线 ,但用于曲线。

线的厚度和宽度 (Line Thickness and Width)#

代表线的厚度/宽度 (Represent Line Thickness/Width)

DXF线条属性 厚度宽度 分别对Z和X/Y方向的线条有影响。例如,一条直线可以通过其属性变成一个立方体。因此,在Blender中,这些属性用曲线挤压、斜面和锥度对象来表示。

按属性合并 (Merge by Attributes)

如果同时激活了 合并对象代表线条厚度/宽度 ,则需要扩展对象合并,以分离所有不同厚度和宽度的线条。通过 按属性合并 ,这种分离选项也是可用的,而不需要实际表示线的厚度和宽度。

可选对象 (Optional Objects)#

导入 文本 (Impot Text)

(TEXT, MTEXT)

导入 灯光 (Import Lights)

包括对AutoCAD颜色的支持。

导出 ACIS 实体 (Export ACIS Entities)

导出NURBS三维几何( BODY , REGION , PLANESURFACE , SURFACE , 3DSOLID )到ACIS-Sat文件,因为这是AutoCAD存储NURBS到DXF的格式。你将会收到关于存储的 .sat ``/ .sab`` 文件数量的通知。

查看选项 (View Options)#

在大纲中显示组 (Display Groups in Outliner(s))

将大纲显示模式切换到 GROUPS (DXF图层被映射到组)。

将DXF文件导入新场景 (Import DXF File to a New Scene)

待补充。

将几何置于场景中心 (Center Geometry to Scene)

将导入的几何体集中到场景的中心;偏移信息作为一个自定义属性存储到场景中。

地理参考 (Georeferencing)#

重要的是。DXF文件不存储任何关于其坐标系统/球面投影的信息。最好的做法是知道你的特定DXF文件的坐标系,并在DXF导入器界面中输入这些信息,如下所示:

Pyproj

安装:下载 (Windows, macOS) Pyproj并将其复制到你的

AppData/ApplicationSupport Folder/Blender/4.1/scripts/modules/.

如果你需要编译自己的二进制文件,请参考Blender Artists上的 这个帖子

Pyproj是对PROJ库的一个Python封装,PROJ库是一个著名的C库,用于不同坐标系之间的坐标转换。像PROJ这样的开源GIS库被许多机构直接或间接使用,因此可以认为是维护良好的。

如果Pyproj可用,DXF导入器会显示一个局部坐标系的选择,但让用户也可以输入一个自定义的EPSG/SRID代码。它还将SRID作为一个自定义属性存储到Blender场景中。如果一个场景已经有了这样的SRID属性,那么坐标将从你的DXF文件转换到目标坐标系,因此你 必须 为DXF文件指定一个SRID。如果没有SRID自定义属性,场景的SRID默认与DXF的SRID相同。

没有Pyproj

在Pyproj不可用的情况下,DXF导入器将只使用其内置的纬度/伦度到X/Y转换器。对于转换, "横向墨卡托" 投影被应用,输入一个纬/伦坐标作为投影的中心。纬/伦坐标被作为一个自定义属性添加到你的场景中。随后的导入将把任何纬度/伦度坐标转换为相同的地理参考。

重要提示:到目前为止,只支持 纬度/长度 到 X/Y 的转换。如果你有一个DXF文件,其欧几里得坐标指向另一个纬度/伦中心,则不支持转换。

选择SRID的经验法则

如果你的数据来自OpenStreetMap或一些类似的GIS服务网站,并通过QGIS或ArcGIS导出,那么坐标很可能是纬度/伦度,然后使用WGS84作为Pyproj的SRID,如果Pyproj不可用,则使用 "球面" 。对于其他DXF矢量地图,它们很可能使用 当地/局部 坐标系统。

用文本编辑器打开DXF(它有好几千行),看着一些坐标做一个有根据的猜测。DXF是用 "组代码" 工作的,这是Autodesk公司为 "键" 发明的一个名称,就像 键/值 对一样。X有组代码10,Y有20,Z有30。如果你发现一个模式,比如:

10, newline, whitespace, whitespace, NUMBER, newline,
20, newline, whitespace, whitespace, NUMBER, newline,
30, newline, whitespace, whitespace, NUMBER

那么 NUMBER 就很可能是你的坐标。你也许可以从坐标的格式和/或范围中看出它应该是哪个坐标系。

导出#

支持数据#

  • 网格面: POLYFACE3DFACE

  • 网格边: LINE

  • 修改器(可选)

不支持的数据#

  • 网格顶点:POINT

  • 曲线:LINEPOLYLINE

  • 曲线 NURBS: curved-POLYLINE

  • 文本:TEXT 或 (开发中: MTEXT)

  • 相机:POINTVIEWVPORT 或 (开发中: INSERT(ATTRIB+XDATA))

  • 灯光:POINT 或 (开发中: INSERT(ATTRIB+XDATA))

  • 空物体:POINT 或 (开发中: INSERT)

  • 对象矩阵:挤压(210-group)、旋转、仰角

  • 三维视口:(开发中: VIEW`VPORT)

  • 实例化点:auto-instanced or (wip: INSERT)

  • 材质:LAYERCOLORSTYLE 属性

  • 组:BLOCKINSERT

  • 父子关系: BLOCKINSERT

  • 可见性状态:LAYER_on

  • 冻结状态: LAYER_frozen

  • 锁定的状态: LAYER_locked

  • 曲面

  • 融球

  • 骨架

  • 晶格

  • IPO / 动画