使用OpenSCAD绘制一个简单的键帽

使用OpenSCAD绘制一个简单的键帽
 

1 新建空项目

2测数据

测量得出数据.这个长方体的长宽高分别是1.6、4.6、8 注意,这三个数据并不是测量得到的数据,而且加了一点公差值(为3D打印做准备)

3画图

写代码

导入模型

 为了方便以后其他零件定位,统一在他们的后面使用对齐中心命令 center=true
得到第一个长方体之后,第二个就简单了.直接复制第一个,并且以Z轴为中心,对其进行旋转操作,如下图

 这样,我们就得到了这个十字键槽,但是,键帽上并不是这样的啊. 别急.下面,我们将见到OPENSCAD中最常用的一个布尔运算是如何做的.
首先我们画一个圆柱体

然后我们把之前做好的那个十字立方体放到这个圆柱体的下面

(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文件。
打开你的切片软件,切片并打印吧。

参考链接


发布者

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注