【问题标题】:Understanding DXF file format. Relation between Label and Geometry了解 DXF 文件格式。标签和几何之间的关系
【发布时间】:2018-11-07 21:26:18
【问题描述】:

我对 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 个坐标,但现在能够将它们映射在一起。

【问题讨论】:

  • 你真的需要每两行之间有空行吗?这使得读取数据变得困难。

标签: python dxf


【解决方案1】:

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

想象一张白纸。你拿起一支铅笔,画了一个正方形。你决定这将是一个房间。所以在你画的正方形附近的某个地方,你写了一些文字;例如“房间 1”。文本“Room 1”和您绘制的正方形之间没有内在的关系或“联系”。这些是完全断开的实体。这种关系只存在于绘图者的脑海中,或者如果文字和正方形靠近,则可能由其他人查看绘图推断出关系。

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

如果您碰巧有房间标签始终放置在房间“内部”的图纸,那么您可以进行一些数学运算来确定特定文本是否位于一组特定的线/多段线内。

【讨论】:

  • 感谢您的回复。我现在更好地理解了它。谢谢。
猜你喜欢
  • 2020-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
相关资源
最近更新 更多