Импорт нового формата файла без использования команд Maya API

Можно ли использовать maya.cmds вместо использования любого Maya API для загрузки/импорта в формате файла, в котором он не является частью типов файлов Maya?

Я пробовал гуглить, но безрезультатно, кроме команды fileDialog в Maya, иначе это означало бы, что мне нужно будет реализовать API Maya (где у меня совершенно нет опыта работы с ним)

Я пробовал следующее:

multipleFilters = "chan (*.chan)"
fileList = cmds.fileDialog2(fileMode=1, fileFilter=multipleFilters, dialogStyle=2)
if not fileList:
    # return or print something or bail out early

filename = fileList[0]
cmds.file(filename, i=True)

Вместо этого я продолжаю получать следующую ошибку:

# Error: Unrecognized file.
# Traceback (most recent call last):
#   File "<maya console>", line 3, in <module>
# RuntimeError: Unrecognized file. #

Любые идеи?


person dissidia    schedule 07.09.2014    source источник


Ответы (1)


cmds.file работает только с файлами с трансляторами, зарегистрированными через API, либо на Python, либо на C++.

Однако вы можете легко написать сценарии Python (или даже mel), которые считывают файлы с диска и создают что-то в ваших сценах. Вы можете использовать cmds.fileDiialog2, чтобы предоставить пользователю диалоговое окно с файлом для выбора файла с диска, но чтение файла будет зависеть от вас.

multipleFilters = "chan (*.chan)"
fileList = cmds.fileDialog2(fileMode=1, fileFilter=multipleFilters, dialogStyle=2)

with open (fileList[0], 'rt') as filehandle:
     for line in filehandle:
         print line # or do something useful with the data
person theodox    schedule 07.09.2014
comment
Привет, я вижу, что он может читать файл, но есть ли способы импортировать его в сцену? До сих пор я знал только метод cmds.file как средство импорта, не говоря уже о том, что у меня нет файловых переводчиков, которые обслуживают .chan в моем каталоге плагинов. - person dissidia; 08.09.2014
comment
если у вас есть зарегистрированный переводчик (и он у вас включен), вы можете открыть его с помощью cmds.file. В противном случае вы можете просто прочитать текстовый файл и выполнять операции сценария в текущей открытой сцене на основе того, что вы прочитали. Это не «импорт» как таковой, но это довольно распространенный подход. - person theodox; 08.09.2014
comment
поправьте меня, если я ошибаюсь. Зарегистрированный переводчик = плагины? Если да, значит ли это, что эта операция может включать API? Извините, я немного запутался, так как меня кружили по кругу из-за импорта с помощью API и т. Д. - person dissidia; 09.09.2014
comment
Да: вам нужно создать класс из MPXFileTranslator и реализовать метод reader(). Вы можете посмотреть download.autodesk.com/global/docs/ mayasdk2012/en_us/index.html Если у вас возникли проблемы с началом работы, вы можете посмотреть книгу Адама Мечтли о Maya Python, в которой есть раздел API в конце, хотя я не помню, есть ли в нем файл. переводчики - person theodox; 09.09.2014
comment
Спасибо, что ответили мне, и я думаю, что ваш ответ полностью соответствует тому, что я хотел знать, поскольку у меня сложилось впечатление, что я могу импортировать/открывать файл (не входящий в список форматов файлов Maya) с помощью maya.cmds. Я попытаюсь посмотреть в этой книге, а также в поиске любых документов для переводчиков файлов - person dissidia; 09.09.2014