How to Determine if an Object Supports Effectors?



  • On 01/08/2016 at 11:37, xxxxxxxx wrote:

    Hi,

    What is the best practice to check to see if an object is a MoGraph object and supports effectors? I'm currently manually building a list of object ID's and checking against that.

      
    def is_cloner(obj) :   
        CLONER_IDS = [   
            1018544, # Cloner   
            1018545, # Matrix   
            1018791, # Fracture   
            1018957, # MoInstance   
            1019268, # MoText   
            1018655, # Tracer   
            440000054 # MoSpline   
        ]   
           
        if obj.GetType() in CLONER_IDS:   
            return True   
           
        return False   
    

    This works fine until a new cloner object is introduced (like the new Voronoi Fracture), at which point my plugin doesn't behave as expected and I have to add the new ID and push out an update to all users. Is there a method in the mograph module for checking this?
    Thanks,

    Donovan



  • On 02/08/2016 at 02:26, xxxxxxxx wrote:

    Hi Donovan,

    all these objects are an instance of Obasemogen. Just note, this is also true for the PolyFX, but as it takes effectors as well, it's probably even a desired side effect.



  • On 02/08/2016 at 14:38, xxxxxxxx wrote:

    Perfect. Thank you!

      
    """Is it a MoGraph Generator?   
    """   
      
    import c4d   
    from c4d import gui   
    #Welcome to the world of Python   
      
      
    def main() :   
        if not op:   
            return   
           
        if op.IsInstanceOf(c4d.Obasemogen) :   
            print op.GetName() + " is a MoGraph Generator!"   
        else:   
            print op.GetName() + "is not a MoGraph Generator."   
      
    if __name__=='__main__':   
        main()   
    

    It seems like "Obasemogen" isn't documented in the Python SDK, so I'd suggest adding it.
    Thanks!

    Donovan


Log in to reply