ラベルを色々作ってみよう〜梁オブジェクトの情報を呼び出してみる②〜

2025年3月20日木曜日

BEAM_DIRECTION BEAM_POSITION BEAM_SEGMENT_INFO ラベル

t f B! P L
前回に続き、ラベルを作成していきたいと思います。
実際に梁オブジェクトから情報を取得して、ラベルに表示していきます。

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]
という具合になります。ラベルの位置と梁の位置の関係を均一にしたい場合などに有効です。

梁の始点座標取得

BEAM_DIRECTION

このコマンドは、梁オブジェクトの基準線の方向を角度で返してくれます。
今度は試しに以下のスクリプトをコピーして使ってみてください。

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推進者と繋がりたいです。よろしくお願いします。

自己紹介

自分の写真
初めまして。 BIM活用のあれこれ運営人です。 普段はBIM界隈で働いております。皆さんに役立つ情報を提供できればと思っております。BIMマネやBIMオペ、開発、プログラミング、BIMコンサル、技術営業等様々な業務をおこなっております。 GDL作成などBIM活用のお仕事のご相談お待ちしております。 #ゼネコン出身 #施工管理 #生産設計 #BIM開発 #ソフトウェアベンダー #ArchiCAD API #GDL #ArchiCAD python #Revit API #Dynamo

メール

bim.arekore@gmail.com

検索

GDLオブジェクト

ブログ アーカイブ

ArchiCADのGDLをコスパよく作成します ArchiCADユーザーでGDL作成を外部委託されている方へ

QooQ