下载app免费领取会员
文章来源:慧航BIM汇
来源:徐振
很多人对Revit软件可能已经非常熟悉,软件上上下下各项功能已经滚瓜烂熟了,但是很多人却一直有一个疑问:软件管理选项卡中最后两个按钮“宏管理器”、“宏安全性”是什么东西,是做什么用的,宏是什么,宏可以做什么?接下来我们将了解Revit中宏的定义与宏的作用,并给出一个案例,展示宏在实际工作中的用处。最后给出一些常用的操作代码片段。
首先宏可以理解为是一种程序,用户可以一些将重复性的工作交给计算机自动完成,节省用户的时间,这些预定义的操作流程是可以自由设计的,并且操作流程是可预见的。当然宏是基于RevitAPI来编写制作的,使用宏需要通过编写简单的代码,定义操作逻辑和调用RevitAPI的接口,但是一些简单的操作也是很好实现的,并不需要系统完整的去编写一个插件,一个软件。
No.1 如何创建一个宏
点击“宏管理器”按钮,弹出宏管理器窗口。窗口中有应用程序选项卡和一个名为PC的选项卡,其中应用程序选项卡中包含的宏是可以在该Revit打开的所有的项目中运行的,是应用程序级别的,而PC选项卡中所包含的宏只能在PC这个项目中运行,它是文档级别的,如果软件打开多个项目,那么相应的在宏管理器中也会出现多个选项卡。
(宏管理器)
点击模块按钮,弹出创建新模块窗口,窗口中输入模块名称(模块名称尽量使用英文,命名不规范软件会提示),语言默认选择C#即可,说明可根据需求填写一些提示文字,确定后,软件将自动打开编辑器,初始状态下如图所示,两侧为解决方案中的文件,中间为代码编写区域。
(编辑器)
No.2 如何制作一个宏
完成宏的创建后便可开始制作一个简单的程序,我们在编辑器中找到Module_Startup这个代码片段,如图所示,这个可以理解模块启动时会运行的一个方法,在花括号里面则是需要运行的代码。
我们在花括号内部写入代码:TaskDialog.Show("Revit","我的第一个宏程序");如图所示,这句话的含义是弹出一个提示窗口,窗口中的内容是“我的第一个宏程序”。
No.3 如何运行一个宏
我们在代码片段中写入了一条执行的语句,然后点击编辑器中编译按钮,即编译按钮,编译完成后程序会自动运行。然后你就会发现Revit软件中果然弹出一个提示窗口,内容是“我的第一个宏程序”。
(程序运行结果)
需要注意的是,每写完一个程序,编译后需关注错误栏,如果代码编写有误,那么程序将不会被编译,也实现不了所写的内容,如果程序没有错误的话,该窗口中错误显示为0,则代表编译成功,可以开始运行程序。
(编译错误列表)
当然将程序直接写在模块启动事件中是不实用的,回到宏管理器窗口,会发现创建下面除了创建模块,还可以创建宏,我们选中刚刚创建的Study模块,点击创建宏按钮,同样弹出创建窗口,输入完宏名称后,会发现Study模块中多出了一个宏的子目。如下图所示。
我们回到编辑器,会发现代码的下面增加了publicvoidtest()方法,并且在宏管理器中选择子目后,右侧运行按钮居然亮显了,因此我们可以这样理解,如果点击允许了某个子节点,那么接下来就会允许这个子节点所对应的代码中的方法。大家可以将上面弹出提示框的代码写到下面的方法中,点击运行后,是否会出现同样的效果。
案例:
接下来我们通过一个实用的案例来更加直观的学习宏的功能,案例代码量会更多,但是我会详细解释每行代码的含义,没有revit开发经验的也不要担心,为了简化,我们只实现功能,尽量减少流程。
案例:给项目模型中所有的墙模型名称统一增加加前缀
我们的案例就不再新建宏了,写在直接publicvoidtest()方法中。
首先理一理思路,首先需要获取到模型中所有的墙的模型,并且通过这些墙获取到所有的墙类型,最后再统一修改墙类型的类型名称即可,思路相当简单。
获取模型中的所有墙体模型,实现代码如图所示,其中第42行是将Revit软件中正在编辑的模型的文档数据获取到并赋值给revitdoc变量,然后在43行是直接调用API将该项目文档中激活的视图中的所有模型实例获取到collects中,最后通过过滤器将所有的Wall类型过滤出来,也就是墙类型。
(得到所有墙实例)
获取到所有的墙类型,以上我们只是获取到墙的实例,接下来则是通过这些取到所有的墙类型,如图所示。其中wallTypes是一个数组,可理解为是用来临时存放所有墙类型的,WallType是墙类型的类名称,foreach是一个循环语句,即依次遍历所有的墙实例,然后将墙实例的墙类型获取下来。第56行是判断语句,判断数组中是否已存在此时遍历到的族实例的类型,如果已经存在,那么直接continue跳过,如果不存在那么就通过List数组的Add方法添加一项。
(提取所有墙类型)
修改族类型,RevitAPI中要求所有对模型文档的做出修改的操作均需放置在事务中,图中65行出定义了一个事务,然后在操作前启动了事务,运行完成后通过Commit()方法随即关闭了事务,第72行则是具体修改墙前缀的代码,通过遍历数组中每个墙类型,为每个墙类型名称前面增加了”1F”这个字符串。当然最好的方式是弹出一个输入框,输入具体前缀的值,该案例为简化流程则直接在代码中定义前缀名称。
(修改前缀)
如下图所示为案例的所有代码:
(增加前缀墙)
(完整实现代码)
常用操作代码片段:
总结:
合理的使用宏程序,积累一些常用的程序功能有助于提高工作效率的,宏的使用难度相对于Revit是简单的,因为用宏实现的操作也是相对简单的,当然也可以实现像插件一样的复杂完整的程序。对于初学者来说,难点主要在于对调用RevitAPI不是特别熟悉。
Revit中文网作为国内知名BIM软件培训交流平台,几十万Revit软件爱好者和你一起学习Revit,不仅仅为广大用户提供相关BIM软件下载与相关行业资讯,同时也有部分网络培训与在线培训,欢迎广大用户咨询。
网校包含各类BIM课程320余套,各类学习资源270余种,是目前国内BIM类网校中课程最有深度、涵盖性最广、资源最为齐全的网校。网校课程包含Revit、Dynamo、Lumion、Navisworks、Civil 3D等几十种BIM相关软件的教学课程,专业涵盖土建、机电、装饰、市政、后期、开发等多个领域。
需要更多BIM考试教程或BIM视频教程,可以咨询客服获得更多免费Revit教学视频。
本文版权归腿腿教学网及原创作者所有,未经授权,谢绝转载。
上一篇:Revit技巧 | revit画水管步骤:revit中管道绘制的前提工作