4.1.3【参数化】弧形栅格阵列的实现方式

本文阅读时长:16分钟更新于2024-09-06

面向用户

商家管理账号

定义



弧形栅格,如左上图所示,实现半径、间距、栅格宽度可调。

一. 功能入口

1. 商品管理—企业商品库—全屋家具定制—创建素材—参数化模型库

2.选择“普通板件”真分类。

二. 建模过程

建模思路:弧形栅格无法直接通过阵列完成,需要采用参数化的方法进行制作。

10个栅格条作为一组,使用三角函数对栅格条的位置及旋转角度进行计算,实现弧形栅格的效果。

1.修改基础变量

2.添加自定义变量

名称

引用名

值类型

当前值

备注

间隔

JG

固定值

30


栅格条宽

SG_W

固定值

30


栅格条深

SG_D

固定值

30


角度

XT

公式

(#JG+#SG_W)/#W

由于x近似于栅格宽(SG_W)+间距(JG),因此可以将JG+SG_W作为x的数值参与计算,此时tanθ=(JG+#SG_W)/W,而因为系统读取的是弧度,所以直接输入(#JG+#SG_W)/#W即可。

栅格数量

N

区间

10

默认以10个栅格条作为一组

最小值:1,最大值:10

3. 进行第一根栅格建模

3.1 点击部件库

3.2 点击半成品库,调入一块板件

3.3 宽度关联#SG_D,深度关联SG_W,高度关联#H

4. 复制第一根栅格9次,并依次修改参数

  • 旋转z:由图可知,单个栅格围绕z轴的旋转角度存在一定规律,即角度(XT)乘以第(N-1)个栅格,为使栅格的边更接近于圆弧切线,在此基础上再旋转XT/2。因此旋转Z的角度的通式为α= θ*(N-1)+θ/2
  • 位置x:如图所示,将图中的公式进行改写,得到栅格的位置x的通式为θx=W-W*cos(θ*(N-1))
  • 位置y:如图所示,将图中的公式进行改写,得到栅格的位置y的通式为θy=-W*sin(θ*(N-1))
  • 隐藏条件:栅格数量N可变,因此需要对单个栅格设置抑制条件。
  • 具体每根栅格的参数如下表:

第N根栅格

位置x

位置y

位置z

旋转x

旋转y

旋转z

抑制条件

1

0

0

0

0

0

0

#N<1

2

#W-#W*#cos(#XT)

-#W*#sin(#XT)

0

0

0

#toDegrees(#XT+#XT/2)

#N<2

3

#W-#W*#cos(#XT*2)

-#W*#sin(#XT*2)

0

0

0

#toDegrees(#XT*2+#XT/2)

#N<3

4

#W-#W*#cos(#XT*3)

-#W*#sin(#XT*3)

0

0

0

#toDegrees(#XT*3+#XT/2)

#N<4

5

#W-#W*#cos(#XT*4)

-#W*#sin(#XT*4)

0

0

0

#toDegrees(#XT*4+#XT/2)

#N<5

6

#W-#W*#cos(#XT*5)

-#W*#sin(#XT*5)

0

0

0

#toDegrees(#XT*5+#XT/2)

#N<6

7

#W-#W*#cos(#XT*6)

-#W*#sin(#XT*6)

0

0

0

#toDegrees(#XT*6+#XT/2)

#N<7

8

#W-#W*#cos(#XT*7)

-#W*#sin(#XT*7)

0

0

0

#toDegrees(#XT*7+#XT/2)

#N<8

9

#W-#W*#cos(#XT*8)

-#W*#sin(#XT*8)

0

0

0

#toDegrees(#XT*8+#XT/2)

#N<9

10

#W-#W*#cos(#XT*9)

-#W*#sin(#XT*9)

0

0

0

#toDegrees(#XT*9+#XT/2)

#N<10

5. 新建普通家具,调用栅格组

5.1 修改基础变量

宽度W的最大值计算如下:

因为该做法的栅格数量最大值为100根,即N的最大值为100,可以把N组间隔(JG)与栅格宽(SG_W)近似看为四分之一的圆弧长,即3.14*R/2=N*(SG_W+JG),R=W,对以上式子进行改写,得到最大W为:#round(200/3.14*(#SG_W+#JG))。

5.2 添加自定义变量

因为能放下多少栅格数量(N)是由当前的SG_W(栅格宽)、JG(间隔)、W(宽度)共同决定的,因此需要用公式计算出在当前情况下栅格数量N。计算思路如下,因为N组间隔(JG)与栅格宽(SG_W)可以近似看为四分之一的圆弧长,即3.1415*R/2=N*(SG_W+JG),R=W,通过改写可得N=#floor(3.1415*#W/(#JG+#SG_W)/2.0)。

5.3 在半成品库调用栅格组,并关联参数

  • 位置X、位置Y、旋转Z:栅格组位置X、位置Y、旋转Z的计算思路类似于单根栅格的计算思路,可参考单根栅格的计算思路及图片。
  • 栅格数量、隐藏条件:要实现随着W的变化栅格组的数量也会相应改变,就需要把最大值(N=100)都做出来再进行隐藏。例,第二组栅格组的栅格数量为#N>=20?10:#N%10,意为当栅格数量(N)大于或等于20的时候,第二组栅格出现10根,否则就出现栅格数量除以10的余数根(%是对该式子进行求余数的计算,例如当N=23时,N/10=2余3,N%10=3),第二组栅格组的隐藏条件即为#N<=10,意为当栅格数量(N)小于或等于10时,第二组栅格不显示。
  • 具体每个栅格组的参数如下:

第N组栅格

位置x

位置y

位置z

旋转x

旋转y

旋转z

栅格数量

抑制条件

1

0

0

0

0

0

0

#N>=10?10:#N%10


2

#W-#W*#cos(#XT*10)

-#W*#sin(#XT*10)

0

0

0

#toDegrees(#XT*10)

#N>=20?10:#N%10

#N<=10

3

#W-#W*#cos(#XT*20)

-#W*#sin(#XT*20)

0

0

0

#toDegrees(#XT*20)

#N>=30?10:#N%10

#N<=20

4

#W-#W*#cos(#XT*30)

-#W*#sin(#XT*30)

0

0

0

#toDegrees(#XT*30)

#N>=40?10:#N%10

#N<=30

5

#W-#W*#cos(#XT*40)

-#W*#sin(#XT*40)

0

0

0

#toDegrees(#XT*40)

#N>=50?10:#N%10

#N<=40

6

#W-#W*#cos(#XT*50)

-#W*#sin(#XT*50)

0

0

0

#toDegrees(#XT*50)

#N>=60?10:#N%10

#N<=50

7

#W-#W*#cos(#XT*60)

-#W*#sin(#XT*60)

0

0

0

#toDegrees(#XT*60)

#N>=70?10:#N%10

#N<=60

8

#W-#W*#cos(#XT*70)

-#W*#sin(#XT*70)

0

0

0

#toDegrees(#XT*70)

#N>=80?10:#N%10

#N<=70

9

#W-#W*#cos(#XT*80)

-#W*#sin(#XT*80)

0

0

0

#toDegrees(#XT*80)

#N>=90?10:#N%10

#N<=80

10

#W-#W*#cos(#XT*90)

-#W*#sin(#XT*90)

0

0

0

#toDegrees(#XT*90)

#N>=100?10:#N%10

#N<=90

5.4 最后在半成品库调入圆弧背板、顶板、底板,就可以做出圆弧阵列的隔断效果。

具体参数如下:

6. 测试模型

6.1 分别更改变量参数的数值,检验模型是否有问题。

6.2 检验完毕后,将这些值恢复默认值。

7. 保存入库

   点击右上角文件选择保存并入库,选择保存的子目录,并输入商品名称,点击保存。

-----------------------------------end-----------------------------------

可以随时点赞啦