Mesh_tools (curved surfaces mesh modification tool,C++)

this addon is for the mesh modification and manipulation

when you have selected one/two/three/four edges , press “arch” or “curve” button,
it will generate virtual curves with controller.

you can adjust the controller to fine tune the shape of curve:
all the curves are restricted to a plane (which is defined by the curve angle)
when your mouse is hovering to one controller it will turn yellow,
now you can press Left mouse button and drag to adjust the positon of curve point,
or you can press W button to adjust the weight of this curve point
(can make a right angles, for example).

In addition to this main feature, there are other small features.
Bridge welding: the corresponding two edges can be selected and
their vertices can be welded in two phases.
Vertex alignment: you can choose vertices to align them in different ways
(straighten/all vertices to select points)
Rectangular: to make a face at right angles by selecting it.
Axis to selected: the axis of an object can be moved/rotated to
the selected element by selecting the element.
Convert mesh to curve: convert selected edges to curves.
Space curve vertex: average the selected curve vertex distance.
Select similar uv: select one or more vertices and press the button to
select other vertices that have the similar uv coordinate.

arch and curve :



edge merge:



rectangular

axis to select

align or straighten


add the space curve function,you can make the curve points evenly(only support path curve currently).

download:
for blender 2.79(for windows x64 OSonly):
IMDJS_mesh_tools(20180819).zip (551.6 KB)

for blender 2.81(for windows x64 OS only): not support Linux at present.
[IMDJS_mesh_tools 1.1.2 (for blender 2.81 , 2.83)
IMDJS_mesh_tools 1.1.2 (for blender 2.81).zip.zip (2.0 MB)

MeshTools Pro:

=====updates=========================================================
2020-01-10:fix the problem of when ui_scale is not set to 1.0, the curve of handles not fit the mesh shape.
improve the algorithm of edge weld. now it takes the nearest two points as the starting point and weld the two selected edges in turn.

11 Likes

It looks really helpfull :slight_smile: Could you provide the source to make it usable on Linux?

Test 2.77 > Error when i try to install it


Traceback (most recent call last):
  File "C:\Users\*\AppData\Roaming\Blender Foundation\Blender\2.77\scripts\addons\IMDJS_mesh_tool\__init__.py", line 20, in <module>
    from .PYLIB.PYLIB_main import *
ImportError: No module named 'IMDJS_mesh_tool.PYLIB'

I forget to realse a PYLIB folder with the addon, but now I have reuploaded.

I don’t know how to complie the code that with unicode character in linux, it seem that only visual studio can compile the code with unicode.and visual studio has no linux version.

If you make a github, I can have a try. Linux supports unicode for a long time now and Python on Linux also.

Hi imdjs, yet an other very nice addon! Congratulations Master and thks!

@bliblubli Thanks you so if you could that!

if you want to complie the dll file ,I can offer you the library file here.if you compile successfully. it’s welcome to share your file ,and tell me about what 's your method.:slight_smile:
20160815
BlenderLib.zip (235 KB)
if still have any file missing ,let me know.

THX! Works fine now.

I have made a small panel for testing, because my menues are customize…:
#UPDATED 27/02/17


bl_info = {
    "name": "IMDJS MeshTools Panel",
    "author": "MKB",
    "version": (0, 1, 0),
    "blender": (2, 7, 8),
    "location": "View3D > Toolshelf [T] > TAB Tools",
    "description": "Panel for IMDJS MeshTools",
    "warning": "",
    "wiki_url": "",
    "tracker_url": "",
    "category": "Mesh"}



import bpy
from bpy import *


class IMDJS_Mesh_Tools_Panel(bpy.types.Panel):
    
    bl_idname = "VIEW3D_TP_IMDJS_Mesh_Tools_Panel"    
    bl_label = "IMDJS Tools"    
    bl_space_type = 'VIEW_3D'    
    bl_region_type = 'TOOLS'
    #bl_region_type = 'UI'
    bl_category = "Tools"   
    bl_context = "mesh_edit"
    bl_options = {'DEFAULT_CLOSED'}


    def draw(self, context):
        layout = self.layout.column_flow(1)  

        box = layout.box().column(1)  
       
        row = box.row(1)                 
        box = layout.box().column(1)  
       
        row = box.column(1)                 
        row.operator("mesh.round_selected_points", text="Round selected Points", icon = "SPHERECURVE")          
        row.operator("op.mesh_tools_bridge_weld", text="Bridge Weld", icon = "FULLSCREEN_EXIT")
        row.operator("bp.align_to_selected_line", text="Align Select", icon = "COLLAPSEMENU")
        row.operator("bp.rect_selected", text="Rectangular", icon = "BORDER_RECT")
        row.operator("bp.axis_to_selected", text="Axis to Select", icon = "MANIPUL")
        row.operator("turn.mesh_curve", text="Mesh 2 Curve", icon = "OUTLINER_OB_CURVE")
        row.operator("op.select_similar_uv", text="Select similar UV", icon = "RESTRICT_SELECT_OFF")
       
        box.separator()   
               

def register():
    bpy.utils.register_class(IMDJS_Mesh_Tools_Panel)

def unregister():
    bpy.utils.unregister_class(IMDJS_Mesh_Tools_Panel)


if __name__ == "__main__":
    register()
        

Just a question: what exactly does the chancle button?
The preview in the first post does not show it.

----update 20170219----
now this tools set have been updated and added several tools for mesh modification
new 1:weld selected points in order
new 2:rectangular poly(only for one selected face each time)
new 3:alignment for selected points
new 4:axis to selection
and others new tools.
http://i803.photobucket.com/albums/yy311/imdjs/imdjs/addons/QQ20170219185043.jpg

bridge weld
http://i803.photobucket.com/albums/yy311/imdjs/imdjs/addons/weld.gif

rectangular
http://i803.photobucket.com/albums/yy311/imdjs/imdjs/_2.gif

axis to select(select two faces can redefine the axis whitch includes the axis rotation and lacation)
http://i803.photobucket.com/albums/yy311/imdjs/imdjs/_1.gif

Strange I cant activate it on Blender 2.78b with this error (WIndows 64)


The same problem on Blender 2.78b WIndows 64

@urkokul
sorry for making this mistake again forget to put the PYLIB into it. now it’s fixed(20170222 version).

Thank you imdjs for this update!
Only one thing: when i try to test the function,
the properties looks always like this:

???

layout updated
http://i803.photobucket.com/albums/yy311/imdjs/addons/layout.jpg
http://i803.photobucket.com/albums/yy311/imdjs/addons/align.gif

Thanks for good work

Thank you!

I have updated the panel for testing…


bl_info = {
    "name": "IMDJS MeshTools Panel",
    "author": "imdjs",
    "version": (0, 1, 0),
    "blender": (2, 7, 8),
    "location": "View3D > Toolshelf [T] > TAB Tools",
    "description": "Panel for IMDJS MeshTools",
    "warning": "",
    "wiki_url": "",
    "tracker_url": "",
    "category": "Mesh"}



import bpy
from bpy import *


class IMDJS_Mesh_Tools_Panel(bpy.types.Panel):
    
    bl_idname = "VIEW3D_TP_IMDJS_Mesh_Tools_Panel"    
    bl_label = "IMDJS Tools"    
    bl_space_type = 'VIEW_3D'    
    bl_region_type = 'TOOLS'
    #bl_region_type = 'UI'
    bl_category = "Tools"   
    bl_context = "mesh_edit"
    bl_options = {'DEFAULT_CLOSED'}


    def draw(self, context):
        layout = self.layout.column_flow(1)  

        box = layout.box().column(1)  
       
        row = box.row(1)                 
        box = layout.box().column(1)  
       
        row = box.column(1)                 
        row.operator("mesh.round_selected_points", text="Round selected Points", icon = "SPHERECURVE")          
        row.operator("op.mesh_tools_bridge_weld", text="Bridge Weld", icon = "FULLSCREEN_EXIT")
        row.operator("bp.align_to_selected_line", text="Align Select", icon = "COLLAPSEMENU")
        row.operator("bp.rect_selected", text="Rectangular", icon = "BORDER_RECT")
        row.operator("bp.axis_to_selected", text="Axis to Select", icon = "MANIPUL")
        row.operator("turn.mesh_curve", text="Mesh 2 Curve", icon = "OUTLINER_OB_CURVE")
        row.operator("op.select_similar_uv", text="Select similar UV", icon = "RESTRICT_SELECT_OFF")
       
        box.separator()   
               

def register():
    bpy.utils.register_class(IMDJS_Mesh_Tools_Panel)

def unregister():
    bpy.utils.unregister_class(IMDJS_Mesh_Tools_Panel)


if __name__ == "__main__":
    register()
        

update—20180621----

IMDJS_mesh_tools(20180621).zip (534.9 KB)

2 Likes

----update20180803----
IMDJS_mesh_tools(20180819).zip (551.6 KB)

add the space curve function,you can make the curve points evenly(only support path curve currently).

4 Likes

Thank you imdjs. Your work is appreciated.