広告
雑多なこと
- 2014年バージョンではpointsなどの配列に新しい要素を追加できない
- 新しいバージョンではconcatという関数でできるようになるらしい
- 同じ変数を複数回定義すると「undef」(数値的には0)になる。
- 角にアールがついたブロックを作るのに便利な関数
- 2015年3月バージョン以降は「offset+linear_extrude」を使うのが楽
testOffset(20,10,5,2);
module testOffset(x,y,z,r,center = false){
linear_extrude(height = z, center = center)
offset(r = r) {
square([x-2*r,y-2*r], center = true);
}
}
- minkowski
- 厚さも変わってしまうので注意
- 以下例
rBox(20,10,10,2);
module rBox(x,y,z,r,center=false){
minkowski(){
cube(size = [x-2*r,y-2*r,z-r],$fn=res,center=center);
cylinder(r=r,h=r,$fn=res,center=center);
}
}
- hull
- 以下例
testHull(20,10,5,2);
module testHull(x,y,z,r,center = false){
linear_extrude(height = z, center = center)
hull() {
translate([x/2-r,y/2-r,0]) circle(r);
translate([x/2-r,-y/2+r,0]) circle(r);
translate([-x/2+r,-y/2+r,0]) circle(r);
translate([-x/2+r,y/2-r,0]) circle(r);
}
}
- 一つの頂点が丸まっている三角形
rTriangle1();
module rTriangle1(){
linear_extrude(height = 5, center = true)
hull() {
polygon([[20,0],[0,20],[-20,0]]);
translate([0,20,0]) circle(d=5);
}
}
- すべての頂点が丸まっている三角形
rTriangle2();
module rTriangle2(){
linear_extrude(height = 5, center = true)
hull() {
translate([0,20,0]) circle(d=5);
translate([20,0,0]) circle(d=5);
translate([-20,0,0]) circle(d=5);
}
}
- 楕円柱
- 円柱をresizeで潰す
ellipseCylinder(10,20,5,res=200,center=true);
module ellipseCylinder(h,a,b,res=100,center=false){
resize([0,2*b,0])
cylinder(h = h, r = a,$fn=res,center=center);
}
- 回転楕円体、楕円体
- 球をscaleで引き伸ばす
spheroid();
module spheroid(){
//resize([0,40,0]) //resizeではうまく行かなかった
scale([1,1,2])
sphere(r = 20);
}
- 元図形が残るミラー
- 2014年バージョンでは専用関数は無い。mirrorは元図形が残らない
- 有志が作ったモジュールがある
module copy_mirror(vec=[0,1,0])
{
children();
mirror(vec) children();
}
- 同様の手法でコピーもできる
copy([20,0,0])
cube([10,20,5], center = true);
module copy(vec=[0,0,0]){
children();
translate(vec) children();
}
広告
|