以下转换可用于修改当前形状的范围:

  • (tx, ty, tz) — 沿示波器轴平移示波器的位置。
  • (rx, ry, rz) — 通过将rx、ryrz添加到范围的旋转向量scope.r中,围绕其原点旋转范围。也可以通过编写r(scopeCenter , rx, ry, rz)围绕范围中心旋转。
  • (sx, sy, sz) — 将范围的大小设置为sx、sysz的值。因此,与平移和旋转操作相比,参数值不会被添加而是被覆盖。此外,请注意,大小操作以绝对值(例如米或码)设置大小,并且不执行相对缩放。
  • center (axes) – 根据转换当前形状的范围,使其中心对应于形状堆栈上前一个形状范围的中心。后者确定在哪个轴方向(形状堆栈上的先前形状)执行平移。

相对运算符

对于()()操作,可以使用运算符方便地将绝对值tx,ty,tzsx,sy,sz转换为相对于范围大小的值。

s('0.5, '1, '1)
t('2, 0, '3)

 

这等于:

s(0.5*scope.sx, 1*scope.sy, 1*scope.sz)
t(2*scope.sx, 0*scope.sy, 3*scope.sz)

 

例子

设置大小

挤出批次在所有三个维度上都设置为 5 个单位的绝对大小。

Lot --> extrude(10)
        s(5, 5, 5)
GUID-91CCFB49-45A5-4A4A-AC78-0BBD4700A1CF-web
 

 

相对调整大小和中心

首先通过使用()操作与相对运算符一起缩小范围,然后居中(相对于Lot形状的范围),最后拉伸为 3D 几何体。

Lot --> s('0.8, '1, '0.8) 
        center(xz) 
        extrude(20)
GUID-BAA99DD3-605A-4C1A-82A5-F20C504C86ED-web
 

旋转和中心

每个分割形状首先围绕其范围原点旋转,然后居中。

Lot -->
   extrude(18)
   split(y) { 
      2 : r(0, 360*split.index/split.total, 0)
          center(xyz) X.
   }*

使用

r(scopeCenter, 0, 360*split.index/split.total, 0)

而不是() center ()序列给出了相同的结果。

GUID-A0A56591-DE4E-4167-859D-583E0DD102F0-web
 

翻译 – 旋转连接

这是我们开始的形状。

A --> primitiveCube()
GUID-AE74BB74-0060-41BB-95BF-400F327A79A7-web

首先是两个单位沿 x 轴的平移。

A --> primitiveCube()
      t(2, 0, 0)
GUID-4D83D96A-F1FF-45BB-995B-70C7ACCB5C1D-web

然后绕 y 轴旋转 30 度。

A --> primitiveCube() 
      t(2, 0, 0) 
      r(0, 30, 0)
GUID-B6016CD4-AA63-4405-85DB-9BBEB67B827B-web

沿 x 轴平移 2 个单位:

  • 平移是沿着示波器的 x 轴进行的,即旋转会改变全局平移方向。
  • 使用了相对运算符 – 在这里它没有区别,因为scope.sx是 1

 

A --> primitiveCube() 
      t(2, 0, 0) 
      r(0, 30, 0) 
      t('2, 0, 0)
GUID-BF09EFC2-E9D9-4EC9-AB9B-75C907DB5474-web
 

有关详细信息,请参阅 CGA 参考中的t 操作s 操作r 操作中心操作