InspectObj

Introduced

v1.0

Description

Loads objects into a property editor. This allows a user to interactively view and edit the parameters of an object. You can use the siModal mode for the Mode parameter to communicate with the user (like a dialog box), as demonstrated in the first example below.

A property page can display several objects at the same time. If the objects are of different types then they will appear one after another. For example, when inspecting a Sphere, the X3DObject, Primitive and Operator are shown in this fashion. Alternatively, if the objects are of the same type then they are shown in "multi" mode. This mode is useful for changing a parameter on many objects at the same time. The examples below show both cases.

Normally when you inspect an object its nested objects will also be inspected within the same frame. You can limit which nested objects are inspected by using a list of keywords. For example, you can just display the Animation property set by specifying siAnimationKeyword in the Keywords parameter.

Scripting Syntax

oReturn = InspectObj( [InputObjs], [Keywords], [Title], [Mode], [Throw] );

Return Value

Returns true if the command was canceled and the Throw argument is set to false. If the command was canceled and the Throw argument was not specified (or is set to true) the command throws an error. Otherwise, it returns false.

Parameters

Parameter Type Description
InputObjs String List of objects to inspect.

Default Value: Current selection. Note: if the selection contains more than one object then only the first appears.

Keywords Keywords Specify which property set appears for the specified object (eg., Animation, Hair, IK, Deform, etc.)

Default Value: "" (clear current marking)

Title String Title of the property editor dialog. Note: the title you use here only appears on the property editor if you use siModal for the Mode parameter.

Default Value: Generated from names of input objects.

Mode siInspectMode Specifies whether the dialog should be locked, recycling, focused, or modal.

Default Value: siRecycle

Throw Boolean True to throw an error if the command is cancelled.

Note: If this argument is set to false and the user cancels the command, the command returns true instead of throwing an error.

Default Value: True

Examples

1. VBScript Example

'

' In modal mode, a property editor has Ok and Cancel buttons.

' Here's how to open a modal property editor

'

NewScene , false

On Error Resume Next

InspectObj "Light",,"Inspecting Light", siModal

' Check if user clicked Ok

if Err.Number = 0 then

	LogMessage "User has pressed OK in the modal property editor"

else

	LogMessage "User has pressed CANCEL in the modal property editor"

end if

' Open a property editor and lock it

InspectObj "Camera",,, siLock

LogMessage "User has opened a property editor and has locked it"

2. VBScript Example

'

'	This example demonstrates how you can inspect multiple objects on the same Property Page

'

NewScene , false

SelectObj "Scene_Root"

CreatePrim "Sphere", "MeshSurface"

'Add a custom property set and a bend operator

SIAddCustomParameter "sphere", "Param", siDouble, 0, 0, 1, , 5, 0, 1

ApplyOp "Bend", "sphere", 3, siPersistentOperation

set myPPGList = CreateObject("XSI.Collection")

myPPGList.Add "sphere.CustomPSet"

myPPGList.Add "sphere.polymsh.bendop"

'The property page will show both the custom property set and 

'the bend operation.

InspectObj myPPGList

3. VBScript Example

'

'	The following uses InspectObj to inspect several properties 

'	in a multi-edit fashion

'

NewScene , false

CreatePrim "Sphere", "MeshSurface"

CreatePrim "Cylinder", "MeshSurface"

SelectObj "cylinder.kine.global,sphere.kine.global"

InspectObj 

LogMessage "The global kinestate of both the sphere and the cylinder"

LogMessage "are inspected together in a bulk-edit fashion"

4. VBScript Example

' Set up a sphere

NewScene ,False

set oSphere = CreatePrim( "Sphere", "MeshSurface" )

' Open a general property editor 

InspectObj , siGeneralKeyword

' Set up a deform on the sphere 

ApplyOp "Bulge", oSphere, 3, siPersistentOperation

' Open the Deform property editor for the sphere

InspectObj , siDeformKeyword

' Add some animation

SaveKey oSphere.active

SetValue "PlayControl.Key", 65

SetValue "PlayControl.Current", 65

Translate , 3.9582518712148, 3.40954109797705, -0.340954109797705, siRelative, siView, siObj, siXYZ

SaveKey oSphere.active 

' Open the Animation property editor for the sphere

InspectObj , siAnimationKeyword

5. VBScript Example

'

'	Another example demonstrating inspecting objects in multi-edit mode.

'

NewScene , false

SelectObj "Scene_Root"

set oSphere1 = CreatePrim( "Sphere", "MeshSurface", "FirstSphere")

set oSphere2 = CreatePrim( "Sphere", "MeshSurface", "SecondSphere")

set myPPGList = CreateObject("XSI.Collection")

myPPGList.Add oSphere1.Primitives(1)

myPPGList.Add oSphere2.Primitives(1)

'The property page will show just a single Radius control

'that will control both spheres

InspectObj myPPGList, "Primitive"

6. JScript Example

/*

	This example shows how to create a temporary instance of the Self-Installed 

	Custom Property called "CustomColor".

*/

var oColor = XSIFactory.CreateObject( "CustomColor" )

bCancelled = InspectObj( oColor,null,"Pick your favorite color",siModal,false ) ;

if ( !bCancelled )

{

	LogMessage( "You picked " + oColor.Color_R.Value + "," + oColor.Color_G.Value + "," + oColor.Color_B.Value ) ;

}

7. JScript Example

/*

	This example demonstrates the use of the Throw argument.

	When you run this script, make sure you close the dialog using 

	the X (close) button on the top right or the Cancel button in

	the main body of the dialog.

*/

// Set up a quick dialog in a property page

NewScene( null, false );

var pset = SetUpPSet();

// Canceling here returns 'true'

var rtn1 = InspectObj( pset, "", "Throw = FALSE", siModal, false );

LogMessage( "Value returned: " + rtn1 );

// Canceling here throws an error.

try

{

	var rtn2 = InspectObj( pset, "", "Throw = TRUE", siModal );

	// This line is never executed if the user presses cancel

	LogMessage( "Value returned: " + rtn2 );

}

catch(e)

{

	LogMessage( "User cancelled" );

}

// This is a convenience function that sets up the property page apart

// from the main demo

function SetUpPSet( )

{

	// Create the underlying pset

	var prop = XSIFactory.CreateObject("CustomProperty");

	prop.Name = "Jetsam" ;

	prop.AddParameter3( "SelectOne", siFloat, 0 );

	// Set up its appearance

	var pout = prop.PPGLayout;

	var avals = new Array(

		"One",		1,

		"Two",		2,

		"Three",	3,

		"Four",		4,

		"Five",		5

	);

	pout.AddEnumControl( "SelectOne", avals, "", siControlCombo );

	// Return the property set

	return prop;

}

See Also

PPG PPGLayout