我正在使用 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();
提前致谢。