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


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

StandardWorkplane SWP = new StandardWorkplane(docTF, StandardWorkplane.StandardType.Top);
AreaProfile PR1 = new AreaProfile(docTF);
PR1.Area = ar1;
PR1.WorkSurface = SWP;
AreaProfile PR2 = new AreaProfile(docTF);
PR2.Area = ar2;
PR2.WorkSurface = SWP;
MoveRotateTransformation MRT2 = new MoveRotateTransformation(docTF);
MRT2.Offset_Z = 40;
PR2.VolatileTransformations.Add(MRT2);
AreaProfile PR3 = new AreaProfile(docTF);
PR3.Area = ar3;
PR3.WorkSurface = SWP;
MoveRotateTransformation MRT3 = new MoveRotateTransformation(docTF);
MRT3.Offset_Z = 80;
PR3.VolatileTransformations.Add(MRT3);
//
Loft LF = new Loft (docTF);
LF.AddProfileContour(0,PR1.Geometry.SheetContour);
LF.AddProfileContour(1,PR2.Geometry.SheetContour);
LF.AddProfileContour(2,PR3.Geometry.SheetContour);
LF.Tolerance = 0.0001;
LF.SetAutomaticCouplingPoint();
При компиляции ошибок нет, но строить не хочет: говорит, что "Ошибка во время выполнения. Заданный аргумент находится вне зоны допустимых значений":(
Изменено: Юлия П - 15.10.2012 16:40:17
 
Юлия П, Вы попробуйте сначала построить лофтинг вручную (без макроса с помощью команд t-flex) - быть может, дело в том, что t-flex сам по себе не может построить такое тело. Как только у Вас получится лофтинг без макроса, он должен получиться и с макросом.
 
Вручную строится без проблем. 3 сечения - это 3 окружности, 50, 80, и 50 в диаметре, в параллельных плоскостях. Они, при "закомментировании" строк про Loft строятся на "ура", как и тело по сечениям. Проблема еще и в том, что это я так думаю, что тело по сечениям (из меню Операции) и Loft - это одно и то же, хотя бы по набору свойств, но на 100% ручаться не могу:( Ктому же возможно в этой операции есть какие-то обязательные свойства, которых я не задала, вот он и ругается. Но это лишь догадки...
Изменено: Юлия П - 16.10.2012 08:54:10
 
Может кому-нибудь пригодится: оказалось, что я намудрила. Правильно:
Loft LF = new Loft(docTF);
LF.AddProfile(PR1.Geometry.SheetContour);
LF.AddProfile(PR2.Geometry.SheetContour);
LF.AddProfile(PR3.Geometry.SheetContour);
А свойства можно опустить: они заданы по умолчанию.:)
 
Опять прошу помощи. Совершенно не понимаю, как при помощи API указать элемент модели, который при обычном моделировании указывается мышью. Будь то ребро для скругления, грань для наложения материала или грань, удаляемая при построении оболочки. Например, есть цилиндр, полученный при помощи выталкивания. Соответственно у него при построении появляются 3 грани. На торец цилиндра, дальний от выталкиваемого профиля, надо наложить другой материал. Очевидно, надо перебрать все грани и каким-то образом остановиться на той, что нужна. Но как это сделать - не знаю:idontnow:. Может кто-нибудь подскажет?
 
Посмотрите цикл foreach - он как вроде перебирает элементы. Никогда не программировал толком, но вроде как для этого цилинда должен быть создан экземпляр или представитель класса. В этом классе надо перебрать циклом foreach грани и по определённому условию выбрать нужную. Наверно так. :)
 
Насколько я понимаю, нужно использовать свойство Geometry, позволяющее получить Operation.GeometryData. Далее Solid Property. Далее Item Property. И в итоге с помощью полученного ModelBody Class можно перебрать существующие грани и найти ту, которая вам нужна.
 
Вообще, интересно узнать всю задачу целиком. Может быть, можно обойтись без программирования одними лишь параметрическими возможностями T-FLEX CAD?
 
:) Собственно задача - разобраться как и что строится. Но мне пока не хватает знания матчасти, т.к. до сих пор не доводилось сталкиваться с С#. Просто кому как, а мне всегда проще что-то понять на конкретных примерах, а их немного, особенно в Руководстве TF по API :idontnow:.
Изменено: Юлия П - 18.10.2012 21:27:07
Страницы: 1