revit api共享参数
获取共享参数
// 打开共享参数文件
DefinitionFile definitionFile = RevitApp.OpenSharedParameterFile();
// 获取参数组的集合
DefinitionGroups groups = definitionFile.Groups;
foreach (DefinitionGroup group in groups)
{
   // 获取参数组内的参数定义
   foreach (Definition definition in group.Definitions)
   {
      string name = definition.Name;
      ParameterType type = definition.ParameterType;
      // 对参数定义的其他操作
   }
}创建共享参数
string sharedParametersFilename = @"C:\shared-parameters.txt";
string groupName = "MyGroup";
string definitionName = "MyDefinition";
ParameterType parameterType = ParameterType.Text;
CategorySet categorySet = new CategorySet();
Category wallCategory = RevitDoc.Settings.Categories.get_Item(BuiltInCategory.OST_Walls);
categorySet.Insert(wallCategory);
bool instanceParameter = true;
BuiltInParameterGroup parameterGroup = BuiltInParameterGroup.PG_DATA;
if (!System.IO.File.Exists(sharedParametersFilename))
{
   try
   {
      System.IO.StreamWriter sw = System.IO.File.CreateText(sharedParametersFilename);
      sw.Close();
   }
   catch (Exception)
   {
      throw new Exception("Can't create shared parameter file: " + sharedParametersFilename);
   }
}
// 设置共享参数文件
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 (null == group)
{
   // 如果参数组不存在,则创建一个
   group = groups.Create(groupName);
}
if (null == group)
   throw new Exception("Failed to get or create group: " + groupName);
// 获取参数定义
Definition definition = group.Definitions.get_Item(definitionName);
if (definition == null)
{
   // 如果参数定义不存在,则创建一个
   definition = group.Definitions.Create(definitionName, parameterType);
}
// 调用不同的函数创建类型参数或者实例参数
ElementBinding binding = null;
if (instanceParameter)
{
   binding = RevitApp.Create.NewInstanceBinding(categorySet);
}
else
{
   binding = RevitApp.Create.NewTypeBinding(categorySet);
}
// 把参数定义和类别绑定起来(下面的小节会提到“绑定”),元素的新的参数就创建成功了。
bool insertSuccess = RevitDoc.ParameterBindings.Insert(definition, binding, parameterGroup);
if (!insertSuccess)
{
   throw new Exception("Failed to bind definition to category");
}
判断共享参数和项目参数
Parameter parameter;
InternalDefinition definition = parameter.Definition as InternalDefinition;
bool isSharedParameter = parameter.IsShared; //共享参数
bool isProjectParameter = definition.BuiltInParameter == BuiltInParameter.INVALID && !parameter.IsShared; //项目参数
 
                    
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号