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


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Макрос для вставки 3D-фрагмента, проблема со вставкой фрагмента
 
Всем доброго времени суток!
При создании сборки с помощью макроса из параметрических 3D-фрагментов возникла проблема. Параметры фрагмента удается поменять программно. А вот как этот фрагмент вставить в заданную точку с нужным поворотом, а не в точку 0,0,0, как он это делает по умолчанию?
Изменено: Вика Зданович - 30.07.2012 10:24:11
 
У класса Fragment в TFlex.Model.Model2D есть свойства StartNode, StartX, StartY и EndNode, EndX, EndY.
Думаю, нужно использовать их.
 
Более подробный код, демонстрирующий вставку в сцену 3D-фрагментов методом планировок (на основе 2D-фрагментов):
StandardWorkplane SWP = null;

foreach (Workplane wp in docTF.Workplanes)

{

if (wp is StandardWorkplane)

SWP = (StandardWorkplane)wp;

}





Fragment fr;

fr = new Fragment (docTF);

fr.FilePath = name;

fr.SetFixingVectorName("WP-1");

fr.StartNode = nd0;

fr.EndNode = nd;



if (SWP != null)

{

Fragment3D fr3D = new Fragment3D (fr,SWP);

}
 
Также хочу приложить пример с макросом, в котором демонстрируется вставка фрагментов в документ.
Для того, чтобы макрос заработал, прикрепленные к данному сообщению grb-файлы нужно скопировать в папку C:\Program Files (x86)\T-FLEX\T-FLEX CAD 12\Program\Macros. Далее надо открыть файл "LCS.grb" и запустить на исполнение макрос, находящийся в файле "3D Fragments.grb".
 
Osiris2000, спасибо за помощь! А можно попросить эти файлики для 11 версии, т.к. 12 нету?
 
Все, с этим понятно. Возник еще вопрос, как сами ЛСК создавать через макрос. Копаюсь в нем и что-то не могу сообразить. Входной информацией для создания сборки является файл с названием детали, ее параметры, координаты в сборке ее ЛСК и повороты вокруг осей.
 
Пример кода:


Код
  CoordinateNode3D nd3D = new CoordinateNode3D(docTF); 
  nd3D.X = 10; 
  nd3D.Y = 20; 
  nd3D.Z = 30; 
  PointsLCS lks = new PointsLCS(docTF); 
  lks.Name = "LCS_NULL"; 
  lks.Color = 13; 
  lks.PointToOrigin = nd3D.Geometry.Point; 

   MoveRotateTransformation transformation = new MoveRotateTransformation(docTF); 
   transformation.AddRotation(StandardAxis.AxisZ, new Parameter(245)); 
   TransformationContainer transformations = lks.VolatileTransformations; 
   transformations.Add(transformation);
В этом коде создается 3D-узел, затем создается система координат к которой применяется трансформация - поворот на 245 градусов относительно оси Z.
 
Выдает ошибку о невозможности преобразования типов TFlex.Model.Model3D.PointsLCS к TFlex.Model.Model3D.LCS
Может ли быть такое из-за разных версий T-Flex?
 
Цитата
Вика Зданович пишет:
Может ли быть такое из-за разных версий T-Flex?
Такое преобразование выполнить нельзя вне зависимости от версий. TFlex.Model.Model3D.LCS - это базовый класс для PointsLCS.
Страницы: 1