コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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]);
            }
        }