예제 #1
0
        private static bool IsReverseDirection(NXOpen.Features.OffsetCurveBuilder builder, Snap.NX.ICurve[] icurves, Position pos, Vector helpVector)
        {
            Position position;
            Point3d  pointd;
            Vector3d vectord;
            int      index = -1;
            double   num2  = -1.0;

            for (int i = 0; i < icurves.Length; i++)
            {
                double num4 = -1.0;
                num4 = Compute.Distance(pos, (Snap.NX.NXObject)icurves[i]);
                if (num4 > num2)
                {
                    num2  = num4;
                    index = i;
                }
            }
            if (icurves[index].ObjectType == ObjectTypes.Type.Edge)
            {
                position = Compute.ClosestPoints(pos, (Snap.NX.Edge)icurves[index]).Point2;
            }
            else
            {
                position = Compute.ClosestPoints(pos, (Snap.NX.Curve)icurves[index]).Point2;
            }
            builder.ComputeOffsetDirection(icurves[index].NXOpenICurve, (Point3d)position, out vectord, out pointd);
            return((vectord * helpVector) < 0.0);
        }
예제 #2
0
 internal static Snap.NX.OffsetCurve CreateOffsetLine(Snap.NX.ICurve icurve, Snap.NX.Point point, string 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.OffsetDistance.RightHandSide = distance;
     featureBuilder.ReverseDirection             = reverseDirection;
     featureBuilder.PointOnOffsetPlane           = (NXOpen.Point)point;
     ((Snap.NX.Section)featureBuilder.CurvesToOffset).AddICurve(new Snap.NX.ICurve[] { icurve });
     NXOpen.Features.Feature feature = (NXOpen.Features.Feature)Snap.NX.Feature.CommitFeature(featureBuilder);
     featureBuilder.CurvesToOffset.CleanMappingData();
     featureBuilder.Destroy();
     return(feature as NXOpen.Features.OffsetCurve);
 }
예제 #3
0
 internal static Snap.NX.OffsetCurve CreateOffsetCurve(Snap.NX.ICurve[] curves, Snap.Number height, Snap.Number angle, Position helpPoint, Vector helpVector)
 {
     NXOpen.Features.OffsetCurveBuilder builder = Globals.WorkPart.NXOpenPart.Features.CreateOffsetCurveBuilder(null);
     builder.Type = NXOpen.Features.OffsetCurveBuilder.Types.Draft;
     builder.InputCurvesOptions.InputCurveOption = CurveOptions.InputCurve.Retain;
     builder.Tolerance = Globals.DistanceTolerance;
     builder.DraftHeight.RightHandSide = height.ToString();
     builder.DraftAngle.RightHandSide  = angle.ToString();
     ((Snap.NX.Section)builder.CurvesToOffset).AddICurve(curves);
     builder.ReverseDirection = IsReverseDirection(builder, curves, helpPoint, helpVector);
     NXOpen.Features.Feature feature = (NXOpen.Features.Feature)Snap.NX.Feature.CommitFeature(builder);
     builder.CurvesToOffset.CleanMappingData();
     builder.Destroy();
     return(feature as NXOpen.Features.OffsetCurve);
 }
예제 #4
0
 internal static Snap.NX.OffsetCurve CreateOffsetCurve(Snap.NX.ICurve[] curves, Snap.Number distance, Position helpPoint, Vector helpVector)
 {
     NXOpen.Features.OffsetCurveBuilder builder = Globals.WorkPart.NXOpenPart.Features.CreateOffsetCurveBuilder(null);
     builder.Type = NXOpen.Features.OffsetCurveBuilder.Types.Distance;
     builder.InputCurvesOptions.InputCurveOption = CurveOptions.InputCurve.Retain;
     builder.Tolerance = Globals.DistanceTolerance;
     //builder.CurveFitData.AngleTolerance = Globals.AngleTolerance;
     builder.CurvesToOffset.SetAllowedEntityTypes(NXOpen.SectionEx.AllowTypes.OnlyCurves);
     builder.CurvesToOffset.AllowSelfIntersection(true);
     builder.OffsetDistance.RightHandSide = distance.ToString();
     ((Snap.NX.Section)builder.CurvesToOffset).AddICurve(curves);
     builder.ReverseDirection = IsReverseDirection(builder, curves, helpPoint, helpVector);
     NXOpen.Features.Feature feature = (NXOpen.Features.Feature)Snap.NX.Feature.CommitFeature(builder);
     builder.Destroy();
     return(feature as NXOpen.Features.OffsetCurve);
 }
예제 #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.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);
 }