public static Definition GetDefinition(string name, Model.DefinitionGroupType defGroupType, ParameterType paramType) { Definition def = null; DefinitionFile defFile = revitData.Application.OpenSharedParameterFile(); if (defFile == null) { CreateSharedParameterFile(Constant.ConstantValue.SharedParameterFileName); defFile = revitData.Application.OpenSharedParameterFile(); } DefinitionGroups defGroups = defFile.Groups; var defGroup = defGroups.get_Item(defGroupType.ToString()); if (defGroup == null) { defGroup = defGroups.Create(defGroupType.ToString()); } var defs = defGroup.Definitions; def = defs.get_Item(name); if (def == null) { def = defGroup.Definitions.Create(new ExternalDefinitionCreationOptions(name, paramType) { UserModifiable = true }); } return(def); }
public static void AddParameter(string name, Model.AddParameterType addParamType, Model.DefinitionGroupType defGroupType, ParameterType paramType, BuiltInParameterGroup paramGroup, List <BuiltInCategory> bics) { var def = GetDefinition(name, defGroupType, paramType); var bindingMap = revitData.BindingMap; switch (addParamType) { case AddParameterType.Instance: var insBinding = bindingMap.get_Item(def) as InstanceBinding; if (insBinding == null) { bindingMap.Insert(def, revitData.Application.Create.NewInstanceBinding(bics.GetCategorySet()), paramGroup); } else { var existcateSet = insBinding.Categories; if (!existcateSet.GetBuiltinCategories().IsEqualCate(bics)) { bindingMap.ReInsert(def, revitData.Application.Create.NewInstanceBinding(bics.GetCategorySet())); } } break; case AddParameterType.Type: var typeBinding = bindingMap.get_Item(def) as TypeBinding; if (typeBinding == null) { bindingMap.Insert(def, revitData.Application.Create.NewTypeBinding(bics.GetCategorySet()), paramGroup); } else { var existcateSet = typeBinding.Categories; if (!existcateSet.GetBuiltinCategories().IsEqualCate(bics)) { bindingMap.ReInsert(def, revitData.Application.Create.NewTypeBinding(bics.GetCategorySet())); } } break; } }