def mirror_SDK(driverCtl): """ Takes in a driver control and extrapolates out all the other information needed to mirror it's connected SDK's. Arguments: driverCtl (PyNode): Returns: None """ # Getting The Opposite Driver t_driver = pickWalk.getMirror(driverCtl)[0] # Getting all the SDK Ctls + RHS Counterparts from Driver Ctl Name. driven_ctls_dict = {} for sdk_attrs in sdk_io.getConnectedSDKs(driverCtl): for sdk_attr in sdk_attrs: if pm.nodeType(sdk_attr.node()) in SDK_ANIMCURVES_TYPE: destination_ctl = sdk_io.getSDKDestination(sdk_attr.node())[0] driven_ctls_dict[destination_ctl] = pickWalk.getMirror( pm.PyNode(destination_ctl))[0] # Removing any Already Existing SDK's from the target driver. for s_driven, t_driven in driven_ctls_dict.items(): sdk_io.removeSDKs(t_driven, sourceDriverFilter=[t_driver]) # Looping over the Drivens + Mirroring. for s_driven, t_driven in driven_ctls_dict.items(): sdk_io.copySDKsToNode(sourceDriven=s_driven, targetDriver=t_driver, targetDriven=t_driven, sourceDriverFilter=[driverCtl])
def get_driver_from_driven(drivenCtl): """ Finds the Driver controls for a given driven ctl Arguments: drivenCtl (PyNode): A Driven Node to query. Returns: list [All found Driver Nodes] """ driver_ctls = [] retrieved_SDK_nodes = sdk_io.getConnectedSDKs(drivenCtl) retrieved_SDK_nodes.extend(sdk_io.getMultiDriverSDKs(drivenCtl)) for rtv_attrs in retrieved_SDK_nodes: for rtv_attr in rtv_attrs: if pm.nodeType(rtv_attr) in SDK_ANIMCURVES_TYPE: try: SDK_info = sdk_io.getSDKInfo(rtv_attr.node()) if SDK_info['driverNode'] not in driver_ctls: driver_ctls.append(SDK_info['driverNode']) except: # noqa: E722 pass return driver_ctls
def delete_current_value_keys(current_driver_val, node, sourceDriverFilter): """ Arguments: node (): sourceDriverFilter (): Returns: n/a """ sourceSDKInfo = sdk_io.getConnectedSDKs( node, sourceDriverFilter=sourceDriverFilter) sourceSDKInfo.extend( sdk_io.getMultiDriverSDKs(node, sourceDriverFilter=sourceDriverFilter)) for source_sdk_attr, driven_ctl in sourceSDKInfo: source_sdk = source_sdk_attr.node() keys = sdk_io.getSDKInfo(source_sdk)['keys'] for i, key in enumerate(keys): if key[0] == current_driver_val: pm.cutKey(source_sdk_attr.node(), index=(i, i), option="keys", clear=1)