Extrude curved plane to flat plane

Hi all,
I’m collecting some python tools for a blender based CAM toolchain for airfoils, hydrofoils design, milling here: ghPages.

I’m currently working on how to generate a mould for laminating.
I have a partly curved surface, with a groove (detailed approach see below):

I now want to extrude (via script) in -Z direction, such that I get a mould ‘cube’.
‘Naive’ extrusion results in the groove also showing up on the lower plane.

I searched and tried different things, but can not find a proper solution.
Any hint about how to extrude such that I get a flat plane on the bottom (via scipt)? I.e. not extrude by value (=amount) but to given Z…

Strategy for the mould:
The airfoil is cambered, therefore I need a curved surface as parting plane for upper/lower half of the mould.
So far I have managed to design (via script) the curved parting plane for the lower mould. After correct extrusion I still need to boolean subtract the wing which would then result in the correct lower mould.

I found a workaround as follows:

  1. Extrude by target depth. as the resides at Z=0, the potruding parts on the bottom now have z<targetdepth
  2. set Z coordinate for the related vertices to correct value
    zExtrude=-dZMould
    #zExtrude=zExtrude1-0.001 #ensure extrusion > upbend
    bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"use_normal_flip":False, "use_dissolve_ortho_edges":False, "mirror":False}, TRANSFORM_OT_translate={"value":(-0, -0, zExtrude), "orient_type":'GLOBAL', "orient_matrix":((1, 0, 0), (0, 1, 0), (0, 0, 1)), "orient_matrix_type":'GLOBAL', "constraint_axis":(False, False, True), "mirror":False, "use_proportional_edit":False, "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "use_proportional_connected":False, "use_proportional_projected":False, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "gpencil_strokes":False, "cursor_transform":False, "texture_space":False, "remove_on_cancel":False, "release_confirm":False, "use_accurate":False, "use_automerge_and_split":False})

    bpy.ops.object.mode_set(mode = 'OBJECT')

    verts = [v for v in bpy.context.active_object.data.vertices if v.co[2]<zExtrude]
    for v in verts:
        print(v.co)
        v.co[2]=zExtrude