
前言:
这是一个水吧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这个级别,这样后期项目的调整和优化就会变得非常容易




























