1 Reply Latest reply on Nov 22, 2016 12:50 PM by Alexandre Gragnano

    MacroFeature & PMPSelectionbox

    Alexandre Gragnano



      I am starting a macro feature project but I have some problems with it:

      I have a PMPSelectionbox which accept multiple sketches in input.

      If the user click on OK button, OnClose method call SaveFeatureData:


      void IPropertyManagerPage2Handler9.OnClose(int reason)
          if (reason == (int)swPropertyManagerPageCloseReasons_e.swPropertyManagerPageClose_Okay)


      In this method, I am trying to save selections into the feature definition object:


      private void SaveFeatureData()
          var selMgr = (SelectionMgr)ModelDoc.SelectionManager;
          var features = new List<Feature>();
          var selMarks = new List<int>();
          var drViews = new List<object>();
          var count = selMgr.GetSelectedObjectCount2(SelectionMark);
          if (count > 0)
              for (var i = 1; i <= count; i += 1)
                  var type = selMgr.GetSelectedObjectType3(i, SelectionMark);
                  if (type == SelectionType)
                      var selection = selMgr.GetSelectedObject6(i, SelectionMark);
                      if (selection is Feature)
          if (Feature == null)
              Feature = ModelDoc.FeatureManager.InsertMacroFeature3
                  BaseName: "MacroFeature",
                  ProgId: "Namespace.MacroFeature",
                  MacroMethods: null,
                  ParamNames: null,
                  ParamTypes: null,
                  ParamValues: null,
                  DimTypes: null,
                  DimValues: null,
                  EditBodies: null,
                  IconFiles: null,
                  Options: 0
          if (Feature != null)
              var data = (MacroFeatureData)Feature.GetDefinition();
              if (data != null)
                  var access = data.AccessSelections(ModelDoc, null);
                  if (access == true)
                          Objects: features.ToArray(),
                          SelMarks: selMarks.ToArray(),
                          DrViews: drViews.ToArray()
                      Feature.ModifyDefinition(data, ModelDoc, null);


      At creation time, everything is ok but at edition time, if I add or remove a sketch

      from the selection box and I click on OK, the new selection is not saved.


      Note: If I run step by step, everything look ok:

      - features list is ok

      - selmarks list is ok

      - Feature.ModifyDefinition returns true


      I do not really understand AccessSelections / ReleaseSelection / ModifyDefinition mechanism


      Some help will be welcome.