スクリプト 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)
    )
    )