Revit API获得视图与文档中的元素

文档中的元素与视图下的元素数量是不同的。
比如即使一个墙没画文档中也包含6个Wall
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Text;

using  WinForm  =  System.Windows.Forms;

using  Autodesk.Revit.UI;
using  Autodesk.Revit.DB;
using  Autodesk.Revit.Attributes;

using  Autodesk.Revit.DB.Mechanical;
using  Autodesk.Revit.UI.Selection;
using  Autodesk.Revit.ApplicationServices;

using  Autodesk.Revit.DB.Structure;
using  Autodesk.Revit.DB.ExtensibleStorage;

using  System.Xml;

namespace  RevitCodes
{
    [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    
public   class  cmdView : IExternalCommand
    {
        
public  Result Execute(ExternalCommandData commandData,  ref   string  messages, ElementSet elements)
        {

            UIApplication app 
=  commandData.Application;
            Document doc 
=  app.ActiveUIDocument.Document;

            CountElements(doc);

            
return  Result.Succeeded;
        }
        
// 视图中包含和的元素和整个文档包含的元素数量是不同的。
         private   void  CountElements(Document doc)
        {
            StringBuilder msg 
=   new  StringBuilder();
            FilteredElementCollector viewCollector 
=   new  FilteredElementCollector(doc, doc.ActiveView.Id);
            viewCollector.OfCategory(BuiltInCategory.OST_Walls);
            msg.AppendLine(
" Wall within active View: "   +  viewCollector.ToElementIds().Count);
            FilteredElementCollector docCollector 
=    new  FilteredElementCollector(doc);
            docCollector.OfCategory(BuiltInCategory.OST_Walls);
            msg.AppendLine(
" Wall within Document: "   +  docCollector.ToElementIds().Count);
            TaskDialog.Show(
" http://revit.5d6d.com " , msg.ToString());
        }
    }

}
from: http://revit.5d6d.com/thread-1291-1-1.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值