上一篇文章中是关于在Revit中添加共享参数的步骤,
下面是使用代码来添加共享参数:
主要代码如下:
// 创建共享参数
private void CreateShareInfor(Autodesk.Revit.ApplicationServices.Application revitApp, Document revitDoc, string definitionName)
{
try
{
string groupName = "AssetsManagement";
ParameterType parameterType = ParameterType.Text;
CategorySet categorySet = new CategorySet();
Category pipeCategory = revitDoc.Settings.Categories.get_Item(BuiltInCategory.OST_PipeCurves);
categorySet.Insert(pipeCategory);
bool instanceParameter = true;
BuiltInParameterGroup parameterGroup = BuiltInParameterGroup.PG_DATA;
using (Transaction trans = new Transaction(revitDoc,"AddParameter"))
{
trans.Start();
revitApp.SharedParametersFilename = sharedParametersFilename;
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));
}
ElementBinding binding = null;
if (instanceParameter)
{
binding = revitApp.Create.NewInstanceBinding(categorySet);
}
else
{
binding = revitApp.Create.NewTypeBinding(categorySet);
}
if (!revitDoc.ParameterBindings.Contains(definition))
{
bool insertSuccess = revitDoc.ParameterBindings.Insert(definition, binding, parameterGroup);
if (!insertSuccess)
{
throw new Exception("Failed to bind definition to category");
}
}
trans.Commit();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}