Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 04/06/2012 at 18:38, xxxxxxxx wrote:
User Information: Cinema 4D Version: 13 Platform: Mac OSX ; Language(s) : PYTHON ;
--------- I'm trying to force the folding of an object with children, in the Object Manager. I tried it in COFFEE and it didn't work. Now I was trying to do it in Python and it seems that it doesn't work either I tried with:
op.SetBit(BIT_OFOLD)
and with
op.SetBit(NBIT_OM1_FOLD)
But nothing happens. Is it also not possible with Python?
Rui Batista
On 05/06/2012 at 00:25, xxxxxxxx wrote:
Have You tried 'GeListNode.ChangeNBit(c4d.NBIT_OM1_FOLD, c4d.NBITCONTROL_SET)' in Python?
Cheers Peter
On 05/06/2012 at 03:28, xxxxxxxx wrote:
How should I apply it? Like this?
op.ChangeNBit(c4d.NBIT_OM1_FOLD, c4d.NBITCONTROL_SET)
If it is, it is still not working
On 05/06/2012 at 03:54, xxxxxxxx wrote:
It's necessary to inform the manager about the update with an EventAdd().
Toggles the fold state:
op.ChangeNBit(c4d.NBIT_OM1_FOLD, c4d.NBITCONTROL_TOGGLE) op.Message(c4d.MSG_CHANGE) c4d.EventAdd()
cheers, Matthias
On 05/06/2012 at 04:21, xxxxxxxx wrote:
Well, what I'm trying to achieve is an object that folds itself as soon as an object is dropped in or outside it. For that, I created a Python Generator with the following code:
old_childs=0 import c4d #Welcome to the world of Python def main() : global old_childs childs=0 current=op.GetDown() if current is None: return while current is not None: childs=childs+1 current=current.GetNext() if childs==old_childs: return old_childs=childs op.ChangeNBit(c4d.NBIT_OM1_FOLD, c4d.NBITCONTROL_SET) op.Message(c4d.MSG_CHANGE) c4d.EventAdd() return c4d.BaseObject(c4d.Onull)
But it is not working. Could it be because the object is trying to fold itself?
On 05/06/2012 at 05:23, xxxxxxxx wrote:
A bit confusing, but the clear bit folds the object.
Example for Python generator:
import c4d #Welcome to the world of Python def main() : op.ChangeNBit(c4d.NBIT_OM1_FOLD, c4d.NBITCONTROL_CLEAR) op.Message(c4d.MSG_CHANGE) c4d.EventAdd() return c4d.BaseObject(c4d.Ocube)
Personally I think it's not a good idea to do and I'm not sure if it's thread safe etc.
On 05/06/2012 at 05:37, xxxxxxxx wrote:
Weird!! I would assume that to fold we would need to SET the bit. This is for a Vault object - I would place in it objects that I want to keep but that I currently don't need. It will only fold when objects are added or removed from it. But I can still fold/unfold it manually. Thank you very much for your help, Matthias.
On 05/06/2012 at 05:57, xxxxxxxx wrote:
This should work in an Python Expression Tag. Let me know. Should you need to do this via a Command script, you would need to store the childcount in the parent object itself, using a unique ID from PlugIn Cafe'.
Cheers Lennart
import c4d childcountmemo = 0 def main() : global childcountmemo obj = op.GetObject() obj[c4d.TPYTHON_RESET] = False # Turn off 'Reset on Frame 0' obj[c4d.TPYTHON_FRAME] = False # and 'Frame Dependent' childcount = len(obj.GetChildren()) if childcount != childcountmemo and obj.GetNBit(c4d.NBIT_OM1_FOLD) : obj.ChangeNBit(c4d.NBIT_OM1_FOLD,c4d.NBITCONTROL_CLEAR) childcountmemo = childcount