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


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Массив элементов, T-FLEX CAD API
 
День бодрый,
Возникла такая задача:
Как можно работать с массивами элементов? То есть у меня есть сборка, в ней, к примеру, N отверстий. Как мне собрать данные отверстия в массив и отправить массив по заложенному алгоритму?
Готов выслушать другие возможности :)
 
В справке по API есть примеры использования массива:

Линейный массив -

Код
public static void LinearArrayOperation(ThickenExtrusion ext)
{
 Document document = TFlex.Application.ActiveDocument;//Получение активного документа
 document.BeginChanges("линейный массив"  ;)  ; //Открытие блока изменений документа

 CoordinateNode3D node1 = new CoordinateNode3D(document); 
 node1.X = 200; node1.Y = 200; node1.Z = 200;
 CoordinateNode3D node2 = new CoordinateNode3D(document); 
 node2.X = 250; node2.Y = 250; node2.Z = 250;

 LinearArrayOperation lao = new LinearArrayOperation(document);
 lao.Operations.Add(ext);//добавление операции, как элемента массива

 lao.Direction1Point1 = node1.Geometry.Point;
 lao.Direction1Point2 = node2.Geometry.Point;
 lao.Direction1Number = 4;//кол-во копий
 lao.Direction1StepFromVector = true;//нарпавление
 lao.Direction1Step= 80;//шаг
 lao.Direction1Length = 10;//длина

 document.EndChanges();//Закрытие блока изменений документа
}


или

Массив по точкам -
Код
public static void NodeArrayOperation(ThickenExtrusion ext)
{
 Document document = TFlex.Application.ActiveDocument;//Получение активного документа
 document.BeginChanges("Массив по точкам"  ;)  ;//Открытие блока изменений документа

 FreeNode fn1 = new FreeNode(document, 10, 10);
 FreeNode fn2 = new FreeNode(document, 40, 30);
 FreeNode fn3 = new FreeNode(document, 70, 10);

 ConstructionOutline l1 = new ConstructionOutline(document, fn1, fn2);
 ConstructionOutline l2 = new ConstructionOutline(document, fn2, fn3);
 ConstructionOutline l3 = new ConstructionOutline(document, fn3, fn1);

 StandardWorkplane swp = new StandardWorkplane(document, StandardWorkplane.StandardType.Left); 
 SketchProfile sp = new SketchProfile(document);
 sp.WorkSurface = swp;

 CoordinateNode3D node1 = new CoordinateNode3D(document);
 node1.X = 200; node1.Y = 200; node1.Z = 200;
 CoordinateNode3D node2 = new CoordinateNode3D(document);
 node2.X = 200; node2.Y = 300; node2.Z = 200;
 CoordinateNode3D node3 = new CoordinateNode3D(document);
 node3.X = 200; node3.Y = 400; node3.Z = 200;

 NodeArrayOperation nao = new NodeArrayOperation(document);
 nao.Operations.Add(ext); //добавление операции в массив
 nao.SourcePoint = node1.Geometry.Point;

 nao.AddTargetPoint(node2.Geometry.Point);
 nao.AddTargetPoint(node3.Geometry.Point);

 document.EndChanges();//Закрытие блока изменений документа
}
 
Предлагаю как нибудь отдельно обрабатывать код :) иначе смайлы в тексте приводят к некому ступору :)
За пример спасибо, но я имел ввиду не саму операцию массив. Видимо сам неправильно описал задачу.
Мне необходимо оперировать массивами фрагментов. То есть у меня есть сборка. Я по каким то своим критериям формирую несколько массивом фрагментов и обрабатываю их по хитрому плану.
Изменено: Дмитрий - 15.04.2013 16:02:06
 
Дмитрий, поясните, пожалуйста, чуть подробнее: что конкретно не получается реализовать с помощью API?

Кроме этого, вы писали "Как мне собрать данные отверстия в массив" - существующие элементы нельзя "собрать в массив", можно лишь построить новый массив на их основе.
Далее - что конкретно вы хотите потом сделать с массивами?
 
Цитата
Osiris2000 пишет:
Кроме этого, вы писали "Как мне собрать данные отверстия в массив" - существующие элементы нельзя "собрать в массив", можно лишь построить новый массив на их основе.
Вот именно это я и хотел сделать, собрать определённые фрагменты в массив. Нет так нет, будем обрабатывать все фрагменты :) Спасибо за оперативность и тэг кода :)
Страницы: 1