Кастомные свойства custom entity

Автор Тема: Кастомные свойства custom entity  (Прочитано 17222 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Кастомные свойства custom entity
« Ответ #15 : 25-09-2018, 13:54:01 »
Это поле редактируется в панели свойств или только показывается?
Редактируется. - это что то меняет? - Если это можно реализовать но много возни просто напишите как я сам разберусь
Я для того, чтобы понять как ты с этим собираешься работать. А если выбрано несколько разных MLeader и у них эти поля разные? Или показывать и позволять редактировать только если выбран один MLeader? Там есть тоже куча нюансов.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 66
  • Карма: 1
Re: Кастомные свойства custom entity
« Ответ #16 : 25-09-2018, 14:06:59 »
Я для того, чтобы понять как ты с этим собираешься работать. А если выбрано несколько разных MLeader и у них эти поля разные? Или показывать и позволять редактировать только если выбран один MLeader? Там есть тоже куча нюансов.
Ну для такого случая я видел как автокад показывает свойство одного имени с разными значениями - в поле "значение" будет что то вроде *Разные* - и если задать какое-то конкретное - то это значение примениться ко всем обьектам. Тоесть я не думал о какой-то специальной логике.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Кастомные свойства custom entity
« Ответ #17 : 25-09-2018, 14:31:44 »
Я приаттачил проект, но не проверял его. Будем считать, что он может использоваться в качестве учебного пособия.

UPD. Проект удалил, так как в нём много ошибок.
« Последнее редактирование: 25-09-2018, 17:39:27 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 66
  • Карма: 1
Re: Кастомные свойства custom entity
« Ответ #18 : 25-09-2018, 14:39:14 »
Спасибо большое!

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Кастомные свойства custom entity
« Ответ #19 : 25-09-2018, 15:07:28 »
А вот этот проект я проверил и на первый взгляд он вполне рабочий.  Не забудь только в Autodesk.arx-2018.props изменить путь к ObjectARX SDK. У меня он так записан:
Код - XML [Выбрать]
  1. <ArxSdkDir>E:\ObjectARX2018\</ArxSdkDir>

Так это у меня выглядит:
« Последнее редактирование: 25-09-2018, 17:38:33 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 66
  • Карма: 1
Re: Кастомные свойства custom entity
« Ответ #20 : 25-09-2018, 16:57:12 »
Спасибо, за видео. Я посмотрел проект - чуть позже более глубоко поразбираюсь. Просто несколько вопросов по дин свойствам которые у меня возникли:
1. Можно ли ли порядок отображения в окне свойств настраивать чтобы новые свойства были выше свойств TEXT?
2. Можно ли в одном классе обьявлять несколько свойств?
3. Я заметил в idl файле не прописываются геттеры и сеттеры как в случае с  со статическими свойствами?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Кастомные свойства custom entity
« Ответ #21 : 25-09-2018, 17:03:06 »
1. Можно ли ли порядок отображения в окне свойств настраивать чтобы новые свойства были выше свойств TEXT?
Нет. Этим управляет AutoCAD. Можно попробовать поиграться с именем категории. Возможно изменится порядок - я не проверял.
2. Можно ли в одном классе обьявлять несколько свойств?
Нет. Один класс - одно свойство.
3. Я заметил в idl файле не прописываются геттеры и сеттеры как в случае с  со статическими свойствами?
Да. Всё в классе.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 66
  • Карма: 1
Re: Кастомные свойства custom entity
« Ответ #22 : 25-09-2018, 17:26:20 »
Нет. Один класс - одно свойство.
Тоесть если надо создать несколько свойств - мы создаем несколько классов. А сгруппировать их в одной категории в итоге можно или в системную подсунуть в данном случае у вас есть категория "MLeadear - доп. свойства"? и там свойство "Текстовый формат"?
Или только отдельный класс, отдельная категория, отдельное свойство?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Кастомные свойства custom entity
« Ответ #23 : 25-09-2018, 17:34:50 »
Тоесть если надо создать несколько свойств - мы создаем несколько классов.
Да.
А сгруппировать их в одной категории в итоге можно
Да.
Вот пример моего плагина GeomProps. В нём четыре отдельных класса - четыре отдельных свойства.



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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Кастомные свойства custom entity
« Ответ #24 : 25-09-2018, 17:40:29 »
Опс! Обратил внимание, что забыл приаттачить исправленный проект. Исправил в http://adn-cis.org/forum/index.php?topic=8743.msg34096#msg34096
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Кастомные свойства custom entity
« Ответ #25 : 26-09-2018, 00:34:48 »
Добавлю ка я сюда кое-что из документации, которую я когда-то сказал в ADN. Сейчас уже сайта нет, так что найти эти файлы негде.
Всё это старое, но это не значит, что устаревшее.
property_palette_-_vol_i.zip
simpledynpropsvs9.zip
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 66
  • Карма: 1
Re: Кастомные свойства custom entity
« Ответ #26 : 04-10-2018, 16:29:02 »
Как я понял с помощью функции можно управлять отображением видимостью динамического свойства для конкретного обьекта,
Как с помощью  IUnknown *pUnk проверить есть ли у текущего обьекта xdata или нет, спасибо.
Код - C++ [Выбрать]
  1.  STDMETHODIMP CMLeaderDynProp::IsPropertyEnabled (IUnknown *pUnk, BOOL *pbEnabled) {
  2.         if ( pUnk == NULL )
  3.                 return (E_INVALIDARG) ;
  4.         pUnk->QueryInterface()
  5.        
  6.         if ( pbEnabled == NULL )
  7.                 return (E_POINTER) ;
  8.         // TODO: add your code here (and comment the line below)
  9.         *pbEnabled =TRUE ;
  10.  
  11.         return (S_OK) ;
  12. };

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

  • ADN OPEN
  • **
  • Сообщений: 66
  • Карма: 1
Re: Кастомные свойства custom entity
« Ответ #27 : 04-10-2018, 16:53:22 »
Кажется сам нашел в примере что вы скинули, где l_unkn это IUnknown *
Код - C++ [Выбрать]
  1.             IAcadObject *l_base = 0;
  2.             if (!SUCCEEDED(l_unkn->QueryInterface(IID_IAcadObject, (void **)&l_base)))
  3.             {
  4.               continue;
  5.             }
  6.             AcDbObjectId  l_oid;
  7.             LONG_PTR l_long = 0;
  8.             if (SUCCEEDED(l_base->get_ObjectID(&l_long)))
  9.             {
  10.               l_oid.setFromOldId(l_long);
  11.             }
  12.  
  13.  

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Кастомные свойства custom entity
« Ответ #28 : 04-10-2018, 16:57:49 »
Кажется сам нашел в примере что вы скинули, где l_unkn это IUnknown *
Да. Альтернативный вариант:
Код - C++ [Выбрать]
  1. CComQIPtr<IAcadBaseObject> pObj(pUnk);
Ну и дальше по сценарию.

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