迎接2022冬奧會,用代碼寫個“雪花”

OpenSCAD(https://my.oschina.net/u/2306127?q=openscad)是一個可以用代碼進行幾何構型的軟件,使用BlocksCAD還可以用可視化代碼塊構建幾何體,並進一步轉化爲scad幾何造型代碼,然後可以轉爲stl文件,到Cura等3D打印軟件中輸出立體模型。這與很多交互式的CAD軟件有很大的不同,可以創建出更加靈活的算法驅動的幾何造型。下面我們來造個雪花。

實現使用BlocksCAD創建模型:

然後,查看scad代碼:

//!OpenSCAD

// angulo entre 300 e 340
// distancia entre 4 y 16
// lonxitude entre 4 y 12
module rama(distancia, angulo, lonxitude) {
  color([1,0.6,0]) {
    union(){
      translate([distancia, 0, -1]){
        rotate([0, 0, angulo]){
          cube([2, lonxitude, 2], center=false);
        }
      }
      translate([distancia, 0, -1]){
        mirror([0,1,0]){
          rotate([0, 0, angulo]){
            cube([2, lonxitude, 2], center=false);
          }
        }
      }
    }
  }
}

for (i = [0 : abs(60) : 360]) {
  rotate([0, 0, i]){
    union(){
      translate([10, 0, 0]){
        color([0.4,1,0.6]) {
          cube([20, 2, 2], center=true);
        }
      }
      color([0.93,0,0]) {
        rama(14, 315, 8);
      }
      color([1,1,0]) {
        rama(9, 315, 12);
      }
      color([0.2,0.8,0]) {
        rama(4, 315, 8);
      }
      translate([22, 0, 0]){
        color([0.2,1,0.2]) {
          // torus
          rotate_extrude($fn=4) {
            translate([3, 0, 0]) {
              circle(r=1.15, $fn=6);
            }
          }
        }
      }
    }
  }
}

// size is multiplied by 0.75 because openScad font sizes are in points, not pixels
linear_extrude( height=2, twist=0, center=false){
  text("2022 北京冬奧會", font = "簡體中文", size = 5*0.75, halign="center";   valign="center");
}

translate([0, 6, 0]){
  // size is multiplied by 0.75 because openScad font sizes are in points, not pixels
  linear_extrude( height=2, twist=0, center=false){
    text("一起向未來", font = "簡體中文", size = 5*0.75, halign="center";   valign="center");
  }

}

把代碼拷貝到OpenSCAD中,可以繼續編輯。

但是呢,OpenSCAD中的字體引用與瀏覽器不太一樣,需要設置字體路徑,參見https://my.oschina.net/u/2306127?q=openscad。另外,默認的顏色會有變化,使用Color函數設置一下即可。

接下來可以使用Cura進行3D打印,參見:

也可以輸出到其它模型格式,集成到其他的三維軟件中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章