Source code for director.affordanceviewbehaviors

from director import affordanceitems
from director import viewbehaviors
from director import visualization as vis
import numpy as np


_affordanceManager = None


[docs]def setGlobalAffordanceManager(affordanceManager): global _affordanceManager _affordanceManager = affordanceManager
[docs]def getGlobalAffordanceManager(): return _affordanceManager
[docs]def getActions(view, pickedObj, pickedPoint): affordanceObj = pickedObj if isinstance(pickedObj, affordanceitems.AffordanceItem) else None affordanceManager = getGlobalAffordanceManager() def addNewFrame(): t = transformUtils.copyFrame(affordanceObj.getChildFrame().transform) t.PostMultiply() t.Translate(np.array(pickedPoint) - np.array(t.GetPosition())) newFrame = vis.showFrame(t, '%s frame %d' % (affordanceObj.getProperty('Name'), len(affordanceObj.children())), scale=0.2, parent=affordanceObj) affordanceObj.getChildFrame().getFrameSync().addFrame(newFrame, ignoreIncoming=True) def copyAffordance(): desc = dict(affordanceObj.getDescription()) del desc['uuid'] desc['Name'] = desc['Name'] + ' copy' aff = affordanceManager.newAffordanceFromDescription(desc) aff.getChildFrame().setProperty('Edit', True) def onPromoteToAffordance(): affObj = affordanceitems.MeshAffordanceItem.promotePolyDataItem(pickedObj) affordanceManager.registerAffordance(affObj) actions = [] if affordanceManager and affordanceObj: actions.extend([ ('Copy affordance', copyAffordance), ('Add new frame', addNewFrame), ]) if type(pickedObj) == vis.PolyDataItem: actions.extend([ ('Promote to Affordance', onPromoteToAffordance), ]) return actions
[docs]def registerActions(): viewbehaviors.registerContextMenuActions(getActions)