如何使用openscad绘制一个简单的键帽.
Posted kekeoutlook
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用openscad绘制一个简单的键帽.相关的知识,希望对你有一定的参考价值。
1 新建空项目
2测数据
测量得出数据.这个长方体的长宽高分别是1.6、4.6、8 注意,这三个数据并不是测量得到的数据,而且加了一点公差值(为3D打印做准备)
3画图
写代码
导入模型
为了方便以后其他零件定位,统一在他们的后面使用对齐中心命令 center=true
得到第一个长方体之后,第二个就简单了.直接复制第一个,并且以Z轴为中心,对其进行旋转操作,如下图
这样,我们就得到了这个十字键槽,但是,键帽上并不是这样的啊. 别急.下面,我们将见到OPENSCAD中最常用的一个布尔运算是如何做的.
首先我们画一个圆柱体
然后我们把之前做好的那个十字立方体放到这个圆柱体的下面
cylinder(7.9,r=4,center=true,$fn=36);//画圆 //下面 cube([1.6,4.6,8],center=true);//画长方体 rotate([0,0,90])//旋转得到长方体 cube([1.6,4.6,8],center=true);
这个时候,使用三个布尔运算函数中的 差集 命令 difference()
把它们都包起来,
是的,差集命令的含义,是用第一个立方体,减去之后的所有立方体.
difference(){ cylinder(7.9,r=4,center=true,$fn=36);//画圆 cube([1.6,4.6,8],center=true);//画长方体 rotate([0,0,90])//旋转得到长方体 cube([1.6,4.6,8],center=true); }
请注意顺序差别,如果不一样就会相反操作,如下图,十字减去圆柱,
这时,我们就有了键帽中最关键的零件了.
接下来,我们就要开始画键帽了.
在openscad中,有一个叫hull()的命令. 我把他理解为蒙皮.就是将两个物体,最表面的部分,连接起来的一个命令. 我们就能利用这个命令,生成我们需要的键帽主体.
首先我们要先用一个长宽18毫米,高0.1毫米的长方体来做键帽的底
然后再做一个长12.5、宽15、高1的长方体作为顶。并且把它往Z轴方向上移10毫米。
也就是键帽的高度。
利用hull命令给他们蒙皮。
hull(){ cube([18,18,0.1],center=true); translate([0,0,10])cube([12.5,15,1],center=true); }
但是这是一个实心的东西啊,要怎么才能实现其他建模软件中的 抽壳 命令呢?
其实很简单,我们键帽的外壳是2mm,那么我们就再做一个尺寸缩小2mm的梯形立方体,再做一下减法不是就成了?
difference(){ hull(){ cube([18,18,0.1],center=true); translate([0,0,10])cube([12.5,15,1],center=true); } hull(){ cube([16,16,0.2],center=true); translate([0,0,6.5])cube([10.5,13,1],center=true); } }
接下来,就是把两个东西组合在一起了。
这一步,需要慢慢的调整具体的位置。 好在,我们一开始就在画所有立方体的时候都在中心位置。我们只需要单纯的移动一个轴就能调整了。
最后我们得到了这样的结果。
// 模型1 十字星柱体 module caozhu(){ difference(){ cylinder(7.9,r=4,center=true,$fn=36);//画圆 cube([1.6,4.6,8],center=true);//画长方体 rotate([0,0,90])//旋转得到长方体 cube([1.6,4.6,8],center=true); } } //模型二 外壳 module zhuti(){ difference(){ hull(){ cube([18,18,0.1],center=true); translate([0,0,10])cube([12.5,15,1],center=true); } hull(){ cube([16,16,0.2],center=true); translate([0,0,6.5])cube([10.5,13,1],center=true); } } } // 模型三 1+2 组合 module chengshuti(){ zhuti(); translate([0,0,3.5])caozhu(); } 、 //程序执行 chengshuti();
这里大家会看到,为了方便对每个部件进行操作,我使用了 模块 的方式,把它们分别的包装起来,然后就能方便的进行各种操作了。
然后,键帽不可能是这么四平八稳的,上面是有弧度,而下面也是有斜面的。要怎么样做出这样的效果呢?
还是很简单,我们一样来做减法。
首先上面画一个非常大的圆柱体,并且旋转它,移动它,让他刚刚接触到键帽主体的顶部表面。
//Z方向移动28.4 绕X轴旋转90 translate([0,0,28.4])rotate([90,0,0])cylinder(20,r=19,center=true,$fn=100);
然后再画一个比底部大一点的方块,旋转它。
rotate([-8,0,0])cube([20,20,4],center=true);
这样,我们就得到了这样的东西。
是不是感觉很难看?
马上就好。让我们开始做减法吧。用键帽减去上面和下面多余的东西
// 模型1 十字星柱体 module caozhu(){ difference(){ cylinder(7.9,r=4,center=true,$fn=36);//画圆 高度7.9 半径4 cube([1.6,4.6,8],center=true);//画长方体 rotate([0,0,90])//旋转得到长方体 cube([1.6,4.6,8],center=true); } } //模型二 外壳 module zhuti(){ difference(){ hull(){ cube([18,18,0.1],center=true); translate([0,0,10])cube([12.5,15,1],center=true); } hull(){ cube([16,16,0.2],center=true); translate([0,0,6.5])cube([10.5,13,1],center=true); } } } // 模型三 1+2 组合 module chengshuti(){ zhuti(); translate([0,0,3.5])caozhu(); } //模型四 module wancheng(){ difference(){ chengshuti(); //Z方向移动28.4 绕X轴旋转90 translate([0,0,28.4])rotate([90,0,0])cylinder(20,r=19,center=true,$fn=100); // rotate([-8,0,0])cube([20,20,4],center=true); } } //程序执行 wancheng();
好了,这样,一个机械键盘的键帽就绘制完成了。
接下来要做的事情,就是直接在openscad里面,按一下F6开始实体运算。
在运算结束后,保存该模型为STL文件。
打开你的切片软件,切片并打印吧。
以上是关于如何使用openscad绘制一个简单的键帽.的主要内容,如果未能解决你的问题,请参考以下文章