Практический семинар Tekla Structures 2017

Объединение марок в подсборку средствами API

Ответить
yohohooo
Сообщения: 1
Регистрация: 28 дек 2020, 11:53

Объединение марок в подсборку средствами API

Сообщение yohohooo » 28 дек 2020, 12:13

Добрый день коллеги!
Смысл в том что я пытаюсь объединить две марки в одну подсборку. Т.е. гипотетически у меня есть 2 марки в уровне 0. После объединения новая сборка должна существовать в уровне 0 При том что исходные 2 марки должны быть перенесены в уровень 1.
Для этого вначале я пытаюсь создать пустую сборку, добавить в неё необходимые, задать главную деталь и вставить это дело в модель.
Пробовал так же добавить вначале пустую марку в модель, затем присоединить к ней необходимые.
Если делать так, метод INSERT не работает. Очевидно что я делаю что то не так.

Код: Выделить всё

foreach (var group in groups)
                {
                    TS.Identifier targetMarkGUID = new TS.Identifier(group.Key);
                    TSM.Assembly targetMark = new TSM.Model().SelectModelObject(targetMarkGUID) as TSM.Assembly;
                    var fatherObject = targetMark.GetAssembly();
                    if (fatherObject == null)
                    {
                        var newObject = new TSM.Assembly() as TSM.ModelObject;
                        newObject.Identifier = new TS.Identifier(Guid.NewGuid());

                        fatherObject = new TSM.Assembly();
                        fatherObject.Identifier = new TS.Identifier(Guid.NewGuid());
                        fatherObject.Add(targetMark);
                        fatherObject.SetMainPart(targetMark.GetMainPart() as TSM.Part);

                        if (!fatherObject.Insert())
                        {
                            MessageBox.Show("Sub-Assembly Insertion failed at target: " + group.Key);
                            targetMark.Select();
                            break;
                        }
                     ............
                     }
                 }

meart
Сообщения: 494
Регистрация: 04 мар 2013, 18:09

Re: Объединение марок в подсборку средствами API

Сообщение meart » 29 дек 2020, 14:44

yohohooo писал(а):
28 дек 2020, 12:13
Если делать так, метод INSERT не работает. Очевидно что я делаю что то не так.
Документация говорит, что на данный момент сборки не могут быть вставлены. А значит метод Insert() для сборок не работает.
У меня получилось такое решение:

Код: Выделить всё


//создаём вспомогательный элемент
Tekla.Structures.Model.Beam b = new Tekla.Structures.Model.Beam();
// задаем профиль, материал, координаты начала 
b.Insert();
TSM.Assembly A = b.GetAssembly();
//добавляем в полученную сборку наши подсборки
A.Add(targetMark_1);
A.Add(targetMark_2);
//
A.Modify();
b.Delete();
M.CommitChanges();
«Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не вполне уверен.» А. Эйнштейн

Ответить
phpbb3 styles

Вернуться в «3D моделирование в Tekla Structures»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость