首页/技术分享

Revit技巧 | revit 怎么做共享参数?Revit API 二次开发:共享参数

发布于:2024-09-30 10:30:01
120人 分享

image.png

    共享参数

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

image.png

    读取具体内容

    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教学视频

l  BIM培训网校课程目录

l  Revit零基础培训教程

l  BIM项目实战训练营


转载请注明来源本文地址:https://www.tuituisoft/blog/11275.html

上一篇:

Revit技巧 | Revit净高分析怎么做?关于净空分析报告的制作

下一篇:

Revit技巧 | Revit螺旋线怎么画?关于Revit螺旋线的制作