【问题标题】:How to represent/read a cube in dxf file?如何在 dxf 文件中表示/读取立方体?
【发布时间】:2021-09-16 10:59:24
【问题描述】:

尝试打开 dxf 文件格式(C++ 中的实际项目),我可以理解文件的基本结构,但无法找到立方体的实际表示方式。

对于 CAD 中的立方体,我预计至少有 9 个值:

  • X Y Z 位置
  • A B C 旋转
  • 立方体的 W H D 大小

我希望 X、Y、Z、A、B 和 C 出现在 ENTITY 部分,

但是查看示例文件,我看到了许多设置、预览图像(在文件中占据了很大的空间)、布局等。但我无法与立方体的实际构建方式相匹配。


问题:

如何在 dxf 文件中表示/读取立方体?


更多信息

这是有关文件格式的文档:

http://help.autodesk.com/view/OARX/2018/ENU/?guid=GUID-235B22E0-A567-4CF6-92D3-38A2306D73F3

这是一个带有立方体的文件示例(使用 BricsCAD 创建)。不幸的是,我无法嵌入文件,因为它太大了。 “立方体”的大小为 20mm x 25mm x 30mm。

https://download.escain.org/example_cube_20_25_30_mm.dxf

我检查了 LibreCAD 源代码,但它不管理 3D 模型。此外,libdxfrw 库过于通用(它只是使用完整的实体数据调用接口回调)。

https://github.com/LibreCAD/LibreCAD_3
https://github.com/LibreCAD/libdxfrw

【问题讨论】:

    标签: file-format cad dxf


    【解决方案1】:

    这个立方体是嵌入的二进制 ACIS 数据 (3DSOLID),如果没有 Spatial Inc 的库,就无法解释。有关更多信息,请参阅我对另一个问题的回答: How I can parse nurbs surface from dxf file? Or do you know library(for js, if exists or any other language) for parsing it?

    编辑:查找 ACIS 实体的二进制数据

    从 R2013/AC1027 Modeler 开始,ACIS 数据的几何形状存储在 ACDSDATA 部分的 ACDSRECORD 中,这些记录没有句柄,而是有一个 ID。您的 3DSOLID 记录从第 22393 行开始,ID 为 10:

    0
    ACDSRECORD
    90
    1
    2
    AcDbDs::ID
    280
    10
    320
    D2            <<< handle to 3DSOLID
    2
    ASM_Data
    280
    15
    94
    9259          <<< size in bytes
    310
    41534D2042696E61...   <<< binary data as multiple tags of group code 310
    

    这是您的 3DSOLD,句柄为 D2,从第 2187 行开始:

    0
    3DSOLID
    5
    D2      <<< handle of your 3DSOLID
    330
    1F
    100
    AcDbEntity
    8
    0
    100
    AcDbModelerGeometry
    290
    0
    2
    {00000000-0000-0000-0000-000000000000}
    100
    AcDb3dSolid
    350
    0
    

    如您所见,在 ACDSDATA 部分中,3DSOLID 与作为 ACDSRECORD 的二进制内容没有关联。

    我不知道将这些数据链接在一起的表 (DICTIONARY)。我知道的唯一方法是在 ACDSDATA 部分中搜索所有 ACDSRECORD 以查找到 ACIS 对象的链接(组代码 320)。

    仅供参考:在 R2013 之前的 DXF 版本中,ACIS 数据作为 ascii 文本存储在实体本身中,并带有糟糕的异或“加密”。我所有关于 DXF 格式的知识都包含在我的 Python 包中:ezdxf

    【讨论】:

    • 我读过这篇文章,但我希望有人已经发现了基础知识,或者一些可以工作的非官方基础。
    • 如果我能在某处看到 ACIS 数据块(我找不到),那将是一个很大的好处。所以至少我知道去哪里找。 DXF 文档谈到了 Block 1 和 Block 3,但这些都没有在实体部分中。
    • 添加了如何查找二进制数据的附加信息
    • 哦!太好了!我还发现了一些关于 ACIS SAT 的信息,据说与 SAB 非常相似。我将尝试使用与标题相同的 xor 解密并查看。
    • 我发现DXF中的SAB格式只是HEX编码的。我找到了关于 ACIS 格式的旧文档,足以理解大部分 SAB 数据。
    猜你喜欢
    • 2010-11-03
    • 1970-01-01
    • 2016-11-10
    • 2016-08-22
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    相关资源
    最近更新 更多