Top > OpenSCAD > tips

広告
  • The added line is THIS COLOR.
  • The deleted line is THIS COLOR.
  • Go to OpenSCAD/tips.

*雑多なこと [#of0dd9c7]
//**気付き事項 [#d9516e59]
//-2014年バージョンではpointsなどの配列に新しい要素を追加できない
//--新しいバージョンではconcatという関数でできるようになるらしい
//-同じ変数を複数回定義すると「undef」(数値的には0)になる。
//--バグかもしれない
**[[FreeCAD]]へのインポート [#p67b7ae1]
OpenSCADのスクリプトを[[FreeCAD]]へインポートできる.
-表示モードを「OpenSCAD」にして「編集(Edit)」⇒「設定()」⇒「OpenSCAD」⇒「OpenSCADのインポート」で「ポリゴン最大面数」を0じゃない数にしておく
--じゃないと円とか曲線が多角形になってしまい後々面倒
--一度設定すれば大丈夫
-「ファイル(File)」⇒「開く(Open)」でOpenSCADのファイル(*.scad)を開く
--現時点ではいくつかの命令(offsetとか)に対応していないのでエラーが出ることがある
-後は[[FreeCAD]]で普通に操作する

**表示関係 [#h3896571]
-色の指定
--color(色,α値(透過度))
-背景色を変える(スキームの変更)
--「Edit」→「Preferences」→「3D View」でスキームを選ぶ
--コマンドラインで立ち上げるときにスキームを指定
 openscad --colorscheme=スキーム名
--スキーム設定ファイルを編集または作製
---「/usr/share/openscad/color-schemes/render」などにある
-断面の色を変える
--上述のスキームを変える
--difference()で引く側の色を変える。
**プログラミング関係 [#u37c12db]
-角にアールがついたブロックを作るのに便利な関数
--2015年3月バージョン以降は「[[offset:https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Transformations#offset]]+[[linear_extrude:https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Using_the_2D_Subsystem#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);
    }
 }

--[[hull:https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Transformations#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);
     }
 }
--[[hull()>OpenSCAD/hull]]を使うといろいろできる
--[[minkowski:https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Transformations#minkowski]]
---上の2つが2次元図形のみ対応しているが、minkowskiは3次元図形にも対応
---3次元図形には便利だけど位置や大きさが変わってしまうので注意
---計算に時間がみたいなので、$fnをあまり大きくしない方が良いらしい
---以下例
 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);
   }
 }
全ての角にRをつける(R面取り)
 minkowski(){
     cube([10,10,10],center=true);
     translate([-5,-5,-5]) sphere(r = 1);
 }
 
 translate([20,20,0]){
     minkowski(){
         linear_extrude(height = 20, center = true, convexity = 10, scale=0.9) polygon([[-5,-5],[0,5],[5,-5]]);
         translate([-5,-5,-10]) sphere(r = 1);
     }
 }
#ref(OpenSCAD/tips/test_minkowski.png)
-楕円柱
--円柱を[[resize:https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Transformations#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);
 }
#ref(ellipsecylinder.png)
-[[回転楕円体:http://ja.wikipedia.org/wiki/%E5%9B%9E%E8%BB%A2%E6%A5%95%E5%86%86%E4%BD%93]]、[[楕円体:http://ja.wikipedia.org/wiki/%E6%A5%95%E5%86%86%E4%BD%93]]
--球を[[scale:https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Transformations#scale]]で引き伸ばす。楕円をrotate_extrudeで回転させるよりも速い
 spheroid();
 module spheroid(){
   //resize([0,40,0])    //resizeではうまく行かなかった
   scale([1,1,2])
   sphere(r = 20);
 }
#ref(spheroid.png)
-元図形が残るミラー
--2014年バージョンでは専用関数は無い。[[mirror:https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Transformations#mirror]]は元図形が残らない
--[[有志が作ったモジュールがある:http://forum.openscad.org/Wish-mirror-copy-true-td10681.html]]
 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();
 }
**ヘンテコな図形 [#je373325]
-linear_extrudeは引き伸ばしながらねじることもでき、絞ることもできるのでファンのブレードみたいのも作れる
 $fn=100;
 linear_extrude(height = 20, center = true, twist = -30,scale=[0.1,0.1])
	translate([5,0,0])
	resize([0,2,0])
		circle(d=15);
#ref(twist_extrude.png)

広告

Reload   Diff   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes