ArchiCAD GDLで椅子をつくてみる③
今回は、前回と前々回で作成した椅子を修正していこうと思います。具体的には、
tube
コマンドで作ったパイプ椅子の脚を、もっと滑らかに曲げる方法に挑戦してみたいと思います。下の画像を見るとわかるように、現状の tube
コマンドの使い方だと角が付いてしまいますし、サインやコサインを使っている部分が煩雑なので、これらを整理していきます。パイプ椅子の角 |
前回までのコード
"chair": pipe_size = 0.01 pipe_pos = chair_size/2 + 0.03 pipe_height = chair_height - 0.03 material chair_pipe_mat gosub "chair_pipe" rotz 90 gosub "chair_pipe" material chair_mat add 0, 0, chair_height - 0.03/2 cylind 0.03/2, chair_size/2 del 1 end return "chair_pipe": tube 2, 6, 1+2+16+32+64, 0, 0, 900, pipe_size, 360, 4000, pipe_pos*cos(45), pipe_pos*cos(45), -1, 0, pipe_pos*cos(45), pipe_pos*cos(45), 0, 0, pipe_pos*cos(45), pipe_pos*cos(45), pipe_height, 0, pipe_pos*cos(225), pipe_pos*cos(225), pipe_height, 0, pipe_pos*cos(225), pipe_pos*cos(225), 0, 0, pipe_pos*cos(225), pipe_pos*cos(225), -1, 0 return
今回のコード
"chair": pipe_size = 0.01 pipe_pos = chair_size/2 + 0.03 pipe_height = chair_height - 0.03 material chair_pipe_mat rotz 45 gosub "chair_pipe" rotz 90 gosub "chair_pipe" rotz 90 gosub "chair_pipe" rotz 90 gosub "chair_pipe" del 4 material chair_mat add 0, 0, chair_height - 0.03/2 cylind 0.03/2, chair_size/2 del 1 end return "chair_pipe": d = pipe_size*4 tube 2, 4, 1+2+16+32+64, 0, 0, 900, pipe_size, 360, 4000, pipe_pos, 0, -1, 0, pipe_pos, 0, 0, 0, pipe_pos, 0, pipe_height - d, 0, pipe_pos, 0, pipe_height, 0 tube 2, 4, 1+2+16+32+64, 0, 0, 900, pipe_size, 360, 4000, pipe_pos, 0, pipe_height, 0, pipe_pos - d, 0, pipe_height, 0, 0, 0, pipe_height, 0, -1, 0, pipe_height, 0 add pipe_pos - d, 0, pipe_height - d gosub "chair_pipe_corner" del 1 return "chair_pipe_corner": div = 8 put d, 0, -1, 0 for i = 0 to div put d*cos(90*(i/div)), 0, d*sin(90*(i/div)),0 next i put -1, 0 , d, 0 tube 2, div + 3, 1+2+16+32+64, 0, 0, 900, pipe_size, 360, 4000, get((div+3)*4) return
FOR文、PUTコマンド、GETコマンド
今回のコードでは、下の画像のようにパイプ部分を1、2、3に分けて考えています。どれも tube
コマンドで作成していますが、2("chair_pipe_corner" ラベル内)だけは put
コマンドと get
コマンド、それから for
文を使っています。
for
文は繰り返し処理のコマンドで、i=0
から 9
まで繰り返すことで90度の扇型を分割し、円に近似した多角形を作り、パイプ椅子のコーナー部分を表現しています。通常の tube
コマンドの使い方で書くと、座標値を11行分記述しなければなりませんが、put
コマンドを使うと内部バッファに値を格納し、get
でその値を順番に呼び出すことができます。そのため、for
文を使う場合や頂点数が可変の場合は、put
と get
を使うことで、さまざまな3D形状コマンドに柔軟に対応できます。
3D形状を分割して考える |
円弧上の座標 |
完成したGDLは下の画像のようになります。しっかりと曲線に近い状態で3D形状が作成されています。
このように、座標の計算次第でさまざまな形を作成できるので、ぜひいろいろなアイデアを形にしていきましょう。
なお、基本的なGDLの学習はこちらの教材がおすすめです!
GDLリファレンスがgraphisoftが用意していますが、初見では理解しづらいので、
簡単にまとめられたやさしく学ぶArchiCAD GDLプログラミングという本で基礎をしっかり学びましょう!
また、ココナラでのサポートサービスも始めましたので、
ご活用いただければと思います。
1日GDL作成やArchiCAD関連の相談のります 自分でGDLを作成している方へ【お知らせ】
Xのアカウントを作成しましたので、ぜひフォロー頂けると嬉しいです。
アカウントはこちらから⇨https://x.com/BIM_arekore
世界の建設業従事者、BIM推進者と繋がりたいです。よろしくお願いします。
0 件のコメント:
コメントを投稿
何でも気軽にコメントください。