Revit API封装一个通用函数“过名称找元素”_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > Revit API封装一个通用函数“过名称找元素”

Revit API封装一个通用函数“过名称找元素”

 2013/11/20 12:28:17  大气象  博客园  我要评论(0)
  • 摘要:感觉这个函数不错。通过这种方式寻找元素经常需要用到。//封装一个通用函数“过名称找元素”[TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]publicclasscmdFindElementByName:IExternalCommand{//通过类型与名称找ElementElementfindElement(Document_rvtDoc,TypetargetType
  • 标签: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
上一篇: C#读取excel 找不到可安装的ISAM 下一篇: 没有下一篇了!
发表评论
用户名: 匿名