RevitAPI之创建一个面积【比目鱼原创】

来源:互联网 发布:ehshig软件 编辑:程序博客网 时间:2024/05/22 11:45

=========【更多高级应用请关注公众号】========


===================================

创建Area的方法是Document. Create. NewArea,RevitAPI提供三个重载函数创建面积。
Area NewArea(ViewPlan areaView, UV point):在给定的一个面积平面视图 (AreaPlan)和一个放罝点(UV),在该放置点创建一个面积。如果该视图不是面积视图,会有异常 InvalidOperationException 抛出。
•如果在该放置点有闭合回路,那么创建的面积会自动绑定该回路。
•如果在该放置点没有房间边界可以绑定,会有警告框弹出:面积不在完全闭合的区
域中。
•如果在该放置点已有一个房间,也会有瞥告框弹出:多个房间位于同一个闭合区
域中。

代码:创建面积

using (Transaction transaction = new Transaction(RevitDoc)) {    transaction.Start("Create Area");    //如果在点(30.0, 30.0)这个位置找不到面积边界,将会有警告对话框弹出。    Area area = RevitDoc.Create.NewArea(areaView, new UV(30.0, 30.0));    transaction.Commit(); } 

NewAreas(List<AreaCreationData〉dataList):每一组数据包含一个平面视图(ViewPlan)和一个放置点(UV),来创建一系列的面积,效果等同于使用同样的输人而多次调用NewArea。


其他一些和创建面积相关函数:ModelCurve NewAreaBoundaryLine(SketchPlane sketchPlane,Curve geometryCurve,ViewPlan areaView)。给定一个草图视图,一条曲线和一个面积视图,创建一条面积边界曲线(ModelCurve)。调用该方法形成一个闭合区域之后,取该区域的一个点,再调用New Area就可以在该点处创建面积了。
代码片段4-25创建了一个四方形闭合区域,然后在该区域内的一个点处创建一个面积。
 
注意:一般而言,该区域必须是闭合或者接近闭合(误差不超过1英寸)。

代码:创建四方形闭合区域并在其上创建面积

void CreatArea(Autodesk.Revit.DB.Document RevitDoc)        {            using (Transaction transaction = new Transaction(RevitDoc))            {                var create = RevitDoc.Create;                //通过创建四条面积边界线来形成一个正方形的闭合区域                 transaction.Start("Create Area Boundary");                var sketchPlane = areaView.SketchPlane;                create.NewAreaBoundaryLine(sketchPlane,                   Line.CreateBound(new XYZ(20, 20, 0), new XYZ(40, 20, 0)), areaView);                create.NewAreaBoundaryLine(sketchPlane,                   Line.CreateBound(new XYZ(40, 20, 0), new XYZ(40, 40, 0)), areaView);                create.NewAreaBoundaryLine(sketchPlane,                   Line.CreateBound(new XYZ(40, 40, 0), new XYZ(20, 40, 0)), areaView);                create.NewAreaBoundaryLine(sketchPlane,                   Line.CreateBound(new XYZ(20, 40, 0), new XYZ(20, 20, 0)), areaView);                transaction.Commit();                //在新创建的面积边界的中心点(30.0, 30.0)位置放置一个面积                 transaction.Start("Create Area");                Area area = create.NewArea(areaView, new UV(30.0, 30.0));                transaction.Commit();            }        }


阅读全文
0 0