static IEnumerable <NXOpen.Curve> ToEdgeCurveMany(Curve curve) { switch (curve) { case LineCurve lineCurve: yield return(ToEdgeCurve(lineCurve)); yield break; case PolylineCurve polylineCurve: foreach (var line in ToEdgeCurveMany(polylineCurve)) { yield return(line); } yield break; case ArcCurve arcCurve: foreach (var arc in ToEdgeCurveMany(arcCurve)) { yield return(arc); } yield break; case PolyCurve polyCurve: foreach (var segment in ToEdgeCurveMany(polyCurve)) { yield return(segment); } yield break; case NurbsCurve nurbsCurve: foreach (var nurbs in CurveEncoder.ToNXCurves(nurbsCurve, UnitConverter.NoScale)) { yield return(nurbs); } yield break; default: if (curve.HasNurbsForm() != 0) { var nurbsForm = curve.ToNurbsCurve(); foreach (var c in CurveEncoder.ToNXCurves(nurbsForm, UnitConverter.NoScale)) { yield return(c); } } else { throw new Exception($"Unable to convert {curve} to DB.Curve"); } yield break; } }
public static NXOpen.DisplayableObject[] ToShape(this GeometryBase geometry, double factor) { switch (geometry) { case Point point: return(new NXOpen.DisplayableObject[] { point.ToPoint(factor) }); case PointCloud pointCloud: return(pointCloud.ToPoints(factor)); case Curve curve: return(CurveEncoder.ToNXCurves(curve, factor).OfType <NXOpen.DisplayableObject>().ToArray()); //case Brep brep: // return ToGeometryObjectMany(BrepEncoder.ToRawBrep(brep, factor)).OfType<NXOpen.GeometryObject>().ToArray(); //case Extrusion extrusion: // return ToGeometryObjectMany(ExtrusionEncoder.ToRawBrep(extrusion, factor)).OfType<NXOpen.GeometryObject>().ToArray(); //case SubD subD: // return ToGeometryObjectMany(SubDEncoder.ToRawBrep(subD, factor)).OfType<NXOpen.GeometryObject>().ToArray(); ; //case Mesh mesh: // return new NXOpen.GeometryObject[] { MeshEncoder.ToMesh(MeshEncoder.ToRawMesh(mesh, factor)) }; default: //if (geometry.HasBrepForm) //{ // var brepForm = Brep.TryConvertBrep(geometry); // if (BrepEncoder.EncodeRaw(ref brepForm, factor)) // return ToGeometryObjectMany(brepForm).OfType<NXOpen.GeometryObject>().ToArray(); //} return(new NXOpen.DisplayableObject[0]); } }