В продолжение идеи удобного использования XData для придания любым объектам AutoCAD нужных дополнительных описательных характеристик. См. тему Собрать коллекцию программ для XData. Проект назвал XDTOOLS - создать 10-12 программ на Lisp, обеспечивающих основные действия с XData. Создание описаний нужных наборов характеристик, их изменения, добавление их к графическим элементам, просмотр/редактирование значений, выбор, экспорт. И т.п. - Программы должны быть безопасными, т.е. не нарушать установленные в документации лимиты для данных в XData, не препятствовать др. действиям в AutoCAD. - Программы должны быть полноценными, т.е. полно выполнять свои задачи. А так же действовать для любых примитивов AutoCAD. - Программы должны быть универсальными, т.к. решать задачи в общем виде - для любых XData. - Программы должны быть удобными для пользователей. Предназначены для свободного распространения. Присоединяйтесь! Задачи не сложные, не требуют изысканного высокопрофессионального программирования. Имена и контакты авторов станут известными в международном сообществе AutoCAD. :) Например, оч. неопытный программист смог сделать получение статистики XData в файле или для выбранных объектов - XDTOOLS_STAT.lsp. (Функцию поиска одноименных XData с различным составом данных написал опытный). Можно критиковать. :) --------- XDTOOLS-...zip - все 20 команд проекта в последних версиях. Там же палитра команд.
Например, есть ключевая задача - создание и изменение описаний XData: переименовывать Apps, создавать новые описания Apps, менять состав полей их данных, порядок следования полей, тип полей. Для этого можно воспользоваться любезно выложенным решением Lee Mac для двух зависимых списков - http://www.lee-mac.com/listboxsync.html. В левой части, допустим, список имеющихся Apps. В правой - список полей данных выбранного Apps. Добавить кнопки действий: добавления App, удаления App, перемещения полей в списке, удаления их, добавления. При двойном нажатии, допустим, доступ к редактированию названия App или к замене типа данных поля. И т.п.
Например, программа для проверки на возможные проблемы с XData - из-за их внутренних ограничений и действий пользователей - XDTOOLS_CHECK.lsp.
Например, ключевая для использования XData программа просмотра-редактирования определений XData - XDTOOLS_MDEFINE.lsp. Улучшенные и подправленные версии XDTOOLS_VEDIT.lsp и XDTOOLS_ADD.lsp.
XData - способ добавления к любым графическим элементам описательной, дополнительной, неграфической информации. Текстовой и/или числовой. Лишь бы меньше 16К. И XData обладают двумя принципиальнейшими преимуществами перед всеми другими способами добавления описательных данных: 1. присоединимы к графическим элементам любых типов (кроме Viewport), 2. одинаково доступны вообще во всех AutoCAD. Например, чертите полилинию, и добавляете к ней XData, где записано, что это ЛЭП (тропа, откос, граница растительности или т.п.), у нее число проводов такое-то, напряжение такое-то и пр. При этом все в dwg может быть в 0 слое, черным цветом, одной толщиной и пр. Но ЛЭП и пр. можно будет найти по XData. Или получаете кадастровые данные, в которых ко всем графическим элементам добавлена соответствующая кадастровая информация. Или захотите слить данные из разных dwg, но перед этим к графэлементам файлов присоедините XData, где записаны названия файлов. Или имена их создателей. И будете знать что откуда или от кого. И т.п. - как необходимость или удобство продиктуют. О полезности описательных данных хорошо знают работающие в AutoCAD Map 3D - в нем есть аналог XData, но немного получше, Object Data. И знают работающие в ГИС - в них без описательных данных вообще ничего не делается. Есть аналог еще мощнее в Civil, Architecture, MEP - Property Sets. Electrical вообще весь завязан на XData. Mechanical, кажется, тоже использует - могу соврать. Но и в Revit, как понимаю, без описательных, дополнительных данных совсем не обходится. Краем проходило, что при экспорте в dwg из Revit часть данных передается в XData.
Ну в ревит да, там все через поля данных. Можно свои наборы добавлять в проперти сет. --- Сообщения объединены, 8 янв 2022, Оригинальное время сообщения: 8 янв 2022 --- Наверное можно было бы сделать модель похожую на ревит. Типа менеджера атрибутов. Только сама иерархия классов ревит изначально под это заточена. А автокад нет. Поэтому что то похожее разработать надо очень постараться и на одном энтузиазма это не вывезешь.
Может в чем-то и есть преимущество в использовании XData, но я поступаю проще. Я объектам присваиваю гиперссылку с необходимой информацией. Из гиперссылки всегда можно вытащить информацию во внешний файл. И, самое главное, просто наведя курсор на объект, сразу получаешь доп.информацию.
Весьма кстати! Я тоже не сразу узнал, и понял, что далеко не все программисты (или даже практически никто) знают, что гиперссылки - это именно что XData, с названием PE_URL. Можете убедиться с XDLIST.
Продолжаем. Например, выбор объектов с указанными XData - XDTOOLS_SELAPPS.lsp. Можно выбрать сразу несколько XData Apps, выбор можно сделать обратным - опция "without the chosen" ("без указанного"). Т.о. можно выбрать объекты с указанными XData Apps, без этих XData Apps, имеющие XData Apps, без XData Apps. Кстати, все lsp содержат и русифицированный вариант - сейчас закомментирован.
А есть у lisp какой-либо независящий от кодировок i18n-механизм? Пытался заморочится этим, но быстро обломился, кроме использования uni-кодов ничего не нашёл.
Оффтоп (Move your mouse to the spoiler area to reveal the content) Чо? Я не программист! Могу легко попасть пальцем в небо, но выложу все, что покажется похожим и пролетало мимо. Возможно, Вы имеете в виду, чтобы язык выбирался автоматом в зависимости от языка Win или AutoCAD? Я краем зацепил такое. С программами VVA. Кажется, с bgtools. Вот, сейчас там чисто на здравом смысле нашел: Код: (if (= (getvar "DWGCODEPAGE") "ANSI_1251") "Выберите динамические блоки" "Select dynamic blocks" ) Лучше вопросы за пределами темы XDTOOLS задавать не здесь. Наверное, попозже попробуем сделать автоматическое включение русских надписей...
Обновленные улучшенные уточненные версии всех 6 команд - XDTOOLS-v-0-4.zip. В т.ч. и предыдущей XDTOOLS_SELAPPS.lsp.
Новая команда - XDTOOLS_REMOVE, для удаления указанных XData у выбранных объектов. Вместе с некоторыми обновлениями-исправлениями предыдущих, см. архив.
Новая команда - XDTOOLS_SELVALUES, для выбора объектов с указанными значениями в XData у выбранных объектов. Действует маска - "*" для символьных значений, и для любых значений действует выбор на >, < и <> (не равно). Введенное в поле выбора значение означает выбор всех объектов с такими значениями. Пустое значение означает выбор с отсутствующим значением. Читал, что такой выбор для XData почему-то невозможен. Возможен, и сделан, и действует.
Это Lisp. У меня голова не приспособлена для программирования. Это открытый проект - пишут желающие программисты. И не для меня - для всех. С лиспом есть главная проблема для описательных данных - кажется, на нем нельзя сделать просмотр и редактирование их содержания в виде таблицы. А без табличного просмотра-редактирования работать с описательными данными труднее, меньше наглядность, общее понимание содержания. Это решаемо на C. Но с C другая засада - привязанность к версиям AutoCAD.
Новая команда - XDTOOLS_XD2XD, для переноса/добавления значений из поля в поле XData или из одного XData в другой - для одновременно присоединенных к выбранным объектам. Выбор XData здесь не ограничен только пользовательскими XData, доступны данные из XData самого AutoCAD. Например, для получения данных из гиперрсылок. (Являющихся тоже XData). В режиме Replace происходит замена значений. В режиме ADD - добавление. Для числовых полей это означает суммирование чисел. В т.ч. эта команда, вместе с XDTOOLS_MDEFINE, позволяет нормализовать одноименные/разноструктурные XData.