Ejemplo n.º 1
0
 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) ])
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
 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)
     ])
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
    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()
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
    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()
Ejemplo n.º 10
0
    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()
Ejemplo n.º 11
0
    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()