CATIA里也能弹琴?工科男也可以很文艺

浏览:1019 评论:4
圣诞节来了!小编这几天一直在琢磨如何花式给大家送祝福。最后决定,就在CATIA中为大家弹奏一首《Jingle Bells》圣诞歌吧!
说干就干!
琴键建模
要想弹琴,我们首先要画一个琴。小编很懒,于是只拉伸了几个凸台画了琴键↓
DMU仿真
我们还需要这个琴键可以动,可以按下去。所以小编为每个琴键添加了一个独立驱动的DMU运动副↓
键盘控制
通过VBA中的窗体接受键盘按下和抬起的事件,并用代码控制DMU驱动命令的值,就可以实现用键盘控制琴键啦!
发出声音
解决了按键的问题,接下来就是如何发出对应音符的声音啦!
我们在VBA里引用一下Windows的API
就可以使用Beep函数控制电脑的蜂鸣器发声啦!
Beep(a,b)
其中:
参数a表示蜂鸣器发音的频率,不同频率对应的音高不同;
参数b表示蜂鸣器发声的时间,单位是毫秒。
之后,我们把常用音符的频率定义为常量
最后,再把不同按键的键盘事件中,把对应的音符频率赋给变量,并调用Beep进行发声,我们就可以进行演奏啦!
演示视频请点击以下链接观看!
https://v.qq.com/x/page/e0818lqbrcc.html
美中不足
直接通过键盘控制DMU运动基本无延迟,但加入了Beep之后,在电脑“哔——”的过程中是无响应的状态,这就导致了音画不同步的现象,键盘的按下动作和声音比会有滞后。有一种说法是可以把Beep放到新线程中执行,但昨天晚上搞到了半夜2点多,实在没有精力了
Anyway,祝各位小伙伴圣诞&新年快乐,2018年没有实现的愿望在2019年全部实现!
想要源文件和代码的朋友,请关注微信公众号“CATIA那点事儿”,在历史推文中自行下载!

技术邻APP
工程师必备
工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP

4
4