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 09/07/2011 at 12:09, xxxxxxxx wrote:
Hy there,
is it possible to access the settings of a Cinema function like "Optimize"?
There I would like to read out for example the Tolerance value. I found the DialogResource and could maybe create an ID, but how would I get the container?
Thank you, maxx
On 09/07/2011 at 14:44, xxxxxxxx wrote:
Optimize can be accessed through the SendModelingCommand.
import c4d from c4d import gui,utils def main() : obj = doc.GetActiveObject() bc = c4d.BaseContainer() bc.SetData(c4d.MDATA_OPTIMIZE_TOLERANCE, 30) #Sets the Tolerance value to 30 bc.SetData(c4d.MDATA_OPTIMIZE_POINTS, True) #Optimize the points of the object utils.SendModelingCommand(c4d.MCOMMAND_OPTIMIZE, list = [obj], mode = c4d.MODIFY_ALL, bc=bc, doc = doc) c4d.EventAdd() print bc.GetData(c4d.MDATA_OPTIMIZE_TOLERANCE) #Gets the current Tolerance value if desired if __name__=='__main__': main()
-ScottA
On 09/07/2011 at 16:49, xxxxxxxx wrote:
Hy Scott,
unfortunately that part is clear to me
What I want is to read out the current values that where set through the optimize function. So, I want to retrieve the container and read out the values, not create one.
Regards, maxx
On 09/07/2011 at 17:48, xxxxxxxx wrote:
That's what the GetData() function does.
If you want to loop through the container of an object and get all the container items you can do this:
import c4d from c4d import gui def main() : obj = doc.GetActiveObject() bc = obj.GetData() #Get the object's container data for i in bc: print i if __name__=='__main__': main()
And if you have your own custom container you can loop through it like this:
import c4d from c4d import gui def main() : bc = c4d.BaseContainer() bc.SetData(c4d.MDATA_OPTIMIZE_TOLERANCE, 30) bc.SetData(c4d.MDATA_OPTIMIZE_POINTS, True) for i in bc: print i if __name__=='__main__': main()
I can't think of anything else you would do with a container. Other than getting and setting.
On 10/07/2011 at 06:13, xxxxxxxx wrote:
thank you for the answer. We are not yet there
It is still not clear to me, how I would retrieve the current threshold for the optimize function. I understand how to get and set values, but where is the container of the optimize-function?
So, I do not want just to set the values for the command, that part is clear. I want to first read out the values which the user has set the last time using the Cinema optimize function.
Thank you for your efforts, maxx
On 10/07/2011 at 08:35, xxxxxxxx wrote:
Oh. I see. You want to get at the original container for it?
I'm not sure if that's possible. In the C++ docs it mentions a GetToolData() function. Then under it it says not available. Or something along those lines. I forget the exact wording.
Trying to access the document's container in python like this:
import c4d from c4d import gui def main() : bc = doc.GetData() for i in bc: print i if __name__=='__main__': main()
Results in the error: Parameter value not accessible(object unknown in Python)
So as far as I know. The only way to get at that value is to set the value yourself in a custom container(bc). Then use GetData() to get it's value. I don't see any way to get at the original container. But maybe someone else will know the answer.
On 10/07/2011 at 10:22, xxxxxxxx wrote:
Hey Scott,
now we are there!
I found the GetToolData() method in Python, I will check it out now. But I am pretty certain that this solves my problem!
Thank you very much, maxx