Example #1
0
        // Token: 0x0600000E RID: 14 RVA: 0x000026EC File Offset: 0x000008EC
        public static FacetedBRep ConvertToFacetedBRep(this SweptDiskSolid sweptDiskSolid, Angle tesselation, double epsilon = 1E-05)
        {
            Wire3 wire = sweptDiskSolid.Wire;

            if (wire.Edges.Count == 0 || wire.ContinuousError > epsilon || tesselation.Radians < epsilon)
            {
                return(null);
            }
            IEdge3           edge            = wire.Edges[0];
            AffineTransform3 affineTransform = Transform3Factory.CreateOrthonormalBasis(edge.StartDirection);
            AffineTransform3 transform       = new AffineTransform3(affineTransform.AxisX, affineTransform.AxisY, affineTransform.AxisZ, edge.StartPoint);
            IList <Vector3>  sweepContour    = SweptDiskSolidExtensions.CreateSweepContour(Math.Round(Angle.FullCircle / tesselation, MidpointRounding.AwayFromZero), sweptDiskSolid.Radius);
            List <Vector3>   list            = new List <Vector3>();
            List <int[]>     list2           = new List <int[]>();

            SweptDiskSolidExtensions.AddStartFace(list, list2, sweepContour, transform);
            foreach (IEdge3 edge2 in wire.Edges)
            {
                SweptDiskSolidExtensions.CreateTesselatedEdge(list, list2, sweepContour, tesselation, ref transform, edge2);
            }
            SweptDiskSolidExtensions.AddEndFace(list, list2, sweepContour);
            return(new FacetedBRep(list.ToArray(), list2.ToArray(), new Dictionary <int, int[][]>()));
        }
Example #2
0
        // Token: 0x06000010 RID: 16 RVA: 0x0000287C File Offset: 0x00000A7C
        private static void CreateTesselatedEdge(List <Vector3> vertices, List <int[]> wires, IList <Vector3> sweepContour, Angle curveTesselation, ref AffineTransform3 transform, IEdge3 edge)
        {
            EdgeLineSegment3 edgeLineSegment = edge as EdgeLineSegment3;

            if (edgeLineSegment != null)
            {
                SweptDiskSolidExtensions.CreateTesselatedEdgeLine(vertices, wires, sweepContour, ref transform, edgeLineSegment);
                return;
            }
            EdgeArc3 edgeArc = edge as EdgeArc3;

            if (edgeArc != null)
            {
                SweptDiskSolidExtensions.CreateTesselatedEdgeArc(vertices, wires, sweepContour, curveTesselation, ref transform, edgeArc);
                return;
            }
            EdgePolyLineSegment3 edgePolyLineSegment = edge as EdgePolyLineSegment3;

            if (edgePolyLineSegment != null)
            {
                SweptDiskSolidExtensions.CreateTesselatedEdgePolyLine(vertices, wires, sweepContour, ref transform, edgePolyLineSegment);
                return;
            }
        }