Search code examples
pythonmayaautodeskmaya-api

how set set attribute ('primaryVisibility') in override.AbsOverride maya 2018 or 2019


how set set attribute ('primaryVisibility') in override.AbsOverride maya 2018 or 2019

import maya.app.renderSetup.model.override as override
import maya.app.renderSetup.model.selector as selector
import maya.app.renderSetup.model.collection as collection
import maya.app.renderSetup.model.renderLayer as renderLayer
import maya.app.renderSetup.model.renderSetup as renderSetup
import maya.cmds as cmds

rs = renderSetup.instance()    
# Create render layer

r1 = rs.createRenderLayer("char_beauty")


# Create collections

c1 = r1.createCollection("char")

c2 = r1.createCollection("trk_geo")

c2pv=c2.createCollection("PV")

c2pv.getSelector().setFilterType(2)


so=c2.createOverride('PV', override.AbsOverride.kTypeId)

so.setattribute('primaryVisibility')

try to create primaryVisibility attribute.. for trk_geo collection ..don't know set primaryVisibility attribute in AbsOverride .


Solution

  • It looks like your code is missing a finalize method call on the override:

    import maya.app.renderSetup.model.override as override
    import maya.app.renderSetup.model.selector as selector
    import maya.app.renderSetup.model.collection as collection
    import maya.app.renderSetup.model.renderLayer as renderLayer
    import maya.app.renderSetup.model.renderSetup as renderSetup
    import maya.cmds as cmds
    
    rs = renderSetup.instance()    
    
    # Create render layer
    r1 = rs.createRenderLayer("char_beauty")
    
    # Create collections
    c1 = r1.createCollection("char")
    c2 = r1.createCollection("trk_geo")
    c2pv=c2.createCollection("PV")
    c2pv.getSelector().setFilterType(2)
    
    # Create override
    so = c2.createOverride('PV', override.AbsOverride.kTypeId)
    so.finalize('visibility')
    

    If you don't know the name of the attribute, you may skip the last finalize call, then assign the override manually by drag-and-dropping the attribute from the Attribute Editor and then call the print so.attributeName() to see the actual name.