Force MoData Array to update



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

    On 10/12/2012 at 09:36, xxxxxxxx wrote:

    How would I go about forcing my MoData Array to reflect the actual cloner count? As it stands, when I change the cloner count, the Array won't update until after I click in the Object Manager, at which time, the array length comes back correct.

    I've tried adding c4d.EventAdd() and also resetting my array=[], but neither has any effect.

    My test:

    import c4d
    from c4d.modules import mograph
    #Welcome to the world of Python

    def main() :
        #ar = None
        
        op = doc.SearchObject('Cloner')           # Get cloner reference
        
        md = mograph.GeGetMoData(op)              # Get MoData on clones
        
        ar = md.GetArray(c4d.MODATA_MATRIX)       # Get array of clone matrices
        
        
        print(str(op[c4d.MG_LINEAR_COUNT]))       # Shows correct cloner count
        print('array length: ' + str(len(ar)))    # Shows incorrect array length

    Thanks,

    Jim



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

    On 10/12/2012 at 19:03, xxxxxxxx wrote:

    To me it sounds like a priority issue.
    Either have your Expression tag object after the Cloner (lower in OM)
    And/or set the priority of the expression tag to late Generators (480+ somewhere)

    A quick test here and it worked in real time for me.

    Cheers
    Lennart



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

    On 11/12/2012 at 06:36, xxxxxxxx wrote:

    Oh man, I'm sorry I left this bit out. Thanks Lennart for the reply, but I'm not using a tag - my code is on the Python Generator, and I haven't been able to see a way to set any priority between it and the cloner.

    I tried the function outlined here http://www.cineversity.com/wiki/Python%3A_Setting_Priorities/

    But with no avail.

    If you have any more advice that would be great.
    FYI - I'm using the Python Generator in order to get the script to run upon User Data update, which I haven't been able to do using a tag. Essentially, I haven't learned how to listen to update events yet :)

    Thanks,

    Jim



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

    On 11/12/2012 at 08:07, xxxxxxxx wrote:

    Py Generator is generally meant for generating objects based on internal and/or external criteria.
    If you're not making new objects I'd think an expression tag might be a better option, as you
    can set the priority for it.
    For Py Generator you would need to get and check various cache and dirty status of external objects.
    A bit more complicated in my experience.

    Cheers
    Lennart



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

    On 11/12/2012 at 08:59, xxxxxxxx wrote:

    Thanks Lennart.
    I am generating objects, so I'll take a look at that further.

    Jim


Log in to reply