Форум пользователей ПО АСКОН

Профессиональные вопросы => Программирование приложений => Тема начата: Lemieux от 17.01.25, 13:25:35

Название: Как добавить манипулятор у процесса
Отправлено: Lemieux от 17.01.25, 13:25:35
Есть вот такой код

            IApplication application = Marshal.GetActiveObject("KOMPAS.Application.7") as IApplication;
            IKompasDocument3D1 activeDocument = application.ActiveDocument as IKompasDocument3D1;
            IProcess3D process3D = activeDocument.LibProcess[ksProcess3DTypeEnum.ksProcess3DPlacementAndEntity];
            process3D.Placement.SetOrigin(50, 50, 50);
            IBaseManipulator baseManipulator = process3D.Manipulators.Add(ksManipulatorTypeEnum.ksPlacement3DManipulator);
            baseManipulator.Visible = true;
            baseManipulator.Active = true;
            baseManipulator.Placement.SetOrigin(100, 100, 100);
            baseManipulator.UpdatePlacement(true);
            IPlacement3DManipulator placement3DManipulator = baseManipulator as IPlacement3DManipulator;
            placement3DManipulator.Mode = 1;
            bool baseManipulatorCreated = baseManipulator.Create();
            IProcess process = process3D as IProcess;
            new Process3DNotifyEvent(process, ksObjectsFilter3DEnum.ksFilterAll);
            process.SetCursorText("КУРСОРИЩЕ");
            process.Update();
            process.Run(true, false);
Но почему-то на экране не появляется манипулятор. Что я делаю не так? И SetCursorText не всегда работает.
Название: Re: Как добавить манипулятор у процесса
Отправлено: UU от 17.01.25, 15:44:56
На события ksProcess3DManipulatorsNotify, ksProcess3DNotify подписывались?
Название: Re: Как добавить манипулятор у процесса
Отправлено: Lemieux от 17.01.25, 15:55:03
Цитата: UU от 17.01.25, 15:44:56ksProcess3DNotify
Да

Цитата: UU от 17.01.25, 15:44:56ksProcess3DManipulatorsNotify
Да
Название: Re: Как добавить манипулятор у процесса
Отправлено: Lemieux от 17.01.25, 15:55:49
            IApplication application = Marshal.GetActiveObject("KOMPAS.Application.7") as IApplication;
            IKompasDocument3D1 activeDocument = application.ActiveDocument as IKompasDocument3D1;
            IProcess3D process3D = activeDocument.LibProcess[ksProcess3DTypeEnum.ksProcess3DPlacementAndEntity];
            Process3DManipulatorsEvent process3DManipulatorsEvent = new Process3DManipulatorsEvent(process3D.Manipulators);
            IProcess process = process3D as IProcess;
            new Process3DNotifyEvent(process, ksObjectsFilter3DEnum.ksFilterAll);
            process.SetCursorText("КУРСОРИЩЕ");
            process.Update();
            process.Run(true, false);
            process3DManipulatorsEvent.Unadvise();
Вот такой код стал
Название: Re: Как добавить манипулятор у процесса
Отправлено: UU от 17.01.25, 16:25:16
У меня было подозрение на это.
bool baseManipulatorCreated = baseManipulator.Create();
Название: Re: Как добавить манипулятор у процесса
Отправлено: Lemieux от 17.01.25, 16:30:07
Цитата: UU от 17.01.25, 16:25:16У меня было подозрение на это.
bool baseManipulatorCreated = baseManipulator.Create();
Возвращает true. Я специально завёл эту переменную, чтобы смотреть результат. И по отладке в свойстве Count интерфейса Manipulators стоит 1, то есть манипулятор создаётся.
Название: Re: Как добавить манипулятор у процесса
Отправлено: UU от 17.01.25, 16:34:26
Цитата: Lemieux от 17.01.25, 16:30:07Возвращает true. Я специально завёл эту переменную, чтобы смотреть результат. И по отладке в свойстве Count интерфейса Manipulators стоит 1, то есть манипулятор создаётся.
Ана портит то, что было до этого, тогда его нужно инициализировать.
Название: Re: Как добавить манипулятор у процесса
Отправлено: Lemieux от 17.01.25, 16:39:55
Цитата: UU от 17.01.25, 16:34:26Ана портит то, что было до этого, тогда его нужно инициализировать.
Убрал, ничего не изменилось
Название: Re: Как добавить манипулятор у процесса
Отправлено: Kaimen от 17.01.25, 16:51:43
IProcess.Dinamic=True
Название: Re: Как добавить манипулятор у процесса
Отправлено: Lemieux от 17.01.25, 18:06:11
Цитата: Kaimen от 17.01.25, 16:51:43IProcess.Dinamic=True
Не помогло