Всем доброго времени суток, пытаюсь нарисовать шайбу с помощью макросов в 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(); } } } |