Revit二次开发——Revit创建共享参数及绑定实例

创建共享参数及绑定实例


在做Revit开发的时候,想直接通过代码添加项目参数,但没有找到方法,所以通过添加共享参数绑定实例达到目的。

参数列表及代码如下:

  •  Parameters:
     			doc				当前文档
     			paramGroup		参数组
     			paramName		参数名
     			paramType		参数类型
     			type			参数分组方式
     			listCategoryId	绑定实例类别
    
public static void CreateSharedParm(Document doc, string paramGroup, string paramName, ParameterType paramType, List<BuiltInCategory> listCategoryId, BuiltInParameterGroup type)
        {
            // 获取创建共享参数的txt路径
            string txtFile = doc.Application.SharedParametersFilename;
            // 判断路径是否有效,如果为空,创建txt文件将路径赋值给app.SharedParametersFilename
            if (!string.IsNullOrEmpty(txtFile))
            {
                if (!File.Exists(txtFile))
                {
                    System.IO.StreamWriter sw = System.IO.File.CreateText(txtFile);
                    sw.Close();
                }
                DefinitionFile dfile = doc.Application.OpenSharedParameterFile();
                DefinitionGroup dg = dfile.Groups.get_Item(paramGroup);
                if (dg == null)
                    dg = dfile.Groups.Create(paramGroup);// 创建一个共享参数分组
                Definition df = dg.Definitions.get_Item(paramName);
                if (df == null)
                {
                    // 参数创建的选项,包括参数名字,参数类型,用户是不是可以修改。。
                    ExternalDefinitionCreationOptions edco = new ExternalDefinitionCreationOptions(paramName, paramType);
                    // 创建参数
                    df = dg.Definitions.Create(edco);
                }
                BindingMap bmap = doc.ParameterBindings;
                if (!bmap.Contains(df))
                {
                    CategorySet cateSet = doc.Application.Create.NewCategorySet();
                    // 在Category集合中加入所有的category
                    foreach (BuiltInCategory bit in listCategoryId)
                    {
                        Category loadCate = Category.GetCategory(doc, bit);
                        // 在Category集合中加入线荷载的category
                        bool flag = cateSet.Insert(loadCate);
                    }
                    InstanceBinding loadInsBd = doc.Application.Create.NewInstanceBinding(cateSet);
                    bmap.Insert(df, loadInsBd, type);
                }
            }
        }
上一篇:DG在duplicate过程中主库归档能否向备库传输?


下一篇:【笛卡尔树 + 二分】Codeforces Round #586 (Div. 1 + Div. 2) - F - Gardener Alex