Works a treat. Thanks to all who have replied.
Check out some of my work… www.vimeo.com/darrencoombes/reel2017 <http://www.vimeo.com/darrencoombes/reel2017> Mob: +61 418 631 079 <tel:+61%20418%20631%20079> IMDB: www.imdb.com/name/nm3719099/ Instagram: @7secondstoblack Instagram: @durwood0781 Skype: darren.coombes81 Twitter: @durwood81 > On 22 Mar 2017, at 7:23 pm, Diogo Girondi <[email protected]> wrote: > > If you want the center of a selection of nodes you could do something like: > > sn = nuke.selectedNodes() > xp = [n.xpos() for n in sn] > yp = [n.ypos() for n in sn] > wa = sum([n.screenWidth() for n in sn])/len(xp) # node width average > ha = sum([n.screenHeight() for n in sn])/len(xp) # node height average > cx = int(min(xp)+((max(xp)-min(xp))*0.5)-(wa/2)) # selected x center > cy = int(min(yp)+((max(yp)-min(yp))*0.5)-(ha/2)) # selected y center > # position offset > xo = 0 > yo = 100 > > n = nuke.nodes.Blur() > n.setXpos(cx+xo) > n.setYpos(cy+yo) > > On Thu, Mar 16, 2017 at 6:48 PM, Rich Bobo <[email protected] > <mailto:[email protected]>> wrote: > Darren, > > I see you’ve edited the function to only return only the X position value… > I’m not sure why you are doing that and I don’t have time to look at the rest > of the code at the moment, but if you use the function “as is", it works. > > If you only want one of the values, bind the resulting list to a variable... > > centerXYpos = nodeList_center() > > …and get the x or y value you want with its list index number... > > centerXYpos[0] # X value > centerXYpos[1] # Y value > > Does the make sense? > > Rich > > >> On Mar 16, 2017, at 5:24 PM, Darren Coombes <[email protected] >> <mailto:[email protected]>> wrote: >> >> Thanks Rich. >> I can’t seem to get it to work. >> >> Here’s the full script.. Feel free to use it if you can get the centre node >> part working. >> >> >> # v2.3 march 2017 >> >> import nuke >> import os >> >> >> n=nuke.selectedNodes() >> >> # delete all Viewer Nodes (so they dont get included in groups later on) >> def deleteViewer(): >> for n in nuke.allNodes('Viewer'): >> nuke.delete(n) >> >> >> # arrange all nodes neatly using autoplace command >> def cleanUp(): >> nuke.selectAll() >> for n in nuke.selectedNodes(): >> nuke.autoplace(n) >> >> >> >> # looks for all read nodes, then creates node labelthumb under each read >> def addlt(): >> # adds a certain node under each "Read" Node = Filters Node Class "Read" >> sn = nuke.selectedNodes("Read") >> >> if sn == []: >> sn = nuke.allNodes("Read") >> if sn == []: >> nuke.message("No Read nodes found") >> else: >> for n in sn: >> n.knob("selected").setValue(True) >> nuke.createNode("LabelThumb", "", False) >> >> >> #selects all LabelThumb Nodes >> def allLT(): >> for n in nuke.allNodes('Group'): >> n['selected'].setValue(True) >> >> >> >> >> # find x center point for next node creation >> def nodeList_center(nodeList=None): >> '''Node placement function, from Drew Loveridge...''' >> if nodeList == None: >> nodeList=nuke.selectedNodes() >> nNodes = len(nodeList) >> x=0 >> for n in nodeList: >> x += n.xpos() >> try: >> return [x/nNodes] >> except ZeroDivisionError: >> return [0] >> print nodeList_center() >> nodeList_center() >> >> >> >> nlist = nodeList_center() >> print nlist >> >> # create contactsheet node with a gap of 20 >> def createCS(): >> cs = nuke.createNode('ContactSheet') >> cs['gap'].setValue(20) >> cs['center'].setValue(True) >> cs['label'].setValue("inputs: [value inputs]") >> # cs.knob('xpos').setValue(nlist) >> cs.setXpos(nlist[0]) >> >> >> ## creates a group of all selected nodes.. >> #selects all LabelThumb Nodes >> def mkGroup(): >> nuke.selectAll() >> nuke.collapseToGroup() >> >> def addKnobs(): >> g = nuke.selectedNode() >> k = nuke.Enumeration_Knob("listfiles", "files", ['red', 'green', 'blue']) >> g.addKnob(k) >> >> >> >> >> >> >> def addLabelThumb(): >> deleteViewer() >> cleanUp() >> addlt() >> allLT() >> nodeList_center() >> createCS() >> #mkGroup() >> >> >> >> >> >> >> >> >> Check out some of my work… >> www.vimeo.com/darrencoombes/reel2017 >> <http://www.vimeo.com/darrencoombes/reel2017> >> >> Mob: +61 418 631 079 <tel:+61%20418%20631%20079> >> IMDB: www.imdb.com/name/nm3719099/ <http://www.imdb.com/name/nm3719099/> >> Instagram: @7secondstoblack >> Instagram: @durwood0781 >> Skype: darren.coombes81 >> Twitter: @durwood81 >> >>> On 17 Mar 2017, at 7:51 am, Rich Bobo <[email protected] >>> <mailto:[email protected]>> wrote: >>> >>> cs.setXYpos(center[0], center[1]+300) >> >> _______________________________________________ >> Nuke-users mailing list >> [email protected] >> <mailto:[email protected]>, >> http://forums.thefoundry.co.uk/ <http://forums.thefoundry.co.uk/> >> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users >> <http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users> > > _______________________________________________ > Nuke-users mailing list > [email protected] > <mailto:[email protected]>, http://forums.thefoundry.co.uk/ > <http://forums.thefoundry.co.uk/> > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users > <http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users> > > _______________________________________________ > Nuke-users mailing list > [email protected], http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
_______________________________________________ Nuke-users mailing list [email protected], http://forums.thefoundry.co.uk/ http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
