Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
            }
        }