Usage Examples
Add Translation, Rotation, and Scale Operations
import omni.usd
import omni.kit.commands
from omni.kit.property.transform import AddXformOpCommand
# Ensure the omni.usd extension is enabled
omni.kit.app.get_app().get_extension_manager().set_extension_enabled_immediate("omni.usd", True)
# Get the current stage
stage = omni.usd.get_context().get_stage()
# Check if the stage is valid
if stage:
prim_path = "/World/MyPrim"
# Check if the primitive exists
prim = stage.GetPrimAtPath(prim_path)
if prim:
# Create a command to add transform operations to the primitive
add_xform_op_command = AddXformOpCommand(
payload={'stage': stage, 'prim_paths': [prim_path]},
precision=None,
rotation_order="XYZ",
add_translate_op=True,
add_orient_op=True,
add_scale_op=True,
add_transform_op=False,
add_pivot_op=False
)
# Execute the command to add the operations
omni.kit.commands.execute(add_xform_op_command)
Change Rotation Operation
import omni.usd
from omni.kit.property.transform import ChangeRotationOpCommand
from pxr import UsdGeom
# Ensure the omni.usd extension is enabled
omni.kit.app.get_app().get_extension_manager().set_extension_enabled_immediate("omni.usd", True)
# Get the current stage
stage = omni.usd.get_context().get_stage()
# Check if the stage is valid
if stage:
prim_path = "/World/MyPrim"
# Get the rotate operation attribute
rotate_attr = UsdGeom.Xformable(stage.GetPrimAtPath(prim_path)).GetOrderedXformOps()[0]
# Create a command to change the rotation operation from ZYX to XYZ
change_rotation_op_command = ChangeRotationOpCommand(
src_op_attr_path=rotate_attr.GetPath(),
op_name="rotateXYZ",
dst_op_attr_name="xformOp:rotateXYZ",
is_inverse_op=False
)
# Execute the command to apply the change
omni.kit.commands.execute(change_rotation_op_command)
Remove Transformation Operation
import omni.usd
from omni.kit.property.transform import RemoveXformOpCommand
from pxr import UsdGeom
# Ensure the omni.usd extension is enabled
omni.kit.app.get_app().get_extension_manager().set_extension_enabled_immediate("omni.usd", True)
# Get the current stage
stage = omni.usd.get_context().get_stage()
# Check if the stage is valid
if stage:
xformable = UsdGeom.Xformable(stage.GetPrimAtPath("/World/MyPrim"))
# Get the xformOpOrder attribute
xform_op_order_attr = xformable.GetXformOpOrderAttr()
xform_ops = xformable.GetOrderedXformOps()
xform_op_to_remove = xform_ops[0] # Remove the first operation
# Create a command to remove the first xform operation
remove_xform_op_command = RemoveXformOpCommand(
op_order_attr_path=xform_op_order_attr.GetPath(),
op_name=xform_op_to_remove.GetOpName(),
op_order_index=0 # Index of the operation in the xformOpOrder attribute
)
# Execute the command to remove the operation
omni.kit.commands.execute(remove_xform_op_command)
Remove Transformation Operation and Its Attribute
import omni.usd
from omni.kit.property.transform import RemoveXformOpAndAttrbuteCommand
from pxr import UsdGeom
# Ensure the omni.usd extension is enabled
omni.kit.app.get_app().get_extension_manager().set_extension_enabled_immediate("omni.usd", True)
# Get the current stage
stage = omni.usd.get_context().get_stage()
# Check if the stage is valid
if stage:
xformable = UsdGeom.Xformable(stage.GetPrimAtPath("/World/MyPrim"))
# Get the xformOpOrder attribute
xform_op_order_attr = xformable.GetXformOpOrderAttr()
xform_ops = xformable.GetOrderedXformOps()
xform_op_to_remove = xform_ops[0] # Remove the first operation
# Create a command to remove the first xform operation and its attribute
remove_xform_op_and_attribute_command = RemoveXformOpAndAttrbuteCommand(
op_order_attr_path=xform_op_order_attr.GetPath(),
op_name=xform_op_to_remove.GetOpName(),
op_order_index=0 # Index of the operation in the xformOpOrder attribute
)
# Execute the command to remove the operation and its attribute
omni.kit.commands.execute(remove_xform_op_and_attribute_command)
Enable Transformation Operation
import omni.usd
from omni.kit.property.transform import EnableXformOpCommand
# Ensure the omni.usd extension is enabled
omni.kit.app.get_app().get_extension_manager().set_extension_enabled_immediate("omni.usd", True)
# Get the current stage
stage = omni.usd.get_context().get_stage()
# Check if the stage is valid
if stage:
xform_op_attr_path = "/World/MyPrim.xformOp:translate"
# Create a command to enable the translate xformOp
enable_xform_op_command = EnableXformOpCommand(op_attr_path=xform_op_attr_path)
# Execute the command to enable the translate operation
omni.kit.commands.execute(enable_xform_op_command)