关于Revit 共享参数的那点事

简介: 关于Revit 共享参数的那点事

根据Autodesk官方的定义,共享参数是参数定义,可用于多个族或项目中。 它最牛掰的功能在于可以直接在项目文档里给族添加参数  >>>>  就是这么简单粗暴,来我们一起了解一下Revit 中这个神奇的参数定义功能!

1. 共享参数的概念

刚才已经提到过了共享参数是用于参数定义的,而且它不仅可以在族文档中定义参数,还可以在项目文档中再定义参数,简直逆天!不仅如此,它的作用对象是族类别(注意不是族类型,族类别包括:墙啊、结构柱啊、公制常规模型等等),这些参数随后可以用于创建明细表,这是一般参数没有的待遇呀!最重要的是,共享参数定义保存在与任何族文件或 Revit 项目不相关的txt文件中,这样就可以从其他族或项目中访问此文件,不用重复定义啦!


话不多说,直接上效果图!

20200227231009725.png

2. 操作方法

(1)首先你得找到“共享参数”的功能按钮在哪吧

  • 它位于“管理”面板下,和Dynamo大兄弟在一个面板下哦!

20200227225111557.png


2) 创建共享参数定义文件

点击创建按钮,选择文件保存的路径,如果有已经定义好的文件直接浏览即可


20200227225453513.png


(3) 创建参数组,方便对参数的管理。


20200227225759236.png


(4) 新建一个参数作为测试,我这边取了一个“MyDefinition”的文字类型参数。


20200227230008694.png

(5)点击“确定”之后,在管理面板下打开“项目参数”

20200227230258386.png


(6)添加参数,参数类型为“共享参数”,点击进行参数选择


20200227230419667.png


选择“MyGroup”参数组下的参数定义,并确定。

20200227230601394.png


设定共享参数的类型和参数的分组位置!

20200227231328452.png


(7) 添加共享参数的作用类别,可多选。


20200227230736321.png

(8)确定之后,验证是否成功,查看常规模型是否存在名为“MyDefinition”的文字类型参数。

3. 代码实现

private void CreateSharInfo(Application revitApp, Document revitDoc)
        {
            try
            {
                string sharedParametersFilename = @"C:\Users\炳勇\OneDrive\桌面\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_GenericModel);
                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;
            }
        }

4. 注意事项


共享参数不仅可以通过代码进行创建,还能提取并赋值,修改方法可参照其他类型参数更改的代码:Revit API 修改项目文档中族参数的几个要点;

新建共享参数文件时,必须采用unicode编码,否则系统无法识别;

共享参数的定义文件删除后,并不会影响到已经添加到模型中的参数;

好像没有什么要注意的了!



相关文章
|
安全
RxSwift特征序列Driver的使用,以及共享附加作用与非共享附加作用的区别?
RxSwift特征序列Driver的使用,以及共享附加作用与非共享附加作用的区别?
187 0
Revit二次开发—载入族并交互式放置
Revit二次开发—载入族并交互式放置
Revit二次开发—载入族并交互式放置
Revit二次开发—更改激活视图(activeview)失败原因
Revit二次开发—更改激活视图(activeview)失败原因
Revit二次开发—更改激活视图(activeview)失败原因
Revit 二次开发——设置内置类别在激活视图下的可见性
Revit 二次开发——设置内置类别在激活视图下的可见性
Revit 二次开发—通过视图名激活对应视图
Revit 二次开发—通过视图名激活对应视图
|
机器学习/深度学习 iOS开发 安全