Чем добавить примитивам автокада свои (пользовательские) атрибуты

Автор Тема: Чем добавить примитивам автокада свои (пользовательские) атрибуты  (Прочитано 3873 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн zr74Автор темы

  • ADN OPEN
  • Сообщений: 46
  • Карма: 1
Добрый день, подскажите пожалуйста, чем можно добавить примитивам автокада свои (пользовательские) атрибуты, но не с помощью Хdata. Чтобы можно было программно (c#) эти атрибуты присваивать, назначать различные типы (число, текст), изменять значения, удалять, делать для пользователя их не видимыми в палитре свойств (ctrl+1)? Чтобы можно было обращаться как с атрибутами блока?

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 809
  • Карма: 166
    • Мои плагины к Автокаду
Проблема как раз сделать новые свойства видимыми в палитре свойств. А невидимые метаданные вы можете хранить где угодно и как угодно - ограничено только вашей фантазией.

Оффлайн zr74Автор темы

  • ADN OPEN
  • Сообщений: 46
  • Карма: 1
Если записывать метаданные можно куда угодно, то получается узнать если у примитива какие-то невидимые атрибуты, присвоенные другой программой (плагином), не возможно?

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 809
  • Карма: 166
    • Мои плагины к Автокаду
Это вам придумывать, как программа прочитает данные. Логично в базе данных сделать ссылку на объект чертежа. Достаточно хранить полное имя dwg-файла и хэндл объекта чертежа, чтоб всегда иметь возможность найти данные по объекту и объект по данным. А если прямо в чертеже хранить данные - то в пользовательских словарях есть рабочий механизм связи с объектами по id. ну и с xData совсем уже просто - она вся в объекте и хранится (не знаю чем она вам не подходит)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
zr74,
Сформулируйте четче что нужно. По тому что вы описали Xdata вполне подходит. В крайнем случае (если объем информации велик) можно воспользоваться Extended Dictionary и Xrecord.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Захаров Максим

  • ADN OPEN
  • ***
  • Сообщений: 139
  • Карма: 3
Я бы рекомендовал Наборы данных PropertySet

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 809
  • Карма: 166
    • Мои плагины к Автокаду
Я бы рекомендовал Наборы данных PropertySet
Что за зверь? Почему я не в курсе?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Что за зверь? Почему я не в курсе?
Их нет в чистом AutoCAD - есть в Civil 3D, AA и MEP.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн zr74Автор темы

  • ADN OPEN
  • Сообщений: 46
  • Карма: 1
По поводу подробней описать, что требуется:
Есть сторонний плагин для автокад, который для выполнения своих задач примитивам (отрезок, полилиния) присваивает невидимые атрибуты с определенными значениями. Эти атрибуты в палитре свойств автокада c(trl+1) не видно. Данные атрибуты доступны к редактированию и обзору только в палитре свойств самого плагина. У плагина практически нет инструментов для группового редактирования, копирования, поиска и т.д. этих атрибутов, что делает процесс работы с этим плагином не очень удобным. Задача: найти где и под каким названием (в каких переменных) эти атрибуты хранятся внутри чертежа, написать на c# дополнительные функции (возможности) для этого плагина. Нашел код "GetXdata" и проверил им если у примитивов, созданных данным плагином атрибуты Xdata, выяснилось, что таких атрибутов нет. Поэтому и возник вопрос каким образом еще могут на чертеже храниться эти метаданные, и с помощью каких средств c# их достать. Знаю точно, что плагин написан на c#.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Покажи dwg-файл с таким примитивом (и отметь этот примитив, чтобы его не искать). Кстати, для исследования очень полезны ARXDBG и MGDDBG (смотри закрепленную тему).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн zr74Автор темы

  • ADN OPEN
  • Сообщений: 46
  • Карма: 1
с помощью ARXDBG и MGDDBG смотрел, ничего не нашел. Прикрепляю файл с примитивами и вставленными картинками свойств, которые показываются в в палитре свойств самого плагина.

Отмечено как Решение Александр Ривилис 20-07-2022, 13:33:48

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
с помощью ARXDBG и MGDDBG смотрел, ничего не нашел.
Плохо искал. У примитива есть Extension Dictionary и XRecord. В XRecord похоже вся информация в строке в формате XML:


Вот это в XRecord:
Код - XML [Выбрать]
  1. ((-1 . <Entity name: 2a0a0430>) (0 . "XRECORD") (5 . "2AFB") (102 . "{ACAD_REACTORS") (330 . <Entity name: 2a0a0310>) (102 . "}") (330 . <Entity name: 2a0a0310>) (100 . "AcDbXrecord") (280 . 1) (1 . "<Trench>\r\n  <Name>Т-1</Name>\r\n  <ObjectType>trench</ObjectType>\r\n  <Number>ТК-1</Number>\r\n  <Length_redef>0</Length_redef>\r\n  <UseRedefLength>false</UseRedefLength>\r\n  <Width>0.2</Width>\r\n  <Depth>0.9</Depth>\r\n  <SandLlayer>0.3</SandLlayer>\r\n  <TiltAngle>0</TiltAngle>\r\n  <IsStandard>true</IsStandard>\r\n  <Parts>\r\n    <Part name=\"CTG12-160-K04-006-R\" quantity=\"2\" sendInSpecification=\"True\" comment=\"\" />\r\n  </Parts>\r\n  <Parts_1m>\r\n    <Part name=\"Кирпич М75\" quantity=\"8.34\" sendInSpecification=\"True\" comment=\"\" />\r\n  </Parts_1m>\r\n</Trench>"))
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн zr74Автор темы

  • ADN OPEN
  • Сообщений: 46
  • Карма: 1