CurrentStateToObject returning Null
-
I'm adjusting the code of my plugins to make then work in R21.
One of them creates, internally, a Sweep that is then converted to a polygonal object through a SendModelingCommand, set to CurrentStateTo Object.
The plugin works fine until R20, but in R21, the SendModelingCommand (set to CSTO), returns a Null.
Did anything changed and needs to be done differently? -
Hello,
can you share your code?
best wishes,
Sebastian -
Will do, as soon as I get home.
Thank you. -
This is my code
... version_number=c4d.GetC4DVersion() main_sweep=c4d.BaseObject(c4d.Osweep) main_sweep[c4d.SWEEPOBJECT_GROWTH]=completeness main_sweep[c4d.SWEEPOBJECT_SPLINESCALE]=spline_scale main_sweep[c4d.SWEEPOBJECT_ROTATE]=twist1 if version_number<21000: main_sweep[c4d.CAP_START]=close_start main_sweep[c4d.CAP_END]=close_end main_sweep[c4d.CAP_TYPE]=2 else: main_sweep[c4d.CAPSANDBEVELS_CAP_ENABLE_START]=close_start main_sweep[c4d.CAPSANDBEVELS_CAP_ENABLE_END]=close_end main_sweep[c4d.CAPSANDBEVELS_CAP_TYPE]=2 # insert the path inside the SweepNURBS new_spline.InsertUnder(main_sweep) # insert the profile inside the SweepNURBS main_profile=c4d.BaseObject(c4d.Osplinerectangle) main_profile[c4d.PRIM_RECTANGLE_WIDTH]=profile_size main_profile[c4d.PRIM_RECTANGLE_HEIGHT]=profile_size main_profile.InsertUnder(main_sweep) the_mode=c4d.MODELINGCOMMANDMODE_ALL if version_number<21000: the_mode=c4d.MODIFY_ALL result=utils.SendModelingCommand(command=c4d.MCOMMAND_CURRENTSTATETOOBJECT,list=[main_sweep],mode=the_mode,bc=c4d.BaseContainer(),doc=doc)
The result variable returns this:
[<c4d.BaseObject object called 'Sweep/Null' with ID 5140 at 0x149102450>]
It is simply a Null without any children.
I know that the Sweep is fine, because when I return just the Sweep, I get the correct Sweep. But I need it be a polygonal object, not a Generator.
What could be happening? -
Oh, another information that could be important.
This is an Object plugin. And, when testing, if I simply return the Sweep object, it generates the correct mesh (although, I require a polygonal mesh because I still have to do some operations on the faces).
But, if I press the C key, the Object plugin generates a simple Sweep Generator, without any children. -
Also, replacing the MCOMMAND_CURRENTSTATETOOBJECT with MCOMMAND_MAKEEDITABLE, I get this error:
ReferenceError: the object 'c4d.BaseObject' is not alive
-
Hello,
this is currently a bug, already fixed and will ship with the next update R21.1 (SP1).
The only work around is to create a temporary document, insert the sweep there, run the command there.
Also, replacing the MCOMMAND_CURRENTSTATETOOBJECT with MCOMMAND_MAKEEDITABLE, I get this error:
ReferenceError: the object 'c4d.BaseObject' is not aliveI cannot reproduce this, can you share the whole code ?
Cheers,
Manuel -
It is working now. However, after a while, I got an error that it looked like a memory leak or something similar.
I'm using c4d.documents.IsolateObjects to create a new temporary document.
Do I need to delete that new document, after performing the MCOMMAND_CURRENTSTATETOOBJECT? -
hello,
what is the error message ?
the document should be free at the end of the scope if no reference is pointing to it.
Cheers,
Manuel -
hello @rui_mac without futher information i'll change this thread as resolved tomorrow.