1. ВНИМАНИЕ! В течении пары дней +- будет переезд форума на более защищённый сервер. Возможны перебои в работе.
    Dismiss Notice

Открытый проект XDTOOLS - создание свободных инструментов для XData

Discussion in 'Autodesk' started by АлексЮстасу, Oct 4, 2021.

  1. АлексЮстасу

    АлексЮстасу Форумчанин

    В продолжение идеи удобного использования XData для придания любым объектам AutoCAD нужных дополнительных описательных характеристик. См. тему Собрать коллекцию программ для XData.

    Проект назвал XDTOOLS - создать 10-12 программ на Lisp, обеспечивающих основные действия с XData.
    Создание описаний нужных наборов характеристик, их изменения, добавление их к графическим элементам, просмотр/редактирование значений, выбор, экспорт. И т.п.
    - Программы должны быть безопасными, т.е. не нарушать установленные в документации лимиты для данных в XData, не препятствовать др. действиям в AutoCAD.
    - Программы должны быть полноценными, т.е. полно выполнять свои задачи. А так же действовать для любых примитивов AutoCAD.
    - Программы должны быть универсальными, т.к. решать задачи в общем виде - для любых XData.
    - Программы должны быть удобными для пользователей.

    Предназначены для свободного распространения.

    Присоединяйтесь! Задачи не сложные, не требуют изысканного высокопрофессионального программирования.
    Имена и контакты авторов станут известными в международном сообществе AutoCAD. :)

    Например, оч. неопытный программист смог сделать получение статистики XData в файле или для выбранных объектов - XDTOOLS_STAT.lsp.
    (Функцию поиска одноименных XData с различным составом данных написал опытный).
    Можно критиковать. :)

    ---------
    Спустя 3 года.
    Что есть сейчас:
    XDTOOLS_MDEFINE - создание, изменение, удаление определений XData. В т.ч. переименование XData Apps, добавление, удаление, изменение типа, последовательности полей XData.
    XDTOOLS_ADD - добавление к любым примитивам AutoCAD XData с нужными значениями. Для любого количества указанных объектов.
    XDTOOLS_REMOVE - удаление указанных XData у всех выбранных объектов AutoCAD.
    XDTOOLS_VEDIT - просмотр, ввод, редактирование значений в XData. Для любого количества указанных объектов.
    XDTOOLS_SELAPPS - выбор объектов с указанными XData Apps, для любого их количества. Для любого количества указанных объектов.
    XDTOOLS_SELVALUES - выбор объектов с указанными значениями в XData у указанных объектов.
    XDTOOLS_STAT - получение общей статистики об XData для указанных объектов и для всего dwg.
    XDTOOLS_CHECK - проверка dwg на возможные проблемы с XData.
    XDTOOLS_XD2XD - передача значений XData в другое поле или из одного в другой XData, присоединенных к одним объектам. Режим замены или добавления. При добавлении числовые значения суммируются с учетом знаков.
    XDTOOLS_2HYPERLINKS - создание гиперссылок из названий XData. Имеющиеся гиперссылки сохраняются в XData "SAVED_PE_URL".
    XDTOOLS_RETURNHYPERLINKS - восстановление исходных гиперссылок из сохраненных в XData "SAVED_PE_URL". Удаление XData "SAVED_PE_URL".
    XDTOOLS_ATTR2 - загрузка значений атрибутов блоков в поля XData, присоединенных к блокам. На основе текстового файла соответствий, создаваемого пользователем.
    XDTOOLS_2ATTR - загрузка значений из полей XData в атрибуты блоков. На основе текстового файла соответствий, создаваемого пользователем.
    XDTOOLS_ATTRFILE - создание шаблона текстового файла соответствия атрибутов полям XData.
    Структура файла соответствий: <Название блока> <Тег атрибута> <Название XData> <ID поля XData>.
    XDTOOLS_ID - создание идентификаторов/номеров с префиксами и суффиксами в указанном поле XData.
    XDTOOLS_PROP2 - загрузка значений свойств графических элементов в указанное поле XData.
    XDTOOLS_2PROP - назначение свойств графических элементов из значений в указанном поле XData.
    XDTOOLS_2CSV - выгрузка данных из XData в файлы csv, txt. В двух вариантах: общий файл и раздельно для каждого XData Application.
    XDTOOLS_CSV2 - загрузка данных из файлов csv, txt с однородной структурой в XData.
    XDTOOLS_REPLACEV - замена значений в указанном поле XData.

    Палитра (Ctrl 3) ру_XDTOOLS.xtp для этих команд в архиве, с иконкой. Палитра импортируется средствами TOOL PALETTES. Команды будут вызываться, если они загружены в AutoCAD.
     

    Attached Files:

    Last edited: Oct 24, 2024
    TulGeo likes this.
  2. АлексЮстасу

    АлексЮстасу Форумчанин

    Например, есть ключевая задача - создание и изменение описаний XData: переименовывать Apps, создавать новые описания Apps, менять состав полей их данных, порядок следования полей, тип полей.
    Для этого можно воспользоваться любезно выложенным решением Lee Mac для двух зависимых списков - http://www.lee-mac.com/listboxsync.html.
    В левой части, допустим, список имеющихся Apps. В правой - список полей данных выбранного Apps.
    Добавить кнопки действий: добавления App, удаления App, перемещения полей в списке, удаления их, добавления. При двойном нажатии, допустим, доступ к редактированию названия App или к замене типа данных поля.
    И т.п.
     
  3. АлексЮстасу

    АлексЮстасу Форумчанин

    Например, программа для проверки на возможные проблемы с XData - из-за их внутренних ограничений и действий пользователей - XDTOOLS_CHECK.lsp.
     

    Attached Files:

  4. АлексЮстасу

    АлексЮстасу Форумчанин

    Например, программа для просмотра/ввода/редактирования содержания XData - XDTOOLS_VEDIT.lsp.
     

    Attached Files:

  5. АлексЮстасу

    АлексЮстасу Форумчанин

    Например, программа для добавления XData к объектам - XDTOOLS_ADD.lsp.
     

    Attached Files:

  6. АлексЮстасу

    АлексЮстасу Форумчанин

    Например, ключевая для использования XData программа просмотра-редактирования определений XData - XDTOOLS_MDEFINE.lsp.

    Улучшенные и подправленные версии XDTOOLS_VEDIT.lsp и XDTOOLS_ADD.lsp.
     

    Attached Files:

  7. Павел55214

    Павел55214 Форумчанин

    А какой практический смысл использования XData, если можно на примере?
     
  8. АлексЮстасу

    АлексЮстасу Форумчанин

    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.
     
    Last edited: Jan 7, 2022
    Steinar, flareon and Qvinto like this.
  9. Павел55214

    Павел55214 Форумчанин

    Ну в ревит да, там все через поля данных. Можно свои наборы добавлять в проперти сет.
    --- Сообщения объединены, Jan 8, 2022, Оригинальное время сообщения: Jan 8, 2022 ---
    Наверное можно было бы сделать модель похожую на ревит. Типа менеджера атрибутов. Только сама иерархия классов ревит изначально под это заточена. А автокад нет. Поэтому что то похожее разработать надо очень постараться и на одном энтузиазма это не вывезешь.
     
  10. 1958

    1958 Форумчанин

    ЛЭП.jpg
    Может в чем-то и есть преимущество в использовании XData, но я поступаю проще. Я объектам присваиваю гиперссылку с необходимой информацией. Из гиперссылки всегда можно вытащить информацию во внешний файл. И, самое главное, просто наведя курсор на объект, сразу получаешь доп.информацию.
     

    Attached Files:

    flareon and Neznayka like this.
  11. АлексЮстасу

    АлексЮстасу Форумчанин

    Весьма кстати!
    Я тоже не сразу узнал, и понял, что далеко не все программисты (или даже практически никто) знают, что гиперссылки - это именно что XData, с названием PE_URL.
    Можете убедиться с XDLIST.
     
    Steinar likes this.
  12. АлексЮстасу

    АлексЮстасу Форумчанин

    Продолжаем.
    Например, выбор объектов с указанными XData - XDTOOLS_SELAPPS.lsp.
    Можно выбрать сразу несколько XData Apps, выбор можно сделать обратным - опция "without the chosen" ("без указанного").
    Т.о. можно выбрать объекты с указанными XData Apps, без этих XData Apps, имеющие XData Apps, без XData Apps.

    Кстати, все lsp содержат и русифицированный вариант - сейчас закомментирован.
     

    Attached Files:

  13. zvezdochiot

    zvezdochiot Форумчанин

    А есть у lisp какой-либо независящий от кодировок i18n-механизм? Пытался заморочится этим, но быстро обломился, кроме использования uni-кодов ничего не нашёл.
     
  14. АлексЮстасу

    АлексЮстасу Форумчанин

    Spoiler

    Чо? ::biggrin24.gif::
    Я не программист!
    Могу легко попасть пальцем в небо, но выложу все, что покажется похожим и пролетало мимо.
    Возможно, Вы имеете в виду, чтобы язык выбирался автоматом в зависимости от языка Win или AutoCAD?
    Я краем зацепил такое. С программами VVA. Кажется, с bgtools.
    Вот, сейчас там чисто на здравом смысле нашел:
    Code:
    (if (= (getvar "DWGCODEPAGE") "ANSI_1251")
          "Выберите динамические блоки"
          "Select dynamic blocks"
          )

    Лучше вопросы за пределами темы XDTOOLS задавать не здесь.

    Наверное, попозже попробуем сделать автоматическое включение русских надписей...
     
    Last edited: Jan 21, 2022
    zvezdochiot likes this.
  15. АлексЮстасу

    АлексЮстасу Форумчанин

    Обновленные улучшенные уточненные версии всех 6 команд - XDTOOLS-v-0-4.zip.
    В т.ч. и предыдущей XDTOOLS_SELAPPS.lsp.
     

    Attached Files:

  16. АлексЮстасу

    АлексЮстасу Форумчанин

    Новая команда - XDTOOLS_REMOVE, для удаления указанных XData у выбранных объектов.
    Вместе с некоторыми обновлениями-исправлениями предыдущих, см. архив.
     

    Attached Files:

  17. АлексЮстасу

    АлексЮстасу Форумчанин

    Новая команда - XDTOOLS_SELVALUES, для выбора объектов с указанными значениями в XData у выбранных объектов.
    Действует маска - "*" для символьных значений, и для любых значений действует выбор на >, < и <> (не равно).
    Введенное в поле выбора значение означает выбор всех объектов с такими значениями. Пустое значение означает выбор с отсутствующим значением.

    Читал, что такой выбор для XData почему-то невозможен. Возможен, и сделан, и действует.
     

    Attached Files:

  18. Павел55214

    Павел55214 Форумчанин

    Ты наконец таки изучил C# и пишешь функции или нашел того кто пишет их для тебя?
     
  19. АлексЮстасу

    АлексЮстасу Форумчанин

    Это Lisp.
    У меня голова не приспособлена для программирования. Это открытый проект - пишут желающие программисты.
    И не для меня - для всех.

    С лиспом есть главная проблема для описательных данных - кажется, на нем нельзя сделать просмотр и редактирование их содержания в виде таблицы. А без табличного просмотра-редактирования работать с описательными данными труднее, меньше наглядность, общее понимание содержания.
    Это решаемо на C. Но с C другая засада - привязанность к версиям AutoCAD.
     
  20. АлексЮстасу

    АлексЮстасу Форумчанин

    Новая команда - XDTOOLS_XD2XD, для переноса/добавления значений из поля в поле XData или из одного XData в другой - для одновременно присоединенных к выбранным объектам.
    Выбор XData здесь не ограничен только пользовательскими XData, доступны данные из XData самого AutoCAD. Например, для получения данных из гиперрсылок. (Являющихся тоже XData).
    В режиме Replace происходит замена значений. В режиме ADD - добавление. Для числовых полей это означает суммирование чисел.

    В т.ч. эта команда, вместе с XDTOOLS_MDEFINE, позволяет нормализовать одноименные/разноструктурные XData.
     

    Attached Files:

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice