roofGable 操作

语法

  • roofGable(angle)
  • roofGable(angle, overhangX)
  • roofGable(angle, overhangX, overhangY)
  • roofGable(angle, overhangX, overhangY, even)
  • roofGable(angle, overhangX, overhangY, even, index)
  • roofGable(valueType, value)
  • roofGable(valueType, value, overhangX)
  • roofGable(valueType, value, overhangX, overhangY)
  • roofGable(valueType, value, overhangX, overhangY, even)

参数

  1. angle - float
    屋顶平面的角度(生成方式:byAngle)。
  2. overhangX - float
    垂直于屋脊的屋檐延伸距离,垂直于形状边(在屋顶上)进行测量。
  3. overhangY - float
    沿屋脊方向的屋檐的延伸距离,垂直于形状边(在屋顶上)进行测量。
  4. even - bool
    是否将屋顶山墙设置为水平。 如果为 true,可以基于非平面的面。
  5. index - float
    用于控制屋脊方向的边索引。
  6. valueType - selector
    { byAngle | byHeight } - 屋顶生成的类型。
  7. value - float
    valueType 指定的屋顶平面的角度或高度。

描述

roofGable 操作用于构建垂直于当前形状几何的每个面的双坡屋顶。 系统会自动计算屋脊的方向(索引情况除外)。 在所有非屋脊(屋檐)边处,将相对于面平面以给定角度或高度生成一个平面。 平面相互切割以形成屋顶面:

  • 如果设置了 overhangX,则屋顶面将在屋檐边方向上重叠此距离。 延伸距离垂直于边(在屋顶平面上)进行测量。
  • 如果设置了 overhangY,屋顶面将在屋脊方向上重叠此距离。 延伸距离垂直于形状边(在屋顶平面上)进行测量。
  • 如果 even 设置为 true,系统会强制将山墙边设置为水平。 在这种情况下,可以基于非平面屋顶面。
  • 如果设置了 index,系统会强制将屋脊方向设置为边索引方向。
    警告:

    这仅适用于具有单个面的凸形。 将忽略 even 参数。

注:

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

范围

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

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

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

组件标签

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

"roof.bottom"

"roof.side"

"roof.top"

蓝色:原始面。

黄色:山墙面。

绿色:屋顶面。

自动标签 roofGable

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

相关内容

示例

简单双坡屋顶

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

将在拉伸的 L 型地块上生成屋顶坡度为 30 度的双坡屋顶。 overhangX 距离设置为 2,overhangY 距离设置为 1。 请记住屋檐 (X) 处和屋脊 (Y) 方向上的不同重叠距离。 还要记住枢轴和范围设置。

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

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

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

注:

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

水平的双坡屋顶

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

将在拉伸的梯形地块上生成屋顶坡度为 30 度的双坡屋顶。 屋檐(X 和 Y)均设置为 1。 请注意屋脊不水平。

Lot  --> 
   extrude(10) Mass
   
Mass --> 
   comp(f) { top : Top 
           | all : X }
		   
Top  --> 
   roofGable(30, 1, 1, false) Roof
梯形地块上坡度为 30 度的双坡屋顶

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

Top  --> 
   roofGable(30, 1, 1, true) Roof
非平面双坡屋顶

注:

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