Exemple #1
0
        internal static Snap.NX.SplitBody CreateSplitBody(Snap.NX.Body targetBody, Snap.NX.Face[] toolFaces)
        {
            NXOpen.Part work = Globals.Session.Parts.Work;
            NXOpen.Features.SplitBodyBuilder featureBuilder = work.Features.CreateSplitBodyBuilder(null);
            featureBuilder.BooleanTool.ExtrudeRevolveTool.ToolSection.PrepareMappingData();
            featureBuilder.BooleanTool.ExtrudeRevolveTool.ToolSection.DistanceTolerance = Globals.DistanceTolerance;
            featureBuilder.BooleanTool.ExtrudeRevolveTool.ToolSection.ChainingTolerance = (Globals.UnitType == Globals.Unit.Millimeter) ? 0.02413 : 0.00095;
            ScCollector collector = work.ScCollectors.CreateCollector();

            NXOpen.Body[] bodies = new NXOpen.Body[] { targetBody };
            BodyDumbRule  rule   = work.ScRuleFactory.CreateRuleBodyDumb(bodies);

            SelectionIntentRule[] rules = new SelectionIntentRule[] { rule };
            collector.ReplaceRules(rules, false);
            featureBuilder.TargetBodyCollector = collector;
            SelectionIntentRule[] ruleArray2 = new SelectionIntentRule[toolFaces.Length];
            for (int i = 0; i < toolFaces.Length; i++)
            {
                ruleArray2[i] = work.ScRuleFactory.CreateRuleFaceBody((NXOpen.Body)toolFaces[i].Body);
            }
            featureBuilder.BooleanTool.FacePlaneTool.ToolFaces.FaceCollector.ReplaceRules(ruleArray2, false);
            NXOpen.Features.SplitBody split = (NXOpen.Features.SplitBody)Snap.NX.Feature.CommitFeature(featureBuilder);
            featureBuilder.Destroy();
            return(new Snap.NX.SplitBody(split));
        }
Exemple #2
0
        /// <summary>
        /// 抽取体
        /// </summary>
        /// <param name="features"></param>
        /// <param name="bodies"></param>
        /// <param name="associative"></param>
        /// <returns></returns>
        public static ExtractFace CreateExtractGeometry(this FeatureCollection features, Body[] bodies, bool associative = false)
        {
            ExtractFaceBuilder extractFaceBuilder = _workPart.Features.CreateExtractFaceBuilder(null);

            extractFaceBuilder.ParentPart = ExtractFaceBuilder.ParentPartType.WorkPart;

            extractFaceBuilder.Associative = associative;

            extractFaceBuilder.FixAtCurrentTimestamp = true;

            extractFaceBuilder.HideOriginal = false;

            extractFaceBuilder.InheritDisplayProperties = false;

            extractFaceBuilder.Type = ExtractFaceBuilder.ExtractType.Body;

            extractFaceBuilder.CopyThreads = false;

            extractFaceBuilder.FeatureOption = ExtractFaceBuilder.FeatureOptionType.SeparateFeatureForEachBody;

            BodyDumbRule bodyDumbRule1 = _workPart.ScRuleFactory.CreateRuleBodyDumb(bodies, true);

            SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
            rules1[0] = bodyDumbRule1;
            extractFaceBuilder.ExtractBodyCollector.ReplaceRules(rules1, false);

            ExtractFace nXObject1 = (ExtractFace)extractFaceBuilder.Commit();

            extractFaceBuilder.Destroy();

            return(nXObject1);
        }
Exemple #3
0
        /// <summary>
        /// 链接到工作部件中(非关联)
        /// </summary>
        /// <param name="seleObj">要链接的体</param>
        /// <returns></returns>
        public static NXOpen.Features.Feature WaveBodys(params NXObject[] seleObj)
        {
            Part workPart = theSession.Parts.Work;

            NXOpen.Features.Feature            nullNXOpen_Features_Feature = null;
            NXOpen.Features.WaveLinkBuilder    waveLinkBuilder1            = workPart.BaseFeatures.CreateWaveLinkBuilder(nullNXOpen_Features_Feature);
            NXOpen.Features.ExtractFaceBuilder extractFaceBuilder1;
            extractFaceBuilder1                         = waveLinkBuilder1.ExtractFaceBuilder;
            extractFaceBuilder1.FaceOption              = NXOpen.Features.ExtractFaceBuilder.FaceOptionType.FaceChain;
            waveLinkBuilder1.Type                       = NXOpen.Features.WaveLinkBuilder.Types.BodyLink;
            extractFaceBuilder1.FaceOption              = NXOpen.Features.ExtractFaceBuilder.FaceOptionType.FaceChain;
            extractFaceBuilder1.AngleTolerance          = 45.0;
            extractFaceBuilder1.ParentPart              = NXOpen.Features.ExtractFaceBuilder.ParentPartType.OtherPart;
            extractFaceBuilder1.Associative             = false; //关联
            extractFaceBuilder1.MakePositionIndependent = false;
            extractFaceBuilder1.FixAtCurrentTimestamp   = false;

            extractFaceBuilder1.HideOriginal = false;

            extractFaceBuilder1.InheritDisplayProperties = false;

            NXOpen.ScCollector scCollector1;
            scCollector1 = extractFaceBuilder1.ExtractBodyCollector;

            extractFaceBuilder1.CopyThreads = false; //是否复制

            extractFaceBuilder1.FeatureOption = NXOpen.Features.ExtractFaceBuilder.FeatureOptionType.OneFeatureForAllBodies;
            Body[] seleBody = new Body[seleObj.Length];
            for (int i = 0; i < seleObj.Length; i++)
            {
                seleBody[i] = (Body)seleObj[i];
            }

            BodyDumbRule bodyDumbRule1 = workPart.ScRuleFactory.CreateRuleBodyDumb(seleBody, true);

            SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
            rules1[0] = bodyDumbRule1;
            scCollector1.ReplaceRules(rules1, false);
            try
            {
                return(waveLinkBuilder1.CommitFeature());
            }
            catch (Exception ex)
            {
                LogMgr.WriteLog("AssmbliesUtils:WaveBodys:" + ex.Message);
                return(null);
            }
            finally
            {
                extractFaceBuilder1.Destroy();
            }
        }
        /// <summary>
        /// 获取极限点
        /// </summary>
        /// <param name="measureManager"></param>
        /// <param name="body"></param>
        /// <param name="measureDirection"></param>
        /// <param name="secondDirection"></param>
        /// <param name="thirdDirection"></param>
        /// <returns></returns>
        public static Point3d MeasureExtreme(this MeasureManager measureManager, Body body, Vector3d measureDirection, Vector3d secondDirection, Vector3d thirdDirection)
        {
            NXOpen.Unit lengthUnit = WorkPart.UnitCollection.FindObject("MilliMeter");
#if NX12
            BodyDumbRule bodyDumbRule = (WorkPart as BasePart).ScRuleFactory.CreateRuleBodyDumb(new Body[] { body });
#else
            BodyDumbRule bodyDumbRule = WorkPart.ScRuleFactory.CreateRuleBodyDumb(new Body[] { body });
#endif
            ScCollector scCollector = WorkPart.ScCollectors.CreateCollector();
            scCollector.ReplaceRules(new SelectionIntentRule[] { bodyDumbRule }, false);
            Direction direction1    = WorkPart.Directions.CreateDirection(new Point3d(), measureDirection, NXOpen.SmartObject.UpdateOption.WithinModeling);
            Direction direction2    = WorkPart.Directions.CreateDirection(new Point3d(), secondDirection, NXOpen.SmartObject.UpdateOption.WithinModeling);
            Direction direction3    = WorkPart.Directions.CreateDirection(new Point3d(), thirdDirection, NXOpen.SmartObject.UpdateOption.WithinModeling);
            var       bodiesExtreme = measureManager.NewRectangularExtreme(lengthUnit, direction1, direction2, direction3, scCollector, false);
            return(bodiesExtreme.Point);
        }
Exemple #5
0
 internal static Snap.NX.TrimBody CreateTrimBody(Snap.NX.Body targetBody, Snap.NX.Face toolFace, bool direction)
 {
     NXOpen.Part workPart = (NXOpen.Part) Globals.WorkPart;
     TrimBody2Builder featureBuilder = workPart.Features.CreateTrimBody2Builder(null);
     featureBuilder.Tolerance = Globals.DistanceTolerance;
     featureBuilder.BooleanTool.ExtrudeRevolveTool.ToolSection.DistanceTolerance = Globals.DistanceTolerance;
     featureBuilder.BooleanTool.ExtrudeRevolveTool.ToolSection.ChainingTolerance = (Globals.UnitType == Globals.Unit.Millimeter) ? 0.02413 : 0.00095;
     ScCollector collector = workPart.ScCollectors.CreateCollector();
     NXOpen.Body[] bodies = new NXOpen.Body[] { targetBody };
     BodyDumbRule rule = workPart.ScRuleFactory.CreateRuleBodyDumb(bodies);
     SelectionIntentRule[] rules = new SelectionIntentRule[] { rule };
     collector.ReplaceRules(rules, false);
     featureBuilder.TargetBodyCollector = collector;
     SelectionIntentRule[] ruleArray2 = new SelectionIntentRule[] { workPart.ScRuleFactory.CreateRuleFaceBody((NXOpen.Body) toolFace.Body) };
     featureBuilder.BooleanTool.FacePlaneTool.ToolFaces.FaceCollector.ReplaceRules(ruleArray2, false);
     featureBuilder.BooleanTool.ReverseDirection = direction;
     TrimBody2 trim = (TrimBody2) Snap.NX.Feature.CommitFeature(featureBuilder);
     featureBuilder.Destroy();
     return new Snap.NX.TrimBody(trim);
 }