Различать текущие и новые предметы в 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. Заметьте: я не думаю, что это хороший подход. Так как у вас нет пространства имен, чтобы защитить любые возможные проблемы с импортом от плохо сделанных сцен. Таким образом, альтернативным решением было бы импортировать с пространством имен, а затем удалить пространство имен по запросу пользователя.

Другие вопросы по тегам