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

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

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

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

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

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

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

Как добавить манипулятор у процесса

Автор Lemieux, 17.01.25, 13:25:35

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

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

Lemieux

Есть вот такой код

            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 не всегда работает.

UU

На события ksProcess3DManipulatorsNotify, ksProcess3DNotify подписывались?


Lemieux

            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();
Вот такой код стал

UU

У меня было подозрение на это.
bool baseManipulatorCreated = baseManipulator.Create();

Lemieux

Цитата: UU от 17.01.25, 16:25:16У меня было подозрение на это.
bool baseManipulatorCreated = baseManipulator.Create();
Возвращает true. Я специально завёл эту переменную, чтобы смотреть результат. И по отладке в свойстве Count интерфейса Manipulators стоит 1, то есть манипулятор создаётся.

UU

Цитата: Lemieux от 17.01.25, 16:30:07Возвращает true. Я специально завёл эту переменную, чтобы смотреть результат. И по отладке в свойстве Count интерфейса Manipulators стоит 1, то есть манипулятор создаётся.
Ана портит то, что было до этого, тогда его нужно инициализировать.

Lemieux

Цитата: UU от 17.01.25, 16:34:26Ана портит то, что было до этого, тогда его нужно инициализировать.
Убрал, ничего не изменилось

Kaimen

+ Благодарностей: 1

Lemieux