Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Андрей Бушман от 25-11-2013, 17:20:28

Название: Флаги пользовательских свойств подшивок
Отправлено: Андрей Бушман от 25-11-2013, 17:20:28
Доброго времени суток.

API подшивок позволяет создавать пользовательские свойства элементам подшивки, присваивая им определённые флаги (PropertyFlags). Эти флаги регламентируют, к чему относятся свойства: к подшивке в целом или же к её листу (sheet). Однако имеются и два дополнительных варианта этого флага: PropertyFlags.EMPTY и PropertyFlags.IS_CHILD. Документация по обозначенному флагу отсутствует (смотрел файл acad_sso.chm).

Подскажите, для каких целей существуют флаги PropertyFlags.EMPTY и PropertyFlags.IS_CHILD? В каких случаях используются эти флаги и вообще, какие комбинации флага PropertyFlags допускаются (помимо одиночного значения)?

Для наглядности показываю маленький набросок кода, в котором я создаю пользовательские свойства всех четырёх типов и добавляю их подшивке. Код работает без ошибок, значит имеется возможность создавать свойства всех четырёх вариантов.
Код - C# [Выбрать]
  1. using Ss = ACSMCOMPONENTS17Lib; // Sheet Set
  2. ...
  3. // Create the custom properties for the sheet set:
  4. Ss.AcSmCustomPropertyBag bag = sheet_set.GetCustomPropertyBag();
  5. // The custom property of the sheet set's level
  6. Ss.AcSmCustomPropertyValue sheetset_prop = new Ss.AcSmCustomPropertyValue();
  7. sheetset_prop.InitNew(bag);
  8. sheetset_prop.SetValue("Ivan");
  9. sheetset_prop.SetFlags(Ss.PropertyFlags.CUSTOM_SHEETSET_PROP);
  10. bag.SetProperty("Boss", sheetset_prop);
  11. // The custom property of the sheet's level
  12. Ss.AcSmCustomPropertyValue sheet_prop = new Ss.AcSmCustomPropertyValue();
  13. sheet_prop.InitNew(bag);
  14. sheet_prop.SetValue("Peter");
  15. sheet_prop.SetFlags(Ss.PropertyFlags.CUSTOM_SHEET_PROP);
  16. bag.SetProperty("Supervisor", sheet_prop);
  17. // The empty custom property (unknown level)
  18. Ss.AcSmCustomPropertyValue empty_prop = new Ss.AcSmCustomPropertyValue();
  19. empty_prop.InitNew(bag);
  20. empty_prop.SetValue("This is the empty property's value...");
  21. empty_prop.SetFlags(Ss.PropertyFlags.EMPTY); // What the PropertyFlags.EMPTY means?
  22. bag.SetProperty("empty_property", empty_prop);
  23. // The "is child" custom property (unknown level)
  24. Ss.AcSmCustomPropertyValue child_prop = new Ss.AcSmCustomPropertyValue();
  25. child_prop.InitNew(bag);
  26. child_prop.SetFlags(Ss.PropertyFlags.IS_CHILD); // // What the PropertyFlags.IS_CHILD means?
  27. child_prop.SetValue(true); // I think it is the Boolean value, or the Int32 [1|0] value.
  28. bag.SetProperty("is_child_property", child_prop);
  29. ...

Спасибо.
Название: Re: Флаги пользовательских свойств подшивок
Отправлено: Александр Ривилис от 26-11-2013, 10:46:48
У меня есть предположения для чего эти флаги, но так как нет уверенности в правильности предположений решил отправить этот вопрос в ADN DevHelp.
Название: Re: Флаги пользовательских свойств подшивок
Отправлено: Андрей Бушман от 26-11-2013, 10:49:16
решил отправить этот вопрос в ADN DevHelp.
Спасибо, жду результат. :)
Название: Re: Флаги пользовательских свойств подшивок
Отправлено: Александр Ривилис от 01-12-2013, 03:49:19
Получил частичный ответ:
Цитировать
...Документация SheetSet API весьма ограничена...
Из того, что мне известно, PropertyFlags.Empty может быть использован для создания пользовательского свойства, которое не будут отображаться в AutoCAD UI в разделе пользовательских свойств.
Что касается PropertyFlags.IS_CHILD, то я не нашел ни одного примера его использования.
Я свяжусь с нашей командой инженеров по поводу обоих этих флагов и когда от них будет информация сообщу.
Название: Re: Флаги пользовательских свойств подшивок
Отправлено: Андрей Бушман от 01-12-2013, 09:31:52
Спасибо.
Я свяжусь с нашей командой инженеров по поводу обоих этих флагов и когда от них будет информация сообщу.
С интересом жду ответа.
Название: Re: Флаги пользовательских свойств подшивок
Отправлено: Александр Ривилис от 07-12-2013, 19:51:30
Пришел ответ от команды инженеров:
Цитировать
PropertyFlags.Empty используется для инициализации переменной перед получением пользовательского свойства.
PropertyFlags.IS_CHILD в данный момент не используется и предназначен для будущих расширений.

Название: Re: Флаги пользовательских свойств подшивок
Отправлено: Андрей Бушман от 07-12-2013, 20:01:53
Пришел ответ от команды инженеров:
Цитировать
PropertyFlags.Empty используется для инициализации переменной перед получением пользовательского свойства.
PropertyFlags.IS_CHILD в данный момент не используется и предназначен для будущих расширений.
Спасибо.