Теряются связи в сборке

Автор Serenkyi Volk, 20.07.17, 07:40:41

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

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

Serenkyi Volk

Добрый день всем.
Прошу помочь в решении моей проблемы. Описание вопроса:
1. Создаю сборку и сохраняю как "Ступень.a3d".
2. Создаю сборку и сохраняю как "Лестница.a3d".
3. Запускаю мою библиотеку, которая вставляет в созданную Лестницу Ступень.
На этом этапе все нормально.
4. В библиотеке поворачиваю Ступень.
Пока все выглядит нормально.
5. Закрываю сборку Лестница.
6. Снова открываю - связи в сопряжениях Ступени потеряны.

st:=' D:\Мои документы\Ступень нижняя\Ступень.a3d'; 
// вставить сборку
Document3D.SetPartFromFile(st, Part, true);
//перерисовываем сборку Лестница
Document3D.RebuildDocument();
Document3D.Save;
//сохраняем сборку Лестница
Document3D.Save;

// повернуть ступень
Part:=ksPart(Document3D.GetPart(0));
Placement:=ksPlacement(Part.GetPlacement());
//устанавливаем новые направления координатных осей
Placement.SetAxes(0,-1,0,-1,0,0);
//обновляем расположение модели
Part.UpdatePlacement();
Part.Update();
//перерисовываем сборку Лестница
Document3D.RebuildDocument();
//сохраняем сборку Лестница
Document3D.Save;


Если из библиотеки убрать поворот, то все нормально. Открываю/закрываю Лестницу - все в порядке.
Где я накосячил?


Serenkyi Volk

Сопряжения в сборке Ступень. Эта сборка создана вручную, сохранена и закрыта

Чтобы двигать и поворачивать, есть IComponentPositioner - интерфейс управления положением компонентов в сборке.

Serenkyi Volk

Буду пробовать. Спасибо. Если не получится - напишу

Serenkyi Volk

Sabahs.
Помогите разобраться с сопряжением типа Сборка-Деталь.
Когда делаю сопряжение Деталь-Деталь, то вопросов не возникает.
Когда в сопряжении участвует Сборка, то в качестве сопрягаемой поверхности выбирать Грань Детали входящей в Сборку?
Вот код:

//Получаем интерфейсы сопрягаемых граней второй детали
Part:=ksPart(Document3D2.GetPart(1));
Рart2:=kspart(part.GetPart(3));   // <- вот здесь я правильно делаю?
EntityCollection:=ksEntityCollection(Part2.EntityCollection(6));
EntityCollection.SelectByPoint(0,20,20);
EntityFaceConcidence2:=ksEntity(EntityCollection.First);

//Получаем интерфейсы сопрягаемых граней первой детали
Part:=ksPart(Document3D2.GetPart(0));
EntityCollection:=ksEntityCollection(Part.EntityCollection(6));
EntityCollection.SelectByPoint(40,80,200);
EntityFaceConcidence1:=ksEntity(EntityCollection.First);

//Устанавливаем сопряжение совпадения
Document3D2.AddMateConstraint(0,EntityFaceConcidence1,EntityFaceConcidence2,1,0,0);

Откуда я могу знать, правильно или нет, я же не экстрасенс.

Serenkyi Volk

Наверно неправильно вопрос сформулировал. Можно и без кода. Интересует порядок сопряжения Детали и Сборки.
1. У Детали указать Грань.
2. У Сборки указать на Деталь, в которой указать на Грань.
Или у Сборки можно сразу указать на Грань?

Вручную в Компасе проделайте, то, что нужно и увидите, что делать программно.
Дело не в формулировке, а в том, что я понятия не имею с чем Вы работаете.

KiDim

Автору. Вы побольше информации давайте. Выложите сам проект. Удалите все, что можно и во вложение. Это избавит Вас от постоянных ненужных вопросов и намного ускорит процесс ответов.
Удачи!