zoukankan      html  css  js  c++  java
  • 如何使用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文件。
    打开你的切片软件,切片并打印吧。

  • 相关阅读:
    Qt 学习 之 二进制文件读写
    QT学习 之 文本文件读写
    Qt学习 之 文件
    QT学习 之 三维饼图绘制
    Haskell 笔记(四)函数系统
    QT学习 之 事件与事件过滤器(分为五个层次)
    Qt学习 之 数据库(支持10种数据库)
    Qt5制作鼠标悬停显示Hint的ToolTip
    【码云周刊第 32 期】程序员眼中的 Vue 与 Angular !
    Qt学习 之 多线程程序设计(QT通过三种形式提供了对线程的支持)
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/9056975.html
Copyright © 2011-2022 走看看