def _getDetailedError(cls, message, error): return '\n'.join([ Logger.logMessageToString(Logger.createLogMessage( logValue=Logger.createErrorMessage(message, error), traceStack=True, shaveStackTrace=0, htmlEscape=False)), 'VERSION: {}'.format(sys.version) ])
def run(self): """ Executes the analysis process, iterating through each of the analysis stages before cleaning up and exiting. """ print('[OUTPUT PATH]: %s' % self.analysisRootPath) print(analysisStamp) print(tracksStamp) self._startTime = TimeUtils.getNowDatetime() myRootPath = self.getPath(isDir=True) if os.path.exists(myRootPath): FileUtils.emptyFolder(myRootPath) if not os.path.exists(myRootPath): os.makedirs(myRootPath) tempPath = self.tempPath if os.path.exists(tempPath): SystemUtils.remove(tempPath) os.makedirs(tempPath) if not self.logger.loggingPath: self.logger.loggingPath = myRootPath try: session = self.getAnalysisSession() self._preAnalyze() for stage in self._stages: self._currentStage = stage stage.analyze() self._currentStage = None self._postAnalyze() session.commit() session.close() self._success = True except Exception as err: session = self.getAnalysisSession() session.close() msg = [ '[ERROR]: Failed to execute analysis', 'STAGE: %s' % self._currentStage] self._errorMessage = Logger.createErrorMessage(msg, err) self.logger.writeError(msg, err) session = self.getTracksSession() session.close() self._cleanup() SystemUtils.remove(tempPath) self.logger.write('\n\n[%s]: %s (%s)' % ( 'SUCCESS' if self._success else 'FAILED', self.__class__.__name__, TimeUtils.toPrettyElapsedTime(self.elapsedTime) ), indent=False)
def _createMeshPointNode(self, shapeData): self._removeMeshPointNode() try: node = cmds.createNode('closestPointOnMesh', skipSelect=True) self._meshPointNode = node except Exception as err: print(Logger.createErrorMessage(u'ERROR: Unable to create mesh point node', err)) self._removeMeshPointNode() return False try: cmds.connectAttr(shapeData['name'] + '.message', node + '.inMesh', force=True) except Exception as err: print(Logger.createErrorMessage(u'ERROR: Unable to connect mesh point node to shape', err)) self._removeMeshPointNode() return False return True
def _getDetailedError(cls, message, error): return '\n'.join([ Logger.logMessageToString( Logger.createLogMessage(logValue=Logger.createErrorMessage( message, error), traceStack=True, shaveStackTrace=0, htmlEscape=False)), 'VERSION: {}'.format(sys.version) ])
def unloadGeneralPlugin(force =False): try: #from elixir.plugins.general import ElixirGeneralPlugin results = cmds.unloadPlugin('ElixirGeneralPlugin', force=force) if not results: print('ERROR: Failed to unload the Elixir General Plugin') return False return True except Exception as err: print(Logger.createErrorMessage('ERROR: Failed to unload the Elixir General Plugin', err)) return False
def __call__(self, *args, **kwargs): """Doc...""" if self.response is None: self.response = RemoteScriptResponse() if self.kwargs is None: self.kwargs = kwargs try: self.run() except Exception as err: message = "Nimble remote script run failure" NimbleEnvironment.logError(message, err) logMessage = Logger.createErrorMessage(message, err) self.putErrorResult(Logger.logMessageToString(logMessage=logMessage, includePrefix=False)) result = self.response.result return result if result else dict()
def loadGeneralPlugin(): """ Loads the elixir general plugin. Must be called within Maya. """ try: if cmds.pluginInfo('ElixirGeneralPlugin', loaded=True): return True except Exception: pass try: from elixir.plugins.general import ElixirGeneralPlugin cmds.loadPlugin(ElixirGeneralPlugin.__file__) return True except Exception as err: print(Logger.createErrorMessage('ERROR: Failed to load Elixir General Plugin', err)) return False
def __call__(self, *args, **kwargs): """Doc...""" if self.response is None: self.response = RemoteScriptResponse() if self.kwargs is None: self.kwargs = kwargs try: self.run() except Exception as err: message = u'Nimble remote script run failure' NimbleEnvironment.logError(message, err) logMessage = Logger.createErrorMessage(message, err) self.putErrorResult( Logger.logMessageToString(logMessage=logMessage, includePrefix=False)) result = self.response.result return result if result else dict()
def run(self): """Doc...""" self.saveSelection() count = self.fetch('count', 1000) self._size = self.fetch('size', 0.1) self._padding = self.fetch('padding', 0.0) transforms = cmds.ls(selection=True, type='transform') if not transforms: self._cleanup() self.putErrorResult(u'ERROR: No transforms selected') return shapes = [] totalVolume = 0.0 shapeCount = 0 for transform in transforms: shapeNames = cmds.listRelatives(transforms, shapes=True) if not shapeNames: continue for shape in shapeNames: try: box = TransformUtils.getBoundingBox(shape) cmds.select(shape, replace=True) shapeVolume = nimble.executeMelCommand('computePolysetVolume') totalVolume += shapeVolume shapes.append(dict( transform=transform, name=shape, box=box, weight=float(shapeVolume)) ) shapeCount += 1 except Exception as err: self._cleanup() NimbleEnvironment.logError(u'ERROR: Shape processing', err) self.putErrorResult( u'ERROR: Unable to process selection item %s -> %s' % (transform, shape) ) return if shapeCount == 0: self._cleanup() self.putErrorResult(u'ERROR: No polygon transforms found in selection') return try: for shape in shapes: if not self._createMeshPointNode(shape): self._cleanup() print(u'ERROR: Creation failure') self.putErrorResult(u'ERROR: Unable to create point test node') shape['weight'] /= totalVolume shapeCount = int(round(float(count)*shape['weight'])) for i in range(shapeCount): self._create(shape) self._removeMeshPointNode() except Exception as err: self._cleanup() print(Logger.createErrorMessage(u'ERROR: Creation failure', err)) self.putErrorResult(u'ERROR: Unable to create random box') return self._cleanup()