GDLが複雑になりすぎてホットスポットでの編集が重い時の対処。

2025年1月12日日曜日

GDL GLOB_FEEDBACK_MODE 小ネタ

t f B! P L
少し遅くなりましたが、あけましておめでとうございます。
今年もよろしくお願いします。

かなりニッチなブログですが、閲覧してくださっている方々の役に立つ情報を発信できるように、日々頑張っていきたいと思います。

GDLのホットスポットが重い時

機能がリッチになり過ぎて、ホットスポットでの編集時に動作が重くなってしまうことがあると思います。これの対処法ですが、結論から言うとGLOB_FEEDBACK_MODEというグローバル変数を使うと便利です。

GLOB_FEEDBACK_MODEは編集の進行中の表示を制御できます。
以下の動画を見て比較していただくととても分かりやすいと思います。

重い場合


軽くした場合


お分かり頂けましたでしょうか?
軽くした場合の時は、編集中に円柱ではなく単線が描画されています。
下のスクリプトを見ていただくと分かりますが、
編集中はcylindコマンドではなくlin_コマンドを使っています。

軽くなった理由はそういう訳です。

GLOB_FEEDBACK_MODE

仕組みは簡単で、GLOB_FEEDBACK_MODE=1(編集中の時)と、GLOB_FEEDBACK_MODE=0(そうでない時)で場合分けをして考えてあげれば良いです。
今回は以下のスクリプトのように場合分けをし、動きを軽くしてみました。


パラメータリスト
パラメータリスト


3Dスクリプト
unID=3000

hotspot 0	, 0, 0, unID, w, 1+128	:unID=unID+1
hotspot w	, 0, 0, unID, w, 2		:unID=unID+1
hotspot -1  , 0, 0, unID, w, 3		:unID=unID+1

hotspot 0, 0  , 0, unID, d, 1+128	:unID=unID+1
hotspot 0, d  , 0, unID, d, 2		:unID=unID+1
hotspot 0 , -1, 0, unID, d, 3		:unID=unID+1

if GLOB_FEEDBACK_MODE then
	for i=1 to int(w/0.5)
		for j=1 to int(d/0.5)
			add 0.5*(i-1), 0.5*(j-1), 0
			lin_ 0, 0, 0, 0, 0, 1
			del 1
		next j
	next i
else
	for i=1 to int(w/0.5)
		for j=1 to int(d/0.5)
			add 0.5*(i-1), 0.5*(j-1), 0
			cylind 1, 0.1
			del 1
		next j
	next i
endif

他にも、resolコマンドを使ったり、編集中には描画不要と思うものを除いたり、工夫次第でかなり完全できると思います。

今回はGLOB_FEEDBACK_MODE を使用した方法の紹介でしたが、
mvoで編集モードを作成したり、そもそものポリゴン数を減らしてみたり、
軽くする工夫はいろいろあると思いますので、是非試してみてください。


なお、基本的なGDLの学習はこちらの教材がおすすめです!
GDLリファレンスがgraphisoftが用意していますが、初見では理解しづらいので、
簡単にまとめられたやさしく学ぶArchiCAD GDLプログラミングという本で基礎をしっかり学びましょう!

また、ココナラでのサポートサービスも始めましたので、
ご活用いただければと思います。
1日GDL作成やArchiCAD関連の相談のります 自分でGDLを作成している方へ


【お知らせ】
Xのアカウントを作成しましたので、ぜひフォロー頂けると嬉しいです。
アカウントはこちらから⇨https://x.com/BIM_arekore

世界の建設業従事者、BIM推進者と繋がりたいです。よろしくお願いします。

検索

GDLオブジェクト

UI (1) ユニーク (1) 椅子 (4) 仮囲い (6) (7) 小ネタ (4) 足場 (15) 足場計画 (4) 多角形 (3) 法規 (1) 無償DL (4)

ブログ アーカイブ

自己紹介

自分の写真
GDL作成などBIM活用のお仕事の相談お待ちしております。 #中堅ゼネコン出身 #施工管理職 #生産設計部 #BIM開発部門
ArchiCADのGDLをコスパよく作成します ArchiCADユーザーでGDL作成を外部委託されている方へ

QooQ