示例#1
0
        protected override MacroFeatureRebuildResult OnRebuild(ISldWorks app, IModelDoc2 model,
                                                               IFeature feature)
        {
            var body = app.IGetModeler().CreateBox(new Point(0.1, 0.2, 0.3), new Vector(0, 0, 1), 0.1, 0.2, 0.3);

            return(MacroFeatureRebuildResult.FromBody(body, feature.GetDefinition() as IMacroFeatureData));
        }
 protected override void OnSetDimensions(ISldWorks app, IModelDoc2 model, IFeature feature,
                                         MacroFeatureRebuildResult rebuildResult, DimensionDataCollection dims, DimensionMacroFeatureParams parameters)
 {
     dims[nameof(parameters.RefDimension)].SetOrientation(new Point(0, 0, 0), new Vector(0, 1, 0));
     dims[nameof(parameters.RefCalcDimension)].SetOrientation(new Point(0, 0, 0), new Vector(0, 0, 1));
     dims[nameof(parameters.RefRadDimension)].SetOrientation(new Point(0, 0, 0), new Vector(1, 0, 0));
 }
        protected override MacroFeatureRebuildResult OnRebuild(ISldWorks app, IModelDoc2 model, IFeature feature)
        {
            //use extension methods of IModeler to create a box body
            IBody2 tempBody = app.IGetModeler().CreateBox(new Point(0, 0, 0), new Vector(1, 0, 0), 0.1, 0.1, 0.1);

            return(MacroFeatureRebuildResult.FromBody(tempBody, feature.GetDefinition() as IMacroFeatureData, false));
        }
示例#4
0
        protected override MacroFeatureRebuildResult OnRebuild(LifecycleMacroFeatureHandler handler,
                                                               LifecycleMacroFeatureParams parameters)
        {
            handler.Rebuild();

            return(MacroFeatureRebuildResult.FromStatus(true));
        }
示例#5
0
        protected override MacroFeatureRebuildResult OnRebuild(ISldWorks app, IModelDoc2 model,
                                                               IFeature feature, RoundStockFeatureParameters parameters)
        {
            var cylParams = GetCylinderParams(model, parameters);

            //temp
            SetProperties(model, parameters, cylParams);
            //

            parameters.Height = cylParams.Height;
            parameters.Radius = cylParams.Radius;

            var featData = feature.GetDefinition() as IMacroFeatureData;

            MacroFeatureOutdateState_e state;

            SetParameters(model, feature, featData, parameters, out state);

            if (state != MacroFeatureOutdateState_e.UpToDate)
            {
                app.ShowBubbleTooltip("Stock Master",
                                      $"'{feature.Name}' feature is outdated. Edit definition of the feature to update",
                                      BubbleTooltipPosition_e.TopLeft, Resources.warning_icon);
            }

            if (parameters.CreateSolidBody)
            {
                var body = m_StockModel.CreateCylindricalStock(cylParams);
                return(MacroFeatureRebuildResult.FromBody(body, feature.GetDefinition() as IMacroFeatureData));
            }
            else
            {
                return(MacroFeatureRebuildResult.FromStatus(true));
            }
        }
示例#6
0
 private void UpdateDimensions(ISldWorks app, IModelDoc2 model, IFeature feature,
                               MacroFeatureRebuildResult rebuildRes, IDisplayDimension[] dispDims, string[] dispDimParams, TParams parameters)
 {
     using (var dimsColl = new DimensionDataCollection(dispDims, dispDimParams))
     {
         if (dimsColl.Any())
         {
             OnSetDimensions(app, model, feature, rebuildRes, dimsColl, parameters);
         }
     }
 }
        protected override MacroFeatureRebuildResult OnRebuild(ISldWorks app, IModelDoc2 model,
                                                               IFeature feature, DimensionMacroFeatureParams parameters)
        {
            parameters.RefCalcDimension = parameters.RefDimension * 2;
            parameters.DateTimeStamp    = DateTime.Now.Ticks;

            SetParameters(model, feature, feature.GetDefinition() as IMacroFeatureData, parameters);
            feature.Name = parameters.RefDimension.ToString();

            return(MacroFeatureRebuildResult.FromStatus(true));
        }
示例#8
0
 protected override MacroFeatureRebuildResult OnRebuild(ISldWorks app, IModelDoc2 model, IFeature feature)
 {
     if (!string.IsNullOrEmpty(model.GetPathName()))
     {
         return(MacroFeatureRebuildResult.FromStatus(true));
     }
     else
     {
         return(MacroFeatureRebuildResult.FromStatus(false, Resources.MacroFeatureError));
     }
 }
        protected virtual MacroFeatureRebuildResult CreateRebuildResult(ISldWorks app, IMacroFeatureData featData, TParams parameters)
        {
            var bodies = CreateGeometry(app, parameters);

            if (bodies.Any())
            {
                return(MacroFeatureRebuildResult.FromBodies(bodies, featData, true));
            }
            else
            {
                return(MacroFeatureRebuildResult.FromStatus(true));
            }
        }
示例#10
0
        protected override MacroFeatureRebuildResult OnRebuild(ISldWorks app, IModelDoc2 model, IFeature feature, JRTrimFeatureData parameters)
        {
            try
            {
                var swMFD = feature.GetDefinition() as IMacroFeatureData;

                var resBodies = parameters.CreateBodies(app, preview: false).ToArray();

                return(MacroFeatureRebuildResult.FromBodies(resBodies, swMFD));
            }
            catch (Exception ex)
            {
                return(MacroFeatureRebuildResult.FromStatus(false, ex.Message));
            }
        }
        protected override MacroFeatureRebuildResult OnRebuild(LinkFileMacroFeatureHandler handler, LinkFileMacroFeatureParameters parameters)
        {
            if (handler.LastError == null)
            {
                parameters.FileLastUpdateTimeStamp = handler.LastUpdateStamp;

                SetParameters(handler.Model, handler.Feature, handler.Feature.GetDefinition() as IMacroFeatureData, parameters);

                return(MacroFeatureRebuildResult.FromBodies(
                           handler.CachedBodies.Select(b => b.ICopy()).ToArray(),
                           handler.Feature.GetDefinition() as IMacroFeatureData));
            }
            else
            {
                return(MacroFeatureRebuildResult.FromStatus(false, handler.LastError.ToString()));
            }
        }
示例#12
0
        protected override MacroFeatureRebuildResult OnRebuild(ISldWorks app, IModelDoc2 model,
                                                               IFeature feature, BoundingCylinderMacroFeatureParams parameters)
        {
            var modeler = app.IGetModeler();

            Point  center;
            Vector axis;
            double radius;
            double height;
            double extraHeight;

            GetCylinderParameters(parameters, out center, out axis, out radius, out height, out extraHeight);

            var cyl = modeler.CreateCylinder(center, axis, radius, height + extraHeight);

            return(MacroFeatureRebuildResult.FromBody(cyl, feature.GetDefinition() as IMacroFeatureData));
        }
示例#13
0
        protected override void OnSetDimensions(ISldWorks app, IModelDoc2 model, IFeature feature,
                                                MacroFeatureRebuildResult rebuildResult, DimensionDataCollection dims, BoundingCylinderMacroFeatureParams parameters)
        {
            Point  center;
            Vector axis;
            double radius;
            double height;
            double extraHeight;

            GetCylinderParameters(parameters, out center, out axis, out radius, out height, out extraHeight);

            var dimOrig = center.Move(axis, height);

            var dimDir = new Vector(axis);

            dims[0].SetOrientation(dimOrig, dimDir);
        }
        protected override MacroFeatureRebuildResult OnRebuild(ISldWorks app, IModelDoc2 model, IFeature feature, TParams parameters)
        {
            try
            {
                var featData = feature.GetDefinition() as IMacroFeatureData;

                return(CreateRebuildResult(app, featData, parameters));
            }
            catch (UserErrorException ex)
            {
                Logger.Log(ex);
                return(MacroFeatureRebuildResult.FromStatus(false, ex.Message));
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
                return(MacroFeatureRebuildResult.FromStatus(false, "Rebuild error"));
            }
        }
        protected override void OnSetDimensions(ISldWorks app, IModelDoc2 model, IFeature feature, MacroFeatureRebuildResult rebuildResult,
                                                DimensionDataCollection dims, BodiesFilletFeatureDataModel parameters)
        {
            var filletRebuildRes = rebuildResult as BodiesFilletMacroFeatureRebuildResult;

            var filletFace = filletRebuildRes.FilletFaces.FirstOrDefault() as IFace2;

            if (filletFace != null)
            {
                var surf = filletFace.IGetSurface();

                var uvBounds = filletFace.GetUVBounds() as double[];
                var evalData = surf.Evaluate(
                    (uvBounds[0] + uvBounds[1]) / 2,
                    (uvBounds[2] + uvBounds[3]) / 2, 0, 0) as double[];

                var pt   = new Point(evalData[0], evalData[1], evalData[2]);
                var norm = new Vector(evalData[evalData.Length - 3], evalData[evalData.Length - 2], evalData[evalData.Length - 1]);

                Vector axis = null;

                if (surf.IsCylinder())
                {
                    var cylParams = surf.CylinderParams as double[];
                    axis = new Vector(cylParams[3], cylParams[4], cylParams[5]);
                }
                else if (surf.IsTorus())
                {
                    var torParams = surf.TorusParams as double[];
                    axis = new Vector(torParams[3], torParams[4], torParams[5]);
                }

                var rad = parameters.Radius;

                var moveDir = new Vector(norm);
                moveDir.Scale(-1);

                var dimStartPt = pt.Move(moveDir, rad);

                dims[0].SetOrientation(dimStartPt, axis);
            }
        }
示例#16
0
        protected override MacroFeatureRebuildResult OnRebuild(LifecycleMacroFeatureHandler handler, LifecycleMacroFeatureParams parameters)
        {
            //TODO: access handler to extract feature specific data

            return(MacroFeatureRebuildResult.FromStatus(true));
        }
示例#17
0
        protected override void OnSetDimensions(ISldWorks app, IModelDoc2 model, IFeature feature, MacroFeatureRebuildResult rebuildResult,
                                                DimensionDataCollection dims, DimensionMacroFeatureParams parameters)
        {
            var rebuildRes = rebuildResult as CustomRebuildResult;

            var customData = rebuildRes.CustomData;

            //TODO: use custom data to arrange dimensions
        }
示例#18
0
 protected override MacroFeatureRebuildResult OnRebuild(ISldWorks app, IModelDoc2 model, IFeature feature)
 {
     IBody2[] tempBodies = null; //TODO: create temp bodies
     return(MacroFeatureRebuildResult.FromBodies(tempBodies, feature.GetDefinition() as IMacroFeatureData, true));
 }
示例#19
0
 protected override MacroFeatureRebuildResult OnRebuild(ISldWorks app, IModelDoc2 model, IFeature feature)
 {
     return(MacroFeatureRebuildResult.FromStatus(false, "Failed to regenerate this feature"));
 }
示例#20
0
 protected override MacroFeatureRebuildResult OnRebuild(ISldWorks app, IModelDoc2 model, IFeature feature)
 {
     return(MacroFeatureRebuildResult.FromStatus(true));
 }
示例#21
0
 protected override MacroFeatureRebuildResult OnRebuild(ISldWorks app, IModelDoc2 model, IFeature feature)
 {
     return(MacroFeatureRebuildResult.FromStatus(false, ObsoleteFeatureRebuildError));
 }
示例#22
0
 /// <summary>
 /// Override this function to configure the dimensions of macro feature (i.e. position, style, etc.)
 /// </summary>
 /// <param name="app">Pointer to application</param>
 /// <param name="model">Pointer to current model</param>
 /// <param name="feature">Pointer to macro feature</param>
 /// <param name="dims">Pointer to dimensions of macro feature</param>
 /// <param name="parameters">Current instance of parameters (including the values of dimensions)</param>
 /// <remarks>Use the <see cref="DimensionDataExtension.SetOrientation(DimensionData, Point, Vector)"/>
 /// helper method to set the dimension orientation and position based on its values</remarks>
 protected virtual void OnSetDimensions(ISldWorks app, IModelDoc2 model, IFeature feature,
                                        MacroFeatureRebuildResult rebuildResult, DimensionDataCollection dims, TParams parameters)
 {
     OnSetDimensions(app, model, feature, dims, parameters);
 }