// めねじ(タップ) //   メートル並目ねじ JISB0205-1982 // // 「穴」ですので、内側を表面にしたいため、 // 各表裏フラグを逆の「1」にしています。 // ============================================= // (C)Copyright 2008 AFsoft All Rights Reserved. // ============================================= #LIST  M = 1, 1.1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.5, 3, 3.5, 4, 4.5, 5, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 42, 45, 48, 52, 56, 60, 64, 68  M2 = 0.729,0.829,0.929,1.075,1.221,1.421,1.567,1.713,2.013,2.459,2.85,3.242,3.688,4.134,4.917,6.647,8.376,10.106,11.835,13.835,15.294,17.294,19.294,20.752,23.752,26.211,29.211,31.67,34.67,37.129,40.129,42.587,46.587,50.046,54.046,57.505,61.505 #VAR  M = 10  ;*ねじ径  M2     // めねじ内径D1  L = 20  ;*ねじ深さ  b = 15  ;*完全ねじ部長さ  x = 2  ;*不完全ねじ部長さ  t  u  i  w1  w2 #DRAW  CHKLIST w1,"M",M  // 指定したねじ径がLISTの何個目かを得る  GETLIST M2,"M2",w1 // そのときのめねじ内径を取得する  CAL t = M2/2*Tan(30/180*PI)  CAL u = L - b  #IF (u <= 0) BEEP MESSAGE "入力エラー","ねじ深さが小さ過ぎます","或いは、完全ねじ部長さが大きすぎます",0,0 #EXIT #END  #IF (u < x) GETKETA w1,u,10000 BEEP MESSAGE "入力エラー","不完全ねじ部長さが大きすぎます","",0,w1 #EXIT #END  // X軸回りに180°回転  CAL w1 = PI  ROXMATR w1  // --- めねじ内径 ---  LAYER SetLineLay1  // 外形線  PEN SetLineCol1  // 上面:円環ソリッド:上を表にしています  // 内側面:内側を表にしています  CAL w1 = M2/2  // CSLD2D i,SetArcSep,0,0,w1,w1,0,1  ASLD3D i,SetArcSep,0,0,L,w1,w1,0,0,0,1  // --- ねじ径 ---  LAYER SetLineLay4  // 基準線  PEN SetLineCol4  // 上面:円ソリッド:上を表にしています  // 側面:内側を表にしています  CAL w1 = M/2  CAL w2 = M2/2  // DSLD2D i,SetArcSep,0,0,w1,w1,0,w2,1  ASLD3D i,SetArcSep,0,0,b,w1,w1,0,0,0,1  CAL w1 = b  MATRIXL 0,0,w1  // 不完全ねじ部  CAL w1 = M/2  CAL w2 = M2/2  CTUBE i,SetArcSep,w1,x,w2,0,0,0,0,1  CAL w1 = u  MATRIXL 0,0,w1  // 先端部分の円錐を作図します  // 底面表示は無し、表裏逆、です  LAYER SetLineLay1  // 外形線  PEN SetLineCol1  CAL w1 = M2/2  CCONE i,SetArcSep,w1,t,0,0, 0,1