Revit学习之路02_Revit基础菜单定义

序言:

       前一章对Revit加载外部插件进行了简单的说明,本章详细说明Revit自定义菜单的设计与实现。

Revit菜单机制

 

 

       Revit的菜单配置结构为Tab->Panel->Button如上图所示:

菜单的最顶级为选项卡(Tab)每个选项卡下包含很多面板(Panel),无论是Tab还是Panel都只是一个容器,其最终的目的是对Panel内的Button进行分类和布局。而Button共有以下几种类型。

 1 public enum RibbonItemType
 2 
 3     {
 4 
 5         PushButton = 0,
 6 
 7         PulldownButton = 1,
 8 
 9         SplitButton = 2,
10 
11         ToggleButton = 3,
12 
13         RadioButtonGroup = 4,
14 
15         ComboBoxMember = 5,
16 
17         ComboBox = 6,
18 
19         TextBox = 7
20 
21     }
View Code
菜单序列化

       菜单是插件的入口,做Revit的二次开发菜单的变动是比较频繁的。把菜单的定义写到代码里会使代码变得臃肿以至于很难维护,而且没法做到关注点分离,没法协同开发。因此把菜单定义的数据序列化,交由产品去维护和控制是一个很好的办法。

       Revit菜单的借口类似于Xml文件的结构,而且Xml文件的可读性和可维护性比较强。因此我们把菜单的数据序列化为Xml数据。这样我们可以在Revit启动的时候去读取菜单配置,将配置的菜单加载到Revit菜单中。(代码后续添加)。

AddIn文件

       程序和Revit的交互主要通过命令实现,为了便于命令的管理。我们可以把命令单独放在一个项目之中。这样便于命令的查找,以及后续的维护。这样的话对于AddIn文件的处理就比较简单了。我们只需要把这一个项目的dll添加到AddIn文件之中。

元素的过滤

       既然是基于Revit的二次开发,那么和Revit的交互是整个二次开发的核心。Revit提供了元素的过滤功能,利用过滤我们可以实现元素的快速定位。继而可以去改变元素的属性。

过滤元素就像是漏勺捞水饺,我们首先需要找到煮水饺的锅。这在Revit中对应着他的收集器 (FileredElementCollector)。而漏勺就是过滤器,而在Revit中存在这众多的过滤器。运用这些过滤器可以快速定位到元素。

FilteredElementCollector filteredElements = new FilteredElementCollector(Doc);//煮水饺
ElementClassFilter classFilter = new ElementClassFilter(typeof(wall));//获得漏勺x1
 filteredElements=filteredElements.WherePasses(classFilter);//捞水饺
                    foreach(Wall wall in filteredElements)
                    {
                       wall.Eat();//吃水饺
                    }
View Code

Revit常见的过滤器:

  ExclusionFilter 过滤并排除一部分元素

  LogicalAndFilter 双重过滤

  ElementCategoryFilter 通过种类或者分类进行过滤

  ElementClassFilter 通过种类进行匹配的过滤器

 

结语

       自从工作以来,时间变得很零散,这意味着我没法集中时间实践我所学到的知识。零散的时间只够让我了解新知识的思想,而没法去实践去运用去把它转化成我自己的知识体系。这个系列的博客便是为了在学习的过程中,通过写博客来将知识进行转化,以期能融入我的知识体系。但是这段时间发现效果并不好,我把太多的时间浪费在了思考以及组织语言上。在前期一叶障目的情况下思考是没有任何意义的。而无论是编程技术还是Revit在我眼里都只是一种工具,一种让人们脱离重复工作,一种让人们专注于设计的工具。所以之后我会调整学习的方式,不再专注于概念,而专注于实际的运用。

转载于:https://www.cnblogs.com/Blog-Pan/p/6535011.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值