本文演示创建面积边界及面积。
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;
ViewPlan viewPlan = doc.ActiveView as ViewPlan;
if (viewPlan == null)
{
TaskDialog.Show("错误", "不是viewPlan");
return Result.Failed;
}
using (Transaction tr = new Transaction(doc))
{
Autodesk.Revit.Creation.Document document = doc.Create;
//通过创建四条边界线来形成一个正方形的闭合区域
tr.Start("Create area bound");
var sketchPlane = viewPlan.SketchPlane;
document.NewAreaBoundaryLine(sketchPlane,
Line.CreateBound(new XYZ(20, 20, 0), new XYZ(40, 20, 0)), viewPlan);
document.NewAreaBoundaryLine(sketchPlane,
Line.CreateBound(new XYZ(40, 20, 0), new XYZ(40, 40, 0)), viewPlan);
document.NewAreaBoundaryLine(sketchPlane,
Line.CreateBound(new XYZ(40, 40, 0), new XYZ(20, 40, 0)), viewPlan);
document.NewAreaBoundaryLine(sketchPlane,
Line.CreateBound(new XYZ(20, 40, 0), new XYZ(20, 20, 0)), viewPlan);
tr.Commit();
//在新创建的面积边界中心点(30,30)处放置一个面积
tr.Start("Create area");
Area area = document.NewArea(viewPlan, new UV(30.0,30.0));
tr.Commit();
}
return Result.Succeeded;
}
}
}
执行结果:(注意:正常情况下,面积只能绘制在面积平面中。所以当前视图为面积平面时,该程序才能正常运行)
如果想为上述“面积”加上"面积标注",在创建面积之后,事务提交之前,加上代码:
document.NewAreaTag(viewPlan,area, new UV(30.0,30.0));
执行结果: