Building Coder - 创建与墙体平行的剖视图
原文链接:Create Section View Parallel to Wall
先插两句题外话,在建的全世界最高最绿色的建筑“上海中心”(Shanghai Tower)中大量使用了 Autodesk BIM 解决方案。
译者注:我旁听了上海中心的负责人在去年的北京AU大师会上做的关于 Autodesk BIM 在上海中心设计和建造中应用的主题演讲。会后我向他问了些 Revit 具体的使用情况。上海中心前期的设计多数还是用AutoCAD和犀牛等传统工具完成的。Revit 更多得是在整体方案设计阶段体现出它的数据一致性优势。估计他们那时候使用的是 Revit 2010。相信如果使用 Revit 2013 的话,更多的工作将会被直接拿到 Revit 中完成了。今年的AU大师会在上海,希望能听到更多关于 Revit 实际应用的介绍。另外我也会和东南大学的一位教授共同做“基于BIM技术的工业化住宅产业联盟数字设计与管理平台开发”的报告。
回到今天的主题:如何创建一个与墙体平行的剖视图?实际上基本要点可以在 SDK 例程 CreateViewSection 中找到。而且我的几篇博客也多次讨论过相关问题:
1. section view creation
2. elevation and section views
3. crop a 3D view to a room
当然上面这些例子都是使用 Autodesk.Revit.Creation.Document.NewViewSection() 方法。Revit 2013 已经使用 ViewSection.CreateSection() 取代了 Document.NewViewSection()。目前我只有一篇博文structural plan view 中使用了这个最新的静态方法。为了弥补这个不足,我新创建了一个外部命令 CreateWallSectionView 来展示 ViewSection.CreateSection() 的详细用法。
1. 使用墙体的 Location Line 作为几何信息源(决定了墙体的方向、长度)
2. 通过墙体的 BoundingBox 获取墙高
3. 通过墙体类型的 Width 属性获取墙体厚度
4. 剖视图的线性转换(Transform)使用墙体方向
5. 全局坐标系的Z轴方向作为剖视图的上方向
译者注:剖视图中坐标系和 Revit 模型坐标系是不一样的。以与墙体平行的剖视图为例:X方向是墙体的水平方向;Y方向是墙体的垂直方向(即Revit模型坐标系中的Z轴方向);Z方向是与墙面垂直的方向。
问题
上面的代码创建的虚线部分与墙体位置线重合了。我希望剖视图区域边界对称地位于墙体两侧。
Jeremy
剖视图区域边界的虚线部分的位置是由这两行代码确定的:
问题
我如何创建与墙体垂直(而不是平行)且位于墙体中心点的剖视图?
Jeremy
只要对上面的代码做些调整就可以了。不过有一个值得注意的地方时:我们可以利用 ComputeDerivatives() 方法来获取与墙体位置线的正切线和墙体的中心点,而不用通过对墙体位置线的两个端点进行计算来获取。这种方案还适用于非直线墙体。
以下是 GetSectionViewPerpendiculatToWall() 方法的代码。它返回一个与指定墙体的位置线垂直的,且位于指定墙体中心点的剖视图区域。