1

我想将 .dxf 文件中的图纸转换为 g 代码。有工具可以做到这一点,但我想自己编写代码。因此,第一部分是解码 .dxf 格式。然而,.dxf 文件的内容看起来并不容易破译。

我在这里下载了一个 .dxf 文件并在文本编辑器中打开它。

我也指的是这本手册。看起来 .dxf 文件中的内容主要是样式和配置信息,我倾向于省略几乎所有内容。那么,1.你能指定不应该省略的属性吗?

据我所知,这些数字在 .dxf 文件中分为多个实体。因此,我只是复制粘贴实体部分。请注意,文件中有 6 个部分,最后一部分(对象)是最长的部分,尽管我不知道那部分代表什么(如果你能解释一下就好了)。

在下面的代码中,10 和 20 应该代表 X 和 Y 位置,42 应该代表凸起。可以跟踪折线。我考虑使用 TITLES 作为导航点以及 10、20 和 42 等数字从文件中提取信息。但下面有两条折线。那么,2.我应该考虑哪条折线,另一条的用途是什么?

  0
SECTION
  2
ENTITIES
  0
LWPOLYLINE
  5
72    # What
330   # are
1F    # these
100   # numbers?
AcDbEntity
  8
Layer 1
100
AcDbPolyline
 90
       12
 70
     1
 43    # Constant width (optional; default = 0)
0.0
 10
11.7511418685121
 20
14.9867256637168
 42
1.0
 10
3.31114186851211
 20
14.9867256637168
 10
-0.0132743362831871
 20
14.9867256637168
 10
-0.0132743362831871
 20
11.72
 42
1.0
 10
-0.0132743362831871
 20
3.28
 10
-0.0132743362831871
 20
0.0398230088495577
 10
3.28
 20
0.039823008849557
 42
1.0
 10
11.72
 20
0.0398230088495577
 10
15.0132743362832
 20
0.0398230088495577
 10
15.0132743362832
 20
3.28
 42
1.0
 10
15.0132743362832
 20
11.72
 10
15.0132743362832
 20
14.9867256637168
  0
LWPOLYLINE
  5
73
330
1F
100
AcDbEntity
  8
Layer 1
100
AcDbPolyline
 90
       12
 70
     1
 43
0.0
 10
12.6544611051008
 20
15.9867256637168
 10
16.0132743362832
 20
15.9867256637168
 10
16.0132743362832
 20
12.6233192365887
 42
-0.823684764724874
 10
16.0132743362832
 20
2.37668076341128
 10
16.0132743362832
 20
-0.960176991150442
 10
12.6233192365887
 20
-0.960176991150442
 42
-0.823684764724874
 10
2.37668076341128
 20
-0.960176991150443
 10
-1.01327433628319
 20
-0.960176991150442
 10
-1.01327433628319
 20
2.37668076341128
 42
-0.823684764724874
 10
-1.01327433628319
 20
12.6233192365887
 10
-1.01327433628319
 20
15.9867256637168
 10
2.40782263192339
 20
15.9867256637168
 42
-0.823684764724874
  0
ENDSEC

相关问题

4

1 回答 1

1

最后一部分 ( BLOCKS) 是最长的部分,尽管我不知道那部分代表什么(如果你能解释一下就好了)。

BLOCKS部分的目的在您提到的手册中进行了总结:

BLOCKS部分包含图形中每个块参考的条目。

将块视为一组实体,它们组合在一起作为一个元素。该块有:

  • 起源
  • 回转
  • 规模

此类块在图形本身中被引用,并且块的每个实例都称为INSERT.

因此,当您走过您的ENTITIES部分并碰到一个实体时,您必须在表INSERT中找到它的句柄BLOCK并相应地处理元素。


许多实体共有一些 DXF 代码,它们并不总是与特定实体类型(如LWPOLYLINE)的信息一起列出。

查看这些数字的完整列表

  • 5:实体句柄;最多 16 个十六进制数字的文本字符串(固定)

  • 330:软指针句柄;指向同一 DXF 文件或图形中的其他对象的任意软指针。翻译期间INSERTXREF 操作

  • 100:子类数据标记(派生类名称为字符串)。从另一个具体类派生的所有对象和实体类都是必需的。子类数据标记为同一对象隔离由继承链中不同类定义的数据。这是对从 ObjectARX 派生的每个不同具体类的 DXF 名称要求的补充(请参阅子类标记)

这个页面也很有用。


为什么首先有 2 个LWPOLYLINES,为什么它不只是一BLOCKENDBLK

如果您阅读有关BLOCKS的部分,您会看到:

模型空间和图纸空间块定义

三个空定义始终出现在该BLOCKS部分中。它们的标题*Model_Space*Paper_Space*Paper_Space0。这些定义在内部将模型空间图纸空间表示为块定义。第一个图纸空间布局的内部名称是*Paper_Space,第二个是*Paper_Space0,第三个是*Paper_Space1,以此类推。

于 2021-08-27T12:44:12.627 回答