Revit添加共享参数

 1,创建共享参数

private void CreateShareInfo(Document revitDoc, BuiltInCategory builtInCategory, ParameterType paraType, ComponentData data, List<Element> eles)
        {
            try
            {
                Autodesk.Revit.ApplicationServices.Application revitApp = revitDoc.Application;
                string groupName = "AssetsManagement";
                string definitionName = data.ComponentName;
                ParameterType parameterType = paraType;

                Category floorCategory = revitDoc.Settings.Categories.get_Item(builtInCategory);
                BuiltInParameterGroup parameterGroup = BuiltInParameterGroup.PG_DATA;

                using (Transaction trans = new Transaction(revitDoc, "添加共享参数"))
                {
                    var failure = new FailureHandler();
                    failure.BiddingTheWarmingDialog(trans);
                    trans.Start();
                    DefinitionFile definitionFile = revitApp.OpenSharedParameterFile();
                    if (definitionFile == null)
                    {
                        throw new Exception("Can not open shared parameter file");
                    }
                    DefinitionGroups groups = definitionFile.Groups;
                    DefinitionGroup group = groups.get_Item(groupName);
                    if (group == null) //创建组
                    {
                        group = groups.Create(groupName);
                    }
                    Definition definition = group.Definitions.get_Item(definitionName);
                    if (definition == null)//创建定义
                    {
                        definition = group.Definitions.Create(new ExternalDefinitionCreationOptions(definitionName, parameterType));
                    }
                    var instanceBinding = revitDoc.ParameterBindings.get_Item(definition) as InstanceBinding;
                    ElementBinding binding = null;
                    if (instanceBinding != null)
                    {
                        if (!instanceBinding.Categories.Contains(floorCategory))
                        {
                            instanceBinding.Categories.Insert(floorCategory);
                        }
                        revitDoc.ParameterBindings.ReInsert(definition, instanceBinding);
                    }
                    else
                    {
                        CategorySet categySet = revitApp.Create.NewCategorySet();
                        categySet.Insert(floorCategory);
                        instanceBinding = revitApp.Create.NewInstanceBinding(categySet);
                        revitDoc.ParameterBindings.Insert(definition, instanceBinding);
                    }

                    if (!revitDoc.ParameterBindings.Contains(definition))
                    {
                        bool insertSuccess = revitDoc.ParameterBindings.Insert(definition, binding, parameterGroup);
                        if (!insertSuccess)
                        {
                            throw new Exception("Failed to bind definition to category");
                        }
                    }
                    foreach (var ele in eles)
                    {
                        SetParamValue(parameterType, data, ele);
                    }
                    trans.Commit();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

2,设置共享参数的值。

public void SetParamValue(ParameterType paraType, ComponentData data, Element element)
        {
            try
            {
                var param = element.LookupParameter(data.ComponentName);

                if (param != null)
                {
                    var isReadOnly = param.IsReadOnly;
                    if (isReadOnly) return;
                    switch (paraType)
                    {
                        case ParameterType.Integer:
                            {
                                if (!string.IsNullOrEmpty(data.ComponentContent))
                                {
                                    int mi = int.Parse(data.ComponentContent);
                                    element.LookupParameter(data.ComponentName).Set(mi);
                                }
                            }
                            break;
                        case ParameterType.Text:
                            {
                                element.LookupParameter(data.ComponentName).Set(data.ComponentContent);
                            }
                            break;
                    }
                }
            }
            catch (Exception ex)
            {
                TaskDialog.Show("Set Parameter Value Error", ex.ToString());
                return;
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值