Пример #1
0
def doReplacement(replaceDB):
    notExistingSources = set()
    createdRefs = []
    for tr, path in replaceDB.items():

        if path in notExistingSources:
            continue

        if not os.path.exists(os.path.expandvars(path)):
            notExistingSources.add(path)
            log.logAppend('Path does not exists: {}. Replacement skipped.'.format(path))
            continue

        refHandle = RefHandle()
        refHandle.createNew(path)
        createdRefs.append(refHandle)

        worldRP = m.xform(tr, q=True, rotatePivot=True, worldSpace=True)
        m.xform(refHandle.refLocator.transform, translation=worldRP, absolute=True, worldSpace=True)

        transformParent = getParent(tr)
        if transformParent:
            newRefLocTransform = getLongName(m.parent(refHandle.refLocator.transform, transformParent)[0])
            refHandle.setRefLocator(TransformHandle(transform=newRefLocTransform))

        rotation = m.xform(tr, q=True, rotation=True, objectSpace=True)
        scale = m.xform(tr, q=True, scale=True, objectSpace=True, relative=True)
        shear = m.xform(tr, q=True, shear=True, objectSpace=True, relative=True)
        m.xform(refHandle.refLocator.transform, rotation=rotation, scale=scale, shear=shear)

        if m.objExists(tr):
            m.delete(tr)

    return createdRefs
Пример #2
0
    def createAnnotation(self):
        if not self.isValid():
            return

        annotationShapes = self.refLocator.getChildren(allDescendants=True, typ='annotationShape')
        for s in annotationShapes:
            m.delete(getParent(s))

        annotationSh = m.annotate(self.refLocator.transform, p=(0, -0.5, 0))
        annotationTr = getParent(annotationSh)
        annotationTr = m.parent(annotationTr, self.refLocator.transform, relative=True)[0]
        lockTransformations(annotationTr)
        self.annotation = TransformHandle(transform=getLongName(annotationTr))

        m.setAttr(self.annotation.shape + '.displayArrow', False)
        m.setAttr(self.annotation.transform + '.overrideEnabled', True)
        m.setAttr(self.annotation.transform + '.overrideDisplayType', 2)
Пример #3
0
    def createNew(self, refFilename):
        refLocatorTr = m.spaceLocator(p=(0, 0, 0))[0]
        refLocatorTr = getLongName(m.rename(refLocatorTr, self.generateShortName(refFilename) + REF_LOCATOR_SUFFIX))
        refLocatorSh = getShape(refLocatorTr)

        m.addAttr(
            refLocatorSh,
            at='message',
            shortName=ATTR_REF_NODE_MESSAGE_NAMES[0],
            longName=ATTR_REF_NODE_MESSAGE_NAMES[1],
            niceName=ATTR_REF_NODE_MESSAGE_NAMES[2]
        )

        m.addAttr(
            refLocatorSh,
            dt='string',
            shortName=ATTR_REF_FILENAME_NAMES[0],
            longName=ATTR_REF_FILENAME_NAMES[1],
            niceName=ATTR_REF_FILENAME_NAMES[2]
        )

        m.setAttr('{}.{}'.format(refLocatorSh, ATTR_REF_FILENAME), refFilename, typ='string')

        self.loadFromRefLocatorShape(refLocatorSh)