def export_alembic(self): self.saveFile() selectedReferences = [] selectedItems = self.selection_list.selectedItems() for item in selectedItems: selectedReferences.append(item.text()) print "Here are the references: ", selectedReferences if self.showConfirmAlembicDialog(selectedReferences) == 'Yes': loadPlugin("AbcExport") filePath = cmds.file(q=True, sceneName=True) fileDir = os.path.dirname(filePath) proj = Project() checkout = proj.get_checkout(fileDir) body = proj.get_body(checkout.get_body_name()) dept = checkout.get_department_name() elem = body.get_element(dept, checkout.get_element_name()) abcFilePath = elem.get_cache_dir() for ref in selectedReferences: refAbcFilePath = os.path.join( abcFilePath, self.get_filename_for_reference(ref)) print "abcFilePath", refAbcFilePath command = self.build_alembic_command(ref, refAbcFilePath) print "Export Alembic command: ", command Mel.eval(command) os.system('chmod 774 ' + refAbcFilePath) self.close_dialog()
def getElementCacheDirectory(path): proj = Project() checkout = proj.get_checkout(path) body = proj.get_body(checkout.get_body_name()) elem = body.get_element(checkout.get_department_name(), checkout.get_element_name()) return elem.get_cache_dir()
def export_alembic(self): self.saveFile() selectedReferences = [] selectedItems = self.selection_list.selectedItems() for item in selectedItems: selectedReferences.append(item.text()) print "Here are the references: ", selectedReferences if self.showConfirmAlembicDialog(selectedReferences) == "Yes": loadPlugin("AbcExport") filePath = cmds.file(q=True, sceneName=True) fileDir = os.path.dirname(filePath) proj = Project() checkout = proj.get_checkout(fileDir) body = proj.get_body(checkout.get_body_name()) dept = checkout.get_department_name() elem = body.get_element(dept, checkout.get_element_name()) abcFilePath = elem.get_cache_dir() for ref in selectedReferences: abcFilePath = os.path.join(abcFilePath, self.get_filename_for_reference(ref)) print "abcFilePath", abcFilePath command = self.build_alembic_command(ref, abcFilePath) print "Export Alembic command: ", command Mel.eval(command) os.system("chmod 774 " + abcFilePath) self.close_dialog()
def generateGeometry(path=''): ''' Function for generating geometry for Maya files. Creates the following output formats: .obj @return: True if all files were created successfully False if some files were not created @post: Missing filenames are printed out to both the Maya terminal as well as presented in a Maya confirm dialog. ''' path = os.path.dirname(mc.file(q=True, sceneName=True)) print 'generateGeometry start' if not os.path.exists(os.path.join(path, 'cache')): os.makedirs(os.path.join(path, 'cache')) #OBJPATH = os.path.join(path, "cache/objFiles") ABCPATH = os.path.join(path, "cache/abcFiles") #if os.path.exists(OBJPATH): # shutil.rmtree(OBJPATH) if os.path.exists(ABCPATH): shutil.rmtree(ABCPATH) filePath = cmds.file(q=True, sceneName=True) fileDir = os.path.dirname(filePath) proj = Project() checkout = proj.get_checkout(fileDir) body = proj.get_body(checkout.get_body_name()) elem = body.get_element(checkout.get_department_name(), checkout.get_element_name()) abcFilePath = elem.get_cache_dir() selection = mc.ls(geometry=True, visible=True) selection_long = mc.ls(geometry=True, visible=True, long=True) # Temporarily disabled obj support (might not be needed) #objs = objExport(selection, OBJPATH) # Check to see if all .obj files were created #if not len(checkFiles(objs)) == 0: # return False abcs = abcExport(selection_long, ABCPATH) if not len(checkFiles(abcs)) == 0: return False return True
def generateGeometry(path=''): ''' Function for generating geometry for Maya files. Creates the following output formats: .obj @return: True if all files were created successfully False if some files were not created @post: Missing filenames are printed out to both the Maya terminal as well as presented in a Maya confirm dialog. ''' path = os.path.dirname(mc.file(q=True, sceneName=True)) print 'generateGeometry start' if not os.path.exists (os.path.join(path, 'cache')): os.makedirs(os.path.join(path, 'cache')) #OBJPATH = os.path.join(path, "cache/objFiles") ABCPATH = os.path.join(path, "cache/abcFiles") #if os.path.exists(OBJPATH): # shutil.rmtree(OBJPATH) if os.path.exists(ABCPATH): shutil.rmtree(ABCPATH) filePath = cmds.file(q=True, sceneName=True) fileDir = os.path.dirname(filePath) proj = Project() checkout = proj.get_checkout(fileDir) body = proj.get_body(checkout.get_body_name()) elem = body.get_element(checkout.get_department_name(), checkout.get_element_name()) abcFilePath = elem.get_cache_dir() selection = mc.ls(geometry=True, visible=True) selection_long = mc.ls(geometry=True, visible=True, long=True) # Temporarily disabled obj support (might not be needed) #objs = objExport(selection, OBJPATH) # Check to see if all .obj files were created #if not len(checkFiles(objs)) == 0: # return False abcs = abcExport(selection_long, ABCPATH) if not len(checkFiles(abcs)) == 0: return False return True
def getElementCacheDirectory(path, element=None): if element is None: proj = Project() checkout = proj.get_checkout(path) if checkout is None: message_gui.error( 'There was a problem exporting the alembic to the correct location. Checkout the asset again and try one more time.' ) return None body = proj.get_body(checkout.get_body_name()) element = body.get_element(checkout.get_department_name(), checkout.get_element_name()) return element.get_cache_dir()
class ReferenceWindow(QtGui.QWidget): finished = QtCore.pyqtSignal() def __init__(self, parent, src, dept_list=Department.ALL): super(ReferenceWindow, self).__init__() self.project = Project() self.parent = parent self.src = src self.filePaths = [] self.done = True self.reference = False self.initUI(dept_list) def initUI(self, dept_list): #define gui elements self.setGeometry(300, 300, WINDOW_WIDTH, WINDOW_HEIGHT) self.setWindowTitle('Taijitu Reference Manager') self.departmentMenu = QtGui.QComboBox() for i in dept_list: self.departmentMenu.addItem(i) self.departmentMenu.activated[str].connect(self.setElementType) self.assetList = AssetListWindow(self) for asset in self.project.list_assets(): item = QtGui.QListWidgetItem(asset) self.assetList.addItem(item) self.typeFilterLabel = QtGui.QLabel("Type Filter") self.typeFilterLabel.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.typeFilter = QtGui.QComboBox() self.typeFilter.addItem("all") for i in AssetType.ALL: self.typeFilter.addItem(i) self.typeFilter.currentIndexChanged.connect(self.setElementType) self.referenceButton = QtGui.QPushButton('Reference') self.referenceButton.clicked.connect(self.createReference) self.cancelButton = QtGui.QPushButton('Cancel') self.cancelButton.clicked.connect(self.close) #set gui layout self.grid = QtGui.QGridLayout(self) self.setLayout(self.grid) self.grid.addWidget(self.departmentMenu, 0, 0) self.grid.addWidget(self.assetList, 1, 0, 1, 0) self.grid.addWidget(self.typeFilterLabel, 2, 0) self.grid.addWidget(self.typeFilter, 2, 1) self.grid.addWidget(self.referenceButton, 3, 0) self.grid.addWidget(self.cancelButton, 3, 1) self.show() def setElementType(self, idx=0): department = str(self.departmentMenu.currentText()) self.refreshList(department) def createReference(self): selected = [] del self.filePaths[:] for item in self.assetList.selectedItems(): body = self.project.get_body(str(item.text())) element = body.get_element(str(self.departmentMenu.currentText())) path = element.get_app_filepath() self.filePaths.append(path) selected.append(str(item.text())) checkout = self.project.get_checkout(os.path.dirname(self.src)) if checkout is not None: body_name = checkout.get_body_name() body = self.project.get_body(body_name) for sel in selected: body.add_reference(sel) self.done = False self.reference = True self.close() def refreshList(self, department): if department in Department.FRONTEND: asset_filter = None if (self.typeFilter.currentIndex()): asset_filter_str = str(self.typeFilter.currentText()) asset_filter = (Asset.TYPE, operator.eq, asset_filter_str) self.elements = self.project.list_assets(asset_filter) else: self.elements = self.project.list_shots() self.assetList.clear() for e in self.elements: self.assetList.addItem(e) def closeEvent(self, event): self.finished.emit() event.accept()
def generateGeometry(path='', element=None): ''' Function for generating geometry for Maya files. Creates the following output formats: .obj @return: True if all files were created successfully False if some files were not created @post: Missing filenames are printed out to both the Maya terminal as well as presented in a Maya confirm dialog. ''' path = os.path.dirname(mc.file(q=True, sceneName=True)) print 'generateGeometry start' if not os.path.exists(os.path.join(path, 'cache')): os.makedirs(os.path.join(path, 'cache')) #OBJPATH = os.path.join(path, 'cache', 'objFiles') ABCPATH = os.path.join(path, 'cache', 'abcFiles') #if os.path.exists(OBJPATH): # shutil.rmtree(OBJPATH) if os.path.exists(ABCPATH): shutil.rmtree(ABCPATH) filePath = cmds.file(q=True, sceneName=True) fileDir = os.path.dirname(filePath) print 'This is the fileDir in question: ', fileDir abcFilePath = getElementCacheDirectory(fileDir, element) if abcFilePath is None: return False selection = mc.ls(geometry=True, visible=True) selection_long = mc.ls(geometry=True, visible=True, long=True) # Temporarily disabled obj support (might not be needed) #objs = objExport(selection, OBJPATH) # Check to see if all .obj files were created #if not len(checkFiles(objs)) == 0: # return False proj = Project() if element is None: checkout = proj.get_checkout(path) if checkout is None: message_gui.error( 'There was a problem exporting the alembic to the correct location. Checkout the asset again and try one more time.' ) return None body = proj.get_body(checkout.get_body_name()) element = body.get_element(checkout.get_department_name(), checkout.get_element_name()) else: body = proj.get_body(element.get_parent()) # We decided to try exporting all the geo into one alembic file instead of many. This is the line that does many # abcs = abcExport(selection_long, ABCPATH) if body.is_asset(): if body.get_type() == AssetType.SET: abcs = abcExportLoadedReferences(ABCPATH) else: abcs = abcExportAll(element.get_long_name(), ABCPATH) else: abcs = abcExportAll(element.get_long_name(), ABCPATH) print str(body.is_asset()) + ' it is an asset' print 'The type is ' + body.get_type() if not len(checkFiles(abcs)) == 0: return False return True
class ReferenceWindow(QtGui.QWidget): finished = QtCore.pyqtSignal() def __init__(self, parent, src, dept_list=Department.ALL): super(ReferenceWindow, self).__init__() self.project = Project() self.parent = parent self.src = src self.filePath = None self.done = True self.reference = False self.initUI(dept_list) def initUI(self, dept_list): #define gui elements self.setGeometry(300,300,WINDOW_WIDTH,WINDOW_HEIGHT) self.setWindowTitle('Taijitu Reference Manager') self.departmentMenu = QtGui.QComboBox() for i in dept_list: self.departmentMenu.addItem(i) self.departmentMenu.activated[str].connect(self.setElementType) self.assetList = AssetListWindow(self) for asset in self.project.list_assets(): item = QtGui.QListWidgetItem(asset) self.assetList.addItem(item) self.typeFilterLabel = QtGui.QLabel("Type Filter") self.typeFilterLabel.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.typeFilter = QtGui.QComboBox() self.typeFilter.addItem("all") for i in AssetType.ALL: self.typeFilter.addItem(i) self.typeFilter.currentIndexChanged.connect(self.setElementType) self.referenceButton = QtGui.QPushButton('Reference') self.referenceButton.clicked.connect(self.createReference) self.cancelButton = QtGui.QPushButton('Cancel') self.cancelButton.clicked.connect(self.close) #set gui layout self.grid = QtGui.QGridLayout(self) self.setLayout(self.grid) self.grid.addWidget(self.departmentMenu, 0, 0) self.grid.addWidget(self.assetList, 1, 0, 1, 0) self.grid.addWidget(self.typeFilterLabel, 2, 0) self.grid.addWidget(self.typeFilter, 2, 1) self.grid.addWidget(self.referenceButton, 3, 0) self.grid.addWidget(self.cancelButton, 3, 1) self.show() def setElementType(self, idx=0): department = str(self.departmentMenu.currentText()) self.refreshList(department) def createReference(self): checkout = self.project.get_checkout(os.path.dirname(self.src)) if checkout is not None: body_name = checkout.get_body_name() body = self.project.get_body(body_name) body.add_reference(self.assetList.current_selection) self.done = False self.reference = True self.close() def refreshList(self, department): if department in Department.FRONTEND: asset_filter = None if(self.typeFilter.currentIndex()): asset_filter_str = str(self.typeFilter.currentText()) asset_filter = (Asset.TYPE, operator.eq, asset_filter_str) self.elements = self.project.list_assets(asset_filter) else: self.elements = self.project.list_shots() self.assetList.clear() for e in self.elements: self.assetList.addItem(e) def closeEvent(self, event): self.finished.emit() event.accept()