[WIP]Bevel after Boolean

Vertex groups are created for internal needs. Once completed, they are removed.
Source object
Boolean object
Bevel
Smooth


If they are needed. I can remove the deletion

1 Like

I get it now thanks.

After a lot of testing I do see that there is a problem when the add-on tries to do a difficult somehow task: It freezes all Blender and the user becomes forced to close the whole app by clicking ctrl+alt+delete. In older versions (as in 0.09) in such cases the add-on gave bad results but did not freeze Blender. You had to make ‘undo’ (ctrl+z) and it was ok… now you wait and wait and, finally, you become forced to close Blender.

It would be good when the add-on can not deal with a difficult situation to abandon the task after a while, so that the user be not forced to shut down all Blender.

Will Ctrl Alt S not save a copy Fatesailor? Just wondering.

I never tried this. Will try and inform you… :slightly_smiling_face:

Better Shift Ctrl S to save as. Otherwise you might loose the file you are working on. Look under the file menu for options.

Ok. thanks Bkjernisted! :slightly_smiling_face:

Btw, let put here an idea for a new feature in ‘Bevel after Boolean’: The strips produced in the add-on’s operations can be used very nicely for producing a variety of hull panels (and even pipes following the surface geometry) on objects (by a little bit manual work). The problem is that this can not be done for intersecting strips. I thought a lot for finding a manual solution to the problem but still did not find one. So, I am putting below a video showing how Mesh Fusion achieves such results.

Just mentioning the whole thing so that maybe you get an idea, Ilya, and you can implement such a thing in ‘Bevel after Boolean’ too. If we can produce clearly intersecting strips then we can make -manually- extrusions from them and produce very complex hull forms on the objects (as it happens in the video below):

I will play around with this. I have been testing multiple boolean/bevel objects and I think I’m getting close to getting something working. Of course, I’ve started from scratch and don’t understand the code of this addon much. @Rodinkov_Ilya would have to somehow “merge” my code into this addon, if we wanted to be able to do multiple objects.

AFWS you mean that you are testing objects in relation to the strip making I mentioned? You have any idea for a code producing such strips? If it is so it will be great indeed! In Mesh Fusion they do incredible things with the strip making feature. You have to put forth your idea to Ilya.

I wonder if something like variable radius fillet/bevel could be doable…? Selecting a path of edges and defining beginning and end radius.

I will see why this can happen.

I have ideas on how to do this.
@AFWS
What do you mean ?

2 Likes

This is great news! :smiley:

@Fatesailor
There is a chance that I misunderstood you.
If you meant this:


Strip can be made in version 0.2.3.
In Edit mode, use intersect.

And press the bevel button.

1 Like

I do know that there is such an ability in 0.2.3 Ilya. And it is very useful! The thing that I did mean, however, is not this. I did mean being able to produce strips which intersect with each other in such a way that someone can extrude them together (without having anomalies in the intersecting points).

Please watch the video about Mesh Fusion which I did post previously (it is only a 2 minutes video) and you will understand. It is very easy to understand: the needed thing is to have many intersecting each other strips that they can be extruded together. In such a way someone can produce whole extruded cages (or hull panels, by extruding inwardly) around an object. Having such a thing in ‘Bevel after Boolean’ will endow it with a whole new set of modeling means!

At the moment. I do not know how to do that.

1 Like

Can you delete all the code that’s not related to this and post it on here. I will try to help with this.

Hi, thanks for the add on. I’ve just installed it and am getting this error in 2.79b:

bpy.context.space_data.system_folders_active = 1
Modules Installed (boolean_bevel_v_0_1_2) from ‘E:\3d assets\plugins\blender\boolean_bevel_v_0_1_2.py.zip’ into ‘C:\Users\3diWorkstation\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons’
bpy.ops.mesh.primitive_uv_sphere_add(size=1, view_align=False, enter_editmode=False, location=(-0.0507621, 0.0399496, 0.999998), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))
bpy.ops.transform.translate(value=(0, 0, 0.458106), constraint_axis=(False, False, True), constraint_orientation=‘GLOBAL’, mirror=False, proportional=‘DISABLED’, proportional_edit_falloff=‘SPHERE’, proportional_size=0.13513)
bpy.ops.object.make_single_user(object=True, obdata=True)
bpy.ops.object.convert(target=‘MESH’)
bpy.ops.object.editmode_toggle()
bpy.ops.mesh.reveal()
bpy.ops.mesh.select_all(action=‘DESELECT’)
bpy.ops.object.editmode_toggle()
bpy.ops.object.editmode_toggle()
bpy.ops.mesh.reveal()
bpy.ops.mesh.select_all(action=‘SELECT’)
bpy.ops.object.editmode_toggle()
bpy.ops.object.modifier_apply(modifier=“Auto Boolean”)
bpy.ops.btool.auto_difference(solver=‘BMESH’)
bpy.context.space_data.context = ‘MODIFIER’
bpy.context.object.modifiers[“BTool_Sphere”].operation = ‘INTERSECT’
bpy.context.object.modifiers[“BTool_Sphere”].operation = ‘UNION’
bpy.ops.object.modifier_apply(modifier=“BTool_Sphere”)
bpy.ops.object.select_all(action=‘DESELECT’)
bpy.ops.object.delete()
bpy.ops.object.modifier_apply(apply_as=‘DATA’, modifier=“BTool_Sphere”)
bpy.ops.object.select_all(action=‘DESELECT’)
Traceback (most recent call last):
File “C:\Users\3diWorkstation\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\boolean_bevel_v_0_1_2.py”, line 384, in execute
boolean_solver = src_obj.modifiers[len(src_obj.modifiers) - 1].solver
IndexError: bpy_prop_collection[-1]: out of range.

location: :-1

bpy.ops.object.boolean_bevel_remove_modifiers()
bpy.ops.object.select_all(action=‘DESELECT’)
bpy.ops.object.boolean_bevel_remove_pipes()
bpy.ops.object.select_all(action=‘DESELECT’)
bpy.ops.object.select_all(action=‘DESELECT’)
bpy.ops.object.boolean_bevel_remove_objects()
bpy.ops.object.select_all(action=‘DESELECT’)
bpy.ops.object.boolean_bevel_remove_pipes()
bpy.ops.object.select_all(action=‘DESELECT’)
Traceback (most recent call last):
File “C:\Users\3diWorkstation\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\boolean_bevel_v_0_1_2.py”, line 384, in execute
boolean_solver = src_obj.modifiers[len(src_obj.modifiers) - 1].solver
IndexError: bpy_prop_collection[-1]: out of range.

location: :-1

bpy.ops.transform.translate(value=(-3.21451e-009, 0.0945211, -7.45058e-009), constraint_axis=(False, True, False), constraint_orientation=‘VIEW’, mirror=False, proportional=‘DISABLED’, proportional_edit_falloff=‘SPHERE’, proportional_size=0.13513, release_confirm=True, use_accurate=False)
bpy.ops.object.make_single_user(object=True, obdata=True)
bpy.ops.object.convert(target=‘MESH’)
bpy.ops.object.editmode_toggle()
bpy.ops.mesh.reveal()
bpy.ops.mesh.select_all(action=‘DESELECT’)
bpy.ops.object.editmode_toggle()
bpy.ops.object.editmode_toggle()
bpy.ops.mesh.reveal()
bpy.ops.mesh.select_all(action=‘SELECT’)
bpy.ops.object.editmode_toggle()
bpy.ops.object.modifier_apply(modifier=“Auto Boolean”)
bpy.ops.btool.auto_union(solver=‘BMESH’)
bpy.ops.object.select_all(action=‘DESELECT’)
Traceback (most recent call last):
File “C:\Users\3diWorkstation\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\boolean_bevel_v_0_1_2.py”, line 384, in execute
boolean_solver = src_obj.modifiers[len(src_obj.modifiers) - 1].solver
IndexError: bpy_prop_collection[-1]: out of range.

location: :-1

bpy.ops.object.modifier_add(type=‘SUBSURF’)
bpy.context.object.modifiers[“Subsurf”].levels = 2
bpy.context.object.modifiers[“Subsurf”].levels = 3
bpy.ops.object.modifier_add(type=‘CAST’)
bpy.context.object.modifiers[“Cast”].cast_type = ‘CUBOID’
bpy.context.object.modifiers[“Cast”].factor = 1.1
bpy.context.object.modifiers[“Cast”].factor = 1
bpy.context.space_data.viewport_shade = ‘WIREFRAME’
bpy.ops.object.modifier_apply(apply_as=‘DATA’, modifier=“Subsurf”)
bpy.context.object.modifiers[“Cast”].radius = 0
bpy.context.object.modifiers[“Cast”].size = 4.7
bpy.context.object.modifiers[“Cast”].radius = 0
bpy.context.object.modifiers[“Cast”].radius = 0
bpy.ops.object.modifier_apply(apply_as=‘DATA’, modifier=“Cast”)
bpy.context.space_data.viewport_shade = ‘SOLID’
bpy.ops.mesh.primitive_uv_sphere_add(view_align=False, enter_editmode=False, location=(-0.0507621, 0.0399496, 0.999998), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))
bpy.ops.transform.resize(value=(0.696316, 0.696316, 0.696316), constraint_axis=(False, False, False), constraint_orientation=‘VIEW’, mirror=False, proportional=‘DISABLED’, proportional_edit_falloff=‘SPHERE’, proportional_size=0.13513)
bpy.ops.transform.translate(value=(-0.0572548, -0.0249525, 0.116672), constraint_axis=(False, False, False), constraint_orientation=‘VIEW’, mirror=False, proportional=‘DISABLED’, proportional_edit_falloff=‘SPHERE’, proportional_size=0.13513)
bpy.ops.object.modifier_add(type=‘BOOLEAN’)
bpy.context.object.modifiers[“Boolean”].operation = ‘DIFFERENCE’
bpy.ops.object.modifier_remove(modifier=“Boolean”)
bpy.ops.object.make_single_user(object=True, obdata=True)
bpy.ops.object.convert(target=‘MESH’)
bpy.ops.object.editmode_toggle()
bpy.ops.mesh.reveal()
bpy.ops.mesh.select_all(action=‘DESELECT’)
bpy.ops.object.editmode_toggle()
bpy.ops.object.editmode_toggle()
bpy.ops.mesh.reveal()
bpy.ops.mesh.select_all(action=‘SELECT’)
bpy.ops.object.editmode_toggle()
bpy.ops.object.modifier_apply(modifier=“Auto Boolean”)
bpy.ops.btool.auto_difference(solver=‘BMESH’)
bpy.ops.object.select_all(action=‘DESELECT’)
Traceback (most recent call last):
File “C:\Users\3diWorkstation\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\boolean_bevel_v_0_1_2.py”, line 384, in execute
boolean_solver = src_obj.modifiers[len(src_obj.modifiers) - 1].solver
IndexError: bpy_prop_collection[-1]: out of range.

location: :-1

bpy.ops.object.boolean_bevel_apply_modifiers()
bpy.ops.object.modifier_add(type=‘BOOLEAN’)
bpy.context.object.modifiers[“Boolean”].operation = ‘UNION’
bpy.ops.object.modifier_apply(apply_as=‘DATA’, modifier=“Boolean”)
bpy.ops.object.select_all(action=‘DESELECT’)
Traceback (most recent call last):
File “C:\Users\3diWorkstation\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\boolean_bevel_v_0_1_2.py”, line 384, in execute
boolean_solver = src_obj.modifiers[len(src_obj.modifiers) - 1].solver
IndexError: bpy_prop_collection[-1]: out of range.

location: :-1

Anyone come across/solved this?

Try this version:

3 Likes

Ilya, this thing with the strips in edit mode… I did not understand the way it works (I tried to find but in vain). Can you make a very small video showing it please?

Thanks!

You can cut the guides with a knife. Or use boolean in edit mode. And bevel guide edges.