如何解码.dxf文件



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

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

我也指的是本手册。.dxf文件中的内容似乎主要是样式和配置信息,我倾向于忽略几乎所有内容。因此,1。如果有的话,你能指定不应该省略的属性吗

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

在下面的代码中,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

相关问题

  • 在.dxf文件中要考虑哪些字段才能获得准确的G-Code

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

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

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

将块视为一组实体,这些实体被分组为一个元素。区块有:

  • 起源
  • 旋转
  • 比例

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

因此,当您遍历ENTITIES部分并找到INSERT实体时,您必须在BLOCK表中找到其句柄,并相应地处理元素。


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

看看这些数字的完整列表:

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

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

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

此页面也很有用。


为什么首先有两个LWPOLYLINES,为什么不是只有一个BLOCK-ENDBLK对?

如果你通读关于BLOCKS的部分,你会看到:

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

BLOCKS部分中总是出现三个空定义。它们是标题为*Model_Space*Paper_Space*Paper_Space0。这些定义将模型空间纸空间

相关内容

  • 没有找到相关文章

最新更新