Я использую версию 2020 Eyeshot.
Существует функция CutBy, которая разрезает сетку по поверхности, и она отлично работает.
Проблема получить поверхность. Например, из твердого тела или сетки, как создать поверхность.
Например, у меня есть тело, которое пересекает другое тело. Мне нужна разница, но метод Solid.Difference дает только одну часть вырезанного твердого тела. К сожалению, мне нужна другая часть.
Я могу получить пересечение с помощью метода Solid.Intersection. Я могу разрезать тело по поверхности пересечения, но не могу найти, как получить поверхность тела.
Вкратце, вопрос заключается в том, как получить объект поверхности или области из твердого тела для вызова метода Solid.Cutby(surface.Plane).
Вот что я сделал:
var template = sceneLeft.Entities[0] as Mesh;
var piece = sceneLeft.Entities[1] as Mesh;
var solidT = template.ConvertToSolid();
var solidP = piece.ConvertToSolid();
var diff1 = Solid.Difference(solidT, solidP);
var diff2 = Solid.Difference(solidP, solidT);
var intersection = Solid.Intersection(solidT, solidP);
diff1[0].Color = System.Drawing.Color.LightGray;
diff2[0].Color = System.Drawing.Color.LightGray;
diff1[0].ColorMethod = colorMethodType.byEntity;
diff2[0].ColorMethod = colorMethodType.byEntity;
diff1[0].EntityData = "base";
diff2[0].EntityData = "piece";
sceneLeft.Entities.Clear();
//sceneLeft.Entities.Add(diff1[0]);
//sceneLeft.Entities.Add(piece);
sceneLeft.Entities.Add(diff2[0]); //diff2 is returns only one solid and not the part that I need.
//sceneLeft.Entities.Add(intersection[0]);
//diff2[0].Scale(1.02, 1.02, 1.02);
//var diff3 = Solid.Difference(intersection[0], solidT);
//sceneLeft.Entities.Add(diff3[0]);
sceneLeft.Entities.Regen();
sceneLeft.Invalidate();
Заранее спасибо.