AFsoft World

AF日記。 コンピュータ・CAD・漫画・アニメ・ゲーム・スポーツ等についてのたわいもない話、などなど。

【Script!】

[JWW] たるんだ電線

Jw_cad作者さんのサイトの掲示板で下記のような質問がありました。
たるんだ電線はどのように書くのですか?
http://hpcgi2.nifty.com/jw_cad/c-board.cgi?cmd=ntr;tree=32428;id=004
懸垂曲線(カテナリー曲線)とのこと。
式は、y = a*cosh(x/a) だそうなので当方の「Script!」で組んでみました。
// 懸垂曲線(カテナリー曲線)

#VAR
 X = 100  ;*横長さ
 a = 50  ;*係数a(a>0)
 n = 20  ;*分割数

 c
 w1
 w2
 x1
 y1
 x2
 y2
 xd
 yd

#DRAW
 LAYER SetLineLay1
 PEN SetLineCol1,SetLineLtp1,SetLineWid1

 CAL xd = -X/2
 CAL yd = -a*Cosh(xd/a)

 CAL c = 0
 CAL x1 = 0
 CAL y1 = 0
 #WHILE (c < n)
  CAL x2 = x1 + X/n
  CAL w1 = x2 + xd
  CAL w2 = a*Cosh(w1/a)
  CAL y2 = w2 + yd

  LINE x1,y1,x2,y2
  CAL x1 = x2
  CAL y1 = y2
  CAL c = c + 1
 #END
実行して、[JWWクリップボード転送]をして、Jw_cad側で「貼付」を行ってみて下さい。

[JWW] 目盛、使っていますか?

Jw_cad作者さんのサイトの掲示板で下記のような質問がありました。
さて、ご質問ですがみなさんは目盛を使用しておられますか?木造住宅の設計の場合、結構重宝する機能なのですが(柱ピッチが910とか固定なので)同じ要しないに縮尺の違う詳細図とか書くときにはとてもいらいらします。
実際に平面等を各場合は1/100の図面で910ピッチ、目盛り機能にて1/2の点を見えるようにして柱、間柱とか、プラン&実施設計をしております。この作業をする場合とても簡単に間取りの作成ができるのですが、レイヤーを変えて縮尺が違う図面を画く場合には点に反応して邪魔になり、拡大・縮小を繰り返したり、いちいち目盛をon・offをしなければ成りません。皆さんはどうされているのでしょうか?
提案ですが、目盛の範囲を決めれたらいいですね。図面いっぱいに無限に広がるんじゃなく、ここからここまでの範囲は910ピッチで点を、他の部分には違うピッチでとか(縮尺違っても点は同じピッチなので、レイヤーごとに決めれるとかでもいいかも。)
http://hpcgi2.nifty.com/jw_cad/c-board.cgi?cmd=ntr;tree=14421;id=003
簡単な図形とか模式的な図を描く場合には、目盛=グリッドは使っています。もっとも私は Jw_cad ではなく別のソフトを使っていますが、自作物も含め、グリッドは Jw_cadのように右クリックで拾うのではなく、左クリックで近傍グリッドに作図となっていますので、線の端点を拾ったつもりがグリッドを拾ってしまうというような事は皆無です。

まぁそれはいいとして

まず、目盛のON・OFFについては、ちょっと前に書きましたが、当方の「JWC MENU もどき」「JwwMenu」「AFMouMenu(R,D)」「AFJoyMenu」などで
目盛ON
「@SJ{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}5{TAB}{TAB}{TAB}{SPC}」
目盛OFF
「@SJ{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{SPC}」
を割り付けておいて、それを選択、とか

次に、ある領域内に描きたいのであれば、補助色の線や点を描けばいいと思います。以下、当方「Script!」内のサンプルの補助線用スクリプト Sample10.sf です。(Sript!内に入ってます)
// sample10
// 補助線格子を書く
//
// 傾き角度は、JWWで作図する際の回転角で指定
// 5本毎に点線3で描く

#VAR
d = 100 ;*間隔
n1 = 10 ;*本数(上)
n2 = 10 ;*本数(下)
n3 = 10 ;*本数(左)
n4 = 10 ;*本数(右)
l // 作業用変数
i
x1
y1
x2
y2

#DRAW
// 数値チェック
#IF (d <= 0.0)
BEEP
MESSAGE "入力エラー","間隔の値は","正の値を入力して下さい。",0,0
#EXIT
#END

#IF ((n1 <= 0)||(n2 <= 0)||(n3 <= 0)||(n4 <= 0))
BEEP
MESSAGE "入力エラー","本数の値は","正の値を入力して下さい。",0,0
#EXIT
#END

// 作図開始

// ---------- 水平線 ----------
PEN 9,1,0 // 補助線色、実線、線幅0

// 基準
CAL x1 = - n3 * d
CAL y1 = 0.0
CAL x2 = n4 * d
CAL y2 = 0.0
LINE x1,y1, x2,y2

// 上側
CAL i = 1
CAL y1 = d
*LOOP1
CAL y2 = y1
PEN 9,9,0 // 補助線色、補助線種
#IF ((i%5) == 0)
PEN 9,4,0 // 補助線色、点線3
#END
LINE x1,y1, x2,y2

CAL y1 = y1 + d
CAL i = i + 1
#IF (i <= n1)
#GOTO *LOOP1
#END

// 下側
CAL i = 1
CAL y1 = -d
*LOOP2
CAL y2 = y1
PEN 9,9,0 // 補助線色、補助線種
#IF ((i%5) == 0)
PEN 9,4,0 // 補助線色、点線3
#END
LINE x1,y1, x2,y2

CAL y1 = y1 - d
CAL i = i + 1
#IF (i <= n2)
#GOTO *LOOP2
#END

// ---------- 垂直線 ----------
PEN 9,1,0 // 補助線色、実線、線幅0

// 基準
CAL x1 = 0.0
CAL y1 = n1 * d
CAL x2 = 0.0
CAL y2 = - n2 * d
LINE x1,y1, x2,y2

// 左側
CAL i = 1
CAL x1 = - d
*LOOP3
CAL x2 = x1
PEN 9,9,0 // 補助線色、補助線種
#IF ((i%5) == 0)
PEN 9,4,0 // 補助線色、点線3
#END
LINE x1,y1, x2,y2

CAL x1 = x1 - d
CAL i = i + 1
#IF (i <= n3)
#GOTO *LOOP3
#END

// 右側
CAL i = 1
CAL x1 = d
*LOOP4
CAL x2 = x1
PEN 9,9,0 // 補助線色、補助線種
#IF ((i%5) == 0)
PEN 9,4,0 // 補助線色、点線3
#END
LINE x1,y1, x2,y2

CAL x1 = x1 + d
CAL i = i + 1
#IF (i <= n4)
#GOTO *LOOP4
#END

// END
これを実行して、間隔などを指定、
20081212a
となるので [JWWクリップボード転送]をクリック。で、Jw_cad 側にて
20081212b
となって、貼り付け〜
20081212c
以上です。

[JWW] [Script] 長円+文字

somemさんのブログ「長丸+全角文字」のネタを
久しぶりにScript!を使って書いてみました。
こんな感じでしょうか?
レイヤグループの縮尺を1/1状態で使ってみて下さい。
// 長円+文字
// =============================================
// (C)Copyright 2008 AFsoft All Rights Reserved.
// =============================================
#VAR
 mh = 5       ;*文字高[mm]
 mw = 5       ;*文字幅[mm]
 ms = 1       ;*上下隙間[mm]
 s          ;*文字内容
 x   //横中心距離
 y   //縦の大きさ

 ii  // 文字数
 w1
 w2
 w3
 w4
 w5

#DRAW
 #IF ((mh <= 0)||(mh > 1000))
   BEEP
   MESSAGE "入力エラー","文字高の値が異常です。","文字高の値を再入力して下さい。",0,w1
   #EXIT
 #END
 CAL w1 = mh*0.1
 CAL w2 = mh*10
 #IF ((mw < w1)||(mw > w2))
   BEEP
   MESSAGE "入力エラー","文字幅の値が異常です。","文字幅の値を再入力して下さい。",w1,w2
   #EXIT
 #END

 CAL ii = LENGTH(s)
 #IF (SetMojiWid == 0)
   STRLEN ii,s
   CAL ii = ii + ii
 #END

 CAL x = mw*0.5*ii
 CAL y = mh + ms*2.0

 LAYER SetLineLay1  // 外径線
 PEN SetLineCol1,SetLineLtp1,SetLineWid1

 // 横線
 CAL w1 = -x/2
 CAL w2 = y/2
 CAL w3 = x/2
 CAL w4 = w2
 LINE w1,w2,w3,w4

 CAL w2 = -y/2
 CAL w4 = w2
 LINE w1,w2,w3,w4

 // 左右円弧
 CAL w1 = -x/2
 CAL w2 = 0
 CAL w3 = y/2
 CAL w4 = 0.5*PI
 CAL w5 = 1.5*PI
 ARC w1,w2,w3,w4,w5

 CAL w1 = x/2
 CAL w2 = 0
 CAL w3 = y/2
 CAL w4 = 1.5*PI
 CAL w5 = 0.5*PI
 ARC w1,w2,w3,w4,w5

 CAL w1 = 0
 CAL w2 = 0
 TEXT w1,w2,mh,mw,0,5,s
レイヤグループの縮尺が1/1でない場合は[作図属性]で「□文字も倍率」にチェックを入れたら出来そうな気はしますが文字がずれてしまうのですよね〜。ですのでこれにチェックをせず、Script!での数値は図寸状態(5mm,5mm,1mm)で、1/100であれば、Jw_cadの倍率を「100」にして下さい。

[Jw_cad] リンク機構4

続きです。(この回の最後)

それでは、角度をいろいろ変えていって、どういう軌道をするのかを表示させてみることにします。開始の角度、終了の角度、何分割するか、を指示して、ループさせます。
レイヤと色を変えてます。線種と線幅も指示しようと思えば簡単に出来ますがここではしていません。
// リンクその4
// リンク1の角度をどんどん変えて作図させます
#VAR
 dmy1 = "---リンク(1)---"  ;dmy1
 px1 = 0    ;*位置X
 py1 = 0    ;*位置Y
 pa1s= 0    ;*開始角度[°]
 pa1e=45    ;*終了角度[°]
 pa1n= 5    ;*角度分割数
 ll1 =50    ;*リンク長さ
 lw1 =10    ;*リンク幅
 dmy2 = "---リンク(2)---"  ;dmy2
 px2      ;位置X
 py2      ;位置Y
 pa2      ;角度[°]
 ll2 =80    ;*リンク長さ
 lw2 =15    ;*リンク幅
 // 作業用
 n
 lay
 col
 pa1
 no
 px
 py
 ll
 lw
 pan
 w1
 w2
 w3
 w4
 w5
 w6
 w7
 w8

#DRAW
 CAL n = 0
 CAL lay = 0
 CAL col = 1
 CAL pa1 = pa1s
 #WHILE ( n <= pa1n )
  LAYER lay
  PEN col,SetLineLtp1,SetLineWid1
  #GOTO *DRAW1
*RET
  CAL lay = lay + 1
  #IF (lay > 15)
    CAL lay = 0
  #END
  CAL col = col + 1
  #IF (col > 8)
    CAL col = 1
  #END
  CAL pa1 = pa1 + (pa1e - pa1s)/pa1n
  CAL n = n + 1
 #END

 #EXIT


// リンク2本を作図
*DRAW1
 CAL no = 1
 CAL pan = pa1/180.0*PI
 CAL px = px1
 CAL py = py1
 CAL ll = ll1
 CAL lw = lw1
 #GOTO *LINKDRAW
*RET1
 CAL w1 = ll1*Sin(pan)
 CAL w2 = ASIN(w1/ll2)
 CAL w3 = -(pan + w2)
 CAL pa2 = w3*180.0/PI

 CAL no = 2
 CAL px2 = px1 + ll1*Cos(pan)
 CAL py2 = py1 + ll1*Sin(pan)
 CAL pan = (pa1+pa2)/180.0*PI
 CAL px = px2
 CAL py = py2
 CAL ll = ll2
 CAL lw = lw2
 #GOTO *LINKDRAW
*RET2
 #GOTO *RET


// リンク1本を作図
//  no = 1、2
*LINKDRAW
 CAL w1 = px
 CAL w2 = py
 CAL w3 = lw/2.0
 CAL w4 = pan + 0.5*PI
 CAL w5 = pan + 1.5*PI
 ARC w1,w2,w3,w4,w5

 CAL w1 = px
 CAL w2 = py + lw/2.0
 CAL w3 = px + ll
 CAL w4 = w2
 GETREV w5,w6, w1,w2,px,py,pan
 GETREV w7,w8, w3,w4,px,py,pan
 LINE w5,w6,w7,w8

 CAL w1 = px
 CAL w2 = py - lw/2.0
 CAL w3 = px + ll
 CAL w4 = w2
 GETREV w5,w6, w1,w2,px,py,pan
 GETREV w7,w8, w3,w4,px,py,pan
 LINE w5,w6,w7,w8

 CAL w3 = px + ll
 CAL w4 = py
 GETREV w1,w2, w3,w4,px,py,pan
 CAL w3 = lw/2.0
 CAL w4 = pan + 1.5*PI
 CAL w5 = pan + 0.5*PI
 ARC w1,w2,w3,w4,w5

 #IF ( no == 1 )
  #GOTO *RET1
 #END
 #GOTO *RET2

20080928d

こういうのを書いてみると、ついつい、大学生時代を思い出してしまいます。研究室はメカ的、ロボット的なことをするトコロでした。私はファジィの勉強をしたかったのですが研究室に入れずに別のところを探していると、クラブの先輩がいた研究室に半ば強制的に?入ったんですが、そこが、そういうトコロでした。そこでは、Z80CPUを8個とか16個とかを並列に接続(ハイパーキューブ)して画像処理をするような研究もしてましたが、もうネタ切れなので、という事で、「Occam」というプログラミング言語を使った並列処理プログラムを作りましょうという事になり。で、何のプログラム?って事で、ロボットアームの、みたいな話になりました。まぁ、動かす実際のモノが無かったのでパソコン内だけでの話だったんですが〜
各ノード単位で並列計算させて同期させて最終位置計算、みたいな。6軸想定しているとなんだか混乱〜 ラグランジュ式も解けないんで1つ制限入れて。まぁ、このロボット制御をファジィ制御させる、というネタがある事は分ってましたが、敢えて無視しちゃったりして。

[Jw_cad] リンク機構3

続きです。

リンクが自由に動ける状態ですので、リンク1の始点とリンク2の終点が水平線上にある、と考えます。動きに制限をつけるわけですね。メカ的には、リンク1がクランク、リンク2がコンロッドで、リンク2の終点位置がスライダーになっているという感じですね。

// リンクその3
// リンク2の終点に制限を入れる事を考えます
// リンク1の位置Yと同じになるようにします
//  =リンク2の角度を算出
#VAR
 dmy1 = "---リンク(1)---"  ;dmy1
 px1 = 0    ;*位置X
 py1 = 0    ;*位置Y
 pa1 = 0    ;*角度[°]
 ll1 =50    ;*リンク長さ
 lw1 =10    ;*リンク幅
 dmy2 = "---リンク(2)---"  ;dmy2
 px2      ;位置X
 py2      ;位置Y
 pa2      ;角度[°]
 ll2 =80    ;*リンク長さ
 lw2 =15    ;*リンク幅
 // 作業用
 no
 px
 py
 ll
 lw
 pan
 w1
 w2
 w3
 w4
 w5
 w6
 w7
 w8

#DRAW
 LAYER SetLineLay1  // 外形線
 PEN SetLineCol1,SetLineLtp1,SetLineWid1

 CAL no = 1
 CAL pan = pa1/180.0*PI
 CAL px = px1
 CAL py = py1
 CAL ll = ll1
 CAL lw = lw1
 #GOTO *LINKDRAW
*RET1
 CAL w1 = ll1*Sin(pan)
 CAL w2 = ASIN(w1/ll2)
 CAL w3 = -(pan + w2)
 CAL pa2 = w3*180.0/PI

 CAL no = 2
 CAL px2 = px1 + ll1*Cos(pan)
 CAL py2 = py1 + ll1*Sin(pan)
 CAL pan = (pa1+pa2)/180.0*PI
 CAL px = px2
 CAL py = py2
 CAL ll = ll2
 CAL lw = lw2
 #GOTO *LINKDRAW
*RET2
 #EXIT


// リンク1本を作図
//  no = 1、2
*LINKDRAW
 CAL w1 = px
 CAL w2 = py
 CAL w3 = lw/2.0
 CAL w4 = pan + 0.5*PI
 CAL w5 = pan + 1.5*PI
 ARC w1,w2,w3,w4,w5

 CAL w1 = px
 CAL w2 = py + lw/2.0
 CAL w3 = px + ll
 CAL w4 = w2
 GETREV w5,w6, w1,w2,px,py,pan
 GETREV w7,w8, w3,w4,px,py,pan
 LINE w5,w6,w7,w8

 CAL w1 = px
 CAL w2 = py - lw/2.0
 CAL w3 = px + ll
 CAL w4 = w2
 GETREV w5,w6, w1,w2,px,py,pan
 GETREV w7,w8, w3,w4,px,py,pan
 LINE w5,w6,w7,w8

 CAL w3 = px + ll
 CAL w4 = py
 GETREV w1,w2, w3,w4,px,py,pan
 CAL w3 = lw/2.0
 CAL w4 = pan + 1.5*PI
 CAL w5 = pan + 0.5*PI
 ARC w1,w2,w3,w4,w5

 #IF ( no == 1 )
  #GOTO *RET1
 #END
 #GOTO *RET2

20080928c

[Jw_cad] リンク機構2

続きです。

次に、リンク1の終点位置からリンク2を作図することを考えます。リンク1の終点=リンク2の始点 の位置の算出をして、傾き角度は、リンク1の角度からどれだけ傾けるのかを指定するようにして、作図させます。

// リンクその2
// まずはリンクの棒2本を作図することを考えます
#VAR
 dmy1 = "---リンク(1)---"  ;dmy1
 px1 = 0    ;*位置X
 py1 = 0    ;*位置Y
 pa1 = 0    ;*角度[°]
 ll1 =50    ;*リンク長さ
 lw1 =10    ;*リンク幅
 dmy2 = "---リンク(2)---"  ;dmy2
 px2      ;位置X
 py2      ;位置Y
 pa2 = 0    ;*角度[°]
 ll2 =80    ;*リンク長さ
 lw2 =15    ;*リンク幅
 // 作業用
 no
 px
 py
 ll
 lw
 pan
 w1
 w2
 w3
 w4
 w5
 w6
 w7
 w8

#DRAW
 LAYER SetLineLay1  // 外形線
 PEN SetLineCol1,SetLineLtp1,SetLineWid1

 CAL no = 1
 CAL pan = pa1/180.0*PI
 CAL px = px1
 CAL py = py1
 CAL ll = ll1
 CAL lw = lw1
 #GOTO *LINKDRAW
*RET1
 CAL no = 2
 CAL px2 = px1 + ll1*Cos(pan)
 CAL py2 = py1 + ll1*Sin(pan)
 CAL pan = (pa1+pa2)/180.0*PI
 CAL px = px2
 CAL py = py2
 CAL ll = ll2
 CAL lw = lw2
 #GOTO *LINKDRAW
*RET2
 #EXIT


// リンク1本を作図
//  no = 1、2
*LINKDRAW
 CAL w1 = px
 CAL w2 = py
 CAL w3 = lw/2.0
 CAL w4 = pan + 0.5*PI
 CAL w5 = pan + 1.5*PI
 ARC w1,w2,w3,w4,w5

 CAL w1 = px
 CAL w2 = py + lw/2.0
 CAL w3 = px + ll
 CAL w4 = w2
 GETREV w5,w6, w1,w2,px,py,pan
 GETREV w7,w8, w3,w4,px,py,pan
 LINE w5,w6,w7,w8

 CAL w1 = px
 CAL w2 = py - lw/2.0
 CAL w3 = px + ll
 CAL w4 = w2
 GETREV w5,w6, w1,w2,px,py,pan
 GETREV w7,w8, w3,w4,px,py,pan
 LINE w5,w6,w7,w8

 CAL w3 = px + ll
 CAL w4 = py
 GETREV w1,w2, w3,w4,px,py,pan
 CAL w3 = lw/2.0
 CAL w4 = pan + 1.5*PI
 CAL w5 = pan + 0.5*PI
 ARC w1,w2,w3,w4,w5

 #IF ( no == 1 )
  #GOTO *RET1
 #END
 #GOTO *RET2

20080928b

[Jw_cad] リンク機構1

先日の、菱形の作図の話ですが、
Jw_cad 作者さんのホームページの掲示板を見ると、私のこのブログの記事を見られたようですね。結構マイナーなブログだと思いますが、よく見つけたなぁ〜等と思ったりして。Script!用スクリプトプログラムをそのまま引用されていましたが、多分、なんなんだこれは?って思われた方は結構多いと思います。線記号変形や外部変形ではありませんしね。

そのあと、その繋がりだと思いますが、somemさんのブログでも話題にされましたので、例によって、Script!でのリンク機構作図を考えて見ます。

まずは、リンク1本の作図を考えます。
単純に、長円を作図するとします。
但し、位置、角度の考慮をしておきます。
// リンクその1
// まずはリンクの棒1本を作図することを考えます
// 長円を描く事を考えます
#VAR
 px = 0    ;*位置X
 py = 0    ;*位置Y
 pa = 0    ;*角度[°]
 ll =50    ;*リンク長さ
 lw =10    ;*リンク幅
 pan
 w1
 w2
 w3
 w4
 w5
 w6
 w7
 w8

#DRAW
 LAYER SetLineLay1  // 外形線
 PEN SetLineCol1,SetLineLtp1,SetLineWid1

 CAL pan = pa/180.0*PI

 CAL w1 = px
 CAL w2 = py
 CAL w3 = lw/2.0
 CAL w4 = pan + 0.5*PI
 CAL w5 = pan + 1.5*PI
 ARC w1,w2,w3,w4,w5

 CAL w1 = px
 CAL w2 = py + lw/2.0
 CAL w3 = px + ll
 CAL w4 = w2
 GETREV w5,w6, w1,w2,px,py,pan
 GETREV w7,w8, w3,w4,px,py,pan
 LINE w5,w6,w7,w8

 CAL w1 = px
 CAL w2 = py - lw/2.0
 CAL w3 = px + ll
 CAL w4 = w2
 GETREV w5,w6, w1,w2,px,py,pan
 GETREV w7,w8, w3,w4,px,py,pan
 LINE w5,w6,w7,w8

 CAL w3 = px + ll
 CAL w4 = py
 GETREV w1,w2, w3,w4,px,py,pan
 CAL w3 = lw/2.0
 CAL w4 = pan + 1.5*PI
 CAL w5 = pan + 0.5*PI
 ARC w1,w2,w3,w4,w5

図は、水平で作図することを考えて、座標値は写像計算(GETREV)で回転させて算出する、角度は回転角度を足す、としておけば、それほど迷わないと思います。
20080928a

[Jw_cad] 菱形の作図をしたい

Jw_cad 作者さんのホームページの掲示板で
ひし形の辺の長さを変えること無く対角線を任意に変更出来て外形の変化の軌跡が図面に落とせたら助かります。(今は円の交点を拾ってひし形の変形を書いてますが、とても面倒です)
という要望がありました。
こういった特殊なコマンドが標準コマンドに組み込まれるのかどうかは「?」ですし、そういった特殊な作図は外部変形プログラムを作ってしまう、という手法が一般的かと思いますが、
これを、当方の「Script!」で作図することを考えてみます。
http://afsoft.jp/program/p05.html

まずは、菱形の作図です。
// 菱形その1
#VAR
 l = 100    ;*辺の長さ
 h = 50    ;*中心からの高さ
 x       ;x
 w1
 w2
 w3
 w4

#DRAW
 LAYER SetLineLay1  // 外形線
 PEN SetLineCol1,SetLineLtp1,SetLineWid1

 CAL x = Sqrt(l*l - h*h)

 CAL w1 = x
 CAL w2 = 0
 CAL w3 = 0
 CAL w4 = h
 LINE w1,w2,w3,w4

 CAL w1 = w3
 CAL w2 = w4
 CAL w3 =-x
 CAL w4 = 0
 LINE w1,w2,w3,w4

 CAL w1 = w3
 CAL w2 = w4
 CAL w3 = 0
 CAL w4 =-h
 LINE w1,w2,w3,w4

 CAL w1 = w3
 CAL w2 = w4
 CAL w3 = x
 CAL w4 = 0
 LINE w1,w2,w3,w4
これは単純に1つの菱形を描きます。

次に、菱形を何個も描く事を考えます。
高さの開始の値と、終了の値、その間を何分割するか、を入力して作図するようにしてみます。
// 菱形その2
#VAR
 l = 100    ;*辺の長さ
 h1 = 10    ;*開始高さ
 h2 = 80    ;*終了高さ
 n = 10    ;*分割数
 h
 x
 i
 w1
 w2
 w3
 w4

#DRAW
 #IF (l <= 0)
  BEEP
  MESSAGE "入力エラー","辺の長さは正の数値で入力して下さい","",0,0
  #EXIT 
 #END
 #IF ((l*l - h1*h1) < 0)
  BEEP
  MESSAGE "入力エラー","開始高さを再入力して下さい","",0,0
  #EXIT 
 #END
 #IF ((l*l - h2*h2) < 0)
  BEEP
  MESSAGE "入力エラー","終了高さを再入力して下さい","",0,0
  #EXIT 
 #END

 LAYER SetLineLay1  // 外形線
 PEN SetLineCol1,SetLineLtp1,SetLineWid1

 CAL h = h1
 CAL i = 0
 #WHILE (i <= n)
  CAL x = Sqrt(l*l - h*h)

  CAL w1 = x
  CAL w2 = 0
  CAL w3 = 0
  CAL w4 = h
  LINE w1,w2,w3,w4

  CAL w1 = w3
  CAL w2 = w4
  CAL w3 =-x
  CAL w4 = 0
  LINE w1,w2,w3,w4

  CAL w1 = w3
  CAL w2 = w4
  CAL w3 = 0
  CAL w4 =-h
  LINE w1,w2,w3,w4

  CAL w1 = w3
  CAL w2 = w4
  CAL w3 = x
  CAL w4 = 0
  LINE w1,w2,w3,w4

  CAL h = h + (h2-h1)/n
  CAL i = i + 1
 #END
これを実行すると・・・
20080925a
となりますので、JWWクリップボード出力をして、JWW側で[貼付]をクリックして配置点を指示します。
20080925b
という感じでしょうか?

Script!18&ScriptRunner Ver.1.12

当方のサイトフリーウェアコーナーに、
Script! 18 (LHA自己解凍圧縮;558KB) すくりぷと(もどき)を作成しておき、それを解釈させて図形を作成し、BMPやDXF等の出力を行います。テスト版なので注意!EXEのみ。マウスホイール対応、文字列処理命令等追加、音声合成機能追加(2008.01.11) #IF文拡張・#WHILE文追加(2008/07/16)

当方のサイトシェアウェアコーナーに「ScriptRunner Ver.1.12」というツールをアップしました。
スクリプトファイルを実行し、BMP形式/EMF形式/DXF形式/PCES形式/JWS形式で保存したり、[→JWW]ボタンをクリックして JWWクリップボードに転送し、JWWで[貼付]を行うと JWWでその図形を作図することが出来ます。同様に、[→AutoCAD]ボタンをクリックして AutoCADのコマンドライン上で[貼付]を行うとUCS原点上に図形を作図します。機能的には「Script!」と同様です。
「フォルダ/ファイル」タブでは、選択したフォルダ内のスクリプトファイルをダブルクリックする事によって実行する事が出来ます。「登録リスト」タブでは、自分の好きなようにスクリプトファイルを登録することが出来ます。タブは26種類あり、種類毎に分類する事が出来ます。「各種設定」では、本ソフトを「Script!」と同じフォルダに入れておくと「Script!」の設定を読み書きする事が出来ます。
※試用版では、タブ内のファイルは最大10ファイル迄、連続使用時間は3分迄に制限されます。それ以外については正規版と同じです。
※試用版です。
Ver.1.12 2008/07/16 追加変更
・Script!18 にてスクリプト仕様を拡張
 ・#IF 文のネスト対応
 ・#IF 〜 #ELSE 〜 #END 文の対応
 ・#WHILE 〜 #END 文の対応

ScriptRunner

という訳で、Script! での#IF文を多少拡張しました、という件と、#WHILE文によるループ対応を追加しました、という件の修正です。Script!3D にも次のバージョンに組み込みます。Script!3Dの次のバージョンはもうちょっと先です。

垂心・重心・外心・オイラー線

Jw_cad 作者さんのホームページの掲示板にて、
垂心・重心・外心・オイラー線、の話がありましたので
当方の「Script!17」で作ってみました。
#VAR
 x1 = 10  ;*点1X座標
 y1 = 0  ;*点1Y座標
 x2 = 100 ;*点2X座標
 y2 = 0  ;*点2Y座標
 x3 = 20  ;*点3X座標
 y3 = 50  ;*点3Y座標
 ra1   ;*角度1[°]
 ra2   ;*角度2[°]
 // 作業用
 w1
 w2
 an1   // 点1〜点2の角度
 an2   // 点2〜点3の角度
 an3   // 点3〜点1の角度
 ln1   // 点1〜点2の長さ
 ln2   // 点2〜点3の長さ
 ln3   // 点3〜点1の長さ
 wx1
 wy1
 wx2
 wy2
 wx3
 wy3
 wx4
 wy4
 rr
 rx1
 ry1
 rx2
 ry2
 rx3
 ry3
 ran1
 ran2
 
#DRAW
 LAYER SetLineLay1  // 外形線
 PEN SetLineCol1,SetLineLtp1,SetLineWid1

 // 三角形を描く
 LINE x1,y1,x2,y2
 LINE x2,y2,x3,y3
 LINE x3,y3,x1,y1

 CAL w1 = x2-x1
 CAL w2 = y2-y1
 GETANGLE an1,w1,w2
 CAL w1 = x3-x2
 CAL w2 = y3-y2
 GETANGLE an2,w1,w2
 CAL w1 = x1-x3
 CAL w2 = y1-y3
 GETANGLE an3,w1,w2
 GETDIST ln1,x1,y1,x2,y2
 GETDIST ln2,x2,y2,x3,y3
 GETDIST ln3,x3,y3,x1,y1

 CAL rr = (ln1+ln2+ln3)/3/50

 LAYER SetLineLay7  // 補助線
 PEN 6,SetLineLtp7,SetLineWid7
 // 垂心
 CAL w1 = 200
 CAL wx1 = x1 + w1*Cos(an2-0.5*PI)
 CAL wy1 = y1 + w1*Sin(an2-0.5*PI)
 CAL wx2 = x1 + w1*Cos(an2+0.5*PI)
 CAL wy2 = y1 + w1*Sin(an2+0.5*PI)
 LINE wx1,wy1,wx2,wy2

 CAL wx3 = x2 + w1*Cos(an3-0.5*PI)
 CAL wy3 = y2 + w1*Sin(an3-0.5*PI)
 CAL wx4 = x2 + w1*Cos(an3+0.5*PI)
 CAL wy4 = y2 + w1*Sin(an3+0.5*PI)
 LINE wx3,wy3,wx4,wy4

 GETCRSLL w1,rx1,ry1,wx1,wy1,wx2,wy2, wx3,wy3,wx4,wy4
 CIRCLE rx1,ry1,rr

 // 重心
 PEN 4,SetLineLtp7,SetLineWid7
 CAL wx1 = x1
 CAL wy1 = y1
 CAL wx2 = (x2 + x3)/2
 CAL wy2 = (y2 + y3)/2
 LINE wx1,wy1,wx2,wy2

 CAL wx3 = x2
 CAL wy3 = y2
 CAL wx4 = (x1 + x3)/2
 CAL wy4 = (y1 + y3)/2
 LINE wx3,wy3,wx4,wy4

 GETCRSLL w1,rx2,ry2,wx1,wy1,wx2,wy2, wx3,wy3,wx4,wy4
 CIRCLE rx2,ry2,rr

 // 外心
 PEN 3,SetLineLtp7,SetLineWid7
 CAL w1 = 200
 CAL wx1 = (x1 + x2)/2
 CAL wy1 = (y1 + y2)/2
 CAL wx2 = wx1 + w1*Cos(an1+0.5*PI)
 CAL wy2 = wy1 + w1*Sin(an1+0.5*PI)
 LINE wx1,wy1,wx2,wy2

 CAL wx3 = (x2 + x3)/2
 CAL wy3 = (y2 + y3)/2
 CAL wx4 = wx3 + w1*Cos(an2+0.5*PI)
 CAL wy4 = wy3 + w1*Sin(an2+0.5*PI)
 LINE wx3,wy3,wx4,wy4

 GETCRSLL w1,rx3,ry3,wx1,wy1,wx2,wy2, wx3,wy3,wx4,wy4
 CIRCLE rx3,ry3,rr

 // オイラー線
 LAYER SetLineLay5  // 想像線
 PEN 8,SetLineLtp5,SetLineWid5
 LINE rx1,ry1, rx2,ry2
 LINE rx2,ry2, rx3,ry3

 CAL w1 = rx2-rx1
 CAL w2 = ry2-ry1
 GETANGLE ran1,w1,w2
 CAL w1 = rx3-rx2
 CAL w2 = ry3-ry2
 GETANGLE ran2,w1,w2
 CAL ra1 = ran1*180/PI
 CAL ra2 = ran2*180/PI
 // この2つの角度が同じであれば、オイラー線は1直線上にあると言える

点座標を取り込むことは出来ませんので、座標値を手入力する必要はあります。最初に、3点を結ぶ直線3つで三角形を描かせています。そして取りあえず、各点間の角度と距離を計算しています。
垂心は、点から垂直に降ろした線の交点だから、辺に垂直=辺の角度+90°で頂点を通る直線の交点ですね。重心は、頂点から辺の中点への線の交点との事で、2点間の中点は、(x1+x2)/2 , (y1+y2)/2 。で、交点を出してます。外心は、中点からの垂線の交点のようだから、その交点を出してます。
各点には、円を描かせてます。
垂心〜重心、重心〜外心を結ぶ線を描画しています。これがオイラー線ですね。双方の角度が同じであれば、一直線上に3点が並ぶ、という事ですね。
scr20080611

Script! 17&ScriptRunner Ver.1.11

当方のサイトフリーウェアコーナーに、
Script! 17 (LHA自己解凍圧縮;556KB) すくりぷと(もどき)を作成しておき、それを解釈させて図形を作成し、BMPやDXF等の出力を行います。テスト版なので注意!EXEのみ。マウスホイール対応、文字列処理命令等追加、音声合成機能追加(2008.01.11) 変数諸元名に「線種」「線色」「任意色」「ACAD色」を追加(2008.04.05)

当方のサイトシェアウェアコーナーに「ScriptRunner Ver.1.11」というツールをアップしました。
スクリプトファイルを実行し、BMP形式/EMF形式/DXF形式/PCES形式/JWS形式で保存したり、[→JWW]ボタンをクリックして JWWクリップボードに転送し、JWWで[貼付]を行うと JWWでその図形を作図することが出来ます。同様に、[→AutoCAD]ボタンをクリックして AutoCADのコマンドライン上で[貼付]を行うとUCS原点上に図形を作図します。機能的には「Script!」と同様です。
「フォルダ/ファイル」タブでは、選択したフォルダ内のスクリプトファイルをダブルクリックする事によって実行する事が出来ます。「登録リスト」タブでは、自分の好きなようにスクリプトファイルを登録することが出来ます。タブは26種類あり、種類毎に分類する事が出来ます。「各種設定」では、本ソフトを「Script!」と同じフォルダに入れておくと「Script!」の設定を読み書きする事が出来ます。
※試用版では、タブ内のファイルは最大10ファイル迄、連続使用時間は3分迄に制限されます。それ以外については正規版と同じです。
※試用版です。

ScriptRunner

双方とも、微調整です。

ScriptRunner Ver.1.10

当方のサイトシェアウェアコーナーに「ScriptRunner Ver.1.10」というツールをアップしました。
スクリプトファイルを実行し、BMP形式/EMF形式/DXF形式/PCES形式/JWS形式で保存したり、[→JWW]ボタンをクリックして JWWクリップボードに転送し、JWWで[貼付]を行うと JWWでその図形を作図することが出来ます。同様に、[→AutoCAD]ボタンをクリックして AutoCADのコマンドライン上で[貼付]を行うとUCS原点上に図形を作図します。機能的には「Script!」と同様です。
「フォルダ/ファイル」タブでは、選択したフォルダ内のスクリプトファイルをダブルクリックする事によって実行する事が出来ます。「登録リスト」タブでは、自分の好きなようにスクリプトファイルを登録することが出来ます。タブは26種類あり、種類毎に分類する事が出来ます。「各種設定」では、本ソフトを「Script!」と同じフォルダに入れておくと「Script!」の設定を読み書きする事が出来ます。
※試用版では、タブ内のファイルは最大10ファイル迄、連続使用時間は3分迄に制限されます。それ以外については正規版と同じです。
※試用版です。
Ver.1.10 2008/05/23 追加変更
・ArcSin、ArcCos の修正

ScriptRunner

Script!3D近況6

現在作成中の「Script!3D」の近況です。
現状のものをダウンロードできるようにしておきました。
興味のある方はどうぞ。
http://afsoft.jp/program/p09.html
変換マトリックスを使って面を想定し、その面に沿った形で、
直線ソリッド(直線と投影面への壁になるような面)、円周ソリッド(円・円弧・楕円・楕円弧と投影面への壁になるような面(円柱側面))、円楕円ソリッド、扇形ソリッド、弓形ソリッド、円環ソリッド(1,2)の作図が出来るようになっています。

面上の線円周ソリッドテスト
scr20080424a

面上の円楕円ソリッドテスト
scr20080424b

面上の扇形ソリッドテスト
scr20080424c

面上の弓形ソリッドテスト
scr20080424d

面上の円環ソリッド1テスト
scr20080424e

面上の円環ソリッド2テスト
scr20080424f

Script!にあった、POLYGON は円と同じなので廃止です。
あと、クロソイド曲線、ベジェ曲線、2次Bスプライン曲線、3次Bスプライン曲線の作図を追加する予定で、これが出来上がったら、Script!3D Freeware版は終了です。そのあと、Script!3D Shareware版の開発へ移行する予定です。

Script!3D近況5

現在作成中の「Script!3D」の近況です。
現状のものをダウンロードできるようにしておきました。
興味のある方はどうぞ。
http://afsoft.jp/program/p09.html
変換マトリックスを使って面を想定し、その面に沿った形で、
楕円、楕円弧、長方形、三角面、四角面の作図が出来るようになっています。

Scr20080421a面上の楕円・楕円弧のテスト

Scr20080421b面上の長方形のテスト

Scr20080421c面上の三角面のテスト

Scr20080421d面上の四角面のテスト

Script!3Dの近況4

現在作成中の「Script!3D」の近況です。
scr20080416a
スクリプトを実行してDXF出力をして、スケッチアップでインポートします。
scr20080416b

現状のものをダウンロードできるようにしておきました。
興味のある方はどうぞ。
http://afsoft.jp/program/p09.html
その変換マトリックスを使って面を想定し、その面に沿った形で、
線、円、円弧の作図が出来るようになっています。
LINE3Dは LINE2Dに加えて、Z座標(高さ)を与える事が出来るようになっています。あとまた少し追加する予定です。

Script!3D 近況3

現在作成中の「Script!3D」の近況です。
scr20080416a
スクリプトを実行してDXF出力をして、スケッチアップでインポートします。
scr20080416b

画面だけだと何なので、取りあえず現状のものをダウンロードできるようにしておきました。興味のある方はどうぞ。一番下の<S3>をクリックして下さい。
http://afsoft.jp/program/p09.html
Script!にあった2次元関連は、ばさっと消えています。
変換マトリックス関連の命令を追加しました。

その変換マトリックスを使って面を想定し、その面に沿った形で、線や円の作図を追加する予定です。そこまではフリーで出します。そのあと、3D図形の作図命令を少し追加してシェアウェアとする予定です。その場合は、フリーウェア版とシェアウェア版の2つがある状態となる予定です。いつ出来るかは現在未定です。

Script!3D 近況2

現在作成中のソフト「Script!3D」の近況です。
scr20080408a

スクリプトの命令で、
図形要素の変更、削除、削除したものを復活、図形要素数の取得、を出来るようにしました。また、直線、三角面、四角面を作図する際、その図形要素番号を出力できるようにしました。

Script!3D 近況

先日の「エイプリルフール」ネタで書いた、
現在作成中のソフト「Script!3D」の近況です。

現在は、こんな感じです。

scr20080408a
スクリプトを書いて、実行をし、別画面に3Dモデルが表示されます。その画面で、3DFACEで構成された3D-DXFファイル、STLファイル、OBJファイル、VRML(2.0)ファイル、BMPファイルを保存することが出来ます。STL/OBJの場合には3D-FACEしか出ません。大抵は、3D-DXFになると思います。
なお、Script!にあったような、AutoCAD/JWW (Jw_cad) へのクリップボード出力のような機能はありません。

Google SketchUp6 でインポートします。

scr20080408b
レイヤ:0〜255
色  :1〜255 (AutoCAD色です)
線種・線幅はありません。
現在、3次元座標をもつ直線、三角面、四角面、のみです。

これから幾つか追加していこうと思っていますが、全てこの3つにばらして登録するつもりです。余り高機能にはできないと思いますけれど、それなりに納得できる状態になったら、シェアウェアとして公開する予定です。

Script!キー溝を SketchUpで作図

Script!キー溝を SketchUpで作図

Script! JIS製図用コマンド
『キー及びキー溝 JIS B 1301-1996』スクリプトファイル
http://afsoft.jp/program/p09.html
http://afsoft.jp/program/p09_008.html
から、スケッチアップへ立ち上げてみます。

穴にキー溝を入れる場合です。

keyway1 を開いて
作図タイプ:ハブ(穴)
キーの呼び:10×8
丸め   :0.3
で実行し、DXF保存します。
スケッチアップを起動し、保存したファイル keyway1.dxf をインポートします。
skp20080327a
線1本で繋いで面を作り、プッシュ/プルで立体にしておきます。
skp20080327b
コンポーネント作成を行います。
skp20080327c
コンポーネント画面から保存を行います。スケッチアップデータ(SKP形式ファイル)は下記。
http://afsoft.jp/skp_test/keyway1.skp
円筒があるとします。キー溝をつける位置にガイドを入れておきます。
skp20080327d
コンポーネント画面(又はインポート)からキー溝コンポーネントを指定して、円筒の上面でガイドの位置に配置します。
skp20080327e
回転ツールで配置したコンポーネントを回転します。(キー溝の中央上点をガイドに合わせます)
skp20080327f
コンポーネント編集をして、プッシュ/プルで上面を指定し下面まで延ばします。上面を再度上面まで引っ張ります。(キー溝コンポーネントの下面を指定するのが面倒なので。下面を指定出来るのであれば上面を引っ張る操作は不要です)
skp20080327g
全て選択して、交差を行って、コンポーネントを分解します。
skp20080327h
不要な部分を消します。
skp20080327i
削除ツールで [Shift]キーを押しながら、キー溝の線をクリックして整えます。
skp20080327j

Script!キーを SketchUpで作図

Script! JIS製図用コマンド
『キー及びキー溝 JIS B 1301-1996』スクリプトファイル
http://afsoft.jp/program/p09.html
http://afsoft.jp/program/p09_008.html
から、スケッチアップへ立ち上げてみます。

今回は3面図から立体にしてみます。

まずは一番簡単な、ねじ用穴無しの平行キーを描いてみます。
key1a(上面図) を開いて
キー端部:片丸形、呼び:10×8、長さ:50
で実行し、DXF保存します。
次に、Key1b(正面図) を開いて、同じく
キー端部:片丸形、呼び:10×8、長さ:50、
面取量:0.5
で実行し、DXF保存します。
次に、Key1c(側面図) を開いて、同様に、
キー端部:片丸形、呼び:10×8、長さ:50
で実行し、DXF保存します。各諸元値(パラメータ)は必ず同じにして下さい。スケッチアップを起動し、key1a.dxfをインポートし、key1b.dxfをインポートし、key1c.dxfをインポートします。key1b、key1c は自動的にコンポーネント化されています。key1b(正面図)を選択し、回転ツールで縦に回転して上面図に付くよう回転します。key1c(側面図)も同様に回転して、移動ツールで横にくっつけます。
skp20080326a
底面にある上面図を「ツール」→「ユーティリティ」→「面の作成」をします。正面図・側面図はコンポーネント編集をした中で同様に面の作成を行います。側面図は円側の線を選択して移動ツールで上面図の端点位置まで移動し、もう片方の線を移動ツールで面取りの位置へ移動し、面を反転して内側を青色にしておきます。
skp20080326b
上面図の長い方の線を選択しておいてオフセットツールで面取りに合わせオフセットします。
skp20080326c
移動ツールで上面図を下の面取り位置まで移動し、更に、上の面取り位置までコピーします。
skp20080326d
2つのコンポーネントを分解します。上面図のオフセット内側面を選択して、移動ツールで Altキーを押しながら上へ面取り位置に相当する所まで持ち上げます。分りにくければガイドを利用して交点を作って下さい。下の方も同様に行います。
skp20080326e
正面図の不要な線を削除します。円側は線を1本引いて面を作り、半円を残し長方形部分を消します。その半円部をプッシュ/プルで持ち上げて上部とつなげます。不要な面も出来ますので、そのエッジの線を消して面を消します。最後の長方形の面を作図し、必要な箇所の面の反転・削除ツールで[Shift]キーを押しながらエッジ部分をクリックして整えて出来上がりです。コンポーネント作成をして保存しておきます。
skp20080326f
スケッチアップデータ(SKP形式ファイル)は下記。
http://afsoft.jp/skp_test/key1.skp

そのほか、ガイド(補助線)を描いて作図していく方法、というパターンもあるかもしれませんし(※一度にかなり多くのガイドを描くと分りにくくなってしまいますので注意)、
skp20080326g
おおまかにプッシュ/プルを行った後に、プラグインの利用(この場合は面取りをしたいのでプラグイン「Chamfer_Along_Path.rb」の利用)を行う等の各処理を行って不要な部分の削除等の補正を行う方法、というパターンもあると思います。

Script!センタ穴を SketchUpで作図

Script! JIS製図用コマンド
『センタ穴 JIS B 1011-1987』スクリプトファイル
http://afsoft.jp/program/p09.html
http://afsoft.jp/program/p09_007.html
から、スケッチアップへ立ち上げてみます。

60°センタ穴を描いてみます。
Center60A を開いて
呼び d = 10、
で実行し、DXF保存し、スケッチアップでインポートします。
横線を消し、中心線を描いて半分状態にして、上の線を描いて、センタ穴・半分の面を作ります。縦になるよう回転移動します。上に塗り潰し円を描いて塗り潰し面を消します。残った円を選択してフォローミーで回転させます。上の円の面を消します。外側が白くなっていますので、内側が白くなるよう面を反転しておきます。で、コンポーネント作成を行い、上の面が開口部となるようにして、コンポーネントの画面から保存します。
skp20080324a
スケッチアップデータ(SKP形式ファイル)は下記。
http://afsoft.jp/skp_test/center60a_10.skp

では、適当にシャフトを描いて、センタ穴を付けてみます。
skp20080324b

断面平面ツールで、断面を見てみます。
skp20080324c

スケッチアップでScript!穴の作図(続)

続きです。

で、ねじ部分をどう表現するか?についてですが、他と噛みあったりする部分は、取りあえず、半透明のマテリアルで表現するようにしておきます。ピッチや組立中心距離が合っていれば構わない、みたいな所もありますので。(よく分かりませんが)物理的なツール等を入れたりすると変わってくるとは思いますが取りあえず。

貫通タップは、スケッチアップで塗り潰し円を描いてプッシュ/プルするのが簡単だと思います。が、寸法値を本で探すのが面倒であれば、Script!で meneji1 を開いてDDXF保存しインポート、中心線を消して、面作成をして、プッシュ/プルする、或いは、スケッチアップで1から円を描いた方が綺麗だからという事で、meneji2 を開いてDXF保存しインポート、回転ツールで垂直に立てた後、断面を作ってフォローミーで回転体に、又は、円を2つ描いて内部の円と線を消して下へプッシュ/プルします。
で、外側以外の面を、マテリアルの半透明で塗ります。
こんな感じでしょうか?
作成したサンプル「10neji.skp」です。グループ化もコンポーネント化もしてません。後で不都合があるかもしれませんが、そのときはそのときで また考えます。最初は気楽に楽観的にモデリングを楽しんだ方がいいような気はします。
skp20080321a

次に、貫通しないタイプです。まずは Script!で meneji3 を開け、
径=10、深さ=20
完全ねじ部長さ=15、不完全ねじ部長さ=2
で作図し、DXF保存を行います。
スケッチアップでファイル→インポートし、横線を消して、横半分、中心線のはみ出し分を消し、上の開いている点間を線で結んで面を作ります。全選択して、回転ツールで縦向きになるよう回転させます。上面となる円を描いて塗り潰しを消します。
skp20080321b
半分にしているのは、360度回転させるので半分で十分だという事と、全てになっているとこの場合、横に線が入ってしまうので、それを避ける為です。拘らないのであれば後で非表示にしてもいいかもしれませんが。

その円を選択し、フォローミーで面を指定して面の回転体を作ります。まずは、内側から。
skp20080321c
再度、上面の円を選択して、フォローミーで外側の面の回転体を作ります。
skp20080321d
上面の内側の円塗り潰しを消します。半透明のマテリアルでねじ部を塗ります。外側も半透明になってしまうので、外側の面は白色で塗っておきます。
skp20080321e
コンポーネント作成を行います。名前・説明を記入し、「貼り付け平面」をクリックして原点を指定し、貼り付け先を任意にして、開口部にチェックし、[OK]。ウインドウ→コンポーネントでのモデル内のコンポーネントの箇所で右クリックして保存を行います。
作成したサンプル「10neji_20.skp」です。

おっと、キリ&ザグリを忘れてました。
これもキリ穴と同じようにしてコンポーネント化して保存します。
skp20080321f
作成したサンプル「10kiri20_20zaguri10.skp」です。

長円穴、円弧状長円穴は、同様に、面を作って随時 プッシュ/プルで という感じかと思います。

スケッチアップでScript!穴の作図

「Script! 穴の作図」http://afsoft.jp/program/p09_001.html
をスケッチアップで考えます。

まずは、キリ穴ですが、これの貫通タイプはスケッチアップで直方体の上面に塗り潰し円を描いて、反対側の面上までプッシュ/プルすれば出来ますので、その方が楽だと思います。

次に、貫通しないタイプです。まずは Script!で kiri3 を開け、
キリ径=10、深さ=20
で作図し、DXF保存を行います。
スケッチアップでファイル→インポートし、中心線を消して、横線を消して、上の開いている2点間を線で結ぶと面を作られます。全選択して、回転ツールで縦向きになるよう回転させます。上面となる円を描いてその円を選択し、フォローミーで面を指定して面の回転体を作ります。上面の塗り潰し円が残っていれば消して、コンポーネント作成を行います。名前・説明を記入し、「貼り付け平面」をクリックして原点を指定し、貼り付け先を任意にして、開口部にチェックし、[OK]。ウインドウ→コンポーネントでのモデル内のコンポーネントの箇所で右クリックして保存を行います。
作成したサンプル「10kiri_20.skp」です。
あとは、作成できたコンポーネントを選択して、面上でぺたぺた貼り付けでキリ穴が出来ます。自作したコンポーネントのファイルは、コンポーネント用フォルダの中に自作用フォルダを作って、その中にまとめておくと良いかもしれません。
skp20080320a

次にめねじ(ねじ穴;タップ穴)です。が、ねじ山をどうするかですが、想像するに、どうにかして螺旋の線を書かせ、ねじ山の面を描いてフォローミー、でしょうか?しかしそんな事をするとデータ量が凄い事になるのでしょう。テクニカルイラスト的なものであればそういうのもあるとは思いますが実際には余りそういう作図はしないのではないかという気はします。
(とりあえずテキトウに描いてみました:螺旋が粗いからかフォローミーではうまく行かず結局、1つずつねじ山を描いてましたのでかなり時間が掛かりました。これで 420KB程です)
skp20080320b
おっと、これは おねじだった。

Oリング取付溝でスケッチアップ

前回の続きで、今度は、Oリング取付溝をやってみます。
Script!で o_mizo1a を開き、
呼び番号 n = P50
すきま = 0.2、面取量 = 0.1、r = 0.2、
で作図、DXFファイル出力をして GSU でインポートします。この際、オプションで尺度の単位を「メートル」として読み込みます。mmで行うとR部分が小さすぎて面になってくれないからです。

運動側として作成します。
Oリング部分の上が開いていますので、線を引いて閉じておきます。また、フォローミーで回転体を作りたいので、補助的に線を描いて面にします。d3値が 50mm ですので半径だと 25mm ですから、メジャーツールで Ctrlを押した状態(「+」表示)でガイド作成出来ますが、Oリング取付溝の底辺から下へ25000mmの位置へガイドを作成します。ガイドは補助線みたいなもんですね。底辺に平行に25000mmの位置へ無限線なガイドを作成し、その線まで垂直に降ろして面を作ります。
skp20080319a
回転フォローミー用の円を描きます。位置出し用にガイドを描いておきます。
skp20080319b
フォローミーで回転体を作成します。先にOリング部分をやってます。
skp20080319c
尺度ツールで、角〜角をとって、0.01倍して、再度、0.1倍します。一度に 0.001倍に出来ないので2回に分けてます。メートル単位で読み込んでいましたので本来のmm単位にします。
skp20080319d
全選択して(ガイドも選択して)コンポーネント作成を行います。名前・説明を書いて、[貼り付け平面]をクリックし、原点位置・軸方向で指定。原点は大円の中心、軸方向で大円が水平になるよう指定しました。貼り付け先を「任意」にして[作成]ボタンをクリックします。
skp20080319e
メニュー「ウインドウ」→「コンポーネント」を開き、選択タブのモデル内に今作成したコンポーネントがありますので、それを右クリックしてポップアップメニューから「名前を付けて保存」を行い、o_mizo_p50 として保存します。

今回のSKPファイルは、下記です。
http://afsoft.jp/skp_test/o_mizo_p50.skp (222KB)

T溝と同じように作ろうとか思ってましたが、円筒面に配置しようとしてもうまく出来ないので、諦めました〜〜 ガイドをつけてコンポーネント作成・保存をしましたが、円の面のままだと位置出しが難しいので何かないといけないな、と。それが線などだと邪魔になっても困るし(レイヤを分けたとしても)、ガイドなら後で1発で消せますので、こういう風にしてみました。こういう事をする人は余り居ないかもしれませんけど〜

スケッチアップでT溝作図

Script!でT溝を作りましたので、スケッチアップで描かせてみます。
Script!で t_mizo1 を開き、
溝A=10、
その他適当に... で作図、DXFファイル出力をして GSU でインポート。
中心線を消して、上の部分に線を引っ張ると自動的に面になります。
状況にも依るとは思いますが、X-Y上の平面にT溝をつけるだろー、という事で、全選択をして、回転ツールで赤軸回りに下へ青軸上へ回転移動。T溝の面が立ちました。絵はマイナス側にあります。プッシュ・プルでとりあえず 10mm 押し出して立体化します。上面・前面・背面を消します。上の2つの線は残しておきます。
全選択して、コンポーネント作成を行います。
名前・説明を書いて、[貼り付け平面]をクリックし、原点位置・軸方向で指定。貼り付け先を「任意」にして、「開口部を作成する」にチェック。[作成]ボタンをクリックします。
メニュー「ウインドウ」→「コンポーネント」を開き、選択タブのモデル内に今作成したコンポーネントがありますので、それを右クリックしてポップアップメニューから「名前を付けて保存」を行い、t_mizo10 として保存します。
skp20080318a
新規状態で、長方体を描いた状態で、「ウインドウ」→「コンポーネント」から保存したフォルダを開いてSKPファイルを指定するか、「ファイル」→「インポート」でSKPファイルを指定で、作成したコンポーネントを配置します。
skp20080318b
skp20080318c
配置したあとは尺度コマンドで長さを変更出来ます。
skp20080318d
という風に平面途中に穴をあけたような感じにしたい場合には、これでもいいと思うんですが、面のこちら側からあちら側へ貫通させたような感じにしたい場合だと、結構手間になってしまいます。

先程保存した t_mizo10 を開き、上の2つの線を消します。
先程と同様、コンポーネント作成をして、t_mizo10a として保存します。
skp20080318e
再度、直方体がある状態でコンポーネントのファイル「t_mizo10a」を指定します。
skp20080318f
上側の面上となり、エッジ上となるよう配置位置を指定します。
skp20080318g
配置したあとは尺度コマンドで縦・幅の大きさが変わらないよう反対側の面まで変形します。
skp20080318h
全体を選択して、右クリックのポップアップメニューで「交差」を行います。
skp20080318j
上のエッジの線を指定して削除します。すると、側面のT面と上の面が消えます。同じように反対側の上のエッジの線も消します。
skp20080318k
skp20080318l
こんな感じでしょうか?

今回のSKPファイルは、下記です。
http://afsoft.jp/skp_test/t_mizo10.skp
http://afsoft.jp/skp_test/t_mizo10a.skp

Script! T溝、Oリング取付溝

Script! JIS製図用コマンド
『工作機械のテーブル−T溝及びそのボルト JIS B 0952-1999、Oリング取付溝部の形状・寸法 JIS B 2406-1991』スクリプトファイル(有償版;¥500.-)を作成しました。
http://afsoft.jp/program/p09.html
http://afsoft.jp/program/p09_011.html
scr011

スケッチアップでピン作図(続)

Script! JIS製図用コマンド
『割りピン JIS B 1351-1987/テーパピン JIS B 1352-2006/1988/平行ピン JIS B 1354-1988』スクリプトファイル
http://afsoft.jp/program/p09.html
http://afsoft.jp/program/p09_009.html
から、スケッチアップへ立ち上げてみます、の続きです。

さて、次はテーパピン。
taperpin1 を開いて
呼び径 d = 10、長さ l = 40、
で実行し、DXF保存し、スケッチアップでインポートします。
2つの縦線を消して、面を作ります。どのみち丸めから端への部分の一部は消えてしまうので、端点から線を延ばしておきます。原点側は、原点が拾えるので描きません。端に垂直となる円を描いて、フォローミーで回転体を作ります。平行ピンA種の場合と同様、穴があいているのでそこを三角形を描いていって塞いでしまい、消去コマンドで線をSHIFTキーを押しながらクリックします。もう片方側も同様に行いますが途中から内部に平面が作成されてしまうので消す作業もしています。
青い部分は選択をして、面を反転しておきます。
レイヤを1つにまとめて、コンポーネント作成をしておきます。
skp20080316a
SKPデータは下記。
http://afsoft.jp/skp_test/pin2.skp

次は割りピン・とがり先。
splitpin1 を開いて、
呼び径 d = 10、先の長さ a = 5、長さ l = 50、
で実行し、DXF保存し、スケッチアップでインポートします。
まずはとがり先の部分、塗潰し三角形を作って円を垂直に描いて、フォローミーで回転させて円錐を作ります。次に、ピンの内側の線を消して、そのまま円錐底面の円をフォローミーさせれば良いのですが、曲がる箇所で切れてしまうので、その前にその部分の円弧を消し、直線で少し粗く書き直します(※切れずスムーズにフォローミー出来る場合には不要)。そしてフォローミーで円をスイープさせます。面の反転が必要であれば行い、エッジをソフトニング/スムージングをします。
レイヤを1つにまとめて、コンポーネント作成をしておきます。
skp20080316b
SKPデータは下記。
http://afsoft.jp/skp_test/pin3a.skp

次は割りピン・平先。
splitpin2 を開いて、
呼び径 d = 10、先の長さ a = 5、長さ l = 50、
で実行し、DXF保存し、スケッチアップでインポートします。
とがり先と同じ要領です。先の部分の円錐は必要ありません。
skp20080316c
SKPデータは下記。
http://afsoft.jp/skp_test/pin3b.skp

スケッチアップでピン作図

Script! JIS製図用コマンド
『割りピン JIS B 1351-1987/テーパピン JIS B 1352-2006/1988/平行ピン JIS B 1354-1988』スクリプトファイル
http://afsoft.jp/program/p09.html
http://afsoft.jp/program/p09_009.html
から、スケッチアップへ立ち上げてみます。

まずは簡単な平行ピンから。
parallelpin.sf を開いて
A種、呼び径 d = 1、長さ l = 10
で実行し、DXF保存し、スケッチアップでインポートします。
2つの縦線を消して、面を作り、端に垂直となる円を描いて
skp20080315a
フォローミーで面を回転させて見ると・・・
skp20080315b
面取り部分から端への部分と、丸めから端への部分が消えて
しまいました。どうも小さすぎると描けない(消える)ようです。
skp20080315c

仕方がありません。

A種、呼び径 d = 10、長さ l = 30
で実行し、DXF保存し、スケッチアップでインポートします。
2つの縦線を消して、面を作り、端に垂直となる円を描いて
フォローミーで面を回転させて見ると・・・
面取り部分から端への部分は作成されましたが、
skp20080315d
丸めから端への部分の一部が消えてしまいました。
これも小さすぎるようです?
skp20080315e
仕方がありませんので、予め、端点から線を描いておいて
三角形を描いていくことにしました。
skp20080315f
もっとうまい方法があると思いますが、素人考えはこんなもんです。
残った線は、消去コマンドでSHIFTを押しながらクリック。
skp20080315g
プッシュ・プルをすると、普通は白い方が表に見えますが
青いので全選択をして、面を反転しておきます。
レイヤを1つにまとめて、コンポーネント作成をしておきます。
skp20080315h
SKPデータは下記。
http://afsoft.jp/skp_test/pin1a.skp

ついでに、
B種
skp20080315i
http://afsoft.jp/skp_test/pin1b.skp
C種に至っては単なる円柱ですが〜
skp20080315j
http://afsoft.jp/skp_test/pin1c.skp

以外と手間取ってしまいました・・・

スプラインをスケッチアップ

Script! JIS製図用コマンド
『角形スプライン−小径合わせ−寸法,公差及び検証方法 JIS B 1601-1996』スクリプトファイル
http://afsoft.jp/program/p09.html
http://afsoft.jp/program/p09d.html
から、スケッチアップへ立ち上げてみます。

spline1.sf を開いて
d = 23
で実行し、DXF保存し、スケッチアップでインポートします。
まずは、穴のスプラインの場合。
穴を持つハブの塗潰円を描きます。原点中心で取りあえず半径20にします。
全選択して、編集→交差→モデルと交差 をして
スプライン内部の面をクリックして、消去します。
残った部分をプッシュ/プル。取りあえず高さ20にします。
レイヤを1つにまとめて、コンポーネント作成をしておきます。
skp20080314a
SKPデータは下記。
http://afsoft.jp/skp_test/spline1a.skp

次に、ハブ(軸)のスプラインの場合。
同様に先程のDXFファイルをインポートして、
ツール→ユーティリティ→面を作成 をして、プッシュ/プル。高さ10。
移動をして、垂直に上へ ハブの高さ分 10 移動します。
ハブに相当する塗潰円を原点中心に描きます。
d = 23 のスプラインの場合は、D = 26、つまり半径 13 です。
スプラインの円弧部分との絡みで、分割で、セグメント24なのを48にします。
円をプッシュ/プル。高さ10。
円を描いてしまってからプッシュ/プルをすると、穴があいたような状態になってしまうので、今回はこういう風にしてみました。
全体を選択して、編集→交差→モデルと交差 をして、
全体を選択して、マウス右ポップアップメニューで「エッジをソフトニング/スムージング」をしますが、スプラインと円のつなぎ目のところは線が残っているんで、消去コマンドでCTRLを押しながら線を指定していきます。SHIFTでもいいと思いますが、先にソフトニング/スムージングしてますので合わせておきます。
レイヤを1つにまとめて、コンポーネント作成をしておきます。
skp20080314b
SKPデータは下記。
http://afsoft.jp/skp_test/spline1b.skp
まぁ、本当はもっとやらないといけないことがあると思いますけど〜

止め輪をスケッチアップ(続2)

先日作成しました
「Script! JIS製図用コマンド『止め輪 JIS B 2804-2001』」
http://afsoft.jp/program/p09.html
http://afsoft.jp/program/p09_010.html
を使って、スケッチアップ用のデータにしてみます、の続編です。

Script! でスクリプトファイル rring3 を開き、
正面図、呼び20、上部隙間x = 2、
で作図を行って、DXF出力して、GSUで開いて作業。
skp20080313c
SKPデータは下記。
http://afsoft.jp/skp_test/rring3.skp

次に、rring4。
正面図、呼び20、上部隙間x = 5、
で作図を行って、DXF出力して、GSUで開いて作業。
消す作業が面倒なので、全体を選択して
右ポップアップメニューで「エッジをソフトニング/スムージング」をやってみました。デフォルトの「20度」で「法線をスムージングする」にチェックした状態です。
skp20080313d
SKPデータは下記。
http://afsoft.jp/skp_test/rring4.skp

次に、rring5。
正面図、呼び0.8、
上部角度 = 30、下部角度 = 45、丸めr = 0.1、
で作図を行って、DXF出力して、GSUで開いて作業。
そうそう、レイヤがあったんですね。レイヤは1つにして、それ以外のものは削除しておきました。削除する際に、デフォルトに移動、というのがあるんですね。
skp20080313e
SKPデータは下記。
http://afsoft.jp/skp_test/rring5.skp

次に、rring6。
正面図、呼び2、外形 = 3.5、
下部隙間x = 0.8、下部x = 0.8、下部角度 = 15、下部r = 1
で作図を行って、DXF出力して、GSUで開いて作業。
skp20080313f
SKPデータは下記。
http://afsoft.jp/skp_test/rring6.skp
Recent Comments