Revit API布置喷头(放置任何元素的方法类似)

FilteredElementCollector 可以过滤到系统或者文档中包含的族符号。
比如喷头,只要知道内参就可以找到。
//放置族实例
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public class cmdSetFamily : IExternalCommand
{
    public Result Execute(ExternalCommandData cmdData, ref string msg, ElementSet elements)
    {
        UIDocument uiDoc = cmdData.Application.ActiveUIDocument;

        Transaction ts = new Transaction(uiDoc.Document, "SetFamily");
        ts.Start();

        FilteredElementCollector collector = new FilteredElementCollector(uiDoc.Document);
        //喷头,根据内参可以得到系统族符号,内参可以通过选择元素得到:http://revit.5d6d.com/thread-1261-1-1.html
        collector.OfCategory(BuiltInCategory.OST_Sprinklers);
        FamilySymbol fs = null;
        foreach (Element el in collector)
        {
            fs = el as FamilySymbol;
            break;
        }
        XYZ xyz = uiDoc.Selection.PickPoint();//选择一个点
        
//根据族符号放置族实例的方法
        FamilyInstance fi = uiDoc.Document.Create.NewFamilyInstance(xyz, fs, StructuralType.NonStructural);

        ts.Commit();

        return Result.Succeeded;
    }
}
from:http://revit.5d6d.com/thread-1355-1-1.html
posted @ 2011-11-16 09:46  大气象  阅读(2421)  评论(0编辑  收藏  举报
http://www.tianqiweiqi.com