Get settings of a Cinema function



  • 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



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    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



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    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



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    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.

    -ScottA



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 10/07/2011 at 06:13, xxxxxxxx wrote:

    Hy Scott,

    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



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    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.

    -ScottA



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    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


Log in to reply