Получите соответствующий значок для типа узла в Maya

Я хочу использовать те же значки, которые показывает планировщик для узлов в Maya, в моем инструменте Qt внутри Maya?. Есть ли способ найти путь к значкам или значкам в Qt узлов, которые у меня есть, в зависимости от типа?

Есть ли... какой-либо способ получить эти значки с помощью кода?


person Darkgaze    schedule 14.04.2016    source источник


Ответы (1)


Не существует прямого способа автоматической установки значка в соответствии с типом узла. Но, изучив шаблон имя изображения значка, вы можете запросить тип узла, а затем соответствующим образом установить изображение значка.

Справочник — nodeIconButton — примеры Python (из документации Maya)

import maya.cmds as cmds

window = cmds.window( )
cmds.columnLayout( adjustableColumn=True )
cmds.nodeIconButton( style='iconOnly', command='cmds.sphere()', image1='sphere.png' )
cmds.nodeIconButton( style='iconAndTextHorizontal', command='cmds.spotLight()', image1='spotlight.png', label='Spot Light' )
cmds.showWindow( window )

Здесь тип узла будет sphere, а значок будет sphere.png. То же самое относится и к spotLight, где соответствующий значок будет spotlight.png.

Поместите соответствующее имя типа узла в качестве префикса для значка png, который должен работать для большинства типов узлов.

person Sukhpal Vasdev    schedule 19.04.2016
comment
Вы также можете создать ассоциативный массив для каждого типа узла, связанного с именем значка, который вы искали самостоятельно. - person oktomus; 19.04.2016
comment
Это здорово, ребята! . Я приму ответ, когда проверю это в следующем месяце (не знаю, когда). Большое спасибо. - person Darkgaze; 21.04.2016
comment
Я пытался использовать это. Это выглядит фантастически. Но он продолжает создавать пустые полки каждый раз, когда я это называю (очевидно). Я попытался сохранить этот nodeIconButton в переменной и получить значок с помощью .icon(), но он возвращает строку Unicode. Как я мог создать элемент, не добавляя его, просто создать его, получить значок, а затем удалить его? - person Darkgaze; 21.04.2016
comment
Вы можете сохранить проверку/условие в своем cmd/коде. Если объект существует, вы можете игнорировать процесс создания, иначе он должен создаться. При этом он не будет создавать для каждого экземпляра вызываемую функцию. Это отвечает на ваш вопрос? - person Sukhpal Vasdev; 05.05.2016