Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Создание сопряжения с помощью API, Как указать грань (тип Geometry), имя которой было указано в шаблоне вручную?
 
Добрый день!

Подскажите, пожалуйста, каким образом можно использовать так называемую "именнованную" геометрию для создания сопряжений в сборке? Интересует именно механизм сопряжений, т.к. существует задача перенести текущие наработки из одного САПР в T-Flex.
Ниже указан примерный код для создания сопряжения, происходит падение на строчке mate.Element1 = .... Притом, что правая часть выражения нормально приводится к типу Geometry. Возникает NullReferenceException, причем единственным объектом, который равен null
в этой строке, является свойство Element1.
Код
var fragments = _document.GetFragments3D();

if (fragments.Any())
{
    var lastFragment = fragments.Last();

    var mate = new Mate(_document);

    mate.Type = Mate.MateType.Distance;
    mate.DistanceValue = 5;
    
    mate.Element1 = (Geometry)((dynamic)fragment.GetFragmentDocument(false).GetObjectByName("Низ")).Topol;
    mate.Element2 = (Geometry)((dynamic)lastFragment.GetFragmentDocument(false).GetObjectByName("Верх")).Topol;
    
    mate.Regenerate(true);
}
 
Прикладываю также StackTrace:

в TFlex.Model.ModelObject.get_HandleForGet()
в TFlex.Model.Model3D.Object3D.SetParentGeometry_2(IntPtr Handle, Geometry Geom, Int32 Index_1, Int32 Index_2, IntPtr Flags)
в TFlex.Model.Model3D.Object3D.SetParentGeometry_1(IntPtr Handle, Geometry Geom, Int32 Index, IntPtr Flags)
в TFlex.Model.Model3D.Object3D.SetParentGeometry(IntPtr Handle, Geometry Geom, IntPtr Flags)
в TFlex.Model.Model3D.Mate.set_Element1(Geometry geometry)
в TflexPlugin.AddPartCommand._addPart(AddPartViewModel vm) в C:\Projects\TFlex\TFlexApiTest\TflexPlugin\AddPartCommand.cs:строка 93
Изменено: Максим Шаталов - 01.06.2022 11:30:30
Страницы: 1