Понимание формата файла DXF.Связь между меткой и геометрией - PullRequest
0 голосов
/ 29 мая 2018

Я очень плохо знаком с системой 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 голосов
/ 01 июня 2018

То, что вы пытаетесь сделать, это не совсем то, как работает большинство 2D черчения.

Представьте себе чистый лист бумаги.Вы берете карандаш и рисуете квадрат.Вы решаете, что это будет комната.Итак, где-то рядом с квадратом, который вы нарисовали, вы пишете какой-то текст;«Комната 1», например.Между текстом «Комната 1» и нарисованным вами квадратом нет внутренней связи или «связи».Это полностью отключенные объекты.Отношения существуют только в сознании составителя, или, если текст и квадрат находятся близко друг к другу, отношение может быть выведено кем-то еще, просматривающим чертеж.

Именно так подавляющее большинство 2D-чертежей (.dxf файлы) тоже работает.Если вы не настроили специальные объекты с атрибутами, между файлом текста и любым другим объектом чертежа в файле .dxf не будет никакой связи.

Если у вас есть чертежи, на которых метка комнаты всегда размещается «внутри»«Комната, тогда вы можете сделать некоторую математику, чтобы определить, находится ли определенный фрагмент текста в пределах определенного набора линий / полилиний.

...