创建共享参数及绑定实例
在做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);
}
}
}