Привет всем. Для созданного в чертеже макрообъекта, можно через панель свойств задавать Обозначение и Наименование (при желании еще и другие свойства), эти данные отображаются в дереве, их удобно использовать для селектирования объектов или для создания отчетов. А вот как задать эти параметры программно при создании макрообъекта ума не приложу. GetObjParam и SetObjParam не канают. Есть вроде бы доступ через интерфейс IMacroObject -> IPropertyKeeper может там оно? но никак не могу получить указатель на свой создаваемый программно макрообъект.
Как получить указатель имея референс? Тупняк какой-то.
Использовать Macro3D --> ksEntity.
IMacroObject, свойств хватает, но не пользовался.
не понял как это мне поможет
Короче нашел сам ) если кому понадобится.
У коллекции MacroObjects есть свойство Get_MacroObject(index) возвращает IMacroObject если передать в качестве индекса референс.
Итого:
...IKompasDocument2D->ViewsAndLayersManager->Views->(ActiveView as IDrawingContainer)->MacroObjects->Get_MacroObject(refmacro)
ну и далее as IPropertyKeeper
Но, вот видите, разобрались самим, всё очень просто.
Цитата: Nipal от 02.12.23, 20:22:16Но, вот видите, разобрались самим, всё очень просто.
а так всегда. пол дня бьешься об стену башкой, а стоит написать в форум так через 10 минут осинит обязательно. спасибо форумам)))
для задания и получения свойств макроэлемента https://forum.ascon.ru/index.php?topic=29948.20
для себя напоминалку добавлю.
можно использовать функцию преобразования ksTransferReference
имеем референс объекта (макроэлемента) ref: reference
хотим получить интерфейс Api7 im:IMacroObject
im:=iunknown(ksTransferReference(ref, 0)) as IMacroObject;