def connectToDependNode(self, node): nodeFn = OpenMaya.MFnDependencyNode(node) try: syPlug = nodeFn.findPlug("scaleY") tPlug = nodeFn.findPlug("translate") distanceManipFn = OpenMayaUI.MFnDistanceManip(self.fDistanceManip) distanceManipFn.connectToDistancePlug(syPlug) freePointManipFn = OpenMayaUI.MFnFreePointTriadManip(self.fFreePointManip) freePointManipFn.connectToPointPlug(tPlug) OpenMayaMPx.MPxManipContainer.finishAddingManips(self) OpenMayaMPx.MPxManipContainer.connectToDependNode(self,node) except: sys.stderr.write( "Error finding and connecting plugs\n" ) raise
def createChildren(self): # FreePointTriadManip self.fFreePointTriadManip = self.addFreePointTriadManip( "freePointTriadManip", "point") freePointTriadManipFn = OpenMayaUI.MFnFreePointTriadManip( self.fFreePointTriadManip) # DirectionManip self.fDirectionManip = self.addDirectionManip("directionManip", "direction") directionManipFn = OpenMayaUI.MFnDirectionManip(self.fDirectionManip) # ToggleManip self.fToggleManip = self.addToggleManip("toggleManip", "toggle") toggleManipFn = OpenMayaUI.MFnToggleManip(self.fToggleManip) # StateManip self.fStateManip = self.addStateManip("stateManip", "state") stateManipFn = OpenMayaUI.MFnStateManip(self.fStateManip) # DiscManip self.fDiscManip = self.addDiscManip("discManip", "angle") discManipFn = OpenMayaUI.MFnDiscManip(self.fDiscManip) # CircleSweepManip self.fCircleSweepManip = self.addCircleSweepManip( "circleSweepManip", "angle") circleSweepManipFn = OpenMayaUI.MFnCircleSweepManip( self.fCircleSweepManip) circleSweepManipFn.setCenterPoint(OpenMaya.MPoint(0, 0, 0)) circleSweepManipFn.setNormal(OpenMaya.MVector(0, 1, 0)) circleSweepManipFn.setRadius(2.0) circleSweepManipFn.setDrawAsArc(True) # DistanceManip self.fDistanceManip = self.addDistanceManip("distanceManip", "distance") distanceManipFn = OpenMayaUI.MFnDistanceManip(self.fDistanceManip) distanceManipFn.setStartPoint(OpenMaya.MPoint(0, 0, 0)) distanceManipFn.setDirection(OpenMaya.MVector(0, 1, 0)) # RotateManip self.fRotateManip = self.addRotateManip("RotateManip", "rotation") rotateManipFn = OpenMayaUI.MFnRotateManip(self.fRotateManip) # ScaleManip self.fScaleManip = self.addScaleManip("scaleManip", "scale") scaleManipFn = OpenMayaUI.MFnScaleManip(self.fScaleManip)
def __init__(self, min=1, max=-1, show=False, delete=True, messages=[], returnAsMatrix=False): self._mainWindow = gui.getMayaWindow() super(PickPositions, self).__init__(self._mainWindow) self._min, self._max = min, max self._clickFilter = ClickFilter(self) self._keyFilter = KeyFilter(self) x, self._viewWidgets = gui.get3dViews() self._fnFreePoint = mui.MFnFreePointTriadManip() self._fnDependNode = om.MFnDependencyNode() self._positions = [] self._show = show self._delete = delete self._messages = messages or [""] self._messageCount = 0 self._returnAsMatrix = returnAsMatrix self._guides = [] self._manipulators = []
self.fScaleManip = self.addScaleManip("scaleManip", "scale") scaleManipFn = OpenMayaUI.MFnScaleManip(self.fScaleManip) def connectToDependNode(self, node): # Get the DAG path dagNodeFn = OpenMaya.MFnDagNode(node) dagNodeFn.getPath(self.fNodePath) parentNode = dagNodeFn.parent(0) parentNodeFn = OpenMaya.MFnDagNode(parentNode) # Connect the plugs nodeFn = OpenMaya.MFnDependencyNode() nodeFn.setObject(node) # FreePointTriadManip freePointTriadManipFn = OpenMayaUI.MFnFreePointTriadManip(self.fFreePointTriadManip) try: translationPlug = parentNodeFn.findPlug("t") freePointTriadManipFn.connectToPointPlug(translationPlug) except: pass # DirectionManip directionManipFn = OpenMayaUI.MFnDirectionManip() directionManipFn.setObject(self.fDirectionManip) try: directionPlug = nodeFn.findPlug("arrow2Direction") directionManipFn.connectToDirectionPlug(directionPlug) startPointIndex = directionManipFn.startPointIndex() self.addPlugToManipConversion(startPointIndex) except: pass # DistanceManip distanceManipFn = OpenMayaUI.MFnDistanceManip() distanceManipFn.setObject(self.fDistanceManip) try: sizePlug = nodeFn.findPlug("size") distanceManipFn.connectToDistancePlug(sizePlug) startPointIndex = distanceManipFn.startPointIndex() self.addPlugToManipConversion(startPointIndex) except: pass # CircleSweepManip circleSweepManipFn = OpenMayaUI.MFnCircleSweepManip(self.fCircleSweepManip) try: arrow1AnglePlug = nodeFn.findPlug("arrow1Angle") circleSweepManipFn.connectToAnglePlug(arrow1AnglePlug) centerIndex = circleSweepManipFn.centerIndex() self.addPlugToManipConversion(centerIndex) except: pass # DiscManip discManipFn = OpenMayaUI.MFnDiscManip(self.fDiscManip) try: arrow3AnglePlug = nodeFn.findPlug("arrow3Angle") discManipFn.connectToAnglePlug(arrow3AnglePlug) centerIndex = discManipFn.centerIndex() self.addPlugToManipConversion(centerIndex) except: pass # StateManip stateManipFn = OpenMayaUI.MFnStateManip(self.fStateManip) try: statePlug = nodeFn.findPlug("state") stateManipFn.connectToStatePlug(statePlug) positionIndex = stateManipFn.positionIndex() self.addPlugToManipConversion(positionIndex) except: pass # ToggleManip toggleManipFn = OpenMayaUI.MFnToggleManip(self.fToggleManip) try: togglePlug = nodeFn.findPlug("toggle") toggleManipFn.connectToTogglePlug(togglePlug) startPointIndex = toggleManipFn.startPointIndex() self.addPlugToManipConversion(startPointIndex) except: pass # Determine the transform node for the locator transformPath = OpenMaya.MDagPath(self.fNodePath) transformPath.pop() transformNode = OpenMaya.MFnTransform(transformPath) # RotateManip rotateManipFn = OpenMayaUI.MFnRotateManip(self.fRotateManip) try: rotatePlug = transformNode.findPlug("rotate") rotateManipFn.connectToRotationPlug(rotatePlug) rotateManipFn.displayWithNode(node) except: pass # ScaleManip scaleManipFn = OpenMayaUI.MFnScaleManip(self.fScaleManip) try: scalePlug = transformNode.findPlug("scale") scaleManipFn.connectToScalePlug(scalePlug) scaleManipFn.displayWithNode(node) except: