Всем доброго времени суток, пытаюсь нарисовать шайбу с помощью макросов в t-flex. Процентов 90%, как мне кажется сделано, но есть проблемка. Как видно на скрине, у меня есть обе окружности и обе я выталкиваю. Чтобы получилась шайба, мне нужно создать профиль между меньшей и большей окружностью и вытолкнуть уже его, но как это сделать, пока не могу додуматься)) Пробовал найти информацию, как сделать операцию вычитания с помощью макросов и просто вычесть одно тело из другого, но пока тоже не нашел(Таким образом, я бы избежал необходимость создания профиля между окружностями и получил бы шайбу).
Листинг кода: [CODE]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();
}
}
}
[/CODE]
Листинг кода: [CODE]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();
}
}
}
[/CODE]