Scripting metaballs with negative influence I'm generating metaballs with a python script, and I need to be able to toggle the negative option for some of the metaballs. (Edit: negative changes the object's "influence" to subtract from the other metaballs, instead of adding like normal metaballs; the negative checkbox can be found in a metaball object's Object Data section while in Edit Mode.)

def metbaseobj(N=3,scale=1.0):
    '''adds N metaball objects to provide the base shape'''
    shapes = ['CAPSULE','ELLIPSOID','BALL','CUBE']
    metbaseinfo = []

    for each in range(N):
        shape = shapes[random.randint(0,1)]
        loc=(scale*random.random(),scale*random.random(),scale*random.random())
        rot=(random.random(),random.random(),random.random())
        bpy.ops.object.metaball_add(type=shape,location=loc,rotation=rot)
        #[toggle metaball influence to be negative here]
        metbaseinfo.append((shape,loc,rot))

    return(metbaseinfo)


I found a documentation page that makes me think use_negative=True is what I need, I just can't figure out how to use it exactly. Thanks for any help, I'll keep looking in the meantime.
It seems you already found the wiki docs on metaballs, lots of juicy content there indeed, perhaps after reading/running this script that documentation will make more sense.

You seem to be adding multiple separate metaball objects, instead add one metaball object, and internally to that object create metaball elements, then set their interaction type, something like this.

import bpy

scene = bpy.context.scene

# add metaball object
mball = bpy.data.metaballs.new("MyBall")
obj = bpy.data.objects.new("MyBallObject", mball)
scene.objects.link(obj)

# test with different values, for viewport do you need ultra high res?
mball.resolution = 0.16  # View resolution
# mball.render_resolution = you decide

# first metaball element doesn't exist yet - create it.
ele = mball.elements.new()
ele.co = (0.0, 0.0, 0.0)
ele.use_negative = False
ele.radius = 2.0

# adding extra metaball elements to the object 
ele = mball.elements.new()
ele.co = (-0.726, 1.006, 0.559)
ele.use_negative = True
ele.radius = 0.82279


And that's it.