public static TriangleMesh Process(TopoDSShape shapeFused)
        {
            var result  = new TriangleMesh();
            var builder = new BRepBuilder();
            var comp    = new TopoDSCompound();

            builder.MakeCompound(comp);
            BRepMesh.Mesh(shapeFused, 1);
            var ex = new TopExpExplorer(shapeFused,
                                        TopAbsShapeEnum.TopAbs_FACE,
                                        TopAbsShapeEnum.TopAbs_SHAPE);

            while (ex.More)
            {
                var shapeResult = new TriangleMesh();
                var face        = TopoDS.Face(ex.Current);
                var location    = new TopLocLocation();
                var facing      = BRepTool.Triangulation(face, location);
                var tab         = new TColgpArray1OfPnt(1, facing.NbNodes);
                //  facing.Nodes(tab);
                var tri = new PolyArray1OfTriangle(1, facing.NbTriangles);
                //  facing.Triangles(tri);
                var triCount   = facing.NbTriangles;
                var listPoints = new List <Point3D>();
                for (var i = 1; i <= triCount; i++)
                {
                    var trian = tri.Value(i);
                    int index1 = 0, index2 = 0, index3 = 0;
                    trian.Get(ref index1, ref index2, ref index3);

                    var firstPoint  = new Point3D(tab.Value(index1));
                    var secondPoint = new Point3D(tab.Value(index2));
                    var thirdPoint  = new Point3D(tab.Value(index3));
                    listPoints.Add(firstPoint);
                    listPoints.Add(secondPoint);
                    listPoints.Add(thirdPoint);
                }
                shapeResult.Points.Clear();
                foreach (var point in listPoints)
                {
                    shapeResult.Points.Add(point);
                }
                shapeResult.Points = GeomUtils.SortAndCompactListPoints(shapeResult.Points);
                var triangleIndex = 0;
                var triangleArray = new int[3];
                foreach (var point in listPoints)
                {
                    triangleArray[triangleIndex] = shapeResult.ComputePointId(point);
                    triangleIndex = (triangleIndex + 1) % 3;
                    if (triangleIndex == 0)
                    {
                        shapeResult.AddTriangle(triangleArray);
                    }
                }
                ex.Next();
                result = result.Combine(shapeResult);
            }
            return(result);
        }
        public static TopoDSWire BuildSplineWire(ICollection <Point3D> pointList)
        {
            var array = new TColgpArray1OfPnt(1, pointList.Count); // sizing array
            var index = 1;

            foreach (var point3D in pointList)
            {
                array.SetValue(index, point3D.GpPnt);
                index++;
            }

            var curve = new GeomBezierCurve(array);
            var edge  = new BRepBuilderAPIMakeEdge(curve).Edge;

            return(new BRepBuilderAPIMakeWire(edge).Wire);
        }
Beispiel #3
0
 public GeomBezierCurve(TColgpArray1OfPnt CurvePoles)
     :
     base(Geom_BezierCurve_CtorFABD0F95(CurvePoles.Instance))
 {
 }
Beispiel #4
0
 public void Poles(TColgpArray1OfPnt P)
 {
     Geom_BezierCurve_PolesFABD0F95(Instance, P.Instance);
 }
 public void ExtremityPoints(TColgpArray1OfPnt TheExtrem)
 {
     AIS_Trihedron_ExtremityPointsFABD0F95(Instance, TheExtrem.Instance);
 }
 public PolyTriangulation(TColgpArray1OfPnt Nodes, PolyArray1OfTriangle Triangles)
     :
     base(Poly_Triangulation_Ctor9EE6697D(Nodes.Instance, Triangles.Instance))
 {
 }