예제 #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[][]>()));
        }
예제 #2
0
 // Token: 0x06000038 RID: 56 RVA: 0x0000272F File Offset: 0x0000092F
 public SweptDiskSolid(Wire3 wire, double radius)
 {
     this.Wire   = wire;
     this.Radius = radius;
 }