Revit创建共享参数和获取项目参数
2016-04-01 16:00
579 查看
Revit除了有内建的参数,还允许用户自定义参数,分别是:共享参数和项目参数。
对应界面上的菜单分别是"管理->共享参数"和"管理->项目参数"
共享参数被定义在Revit之外的一个共享参数文件(.txt中)。删掉这个文件,共享参数就会丢失。
程序入口代码:
1.获取共享参数
2.创建共享参数
3.获取项目参数(API无法创建项目参数的)
对应界面上的菜单分别是"管理->共享参数"和"管理->项目参数"
共享参数被定义在Revit之外的一个共享参数文件(.txt中)。删掉这个文件,共享参数就会丢失。
程序入口代码:
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { Autodesk.Revit.ApplicationServices.Application revitApp = commandData.Application.ActiveUIDocument.Application.Application; Autodesk.Revit.DB.Document revirDoc = commandData.Application.ActiveUIDocument.Document; TaskDialog.Show("Revit", GetSharInfo(revitApp)); return Result.Succeeded; }
1.获取共享参数
/// <summary> /// 获取共享参数信息 /// </summary> /// <param name="commandData"></param> /// <returns></returns> private string GetSharInfo(Autodesk.Revit.ApplicationServices.Application revitApp) { StringBuilder str = new StringBuilder(); 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; str.AppendLine(string.Format("{0}---{1}", name, type.ToString())); } } return str.ToString(); }
2.创建共享参数
/// <summary> /// 创建共享参数 /// </summary> /// <param name="commandData"></param> private void CreateSharInfo(Autodesk.Revit.ApplicationServices.Application revitApp, Autodesk.Revit.DB.Document revitDoc) { try { 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(string.Format("Can't create shared parameter file:{0}", 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 (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); } bool insertSuccess = revitDoc.ParameterBindings.Insert(definition, binding, parameterGroup); if (!insertSuccess) { throw new Exception("Failed to bind definition to category"); } } catch (Exception ex) { throw ex; } }
3.获取项目参数(API无法创建项目参数的)
/// <summary> /// 获取项目参数(API无法创建项目参数) /// </summary> /// <param name="revitDoc"></param> /// <returns></returns> private string GetProjectParam(Autodesk.Revit.DB.Document revitDoc) { StringBuilder strBuild = new StringBuilder(); BindingMap map = revitDoc.ParameterBindings; DefinitionBindingMapIterator dep = map.ForwardIterator(); while (dep.MoveNext()) { Definition definition = dep.Key; string definitionName = definition.Name; ParameterType parameterType = definition.ParameterType; InstanceBinding instanceBinding = dep.Current as InstanceBinding; if (instanceBinding != null) { CategorySet categorySet = instanceBinding.Categories; strBuild.AppendLine(string.Format("Name:{0} Type:{1} CategorySet:{2}", definitionName, parameterType, categorySet.GetType().ToString())); } else { strBuild.AppendLine(string.Format("Name:{0} Type:{1}", definitionName, parameterType)); } } return strBuild.ToString(); }
相关文章推荐
- CentOS 搭建 FastDFS-5.0.5集群
- 如何巧妙利用PSR监控Windows桌面
- Java中数据的简单转换
- 备忘录模式
- 时代进步下,你的孩子幸福感高吗?一起学学孩子的培养问题
- (菜鸟篇):1.android登录界面
- CATransform3D
- kvc nil的问题
- 码农注册CSDN博客...成功!
- ExtJs设置文本框隐藏时label不隐藏的解决办法
- 【解题报告】Codeforces Round #301 (Div. 2)
- 白话经典算法系列之二 直接插入排序的三种实现
- AndroidStudio导入项目到VisualSVN Server并忽略(ignore)相关文件详细步骤
- 【转】ORACLE制作表时的“小计”和“合计” (ROLLUP)
- 所有文章都迁移到我自己的博客了:http://blog.neazor.com
- JavaScript —— Date() 函数方法
- jvm(7)-虚拟机类加载机制
- WireShark使用lua接口截获网络数据
- The request sent by the client was syntactically incorrect
- 取消windows下文件的默认打开方式