How to Determine if an Object Supports Effectors?

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


    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?


  • 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:   
        if op.IsInstanceOf(c4d.Obasemogen) :   
            print op.GetName() + " is a MoGraph Generator!"   
            print op.GetName() + "is not a MoGraph Generator."   
    if __name__=='__main__':   

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


Log in to reply