• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Редактировать 3D-макрообъект

Автор olden, 18.03.06, 23:18:39

« назад - далее »

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

olden

Как создать 3D-макрообъект я разобрался. Как редактировать параметры объекта при помощи библиотеки? 8-) 8-) 8-)

IronMaxxx

Для того, чтоб редактировать параметры, их сначала нужно записать в динамический массив переменных типа ksLtVariant, а потом сохранить вместе с моделью с помощью метода ksMacro3DDefinition::SetUserParam. При редактировании макроэлемента через библиотеку (ksDocument3D::IsEditMode() возвращает true), этот массив нужно считать с помощью метода ksMacro3DDefinition::GetUserParam, а в зависимости от полученных значений уже как-либо изменять настройки главного окна библиотеки или другие параметры.
Получить указатель на редактируемый макро можно так:

                                    ...
              actDoc3 := ksDocument3D(kompas.ActiveDocument3D);
              if (not actDoc3.IsEditObject()) then exit;
              iMacroObject := ksEntity(actDoc3.GetEditMacroObject);
              iMacroDef := ksMacro3DDefinition(iMacroObject.GetDefinition);
                                    ...

а считать сам массив пользовательських переменных:

              param := ksUserParam(kompas.GetParamStruct(ko_UserParam));
              param.Init;
              arr := ksDynamicArray(kompas.GetDynamicArray(LTVARIANT_ARR));
              item := ksLtVariant(kompas.GetParamStruct(ko_LtVariant));
              item.Init;
              for i := 0 to Nparam do
                begin
                  Item.intVal := i;
                  Arr.ksAddArrayItem(-1, Item);
                end;
              param.SetUserArray(arr);
              iMacroDef.GetUserParam(param);
              for i := 0 to Nparam do
                begin
                  arr.ksGetArrayItem(i, item);
                  tmpUserArr := item.intVal;
                end;
              // обработка полученых данных

olden

Спасибо. Это я понял. Но неполучается у меня запихнуть в макро свои параметры(ksMacro3DDefinition::SetUserParam). Выдает ошибку или вообще молчит, только создает макрообъект без возможности его редактирования. Если несложно можно объяснить по-подробние что должно входить в ksMacro3DDefinition::SetUserParam.