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


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Пробую нарисовать шайбу с помощью макросов))
 
Всем доброго времени суток, пытаюсь нарисовать шайбу с помощью макросов в t-flex. Процентов 90%, как мне кажется сделано, но есть проблемка. Как видно на скрине, у меня есть обе окружности и обе я выталкиваю. Чтобы получилась шайба, мне нужно создать профиль между меньшей и большей окружностью и вытолкнуть уже его, но как это сделать, пока не могу додуматься)) Пробовал найти информацию, как сделать операцию вычитания с помощью макросов и просто вычесть одно тело из другого, но пока тоже не нашел(Таким образом, я бы избежал необходимость создания профиля между окружностями и получил бы шайбу).
Листинг кода:
Код
using System;
using TFlex;
using TFlex.Model;
using TFlex.Model.Model2D;
using TFlex.Model.Model3D;
using System.IO;

namespace NewMacroNamespace1
{
public class NewMacroClass1
{
public static void NewMacro1()
{
// Выбираем текущий документ
Document tfdoc = TFlex.Application.ActiveDocument;


// Открываем блок изменений
tfdoc.BeginChanges("Пытаемся нарисовать шайбу");

// Создаем свободные узлы нашего контура
FreeNode n1 = new FreeNode(tfdoc,1,1);



// Замыкаем контур линиями

CircleConstruction circle = new CircleConstruction(tfdoc);
circle.SetCenterAndRadius(n1,8.5);
CircleConstruction circle1 = new CircleConstruction(tfdoc);
circle1.SetCenterAndRadius(n1,13);



// Создаем штриховку и ее контур
Area ar1 = new Area (tfdoc);
Contour cn = ar1.AppendContour();
Area ar2 = new Area (tfdoc);
Contour cn1 = ar2.AppendContour();
// Описываем контур штриховки сегментами

ConstructionContourSegment seg1 = new
ConstructionContourSegment(cn);
seg1.Construction = circle;

ConstructionContourSegment seg2 = new
ConstructionContourSegment(cn1);
seg2.Construction = circle1;






// Создаем стандартную рабочую плоскость
// Top - вид спереди, Front - вид спереди, Left - вид слева и др
      StandardWorkplane swp1 = new
      StandardWorkplane(tfdoc, StandardWorkplane.StandardType.Top);

StandardWorkplane swp2 = new
StandardWorkplane(tfdoc, StandardWorkplane.StandardType.Top);


// Создаем 3D-профиль на основе штриховки и рабочей плоскости
AreaProfile ap1 = new AreaProfile(tfdoc);
ap1.Area = ar1;
ap1.WorkSurface = swp1;

AreaProfile ap2 = new AreaProfile(tfdoc);
ap2.Area = ar2;
ap2.WorkSurface = swp2;

// Создаем операцию выталкивания
ThickenExtrusion extr = new ThickenExtrusion(tfdoc);

//extr.LenghtType = ThickenExtrusion.LenghtValue.AutoValue;

// Длина выталкивания для первого направления
extr.Thickness1 = 5;

// Профиль для выталкивания
extr.Profile.Add(ap2.Geometry.SheetContour);
extr.Profile.Add(ap1.Geometry.SheetContour);

         

// Закрываем блок изменений
tfdoc.EndChanges();
}
}
}
Страницы: 1