Hi Frank. Well I think the problem I am running in to here is that
nuke.createNode doesn't seem to allow knobs to be changed immediately after
it's creation. Like in the code below, the node doesn't hop down 1000 units
as I would expect it to.
#########################

theSelectedNode = nuke.selectedNode()

theYpos = theSelectedNode['ypos'].value()

theNewNode = nuke.createNode("Blur")

theNewNode['ypos'].setValue(theYpos+1000)

##############################


Using nuke.nodes seems more promising because at least it isn't doing
anything under the hood but at the same time it will be harder to
implement.

Thanks for the idea of using node.screenWidth

Pete


On Sat, Apr 23, 2011 at 12:35 PM, Frank Rueter <[email protected]>wrote:

> I haven't looked at suggestions in this thread but my gut feeling would be
> to try and adjust the node positions through the onUserCreate callback
> using node.xpos, node.ypos, node.screenWidth and screenHeight and of course
> the grid settings from the prefs.
>
>
> On Apr 22, 2011, at 11:47 PM, Pete O'Connell wrote:
>
> 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
> <nukeNodeCreationExample.png>
> _______________________________________________
>
> Nuke-python mailing list
> [email protected]
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>
>
>
> _______________________________________________
> Nuke-python mailing list
> [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

Reply via email to