20章:3Dサンプル(sketch_3D_Z_Nut)六角ナット

    作成2015.12.08

     Processingの3D機能を利用して3D機械製図への応用を検討してみたいと思います。

  1. 六角ナットの寸法図
     六角ナットの寸法図を以下に示します。



    *図20-1からわかるように六角ナットの基本寸法はBとTとRの3個のパラメータで形状が決まります。
    *BとTとRはfloat型でmm単位で入力とします。


  2. 3Dサンプル(sketch_3D_Z_Nut)六角ナットスケッチ
     3Dサンプル(sketch_3D_Z_Nut)六角ナットスケッチは以下となります。
    //sketch_3D_Z_Nut 六角ナット
    void setup()
    {
      size(400, 400, P3D);
    }
    
    void draw()
    {
      background(255, 255, 255);
      lights();
      ortho(-width/2, width/2, -height/2, height/2); // Same as ortho()
      translate(width / 2, height / 2);
      rotateY(map(mouseX, 0, width, -PI/1, PI/1));
      rotateX(map(mouseY, 0, height, PI/1, -PI/1));
      //noStroke();
      strokeWeight(0.1);
        
      fill(255, 255, 255);
      scale(5, 5,5);
      
      Z_Nut(24,13,8);//六角ナット
    }
    
    void Z_Nut(float B,float T,float R)//六角ナット
    {
      int Pn=7;//ポイント数
      float[] X=new float[Pn];
      float[] Y=new float[Pn];
      int i;
      float r=B/(2*cos(30*PI/180));
      for(i=0;i<Pn;i++)
      {
        float angle = i*TWO_PI/(Pn-1);
        X[i]=r*cos(angle);Y[i]=r*sin(angle);
      }
      
      int Pn2=17;//ポイント数
      float[] X2=new float[Pn2];
      float[] Y2=new float[Pn2];
      for(i=0;i<Pn2;i++)
      {
        float angle = i*TWO_PI/(Pn2-1);
        X2[i]=R*cos(angle);Y2[i]=R*sin(angle);
      }
    
      pushMatrix();
      Z_Side(Pn,X,Y,T);//側面
      Z_Side(Pn2,X2,Y2,T);//側面
      translate(0,0,-T/2);
      beginShape();
      Z_Polyon_P(Pn,X,Y);//多角形
      beginContour();
      Z_Polyon_M(Pn2,X2,Y2);//多角形
      endContour();
      endShape(CLOSE);
      translate(0,0,T);
      beginShape();
      Z_Polyon_P(Pn,X,Y);//多角形
      beginContour();
      Z_Polyon_M(Pn2,X2,Y2);//多角形
      endContour();
      endShape(CLOSE);
      popMatrix();
    }
    
    void Z_Side(int Pn,float X[],float Y[],float L)//側面
    {
      int i;
      beginShape(QUAD_STRIP);
      for (i = 0; i < Pn; i++)
      {
        vertex(X[i],Y[i], -L/2);
        vertex(X[i],Y[i], L/2);
      }
      endShape(CLOSE);
    }
    
    void Z_Polyon_P(int Pn,float X[],float Y[])//多角形反時計回り
    {
      int i;
      for (i = 0; i < Pn; i++)
      {
        vertex(X[i],Y[i]);
      }
    }
    
    void Z_Polyon_M(int Pn,float X[],float Y[])//多角形時計回り
    {
      int i;
      for (i = Pn-1; i >= 0; i--)
      {
        vertex(X[i],Y[i]);
      }
    }
    


  3. 3Dサンプル(sketch_3D_Z_Nut)六角ナットテキストファイル
     3Dサンプル(sketch_3D_Z_Nut)六角ナットテキストファイルは以下から参照できます。
    「3Dサンプル(sketch_3D_Z_Nut)六角ナットテキストファイル」にいく



  4. 3Dサンプル(sketch_3D_Z_Nut)六角ナットスケッチの実行
    (1)33Dサンプル(sketch_3D_Z_Nut)六角ナットスケッチを実行すると実行ウインドウに3D画像が表示されます。
    (2)マウスを動かすと表示角度が変化します。
    (3)表示画像例を以下に示します。





  5. 3Dサンプル(sketch_3D_Z_Nut)六角ナットまとめ
    (1)表示は正投影のortho(-width/2, width/2, -height/2, height/2);としました。
    (2)線有りのstrokeWeight(0.1);としました。
    (3)Z_Nut(24,13,8);//六角ナットと指定すると指定寸法の六角ナットが表示できます。




21章:3Dサンプル(sketch_3D_Z_Bolt_A)六角穴付きボルトに行く。

トップページに戻る。