了解DXF文件格式。标签和几何之间的关系

时间:2018-05-29 09:20:15

标签: python dxf

我是CAD系统的新手,并试图从我的项目的dxf文件中提取信息。我有平面图的dxf文件。我的目标是提取房间的几何形状和与之相关的标签。

虽然我能够分别提取房间几何形状和房间标签,但我发现很难对两者进行映射。我错过了几何与标签之间有联系的标签吗?

房间标签:

0

INSERT

5

53CF

330

2

100

AcDbEntity

8

__X_Polyline_Data

100

AcDbBlockReference

66

 1
2

ROOM_DATA

10

11.15367175915704

20

10.40315868785525

30

0.0

1001

AEC_XDATA_BOUND_SPACE

1070

100

1070

 1
0

ATTRIB

5

53D1

330

53CF

100

AcDbEntity

8

__X_Polyline_Data

6

Continuous

100

AcDbText

10

11.12027175915704

20

10.44215868785524

30

0.0

40

0.25

1

AE.22

100

AcDbAttribute

280

 0
2

PART_AOID

70

 0
280

 1

会议室文字:

0

TEXT

5

62C

330

2

100

AcDbEntity

8

X_Raumnummer

370

 0
100

AcDbText

10

11.15367175915704

20

10.40315868785525

30

0.0

40

0.8

1

AE.22

会议室坐标:

0

LWPOLYLINE

5

239B

330

2

100

AcDbEntity

8

A_DEC_Durchbrüche

370

 0
100

AcDbPolyline

90

    4
70

 1
43

0.0

10

10.95

20

12.215

10

14.6

20

12.215

10

14.6

20

12.48499999999999

10

10.95

20

12.48499999999999

我编写的用于提取数据的代码:

lines = [entity for entity in dwg.entities if entity.dxftype == 'LWPOLYLINE']
room_lines = [entity for entity in lines if entity.layer == '__X_Polyline']
lines_data = [entity for entity in dwg.entities if entity.dxftype == 'TEXT']
room_text = [entity for entity in lines_data if entity.layer == 'X_Raumnummer']  

我使用dxfgrabber库来提取信息。

如果我的问题很愚蠢,我很抱歉,我无法找到这个链接,而且我对这个领域很新。我能够提取AE.22并且它是4个坐标,但现在能够将它们映射在一起。

1 个答案:

答案 0 :(得分:1)

您尝试做的并不是大多数2D绘图的工作方式。

想象一张白纸。你拿起一支铅笔画一个正方形。你决定这将是一个房间。所以在你画的广场附近的某个地方,你会写一些文字; " 1号房间"例如。没有内在的关系或链接'文本与#34;房间1和#34;和你画的广场。这些是完全断开的实体。这种关系只存在于起草者的脑海中,或者如果文本和正方形紧密相关,则可能由观看绘图的其他人推断出这种关系。

这正是绝大多数2D绘图(.dxf文件)的工作原理。除非您使用属性设置特殊对象,否则任何文本片段与.dxf文件中的任何其他绘图实体之间不存在任何关系。

如果您碰巧有图纸,房间标签总是放在'里面?在房间里,你可以做一些数学运算来确定一段特定的文字是否在一组特定的线/折线内。