Top > OpenSCAD > tips

広告

雑多なこと

FreeCADへのインポート

OpenSCADのスクリプトをFreeCADへインポートできる.

  • 表示モードを「OpenSCAD」にして「編集(Edit)」⇒「設定()」⇒「OpenSCAD」⇒「OpenSCADのインポート」で「ポリゴン最大面数」を0じゃない数にしておく
    • じゃないと円とか曲線が多角形になってしまい後々面倒
    • 一度設定すれば大丈夫
  • 「ファイル(File)」⇒「開く(Open)」でOpenSCADのファイル(*.scad)を開く
    • imoprt plyでエラーが出るときがあるので「python3-ply」などをインストールする
    • 現時点ではいくつかの命令(offsetとか)に対応していないのでエラーが出ることがある
  • 後はFreeCADで普通に操作する

表示関係

  • 色の指定
    • color(色,α値(透過度))
  • 背景色を変える(スキームの変更)
    • 「Edit」→「Preferences」→「3D View」でスキームを選ぶ
    • コマンドラインで立ち上げるときにスキームを指定
      openscad --colorscheme=スキーム名
    • スキーム設定ファイルを編集または作製
      • 「/usr/share/openscad/color-schemes/render」などにある
  • 断面の色を変える
    • 上述のスキームを変える
    • difference()で引く側の色を変える。

プログラミング関係

  • 角にアールがついたブロックを作るのに便利な関数
    • 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);
         }
      }
  • hull()を使うといろいろできる
  • 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);
          }
      }
      test_minkowski.png
  • 楕円柱
    • 円柱を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);
      }
      ellipsecylinder.png
  • 回転楕円体楕円体
    • 球をscaleで引き伸ばす。楕円をrotate_extrudeで回転させるよりも速い
      spheroid();
      module spheroid(){
        //resize([0,40,0])    //resizeではうまく行かなかった
        scale([1,1,2])
        sphere(r = 20);
      }
      spheroid.png
  • 元図形が残るミラー
    • 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();
      }

ヘンテコな図形

  • 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);
    twist_extrude.png

広告

Attach file: filetest_minkowski.png 67 download [Information] fileellipsecylinder.png 361 download [Information] filespheroid.png 440 download [Information] filetwist_extrude.png 410 download [Information]

Reload   Diff   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes
Last-modified: Sun, 06 Sep 2020 22:21:54 HAST (81d)