Post #5105: : post_05106
🏷️ Tags
v1-18-7 property-editor custom-properties advanced solved
⚙️ Related PME Features
- Property Editor
- Float Properties
- Python Scripting
- Custom Getters and Setters
💬 Content
Pie Menu Editor 1.18.7 Released Scripts and Themes
We don’t have access to these buttons from python. But you can create your own. Add Float Properties with these getter and setter (edge_crease_and_bevel_weight.json): Edge Bevel Weight Getter: import bmesh; obj = C.edit_object; me = obj and obj.type == ‘MESH’ and obj.data; bm = me and bmesh.from_edit_mesh(me); l = me and bm.edges.layers.bevel_weight.verify(); e = me and find_by(bm.edges, “select”, True); return e[l] if e else 0 Edge Bevel Weight Setter: import bmesh; obj = C.edit_object; me…
It seems that the menu you are using is probably the one provided by roaoao in this post.
I will provide an update.
mesh_edge_and_vertex_properties.json (4.6 KB)
Edge Bevel Weight Getter:
import bmesh; obj = C.edit_object; bm = obj and obj.type == 'MESH' and bmesh.from_edit_mesh(obj.data); edges = bm and [e for e in bm.edges if e.select]; layer = edges and bm.edges.layers.float.get("bevel_weight_edge"); return edges[0][layer] if edges and layer else 0.0
Edge Bevel Weight Setter:
import bmesh; obj = C.edit_object; me = obj and obj.type == 'MESH' and obj.data; bm = me and bmesh.from_edit_mesh(me); layer = bm and bm.edges.layers.float.get("bevel_weight_edge") or bm.edges.layers.float.new("bevel_weight_edge"); me and [e.__setitem__(layer, value) for e in bm.edges if e.select]; me and bmesh.update_edit_mesh(me)
Edge Crease Getter:
import bmesh; obj = C.edit_object; bm = obj and obj.type == 'MESH' and bmesh.from_edit_mesh(obj.data); edges = bm and [e for e in bm.edges if e.select]; layer = edges and bm.edges.layers.float.get("crease_edge"); return sum(e[layer] for e in edges) / len(edges) if edges and layer else 0.0
Edge Crease Setter:
import bmesh; obj = C.edit_object; me = obj and obj.type == 'MESH' and obj.data; bm = me and bmesh.from_edit_mesh(me); layer = bm and bm.edges.layers.float.get("crease_edge") or bm.edges.layers.float.new("crease_edge"); me and [e.__setitem__(layer, value) for e in bm.edges if e.select]; me and bmesh.update_edit_mesh(me)
Vert Bevel Weight Getter:
import bmesh; obj = C.edit_object; bm = obj and obj.type == 'MESH' and bmesh.from_edit_mesh(obj.data); verts = bm and [v for v in bm.verts if v.select]; layer = verts and bm.verts.layers.float.get("bevel_weight_vert"); return sum(v[layer] for v in verts) / len(verts) if verts and layer else 0.0
Vert Bevel Weight Setter:
import bmesh; obj = C.edit_object; me = obj and obj.type == 'MESH' and obj.data; bm = me and bmesh.from_edit_mesh(me); layer = bm and bm.verts.layers.float.get("bevel_weight_vert") or bm.verts.layers.float.new("bevel_weight_vert"); me and [v.__setitem__(layer, value) for v in bm.verts if v.select]; me and bmesh.update_edit_mesh(me)
Vert Crease Getter:
import bmesh; obj = C.edit_object; bm = obj and obj.type == 'MESH' and bmesh.from_edit_mesh(obj.data); verts = bm and [v for v in bm.verts if v.select]; layer = verts and bm.verts.layers.float.get("crease_vert"); return sum(v[layer] for v in verts) / len(verts) if verts and layer else 0.0
Vert Crease Setter:
import bmesh; obj = C.edit_object; me = obj and obj.type == 'MESH' and obj.data; bm = me and bmesh.from_edit_mesh(me); layer = bm and bm.verts.layers.float.get("crease_vert") or bm.verts.layers.float.new("crease_vert"); me and [v.__setitem__(layer, value) for v in bm.verts if v.select]; me and bmesh.update_edit_mesh(me)
You can use these properties in Menu tab.
❤️ 8 likes