mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
Merge pull request #3523 from pypeclub/bugfix/maya_setAttr_safe
Maya: Added wrapper around cmds.setAttr
This commit is contained in:
commit
a2191c5dd5
1 changed files with 22 additions and 10 deletions
32
openpype/vendor/python/common/capture.py
vendored
32
openpype/vendor/python/common/capture.py
vendored
|
|
@ -403,7 +403,7 @@ def apply_view(panel, **options):
|
|||
camera_options = options.get("camera_options", {})
|
||||
_iteritems = getattr(camera_options, "iteritems", camera_options.items)
|
||||
for key, value in _iteritems:
|
||||
cmds.setAttr("{0}.{1}".format(camera, key), value)
|
||||
_safe_setAttr("{0}.{1}".format(camera, key), value)
|
||||
|
||||
# Viewport options
|
||||
viewport_options = options.get("viewport_options", {})
|
||||
|
|
@ -417,7 +417,7 @@ def apply_view(panel, **options):
|
|||
)
|
||||
for key, value in _iteritems():
|
||||
attr = "hardwareRenderingGlobals.{0}".format(key)
|
||||
cmds.setAttr(attr, value)
|
||||
_safe_setAttr(attr, value)
|
||||
|
||||
|
||||
def parse_active_panel():
|
||||
|
|
@ -551,10 +551,10 @@ def apply_scene(**options):
|
|||
cmds.playbackOptions(maxTime=options["end_frame"])
|
||||
|
||||
if "width" in options:
|
||||
cmds.setAttr("defaultResolution.width", options["width"])
|
||||
_safe_setAttr("defaultResolution.width", options["width"])
|
||||
|
||||
if "height" in options:
|
||||
cmds.setAttr("defaultResolution.height", options["height"])
|
||||
_safe_setAttr("defaultResolution.height", options["height"])
|
||||
|
||||
if "compression" in options:
|
||||
cmds.optionVar(
|
||||
|
|
@ -665,7 +665,7 @@ def _applied_camera_options(options, panel):
|
|||
|
||||
_iteritems = getattr(options, "iteritems", options.items)
|
||||
for opt, value in _iteritems():
|
||||
cmds.setAttr(camera + "." + opt, value)
|
||||
_safe_setAttr(camera + "." + opt, value)
|
||||
|
||||
try:
|
||||
yield
|
||||
|
|
@ -673,7 +673,7 @@ def _applied_camera_options(options, panel):
|
|||
if old_options:
|
||||
_iteritems = getattr(old_options, "iteritems", old_options.items)
|
||||
for opt, value in _iteritems():
|
||||
cmds.setAttr(camera + "." + opt, value)
|
||||
_safe_setAttr(camera + "." + opt, value)
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
|
|
@ -760,7 +760,7 @@ def _applied_viewport2_options(options):
|
|||
# Apply settings
|
||||
_iteritems = getattr(options, "iteritems", options.items)
|
||||
for opt, value in _iteritems():
|
||||
cmds.setAttr("hardwareRenderingGlobals." + opt, value)
|
||||
_safe_setAttr("hardwareRenderingGlobals." + opt, value)
|
||||
|
||||
try:
|
||||
yield
|
||||
|
|
@ -768,7 +768,7 @@ def _applied_viewport2_options(options):
|
|||
# Restore previous settings
|
||||
_iteritems = getattr(original, "iteritems", original.items)
|
||||
for opt, value in _iteritems():
|
||||
cmds.setAttr("hardwareRenderingGlobals." + opt, value)
|
||||
_safe_setAttr("hardwareRenderingGlobals." + opt, value)
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
|
|
@ -802,14 +802,14 @@ def _maintain_camera(panel, camera):
|
|||
else:
|
||||
state = dict((camera, cmds.getAttr(camera + ".rnd"))
|
||||
for camera in cmds.ls(type="camera"))
|
||||
cmds.setAttr(camera + ".rnd", True)
|
||||
_safe_setAttr(camera + ".rnd", True)
|
||||
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
_iteritems = getattr(state, "iteritems", state.items)
|
||||
for camera, renderable in _iteritems():
|
||||
cmds.setAttr(camera + ".rnd", renderable)
|
||||
_safe_setAttr(camera + ".rnd", renderable)
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
|
|
@ -846,6 +846,18 @@ def _in_standalone():
|
|||
return not hasattr(cmds, "about") or cmds.about(batch=True)
|
||||
|
||||
|
||||
def _safe_setAttr(*args, **kwargs):
|
||||
"""Wrapper to handle failures when attribute is locked.
|
||||
|
||||
Temporary hotfix until better approach (store value, unlock, set new,
|
||||
return old, lock again) is implemented.
|
||||
"""
|
||||
try:
|
||||
cmds.setAttr(*args, **kwargs)
|
||||
except RuntimeError:
|
||||
print("Cannot setAttr {}!".format(args))
|
||||
|
||||
|
||||
# --------------------------------
|
||||
#
|
||||
# Apply version specific settings
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue