zoukankan      html  css  js  c++  java
  • Revit API 操作共享参数和项目参数

    1.获取共享参数

     1 private string GetSharInfo(Autodesk.Revit.ApplicationServices.Application revitApp)
     2 {
     3     StringBuilder str = new StringBuilder();
     4     DefinitionFile definitionFile = revitApp.OpenSharedParameterFile();
     5     DefinitionGroups groups = definitionFile.Groups;
     6     foreach (DefinitionGroup group in groups)
     7     {
     8         foreach (Definition definition in group.Definitions)
     9         {
    10             string name = definition.Name;
    11             ParameterType type = definition.ParameterType;
    12             str.AppendLine(string.Format("{0}---{1}", name, type.ToString()));
    13         }
    14     }
    15     return str.ToString();
    16 }

    2.创建共享参数

     1 private void CreateSharInfo(Autodesk.Revit.ApplicationServices.Application revitApp, Autodesk.Revit.DB.Document revitDoc)
     2 {
     3     try
     4     {
     5         string sharedParametersFilename = @"C:shared-parameters.txt";
     6         string groupName = "MyGroup";
     7         string definitionName = "MyDefinition";
     8         ParameterType parameterType = ParameterType.Text;
     9         CategorySet categorySet = new CategorySet();
    10         Category wallCategory = revitDoc.Settings.Categories.get_Item(BuiltInCategory.OST_Walls);
    11         categorySet.Insert(wallCategory);
    12         bool instanceParameter = true;
    13         BuiltInParameterGroup parameterGroup = BuiltInParameterGroup.PG_DATA;
    14         if (!System.IO.File.Exists(sharedParametersFilename))
    15         {
    16             try
    17             {
    18                 System.IO.StreamWriter sw = System.IO.File.CreateText(sharedParametersFilename);
    19                 sw.Close();
    20             }
    21             catch (Exception)
    22             {
    23                 throw new Exception(string.Format("Can't create shared parameter file:{0}", sharedParametersFilename));
    24             }
    25         }
    26         revitApp.SharedParametersFilename = sharedParametersFilename;
    27 
    28         DefinitionFile definitionFile = revitApp.OpenSharedParameterFile();
    29         if (definitionFile == null)
    30         {
    31             throw new Exception("Can not open shared parameter file");
    32         }
    33 
    34         DefinitionGroups groups = definitionFile.Groups;
    35         DefinitionGroup group = groups.get_Item(groupName);
    36         if (group == null)
    37         {
    38             group = groups.Create(groupName);
    39         }
    40         Definition definition = group.Definitions.get_Item(definitionName);
    41         if (definition == null)
    42         {
    43             definition = group.Definitions.Create(new ExternalDefinitionCreationOptions(definitionName, parameterType));
    44         }
    45         ElementBinding binding = null;
    46         if (instanceParameter)
    47         {
    48             binding = revitApp.Create.NewInstanceBinding(categorySet);
    49         }
    50         else
    51         {
    52             binding = revitApp.Create.NewTypeBinding(categorySet);
    53         }
    54         bool insertSuccess = revitDoc.ParameterBindings.Insert(definition, binding, parameterGroup);
    55         if (!insertSuccess)
    56         {
    57             throw new Exception("Failed to bind definition to category");
    58         }
    59     }
    60     catch (Exception ex)
    61     {
    62         throw ex;
    63     }
    64 }

    3.获取项目参数(API无法创建项目参数的)

     1 private string GetProjectParam(Autodesk.Revit.DB.Document revitDoc)
     2 {
     3     StringBuilder strBuild = new StringBuilder();
     4     BindingMap map = revitDoc.ParameterBindings;
     5     DefinitionBindingMapIterator dep = map.ForwardIterator();
     6     while (dep.MoveNext())
     7     {
     8         Definition definition = dep.Key;
     9         string definitionName = definition.Name;
    10         ParameterType parameterType = definition.ParameterType;
    11         InstanceBinding instanceBinding = dep.Current as InstanceBinding;
    12         if (instanceBinding != null)
    13         {
    14             CategorySet categorySet = instanceBinding.Categories;
    15             strBuild.AppendLine(string.Format("Name:{0} Type:{1} CategorySet:{2}", definitionName, parameterType, categorySet.GetType().ToString()));
    16         }
    17         else
    18         {
    19             strBuild.AppendLine(string.Format("Name:{0} Type:{1}", definitionName, parameterType));
    20         }
    21     }
    22     return strBuild.ToString();
    23 }

    4.创建项目参数

    Revit API无法创建项目参数,目前没有找到创建方法。
  • 相关阅读:
    http协议及工作原理
    前端中的安全问题
    JS中的splice slice concat关于字符串,数组的处理
    git stash缓存
    Node学习心得
    uni-app中的TypeError: Cannot read property 'name' of undefined
    js 中Object.keys()返回string类型的索引
    JS中sort()方法,用于排序
    JS中JSON传值
    JS encodeURI()
  • 原文地址:https://www.cnblogs.com/laoxia/p/8243394.html
Copyright © 2011-2022 走看看