在CATIA软件中,画个矩形草图,拉伸个凸台,得到一个立方体,即使对于新手都是再熟悉不过的操作了。
所以,下面的魔方模型,相信绝大多数小伙伴都能画出来——无非就是做27个立方体,倒个角,再给各个面设置对应的颜色。
但如何实现下面的旋转效果,恐怕会一下子难倒一大片英雄好汉。
可能有点小伙伴会想到用DMU的KIN运动机构仿真去做,但不论是运动副的选择,还是指定层的9个块一起转,都不是看起来那么容易的事情(事实上小编现在也没有太好的思路用DMU实现)。
不过,既然萌生了这个想法,如果不把它做出来,它就会一直是小编的一个心病。
回想一下:小学时,老师告诉你3-5无法计算,但后来你知道了负数;初中时,老师告诉你负数不能开平方,但后来你知道了虚数……
所以,有些事情之所以你认为不可能,是因为你的认知、你的知识面还没有广到覆盖那个领域。
之前,小编觉得有些运动模拟DMU无法实现。但当小编掌握了Automation二次开发后,对于运动的实现,DMU中有没有某种运动副就不那么重要了。因为我们可以通过VBA代码控制哪些Product,按怎样的规则,随意运动。
在正式开始讲解之前,我们先通过一个动图看看最终的效果。
接下来,小编来简述一下原理:
1.由于各个小方块的位置不固定,可旋转至各个位置。因此我们不能做“Part1是面向我们的面左上角那块”这种绝对的指定。对应的解决对策是:我们每次执行动作之前,都获取一下各个方块Part的装配坐标,并通过坐标值判断其属于哪一层,进而确定需要旋转的目标Part。
2.确定了目标值之后,我们就可以利用Product下的相关属性方法,实现其绕指定轴系的旋转。
没错,以上就是完整的思路。到这里,悟性比较高且熟悉VBA的同学,应该已经可以查帮助写出代码实现上面视频中的功能了。
不过,小狼今天将带大家从零开始制作。
首先是建模。由于每个小方块都要涂不同的颜色,所以这里,我们需要在27个Part里画同样尺寸的立方体(这里我们假定立方体的中心在原点,边长为10mm)。给棱边倒个角会显得更像是真实的魔方,当然你不倒角,只是6个尖棱也未尝不可。
然后,我们把这27个Part装到一个Product里,很显然它们会重合到一起。这个时候,你需要把它们一个一个移到对应的位置。
让装配里的某个组件进行指定方向、距离、角度的移动,有两种方法:
第一种方法,使用用罗盘。我们可以双击罗盘,指定拖动罗盘时,移动或旋转的步长。然后把罗盘拖到组件上,选中需要移动的组件使罗盘变绿,再拖动罗盘就可以精确移动了↓
第二种方法,使用DMU Navigator中的平移旋转命令。
但不管用哪种方法,我们的目的是把它移成下面的样子,同时注意整个魔方的中心点(中间那个块)是没移动的,换句话说整个魔方的中心在装配原点。
并且,为了后面交流更方便,我们来给每个面取个名字,约定如下:
模型建完后,接下来就是后端的代码逻辑了。首先我们在VBA里插入一个窗体,截个图作为背景,并绘制一些按钮。并且我相信,你的界面肯定不会比我的更丑…
然后我们双击窗体或按钮进到代码编写界面。
首先,在最上面,我们定义一些公共变量和常量。
然后在窗体初始化Initialize事件里,对一些全局变量进行赋值。
由于控制上下、前后、左右每一层的顺、逆时针转动的代码大致相同(仅某些数值)有区别。在控制6个面*2个方向,共计12个按钮的Click事件里都写类似大段的代码,显然是不明智的。
为此,我们定义一个函数,来实现旋转功能。并在不同按钮的Click事件里调用该函数,为其输入不同参数,以实现控制不同面不同方向的旋转。这个函数也是整段代码的核心。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删