Различать текущие и новые предметы в outliner
Можно ли сохранить текущие предметы в Outliner, а также новые предметы?
def main():
setupRenderGlobals()
importItems()
frameViewport()
global app
app=QtGui.qApp
global form
form = MainWindow()
form.show()
Например. Текущие элементы в Outliner (кроме элементов по умолчанию, например камеры): ['pCube1', 'pCube2', 'pSphere1']
Затем импортируем. Добавляем новые элементы: ['pCube1', 'pCube2', 'pSphere1', 'Man_Rig01', 'pShere2']
Может ли кто-нибудь подсказать мне, как выписать способ, которым я могу дифференцировать новые предметы? В настоящее время мое окно импорта (использующее внутренний модуль, который является importItems()) продолжает отображать окно префикса (MainWindow()), когда я нажимаю кнопку закрытия / независимо от того, импортирую ли я какие-либо элементы или нет. Поэтому я хотел написать это так, чтобы окно префикса появлялось только при добавлении новых элементов.
Сообщение для близких избирателей: Этот вопрос не является непонятным для пользователей Maya. Есть ответы, ожидающие публикации, но вопрос нужно сначала открыть заново.
1 ответ
Maya хранит объекты в списке. Поэтому каждый раз, когда вы импортируете материал, он попадает в конец указанного списка, так что если вы делаете,
coutBefore = len(cmds.ls())
до вашего импорта. Затем вы можете продолжить:
nodesImported = cmds.ls()[coutBefore:]
после импорта. Можно обернуть это в импорт напрямую. Но это лучше всего сделать в MEL. Заметьте: я не думаю, что это хороший подход. Так как у вас нет пространства имен, чтобы защитить любые возможные проблемы с импортом от плохо сделанных сцен. Таким образом, альтернативным решением было бы импортировать с пространством имен, а затем удалить пространство имен по запросу пользователя.