Есть вот такой код
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 не всегда работает.
На события ksProcess3DManipulatorsNotify, ksProcess3DNotify подписывались?
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();
Вот такой код стал
У меня было подозрение на это.
bool baseManipulatorCreated = baseManipulator.Create();
Цитата: UU от 17.01.25, 16:25:16У меня было подозрение на это.
bool baseManipulatorCreated = baseManipulator.Create();
Возвращает true. Я специально завёл эту переменную, чтобы смотреть результат. И по отладке в свойстве Count интерфейса Manipulators стоит 1, то есть манипулятор создаётся.
Цитата: Lemieux от 17.01.25, 16:30:07Возвращает true. Я специально завёл эту переменную, чтобы смотреть результат. И по отладке в свойстве Count интерфейса Manipulators стоит 1, то есть манипулятор создаётся.
Ана портит то, что было до этого, тогда его нужно инициализировать.
Цитата: UU от 17.01.25, 16:34:26Ана портит то, что было до этого, тогда его нужно инициализировать.
Убрал, ничего не изменилось
IProcess.Dinamic=True