change parameter group of family parameter or shared parameter

change parameter group of family parameter or shared parameter

Anonymous
Not applicable
2,294 Views
2 Replies
Message 1 of 3

change parameter group of family parameter or shared parameter

Anonymous
Not applicable

Is it possible to change parameter group property of family parameter or shared parameter (revit 2013 version)?

 

 

0 Likes
Accepted solutions (1)
2,295 Views
2 Replies
Replies (2)
Message 2 of 3

Anonymous
Not applicable
Accepted solution

As far as I know it isn't possible in either Revit 2013 or any Revit version.

0 Likes
Message 3 of 3

adam.krug
Advocate
Advocate

You can't do it with a simple method supplied with Revit API (why they didn't foresee it ???) . But you can do the following dirty trick, which works for me:

 

private void moveParameter(FamilyParameter fPar, BuiltInParameterGroup fromGroup, BuiltInParameterGroup toGroup)
            {
                Definition def = fPar.Definition;
                ParameterType pType = def.ParameterType;
                bool isShared = fPar.IsShared;
                bool isInstance = fPar.IsInstance;

                if (isShared)
                {
                    ExternalDefinition eDef = InitSharedParameterFileInfo.GetSharedParameter(def.Name);
                    fPar = FamilyManager.ReplaceParameter(fPar, "tempParameter", toGroup, isInstance);
                    FamilyManager.ReplaceParameter(fPar, eDef, toGroup, isInstance);
                }
                else
                {
                    ExternalDefinition eDef = getTempExternalDef(pType, fPar);
                    fPar = FamilyManager.ReplaceParameter(fPar, eDef, toGroup, isInstance);
                    FamilyManager.ReplaceParameter(fPar, def.Name, toGroup, isInstance);
                }
            }

So you need an intermediate step, from shared to non-shared, from non-shared to shared again. Or vice versa.

For non-shared you will need a set of dummy shared parameters to serve as the intermediate step.

Another problem is that you want to move shared parameter, you should have its definition in your shared parameter file, as you cannot cast from FamilyParameter to ExternalDefinition unfortunately.