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

Профессиональные вопросы => Программирование приложений => Тема начата: Lemieux от 16.01.25, 14:15:01

Название: Смена опорных точек у двух объектов
Отправлено: Lemieux от 16.01.25, 14:15:01
Всех приветствую.
Есть проблема, представлена на двух гифках ниже.
Имеются объекты, которые строятся с помощью точек, которые созданы с помощью команды "Точка смещением". Есть два соседних объекта, у которых опорные точки меняются местами.
Опорная точка объекта 1, становится опорной точкой объекта два.
Объект 2, становится опорным объектом для объекта 1.
И, почему-то, КОМПАС после выполнения кода нормально не перестраивает модель. Но стоит зайти в точки обоих объектов, ничего не делать, а просто нажать зелёную галку, сохранить объект, перестроить сборку, как всё становится на свои места.
Что я делаю не так?
Глюк смещения 1.gif
Глюк смещения 2.gif
Название: Re: Смена опорных точек у двух объектов
Отправлено: UU от 16.01.25, 14:47:03
Код где?
Название: Re: Смена опорных точек у двух объектов
Отправлено: Lemieux от 16.01.25, 14:51:13
Цитата: UU от 16.01.25, 14:47:03Код где?
Я думаю, что Вы не захотите читать 1142 строки кода и разбираться в 13 классах.
Я создавал данный пост в надежде на то, что может быть у кого-то было схожее поведение после работы API.
Название: Re: Смена опорных точек у двух объектов
Отправлено: UU от 16.01.25, 14:57:56
Думаю, что где-то забыли обновить программно.
Название: Re: Смена опорных точек у двух объектов
Отправлено: Lemieux от 16.01.25, 15:01:17
Цитата: UU от 16.01.25, 14:57:56Думаю, что где-то забыли обновить программно.
Я тоже так думал. Но я точки обновлял, компоненты обновлял. Даже в конце выполнения кода, все компоненты открывал на редактирование обновлял точки, закрывал редактирование, ничего не помогало. 
Название: Re: Смена опорных точек у двух объектов
Отправлено: UU от 16.01.25, 15:05:06
Вы понимаете по картинкам трудно, что то сказать, иногда нужно даже делать отработку накопившегося говна, т.е. дать Компасу обработать накопившиеся сообщения.
Название: Re: Смена опорных точек у двух объектов
Отправлено: Lemieux от 16.01.25, 15:54:37
У меня такое ощущение, что тут проблема в контекстных связях. У меня дерево построение на другом монике. И вот когда происходит действие первой гифки, то контекстные связи начинают подсвечиваться красным. Стоит в них зайти, то всё норм становится. Перестраиваю сборку и всё становится норм.
Название: Re: Смена опорных точек у двух объектов
Отправлено: UU от 16.01.25, 16:05:59
А, что мешает сделать это - программно?
Название: Re: Смена опорных точек у двух объектов
Отправлено: Lemieux от 16.01.25, 16:07:17
Цитата: UU от 16.01.25, 16:05:59А, что мешает сделать это - программно?
Пока не знаю как
Название: Re: Смена опорных точек у двух объектов
Отправлено: Lemieux от 16.01.25, 16:24:36
Пока непонятно как узнать есть у объекта контекстная связь. И непонятно как редактировать контекстную связь.
Название: Re: Смена опорных точек у двух объектов
Отправлено: UU от 17.01.25, 08:30:41
Вы после редактирования сохраняете объект?
изображение_2025-01-17_073003017.png
Название: Re: Смена опорных точек у двух объектов
Отправлено: Lemieux от 17.01.25, 09:42:51
Цитата: UU от 17.01.25, 08:30:41Вы после редактирования сохраняете объект?
Какой именно объект? Точки, у которых меняются опорные точки ( IPoint3D.Update() ) или компонент, в котором находятся точки?
Название: Re: Смена опорных точек у двух объектов
Отправлено: UU от 17.01.25, 10:07:16
Компонент, в котором находятся точки.
Название: Re: Смена опорных точек у двух объектов
Отправлено: Lemieux от 17.01.25, 10:09:51
Не могу гифку вставить на 1.5. Это жесть.

https://imgur.com/a/wdb36ds (https://imgur.com/a/wdb36ds)
Название: Re: Смена опорных точек у двух объектов
Отправлено: Lemieux от 17.01.25, 10:11:55
Цитата: UU от 17.01.25, 10:07:16Компонент, в котором находятся точки.
Как именно? Открывать на редактирование IPart.BeginEdit/EndEdit или получать документ через OpenSorceDocument и сохранять его через IKompasDocument3D.Close(SaveChange)? Если у компонента вызвать Update, то это не помогает.
Кстати, ещё на гифке видно, что приходится нажимать 2 раза перестроить сборку.
Название: Re: Смена опорных точек у двух объектов
Отправлено: UU от 17.01.25, 10:19:13
Дело хозяйское как редактировать, нужно пробовать потом сохранять IKompasDocument3D.Close(SaveChange) или IKompasDocument3D.Save.
Название: Re: Смена опорных точек у двух объектов
Отправлено: Lemieux от 17.01.25, 10:38:26
Короче, починил.
Открываю деталь на редактирование, в которой находится точка и делаю так.

IPart.BeginEdit()
IPoint3D.Update()
IPart7.EndEdit()