MAXScript Tools and Interaction with 3ds Max > Creating MAXScript Tools > Scripted Plug-ins >

# Scripted Geometry Plug-ins

A scripted Geometry plug-in is declared by specifying the <superclass> as geometry .

Scripted Geometry plug-ins require a create tool unless they are invisible, temporary, or extend another plug-in.

If the plug-in extends another plug-in, and a create tool is specified, it will override the delegate's create tool.

EXAMPLE:
    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
    )
    )

This adds a new geometry category with one button to the Create panel. Pressing the FooBar button starts a mouse command mode that creates a row of 10 boxes where you click and adds a rollout to the command panel with one spinner that lets you adjust the separation of the boxes. This is very similar to a System object like the RingArray, except it lives in the Geometry tab. This is the simplest type of scripted of plug-in; it has no specific scene object and no storable parameters.

In the tool handlers, you can set the delegate properties as needed.

FOR EXAMPLE:
    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)
    )
    )

#### See Also

- Updating Scripted Plug-ins

- Scripted Plug-in Methods

- Scripted Plug-in Clauses

- Scripted Plug-ins

- Scripted Mouse Tools