E3水吧自动化方案生成Demo案例分享

动画6

前言:

这是一个水吧demo的小课题项目,在矩形线框内生成一个小水吧的方案布置出来,可以简单理解为一个自动布置方案的小算法,我想通过此案例,可以向大家讲明白两个事情:即在E3里面如何搭建算法程序,以及算法的解题思路应该是什么

其实,我们从一开始要设计一个算法,这个算法要自动在线框内找到指定的位置并且放置家具,乍一看,是不是觉得没有任何的思绪去解决这个问题,我们要清楚意识到:对于算法而言,为了达到最后的结果,每一个开发者都可能有不同的解决思路和方法,正所谓条条大路通罗马,殊途同归。但每一个解决思路落实下去的具体开发难度和时间成本却大不相同,很多开发项目往往因为没有一个好的算法框架,为了解决某一个细小的问题而不断去增加项目的复杂度,屎上雕花,最终得到一个屎山,问题也未必就能被解决掉

RPA模块:

在此项目中,所使用的是数年来从项目中迭代出来的一版RPA模块工具集,每一个RPA模块,负责具体执行一个特定的动作,有些负责切分线框,有些负责定位家具。【万丈高楼平地起,工具往往直接决定解决问题的效率,使用RPA的优势在于,将复杂设计的逻辑抽象为简单的动作组合,使整个项目的复杂度上限卡死在自己的可控范围之内】

1.参数录入:

新建两个变量【width】表示X向的长度,【height】表示Y向的长度

根据width和height去构造外轮廓矩形box2

2.区域分割:

先将大分区划分为若干个小的分区,然后每个分区再进行细化设计

根据width,可以将整个轮廓划分为3个大分区:后勤区,下区,左区【可能没有】

此处用到【区域切割】RPA模块,功能:将一个矩形按照指定方向切分指定的距离划分为两个小矩形

3.后勤区细化:

将后勤区继续划分为3个小分区:库房,操作区,点餐区

使用【区域分析】RPA模块,得到当前区域X向的长度值,以此长度值进行条件判断,决定下一步切分的具体长度数值

4.操作区设备放置:

OK,接下来开始在操作区放置设备,此处要用到一个核心RPA模块【放置设施】

创建设施:双击检索“设施”,找到创建设施的构造器,录入设施的相关参数

放置设施:录入相关参数,将指定设施放置到区域的某一条边上的某一个位置上

5.下区设备放置:

下面进行座椅的布置,座椅放置我们用到【放置设施阵列】RPA模块,核心功能是可以在一条边上放置多个家具

在这里进行了四级的尺度划分:无坐席——单人吧台——双人座——三人座,读取下区线框的Y向长度,作为判断依据,以决定具体使用哪一种坐席类型

6.左区设备放置:

家具布置逻辑和下区一样,根据宽度变化会适配不同的家具类型

7.库房设备放置:

在库房的北侧和南侧,各放置一个box【表示柜子】进去,该柜子的宽度可跟随库房的大小进行动态调整

8.门定位和墙显示:

最后通过【放置门】模块确定大门的位置,并且显示最后的墙体

9.小结:

如上所示,我们通过RPA的组拼,得到了一个算法的demo,值得我们思考的是,使用这套RPA,我们不必再去拘泥于细节,我们可以始终将项目的复杂度锁死在RPA这个级别,这样后期项目的调整和优化就会变得非常容易

1 个赞

插队补发一个如何将素模渲染变成效果图的帖子:


分享下我对这类程序的理解:

第一步优先建立功能分区

在这里我们给大家提供一个矩形切割的模块,用法非常简单,选择切割方向、切割距离。就可以将一个矩形一分为二。这个切割规则是可以高度自定义的,切割规则也是被程序保存的,但起始条件发生动态变化时,生成结果也会发生动态变化。

1233

阶段演示文件:
动态分区案例01-251106.zip (78.5 KB)

第二步放置设施(家具)

这部分的核心逻辑就是摆放家具,核心问题是把【谁】放在【哪】。其中家具也好,其他设施也好,都是应该跟空间区域发生直接关系的。所以这部的RPA被设计如下:
1、【谁】贴着【哪个空间】的【哪面墙】放置?
2、放置是否【居中】or【贴边】?
3、是否有左右前后的距离微调?
我们可以借助这个包初步布置绝大部分的家具。

234

演示文件:
动态分区案例02-251107.zip (99.4 KB)

1 个赞

看完后,理清了一下自己方案的设计逻辑,然后跟帖子进行操作练习!!!真的好用!:star_struck: :star_struck: :star_struck:

:+1: :grinning_face: :+1:

上传此版本源文件用于分享,有问题可随时交流,谢谢!(若连接失效请联系我们!)

通过网盘分享的文件:水吧demo-260115.zip 链接: https://pan.baidu.com/s/1Z8WWd8W4R2wnvbNyrnUuug 提取码: 47e4 --来自百度网盘超级会员v7的分享

1 个赞