如何创建位置线与外部区域边界重合的墙?

时间:2013-05-07 04:28:11

标签: c# api revit revit-api

我正在区域边界线上创建一堵墙,但找不到如何使用位置线“完成面部:外部”放置它的方法。

我从区域边界获取几何数据:

LocationCurve elLocation = (LocationCurve)area_boundary.Location;
XYZ pt1 = elLocation.Curve.get_EndPoint(0);
XYZ pt2 = elLocation.Curve.get_EndPoint(1);

然后根据它创建一条线来构建墙:

Line line = doc.Application.Create.NewLineBound(pt1, pt2);
Wall wall = Wall.Create(doc, line, level.Id, false);

此代码为我提供了一个墙,其中位置线和区域边界位于其中心。 有没有办法用位置线与外部区域边界重合来创建墙?

以下是Revit的screen-shoot

提前谢谢!

2 个答案:

答案 0 :(得分:0)

墙参考键有一个BuiltinParameter。

Autodesk.Revit.DB.WALL_KEY_REF_PARAM,可用于设置壁属性中墙壁上显示的参考值。

然而,我的理解是,在创建墙壁时,以编程方式,墙的线始终是墙中心线。 (如果他们知道更好的话,欢迎有人纠正这一点。)

答案 1 :(得分:0)

我这样解决了:

  1. 从外墙上看:

    IList<Reference> sideFaces = HostObjectUtils.GetSideFaces(wall, ShellLayerType.Exterior);
    Face face = uiDoc.Document.GetElement(sideFaces[0]).GetGeometryObjectFromReference(sideFaces[0]) as Face;
    
  2. 获取该脸部的法线向量并将其还原:

    PlanarFace pf = face as PlanarFace;
    XYZ normal_reverted = -1.0 * pf.Normal;
    
  3. 移动墙:

    wall.Location.Move(normal_reverted * (wall.WallType.Width / 2.0));