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

Reply via email to