感觉这个函数不错。通过这种方式寻找元素经常需要用到。

  1. //封装一个通用函数“过名称找元素”
  2. [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
  3. public class cmdFindElementByName : IExternalCommand
  4. {
  5.     //通过类型与名称找Element
  6.     Element findElement(Document _rvtDoc, Type targetType, string targetName)
  7.     {
  8.         // get the elements of the given type
  9.         //
  10.         FilteredElementCollector collector = new FilteredElementCollector(_rvtDoc);
  11.         collector.WherePasses(new ElementClassFilter(targetType));
  12.  
  13.         // parse the collection for the given name
  14.         // using LINQ query here. 
  15.         // 
  16.         var targetElems = from element in collector where element.Name.Equals(targetName) select element;
  17.         List<Element> elems = targetElems.ToList<Element>();
  18.  
  19.         if (elems.Count > )
  20.         {  // we should have only one with the given name. 
  21.             return elems[];
  22.         }
  23.  
  24.         // cannot find it.
  25.         return null;
  26.     }
  27.     public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
  28.     {
  29.         UIApplication app = commandData.Application;
  30.         Document doc = app.ActiveUIDocument.Document;
  31.         Selection sel = app.ActiveUIDocument.Selection;
  32.  
  33.         View pViewPlan = (View)findElement(doc,typeof(ViewPlan), "Lower Ref. Level");
  34.         ReferencePlane refFront = (ReferencePlane)findElement(doc, typeof(ReferencePlane), "Front");
  35.         Level lowerLevel = findElement(doc,typeof(Level), "Lower Ref. Level") as Level;
  36.         Material pMat = findElement(doc, typeof(Material), "Glass") as Material;
  37.         if (refFront != null)
  38.             TaskDialog.Show("info", refFront.Name.ToString());
  39.  
  40.         return Result.Succeeded;
  41.     }
  42. }

url:http://greatverve.cnblogs.com/p/FindElementByName.html

Revit API封装一个通用函数“过名称找元素”的更多相关文章

  1. Revit API 判断一个构件在某个视图中的可见性

    查看 Revit API.发现有Element::IsHidden这个方法.通过UI创建一个element,注意要使得这个element在某些视图可见,但是在另一些视图不可见.运行下面的方法,你会发现 ...

  2. Revit API创建一个拷贝房间内对象布局命令

    本课程演示创建一个拷贝房间内对象布局命令,完整演示步骤和代码.这个命令把选中房间内的对象复制到其它选中的一个或多个房间中,而且保持与源房间一致的相对位置.通过本讲座使听众知道创建一个二次开发程序很简单 ...

  3. Revit API取得变量的内参名称

    与取得元素变量的内参名称类别有个BuiltInParameter //取得内参名称 [Transaction(TransactionMode.Manual)] [Regeneration(Regene ...

  4. 【JavaScript框架封装】自己动手封装一个涵盖JQuery基本功能的框架及核心源码分享(单文件版本)

    整个封装过程及阅读JQuery源码的过程基本上持续了一个月吧,最终实现了一个大概30%的JQuery功能的框架版本,但是里面涉及的知识点也是非常多的,总共的代码加上相关的注释大概在3000行左右吧,但 ...

  5. 【Revit API】梁构件支座检查算法

    一.前言         应该是第二次写关于Revit API的博文了.虽然在BIM企业中工作,从事桌面BIM软件开发,但是我是不怎么喜欢写Revit API相关的代码.平时更多的是在写界面展示,架构 ...

  6. revit API 生成墙图元

    由于Revit的版本问题,在网上找的生成墙图元的代码,在我机器上的Revit 2016中编译不能通过,通过多次调试,终于找到在revit 2016中使用API生成墙图元的代码,现在贴出来. 下面的代码 ...

  7. python+selenium之自定义封装一个简单的Log类

    python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...

  8. C 封装一个通用链表 和 一个简单字符串开发库

    引言 这里需要分享的是一个 简单字符串库和 链表的基库,代码也许用到特定技巧.有时候回想一下, 如果我读书的时候有人告诉我这些关于C开发的积淀, 那么会走的多直啊.刚参加工作的时候做桌面开发, 服务是 ...

  9. 接口API封装中常见的HTTP状态码

    在进行后端接口API封装的过程中,需要考虑各种错误信息的输出.一般情况下,根据相应问题输出适合的HTTP状态码,可以方便前端快速定位错误,减少沟通成本. HTTP状态码有很多,每个都有对应的含义,下面 ...

随机推荐

  1. 02 workerman之GatewayWorker简单的demo 实现两端发送消息

    前端代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <t ...

  2. 转:VMWare服务器虚拟化--转自CSDN

    http://blog.csdn.net/kkfloat/article/category/1249845/3

  3. springMVC非注解常用的"处理器映射器"、"适配器"、"处理器"

    非注解处理器映射器1. org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping url 到bean name的映射2. or ...

  4. Redis常见业务场景应用

    一定时间范围内不可重复发短信问题 Redis实现消息队列 Redis实现Session共享 ...

  5. Linux umount的device is busy问题

    现象: [root@dbserver ~]# df -h文件系统 容量 已用 可用 已用%% 挂载点/dev/vda1 9.9G 3.9G 5.6G 41% /tmpfs 3.9G 100K 3.9G ...

  6. JavaScript如何获得input元素value值

    转载地址:http://aquarius-zf.iteye.com/blog/605144 在页面中我们最常见的页面元素就是input了,但是我们如何用JavaScript得到网页input中输入的v ...

  7. Laravel 的计划任务

    避免并发执行 $schedule->command('emails:send')->withoutOverlapping(); 这里需要注意,对于 call function 定义的计划任 ...

  8. MySQL问题解决:-bash:mysql:command not found

      问题:        [root@linux115 /]# mysql -uroot -p          -bash: mysql: command not found    www.2cto ...

  9. 7z

    7zip是一款开源的解压缩软件,不仅自己独有的7z格式,而且支持zip,rar,tar,gzip等众多其他格式,同时7z格式的压缩比例很高,目前很多硬盘版的游戏都采用zip进行打包.下面介绍一下Lin ...

  10. .NetCore SkyWalking APM实现服务器监控环境安装及基础使用

    下载Java 8 SDK wget  --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fw ...