Revit SDK:StairsAutomation

前言

这个例子是介绍如何通过 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 的实现:

  1. CurvedStairsRunComponent - 创建一个构件级别的弧形梯段
  2. SketchedCurvedStairsRunComponent - 创建一个草图级别的户型梯段
  3. StraightStairsRunComponent - 创建一个构件级别的直梯段
  4. 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

创建了一个楼梯,里面有两个直的构件类型的梯段,一个草图类型的平台,最终调用的是 StraightStairsRunComponentStairsRectangleLandingComponent
在这里插入图片描述

例子3

创建了一个楼梯,里面有四个直的构件类型的梯段,三个草图类型的平台,最终调用的是 StraightStairsRunComponentStairsRectangleLandingComponent
在这里插入图片描述

例子4

创建了一个楼梯,里面有一个弧形的构件类型的梯段,最终调用的是 CurvedStairsRunComponent
在这里插入图片描述

例子5

创建了一个楼梯,里面有一个弧形的构件类型的梯段,最终调用的是 CurvedStairsRunComponent
在这里插入图片描述

例子6

创建了一个楼梯,里面有一个直的草图类型的梯段,最终调用的是 SketchedStraightStairsRunComponent
在这里插入图片描述

例子7

创建了一个楼梯,里面有一个弧形的草图类型的梯段,最终调用的是 SketchedCurvedStairsRunComponent
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客BIM工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值