Ejemplo n.º 1
0
	def testSetCurrentMode( self ) :

		self.assertEqual( hou.updateModeSetting(), hou.updateMode.AutoUpdate )

		with IECoreHoudini.UpdateMode( hou.updateMode.AutoUpdate ) :

			self.assertEqual( hou.updateModeSetting(), hou.updateMode.AutoUpdate )

		self.assertEqual( hou.updateModeSetting(), hou.updateMode.AutoUpdate )
Ejemplo n.º 2
0
	def testRaising( self ) :

		self.assertEqual( hou.updateModeSetting(), hou.updateMode.AutoUpdate )

		try :
			with IECoreHoudini.UpdateMode( hou.updateMode.Manual ) :

				raise RuntimeError, "This error is intentional"

		except RuntimeError:

			self.assertEqual( hou.updateModeSetting(), hou.updateMode.AutoUpdate )
Ejemplo n.º 3
0
    def _addRemoveParm(
            self,
            parm,
            add=True):  ## does this expect a parm name obk or path?!

        node_path = parm.node().path()
        cur_take = curTake()
        cur_update_mode = hou.updateModeSetting()
        hou.setUpdateMode(hou.updateMode.Manual)
        setCurTake(self)

        remove_flag = ''
        if add != True:
            remove_flag = '-u '

        hscript_cmd = 'takeinclude ' + remove_flag + node_path + ' ' + parm.name(
        )
        hscript_cmd_results = hou.hscript(hscript_cmd)

        if _takeErr(hscript_cmd_results[1]):
            result = hscript_cmd_results[1]
        else:
            result = None

        setCurTake(cur_take)
        hou.setUpdateMode(cur_update_mode)

        return result
Ejemplo n.º 4
0
def restore_update_mode(update_mode):
    """Set a UI update mode and restore the current mode on exit.

    >>> with restore_update_mode(hou.updateMode.Manual):
    ...     # do some stuff while it is in manual mode
    ...

    Original update mode restored after with

    :param update_mode: The update mode to set for the duration.
    :type update_mode: hou.updateMode
    :return:

    """
    import hou

    # Get the current update mode so it can be restored.
    current = hou.updateModeSetting()

    # Set the desired mode.
    hou.ui.setUpdateMode(update_mode)

    try:
        yield

    finally:
        # Restore the update mode.
        hou.ui.setUpdateMode(current)
Ejemplo n.º 5
0
    def addParmsFromTake(self, take, overwrite_existing=True):
        '''Include parameters from the specified Take in this Take.'''

        cur_take = curTake()
        cur_update_mode = hou.updateModeSetting()
        hou.setUpdateMode(hou.updateMode.Manual)
        setCurTake(self)

        force_flag = ''
        if overwrite_existing == True:
            force_flag = '-f '

        source = take.name()

        hscript_cmd = 'takemerge ' + force_flag + ' ' + self._name + ' ' + source
        hscript_cmd_results = hou.hscript(hscript_cmd)
        if _takeErr(hscript_cmd_results[1]):
            result = hscript_cmd_results[1]
        else:
            result = None

        setCurTake(cur_take)
        hou.setUpdateMode(cur_update_mode)

        return result
Ejemplo n.º 6
0
	def addParmsFromTake(self, take, overwrite_existing=True):
		
		'''Include parameters from the specified Take in this Take.'''
		
		cur_take = curTake()
		cur_update_mode = hou.updateModeSetting()
		hou.setUpdateMode(hou.updateMode.Manual)
		setCurTake(self)
		
		force_flag = ''
		if overwrite_existing == True:
			force_flag = '-f '
			
		source = take.name()
			
		hscript_cmd = 'takemerge ' + force_flag + ' ' + self._name +  ' ' + source
		hscript_cmd_results = hou.hscript(hscript_cmd)
		if _takeErr(hscript_cmd_results[1]):
			result = hscript_cmd_results[1]
		else:
			result = None
			
		setCurTake(cur_take)
		hou.setUpdateMode(cur_update_mode)
		
		return result
Ejemplo n.º 7
0
def setupMutationFromMarkedWedges(marked_idx_list, wedge_anchor_node):

    print "\n\nSetup Starting...\n"

    idx_list = marked_idx_list
    wedge_node = wedge_anchor_node
    num_wedges = len(idx_list)

    #get current update mode
    update_mode_set = hou.updateModeSetting()
    #set update mode to manual
    hou.setUpdateMode(hou.updateMode.Manual)
    #set auto takes on
    hou.hscript("takeautomode on")

    #get root take
    roottake = hou.takes.rootTake()
    print "Root Take: {}".format(roottake.name())

    #cook pdg node first
    pdgnode = wedge_node.getPDGNode()
    #generate static items first to be able to access
    wedge_node.generateStaticItems()
    time.sleep(1.5)
    work_items = pdgnode.staticWorkItems

    #remove all existing takes first
    takes = roottake.children()
    for take in takes:
        take.destroy()

    #convert wedges to takes
    for idx in idx_list:
        take = roottake.addChildTake(idx)
        hou.takes.setCurrentTake(take)

        selectWedgeIndex(idx, wedge_node, work_items)

    #return to root take
    hou.takes.setCurrentTake(roottake)

    #reset update mode
    hou.setUpdateMode(update_mode_set)
    #set auto takes off
    hou.hscript("takeautomode off")

    print "\nSuccessfully converted Wedges to Takes\n"

    #create new wedge node in same Topnet as wedge_anchor_node
    topnet = wedge_node.parent()
    new_wedge_node = topnet.createNode("wedge", "wedge_base_from_marked")

    new_wedge_node.setPosition(wedge_node.position())
    new_wedge_node.move([-5, 0])
    #new_wedge_node.setSelected(1, clear_all_selected=True)

    remove_takes = True
    convertTakesToWedge(new_wedge_node, remove_takes)
Ejemplo n.º 8
0
def manual():
    """setup scene to manual mode
    """
    help(manual)

    import hou
    mode = hou.updateModeSetting().name()
    if mode == 'AutoUpdate':
        hou.setUpdateMode(hou.updateMode.Manual)
    if mode == 'Manual':
        hou.setUpdateMode(hou.updateMode.AutoUpdate)
Ejemplo n.º 9
0
def exit():
    """
    change scene mode in manual, save, and exit 
    """
    help(exit)
    import hou

    mode = hou.updateModeSetting().name()
    if mode == 'AutoUpdate':
        hou.setUpdateMode(hou.updateMode.Manual)
    hou.hipFile.save(file_name=None, save_to_recent_files=True)
    hou.exit(exit_code=0, suppress_save_prompt=False)
Ejemplo n.º 10
0
    def __init__(self,nodes):
        super(live_renamer,self).__init__(hou.qt.mainWindow())
        self.nodes=nodes
        self.updateMode=hou.updateModeSetting()
        
        hou.setUpdateMode(hou.updateMode.Manual)

        self.storeNames()
        self.configure_dialog()
        self.widgets()
        self.layout()
        self.connections()
Ejemplo n.º 11
0
def updateModeToggle():
    '''
    Toggle cook mode between 'auto update' and 'manual'.

    Author: Sean
    '''
    mode = hou.updateModeSetting().name()

    if mode == 'AutoUpdate':
        hou.setUpdateMode( hou.updateMode.Manual )

    if mode == 'Manual':
        hou.setUpdateMode( hou.updateMode.AutoUpdate )
Ejemplo n.º 12
0
def open():
    """change scene mode in manual, save, and open open windows"""

    help(open)

    import hou

    mode = hou.updateModeSetting().name()
    if mode == 'AutoUpdate':
        hou.setUpdateMode(hou.updateMode.Manual)

    hou.hipFile.save(file_name=None, save_to_recent_files=True)
    f = hou.ui.selectFile()
    hou.hipFile.load(f)
Ejemplo n.º 13
0
        def jump_to(self):
            if str(hou.updateModeSetting()) == 'updateMode.Manual':
                pass
            else:
                hou.ui.displayMessage('设置 updateMode 为 Manual',
                                      buttons=('确认', ),
                                      title='')
                hou.setUpdateMode(hou.updateMode.Manual)
            sl = self.tableWidget.selectedIndexes()

            try:
                rs = sl[0].row()
                node_path = self.tableWidget.item(rs, 2).text()
                hou.node(node_path).setCurrent(1, 1)
            except:
                pass
Ejemplo n.º 14
0
def quatreCinqSix():
    """ set the houdini desktop 
    """

    help(quatreCinqSix)

    import hou

    #decrire la configuration du desktop avec python
    # close treeView close python open spreadsheet,chage parameter to python
    desktops_dict = dict((d.name(), d) for d in hou.ui.desktops())
    desktops_dict['Technical2'].setAsCurrent()

    mode = hou.updateModeSetting().name()
    if mode == 'AutoUpdate':
        hou.setUpdateMode(hou.updateMode.Manual)
Ejemplo n.º 15
0
def updateMode(update_mode):
    """Context manager for setting the interface's update mode.

    update_mode should be one of hou.updateMode

    """
    import hou

    # Get the current update mode so it can be restored.
    current = hou.updateModeSetting()

    # Set the desired mode.
    hou.ui.setUpdateMode(update_mode)

    try:
        yield

    finally:
        # Restore the update mode.
        hou.ui.setUpdateMode(current)
Ejemplo n.º 16
0
def updateMode(update_mode):
    """Context manager for setting the interface's update mode.

    update_mode should be one of hou.updateMode

    """
    import hou

    # Get the current update mode so it can be restored.
    current = hou.updateModeSetting()

    # Set the desired mode.
    hou.ui.setUpdateMode(update_mode)

    try:
        yield

    finally:
        # Restore the update mode.
        hou.ui.setUpdateMode(current)
Ejemplo n.º 17
0
	def addAllParmsOfNode(self, node):
		
		'''Include all parameters from specified Node in this Take'''
		
		node_path = node.path()
		cur_take = curTake()
		cur_update_mode = hou.updateModeSetting()
		hou.setUpdateMode(hou.updateMode.Manual)
		setCurTake(self)

		hscript_cmd = 'takeinclude ' + node_path + ' *'
		hscript_cmd_results = hou.hscript(hscript_cmd)

		if  _takeErr(hscript_cmd_results[1]):
			result = hscript_cmd_results[1]
		else: result = None

		setCurTake(cur_take)
		hou.setUpdateMode(cur_update_mode)
		
		return result
Ejemplo n.º 18
0
    def addAllParmsOfNode(self, node):
        '''Include all parameters from specified Node in this Take'''

        node_path = node.path()
        cur_take = curTake()
        cur_update_mode = hou.updateModeSetting()
        hou.setUpdateMode(hou.updateMode.Manual)
        setCurTake(self)

        hscript_cmd = 'takeinclude ' + node_path + ' *'
        hscript_cmd_results = hou.hscript(hscript_cmd)

        if _takeErr(hscript_cmd_results[1]):
            result = hscript_cmd_results[1]
        else:
            result = None

        setCurTake(cur_take)
        hou.setUpdateMode(cur_update_mode)

        return result
Ejemplo n.º 19
0
	def _addRemoveFlag(self, node,flag, add=True):
		
		cur_take = curTake()
		cur_update_mode = hou.updateModeSetting()
		hou.setUpdateMode(hou.updateMode.Manual)
		setCurTake(self)
		
		remove_flag = ''
		if add != True:
			remove_flag = '-u '
		
		hscript_cmd = 'takeinclude ' + remove_flag + '-' + flag +  ' ' + node.path()
		hscript_cmd_results = hou.hscript(hscript_cmd)
		if _takeErr(hscript_cmd_results[1]):
			result = hscript_cmd_results[1]
		else:
			result = None
			
		setCurTake(cur_take)
		hou.setUpdateMode(cur_update_mode)
		
		return result
Ejemplo n.º 20
0
	def _addRemoveParm(self, parm, add=True): ## does this expect a parm name obk or path?!
	
		node_path = parm.node().path()
		cur_take = curTake()
		cur_update_mode = hou.updateModeSetting()
		hou.setUpdateMode(hou.updateMode.Manual)
		setCurTake(self)
		
		remove_flag = ''
		if add != True:
			remove_flag = '-u '
		
		hscript_cmd = 'takeinclude ' + remove_flag + node_path + ' ' + parm.name()
		hscript_cmd_results = hou.hscript(hscript_cmd)
		
		if  _takeErr(hscript_cmd_results[1]):
			result = hscript_cmd_results[1]
		else: result = None

		setCurTake(cur_take)
		hou.setUpdateMode(cur_update_mode)
		
		return result
Ejemplo n.º 21
0
    def _addRemoveFlag(self, node, flag, add=True):

        cur_take = curTake()
        cur_update_mode = hou.updateModeSetting()
        hou.setUpdateMode(hou.updateMode.Manual)
        setCurTake(self)

        remove_flag = ''
        if add != True:
            remove_flag = '-u '

        hscript_cmd = 'takeinclude ' + remove_flag + '-' + flag + ' ' + node.path(
        )
        hscript_cmd_results = hou.hscript(hscript_cmd)
        if _takeErr(hscript_cmd_results[1]):
            result = hscript_cmd_results[1]
        else:
            result = None

        setCurTake(cur_take)
        hou.setUpdateMode(cur_update_mode)

        return result
Ejemplo n.º 22
0
def toggle_manualupdate():
    mode = hou.updateModeSetting().name()
    if mode == 'AutoUpdate':
        hou.setUpdateMode(hou.updateMode.Manual)
    if mode == 'Manual':
        hou.setUpdateMode(hou.updateMode.AutoUpdate)
Ejemplo n.º 23
0
    def hipIncrementVersion(self):
        # SETTINGS ==================
        setToFirstFrame = True  # Sets playback frame of saved file to first frame (does not affect open file)
        setToManualUpdate = False  # Sets update mode of saved file to manual (does not affect open file)
        autoversion = True  # If no versioning exists, create a new version
        autoversionzfill = 3  # digit padding for autoversioning
        debug = 0  # print some items to console
        # ===========================

        orighip = hou.hipFile.name()
        hipname = hou.hipFile.basename()
        # hipfile = hipname.split(".")[0]
        # version which works for filenames with periods
        hipfile = os.path.splitext(hipname)[0]

        # check current filename for version prefix and split accordingly
        # Uses regex so a filename like myfile_verycool_v001.hip will get picked up correctly (not match the first _v)
        versionSections = ""
        versionType = ""
        if len(re.findall('_v(?=\d+)', hipfile)) > 0:
            versionSections = re.split('_v(?=\d+)', hipfile, 1)
            versionType = "_v"
        elif len(re.findall('_V(?=\d+)', hipfile)) > 0:
            versionSections = re.split('_V(?=\d+)', hipfile, 1)
            versionType = "_V"

            # if no version prefix found, create it
        if versionSections == "":
            if (autoversion):
                versionSections = [hipfile, "0" * autoversionzfill]
                versionType = "_v"
                orighip = orighip.replace(
                    hipfile, hipfile + versionType + "0" * autoversionzfill)
                print "No version found in hip name - Autoversioning"
            else:
                print "No version found in hip name - Exiting"
                return 1

        # regex - match numbers after version splitter. Match until non-numeric value is hit.
        match = re.match('\d+', versionSections[1])
        if match:
            versionNumber = match.group(0)
        else:
            print "Problem encountered matching version number - Exiting"
            return 1

        # Create new filename
        oldVersion = versionType + versionNumber
        if debug:
            print "Old version: " + oldVersion
        newVersion = versionType + str(int(versionNumber) + 1).zfill(
            len(versionNumber))
        newhip = orighip.replace(oldVersion, newVersion)
        if debug:
            print "New file: " + newhip

        # Save the file
        confirm = 0
        if os.path.isfile(newhip):
            text = "Overwrite existing hip file?"
            confirm = hou.ui.displayMessage(text,
                                            buttons=("Yes", "No"),
                                            severity=hou.severityType.Message,
                                            title="New Hip")
        if confirm == 0:
            # update mode and frame settings
            updateMode = hou.updateModeSetting()
            frame = hou.frame()
            if (setToManualUpdate):
                hou.setUpdateMode(hou.updateMode.Manual)
            if (setToFirstFrame):
                # hou.setFrame(1)
                hou.setFrame(hou.playbar.playbackRange()[0])

            hou.hipFile.save(newhip)

            # reset update mode and frame
            hou.setUpdateMode(updateMode)
            hou.setFrame(frame)
Ejemplo n.º 24
0
 def __init__(self):
     self._current = hou.updateModeSetting()
Ejemplo n.º 25
0
 def __enter__(self):
     hou.setUpdateMode(hou.updateMode.Manual)
     hou.updateModeSetting()
Ejemplo n.º 26
0
def refreshToManualOrAutoSwitch():
    mode = hou.updateModeSetting().name()
    if mode == 'AutoUpdate':
        hou.setUpdateMode(hou.updateMode.Manual)
    if mode == 'Manual':
        hou.setUpdateMode(hou.updateMode.AutoUpdate)
Ejemplo n.º 27
0
 def __exit__(self, exc_type, exc_val, exc_tb):
     hou.setUpdateMode(self._current)
     hou.updateModeSetting()
def convertTakesToWedge(wedge_node, remove_takes):

    print "\n\nStarting to convert Takes to TOP Wedge...\n"
    print "_" * 100
    print "\n"

    wedge = wedge_node
    rem_takes = remove_takes

    #get current update mode
    update_mode_set = hou.updateModeSetting()
    #set update mode to manual
    hou.setUpdateMode(hou.updateMode.Manual)

    #get takelist and sort, get take number
    roottake = hou.takes.rootTake()
    takes = roottake.children()

    takelist = []
    for take in takes:
        takelist.append(take.name())
    #takelist = sorted(takelist)
    num_takes = len(takelist)

    print "Root Take: {}".format(roottake.name())
    print "Number of Child Takes / Wedge Count: {}".format(num_takes)
    print "Takelist: " + str(takelist) + "\n"

    #check if child takes present
    if num_takes > 0:
        #collect all edited parms in takes
        takeparm_list = []

        for takename in takelist:
            take = hou.takes.findTake(takename)
            #print "Takename: " + take.name()

            takeparms = take.parmTuples()
            for takeparm in takeparms:
                if takeparm not in takeparm_list:
                    takeparm_list.append(takeparm)
                    #print "Take Parameter appended to list: " + str(takeparm)

        num_takeparms = len(takeparm_list)
        print "{} edited Parameters found in Takes\n".format(num_takeparms)

        print "\nProcessing all edited Parameters in Takes."
        print "This might take up to a couple of minutes for very complex setups..."

        #set inital parms
        parm_wedgecount = wedge.parm("wedgecount")
        parm_wedgecount.set(num_takes)

        parm_wedgeattribs = wedge.parm("wedgeattributes")
        parm_wedgeattribs.set(num_takeparms)

        parm_preservenum = wedge.parm("preservenum")
        parm_preservenum.set(1)

        parm_previewselection = wedge.parm("previewselection")
        parm_previewselection.set(1)

        #edit interface wo hide wedge attribute parms for preformance

        parm_group = wedge.parmTemplateGroup()
        attribs_parm_temp = parm_group.find("wedgeattributes")
        attribs_parm_temp_clone = attribs_parm_temp.clone()

        new_parm_folder = hou.FolderParmTemplate(
            "parent_folder",
            "Wedge Attributes (Hidden)",
            folder_type=hou.folderType.Collapsible,
            default_value=0,
            ends_tab_group=False)

        parm_group.remove(attribs_parm_temp)
        new_parm_folder.addParmTemplate(attribs_parm_temp_clone)
        parm_group.append(new_parm_folder)

        wedge.setParmTemplateGroup(parm_group)

        #fill in takeparms
        i = 1
        for takeparm in takeparm_list:

            #print takeparm
            #list of parm tuples!!!
            takeparm_path = takeparm.node().path() + "/" + takeparm.name()

            takeparm_type = type(takeparm[0].eval())
            takeparm_is_tuple = len(takeparm) > 1

            #print takeparm.eval()
            #print takeparm_type
            #print "Is Tuple: " + str(takeparm_is_tuple)

            #set
            parm_name = wedge.parm("name" + str(i))
            parm_name.set(takeparm.name() + "_" + str(i))

            parm_exportchannel = wedge.parm("exportchannel" + str(i))
            parm_exportchannel.set(1)

            parm_channel = wedge.parm("channel" + str(i))
            parm_channel.set(takeparm_path)

            parm_type = wedge.parm("type" + str(i))
            if takeparm_type == float and takeparm_is_tuple == False:
                parm_type.set(0)
            if takeparm_type == float and takeparm_is_tuple == True:
                parm_type.set(1)
            if takeparm_type == int and takeparm_is_tuple == False:
                parm_type.set(2)
            if takeparm_type == int and takeparm_is_tuple == True:
                parm_type.set(3)
            if takeparm_type == str:
                parm_type.set(4)

            parm_wedgetype = wedge.parm("wedgetype" + str(i))
            parm_wedgetype.set(2)

            parm_values = wedge.parm("values" + str(i))
            parm_values.set(num_takes)

            #incr
            i += 1

        #iterate over takes again, actually set them active and evaluate & set corresponding parms in wedge
        root_take = hou.takes.rootTake()

        t = 1
        for takename in takelist:
            take = hou.takes.findTake(takename)
            #print "Set to Take: " + take.name()
            hou.takes.setCurrentTake(take)

            #fill in takeparms again with evalueted values from takes
            i = 1
            for takeparm in takeparm_list:

                #takeparm attribs
                takeparm_path = takeparm.node().path() + "/" + takeparm.name()

                takeparm_type = type(takeparm[0].eval())
                takeparm_size = len(takeparm)
                takeparm_is_tuple = takeparm_size > 1

                #check type and set valname accordingly
                if takeparm_type == float and takeparm_is_tuple == False:
                    valname = "floatvalue"
                if takeparm_type == float and takeparm_is_tuple == True:
                    valname = "floatvector"
                if takeparm_type == int and takeparm_is_tuple == False:
                    valname = "intvalue"
                if takeparm_type == int and takeparm_is_tuple == True:
                    valname = "intvector"
                if takeparm_type == str:
                    valname = "strvalue"

                #if tuple and size is 3 append 0 so it matches size of vector4 tuples in wedge node

                parm_val = wedge.parmTuple(valname + str(i) + "_" + str(t))

                if takeparm_size == 3:
                    val_t = takeparm.eval()
                    val_l = list(val_t)
                    val_l.append(0)
                    val = tuple(val_l)

                else:
                    val = takeparm.eval()

                #include parm_val in take so its editable
                take.addParmTuple(parm_val)
                #go back to root take
                hou.takes.setCurrentTake(root_take)
                #set value
                parm_val.set(val)
                #go back to current take
                hou.takes.setCurrentTake(take)
                #exclude parm_val in take to clear
                take.removeParmTuple(parm_val)

                #incr
                i += 1

            #incr
            t += 1

            #remove takes if chosen
            if rem_takes == True:
                #print "Take deleted"
                take.destroy()

        hou.takes.setCurrentTake(root_take)
        #print "\nReset to Root Take"

        #select node
        wedge.setSelected(on=True, clear_all_selected=True)
        wedge.setCurrent(1)

        print "\n"
        print "_" * 100
        print "Takes successfully converted to TOP Wedge."
        print "Creating Node UI, this might take another couple seconds."
        print "_" * 100
        print "\n" * 2

    #exception when no child takes found
    else:
        raise Exception("No Child Takes found.")

    #reset update mode
    hou.setUpdateMode(update_mode_set)
Ejemplo n.º 29
0
# directly taken from a sidefx forum post
import hou
mode = hou.updateModeSetting().name()

if mode == 'AutoUpdate':
	hou.setUpdateMode(hou.updateMode.Manual)
if mode == 'Manual':
	hou.setUpdateMode(hou.updateMode.AutoUpdate)

Ejemplo n.º 30
0
def toggleUpdateMode():
    mode = hou.updateModeSetting()
    if mode != hou.updateMode.AutoUpdate:
        hou.setUpdateMode(hou.updateMode.AutoUpdate)
    else:
        hou.setUpdateMode(hou.updateMode.Manual)
Ejemplo n.º 31
0
    def __init__(self, mode):

        self.__mode = mode
        self.__prevMode = hou.updateModeSetting()
Ejemplo n.º 32
0
    def __init__(self, mode):

        self.__mode = mode
        self.__prevMode = hou.updateModeSetting()