1.获取共享参数

 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.创建共享参数

 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无法创建项目参数的)

 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();
}

4.创建项目参数

Revit API无法创建项目参数,目前没有找到创建方法。

Revit API 操作共享参数和项目参数的更多相关文章

  1. Revit通过API创建共享参数

    Revit共享参数是通过创建一个.txt类型的文件来保存相关信息,一旦与项目保存完毕之后,共享参数也就变成了项目参数(项目参数无法通过API创建),项目参数是保存在Revit项目里面的,所以此时这个. ...

  2. Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群

    Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...

  3. 【转】javascript浏览器参数的操作,js获取浏览器参数

    原文地址:http://www.haorooms.com/post/js_url_canshu html5修改浏览器地址:http://www.cnblogs.com/JiangXiaoTian/ar ...

  4. ci连贯操作的limit两个参数和sql是相反的

    ci连贯操作的limit两个参数和sql是相反的 db->where("name =",'mary')->ge() name后面要有个空格否则报错当为一个字段 -> ...

  5. 几种placeholder替换项目参数的方法比较

    引言:(引自:http://openwebx.org/docs/autoconfig.html) 在一个应用中,我们总是会遇到一些参数,例如: 数据库服务器IP地址.端口.用户名: 用来保存上传资料的 ...

  6. weblogic基本目录介绍,位数查看,启动与发布项目,修改JVM参数,设置项目为默认项目

    这里的基本目录%base%表示安装目录,如我的目录为:E:/weblogic就是%base% 1.weblogic目录介绍 weblogic主要的目录介绍: 1.日志目录: 每个domain(域)都有 ...

  7. 读《分布式一致性原理》JAVA客户端API操作3

    更新数据 客户端可以通过zookeeper的API来更新一个节点的数据内容,有如下两个接口: public Stat setData(final String path, byte data[], i ...

  8. 大数据技术之_11_HBase学习_02_HBase API 操作 + HBase 与 Hive 集成 + HBase 优化

    第6章 HBase API 操作6.1 环境准备6.2 HBase API6.2.1 判断表是否存在6.2.2 抽取获取 Configuration.Connection.Admin 对象的方法以及关 ...

  9. 大数据(5) - HDFS中的常用API操作

    一.安装java 二.IntelliJ IDEA(2018)安装和破解与初期配置 参考链接 1.进入官网下载IntelliJ IDEA https://www.jetbrains.com/idea/d ...

随机推荐

  1. SharePoint online Multilingual support - Development(2)

    博客地址:http://blog.csdn.net/FoxDave 上一节讲了如何通过Code的方式设置Site和List级别的国际化,本节介绍一下如何设置Content type和Site co ...

  2. cf467D(map,vector,bfs,特点提取)

    D. Fedor and Essay time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  3. chromium ④

    chromium的源码非常大,选择合适的点入手能省不少力气.在 win7下编译chromium中我曾提到学习chromium源码的一个小工程test_shell,代码目录在src/webkit/too ...

  4. JAVA自动补全代码

    打开eclipse(对myeclipse同样适用) 找到窗口(windows)菜单,打开最后一项首选项(Preferences)找到下属菜单java打开,打开里边的编辑器(Editor)菜单,点击内容 ...

  5. JS之鼠标改变img

    代码用途: 通过点击图片,来改变图片内容 代码: <!DOCTYPE html> <html> <body> <script> function cha ...

  6. jQuery中AJAX同步如何实现?

    jax请求默认的都是异步的如果想同步 async设置为false就可以(默认是true) var html = $.ajax({  url: "some.php",  async: ...

  7. 论Injection的前世今生

    Click me~ why Java EE provides injection mechanisms that enable your objects to obtain references to ...

  8. Java中如何正确的将byte[]数组转化为String类型?

    很多人在编程时,总是喜欢用一下方法将数组转为字符串:(a为byte数组) String s=a.toString(); 可是每次返回的时候,新手看来返回的结果是乱码,比如说我,写RSA算法时,没有注意 ...

  9. 2019寒假算法基础集训营1 - B 小a与"204"

    题目: 小a非常喜欢这个数字,因为. 现在他有一个长度为的序列,其中只含有这三种数字 设为序列中第个数,你需要重新排列这个数列,使得最大(公式的含义是:每个数与前一个数差的平方的和) 注意:我们默认 ...

  10. 20155208徐子涵 2016-2017-2 《Java程序设计》第8周学习总结

    20155208徐子涵 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 第14章 NIO与NIO2 14.1 认识NIO NIO概述 NIO使用频道(Chan ...