マリオネットのフォーラムで共有されているサンプルスクリプトを利用して、オブジェクトの情報を図面上に一覧表示するメニューコマンドを作成します。
Vectorworksのオブジェクトは幅や高さ、位置、材料など様々属性情報が付与されています。これらの情報は設計を進めていく上で必要不可欠なものとなりますので「情報を確認する手段」が重要になります。
オブジェクトの寸法や位置などは「オブジェクト情報パレット」で、壁や屋根の構成情報であれば「構成要素ダイアログ」で確認することができます。これらは選択状態にあるオブジェクトに対して情報を表示する機能です。また、「構成要素ダイアログ」など別ウインドウのダイアログを表示するものは、操作のハンドルがそちらに取られてしまいます。
そのため、例えば、図面動かしながら構成要素を確認したり、他のオブジェクトの情報を同時に表示して確認するといったことができません。これに対し、オブジェクトの情報を図面上に文字図形としてプロットできれば、この課題が解消され効率良く作業を進めることができます。
15-1. 仕様を考える
プログラミングはやろうと思えば大体のことは実現できますが、なんでもやろうとしてコーディングに時間をかけ、かえって効率が悪くなることがあります。プログラミングの作業に入る前に、手を動かした方が早いことや、既にあるもので実現できることを整理して、作業フローのどこの部分をプログラミングでやると効率がいいのかよく考えることが大事です。
今回の「オブジェクトの情報を図面上に表示する」について既存の機能でできることを考えてみます。Vectorworksに搭載されているデータタグ機能を使用すれば、オブジェクトから任意のパラメータを抜き出して図面上に表示することができます。データタグは非常に強力な機能ですが、オブジェクトを指定して、抜き出したいパラメータを指定して、デザインのレイアウトを作図してと意外に手間がかかります。これに対して、オブジェクトの種類やパラメータの数によらず「とりあえず全部表示する」という仕様であれば手軽に使えそうですね。情報を確認しながらスピーディに作業するという点でデータタグに勝りますが、あまり格好はよくないかもしれません。最終的に図面に残すような情報はデータタグで綺麗に整理するのがいいでしょう。
15-2. 情報を表示するノード
「Print List」ノードは、入力されたリストを文字列として図面上に表示します。リストの項目ごとに自動的に改行され一つの図形となるので、見やすくかつ扱いやすくなっています。このノードにオブジェクトの情報を入力して図面上に表示するプログラムを作成します。
15-3. いいものは使う パラメータの一覧表示
Vectorworks社が運営するMarionetteのフォーラムでは、VW社スタッフや世界各国のユーザが作成したマリオネットスクリプトが共有されています。今回実現したい「Print List」ノードを使用して「とりあえず全部表示する」この仕組みは既に他のユーザにより作成されていました。そのスクリプトが共有されていますので利用します。
15-3-1. サンプルスクリプトのダウンロード
Marionetteフォーラムから「Print Parametric Record 1.0.0」の記事を開きます。
「Download this file」ボタンをクリックします。ダウンロードが始まります。
ダウンロードした「Print Parametric Record MC.vwx」をVectorworksで開きます。
15-3-2. スクリプトの修正
ファイルに配置されているラッパーノードの中を開きます。
「Objs by Crit」で取得したオブジェクトに対して「Get Parametric Record」でレコード値を取得し表示する仕組みですね。この仕組みはそのまま使えそうです。
「Objs by Crit」の設定を見てみると図形の種類が「ドア」に限定されています。ここを「選択した図形」に変更します。
“Criteria configuration…”ボタンをクリックして検索条件ダイアログを開きます。プルダウンを操作し”選択の有無が”+”選択されている”に設定してOKボタンで閉じます。
Criteriaパラメータに「選択した図形」を意味する「((SEL=TRUE))」が設定されました。これで修正が完了しました。
15-3-3. メニューコマンド化
ラッパーノードを右クリックしてコンテキストメニューを開き、”メニューコマンドに変換…”を選択します。
任意のメニュー名を入力してOKボタンをクリックします。
作成したメニューコマンドが「ツール > マリオネットコマンド」に表示されます。オブジェクトを選択した状態で、コマンドを実行します。
図面上にパラメータの一覧が表示されました。
図形の種類を固定していないので、オブジェクトの種類によらず汎用的に使用できます。
15-4. ないものは作る 構成要素一覧の表示
構成要素の情報はレコードから取得することができません。構成要素の専用のノードを使ってプログラムを作成します。構成要素の数だけ構成要素を取得して名前を表示するというシンプルな仕様にしましょう。
「Get Component Name」はオブジェクトで使用している構成要素の名前を取得するノードです。オブジェクトのハンドルと構成要素の番号が必要ですので、準備します。
オブジェクのハンドルは、15-3と同様に「Objs by Crit」を使って「選択した図形」を入力します。
番号は「Series」を使って、0から構成要素の数だけカウントアップする数列を作成します。
構成要素の数は「Get Number of Components」ノードで取得します。例えば構成要素の数が5種類の場合、数列は「0,1,2,3,4」となります。
ハンドルと番号の数列を「Get Component Name」に入力したら、情報の取得は完了です。
取得した情報を「Print List」して図面上に表示できるようにしましょう。
最後に、ラッパーノードに変換してメニューコマンド化します。
壁やスラブを選択してしてコマンドを実行します。
構成要素の一覧が表示されました。
この機能を利用できる製品
Vectorworks Architect建築設計や内装、ディスプレイデザインに対応した先進的なBIM・インテリア設計支援機能、拡張機能、さらには豊富な建築向けのデータライブラリを搭載した建築/内装業界向け製品 |
|
Vectorworks Landmark地形モデルや多彩な植栽、灌水設備計画等に対応するランドスケープデザイン機能、さらには豊富な造園向けのデータライブラリを搭載した都市計画/造園業界向け製品 |
|
Vectorworks Spotlightステージプランニングやライティング計画に対応した先進的な舞台照明計画支援機能、さらには各種メーカー製のトラスや照明機材、音響機器等の豊富なデータライブラリを搭載したエンタテインメント業界向け製品 |
|
Vectorworks Design Suite専門分野別(建築設計/ディスプレイデザイン、ランドスケープデザイン、ステージデザイン&スポットライトプランニング)の設計支援機能、拡張機能、さらには豊富なデータライブラリを搭載した最上位の製品 |