マリオネット・スクリプト解説講座

第52回「図形からオブジェクトを配置する」

ArchitectLandmarkSpotlightDesigner

今回は、マリオネットを使って図面上の図形をもとにオブジェクトを配置する方法を紹介します。

図面上の図形を別の図形に置き換えたり、文字図形や赤ペンを重ねて面積や座標など情報を表示するなど、図面上の図形を元にオブジェクトを配置・生成する場面は多くあります。

数が多くなったり変更が増えてくると、まとめて自動的に配置できると便利ですよね。データタグを使えば動的に図形の情報を表示できますし、「シンボル置き換え」や「オブジェクトから図形を作成」など便利なコマンドも標準機能に用意があります。

今回は標準の便利なコマンドを参考にしながら、より汎用的に使えるオブジェクト配置のプログラムを作ってみましょう。

52-1. 対象の図形の取得

まずは配置の基準とする図形を指定する方法です。Objs by Critノードを使用して、図面上の図形から図形の種類やクラス、名前など条件を絞り込みます。

ここでは、図面上に複数の多角形が配置して、それぞれ任意のクラスが設定されているシチュエーションで説明します。下図では左半分の図形のクラスを「ゾーン-1」、右半分の多角形を「ゾーン-2」に設定しています。

Objs by CritノードのCriteria configuration…ボタンから検索条件ダイアログを開きます。「図形選択マクロコマンド」等で使用している検索条件設定画面と同じように操作して、配置の基準とする図形を指定しましょう。

種類が多角形の図形

条件を編集して「タイプが」「右項目のもの」「多角形」を入力してOKを選択します。

Objs by CritノードのCriteriaフィールドに検索条件式である「((T=POLY))」が自動的に入力されます。

種類が多角形の図形かつクラスがゾーンの図形

複数条件の指定も可能です。検索条件ダイアログで「検索対象を追加」ボタンを選択して条件を追加してください。

Criteriaフィールドに「(((T=POLY) & (C=’ゾーン-1′)))」が反映されます。

選択されている図形

図形の属性の他に、選択状態で指定することもできます。「選択されている図形」はマリオネットネットワークをメニューコマンド化した時に有効です。

52-2. 配置するポイントの特定

対象図形を基準にしてどの位置にオブジェクトを配置するのか、その座標を求める方法をいくつか紹介しながら、実際にオブジェクトを配置していきます。

図形の中心・重心

Get 2D Centerノードは2D図形の中心座標を取得します。

基準点を置いて確認します。

3D図形の場合は、Get Centerノードを使用して中心座標を取得できます。

また、Get Gravity Centerノードを使用して重心を取得することもできます。

例えば円錐の場合、半分の高さ(中心)よりも下の位置に重心が位置していることを確認できます。

その他、Get 2D Infoノードは中心座標と図形の面積をまとめて取得できます。Get 2D Infoを使用して、複数の多角形を対象に、多角形の面積を図形の2Dの中心に表示してみます。

多角形の中心に面積の値を表示することができましたが、実数値での表示となってしまい少し見づらいですね。

いくつかノードを追加して表示を調整します。functionノードに「vs.Area2Str(x)」を入力します。この関数では面積の実数値から面積の文字列表現に変換することが可能です。

これでスッキリしました。

複数図形の中心

複数の図形を対象に、一つの情報を表示したい場合は、複数図形全体の中心に表示できるといいですね。

ここではすべての図形のバウンダリングボックスから、x座標・y座標の最大値と最小値を求めて、その中間地点を求める方法を紹介します。

Extremaノードはリストの中の最大値と最小値を取得します。

多角形のバウンダリングボックスの座標をx座標とy座標に分解してExtremaにそれぞれ入力します。

中間地点を求めるために、xyそれぞれ足して2で割る計算をしたあと、座標値に変換します。

クラスが「ゾーン-1」の多角形と、クラスが「ゾーン-2」の多角形の条件でObjs by Critノードを用意して、それぞれいくつあるのかを図形の中心に表示してみます。

「ゾーン-1」の多角形が15個、「ゾーン-2」の多角形が16個であることを可視化することができました。

ライン上の点

Get Point On Polyノードはライン(多角形・曲線)の始点からの距離を指定して、ライン上の座標を取得することができます。

ここでは等間隔でオブジェクトを配置することを考えます。

ラインの端点を含んで配置する場合、n個のオブジェクトを配置する距離は次のように表現できます。

ラインの長さ/(配置する数-1)*(n-1)

マリオネットではノードを次のように繋げて式を再現できます。

Insert Symbolノードを使用して、ライン上に樹木のシンボルを配置してみます。

樹木をラインに沿って等間隔に配置できました。

※Get Point On PolyノードではToleranceフィールドで距離の値の許容誤差を設定できます。シンボルが終点に配置されない場合は許容誤差を大きく設定してください。

52-3. 図形の置き換え

元の図形の位置に別の図形を配置するのはこれまでと同じですが、ここでは図形の置き換えを実行します。

プログラムの流れはシンプルで、元の図形を削除するだけです。元の図形のリストをDeleteノードを繋いで、プログラム実行終了に削除されるようにします。

図面上の多角形を円図形に置き換えるプログラムを作成します。多角形の中心に円を配置した後、多角形を取得するObjs by Critノードからもう一本ワイヤーを伸ばしてDeleteノードにつなぎます。

実行すると、多角形があった位置に円図形が配置され、多角形は削除されます。

プログラムを少しアレンジして、円図形の面積が元図形の面積と一致するようにサイズを調整します。

ゾーンそれぞれの面積が直感的に把握できますね。

作業の効率化や図面の修正だけでなく情報の可視化についても拡張の可能性があるプログラムですので、どんどんカスタマイズして活用してください。

この機能を利用できる製品

Architect

Vectorworks Architect

建築設計や内装、ディスプレイデザインに対応した先進的なBIM・インテリア設計支援機能、拡張機能、さらには豊富な建築向けのデータライブラリを搭載した建築/内装業界向け製品
詳細情報 購入ページ

Landmark

Vectorworks Landmark

地形モデルや多彩な植栽、灌水設備計画等に対応するランドスケープデザイン機能、さらには豊富な造園向けのデータライブラリを搭載した都市計画/造園業界向け製品
詳細情報 購入ページ

Spotlight

Vectorworks Spotlight

ステージプランニングやライティング計画に対応した先進的な舞台照明計画支援機能、さらには各種メーカー製のトラスや照明機材、音響機器等の豊富なデータライブラリを搭載したエンタテインメント業界向け製品
詳細情報 購入ページ

Designer

Vectorworks Design Suite

専門分野別(建築設計/ディスプレイデザイン、ランドスケープデザイン、ステージデザイン&スポットライトプランニング)の設計支援機能、拡張機能、さらには豊富なデータライブラリを搭載した最上位の製品
詳細情報 購入ページ