本文演示Revit中创建屋顶。
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
namespace RevitAddin4
{
[TransactionAttribute(TransactionMode.Manual)]
public class RevitAddin : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Document doc = uiDoc.Document;
//获取屋顶的默认类型
ElementId id = doc.GetDefaultElementTypeId(ElementTypeGroup.RoofType);
RoofType type = doc.GetElement(id) as RoofType;
if (type == null)
{
TaskDialog.Show("错误", "不是RoofType");
return Result.Failed;
}
//创建轮廓线
CurveArray curveArray = new CurveArray();
curveArray.Append(Line.CreateBound(new XYZ(0,0,0),new XYZ(0,20,20)));
curveArray.Append(Line.CreateBound(new XYZ(0, 20, 20), new XYZ(0, 40, 0)));
//获取当前视图的标高
Level level = doc.ActiveView.GenLevel;
if (level == null)
{
TaskDialog.Show("错误", "不是PlainView");
return Result.Failed;
}
//创建屋顶
using (Transaction tr = new Transaction(doc))
{
tr.Start("Create ExtrusionRoof");
ReferencePlane plane = doc.Create.NewReferencePlane(new XYZ(0, 0, 0), new XYZ(0, 0, 20), new XYZ(0, 20, 0), doc.ActiveView);
doc.Create.NewExtrusionRoof(curveArray, plane, level, type, 0, 40);
tr.Commit();
}
return Result.Succeeded;
}
}
执行结果: