Что именно делает cmds.scriptCtx в Python Maya? - PullRequest
3 голосов
/ 14 октября 2019

Мне интересно, что именно делает команда cmds.scriptCtx, потому что я пытался скопировать и вставить ее прямо со страницы справки Autodesk в мой редактор сценариев, и ничего не произошло. Вот скрипт из справки Autodesk:

import maya.cmds as cmds

cmds.scriptCtx( title='Attach Curve', totalSelectionSets=1, fcs="select -r $Selection1; performAttachCrv 0 \"\"", cumulativeLists=True, expandSelectionList=True, setNoSelectionPrompt='Select two curves close to the attachment points', setSelectionPrompt='Select a second curve close to the attachment point', setDoneSelectionPrompt='Never used because setAutoComplete is set', setAutoToggleSelection=True, setSelectionCount=2, setAutoComplete=True, curveParameterPoint=True )

Я попытался выбрать одну кривую и две кривые или вообще ничего не выбирать, и ничего не произошло. Я что-то пропустил?

Я использую Maya 2018 для этого сценария.

Спасибо, ребята.

1 Ответ

3 голосов
/ 15 октября 2019

Мне всегда было интересно, что это была за команда, но я никогда не видел, чтобы кто-то другой использовал ее, поэтому всегда заканчивал тем, что игнорировал ее.

Не расстраивайтесь из-за того, что не получаете ее, документация делаетБог ужасная работа, объясняющая, как работает пример. Мне пришлось покопаться, чтобы выяснить, что в нем полностью отсутствует необходимость использовать cmds.setToolTo().

Создайте 2 кривые, запустите их, а затем выберите кривую по одной:

import maya.cmds as cmds

picker = cmds.scriptCtx(
    title='Attach Curve', totalSelectionSets=1, fcs="select -r $Selection1; performAttachCrv 0 \"\"", 
    cumulativeLists=True, expandSelectionList=True, setNoSelectionPrompt='Select two curves close to the attachment points', 
    setSelectionPrompt='Select a second curve close to the attachment point', setDoneSelectionPrompt='Never used because setAutoComplete is set', 
    setAutoToggleSelection=True, setSelectionCount=2, setAutoComplete=True, curveParameterPoint=True
)


cmds.setToolTo(picker)

Так что, по сути, это сборщик объектов. Когда вы запустите его, курсор изменится и отобразит инструкции для пользователя. В этом примере написано 2 кривых. Когда вы выбираете один, инструкции обновляются, чтобы сказать, выберите другую кривую. Когда выбирается другая кривая, запускается скрипт для присоединения обеих кривых. Пользователь также может нажать esc в любое время, чтобы отменить его. Здесь есть все параметры масок, так что вы можете ограничить тип объектов, которые может выбрать пользователь.

Исходя из 3dsMax, это на самом деле довольно круто, но реализация кажется плохой. Для пользователя не совсем очевидно, что этот сборщик происходит. Инструкции в любом случае не окрашены, и их легко пропустить в нижнем углу интерфейса Maya. Вы также не можете выбрать объект из планировщика, который смехотворно плохой дизайн. И, насколько я понимаю, он поддерживает только MEL.

Это круто знать, но я все еще не думаю, что буду его использовать.

...