我是非常新的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
房间文本:
^{pr2}$房间坐标:
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”。文本“房间1”与您绘制的正方形之间没有内在的关系或“链接”。这些是完全断开连接的实体。这种关系只存在于绘图者的脑海中,或者如果文本和正方形靠得很近,则关系可能会被其他人在查看图形时推断出来。在
这正是绝大多数二维绘图(.dxf文件)的工作原理。除非使用属性设置特殊对象,否则.dxf文件中的任何文本和任何其他图形实体之间都没有关系。在
如果您碰巧有一些图形,其中房间标签总是放在房间的“内部”,那么您可以进行一些数学运算,以确定特定的文本片段是否位于一组特定的行/多段线内。在
相关问题 更多 >
编程相关推荐