前言
这个例子是介绍如何通过 API 创建楼梯。可以参考相关内容:Revit API: Stairs 楼梯
内容
例子中总共创建了7个楼梯,每个楼梯的创建方式会有一些差异。楼梯作为一个特殊的组合构件,它实际上是三个子类型构件组成的,梯段、平台和支撑。支撑是跟着梯段和平台的,通过API不能单独创建。
创建的底层操作
下面介绍最终调用的梯段和平台的创建。
楼梯梯段
IStairsRunComponent 的接口
IStairsRunComponent
是一个接口,用于创建楼梯梯段。
public interface IStairsRunComponent
{
// 创建楼梯梯段
StairsRun CreateStairsRun(Document document, ElementId stairsId);
// 梯段底部标高
double RunElevation{ get; }
// 梯段顶部标高
double TopElevation{ get; }
// 梯段的宽度
double Width{ get; set; }
// 梯段的路径
IList<Curve> GetStairsPath();
// 第一个踏步的线
Curve GetFirstCurve();
// 最后一个踏步的线
Curve GetLastCurve();
// 下一个梯段的起点
XYZ GetRunEndpoint();
}
IStairsRunComponent 的实现
有四个 IStairsRunComponent
的实现:
CurvedStairsRunComponent
- 创建一个构件级别的弧形梯段SketchedCurvedStairsRunComponent
- 创建一个草图级别的户型梯段StraightStairsRunComponent
- 创建一个构件级别的直梯段SketchedStraightStairsRunComponent
- 创建一个草图的直梯段
CurvedStairsRunComponent
调用静态方法 StairsRun.CreateSpiralRun
:
public Autodesk.Revit.DB.Architecture.StairsRun CreateStairsRun(Document document, ElementId stairsId)
{
m_stairsRun = StairsRun.CreateSpiralRun(document, stairsId, TransformPoint(m_center), Radius, 0, m_includedAngle, true, StairsRunJustification.Center);
Width = m_outerRadius - m_innerRadius;
document.Regenerate(); // to get updated width
return m_stairsRun;
}
SketchedCurvedStairsRunComponent
调用静态方法 StairsRun.CreateSketchedRun
:
public Autodesk.Revit.DB.Architecture.StairsRun CreateStairsRun(Document document, ElementId stairsId)
{
m_stairsRun = StairsRun.CreateSketchedRun(document, stairsId, GetRunElevation(), Transform(GetRunBoundaryCurves()), Transform(GetRunRiserCurves()), Transform(GetStairsPath()));
document.Regenerate();
return m_stairsRun;
}
StraightStairsRunComponent
调用静态方法 StairsRun.CreateStraightRun
:
public Autodesk.Revit.DB.Architecture.StairsRun CreateStairsRun(Document document, ElementId stairsId)
{
m_stairsRun = StairsRun.CreateStraightRun(document, stairsId, Transform(GetRunStairsPath()), StairsRunJustification.Center);
Width = m_width;
document.Regenerate(); // to get updated width
return m_stairsRun;
}
SketchedStraightStairsRunComponent
调用静态方法 StairsRun.CreateSketchedRun
:
public Autodesk.Revit.DB.Architecture.StairsRun CreateStairsRun(Document document, ElementId stairsId)
{
m_stairsRun = StairsRun.CreateSketchedRun(document, stairsId, GetRunElevation(), GetRunBoundaryCurves(), GenerateRunRiserCurves(), GetStairsPath());
document.Regenerate();
return m_stairsRun;
}
楼梯平台
IStairsLandingComponent 的接口
IStairsLandingComponent
是一个接口,用于创建楼梯平台。
public interface IStairsLandingComponent
{
// 获取楼梯平台的边缘
CurveLoop GetLandingBoundary();
// 获取楼梯平台的标高
double GetLandingBaseElevation();
// 创建楼梯平台
StairsLanding CreateLanding(Document document, ElementId stairsElementId);
}
IStairsLandingComponent 的实现
IStairsLandingComponent
的实现只有一个 StairsRectangleLandingComponent
。
StairsRectangleLandingComponent
调用静态方法 StairsLanding.CreateSketchedLanding
:
public StairsLanding CreateLanding(Document document, ElementId stairsElementId)
{
return StairsLanding.CreateSketchedLanding(document, stairsElementId, GetLandingBoundary(), GetLandingBaseElevation());
}
创建的例子
例子1
创建了一个楼梯,里面有一个直的构件类型的梯段,最终调用的是 StraightStairsRunComponent
。
例子2
创建了一个楼梯,里面有两个直的构件类型的梯段,一个草图类型的平台,最终调用的是 StraightStairsRunComponent
和 StairsRectangleLandingComponent
。
例子3
创建了一个楼梯,里面有四个直的构件类型的梯段,三个草图类型的平台,最终调用的是 StraightStairsRunComponent
和 StairsRectangleLandingComponent
。
例子4
创建了一个楼梯,里面有一个弧形的构件类型的梯段,最终调用的是 CurvedStairsRunComponent
。
例子5
创建了一个楼梯,里面有一个弧形的构件类型的梯段,最终调用的是 CurvedStairsRunComponent
。
例子6
创建了一个楼梯,里面有一个直的草图类型的梯段,最终调用的是 SketchedStraightStairsRunComponent
。
例子7
创建了一个楼梯,里面有一个弧形的草图类型的梯段,最终调用的是 SketchedCurvedStairsRunComponent
。