VetCAD

Связь надписей с объектами. Labeling

   0 оценок

размещено: 27 Апреля 2019
обновлено: 27 Апреля 2019

Связь надписей с объектами. Labeling

Продолжение темы Labeling’а – см. О надписях при объектах в CAD. Labeling

 

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

Так же естественно, что графические элементы надписей должны быть физически связаны со «своими» графическими объектами - для обеспечения логических связей. Для возможности однозначно определять, к каким объектам эти надписи относятся, и с какими характеристиками этих объектов связано содержание надписей. В первую очередь - программно.

Но в CAD, AutoCAD это совсем не так или не всегда так. Графические элементы надписей – тексты, мультитексты – самостоятельные, отдельные, независимые элементы (Text, Mtext), которые пользователи могут создавать в произвольном количестве и произвольного содержания. Никаких связей, ни с какими объектами эти графические элементы надписей не имеют.

Да, в CAD, в AutoCAD существуют надписи, логически и физически связанные с графическими объектами – «атрибуты». Есть возможности физически связать надписи с объектами с помощью параметрических связей, полей в надписях или т.п. Но эти способы в той или иной мере неполноценны. Например, атрибуты в AutoCAD выполняют свою роль только для одного типа графических примитивов – блоков. А добавление параметрических зависимостей в чертежах/моделях с большим количеством надписей приводит к такому торможению работы, что теряет смысл. И т.д.

(К слову. Сейчас показывают подробный ТВ-фильм про строительство гигантских Airbus 380. Очевидно, что проектируют такие сложнейшие и ответственнейшие объекты не в базовом AutoCAD или т.п. Очевидно, что уровень не только сложности-объемности чертежей/моделей, но и уровень их внутренней «логичности», «связанности» чрезвычайно высок. Но почему на микроуровне CAD, AutoCAD нужно ограничиваться допотопными способами и средствами, рассчитанными только на человеческую способность анализировать и связывать? Чтобы доказывать аксиомы, изобретать велосипеды и открывать америки? Все-таки 21-й век уже наступил, кажется...).

Во всех вертикальных приложениях к CAD, AutoCAD есть свои способы Labeling’а – создания надписей, логически и физически связанных с объектами. Во всех вертикальных приложениях способы очень разные, а создаваемые Label являются особыми типами примитивов этих приложений, не передаваемыми полноценно ни в другие вертикальные приложения, ни в базовый CAD. К тому же, в каком-то вертикальном приложении нельзя создавать надписи какого-то типа, в другом слишком сложно и т.п. Т.е. решения для Labeling’а из вертикальных приложений не универсальны и не реализуемы в CAD.

Теоретически, самым корректным решением было бы сразу встроить надписи в сами базовые графические примитивы CAD, встроить возможность выводить в виде связанных надписей любую информацию об объектах. Т.е. в принципе лишить текстовые элементы отдельности. Чтобы любая точка, отрезок, полилиния, блок, тело и пр. состояли не только из самих этих графических моделей, но и из указанных пользователями надписей каких-либо их свойств. Однако, это потребовало бы полной переделки CAD на базовом уровне.

Поэтому решение для Labeling’а можно реализовать посредством некоторых добавлений к уже существующим в CAD базовым примитивам.

Есть примеры в CAD, в которых Labeling обеспечен средствами базовых продуктов – см., например, в блоге Как с расширенными данными у «смежника» AutoCAD. К графическим элементам добавляются описания их неграфических свойств (Tags), в т.ч. и отображаемых в виде надписей. Близкий подход и может быть решением для других, для того же AutoCAD.

Т.е., в CAD, AutoCAD существует возможность обеспечить Labeling уже имеющимися в них средствами. С неизбежным, конечно, добавлением команд для создания, обновления, восстановления и т.п. таких надписей.

Этот способ не будет полным решением задачи Labeling’а, но может быть достаточным для основных его задач.

Средством для описания логических связей надписей с объектами могут быть записи дополнительных неграфических данных – в AutoCAD это Xdata, Xrecord. А команды, считывающие из этих записей информацию о связях, могут обеспечивать физическую связь надписей с объектами.

При этом нет необходимости создавать новые графические примитивы, новые сущности, а можно использовать обычные для CAD текстовые элементы, Text, Mtext. При том, эти обычные текстовые элементы, и дополнительные данные базовых CAD одинаково доступны, и одинаково ведут себя во всех программных продуктах на основе этих CAD. К тому же, добавление записей неграфических данных никак не влияет на скорость работы в CAD.

Допустим, к текстовым элементам добавляются записи дополнительных данных с информацией о внутренних id (handle или т.п.) соответствующих графических объектов, о свойствах этих объектов, значения которых отображаются надписями, о способе размещения надписей относительно объектов, о графических свойствах самих надписей (слой, цвет, текстовые стили, высота и пр.). В принципе, этого достаточно, чтобы командами Labeling’а связывать существующие обычные текстовые элементы с объектами, создавать при объектах такие текстовые элементы, восстанавливать заданное положение надписей относительно объектов, обновлять содержание надписей при изменениях свойств объектов и т.п.

Может быть и противоположный вариант – к самим объектам добавлять записи дополнительных данных с информацией о связанных текстовых элементах, их содержании, размещении и свойствах. Возможен и вариант с одновременным добавлением записей и к текстовым элементам, и к графическим объектам.

Тем или иным способом, но с помощью дополнительных данных задачу Labeling’а средствами базовых CAD можно удовлетворительно решить.

Недостатки такого решения:

- обязательность добавления в CAD специальных команд Labeling’а,

- необходимость дополнительных действий для связывания текстовых элементов с объектами,

- возможность утраты связей надписей и объектов при потере записей дополнительных данных, при редактировании дополнительных данных, при удалении надписей, удалении/преобразованиях объектов и т.п.,

- возможность рассогласования содержания, свойств надписей с заданными вследствие их редактирования,

- невозможность одновременного перемещения таких надписей при перемещении объектов, их соответствующих частей, удаления надписей при удалении объектов или их соответствующих частей и т.п.

Почти все эти недостатки можно компенсировать программно – командами Labeling’а. Кроме, конечно, необходимости добавлять в CAD эти команды и необходимости выполнять их. В целом же недостатки могут быть не критичны, и Labeling с помощью дополнительных данных может быть и эффективным, и полезным/удобным, и для простых случаев достигать результатов без привлечения вертикальных приложений.

Решение Labeling’а с помощью дополнительных данных корректно, т.к. они предназначены для неграфической информации об объектах, а описание связей, содержания надписей является информацией неграфической.

 

PS. Добавлю дежурную свою фразу: по-моему, эту задачу должен бы решить сам Autodesk, предоставив достаточный набор команд для Labeling’а в базовом AutoCAD, поскольку эта задача общая.

 

25.04.2019

Шаров Александр