スクリプト Geometry プラグイン
スクリプト Geometry プラグインを宣言するには、 <superclass> を geometry として指定します。
スクリプト Geometry プラグインでは、非表示であるか、一時的であるか、別のプラグインを拡張するのでない限り、 create ツールが必要です。
プラグインが別のプラグインを拡張し、 create ツールが指定されている場合、代理オブジェクトの create ツールが上書きされます。
例:
|
plugin geometry foo_plugin_def
name:"FooBar"
category:"Scripted Primitives"
(
local boxes = #()
local clickAt
tool create
(
on mousePoint click do
(
clickAt = worldPoint
boxes =for i in 1 to 10 collect box pos:([i*20,0,0] + clickAt)
#stop
)
)
rollout frab "Parameters"
(
spinner frab_value "Frabulate" range:[-1000,1000,20]
on frab_value changed val do
for i in 1 to boxes.count do
boxes[i].pos = [i*val,0,0] + clickAt
)
)
|
これにより、ボタンを 1 つ備えた新しいジオメトリ カテゴリが[作成](Create)パネルに追加されます。[FooBar]ボタンをクリックすると、マウス コマンド
モードが起動します。マウス コマンド モードでは、ボックスの分割を調整できる 1 つのスピナーを備えたコマンド パネルにロールアウトをクリックして追加する 10 個のボックスの行を作成できます。これは、RingArray
のような System オブジェクトによく似ています。ただし、[ジオメトリ](Geometry)タブ内にあります。これは、スクリプト プラグインの最も単純化されたタイプで、特定のシーン
オブジェクトや保存可能なパラメータは用意されていません。
ツール ハンドラでは、必要に応じて delegate のプロパティを設定できます。
例:
|
plugin geometry Cuboid
name:"Cuboid"
classID:#(0x133067, 0x54374)
category:"Scripted Primitives"
extends:Box
(
fn fmax val1 val2 = if val1 > val2 then val1 else val2
tool create
(
on mousePoint click do
case click of
(
1: nodeTM.translation = gridPoint
2: #stop
)
on mouseMove click do
if click == 2 then
delegate.width = delegate.length =
delegate.height = 2 * fmax (abs gridDist.x) (abs gridDist.y)
)
)
|