一開始先製作一個簡單的立方體。定義一個變量「cube_size」,然後使用下圖的立方體程式。center=true的設定可讓立方體位於起始模型的正中央。
 
為你在OpenSCAD創造的物體加上不同顏色是很好用的作法,因為這可以讓你的作品在工作過程中現形。我們會把立方體變成灰色。

磨圓立方體的邊線

接下來我們要把立方體的邊線磨圓,方法是讓立方體和球體交疊。交集指令是布林運算(Boolean Operation),結合兩個形狀但只留下交集的部分。

cube_size=60;
intersection(){
color("gray")cube(cube_size,center=true);
color("red") sphere(cube_size/1.3,center=true);
}

  备注: 三种运算

translate([-24,0,0]) {
intersection(){
cube(15, center=true);
sphere(10);
}
} union() {
cube(15, center=true);
sphere(10);
} translate([24,0,0]) {
difference() {
cube(15, center=true);
sphere(10);
}
}

  創造3D文字

首先,我們要在OpenSCAD中定義一個模組,才能創造立體圖形。這個OpenSCAD的文字指令只能創造出2D的形狀。以下的文字模組來自OpenSCAD裡的text_on_cube 範例,使用linear_extrude程式把第三向量加入2D的文字指令中。
 
我們也加入變量,用來控制立體文字的高度及深度。變量「o」稍後會被用在將文字定位在骰子平面上的功能。

// 模型1 塞子
cube_size=60; module saizi(){
intersection(){
color("gray")cube(cube_size,center=true);
color("red") sphere(cube_size/1.3,center=true);
}
} // 模型2 图案1
font="Wingdings"; letter_size=40;
letter_height=5; o=cube_size/2-letter_height/2; module letter(l){ linear_extrude(height=letter_height){
text(l,size=letter_size,font=font,halign="center",valign="center",$fn=16); } } difference(){
saizi();
translate([0,0,o])letter(font=("Wingdings"),"T");
}

  骰子底部的特殊考量

至於骰子的底部,我們就只是再用一次編譯程式,但是用在z軸的負數方向。因為圖案會完全被定位在骰子裡面,所以我們必須從z軸位置削減掉文字的高度。

 translate([0,0,-o-letter_height])letter(font=("Wingdings"),"R");

  

從一個實際的設計角度,考慮骰子底部的圖案形狀與大小將如何印出來是很重要的事。大的開放面積不被支援,還可能會在列印過程中下陷,而太小的開放面積則可能會被壓扁或堵塞。我使用了Windings的太陽圖案,進行得很順利。你的列印成果可能會因為不同的圖案選擇、印表機設定等而有所不同

// 模型1 塞子
cube_size=60; module saizi(){
intersection(){
color("gray")cube(cube_size,center=true);
color("red") sphere(cube_size/1.3,center=true);
}
} // 模型2 图案1
font="Wingdings"; letter_size=40;
letter_height=5; o=cube_size/2-letter_height/2; module letter(l){ linear_extrude(height=letter_height){
text(l,size=letter_size,font=font,halign="center",valign="center",$fn=16); } }
// 程序运行 difference(){
saizi();
translate([0,0,o])letter(font=("Wingdings"),"T");
translate([0,0,-o-letter_height])letter(font=("Wingdings"),"R"); translate([0,-o,0])rotate([90,0,0])letter(font=("Wingdings"),"S"); translate([o,0,0])rotate([90,0,90])letter(font=("Wingdings"),"Z");
translate([0,o,0])rotate([90,0,180])letter(font=("Wingdings"),"+");
translate([-o,0,0])rotate([90,0,-90])letter(font=("Wingdings"),"*");
}

  渲染模型並輸出列印的STL檔

對模型滿意之後,接下來要進行渲染。按下渲染鍵,查看是否完整沒有錯誤。你可以在展示區看到渲染後的模型,操作結果在底下的操作臺區域。

最後,輸出模型為STL檔,以便之後的列印。

我用15.04版的Cura和Printbot Simple Metal印表機列印,結果令我相當滿意。我在列印軟體內將模型調整到16mm x 16mm x 16mm,也就是標準遊戲骰子的規格。

用OpenSCAD設計特製的遊戲骰子的更多相关文章

  1. [Xamarin] 使用LayoutInflater.Inflate載入預先設計好的Layout並使用 (转帖)

    開發的時候,一定會把一些東西設計成元件,並且可以多次使用,今天紀錄一篇比較簡單的方法,可以載入事先做好的Layout 並且給予事件 介紹一下範例: Main.axml: <?xml versio ...

  2. Hot-Bar 軟板設計注意事項

    Hot-Bar reflow (熔錫熱壓焊接),其最只要功能,就是利用熱壓頭熔融已經印刷於電子印刷電路(PCB)上的錫膏,藉以連接兩個各自獨立的電子零件,最常見到的是將軟排線(FPB)焊接於電子印刷電 ...

  3. FPC Trace Pattern Layout Design Notices (軟板線路設計注意事項)

    整理了一些軟板(FPCB/Flex Cable)製造廠關於線路設計的要求 (Design Guide)以避免應用上的品質問題. 1.Relationship between Through Hole, ...

  4. PCB模擬設計接地的指導原則

    接地無疑是系統設計中最為棘手的問題之一.盡管它的概念相對比較簡單,實施起來卻很復雜,遺憾的是,它沒有一個簡明扼要可以用詳細步驟描述的方法來保證取得良好效果,但如果在某些細節上處理不當,可能會導致令人頭 ...

  5. 高效率dc升壓轉換器 應用技巧談 功率設計

    為便攜式電子設備開發電源電路要求設計工程師通過最大程度地提高功率和降低整個系統的功耗來延長電池使用壽命,這推動器件本身的尺寸變得更小,從而有益于在設計終端產品時獲得更高靈活性.這種設計的最重要元器件之 ...

  6. IC芯片設計

    IC從生產目的上可以分成為通用IC(如CPU,DRAM,接口芯片等)和ASIC(ApplicationSpecificIntegreted Circuit)兩種,ASIC是因應專門用途而生產的IC.  ...

  7. Outlook2007、2010和Foxmail的簽名設計

    由於個人習慣問題公司大部分人採用第三方郵件工具,對與郵件的通訊設置大家完全可以通過嚮導完成,但是郵件的簽名設計往往隐藏了起来,现在就由我来带大家进行个性签名设计. Outlook2007 第一步: 点 ...

  8. COB對PCB設計的要求

    由於COB沒有IC封裝的leadframe(導線架),而是用PCB來取代,所以PCB的焊墊設計就便得非常的重要,而且Fihish只能使用電鍍金或是ENIG(化鎳浸金),否則金線或是鋁線,甚至是最新的銅 ...

  9. html 響應式web設計

    RWD(響應式web設計)可以根據尺寸大小傳遞網頁,對於平板和移動設備是必須的. <html lang="en-US"> lang表示頁面的主要語言.http://ww ...

随机推荐

  1. oracle与mysql(2)

    一.并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源的获取.共享与锁定. mysql:mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他se ...

  2. Java-关于类

    java-关于类-成员初始化问题 成员初始化出现错误“    - Syntax error on token ";", , expected” java类不允许对成员进行操作,但可 ...

  3. 【Mybatis】1、Mybatis拦截器学习资料汇总

    MyBatis拦截器原理探究 http://www.cnblogs.com/fangjian0423/p/mybatis-interceptor.html [myBatis]Mybatis中的拦截器 ...

  4. AOP,过滤器,监听器,拦截器【转载】

    面向切面编程(AOP是Aspect Oriented Program的首字母缩写) ,我们知道,面向对象的特点是继承.多态和封装.而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配 ...

  5. 列表中文字太多 溢出使用省略号css方法

    我们经常会遇到文字太多,而为了不打破原有布局,需要将多出文字用省略号代替,实现以下效果: 文字太太太太多多多啦...... 这个不多. html:这是个列表.ul/ol都行. <ul> & ...

  6. 纯css3实现的动画导航菜单

    测试咯 css3 前端特效代码 网页模板 图片素材 css3 前端特效代码 网页模板 图片素材 css3 前端特效代码 网页模板 图片素材 css3 前端特效代码 网页模板 图片素材 css3 前端特 ...

  7. 【工具相关】Web-Sublime Text2-通过Package Control安装插件

    一,Sublime Text2--->Preferences--->Package Control-->输入install---> 下方就会提示“Package Control ...

  8. 【读书笔记】iOS-xib,自动布局(二)

    我们紧接着上面的文章来写. 一,此时没有选择自动布局的时候 . 二,选中Use Auto Layout.如下图所示. 三,自动布局与不自动布局最明显的区别是右下角多了4个按钮.如图所示. 四,设置On ...

  9. loadrunner 运行场景-命令行运行场景

    运行场景-命令行运行场景 by:授客 QQ:1033553122 1 相对路径与绝对路径 在场景中为脚本指定一个相对位置,可以是相对于当前场景目录或lr安装目录. 当你运行一个场景,场景自动从这个相对 ...

  10. ubuntu18.04突然无法上网解决方法

    sudo service network-manager stop sudo rm /var/lib/NetworkManager/NetworkManager.state sudo service ...