在Revit中有一个共享参数,他可以绑定到某一个Category中。
API中创建共享参数的方法在Revit2015以后做了一些调整,本文
是Revit2015及以后的方法。
创建共享参数,必须要有一个共享参数的txt 文件,这个文件的
路径是:
string txtFile = app.SharedParametersFilename;
这个路径是可以get和set的,
下面结合一个小程序具体介绍,这个例子实现的是,给所有的墙
加一个名为“特别注释” 的实例参数,当然创建类型参数也是可以的,
方法都大同小异
private void CreateSharedParm()
{
// 获取创建共享参数的txt路径
string txtFile = app.SharedParametersFilename;
// 判断 路径是否有效,如果为空,读者可以创建一txt文件
//将路径赋值给app.SharedParametersFilename
if (!string.IsNullOrEmpty(txtFile))
{
// 判断 路径是否有效,如果为空,读者可以创建一txt文件
//将路径赋值给app.SharedParametersFilename
if (File.Exists(txtFile)){
DefinitionFile dfile = app.OpenSharedParameterFile();
// 创建一个共享参数分组
DefinitionGroup dg = dfile.Groups.Create("MyGroup");
// 参数创建的选项,包括参数名字,参数类型,用户是不是可以修改。。
ExternalDefinitionCreationOptions edco = new ExternalDefinitionCreationOptions("特别注释", ParameterType.Text);
// 创建参数
Definition df = dg.Definitions.Create(edco);
// 上面就创建了 一个名为“MyGroup” 的分组,并在这个分组下创建了一个名为“特别注释”的参数
// 创建一个Category集合
CategorySet cateSet = app.Create.NewCategorySet();
// 获取墙的category
Category wallCate = Category.GetCategory(doc, BuiltInCategory.OST_Walls);
// 在Category集合中加入 墙的category
bool flag = cateSet.Insert(wallCate);
// 给 这个Category集合中的Category 创建一个实例绑定
InstanceBinding wallInsBd = app.Create.NewInstanceBinding(cateSet);
// 获取当前Document的BindingMap
BindingMap bmap = doc.ParameterBindings;
//创建共享参数和Category之间的Binding
bmap.Insert(df, wallInsBd);
}
}
}
博主会经常更新一些技术文章,请大家多多关注,多多交流
更多技术交流,请加qq群480950299