获取maya 中模型是否隐藏状态的方法
方法1:获取mesh 模型的visibility属性
import maya.cmds as cmds
all_meshs = cmds.ls(type = "mesh",dag=True,l=True)
for _mesh in all_meshs:
_is_show = cmds.getAttr("{}.visibility".format(_mesh))
if _is_show ==0:
print(u"{}---隐藏".format(_mesh))
else:
print(u"{}---显示".format(_mesh))
这是比较简单的方法,直接获取节点的属性,但是局限性比较大,比如当父层级节点或更上层节点是设置隐藏了的时候,是没有办法准确节点是否隐藏的,所以我们直接用maya 的api 来获取节点的显示状态
方法2:使用maya 的api 来获取节点的状态
import maya.api.OpenMaya as OpenMaya
import maya.api.OpenMayaUI as OpenMayaUI
def get_object_display_status(node_name):
selection_list = OpenMaya.MSelectionList()
selection_list.add(node_name)
dag_path = selection_list.getDagPath(0)
view = OpenMayaUI.M3dView.active3dView()
displayStatus = view.displayStatus(dag_path)
return displayStatus
这里面返回的displayStatue 是返回的状态代号,我们后面需要通过具体情况来分析状态
隐藏为3,显示为2,有时候会出现8,是上次选中的模型
链接在
Maya 帮助 | Python API 2.0 Reference: OpenMayaUI.M3dView Class Reference | Autodesk