共享参数
从Revit的用户界面可以知道共享参数是被存储在一个文件里面的。如何通过API来对它进行查询和创建,以及应用到具体的构建类型上面呢?
下面是一些关键的API和代码实现。
设置共享参数文件路径
1 // RevitApp 为你当前代码中的 Autodesk.Revit.ApplicationServices.ControlledApplication
2 RevitApp.SharedParametersFilename = @"C:YourDefinitionFile.txt";
读取共享参数信息
1 // RevitApp 为你当前代码中的 Autodesk.Revit.ApplicationServices.ControlledApplication
2 DefinitionFile definitionFile = RevitApp.OpenSharedParameterFile();
读取具体内容
1.读取存储共享参数的文件的名称;
2.读取各个分组;
3.读取分组中各个参数的定义。
// 以下代码来自 Revit API 公开文档。
private void ShowDefinitionFileInfo(DefinitionFile myDefinitionFile)
{
StringBuilder fileInformation = new StringBuilder(500);
// 存储共享参数的文件名
fileInformation.AppendLine("File Name: " + myDefinitionFile.Filename);
// 访问所有参数分组
foreach (DefinitionGroup myGroup in myDefinitionFile.Groups)
{
// 得到分组名称
fileInformation.AppendLine("Group Name: " + myGroup.Name);
// 得到分组中的所有定义
foreach (Definition definition in myGroup.Definitions)
{
// 得到定义的名称
fileInformation.AppendLine("Definition Name: " + definition.Name);
}
}
TaskDialog.Show("Revit",fileInformation.ToString());
}
创建共享参数
用在“墙”,这种构建类型上添加共享参数为例:
1.创建一个新的group到共享参数定义文件,名称为MyParameters1;
2.创建一个参数定义,Instance_ProductDate,到名为MyParameters1的group;
3.创建类别集合用于绑定,把墙这个类别加入;
4.创建InstanceBinding;
5.得到当前文档的BingdingMap,并把创建出来的InstanceBinding绑定上去。
// 以下代码来自 Revit API 公开文档。
public bool SetNewParameterToInstanceWall(UIApplication app, DefinitionFile myDefinitionFile)
{
// 创建一个新的group到共享参数定义文件
DefinitionGroups myGroups = myDefinitionFile.Groups;
DefinitionGroup myGroup = myGroups.("MyParameters1");
// 创建一个参数定义
ExternalDefinitionCreationOptions option = new ExternalDefinitionCreationOptions("Instance_ProductDate", ParameterType.Text);
// 只读,仅API可以修改
option.UserModifiable = false;
// 设置说明字符串
option.Description = "Wall product date";
// 加入 `MyParameters1` group
Definition myDefinition_ProductDate = myGroup.Definitions.(option);
// 创建类别集合用于绑定,把墙这个类别加入
CategorySet myCategories = app.Application..NewCategorySet();
Category myCategory = Category.GetCategory(app.ActiveUIDocument.Document, BuiltInCategory.OST_Walls);
myCategories.(myCategory);
//创建 InstanceBinding
InstanceBinding instanceBinding = app.Application..NewInstanceBinding(myCategories);
// 得到当前文档的 BingdingMap,并把创建出来的InstanceBinding绑定上去
BindingMap bindingMap = app.ActiveUIDocument.Document.ParameterBindings;
bool instanceBindOK = bindingMap.(myDefinition_ProductDate,
instanceBinding, BuiltInParameterGroup.PG_TEXT);
return instanceBindOK;
}
Revit中文网作为国内知名BIM软件培训交流平台,几十万Revit软件爱好者和你一起学习Revit,不仅仅为广大用户提供相关BIM软件下载与相关行业资讯,同时也有部分网络培训与在线培训,欢迎广大用户咨询。
网校包含各类BIM课程320余套,各类学习资源270余种,是目前国内BIM类网校中课程最有深度、涵盖性最广、资源最为齐全的网校。网校课程包含Revit、Dynamo、Lumion、Navisworks、Civil 3D等几十种BIM相关软件的教学课程,专业涵盖土建、机电、装饰、市政、后期、开发等多个领域。
需要更多BIM考试教程或BIM视频教程,可以咨询客服获得更多免费Revit教学视频。
转载请注明来源本文地址:https://www.tuituisoft/blog/11275.html