roofHip 操作

语法

  • roofHip(angle)
  • roofHip(angle, overhang)
  • roofHip(angle, overhang, even)
  • roofHip(valueType, value)
  • roofHip(valueType, value, overhang)
  • roofHip(valueType, value, overhang, even)

参数

  1. angle - float
    屋顶平面生成的角度 (byAngle)。
  2. overhang - float
    垂直于屋脊的屋檐延伸距离,垂直于形状边(在屋顶上)进行测量。
  3. even - bool
    是否将屋顶斜脊设置为水平。 如果为 true,将基于非平面的面。
  4. valueType - selector
    { byAngle | byHeight } - 屋顶生成的类型。
  5. value - float
    valueType 指定的屋顶平面的角度或高度。

描述

roofHip 操作用于构建垂直于当前形状几何的每个面的四坡屋顶。 在每条边处,将相对于面平面以给定角度或高度生成一个平面。 所有平面相互切割以形成屋顶面。

如果设置了 overhang,则屋顶面将与原始形状重叠该距离。 延伸距离垂直于形状边(在屋顶平面上)进行测量。

如果 even 设置为 true,系统会强制将斜脊边设置为水平。 在这种情况下,将基于非平面屋顶面。

注:

已针对修剪平面优化屋顶网格的连通性,以剪切插入屋顶平面的砖块(请参阅以下示例)。

范围

通过以下方式设置范围方向:

  • 尽量保留 x 轴方向(旧 x 轴会投影到第一个面的平面)。
  • y 轴方向与第一个面的面法线一致。
  • z 轴垂直于上述两个轴。

将调整范围大小以与拉伸几何完全匹配。

组件标签

该操作自动将语义组件标签应用于生成的面组件:

"roof.bottom"

"roof.top"

蓝色:原始面。

绿色:屋顶面。

自动标签 roofHip

有关使用组件标签的详细信息,请参阅:

相关内容

示例

简单的四坡屋顶

将在拉伸的 L 型地块上生成基本的四坡屋顶。

将在拉伸的 L 型地块上生成屋顶坡度为 30 度的四坡屋顶。 延伸距离设置为 2。 请记住枢轴和范围设置。

Lot  --> 
   extrude(10) Mass
   
Mass --> 
   comp(f) { top : Top 
           | all : X }
		   
Top  --> 
   roofHip(30, 2) Roof
L 型地块上坡度为 30 度的四坡屋顶

进行组件分割后,每个屋顶面都包含修剪平面,用于在插入时剪切砖块。 在这里,根据默认设置,屋脊处没有水平修剪平面。 要进行启用,需要在进行组件分割前使用 set(trim.horizontal, true)详细信息)。

Roof --> 
   set(trim.horizontal, true)
   comp(f) { all : X }
进行组件分割后的四坡屋顶

注:

每个 Top 形状边恰好有一个屋顶面。 很遗憾,在图像中,看起来重叠位于单独的面中。 但是,很简单,这是因为面的边位于通气孔后面。

均匀四坡屋顶

此示例演示了在梯形地块上构建的标准四坡屋顶和水平四坡屋顶的差异。

将在拉伸的梯形地块上生成屋顶坡度为 45 度的四坡屋顶。 延伸设置为 1。 请注意屋脊不水平。

Lot  --> 
   extrude(10) Mass
   
Mass --> 
   comp(f) { top : Top 
           | all : X }
		   
Top  --> 
   roofHip(45, 1, false) Roof
梯形地块中的四坡屋顶

将上述规则用于 Top 形状时,屋脊折点设置为平均高度,从而使屋脊水平。 屋顶现在为非平面。

Top  --> 
   roofHip(45, 1, true) Roof
非平面四坡屋顶

注:

对于许多形状,屋脊会隐式变为水平,因此 even 选项不会更改任何内容。