実際に梁オブジェクトから情報を取得して、ラベルに表示していきます。
BEAM_POSITION
このコマンドを使用することで、梁オブジェクトの始点位置を取得することができます。
試しに以下のスクリプトをコピーして使ってみてください。
text2 0,0,"X:" + str(BEAM_POSITION[1],4,3) + ",Y:" + str(BEAM_POSITION[2],4,3)
画像のように、xyz座標の値が確認できたかと思います。
BEAM_POSITIONコマンドは梁のxyz座標の配列を返してくれますので、
x = BEAM_POSITION[1]、y = BEAM_POSITION[2]、z = BEAM_POSITION[3]
という具合になります。ラベルの位置と梁の位置の関係を均一にしたい場合などに有効です。
今度は試しに以下のスクリプトをコピーして使ってみてください。
text2 0,0,"rot:" + str(BEAM_DIRECTION,4,3)
画像のように、角度の値が確認できたかと思います。X軸との角度が±180°で返ってきますので、それを考慮しながら使用する必要があります。
![]() |
梁オブジェクトの角度取得 |
BEAM_SEGMENT_INFO
このコマンドを使用すると辞書形式の情報が返ってきます。情報の内容としてはリファレンスに書いてあるような項目が取得できます。
![]() |
リファレンス一部抜粋: https://help.graphisoft.com/AC/26/JPN/GDL.pdf |
このコマンドを使用して、梁の長さを取得してきたいと思います。
以下のような使い方で梁の総長さ(3D)を取得することができます。vardim1()という関数を使うと配列の長さ(この場合は梁のセグメント数)が取得できますので、その数でループして、セグメントそれぞれの長さを.refLineLengthの部分で取得し、合計して総長さを出しています。
if GLOB_ELEM_TYPE = 12 | GLOB_ELEM_TYPE = 28 then l=0 for i = 1 to vardim1(BEAM_SEGMENT_INFO.segments) l=l+BEAM_SEGMENT_INFO.segments[i].refLineLength next i text2 0, 0, str(l, 5,4) endif
実際に取得した値をtext2コマンドで表示したものが下の画像になりますが、左の情報ボックスに表示されている長さとも一致していることが分かります。
![]() |
梁オブジェクトの長さ取得 |
このようにして、梁の情報をラベルに表現することができます。次回はこれらを使ってもう少し工夫した表現をしてみたいと思います。
【お知らせ】
ココナラでのサポートサービスも承っておりますので、
ご活用いただければと思います。
1日GDL作成やArchiCAD関連の相談のります 自分でGDLを作成している方へXのアカウントを作成しましたので、ぜひフォロー頂けると嬉しいです。
アカウントはこちらから⇨https://x.com/BIM_arekore
世界の建設業従事者、BIM推進者と繋がりたいです。よろしくお願いします。
0 件のコメント:
コメントを投稿
何でも気軽にコメントください。