xData примитива в окно Properties

Автор Тема: xData примитива в окно Properties  (Прочитано 8840 раз)

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

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 2
Поиск ничего не дал. Возможно ли при выборе примитива, содержащего xData, добавить их(его) в окно свойств?

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: xData примитива в окно Properties
« Ответ #1 : 15-08-2019, 11:53:20 »
добавить их(его) в окно свойств?
Их (его) это о чем? Что должно быть в окне свойств?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 2
Re: xData примитива в окно Properties
« Ответ #2 : 15-08-2019, 11:58:41 »
Александр Ривилис,  xData примитива. int, double, string, enum tag, string list

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: xData примитива в окно Properties
« Ответ #3 : 15-08-2019, 12:10:01 »
Александр Ривилис,  xData примитива. int, double, string
Понятно. Не самое простое приложение будет. Нужно создавать COM-сервер, который добавляет динамические свойства в Панель свойств (OPM). Если установлен ObjectARX Wizard, то создать заготовку можно так:


Сразу скажу, что это будет очень не просто.

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 2
Re: xData примитива в окно Properties
« Ответ #4 : 15-08-2019, 12:25:47 »
Александр Ривилис, ObjectARX Wizard установлен. Но там всего 3 пункта.



А без COM никак?

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: xData примитива в окно Properties
« Ответ #5 : 15-08-2019, 12:33:20 »
А без COM никак?
Есть еще НЕ-COM API, но оно недоделанное. Наверняка на проблемы нарвешься:
https://adn-cis.org/search.html?query=%D0%9D%D0%95-COM
Александр Ривилис, ObjectARX Wizard установлен. Но там всего 3 пункта.

Не там. После создания проекта через ObjectARX Wizard (обязательно выбрать режим "Implement COM-server..."):



А вот после этого Project->Add New item...:

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 2
Re: xData примитива в окно Properties
« Ответ #6 : 15-08-2019, 12:50:36 »
Есть еще НЕ-COM API, но оно недоделанное
Не-COM уже обсуждалось https://adn-cis.org/forum/index.php?topic=9213.0
C COM не общался и рыбу толковую не нашёл. Как я понимаю, кроме геморроя с кодом там ещё будет геволт с регистрацией com-сервера и админправами. Очень не хотелось бы вляпаться в это удовольствие...

Не COM на custom entity работает (int, double, string). Крайне не хватает string list (enum). И как прикрутить xData к не-com ума не приложу )

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: xData примитива в окно Properties
« Ответ #7 : 15-08-2019, 12:52:09 »
И как прикрутить xData к не-com ума не приложу )
Так же как и любые другие данные. Сам должен придумать логику работы.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 2
Re: xData примитива в окно Properties
« Ответ #8 : 15-08-2019, 12:58:30 »
Так же как и любые другие данные. Сам должен придумать логику работы

Логику придумать - дело третье. Первое - как активировать без custom entity эти проперти в выбранном примитиве(примитивах)

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: xData примитива в окно Properties
« Ответ #9 : 15-08-2019, 13:03:27 »
Пример отсюда смотрел: https://adn-cis.org/perezentacziya-(devtv)-ne-com-sistema-svojstv.html ?

P.S.: Всё-таки рекомендую через COM-сервер. В админских правах необходимости нет. Здесь уже обсуждалось.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 2
Re: xData примитива в окно Properties
« Ответ #10 : 15-08-2019, 13:12:29 »
Смотрел. Оттуда и взял. Enum там не рабочий
В админских правах необходимости нет
А как же регистрация com-сервера?

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: xData примитива в окно Properties
« Ответ #11 : 15-08-2019, 13:24:26 »
А как же регистрация com-сервера?
То что нужно, регистрируется под обычным пользователем: https://adn-cis.org/forum/index.php?topic=7087.msg21074#msg21074

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 2
Re: xData примитива в окно Properties
« Ответ #12 : 15-08-2019, 13:34:29 »
Александр Ривилис,  буду пробовать )
Хотя не-com бы прикрутил, даже недоделанный... Если получится активировать

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 2
Re: xData примитива в окно Properties
« Ответ #13 : 29-08-2019, 13:28:08 »
Соорудил с помощью Wizard COMserver + EnumDynamicProperties
Регистрация сервера проходит, свойство отображается.
Но при выгрузке модуля и попадании курсора на примитив, которому было задано COMсвойство Autocad слетает с fatal error.

Похоже, что COM-properties некорректно выгружается... ?? Код оригинальный, ничего своего - только wizard

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: xData примитива в окно Properties
« Ответ #14 : 29-08-2019, 13:29:35 »
Но при выгрузке модуля и попадании курсора на примитив, которому было задано COMсвойство Autocad слетает с fatal error.

Похоже, что COM-properties некорректно выгружается... ?? Код оригинальный, ничего своего - только wizard
Модули с COM-объектом нельзя выгружать. Если быть точным, то можно, но тогда нужно создавать не с помощью wizard. Но это очень громоздко получается. Я в своё время на это плюнул, так как выгрузка нужна только для отладки...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 2
Re: xData примитива в окно Properties
« Ответ #15 : 29-08-2019, 13:44:19 »
Александр, ясно.
Ещё один вопрос:
Два свойства. Одно зависит от другого. При изменении ведущего возникает необходимость сообщить зависимому, что оно изменено и список нужно обновить. Как это сделать? Не могу найти

Если быть точным, то можно, но тогда нужно создавать не с помощью wizard

Можно и руками, если понять схему выгрузки, а ещё лучше + пример

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: xData примитива в окно Properties
« Ответ #16 : 29-08-2019, 14:33:47 »
При изменении ведущего возникает необходимость сообщить зависимому, что оно изменено и список нужно обновить. Как это сделать? Не могу найти
В XXX::SetCurrentValueData вызываешь:
Код - C++ [Выбрать]
  1. if (m_pNotify) m_pNotify->OnChanged(pUnk);
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 2
Re: xData примитива в окно Properties
« Ответ #17 : 29-08-2019, 14:45:01 »
if (m_pNotify) m_pNotify->OnChanged(pUnk);

Дело не в этом, а в том что нужно вызвать метод одного класса из другого класса...
Из одного пропертия обновить другое.
При том что переменные динамические, ещё и поймать момент, когда значения действительны

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: xData примитива в окно Properties
« Ответ #18 : 29-08-2019, 14:54:49 »
Из одного пропертия обновить другое.
Так не получится. Изменение какого-то динамического свойства (через SetCurrentValueData) приводит к вызову GetCurrentValueData для других свойств ассоциированных с этим объектом (объектами). Так, например, работает у меня в GeomProps, когда меняют "Линейный масштабный коэффициент". При этом все ассоциированные свойства (периметр, площадь, объем) пересчитываются.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 2
Re: xData примитива в окно Properties
« Ответ #19 : 29-08-2019, 15:07:06 »
Так не получится. Изменение какого-то динамического свойства (через SetCurrentValueData) приводит к вызову GetCurrentValueData для других свойств ассоциированных с этим объектом

У меня не приводит... Имеются 2 enuma. Изменение одного, должно вызывать изменение списка второго. Но список обновляется только при сбросе набора и повторном выборе.
По идее, если в момент между connect и disconnect передать два указателя *m_pNotify и this, то из SetCurrentValueData одного свойства можно вызвать m_pNotify->OnChanged(this) другого...

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: xData примитива в окно Properties
« Ответ #20 : 29-08-2019, 15:13:22 »
По идее, если в момент между connect и disconnect передать два указателя *m_pNotify и this, то из SetCurrentValueData одного свойства можно вызвать m_pNotify->OnChanged(this) другого...
Очень сильно сомневаюсь. В COM такие вещи не делают. Почитай в Autodesk ObjectARX for AutoCAD 20XX: Developer's Guide > Using COM for ObjectARX Development > Property Inspector and Properties Palette APIs > Property Inspector Notification Framework >
Setting Up Property Event Notifications
. Может что-то полезное раскопаешь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 114
  • Карма: 2
Re: xData примитива в окно Properties
« Ответ #21 : 30-08-2019, 11:30:52 »
Решилось гораздо проще, без хитромудрых интерфейсов COM:
1. сохранить указатель на объект класса свойства
2. из другого свойства через указатель - установка нужных значений локальных переменных класса, например    m_enumLenght,  *m_enumType, m_readOnly и т.д.
И не трогать динамические переменные COM интерфейса