Hi Ben thanks for your script. I am not so much concerned with overlapping as I am with having every node be always on the grid. This seems to be especially tricky when nodes are being created. Like in this image:
Pete On Thu, Apr 21, 2011 at 8:43 PM, Ben Dickson <[email protected]> wrote: > Ahh.. You could possibly traverse down the tree, offsetting nodes that > overlap.. > > Something like this: > > from math import sqrt > > mindist = 30 > def avoid_overlapping(startnode, offset = mindist): > sx, sy = startnode.xpos(), startnode.ypos() > for n in startnode.dependent(): > nx, ny = n.xpos(), n.ypos() > if sqrt((nx - sx)**2 + (ny - sy)**2) < mindist: > print "Node %s is too close, it's being moved by %s"%( > n.name(), offset) > n.setYpos(n.ypos() + offset) > offset += mindist > avoid_overlapping(n, offset = offset) > > avoid_overlapping(nuke.selectedNode()) > > > If you arrange up a bunch of nodes so they overlap, then select the > top-most node, the code should shove them apart.. Doesn't handle some > things too well (nodes overlapping horizontally), but seems to do a > decent job, and should probably incorporate the node's screenheight for > tall nodes > > > Pete O'Connell wrote: > > Hi Ben. That code still doesn't solve the problem of creating nodes when > > other nodes are selected, so for example if in the dag I hit the letter > > "b" seven times, each subsequent blur node lands further and further off > > the grid in y. I find myself having to reposition my nodes a lot because > > of this. > > Know what I mean? > > pete > > > > On Thu, Apr 14, 2011 at 1:52 PM, Ben Dickson <[email protected] > > <mailto:[email protected]>> wrote: > > > > You can press \ and it'll auto-snap all (or all selected) nodes to > > the grid. > > > > Programatically, is the snap to grid code in the nukescripts code > > somewhere? If not, I guess you could make a snap-to-grid function > quite > > easily.. Something like: > > > > node = nuke.selectedNode() > > gridsize = 50 # could be grabbed from preferences > > > > orig_y = node.ypos() > > new_y = round(float(orig_y) / gridsize) * gridsize > > node.setYpos(new_y) > > > > Pete O'Connell wrote: > > > Well it seemd to be a bit more complicated... If I use Nathan's > script > > > and make a blur node with, it snaps to the grid, but if I make a > > second > > > blur node with the first blur still selected, it isn't snapped to > the > > > grid and that one I have to repo by hand. The second blur seems to > be > > > positioned a relative amount offset under the first node. I am > > trying to > > > reduce all the repositioning I have to do in the dag throughout > > the day. > > > Isn't there a way to have every node always be forced onto the > > grid. I > > > am also trying to avoid that situation where one node is directly > > on top > > > of another after snapping (by making sure that eveything is > > initially on > > > the grid). > > > > > > Did I miss this page in the manual? > > > Pete > > > > > > > > > On Tue, Apr 12, 2011 at 5:30 PM, Pete O'Connell > > <[email protected] <mailto:[email protected]> > > > <mailto:[email protected] <mailto:[email protected]>>> > > wrote: > > > > > > That works! > > > > > > Thanks Nathan > > > Pete > > > > > > > > > On Tue, Apr 12, 2011 at 5:22 PM, Nathan Rusch > > > <[email protected] <mailto:[email protected]> > > <mailto:[email protected] <mailto:[email protected]>>> > > wrote: > > > > > > What about just using the .autoplace() node method? > > > > > > def apCreated(): > > > nuke.thisNode().autoplace() > > > > > > nuke.addOnUserCreate(apCreated) > > > > > > -Nathan > > > > > > > > > *From:* Pete O'Connell <mailto:[email protected] > > <mailto:[email protected]>> > > > *Sent:* Monday, April 11, 2011 6:39 PM > > > *To:* [email protected] > > <mailto:[email protected]> > > > <mailto:[email protected] > > <mailto:[email protected]>> > > > *Subject:* [Nuke-python] snap to grid on user create? > > > > > > Hello Nuke python enthusiasts. I am trying to have every > > node I > > > create be snapped to the grid as I create them. It is > proving > > > trickier thatn I thought. > > > I have been working on variations on the code below which > > > doesn't work I assume because the node becomes selected > > after it > > > is created. Maybe the node needs to be an argument to the > > > autosnap function? > > > > > > ################################################3 > > > import nuke > > > def autoplaceSnapSelectedNodesOnUserCreate(): > > > m = nuke.selectedNodes() > > > for i in m: > > > nuke.autoplaceSnap(i) > > > if __name__ == '__main__': > > > autoplaceSnapSelectedNodesOnUserCreate() > > > > > > > > > > nuke.addOnUserCreate(autoplaceSnapSelectedNodesOnUserCreate) > > > > > > ######################################################################## > > > > > > Any Suggestions would be greatly appreciated > > > Pete > > > > > > > > > ------------------------------------------------------------------------ > > > _______________________________________________ > > > Nuke-python mailing list > > > [email protected] > > <mailto:[email protected]> > > > <mailto:[email protected] > > <mailto:[email protected]>> > > > > > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > > > > _______________________________________________ > > > Nuke-python mailing list > > > [email protected] > > <mailto:[email protected]> > > > <mailto:[email protected] > > <mailto:[email protected]>> > > > > > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > > > > > > > > > > > > > -- > > > Pete > > > > > > > > > > > > > > > -- > > > Pete > > > > > > > > > > > > ------------------------------------------------------------------------ > > > > > > _______________________________________________ > > > Nuke-python mailing list > > > [email protected] > > <mailto:[email protected]> > > > > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > > -- > > ben dickson > > 2D TD | [email protected] <mailto:[email protected]> > > rising sun pictures | www.rsp.com.au <http://www.rsp.com.au> > > _______________________________________________ > > Nuke-python mailing list > > [email protected] > > <mailto:[email protected]> > > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > > > > > > > > -- > > Pete > > > > > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > Nuke-python mailing list > > [email protected] > > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > -- > ben dickson > 2D TD | [email protected] > rising sun pictures | www.rsp.com.au > _______________________________________________ > Nuke-python mailing list > [email protected] > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > -- Pete
<<attachment: nukeNodeCreationExample.png>>
_______________________________________________ Nuke-python mailing list [email protected] http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
