基于OpenSCAD(http://www.openscad.org/)的一个盒子造型,能够用于了解OpenSCAD的3D造型语言。php
这个盒子的尺寸是为WRTnode(http://wrtnode.com/)设计的,能够输出STL后经过3D打印机打印出来直接使用(注意:不一样3D打印机的输出效果和间歇、材料收缩的公差不一样,请自行根据状况调整,不然组装不上喔!)。node
WRTnode(http://wiki.wrtnode.com/index.php?title=Main_Page/zh-cn)是一个开源的智能路由器开发板,能够运行OpenWRT开源智能路由器操做系统,功能至关的强大。该系统是基于Linux内核的,不少Linux程序均可以运行,还支持Python和LUA脚本,也能够将该固件刷到不少市售的家用路由器上,从而加强其功能。目前在售的极路由、小米路由等智能路由都是基于OpenWRT定制而成。shell
原始的OpenSCAD代码以下:spa
//WRTnode智能路由器,盒子,防雨淋型(垂直安装) //Author:openthings@163.com, //copyright 2015-2025. //打印时注意比例变化,而且旋转向上。 //避免上部打印时无支撑塌陷。 //盖子单独打印,或放为两个模型。 /*Changelog: V1.1,2015-02-27: 一、盒盖的USB接口向Y偏移0.2,更好适应WRTnode的接口。 二、盒盖总体尺寸长宽减小0.2,以方便组装。 三、盒盖的偏移量和进风口相应调整。 四、盒盖的挡格向内移0.1,使盖子能彻底嵌入盒体。 */ //常量定义 athick=0.5; //盖子厚度 bthick=0.10; //盒壁厚度 bwidth=5.0; //内径净宽 bhight=1.8; //内径净高 blong_inter=5.5;//内径净长 //外径长度=底厚+内径+挡格+盖子厚度 blong=bthick+blong_inter+bthick+athick; //文字或图标标识 //translate([-2,0,0]) //scale([1, 1, 0.1]) // surface(file = "smiley.png", center = true); //====================================== //盒子体,采用挖空切割方式造型。 difference() { //外盒 translate([0,0,0]) { color([0.8,0.8,0.8]) cube([blong,bwidth+bthick*2, bhight+bthick*2]); } //内盒,挖空。 translate([bthick,bthick,bthick]) { color([0.2,0.8,0.8]) cube([blong+1,bwidth,bhight]); } //底部,凹陷标识。 translate([blong-2,2.2,bhight+bthick+0.08]) { color([0.2,0.2,0.2]) cube([1.5,bwidth*0.5,0.1]); } } //底部增强,在内部造成边角挡格。 translate([bthick,bthick,bthick]) { color([0.2,0.5,0.2]) cube([bthick,bwidth,bthick]); } translate([bthick,bthick,bhight]) { color([0.2,0.5,0.2]) cube([bthick,bwidth,bthick]); } translate([bthick,bthick,bthick]) { color([0.2,0.5,0.2]) cube([bthick,bthick,bhight]); } translate([bthick,bwidth,bthick]) { color([0.2,0.5,0.2]) cube([bthick,bthick,bhight]); } //盖子挡格。 translate([blong-athick-0.1,bthick,bthick]) { color([0.2,0.5,0.2]) cube([bthick,bwidth,bthick]); } translate([blong-athick-0.1,bthick,bhight]) { color([0.2,0.5,0.2]) cube([bthick,bwidth,bthick]); } //====================================== //盖子,单独打印。嵌入盒子内部,注意留公差。 //translate([2,0.0,0.0]){ translate([0,0.05,2.55]){ difference() { //盖子,挖空。 translate([0,bthick,bthick]) { color([0.5,0.5,0.5]) cube([athick-0.05,bwidth-0.1,bhight-0.1]); } translate([0.2,bthick*2,bthick*2]) { color([0.6,0.3,0.8]) cube([athick+1,bwidth-bthick*2-0.1, bhight-bthick*2-0.1]); } //通风口,挖空。================ //左侧出风口 translate([-0.1,0.5,1.2]) { color([1,0.8,0.8]) cube([0.8,1.5,0.2]); } translate([-0.1,0.5,0.85]) { color([1,0.8,0.8]) cube([0.8,1.5,0.2]); } translate([-0.1,0.5,0.5]) { color([1,0.8,0.8]) cube([0.8,1.5,0.2]); } //右侧进风口 translate([-0.1,3.2,0.5]) { color([1,0.8,0.8]) cube([0.8,0.8,0.4]); } translate([-0.1,4.2,0.5]) { color([1,0.8,0.8]) cube([0.8,0.2,0.9]); } translate([-0.1,4.6,0.5]) { color([1,0.8,0.8]) cube([0.8,0.2,0.9]); } //USB接口,挖空。 translate([-0.1,3.2,1.10]) { color([1,0.8,0.8]) cube([0.8,0.8,0.3]); } } }