Usage Examples#
Set Primvar Values on Selected Prims#
import omni.kit.commands
import omni.kit.property.geometry
import omni.usd
# Get the current USD context
usd_context = omni.usd.get_context()
# Get the path of the currently selected prim(s)
selection = usd_context.get_selection()
prim_paths = selection.get_selected_prim_paths()
if prim_paths:
# Set a boolean primvar on the selected prims
bool_primvar = omni.kit.property.geometry.PrimVarCommand(
prim_path=prim_paths,
prim_name="myBoolean",
prim_type="Sdf.ValueTypeNames.Bool",
value=True
)
omni.kit.commands.execute(bool_primvar)
# Set a float primvar on the selected prims
float_primvar = omni.kit.property.geometry.PrimVarCommand(
prim_path=prim_paths,
prim_name="myFloat",
prim_type="Sdf.ValueTypeNames.Float",
value=3.14
)
omni.kit.commands.execute(float_primvar)
Toggle Boolean Primvar on Selected Prims#
import omni.kit.commands
import omni.kit.property.geometry
import omni.usd
# Get the current USD context
usd_context = omni.usd.get_context()
# Get the path of the currently selected prim(s)
selection = usd_context.get_selection()
prim_paths = selection.get_selected_prim_paths()
if prim_paths:
# First, ensure we have a boolean primvar to toggle
set_primvar = omni.kit.property.geometry.PrimVarCommand(
prim_path=prim_paths,
prim_name="visibility",
prim_type="Sdf.ValueTypeNames.Bool",
value=True
)
omni.kit.commands.execute(set_primvar)
# Now toggle the boolean primvar (will become False)
toggle_command = omni.kit.property.geometry.TogglePrimVarCommand(
prim_path=prim_paths,
prim_name="visibility"
)
omni.kit.commands.execute(toggle_command)
# Toggle again (will become True)
omni.kit.commands.execute(toggle_command)
Toggle Instanceability on Selected Prims#
import omni.kit.commands
import omni.kit.property.geometry
import omni.usd
# Get the current USD context
usd_context = omni.usd.get_context()
# Get the path of the currently selected prim(s)
selection = usd_context.get_selection()
prim_paths = selection.get_selected_prim_paths()
if prim_paths:
# Create and execute the command to toggle instanceability
instanceable_command = omni.kit.property.geometry.ToggleInstanceableCommand(
prim_path=prim_paths
)
omni.kit.commands.execute(instanceable_command)
# Check if the prims are now instanceable
stage = usd_context.get_stage()
for path in prim_paths:
prim = stage.GetPrimAtPath(path)
if prim:
print(f"Prim {path} instanceable: {prim.IsInstanceable()}")
Access GeometryPropertyExtension Instance#
import omni.kit.property.geometry
# Get the current instance of the GeometryPropertyExtension
ext_instance = omni.kit.property.geometry.get_instance()
# Check if the extension is available
if ext_instance:
# Register a custom visual attribute
ext_instance.register_custom_visual_attribute(
attribute_name="customAttr",
display_name="My Custom Attribute",
type_name="Sdf.ValueTypeNames.Bool",
default_value=False,
predicate=lambda x: True # Always show this attribute
)
print("Custom attribute 'customAttr' registered")
# Later, we can deregister it
ext_instance.deregister_custom_visual_attribute("customAttr")
print("Custom attribute 'customAttr' deregistered")