Файл DXF — как можно связать объект AcDbText с текстом метки с объектом геометрии (AcDbPolyline)?

Я предполагаю, что точного ответа на этот вопрос может и не быть, но, возможно, я, по крайней мере, смогу лучше понять работу с файлами DXF...

Мне нужно обработать файлы DXF (планы этажей) и связать метку, которая обычно представляет собой имя комнаты, с объектом, представляющим конкретную комнату. Я проверил файл DXF и, похоже, между двумя объектами нет связи. Сущность TEXT имеет уникальный дескриптор (код 5) и программный указатель на другой объект (я думаю, на общее определение блока — код 330), но это не так. Итак, мои вопросы будут такими:

  1. правильно ли я предполагаю, что единственный выход в данном случае - это сравнение координат метки с координатами ближайшего объекта геометрии? Это выполнимо, но что, если есть несколько перекрывающихся объектов — я вижу там некоторые потенциальные риски.

  2. Есть ли способ включить точную ссылку от текстового объекта к геометрическому объекту в AutoCAD или подобных инструментах? Возможно, с использованием каких-то атрибутов? На данный момент мои знания о DXF минимальны, поэтому, если бы кто-нибудь мог указать мне на какую-нибудь документацию или примеры файлов .dxf, в которые включены такие точные ссылки, было бы здорово.

Большое спасибо!


person TomaszS    schedule 28.12.2020    source источник


Ответы (1)


Есть ли способ включить точную ссылку от текстового объекта к геометрическому объекту в AutoCAD или подобных инструментах? Возможно, с использованием каких-то атрибутов? На данный момент мои знания о DXF минимальны, поэтому, если бы кто-нибудь мог указать мне на какую-нибудь документацию или примеры файлов .dxf, в которые включены такие точные ссылки, было бы здорово.

Вполне могут быть другие способы сделать то, что вы хотите. Например:

Кроме того, в AutoCAD есть механизм под названием Расширенные данные объекта. который включен в любой файл данных DXF (см. предоставленную ссылку).

AutoCAD предоставляет некоторые инструменты для работы с XDATA, и вы также можете использовать сторонние расширения, такие как CADPower. и GeoTools с арсеналом из XDATA инструментов. И, конечно же, вы можете написать свои собственные плагины, чтобы делать то, что вам нужно.

Таким образом, вы можете присоединить handle к TEXT как XDATA к POLYLINE, представляющему комнату. Как только вы прикрепите TEXT как XDATA, он будет доступен в файле DXF, и вы сможете проанализировать его и найти дескриптор элемента TEXT.

Не так сложно написать макрос VBA для запуска в AutoCAD, который просит вас выбрать два элемента, а затем добавляет дескриптор текстового объекта как XDATA. Тогда вы можете идти.

person Andrew Truckle    schedule 28.12.2020