docs.unity3d.com
Version: 

    Filter expressions

    This section contains information about advanced scripting in Pixyz Studio.

    Filter expressions let you run a single Python call for multiple operations in the Pixyz Core module.

    This example show how you can use filter expressions:

    ## Without filter expressions: n * execution time of core.getProperty
    
    names = list()
    
    for occurrence in scene.findOccurrencesByProperty('Name', '.*'): # scene.findOccurrencesByProperty('Name', '.*') returns all scene occurrences
    
           names.append(core.getProperty(occurrence, 'Name'))
    
    ## With filter expressions: one call for multiple operations
    
    names = scene.evaluateExpressionOnSubTree('Property("Name")', scene.getRoot())
    

    Types

    An expression returns a value that is of one of these types:

    • None
    • Entity – an entity may be an occurrence, a component, a material…
    • String
    • Numeric
    • Boolean

    Functions

    You can use these functions:

    • Boolean String.Matches(String regexp)
    • String Entity.Property(String propertyName)
    • Boolean Entity.SetProperty(String propertyName, String propertyValue)
    • Occurrence Occurrence.Parent()
    • Entity Occurrence.Component(String componentType)
    • Boolean This.IsNone()
    • Numeric This.ToNumeric()

    All functions apply to an object. This code block shows an example:

    ## Filters all occurrences containing `Hello` in the property Name
    
    ## Property returns a String and applies on an Occurrence
    
    ## Matches applies on an Occurrence and returns a Boolean
    
    Property('Name').Matches('.*Hello.*')
    

    Logical operators

    You can use these logical operators:

    Logical operator Example Result
    AND Expr = Expr1 OR Expr2 If Expr1 == true, returns eval(Expr1).
    Otherwise, returns eval(Expr2).
    OR Expr = Expr1 AND Expr2 If Expr1 == false, returns eval(Expr1).
    Otherwise, returns eval(Expr2).

    Examples

    Hide all unselected occurrences:

    selection = scene.getSelectedOccurrences()
    
    scene.evaluateExpressionOnOccurrences(selection, 'SetProperty("Visible", "Inherited")')
    
    scene.invertSelection()
    
    unselected = scene.getSelectedOccurrences()
    
    scene.evaluateExpressionOnOccurrences(unselected, 'SetProperty("Visible", "False")')
    
    scene.clearSelection()
    
    scene.select(selection)
    

    Select all occurrences whose parent has a material whose name contains "8":

    filter = 'Parent().Property("Material") AND Parent().Property("Material").Property("Name").Matches(".*8.*")'
    
    occs = scene.getFilteredOccurrences(filter)
    
    scene.select(occs)
    
    Pixyz Studio 2025.1.1.2 based on SDK 2025.1.2.3
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX.