Hey Jonathan that's interesting that setXYpos works. If only autoplace would
too. I submitted a bug report to the Foundry. I am trying to use
executeInMainThread to wrap the whole thing, but that also doesn't seem to
wake up the snap function.
Hmmm

Pete

On Tue, Apr 26, 2011 at 3:30 AM, Jonathan King <[email protected]>wrote:

> Did you try setXYpos() ?  Annoying, because it seems like setXYpos() works,
> but setYpos() doesn't.  Not the most efficient, but could be a workaround.
>
> # this seems to work fine
>
> nuke.createNode('Blur')
> theSelectedNode = nuke.selectedNode()
> theYpos = theSelectedNode.ypos()
> theXpos = theSelectedNode.xpos()
>
> theYpos += 1000
> theNewNode = nuke.createNode("Blur")
> theNewNode.setXYpos(theXpos, theYpos)
>
> # this doesn't work
>
> nuke.createNode('Blur')
> theSelectedNode = nuke.selectedNode()
> theYpos = theSelectedNode.ypos()
> theYpos += 1000
> theNewNode = nuke.createNode("Blur")
> theNewNode.setYpos(theYpos)
>
>
>
> JCK
>
> ------------------------------
> *From: *"Frank Rueter" <[email protected]>
> *To: *"Nuke Python discussion" <[email protected]>
> *Sent: *Sunday, April 24, 2011 4:31:47 PM
> *Subject: *Re: [Nuke-python] snap to grid on user create?
>
>
> both those examples work for me but it does seem like the onCreate callback
> can't change the knobs on creation. Same for knobChanged.
>
> I'd report it as a bug.
>
> On Apr 25, 2011, at 2:48 AM, John RA Benson wrote:
>
> Not helping, but this looks like a bug because this makes no sense at all :
> i happened to try your snippet with a Camera node selected (and then some
> other 3D nodes) and it did work as expected. When the blur is the selected
> node, it doesn't. Why would getting a ypos from a 3D node be any different
> than any other node?
>
>
> nuke.createNode('Camera2')
> theSelectedNode = nuke.selectedNode()
> theYpos = theSelectedNode.ypos()
> theYpos +=1000
> theNewNode = nuke.createNode("Blur")
> theNewNode['ypos'].setValue(theYpos)
> nuke.tprint( 'offset from camera ypos.value(): %s' %
> theNewNode['ypos'].value())
> nuke.tprint( 'offset from camera ypos(): %s' % theNewNode.ypos())
> # both values match and the blur accepted the setValue
>
> nuke.createNode('Blur')
> theSelectedNode = nuke.selectedNode()
> theYpos = theSelectedNode.ypos()
> theYpos +=1000
> theNewNode = nuke.createNode("Blur")
> theNewNode['ypos'].setValue(theYpos)
> nuke.tprint( 'offset from Blur ypos.value(): %s' %
> theNewNode['ypos'].value())
> nuke.tprint( 'offset from Blur ypos(): %s' % theNewNode.ypos())
> # values do not match and the new blur is located at the ypos() position,
> not the reported ['ypos'].value() position
>
> Cheers
> JRAB
>
> On Apr 24, 2011, at 1:57 PM, Pete O'Connell wrote:
>
> 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
>
>
> _______________________________________________
> 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
>
> _______________________________________________
> 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