zoukankan      html  css  js  c++  java
  • Revit API封装一个通用函数“过名称找元素”

    感觉这个函数不错。通过这种方式寻找元素经常需要用到。
    //封装一个通用函数“过名称找元素”
    [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    public class cmdFindElementByName : IExternalCommand
    {
        //通过类型与名称找Element
        Element findElement(Document _rvtDoc, Type targetType, string targetName)
        {
            // get the elements of the given type
            
    //
            FilteredElementCollector collector = new FilteredElementCollector(_rvtDoc);
            collector.WherePasses(new ElementClassFilter(targetType));

            // parse the collection for the given name
            
    // using LINQ query here. 
            
    // 
            var targetElems = from element in collector where element.Name.Equals(targetName) select element;
            List<Element> elems = targetElems.ToList<Element>();

            if (elems.Count > 0)
            {  // we should have only one with the given name. 
                return elems[0];
            }

            // cannot find it.
            return null;
        }
        public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
        {
            UIApplication app = commandData.Application;
            Document doc = app.ActiveUIDocument.Document;
            Selection sel = app.ActiveUIDocument.Selection;

            View pViewPlan = (View)findElement(doc,typeof(ViewPlan), "Lower Ref. Level");
            ReferencePlane refFront = (ReferencePlane)findElement(doc, typeof(ReferencePlane), "Front");
            Level lowerLevel = findElement(doc,typeof(Level), "Lower Ref. Level"as Level;
            Material pMat = findElement(doc, typeof(Material), "Glass"as Material;
            if (refFront != null)
                TaskDialog.Show("info", refFront.Name.ToString());


            return Result.Succeeded;
        }
    }
    url:http://greatverve.cnblogs.com/p/FindElementByName.html
  • 相关阅读:
    AUPE学习第八章------进程控制
    软件工程中的一些图
    java_web用户的自动登录模块的实现
    opencv安装/usr/bin/ld: warning: libpcre.so.1, needed by //home/qian/anaconda3/lib/libglib-2.0.so.0, not found (try using -rpath or -rpath-link)问题
    ubuntu 安装使用多版本opencv
    基于运动学模型的模型预测控制
    粒子群滤波
    深度学习环境搭建
    安装uWebSocketIO
    最小二乘原理(3)——递归最小二乘
  • 原文地址:https://www.cnblogs.com/greatverve/p/FindElementByName.html
Copyright © 2011-2022 走看看