共享参数给我们带来很多遍历,那么如何通过API来创建它们,并和某些类别的元素进行绑定呢?
下面我们用最少的代码来演示一下:
RevitApp.SharedParametersFilename = @"C:\YourDefinitionFile.txt"; // set the shared file if haven't
DefinitionFile definitionFile = RevitApp.OpenSharedParameterFile();
DefinitionGroup group = definitionFile.Groups.Create("A New Group"); // create a new group, or get an existing group
ExternalDefinitonCreationOptions edco = new ExternalDefinitonCreationOptions("ParaName", ParameterType.Text);
Definition definition = group.Definitions.Create(edco); // create a new definition
CategorySet categories = new CategorySet();
categories.Insert(RevitDoc.Settings.Categories.get_Item(BuiltInCategory.OST_Walls));
categories.Insert(RevitDoc.Settings.Categories.get_Item(BuiltInCategory.OST_Windows));
Binding binding = new InstanceBinding(categories); // bind categories for instances, use TypeBinding to bind the parameter with types
RevitDoc.ParameterBindings.Insert(definition, binding); // bind category and definition
首先指定一个共享文件,如果从来没有指定过共享文件的话,注意,该文件一定要首先存在,否则会抛异常。
OpenSharedParameterFile之后,新建组,或者通过definitionFile.Groups.get_Item("GropuName")来获取已存在的组。
然后创建一个Definition和一个Binding,可以是InstanceBinding或者TypeBinding,对应着和实例绑定还是和类型绑定。
最后调用ParameterBindings.Insert来完成绑定操作。
注意ParameterBindings.Insert要修改文档,所以,需要放在Transaction里面来操作哦,否则会有异常ModificationOutsideTransactionException抛出,请见http://blog.youkuaiyun.com/lushibi/article/details/41863651