GDLオブジェクトは単体で動作するため、例えば「机」オブジェクトの材質を変えると「椅子」のオブジェクトの材質が変わる、というようなことは出来ません。
ただし、MVOオブジェクトを自作することでMVO(モデル表示オプション)から複数のオブジェクトに対してパラメータを変更することが可能です。
![2022-04-17_21h53_52-1024x486.png 2022-04-17_21h53_52-1024x486.png](/t5/image/serverpage/image-id/59989i1511DB23AA2F9636/image-size/large?v=v2&px=999)
![2022-04-17_21h58_16-1024x493.png 2022-04-17_21h58_16-1024x493.png](/t5/image/serverpage/image-id/59990i88CC1AA567445094/image-size/large?v=v2&px=999)
↑連動して変わっています
本記事ではこのMVOオブジェクトの作り方と、連動するオブジェクトの作り方について解説します。
※以下の具体的な作成方法はある程度GDLを作成している方を対象としています。ご了承ください。
この記事で作るもの
最小限のオブジェクトとして立方体の色をカスタムMVOで変更するオブジェクトを作成します。
![image-30-1024x562.png image-30-1024x562.png](/t5/image/serverpage/image-id/59991iDCBE65B75985CE85/image-size/large?v=v2&px=999)
カスタムMVOオブジェクトの作成
オブジェクトを新規作成し、サブタイプを「ライブラリグローバル設定」にします。
![2022-04-17_00h06_43-1.png 2022-04-17_00h06_43-1.png](/t5/image/serverpage/image-id/59992iFC4600D8BBB05838/image-size/large?v=v2&px=999)
パラメータで任意の変数を作成します。
ここで設定したパラメータをオブジェクトに読み込みます。
![2022-04-17_22h35_44.png 2022-04-17_22h35_44.png](/t5/image/serverpage/image-id/59993iADBA71FB8336675D/image-size/large?v=v2&px=999)
インターフェーススクリプトで作成した変数を設定します。
![2022-04-17_22h37_30.png 2022-04-17_22h37_30.png](/t5/image/serverpage/image-id/59994i72043E225F26AE68/image-size/large?v=v2&px=999)
! コピペ用
ui_dialog "カスタムMVO"
ui_infield `texPARAM`,10,10,190
"customMVO.gsm"の名称で保存します。
![image-28.png image-28.png](/t5/image/serverpage/image-id/59995iA1BD4A576254BEC1/image-size/large?v=v2&px=999)
モデル表示オプションに追加されます。
![2022-04-17_22h39_52-1024x721.png 2022-04-17_22h39_52-1024x721.png](/t5/image/serverpage/image-id/59996i13EC5135274BEABD/image-size/large?v=v2&px=999)
材質だけでなく、実数やブールなども設定可能です。
対応するオブジェクトの作成
新規作成し、下記のパラメータを設定します。
![2022-04-17_22h46_03.png 2022-04-17_22h46_03.png](/t5/image/serverpage/image-id/59997i894CAFEB30AC4609/image-size/large?v=v2&px=999)
マスタスクリプトに下記の内容を記述します。
LIBRARYGLOBAL関数の引数はそれぞれ
LIBRARYGLOBAL(<カスタムMVOオブジェクト名> , <取得するパラメータ変数名> , <戻り値を受ける変数>
を示します。
正常にカスタムMVOから値を取得できた場合は"tex"に"customMVO"の"texPARAM"を上書きします。
![image-27.png image-27.png](/t5/image/serverpage/image-id/59998i93A08C2CD0A3C4D9/image-size/large?v=v2&px=999)
!コピペ用
success = LIBRARYGLOBAL ("customMVO", "texPARAM", reftex)
if success then
tex = reftex
parameters tex = tex
endif
3Dスクリプトに下記の内容を記述します。
![image-29.png image-29.png](/t5/image/serverpage/image-id/59999i7090DAD4A997C5C9/image-size/large?v=v2&px=999)
!コピペ用
material tex
block 1,1,1
保存して配置すると、カスタムMVOで連動するオブジェクトが出来ます。
![image-30-1024x562.png image-30-1024x562.png](/t5/image/serverpage/image-id/60000i307823FF4386D227/image-size/large?v=v2&px=999)
活用方法
作図中は必要な情報を表示し、出図時は消す。
MVOはビューに保存されるので、出図用と作図用のビューを作っておくと良いです。
![image-32.png image-32.png](/t5/image/serverpage/image-id/60001iCE1730E1ADE05EF0/image-size/large?v=v2&px=999)
![image-33.png image-33.png](/t5/image/serverpage/image-id/60002iC01CBE3CB74B7ADA/image-size/large?v=v2&px=999)
同じような方法で、作図時には2Dスクリプトに記述した軽く簡易的な表現で、出図時にはproject2でリアルな表現にすると動作が軽く効率的なモデリングに繋がります。
![image-34.png image-34.png](/t5/image/serverpage/image-id/60003i00CD3D9D08B96415/image-size/large?v=v2&px=999)
![image-35.png image-35.png](/t5/image/serverpage/image-id/60004i1F8CC23E90004BDB/image-size/large?v=v2&px=999)
Archicadは表示/非表示を主にレイヤーで管理することが多いと思いますが、あらかじめ図面それぞれのパラメータを作ってMVOで管理することで、表示/非表示を変えるなどの活用方法が考えられます。
![image-36.png image-36.png](/t5/image/serverpage/image-id/60005iA9C48E7E642216BF/image-size/large?v=v2&px=999)
参考:https://gdl.Graphisoft.com/tips-and-tricks/custom-made-model-view-options-object