我想将 .dxf 文件内的绘图转换为 g 代码。有一些工具可以做到这一点,但我想自己编写代码。因此,第一部分是解码 .dxf 格式。然而,.dxf 文件的内容看起来并不容易破译。
我下载了一个 .dxf 文件here并在文本编辑器中打开它。
我也指的是这个manual。看起来 .dxf 文件中的内容主要是样式和配置信息,我倾向于忽略几乎所有内容。所以,1. 如果有不应该省略的属性,您能指定一下吗?
As far as I know the figures are divided into multiple ENTITIES in a .dxf file. Therefore, I am only copy pasting the SECTION of ENTITIES. Note that there are 6 SECTIONS in the file and the last section (BLOCKS OBJECTS) is the longest one although I don't know what that part represents (Would be nice if you could explain).
在下面的代码中,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
相关问题
- 为了获得准确的 G 代码,需要考虑 .dxf 文件中的哪些字段?
最后一节(BLOCKS
)是最长的,虽然我不知道
该部分代表什么(如果你能解释一下就好了)。
目的BLOCKS您参考的手册中总结了该部分:
The BLOCKS
部分包含图形中每个块参考的条目。
将块视为一组实体,这些实体组合在一起作为一个元素。该块具有:
这样的块是引用的在图画本身和每个instance该块的被称为INSERT
.
所以当你走路时ENTITIES
部分,然后您点击了INSERT实体,然后你必须找到它的handle in the BLOCK
表并相应地处理元素。
有一些 DXF 代码对于许多实体来说都是通用的,并且它们并不总是与特定实体类型的信息一起列出(例如LWPOLYLINE
).
看这个完整列表对于这些数字:
-
5:实体句柄;最多 16 个十六进制数字的文本字符串(固定)
-
330:软指针手柄;指向同一 DXF 文件或图形中其他对象的任意软指针。翻译期间INSERT
and XREF
运营
-
100:子类数据标记(派生类名称为字符串)。对于派生自的所有对象和实体类都是必需的
另一个具体的类。子类数据标记隔离数据
由继承链中的不同类定义相同的
目的。这是对每个 DXF 名称的要求的补充
从 ObjectARX 派生的不同具体类(请参阅子类标记)
This page也很有用。
为什么有2个LWPOLYLINES
首先,为什么它不仅仅是一个BLOCK
-ENDBLK
pair?
如果您阅读了有关的部分BLOCKS你会看到的:
模型空间和图纸空间块定义
三个空定义总是出现在BLOCKS
部分。他们是
标题为*Model_Space
, *Paper_Space
and *Paper_Space0
。这些定义
表现出以下的表征模型空间 and 纸张空间作为块
内部定义。第一个图纸空间的内部名称
布局是*Paper_Space,第二个是*Paper_Space0,第三个是
*Paper_Space1,等等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)