I have loaded an stl file and want to do some boolean stuff on it using python API (see code below). First I create the bevel spline and move the end points where I want them. Then I create a boolean modifier and try to union with the bevel-curve. After that want to subtract the union from a cube to make a hole.
But the curve can't be assigned as the object of the union; not even manually and I don't even get an error. Nothing happens. I can set the surrounding cube as the object and that works fine.
So is there something wrong with using bezier curves in boolean modifiers or am I doing something else wrong.
# ------- Model stuff -------
#bpy.ops.import_mesh.stl(filepath="K:/PQJ/Mold Generator/Blender test/Sphere_Full_40.stl", filter_glob="*.stl", files=[{"name":"Sphere_Full_40.stl", "name":"Sphere_Full_40.stl"}], directory="K:/PQJ/Mold Generator/Blender test")
bpy.ops.import_mesh.stl(filepath="K:/PQJ/Mold Generator/Blender test/898L-OutputModel-SLA[]_09.stl", filter_glob="*.stl", files=[{"name":"898L-OutputModel-SLA[]_09.stl", "name":"898L-OutputModel-SLA[]_09.stl"}], directory="K:/PQJ/Mold Generator/Blender test")
model = bpy.context.active_object
# ------- Mold stuff -------
mold_size = (20,30,30)
mold_displace = (mold_size[0]/2.0,mold_size[1]/2.0,mold_size[2]/2.0)
#mold_displace = (10,10,15)
bpy.ops.mesh.primitive_cube_add(enter_editmode=False, align='WORLD', location=mold_displace, scale=mold_size)
mold = bpy.context.active_object # New objects are selected by default
# ------- In- and outflow stuff -------
bpy.ops.curve.primitive_bezier_curve_add(radius=10, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))
curve = bpy.context.active_object
bpy.ops.curve.primitive_bezier_circle_add(radius=0.5, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))
profile = bpy.context.active_object
curve.data.bevel_object = bpy.data.objects["BezierCircle"]
curve.data.splines[0].bezier_points[0].co = (-0.01, mold_size[1]/2, mold_size[2]/2)
curve.data.splines[0].bezier_points[0].handle_left = (-1, curve.data.splines[0].bezier_points[0].co[1], curve.data.splines[0].bezier_points[0].co[2])
curve.data.splines[0].bezier_points[0].handle_right = ( 1, curve.data.splines[0].bezier_points[0].co[1], curve.data.splines[0].bezier_points[0].co[2])
curve.data.splines[0].bezier_points[1].co = (5,13,10)
curve.data.splines[0].bezier_points[1].handle_left = ( 1, curve.data.splines[0].bezier_points[1].co[1], curve.data.splines[0].bezier_points[1].co[2])
curve.data.splines[0].bezier_points[1].handle_right = (-1, curve.data.splines[0].bezier_points[1].co[1], curve.data.splines[0].bezier_points[1].co[2])
# ------- Boolean -------
bool_model = model.modifiers.new(type="BOOLEAN", name="bool mold") # create and store a modifier
bool_model.object = curve
bool_model.operation = 'UNION'
#model.hide_viewport = True
#bool_mold = mold.modifiers.new(type="BOOLEAN", name="bool mold") # create and store a modifier
#bool_mold.object = model
#bool_mold.operation = 'DIFFERENCE'
#model.hide_viewport = True
!!! EDIT: I see the same when I try manually. I find this totally bizarre. I have subtracted large objects from stl with 50000 faces each. So why can't I use bool on a simple bend cylinder? It is even meshed! I just happen to know even more about it than just the mesh. So just forget that it's a curved bevel and just use the mesh.