v1.0
Applies an operator to one or several objects, returns any
objects created by the operator, and opens the newly applied
operator's property page. This is a generic command that can apply
any type of operator (hair, deform, generator, topology, custom,
etc.).
You can also use commands that are specific to the type of operator
you are applying. For example, the ApplyGenOp command can be used to apply
generator operators (such as the Birail or Loft operators). Some
operators have their own commands, such as the HairCombOp which can
be applied with the ApplyHairCombOp.
This command supports group-level ConnectionSets only. To specify a
port-level ConnectionSet, use the ApplyOperator command instead.
Tip: These type-specific commands often have features that are
specialized for the type of operator you are applying. For example,
the ApplyGenOp command gives the option of applying the operator in
immediate or persistent mode and another option for what to do with
the input (original) objects after the new geometry has been
generated, whereas this command does not provide those
options.
Note: This command uses output
arguments. C# and some scripting languages (such as JScript,
PerlScript and Python) don't support arguments passed by reference.
Normally you can get the output arguments via either XSIApplication.ExecuteCommand
method (C#) or the ISIVTCollection (scripting
languages), but this command already returns a value.
The only available workaround in this case is to create a VBScript
custom command which returns both the output arguments and the
return value in one array. For details, see What Happens when the Function Already
Returns a Value?.
oReturn = ApplyOp( PresetObj, [ConnectionSet], [ConnectType], [ImmediateMode], [OutputObjs], [ConstructionMode] ); |
Returns an XSICollection that contains a list of the created operators.
Parameter | Type | Description |
---|---|---|
PresetObj | String or a preset object (for example, an object obtained from SIGetPreset) | Operator Preset. |
ConnectionSet | ConnectionSet | Specifies the objects connected to an operator. Note: Because this is an in/out parameter, any string (variable or value) you pass into this parameter is automatically converted to a ConnectionSet object. Default Value:
Currently selected objects are used as the main group. |
ConnectType | siBranchFlag | Specifies the type of connection (node or branch).
Default Value: siUnspecified |
ImmediateMode | siOperationMode | Specifies whether or not the operator should be immediately
frozen.
Default Value: siPersistentOperation |
OutputObjs | XSICollection | Returns the primitives created by the operator. For example, Loft creates a primitive surface. |
ConstructionMode | siConstructionMode | Specifies in which construction mode the operator will be
applied.
Default Value: Use the current construction mode |
' ' This example illustrates how to create ' loft operators ' ' ' Use Loft to create a surface from 2 curves ' set curve1 = CreatePrim( "Arc", "NurbsCurve" ) translate curve1, , , 2 set curve2 = CreatePrim( "Arc", "NurbsCurve" ) set oplist = ApplyOp( "Loft", curve1 & "," & curve2,,,createdobjects ) set loftop = oplist(0) ' change the subdivision level in U setvalue loftop & ".subdivu", 19 ' ' Loft onto an existing surface ' set surface = createdobjects(0) surface.name = "Surface_created_by_lofting_2_curves" set curve1 = CreatePrim( "Arc", "NurbsCurve" ) translate curve1, , , 2 set curve2 = CreatePrim( "Arc", "NurbsCurve" ) set surface = CreatePrim( "Grid", "NurbsSurface", "Loft_into_existing_surface" ) ' Freeze the surface so that the object can be used to contain a ' new lofted surface FreezeObj surface set oplist = ApplyOp( "Loft", curve1 & "," & curve2 & ";" & surface ) set surface = oplist(0) surface.name = "Surface_created_by_lofting_2_curves" |
/* Example showing how to retrieve the newly created operator when ApplyOp is called on a single object */ // Create primitive oCube = activesceneroot.addgeometry( "Cube", "MeshSurface" ); // Call command to apply a Taper deformer and // retrieve the newly created operator oColl = ApplyOp( "Taper", oCube, 3, 0, null, 0 ) ; // Because there is only 1 input object (oCube) // we know there is only one operator created var oOp = oColl(0); // Modify the Amplitude Parameter oOp.ampl = 0.25 ; |
// Create empty collection to store objects that // we want to apply the operator to oInputCollection = XSIFactory.CreateObject( "XSI.Collection" ); // Create primitive oInputCollection.add( activesceneroot.addgeometry( "Cube", "MeshSurface" ) ); oInputCollection.add( activesceneroot.addgeometry( "Sphere", "MeshSurface" ) ); // Call command to apply a Taper deformer and populate collection with its return value oOps = ApplyOp( "Taper", oInputCollection, 3, 0, null, 0 ) ; // Validate result for( var i=0; i < oOps.count; i++ ) { // Get operator oOp = oOps(i); logmessage( oOp.fullname ); } //Expected results: //INFO : cube.polymsh.taperop //INFO : sphere.polymsh.taperop |