Всех приветствую.
Есть проблема, представлена на двух гифках ниже.
Имеются объекты, которые строятся с помощью точек, которые созданы с помощью команды "Точка смещением". Есть два соседних объекта, у которых опорные точки меняются местами.
Опорная точка объекта 1, становится опорной точкой объекта два.
Объект 2, становится опорным объектом для объекта 1.
И, почему-то, КОМПАС после выполнения кода нормально не перестраивает модель. Но стоит зайти в точки обоих объектов, ничего не делать, а просто нажать зелёную галку, сохранить объект, перестроить сборку, как всё становится на свои места.
Что я делаю не так?
Глюк смещения 1.gif
Глюк смещения 2.gif
Код где?
Цитата: UU от 16.01.25, 14:47:03Код где?
Я думаю, что Вы не захотите читать 1142 строки кода и разбираться в 13 классах.
Я создавал данный пост в надежде на то, что может быть у кого-то было схожее поведение после работы API.
Думаю, что где-то забыли обновить программно.
Цитата: UU от 16.01.25, 14:57:56Думаю, что где-то забыли обновить программно.
Я тоже так думал. Но я точки обновлял, компоненты обновлял. Даже в конце выполнения кода, все компоненты открывал на редактирование обновлял точки, закрывал редактирование, ничего не помогало.
Вы понимаете по картинкам трудно, что то сказать, иногда нужно даже делать отработку накопившегося говна, т.е. дать Компасу обработать накопившиеся сообщения.
У меня такое ощущение, что тут проблема в контекстных связях. У меня дерево построение на другом монике. И вот когда происходит действие первой гифки, то контекстные связи начинают подсвечиваться красным. Стоит в них зайти, то всё норм становится. Перестраиваю сборку и всё становится норм.
А, что мешает сделать это - программно?
Цитата: UU от 16.01.25, 16:05:59А, что мешает сделать это - программно?
Пока не знаю как
Пока непонятно как узнать есть у объекта контекстная связь. И непонятно как редактировать контекстную связь.
Вы после редактирования сохраняете объект?
изображение_2025-01-17_073003017.png
Цитата: UU от 17.01.25, 08:30:41Вы после редактирования сохраняете объект?
Какой именно объект? Точки, у которых меняются опорные точки ( IPoint3D.Update() ) или компонент, в котором находятся точки?
Компонент, в котором находятся точки.
Не могу гифку вставить на 1.5. Это жесть.
https://imgur.com/a/wdb36ds (https://imgur.com/a/wdb36ds)
Цитата: UU от 17.01.25, 10:07:16Компонент, в котором находятся точки.
Как именно? Открывать на редактирование IPart.BeginEdit/EndEdit или получать документ через OpenSorceDocument и сохранять его через IKompasDocument3D.Close(SaveChange)? Если у компонента вызвать Update, то это не помогает.
Кстати, ещё на гифке видно, что приходится нажимать 2 раза перестроить сборку.
Дело хозяйское как редактировать, нужно пробовать потом сохранять IKompasDocument3D.Close(SaveChange) или IKompasDocument3D.Save.
Короче, починил.
Открываю деталь на редактирование, в которой находится точка и делаю так.
IPart.BeginEdit()
IPoint3D.Update()
IPart7.EndEdit()