Just a quick one to say that I’ve expanded the functionality of the bevel_weights add-on to now include the following functions:

  • Ctrl+E Set Edge Bevel Weights (for use with bevel weight modifier)
  • Ctrl+E Average Selected Bevel Weights
  • Select Menu > Select Same Bevel Weights (adds to the selection any edges which have an equal bevel weight to the active edge)
  • Select Menu > Select Same Creases (ditto but for edge crease values for use with subsurfs)
  • Select Menu > Select All Creased Edges
  • Select Menu > Select All Beveled Edges
  • Select Menu > Select All Marked-Sharp Edges (as opposed to the built in select sharp which works on edge angles)
  • W-key > Bevel – bringing the functionality of the old 2.49 style ‘destructive’ beveling is back.
  • Ctrl+V Smooth Vertex Group Weights (instead of the blur brush use to create nice gradations in VG weighting)

The add-on is now called edge_tools and is available here:


UPDATE: should work with r34878 onwards

I had a terrible time trying to make sure that the ‘destructive’ style beveling didn’t affect any other edges’ bevel weights.  Basically it works by setting bevel weights for any selected edges then it adds a bevel modifier and applies it.  Of course the user only wants the selected edges to be ‘destructively’ beveled, and not any edges which already have bevel weights so the script needs to preserve the pre-existing bevel weights.  I tried various methods: first I created a custom “FloatProperty” for each edge to store the existing bevel weight in (these seemed to survive the modifier but got their values deleted).   Then I tried creating edge custom properties whose names included the bevel weight’s numerical value which I could get as a string by parsing the properties with dir() (I then discovered that properties from one edge got propagated to all edges by the modifier stack).  Then I noticed that edge crease values seemed to be stored to floating point accuracy.  I thought that by shuffling bits around I would be able to store two numeric values (the edge crease and the bevel weight) in the edge crease’s value temporarily, which would have worked fine, except for the fact that by a quirk of the python API the edge creases get rounded up to 2 decimal places when setting them.  Finally with all other plans foiled I wrote a function to generate identifier strings based on edges’ vertex locations which I could then store as dictionary keys with the old bevel weights as the values!  So you can see how several hours of experimentation and head-scratching later I finally managed to implement a very simple feature… hope you find it useful! Josh

  1. Gazza :

    Thanks for this useful addtion to the Blender Community.

    Happy Blending

  2. dsp_418 :

    This is shaping really well! great tool, thank you guys!!

  3. Juanº :

    Fantastic feature.


  4. Mr Bubble :

    It doesn’t work for me. Can’t select it when type “Cntr+E”, and when I hit SPACE – blender doesn’t find it

  5. josh :

    Hi Mr Bubble, Are you running the latest SVN build of blender? It won’t work on Beta 2.53 as the way python add-ons install themselves has changed. It is working on todays build fine in the studio (r31102). Let me know if you still have problems in a new graphicall build. If you still have problems open up a console window in blender and find out what python version blender has bundled with it (it says in the first line of a new console). The builder may have not correctly updated the bundled python library.
    Hope this helps,

  6. Ralf :


    I did not get it work.
    Blender Build: r31572

    Traceback (most recent call last):
    File “C:\PROGRA~1\BLENDE~3.3-3\2.53\scripts\addons\edge_tools.py”, line 98, in
    AttributeError: ‘ToolSettings’ object has no attribute ‘mesh_selection_mode’

    Whould be nice if you can fix it.
    By the way, why is your excellent script not included in the blender build?

    BR Ralf

  7. josh :

    hey Ralf, I’ve just temporarily updated the script to work with todays build, and pasted it at:
    Just copy and paste the text into a text editor and save as .py

    As soon as the API settles down (which should be with the release of 2.54) I’m planning to do a release of fixes to all of my various scripts so stay tuned for that. I was holding off on putting this add-on into the official tracker as I was hoping Bmesh would be integrated sooner, which would make many of these scripts obsolete as I believe the lost functionality from 2.49 should return. Fingers crossed we should be seeing Bmesh within the next month!

  8. Ralf :

    Hi Josh,

    thanks for the update, but still a problem:
    Traceback (most recent call last):
    File “C:\PROGRA~1\BLENDE~3.3-3\2.53\scripts\modules\bpy\utils.py”, line 44, in
    mod = __import__(module_name)
    File “C:\PROGRA~1\BLENDE~3.3-3\2.53\scripts\addons\edge_tools.py”, line 1
    IndentationError: unexpected indent

  9. Ralf :

    fixed by my self. (copy paste mistake).

    thx a lot

  10. mifth :

    Thank you!!!!! VERY VERY VERY!!!! But the tool sometimes makes incorrect edges. Please, have a look at screenshot – http://yfrog.com/mibevelj.

    By the way, that bevel add-on(http://blenderartists.org/forum/showthread.php?p=1694631#post1694631) makes right edges just like in 2.49. Probably, it’s possible to use it as a reference…

    Thank you again!!!

  11. josh :

    no worries ralf, pasteall doesn’t make it obvious whats going on! sorry i didn’t get around to answering you – I’ve had my time cut out working on this http://vimeo.com/14613119

  12. Gabriel :

    For some reason there are no menus appearing whatsoever after clicking one of the options provided by the script.
    Using r31790

  13. josh :

    Hi Gabriel,
    There have been a few recent RNA changes that have broken the script, the biggest is http://lists.blender.org/pipermail/bf-blender-cvs/2010-September/031035.html which has completely stopped it from working. I’m working on a fix ASAP. In the mean time you can try to get hold of a blender build which matches the exact release of the mushroomer… http://wiki.tube.freefac.org/wiki/Mushroomer#Status_.26_Version_History

  14. josh :

    Hi Gabriel, I’ve fixed the mushroomer to work with the very latest release (r31856 with Python 3.1.2)
    See release 4 at http://wiki.tube.freefac.org/wiki/Mushroomer
    Note that if your python version is not 3.1.2 (3.1.1+ is not enough) the script will not run at all.
    Good luck with it!

  15. xfodder :

    i cant seem to get the script to work with 31955 64bit (running on snow leopard) i select the edge i want then press+e, select set bevel weight … but nothing happens :\

  16. Santiago Andrade :

    rev: 32539

    Traceback (most recent call last):
    File “/home/sandrade/fuentes/install/linux2/2.54/scripts/addons/edge_tools.py”, line 46, in invoke
    wm = context.manager
    AttributeError: ‘Context’ object has no attribute ‘manager’

  17. Santiago Andrade :

    change line 46 to
    wm = context.manager
    wm = context.window_manager


    ty nice plugin

  18. Santiago Andrade :

    Lines 92 and 98 the same

  19. Pnes :

    Here’s a version that should work with 2.55 beta: http://www.pasteall.org/16852/python

  20. erper :


    That script doesn’t work at all for me.

    Saved it as edge_tools.py

    Put it in scripts/addons and fired up 2.55

    It doesn’t even recognize it’s there.

  21. Chris :


    well, does not work with 2.55 BETA (Win 7 64bit).

  22. Hi!
    I had some problems with the script too, I changed some lines and now it is working for me in blender 2.55 beta on win 7 64bit.
    i replaced “bpy.context.tool_settings.mesh_selection_mode” with “bpy.context.tool_settings.mesh_select_mode”

    the whole script is published here:

    oh btw. maybe you want to visit http://www.vswarm.com the free blender render farm

  23. Dennis Lindsey :

    Updated the code to register with the latest builds. Works with revision 34675. Enjoy.


  24. Spirou4D :

    Don’t run with Blender Filiciss rev 34861.
    Can anyone to change the code, please?
    This script is very usefull!
    Thank you very much, Josh!

  25. hey spirou4D hopefully this should work…

    python class registration got changed again, now its bpy.utils.register_class(c) in r34878

    thanks to everyone who’s helped me keep this up to date!

  26. Thanks so much for this fantastic script! I’ve been searching for some like that for a while and finally I’ve founded it 🙂

    But I’ve a little problem, I don’t know how to download it in .py I tried to download as text plain but I guess that not work :S

    Help is welcome guys!

    Thanks so much!! 😀

  27. KineticEgg :

    Didn’t see this thread..

    Have also updated it so it works with builds after r35121


  28. KineticEgg :

    Again did not realize I had the code for 0.0.4. Now at 0.0.7

    For Blender GraphicAll r35121 onwards


  29. hy Victor, plain text should work, since it is just a script, you could try giving it a .py extension…. or use copy paste , or copy from the ‘edit code’ window.
    nice work kineticEgg! We will be seperating the code svn from main project SVN soon, so scripts will be communally downloadable… stay tuned 🙂

  30. Tehrasha :

    Any plans to update this to work with 2.57+ ?

  31. Thank you so much, it works with Blender 2.73 too!!
    I have looked so long for this!

©URCHIN 2015