Возможно ли запустить отложенное выполнение кода?

#python #maya

#python #maya

Вопрос:

Возможно ли будет автоматически запускать небольшой набор кода после запуска скрипта?

Я спрашиваю об этом, потому что по некоторым причинам, если я добавлю этот набор кода в основной скрипт, хотя он и работает, он отобразит список ошибок табуляции (он уже есть, но в нем указано, что он не может найти его каким-либо образом).

Я понял, что после запуска моего скрипта Maya, похоже, «загружает» свою собственную настройку обновления вместе с некоторыми плагинами, созданными моей компанией. Таким образом, если я запускаю небольшой набор кода после выполнения моего основного скрипта и обновления Maya / plugins, это работает без проблем. Я хотел бы сделать процесс максимально автоматизированным, все в скрипте, если это возможно…

Таким образом, возможно ли это сделать? Нравится какой-то отложенный метод кодирования? К вашему сведению, время выполнения основного скрипта зависит от количества элементов в сцене. Чем их больше, тем дольше это займет…

Комментарии:

1. Не могли бы вы создать подпроцесс скрипта обновления и подождать, пока он будет завершен?

2. Включить оба скрипта в пакет или оболочку?

3. Просто напишите плагин Maya, который запускает ваш код после обновления?

4. @SukritKalra Что вы имеете в виду?

5. @SergeBallesta С точки зрения практики, как мне поступить в дальнейшем? Простите меня за недостаток знаний..

Ответ №1:

У Maya есть команда Maya.cmds.evalDeferred, предназначенная для этой цели. Он ожидает, пока обработка Maya больше не будет отложена, а затем выполняет самооценку.

Вы также можете использовать Maya.cmds.scriptJob для той же цели.

Примечание: Хотя eval считается опасным и небезопасным в контексте Maya, на самом деле это нормально. Главным образом потому, что все в Maya изначально небезопасно, поскольку почти все элементы графического интерфейса — это просто команды eval, которые пользователь может изменять. Итак, в ту секунду, когда вы позволяете кому-либо использовать вашу оболочку Maya, ваша безопасность нарушена.

Комментарии:

1. Спасибо за понимание проблем. Я согласен с тем, что время от времени задавал довольно нелепые (несколько невозможные) вопросы, отчасти потому, что бывают случаи, в которых, как вы заявили, Maya скорее против меня, чем наоборот. И, честно говоря, на сегодняшний день мне все еще в значительной степени не хватает того, как правильно писать сценарии, то же самое касается различных типов модулей / плагинов, установленных в Maya.

2. Нет ничего невозможного. Мне кажется, что вы привязываете графический интерфейс maya к однослойному подходу, в то время как maya ожидает, что вы будете использовать двухслойный. У вас должен быть автономный вычислительный уровень, а затем позволить gui творить свое волшебство независимо от этого. Так работает вся maya, пытаться сделать это по-другому бесполезно, поскольку maya может работать без графического интерфейса. В любом случае вам, вероятно, следует задавать вопрос о вашем дизайне не так часто на каждом шаге. На данный момент вы копаете себе могилу, каждый ваш шаг ведет вас дальше к формированию решения, которое действительно сработало бы.

3. Также обратите внимание, что мне кажется, что всю вашу работу можно обойти с помощью getAttr