GDLオブジェクト のカテゴリー

GDLスクリプトによるオブジェクトの作り方(中級編)

0

初級編で作成したカラーボックスに縦横の段数設定を加えてみましょう。

はじめに、知っておくと便利なプログラム制御について紹介します。

0

1.プログラム制御

1)コメント

「!」をスクリプトの前に記述すると、プログラムはその行のスクリプトの実行を無視します。第三者が見ても理解できるように、スクリプトや計算式のコメントを自由に記述することが出来ます。

1

2)フロー制御

例えば、棚板を5分割したい場合は、座標変換とblockコマンドを4回繰り返す必要があります。スクリプトは以下のようになります。

add 0,0,高さ/5

block 幅,奥行,厚さ

add 0,0,高さ/5

block 幅,奥行,厚さ

add 0,0,高さ/5

block 幅,奥行,厚さ

add 0,0,高さ/5

block 幅,奥行,厚さ

2

しかし、段数を固定しない場合はどのようにスクリプトを書けばよいでしょうか?

このような場合にフロー制御を使います。まずは、段数を固定値としてフロー制御を使って書くと以下のようになります。

 

for i=1 to 4

add 0,0,高さ/5

block 幅,奥行,厚さ

next i

 

更に、分割数を変数に入れ替えると

何回でも実行を繰り返すことが可能になります。

 

for i=1 to 分割数の変数

add 0,0,高さ/分割数の変数-1

block 幅,奥行,厚さ

next i

 

3)サブルーチン制御

スクリプトは複雑になっていくと、動作が重たくなるだけでなく、不具合(バグ)も発生しやすくなります。使用するコマンドをサブルーチン化することで、繰り返し記述するスクリプトを単純化でき、不具合が発見しやすくなります。

 

例えば、2種類のblockを書く場合(座標変換は記述していません)

block 幅A,奥行A,高さA

block 幅B,奥行B,高さB

 

となりますが、サブルーチンで書くと

 

gosub 10

gosub 20

end

10:

block 幅A,奥行A,高さA

return

20:

block 幅B,奥行B,高さB

return

 

となります。

※gosubとはラベル番号のついたサブルーチンに行くという宣言です。

※10:や20:はラベルといいます。サブルーチンの場所を差します。

※一番最初のサブルーチンの行の前には必ずendを付けて、本文の終了を宣言します。

※サブルーチンは必ずreturnを付けて元に戻るようにします。

 

更に、パラメータをコマンド毎に定義すると

幅=幅A

奥行=奥行A

高さ=高さA

gosub 10

幅=幅B

奥行=奥行B

高さ=高さB

gosub 10

end

10:

block 幅,奥行,高さ

return

 

となり、blockコマンドは1行のみ、コマンド実行時前にパラメータを宣言するだけなので、間違いを発見しやすくなります。

 

4)条件ステートメント制御

パラメータの変数に、ある条件の数値が代入された場合、変数を指定したり、ラベルの行先を変えたりします。

 

例えば、変数が0の場合は100:を実行、変数が1の場合は200:を実行させたい場合は

以下のようになります。

 

if 変数=0 then 100:

if 変数=1 then 200:

end

100:

コマンド

return

200:

コマンド

return

 

2.カラーボックスのスクリプト(参考)

1)パラメータ

分割に関するパラメータを設定します。「タイプ」は整数に設定します。

3

2)3Dスクリプト(全文)

!パラメータの定義————–

!t_Side:側板サイズ

!t_Tana:棚板サイズ

!m_Side:側板材質

!m_Tana:側板材質

!y_step:縦分割数

!x_step:横分割数

!tateyoko:分割方法 横0 縦1 縦横2

!_x:サブルーチンに代入する変数

!_z:サブルーチンに代入する変数

 

!左板——————–

material m_side

_x=t_side

_z=zzyzx

gosub 10

 

!右板——————–

add a-t_side,0,0

_x=t_side

_z=zzyzx

gosub 10

del 1

 

!下板——————–

material m_tana

add t_side,0,0

_x=a-t_side*2

_z=t_tana

gosub 10

del 1

 

!上板——————–

add t_side,0,zzyzx-t_tana

_x=a-t_side*2

_z=t_tana

gosub 10

del 1

 

!条件式——————

if tateyoko=0 then 100

if tateyoko=1 then 200

!2の場合は横板内の条件式へ

 

!横板——————–

100:

add t_side,0,t_tana/2

y_span=(zzyzx-t_tana*2)/y_step

for i=1 to y_step-1

add 0,0,y_span

_x=a-t_side*2

_z=t_tana

gosub 10

next i

del  y_step

 

!条件式——————

if tateyoko=2 then 200

end

 

!縦板——————–

200:

add t_side/2,0,t_tana

x_span=(a-t_tana*2)/x_step

for i=1 to x_step-1

add x_span,0,0

_x=t_side

_z=zzyzx-t_tana*2

gosub 10

next i

del  x_step

end

 

!サブルーチン—————–

10:

block _x,b,_z

return

 


GDLスクリプトによるオブジェクトの作り方(初級編)

0

GDLスクリプトによるオブジェクトの作り方(初級編)

blockコマンドを使ってカラーボックスを作ってみましょう。

1.パラメータ

 

1)パラメータの設計

側板、棚板で構成され、全体サイズ、部材厚さ、材質が変更できるようにします。棚板は高さの中心に1段のみ設置します。変数は基本的に自由ですが、規定変数であるグローバル変数とは重複しないように注意する必要があります。

2

2)値を変更します。

3

3)パラメータを追加します。

パラメータ設定画面の「新規」をクリックし、パラメータが追加されたら

左側の▲▼をドラッグして、一番下に移動します。

4

4)側板の厚さの「変数」を変更し、「名前」「値」を入力します。

5

5)棚板の厚さのパラメータも同様に追加、入力します。

6

6)材質のパラメータを追加します。

パラメータを追加し「変数」「名前」を入力した後、「タイプ」を「材質」に変更します。

「値」は材質一覧から選択します。

7

2.側板の作成

 

1)側板の材質を設定します

material m_side

materialコマンドで変数を指定します。形状コマンドの実行前に設定します。次にmaterialが記述されるまでこの材質で表現されます。

 

2)側板のコマンドを入力します。

block t_side,b,zzyzx

幅はt_side、奥行はb、高さはzzyzxとして記述します。「スクリプトを確認」をクリックし、問題無ければ「3D表示」をクリックして形状を確認します。

8

3)座標原点を移動します(座標変換)。

add a-t_side,0,0

座標変換とは、block等コマンドを実行する前に座標の移動や回転させることを言います。

addは移動で x,y,z同時に指定できます。X方向にa-t_side座標原点を移動します。

9

4)右側の側板のコマンドを入力します。

block t_side,b,zzyzx

10

5)座標変換を元に戻します。

del 1

座標変換の回数をdelの後に指定します。座標変換を元に戻さないと、その後のコマンドが、移動位置から実行されます。

11delを指定していない状態

12delを指定した状態

2.棚板の作成

 

1)棚板の材質を設定します。

material m_tana

 

2)座標変換します。

add t_side,0,0

側板の厚さ分、座標原点を移動します。

 

3)下側の棚板のコマンドを入力します。

block a-t_side*2,b,t_tana

幅はa-側板厚×2に設定します。

13

4)座標変換します。

add 0,0,zzyzx/2-t_tana/2

※高さ/2-棚板厚さ/2に座標を移動します。

 

5)真ん中の棚板のコマンドを入力します。

block a-t_side*2,b,t_tana

14

6)座標変換します。

add 0,0,zzyzx/2-t_tana/2

 

7)上側の棚板のコマンドを入力します。

block a-t_side*2,b,t_tana

 

8)座標変換を元に戻します。

del 3

 

(参考)3Dスクリプト全文

material m_side

block t_side,b,zzyzx

add a-t_side,0,0

block t_side,b,zzyzx

del 1

 

material m_tana

add t_side,0,0

block a-t_side*2,b,t_tana

add 0,0,zzyzx/2-t_tana/2

block a-t_side*2,b,t_tana

add 0,0,zzyzx/2-t_tana/2

block a-t_side*2,b,t_tana

del 3

15

3.2Dスクリプト。

project2 3,270,2

※基礎編と記述内容は同じです。

16

4.検証

設定したパラメータが、3D、2Dとも想定通りに変化しているか確認します。問題無ければファイルに保存します。


GDLスクリプトによるオブジェクトの作り方(基礎編)

0

GDLスクリプトによるオブジェクトの作り方(基礎編)

 

GDLはBASICに似たパラメトリックなプログラミング言語です。スクリプトでARCHICADのツールと同じようにモデリングできることに加え、パラメータに四則演算を用いたり、条件式でサブルーチンを組み込んだり、既存ツールには無い、業務に特化したインテリジェンスなツールを作り上げることも可能です。詳細はARCHICADヘルプメニュー内のGDLリファレンスガイドを参照ください。

今回は、基礎編として、プリミティブなブロック形状の作り方を紹介します。

1.3Dを作る

1)「ファイル」→「ライブラリとオブジェクト」→「新規オブジェクト」を開きます。

1

2)スクリプトの「3D」をクリックします。

2

3)1m四方の立方体を作るスクリプトを記述します。

 

3

※半角英数文字で入力してください。

※GDL構文内のスケールはメートル単位です。

※スクリプト(BLOCK)とパラメータ

4

4)「スクリプトを確認」をクリックし、構文にエラーが無いことを確認します。

 

5

5)「3D表示」をクリックします。

6-1

6-2

2.2Dを作る

GDLでは3Dと平面図用の2Dは別々に作成します。

1)「メインタブ」をクリック、スクリプトの「2D」をクリックします。

7-1

7-2

2)3D投影結果を2D化する2Dスクリプトを記述し、「スクリプトを確認」でエラーをチェックします。

7-3

※3D投影の設定にて、平行投影上面図から投影、270度で表示した状態を2D図形に設定します。

※スクリプト(PROJECT2)とパラメータ

8

9

3)「2Dビュー」をクリックします。

10-1

10-2

※今回は立体を単純に投影したPROJECT2を使いましたが、3D形状とは別の図面表現を行う場合は、2D線分等のスクリプトを3D同様に記述してください。

※2Dスクリプトの例

11

3.パラメータを設定する

1)「メインタブ」をクリックし、現在のパラメータを確認します。

現在、幅(A)、奥行(B)、高さ(ZZYZX)がそれぞれ1000㎜の初期値でセットされています。

12

2)「3Dスクリプト」をクリックし、座標値をパラメータに置きかえます。

「スクリプトを確認」でエラーをチェックします。

13

3)「メインタブ」をクリックし、パラメータを変更し、

3Dや2Dでサイズが変更されることを確認します。

14

15

16

4.ファイル保存

1)「メインタブ」をクリックし、「ファイル」→「名前を付けて保存」をクリックします。

任意の場所に「フォルダを作成」しておき、「参照」を押して、ファイル名を付けて保存します。

17

18

19

2)「メインタブ」が保存した名称に変わったら、「×」で閉じます。

20

5.プロジェクトでの利用

1)ライブラリのロード

オリジナルのフォルダ内に作成した部品を使用する場合は、必ず「ファイル」→「ライブラリとオブジェクト」→「ライブラリマネージャー」で、フォルダをロードさせてください。

プロジェクト保存(またはテンプレート保存)すると、ロード情報も記憶されます。

21

22

2)「オブジェクトツール」でリンクされたライブラリでオリジナルライブラリを選択すると、作成済の部品が表示されます。

23

※「平面図と断面図パネル」で線種やペンが変更できます。

※「モデルパネル」の「材質の上書き」で材質が変更できます。

 


立断面で使えるオブジェクトの作成

0

※オブジェクト登録の流れについては他の記事も参照ください。
<参考記事 – ヘルプセンター>
3D要素をライブラリ部品として保存
http://goo.gl/4rxKGT

◆使用データの準備
1.メーカーサイトより3Dデータ(DXF)と平面で使用する2Dデータ(DXF)をダウンロードしておく。
2.3DデータはGDLオブジェクトとしてインポートし2Dデータは通常の結合でArchiCADへ取り込む。

Read more