コード例 #1
0
        internal static Snap.NX.Revolve CreateRevolve(Snap.NX.ICurve[] icurves, Position axisPoint, Vector axisVector, Snap.Number[] extents, bool offset, Snap.Number[] offsetValues, bool createSheet)
        {
            NXOpen.Part workPart = (NXOpen.Part)Globals.WorkPart;
            NXOpen.Features.RevolveBuilder featureBuilder = workPart.Features.CreateRevolveBuilder(null);
            featureBuilder.Tolerance = Globals.DistanceTolerance;
            Snap.NX.Section section = Snap.NX.Section.CreateSection(icurves);
            featureBuilder.Section = (NXOpen.Section)section;
            section.NXOpenSection.DistanceTolerance = Globals.DistanceTolerance;
            section.NXOpenSection.ChainingTolerance = (Globals.UnitType == Globals.Unit.Millimeter) ? 0.02413 : 0.00095;
            featureBuilder.BooleanOperation.Type    = BooleanOperation.BooleanType.Create;
            if (createSheet)
            {
                featureBuilder.FeatureOptions.BodyType = FeatureOptions.BodyStyle.Sheet;
            }
            featureBuilder.Limits.StartExtend.Value.RightHandSide = extents[0].ToString();
            featureBuilder.Limits.EndExtend.Value.RightHandSide   = extents[1].ToString();
            featureBuilder.Offset.Option = NXOpen.GeometricUtilities.Type.NoOffset;
            if (offset)
            {
                featureBuilder.Offset.Option = NXOpen.GeometricUtilities.Type.NonsymmetricOffset;
                featureBuilder.Offset.StartOffset.RightHandSide = offsetValues[0].ToString();
                featureBuilder.Offset.EndOffset.RightHandSide   = offsetValues[1].ToString();
            }
            Direction direction = workPart.Directions.CreateDirection((Point3d)axisPoint, (Vector3d)axisVector, SmartObject.UpdateOption.WithinModeling);

            NXOpen.Point point = null;
            NXOpen.Axis  axis  = workPart.Axes.CreateAxis(point, direction, SmartObject.UpdateOption.WithinModeling);
            featureBuilder.Axis = axis;
            NXOpen.Features.Revolve revolve = (NXOpen.Features.Revolve)Snap.NX.Feature.CommitFeature(featureBuilder);
            featureBuilder.Destroy();
            return(new Snap.NX.Revolve(revolve));
        }
コード例 #2
0
ファイル: Curve.cs プロジェクト: suifengsigan/TEST_1
        public virtual void Trim(double lowerParam, double upperParam)
        {
            Snap.NX.Part     workPart  = Globals.WorkPart;
            TrimCurve        trimCurve = null;
            TrimCurveBuilder builder   = workPart.NXOpenPart.Features.CreateTrimCurveBuilder(trimCurve);

            builder.InteresectionMethod          = TrimCurveBuilder.InteresectionMethods.UserDefined;
            builder.InteresectionDirectionOption = TrimCurveBuilder.InteresectionDirectionOptions.RelativeToWcs;
            builder.CurvesToTrim.AllowSelfIntersection(true);
            builder.CurvesToTrim.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.CurvesAndPoints);
            builder.CurveOptions.Associative      = false;
            builder.CurveOptions.InputCurveOption = CurveOptions.InputCurve.Replace;
            builder.CurveExtensionType            = TrimCurveBuilder.CurveExtensionTypes.Natural;
            Snap.NX.Point   point    = Create.Point(this.Position(lowerParam));
            Snap.NX.Point   point2   = Create.Point(this.Position(upperParam));
            Snap.NX.Section section  = Snap.NX.Section.CreateSection(new Snap.NX.Point[] { point });
            Snap.NX.Section section2 = Snap.NX.Section.CreateSection(new Snap.NX.Point[] { point2 });
            builder.CurveList.Add(base.NXOpenTaggedObject, null, (Point3d)this.StartPoint);
            SelectionIntentRule[] rules = Snap.NX.Section.CreateSelectionIntentRule(new Snap.NX.ICurve[] { this });
            builder.CurvesToTrim.AddToSection(rules, (NXOpen.NXObject) this, null, null, (Point3d)this.StartPoint, NXOpen.Section.Mode.Create, false);
            builder.FirstBoundingObject.Add(section.NXOpenSection);
            builder.SecondBoundingObject.Add(section2.NXOpenSection);
            builder.Commit();
            builder.Destroy();
            section.NXOpenSection.Destroy();
            section2.NXOpenSection.Destroy();
            Snap.NX.NXObject.Delete(new Snap.NX.NXObject[] { point });
            Snap.NX.NXObject.Delete(new Snap.NX.NXObject[] { point2 });
        }
コード例 #3
0
 internal static Snap.NX.ThroughCurves CreateThroughCurves(Snap.NX.ICurve[] icurves)
 {
     Snap.NX.Section[] sectionArray = new Snap.NX.Section[icurves.Length];
     for (int i = 0; i < icurves.Length; i++)
     {
         sectionArray[i] = Snap.NX.Section.CreateSection(new Snap.NX.ICurve[] { icurves[i] });
     }
     if (sectionArray.Length == 0)
     {
         return(null);
     }
     NXOpen.Features.ThroughCurvesBuilder featureBuilder = Globals.NXOpenWorkPart.Features.CreateThroughCurvesBuilder(null);
     featureBuilder.Alignment.AlignCurve.DistanceTolerance  = Globals.DistanceTolerance;
     featureBuilder.Alignment.AlignCurve.ChainingTolerance  = (Globals.UnitType == Globals.Unit.Millimeter) ? 0.02413 : 0.00095;
     featureBuilder.SectionTemplateString.DistanceTolerance = Globals.DistanceTolerance;
     featureBuilder.SectionTemplateString.ChainingTolerance = (Globals.UnitType == Globals.Unit.Millimeter) ? 0.02413 : 0.00095;
     featureBuilder.Alignment.AlignCurve.AngleTolerance     = Globals.AngleTolerance;
     featureBuilder.SectionTemplateString.AngleTolerance    = Globals.AngleTolerance;
     NXOpen.Section[] sections = new NXOpen.Section[sectionArray.Length];
     for (int j = 0; j < sectionArray.Length; j++)
     {
         sections[j] = (NXOpen.Section)sectionArray[j];
         featureBuilder.SectionsList.Append(sections[j]);
     }
     featureBuilder.Alignment.SetSections(sections);
     Snap.NX.ThroughCurves curves = (NXOpen.Features.ThroughCurves)Snap.NX.Feature.CommitFeature(featureBuilder);
     featureBuilder.Destroy();
     return(curves);
 }
コード例 #4
0
        internal static Snap.NX.ProjectCurve CreateProjectCurve(Snap.NX.Curve[] curves, Snap.NX.Point[] points, Snap.NX.Face face)
        {
            NXOpen.Part workPart = (NXOpen.Part)Globals.WorkPart;
            NXOpen.Features.ProjectCurveBuilder featureBuilder = workPart.Features.CreateProjectCurveBuilder(null);
            featureBuilder.CurveFitData.Tolerance = Globals.DistanceTolerance;
            featureBuilder.AngleToProjectionVector.RightHandSide = "0";
            featureBuilder.SectionToProject.DistanceTolerance    = Globals.DistanceTolerance;
            featureBuilder.SectionToProject.ChainingTolerance    = (Globals.UnitType == Globals.Unit.Millimeter) ? 0.02413 : 0.00095;
            featureBuilder.SectionToProject.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.CurvesAndPoints);
            featureBuilder.ProjectionDirectionMethod = NXOpen.Features.ProjectCurveBuilder.DirectionType.AlongFaceNormal;
            Snap.NX.Section sectionToProject = featureBuilder.SectionToProject;
            sectionToProject.AddICurve(curves);
            sectionToProject.AddPoints(points);
            ScCollector collector = workPart.ScCollectors.CreateCollector();

            NXOpen.Face[] faces = new NXOpen.Face[] { face };
            FaceDumbRule  rule  = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);

            SelectionIntentRule[] rules = new SelectionIntentRule[] { rule };
            collector.ReplaceRules(rules, false);
            featureBuilder.FaceToProjectTo.Add(collector);
            NXOpen.Features.Feature feature = (NXOpen.Features.Feature)Snap.NX.Feature.CommitFeature(featureBuilder);
            featureBuilder.SectionToProject.CleanMappingData();
            featureBuilder.Destroy();
            return((NXOpen.Features.ProjectCurve)feature);
        }
コード例 #5
0
 internal static Snap.NX.OffsetCurve CreateOffsetCurve(Snap.NX.ICurve[] icurves, Snap.Number height, Snap.Number angle, bool reverseDirection)
 {
     NXOpen.Features.OffsetCurveBuilder featureBuilder = Globals.WorkPart.NXOpenPart.Features.CreateOffsetCurveBuilder(null);
     featureBuilder.Type = NXOpen.Features.OffsetCurveBuilder.Types.Draft;
     featureBuilder.InputCurvesOptions.InputCurveOption = CurveOptions.InputCurve.Retain;
     featureBuilder.Tolerance = Globals.DistanceTolerance;
     featureBuilder.DraftHeight.RightHandSide = height.ToString();
     featureBuilder.DraftAngle.RightHandSide  = angle.ToString();
     featureBuilder.ReverseDirection          = reverseDirection;
     Snap.NX.Section curvesToOffset = featureBuilder.CurvesToOffset;
     for (int i = 0; i < icurves.Length; i++)
     {
         curvesToOffset.AddICurve(icurves);
     }
     NXOpen.Features.Feature feature = (NXOpen.Features.Feature)Snap.NX.Feature.CommitFeature(featureBuilder);
     featureBuilder.CurvesToOffset.CleanMappingData();
     featureBuilder.Destroy();
     return(feature as NXOpen.Features.OffsetCurve);
 }
コード例 #6
0
        internal static Snap.NX.ProjectCurve CreateProjectCurve2(Snap.NX.Curve[] curves, Snap.NX.Point[] points, Snap.NX.Face face)
        {
            NXOpen.Part work = Globals.Session.Parts.Work;
            NXOpen.Features.ProjectCurveBuilder featureBuilder = work.Features.CreateProjectCurveBuilder(null);
            featureBuilder.CurveFitData.Tolerance = Globals.DistanceTolerance;
            featureBuilder.AngleToProjectionVector.RightHandSide = "0";
            featureBuilder.SectionToProject.DistanceTolerance    = Globals.DistanceTolerance;
            featureBuilder.SectionToProject.ChainingTolerance    = (Globals.UnitType == Globals.Unit.Millimeter) ? 0.02413 : 0.00095;
            featureBuilder.SectionToProject.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.CurvesAndPoints);
            if (curves != null)
            {
                Snap.NX.Section sectionToProject = featureBuilder.SectionToProject;
                for (int i = 0; i < curves.Length; i++)
                {
                    sectionToProject.AddICurve(new Snap.NX.ICurve[] { curves[i] });
                }
            }
            if (points != null)
            {
                NXOpen.Point[] pointArray = new NXOpen.Point[points.Length];
                for (int j = 0; j < pointArray.Length; j++)
                {
                    pointArray[j] = (NXOpen.Point)points[j];
                }
                CurveDumbRule rule = work.ScRuleFactory.CreateRuleCurveDumbFromPoints(pointArray);
                featureBuilder.SectionToProject.AllowSelfIntersection(true);
                SelectionIntentRule[] ruleArray = new SelectionIntentRule[] { rule };
                Point3d helpPoint = new Point3d(0.0, 0.0, 0.0);
                featureBuilder.SectionToProject.AddToSection(ruleArray, null, null, null, helpPoint, NXOpen.Section.Mode.Create, false);
            }
            ScCollector collector = work.ScCollectors.CreateCollector();

            NXOpen.Face[] faces = new NXOpen.Face[] { face };
            FaceDumbRule  rule2 = work.ScRuleFactory.CreateRuleFaceDumb(faces);

            SelectionIntentRule[] rules = new SelectionIntentRule[] { rule2 };
            collector.ReplaceRules(rules, false);
            featureBuilder.FaceToProjectTo.Add(collector);
            NXOpen.Features.Feature feature = (NXOpen.Features.Feature)Snap.NX.Feature.CommitFeature(featureBuilder);
            featureBuilder.SectionToProject.CleanMappingData();
            featureBuilder.Destroy();
            return((NXOpen.Features.ProjectCurve)feature);
        }
コード例 #7
0
ファイル: ProjectCurve.cs プロジェクト: suifengsigan/TEST_1
        internal static Snap.NX.ProjectCurve CreateProjectCurve2(Snap.NX.DatumPlane datumPlane, Snap.NX.Curve[] curves, Snap.NX.Point[] points)
        {
            NXOpen.Part work = Globals.Session.Parts.Work;
            NXOpen.Features.ProjectCurveBuilder featureBuilder = work.Features.CreateProjectCurveBuilder(null);
            //featureBuilder.CurveFitData.Tolerance = Globals.DistanceTolerance;
            featureBuilder.Tolerance = Globals.DistanceTolerance;
            featureBuilder.AngleToProjectionVector.RightHandSide = "0";
            featureBuilder.SectionToProject.DistanceTolerance    = Globals.DistanceTolerance;
            featureBuilder.SectionToProject.ChainingTolerance    = (Globals.UnitType == Globals.Unit.Millimeter) ? 0.02413 : 0.00095;
            featureBuilder.SectionToProject.SetAllowedEntityTypes(NXOpen.SectionEx.AllowTypes.CurvesAndPoints);
            if (curves != null)
            {
                Snap.NX.Section sectionToProject = featureBuilder.SectionToProject;
                for (int i = 0; i < curves.Length; i++)
                {
                    sectionToProject.AddICurve(new Snap.NX.ICurve[] { curves[i] });
                }
            }
            if (points != null)
            {
                NXOpen.Point[] pointArray = new NXOpen.Point[points.Length];
                for (int j = 0; j < pointArray.Length; j++)
                {
                    pointArray[j] = (NXOpen.Point)points[j];
                }
                CurveDumbRule rule = work.ScRuleFactory.CreateRuleCurveDumbFromPoints(pointArray);
                featureBuilder.SectionToProject.AllowSelfIntersection(true);
                SelectionIntentRule[] rules = new SelectionIntentRule[] { rule };
                Point3d helpPoint           = new Point3d(0.0, 0.0, 0.0);
                featureBuilder.SectionToProject.AddToSection(rules, null, null, null, helpPoint, NXOpen.Section.Mode.Create, false);
            }
            Position origin = datumPlane.Origin;
            Vector   normal = datumPlane.Normal;

            NXOpen.Plane plane = Globals.NXOpenWorkPart.Planes.CreatePlane((Point3d)origin, (Vector3d)normal, SmartObject.UpdateOption.WithinModeling);
            featureBuilder.PlaneToProjectTo = plane;
            NXOpen.Features.Feature feature = (NXOpen.Features.Feature)Snap.NX.Feature.CommitFeature(featureBuilder);
            featureBuilder.SectionToProject.CleanMappingData();
            featureBuilder.Destroy();
            return((NXOpen.Features.ProjectCurve)feature);
        }
コード例 #8
0
        internal static Snap.NX.ProjectCurve CreateProjectCurve(Snap.NX.Curve[] curves, Snap.NX.Point[] points, Snap.NX.DatumPlane datumPlane)
        {
            NXOpen.Features.ProjectCurveBuilder featureBuilder = Globals.WorkPart.NXOpenPart.Features.CreateProjectCurveBuilder(null);
            featureBuilder.CurveFitData.Tolerance = Globals.DistanceTolerance;
            featureBuilder.AngleToProjectionVector.RightHandSide = "0";
            featureBuilder.SectionToProject.DistanceTolerance    = Globals.DistanceTolerance;
            featureBuilder.SectionToProject.ChainingTolerance    = (Globals.UnitType == Globals.Unit.Millimeter) ? 0.02413 : 0.00095;
            featureBuilder.SectionToProject.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.CurvesAndPoints);
            Snap.NX.Section sectionToProject = featureBuilder.SectionToProject;
            sectionToProject.AddICurve(curves);
            sectionToProject.AddPoints(points);
            Position origin = datumPlane.Origin;
            Vector   normal = datumPlane.Normal;

            NXOpen.Plane plane = Globals.NXOpenWorkPart.Planes.CreatePlane((Point3d)origin, (Vector3d)normal, SmartObject.UpdateOption.WithinModeling);
            featureBuilder.PlaneToProjectTo = plane;
            NXOpen.Features.Feature feature = (NXOpen.Features.Feature)Snap.NX.Feature.CommitFeature(featureBuilder);
            featureBuilder.SectionToProject.CleanMappingData();
            featureBuilder.Destroy();
            return((NXOpen.Features.ProjectCurve)feature);
        }
コード例 #9
0
        internal static Snap.NX.Extrude CreateExtrude(Snap.NX.Section section, Vector axis, Snap.Number[] extents, Snap.Number draftAngle, bool offset, Snap.Number[] offsetValues, bool createSheet)
        {
            NXOpen.Part workPart = (NXOpen.Part)Globals.WorkPart;
            NXOpen.Features.ExtrudeBuilder featureBuilder = workPart.Features.CreateExtrudeBuilder(null);
            featureBuilder.DistanceTolerance     = Globals.DistanceTolerance;
            featureBuilder.BooleanOperation.Type = BooleanOperation.BooleanType.Create;
            if (createSheet)
            {
                featureBuilder.FeatureOptions.BodyType = FeatureOptions.BodyStyle.Sheet;
            }
            featureBuilder.Limits.StartExtend.Value.RightHandSide = extents[0].ToString();
            featureBuilder.Limits.EndExtend.Value.RightHandSide   = extents[1].ToString();
            featureBuilder.Offset.Option = NXOpen.GeometricUtilities.Type.NoOffset;
            if (offset)
            {
                featureBuilder.Offset.Option = NXOpen.GeometricUtilities.Type.NonsymmetricOffset;
                featureBuilder.Offset.StartOffset.RightHandSide = offsetValues[0].ToString();
                featureBuilder.Offset.EndOffset.RightHandSide   = offsetValues[1].ToString();
            }
            double num = Snap.Number.Parse(Snap.Number.NullToZero(draftAngle).ToString());

            if (System.Math.Abs(num) < 0.001)
            {
                featureBuilder.Draft.DraftOption = SimpleDraft.SimpleDraftType.NoDraft;
            }
            else
            {
                featureBuilder.Draft.DraftOption = SimpleDraft.SimpleDraftType.SimpleFromProfile;
            }
            featureBuilder.Draft.FrontDraftAngle.RightHandSide = Snap.Number.ToString(num);
            featureBuilder.Section = (NXOpen.Section)section;
            Point3d  origin = new Point3d(30.0, 0.0, 0.0);
            Vector3d vector = new Vector3d(axis.X, axis.Y, axis.Z);

            NXOpen.Direction direction = workPart.Directions.CreateDirection(origin, vector, SmartObject.UpdateOption.WithinModeling);
            featureBuilder.Direction = direction;
            NXOpen.Features.Extrude extrude = (NXOpen.Features.Extrude)Snap.NX.Feature.CommitFeature(featureBuilder);
            featureBuilder.Destroy();
            return(new Snap.NX.Extrude(extrude));
        }
コード例 #10
0
 internal static Snap.NX.OffsetCurve CreateOffsetCurve(Snap.NX.ICurve[] curves, Snap.Number distance, bool reverseDirection)
 {
     NXOpen.Features.OffsetCurveBuilder featureBuilder = Globals.WorkPart.NXOpenPart.Features.CreateOffsetCurveBuilder(null);
     featureBuilder.Type = NXOpen.Features.OffsetCurveBuilder.Types.Distance;
     featureBuilder.InputCurvesOptions.InputCurveOption = CurveOptions.InputCurve.Retain;
     featureBuilder.Tolerance  = Globals.DistanceTolerance;
     featureBuilder.TrimMethod = NXOpen.Features.OffsetCurveBuilder.TrimOption.ExtendTangents;
     featureBuilder.CurvesToOffset.DistanceTolerance = Globals.DistanceTolerance;
     featureBuilder.CurvesToOffset.AngleTolerance    = Globals.AngleTolerance;
     featureBuilder.CurvesToOffset.ChainingTolerance = (Globals.UnitType == Globals.Unit.Millimeter) ? 0.02413 : 0.00095;
     featureBuilder.CurvesToOffset.SetAllowedEntityTypes(NXOpen.SectionEx.AllowTypes.OnlyCurves);
     featureBuilder.CurvesToOffset.AllowSelfIntersection(true);
     featureBuilder.OffsetDistance.RightHandSide = distance.ToString();
     featureBuilder.ReverseDirection             = reverseDirection;
     Snap.NX.Section curvesToOffset = featureBuilder.CurvesToOffset;
     for (int i = 0; i < curves.Length; i++)
     {
         curvesToOffset.AddICurve(curves);
     }
     NXOpen.Features.Feature feature = (NXOpen.Features.Feature)Snap.NX.Feature.CommitFeature(featureBuilder);
     featureBuilder.Destroy();
     return(feature as NXOpen.Features.OffsetCurve);
 }