Динамические свойства. Возможность создания новых свойств в Runtime

Автор Тема: Динамические свойства. Возможность создания новых свойств в Runtime  (Прочитано 6558 раз)

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

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

  • ADN OPEN
  • **
  • Сообщений: 50
  • Карма: 1
  • //Я не программист
Добрый день, по мере анализа функциональности динамических свойств задался вопросом, а можно ли реализовать добавление новых свойств и новых категорий, определив в коде конструкторы/методы для них?
Во всех примерах что я вижу вводится некоторый класс, наследующий интерфейс в том числе IDynamicProperty и для этого класса вводится пустой конструктор в реализации которого задаются нужные Автору кода имена и тип данных ... как я понял пустой конструктор это вынужденная мера для логики функции COM CreateInstance, верно же? Даже введя вспомогательные методы а-ля
Код - C++ [Выбрать]
  1. void set_name(bstr_t name);
  2. void set_type(VARTYPE type);
  3. void set_order(int order);
и реализовав их после отработки CreateInstance я не наблюдаю новые свойства в перечне своей категории (в качестве контейнера для всех свойств категории создал контейнер вида
Код - C++ [Выбрать]
  1. static std::vector< CComObject<my_class>*> categorized_props;
Но ненаблюдение наверное следствие того что я не сохраняю их в XData ...


В общем интересует в принципе, можно ли создавать произвольные свойства во время работы с чертежом (например из отдельного диалогового окна из пользовательского ввода - типа "создать свойство типа string для всех объектов" с его появлением у объектов), оставив в коде функциональность для этого, или это невозможно в принципе и динамические свойства могут лишь описываться в коде и никак их не видоизменить уже в модели (исключая настройку отображения свойств в окне настройки cuix)?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Несколько раз перечитал, но ничего не понял.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 50
  • Карма: 1
  • //Я не программист
Попробую перефразировать от обратного:

Пользователь с помощью этого приложения сможет создавать (регистрировать) новые свойства (имя, тип, к каким классам относится), и они будут появляться у соответствующих объектов. И храниться в файлах. Функциональный аналог - Property Sets в Civil3D.
Вопрос в принципиальной возможности сделать такое при помощи динамических свойств.
Во всяком случае, добавить новое свойство у меня получилось ... интересны границы применимости подхода.

Я тут в вопросе копался и выяснил что COM-обёртки якобы не являются обязательными (или не в полной мере) если нет цели поддерживать доступ к ним из других языков (?), а то количество вспомогательного кода напрягает....

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Я тут в вопросе копался и выяснил что COM-обёртки якобы не являются обязательными (или не в полной мере) если нет цели поддерживать доступ к ним из других языков (?), а то количество вспомогательного кода напрягает...
Они действительно необязательны (смотри эти статьи: https://adn-cis.org/search.html?query=НЕ-COM )
Но у них есть ограничения по сравнению с COM.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение