记录.NET学习的点滴,欢迎收藏我的博客

作者:路过秋天 http://cyq1162.cnblogs.com | www.mmic.net.cn欢迎大家交流,这里是我记录的空间方便以后工作查找
公告信息
记录.NET学习的点滴,欢迎收藏我的博客
文章分类
文章档案
文章
Revit二次开发之“选择某一楼层的墙” 原则
2011/8/15 0:13:52
其实就是过滤器的用法。这里想要找到同一楼层中的风管,不可行。
要用:duct.ReferenceLevel
//选择某一楼层上的墙
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
//[Journaling(JournalingMode.NoCommandData)]
public class SelectFloorObj : IExternalCommand
{
    
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
    {
        UIDocument uiDoc 
= commandData.Application.ActiveUIDocument;
        Selection selection 
= uiDoc.Selection;

        
//把标高1上的墙加入选择集
        FilteredElementCollector collector = new FilteredElementCollector(uiDoc.Document);
        collector.OfClass(
typeof(Wall)).OfCategory(BuiltInCategory.OST_Walls);
        IList
<Element> lists = collector.ToElements();

        
foreach (Element el in lists)
        {
            
if (el.Level.Name == "标高 1")
                selection.Elements.Add(el);
//添加到选择集
        }

        
//风管的Level属性为空,不能这样做。
        
//FilteredElementCollector collector = new FilteredElementCollector(uiDoc.Document);
        
//collector.OfClass(typeof(Duct)).OfCategory(BuiltInCategory.OST_DuctCurves);
        
//IList<Element> lists = collector.ToElements();

        
//foreach (Element el in lists)
        
//{
        
//    Duct duct = el as Duct;
        
//    MessageBox.Show(duct.LevelOffset.ToString());
        
//    if (duct.Level != null)
        
//    {
        
//        if (duct.Level.Name == "标高 1")
        
//        {
        
//            selection.Elements.Add(duct);
        
//        }
        
//    }
        
//}ic买卖

        
return Result.Succeeded;
    }
}
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"
 MyQBlog   浏览(3095)   评论(0)   关键字
  
Copyright © 2010-2020 power by CYQ.Blog - 秋色园 v2.0 All Rights Reserved