diff options
Diffstat (limited to 'add_curve_extra_objects/__init__.py')
-rw-r--r-- | add_curve_extra_objects/__init__.py | 172 |
1 files changed, 129 insertions, 43 deletions
diff --git a/add_curve_extra_objects/__init__.py b/add_curve_extra_objects/__init__.py index f328ed9d..ae8cdf89 100644 --- a/add_curve_extra_objects/__init__.py +++ b/add_curve_extra_objects/__init__.py @@ -15,19 +15,20 @@ # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # ##### END GPL LICENSE BLOCK ##### -# Contributed to by +# Contributed to by: # testscreenings, Alejandro Omar Chocano Vasquez, Jimmy Hazevoet, meta-androcto # -# Cmomoney, Jared Forsyth, Adam Newgas, Spivak Vladimir +# Cmomoney, Jared Forsyth, Adam Newgas, Spivak Vladimir, Jared Forsyth, Atom # +# Antonio Osprite, Marius Giurgi (DolphinDream) bl_info = { "name": "Extra Objects", "author": "Multiple Authors", - "version": (0, 1), + "version": (0, 1, 2), "blender": (2, 76, 0), "location": "View3D > Add > Curve > Extra Objects", "description": "Add extra curve object types", "warning": "", - "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/" + "wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6/Py/" "Scripts/Curve/Curve_Objects", "category": "Add Curve" } @@ -58,11 +59,21 @@ else: from . import add_curve_spirofit_bouncespline import bpy -from bpy.types import Menu, AddonPreferences -from bpy.props import StringProperty, IntProperty, BoolProperty +from bpy.types import ( + Menu, + AddonPreferences, + ) +from bpy.props import ( + StringProperty, + BoolProperty, + ) -def convert_old_presets(data_path, msg_data_path, old_preset_subdir, new_preset_subdir, fixdic={}, ext=".py"): - ''' convert old presets ''' + +def convert_old_presets(data_path, msg_data_path, old_preset_subdir, + new_preset_subdir, fixdic={}, ext=".py"): + """ + convert old presets + """ def convert_presets(self, context): if not getattr(self, data_path, False): @@ -104,6 +115,7 @@ def convert_old_presets(data_path, msg_data_path, old_preset_subdir, new_preset_ file_preset = open(new_file_path, 'w') file_preset.write("import bpy\n") file_preset.write("op = bpy.context.active_operator\n") + for prop, value in vars(op).items(): if isinstance(value, str): file_preset.write("op.%s = '%s'\n" % (prop, str(value))) @@ -114,37 +126,106 @@ def convert_old_presets(data_path, msg_data_path, old_preset_subdir, new_preset_ setattr(self, msg_data_path, "Converted %d old presets" % len(files)) return None + return convert_presets +# Addons Preferences + class CurveExtraObjectsAddonPreferences(AddonPreferences): bl_idname = __name__ - spiral_fixdic = {"spiral_type": ['ARCH', 'ARCH', 'LOG', 'SPHERE', 'TORUS'], - "curve_type": ['POLY', 'NURBS'], - "spiral_direction": ['COUNTER_CLOCKWISE', 'CLOCKWISE'] - } - update_spiral_presets_msg = StringProperty(default="Nothing to do") + spiral_fixdic = { + "spiral_type": ['ARCH', 'ARCH', 'LOG', 'SPHERE', 'TORUS'], + "curve_type": ['POLY', 'NURBS'], + "spiral_direction": ['COUNTER_CLOCKWISE', 'CLOCKWISE'] + } + update_spiral_presets_msg = StringProperty( + default="Nothing to do" + ) update_spiral_presets = BoolProperty( name="Update Old Presets", description="Update presets to reflect data changes", default=False, - update=convert_old_presets("update_spiral_presets", # this props name - "update_spiral_presets_msg", # message prop - "operator/curve.spirals", - "curve_extras/curve.spirals", - fixdic=spiral_fixdic) + update=convert_old_presets( + "update_spiral_presets", # this props name + "update_spiral_presets_msg", # message prop + "operator/curve.spirals", + "curve_extras/curve.spirals", + fixdic=spiral_fixdic + ) + ) + show_menu_list = BoolProperty( + name="Menu List", + description="Show/Hide the Add Menu items", + default=False + ) + show_panel_list = BoolProperty( + name="Panels List", + description="Show/Hide the Panel items", + default=False ) def draw(self, context): layout = self.layout - layout.label(text="Spirals") + box = layout.box() + box.label(text="Spirals:") + if self.update_spiral_presets: - layout.label(self.update_spiral_presets_msg, icon='FILE_TICK') + box.label(self.update_spiral_presets_msg, icon="FILE_TICK") else: - layout.prop(self, "update_spiral_presets") + box.prop(self, "update_spiral_presets") + + icon_1 = "TRIA_RIGHT" if not self.show_menu_list else "TRIA_DOWN" + box = layout.box() + box.prop(self, "show_menu_list", emboss=False, icon=icon_1) + + if self.show_menu_list: + box.label(text="Items located in the Add Menu > Curve (default shortcut Ctrl + A):", + icon="LAYER_USED") + box.label(text="2D Objects:", icon="LAYER_ACTIVE") + box.label(text="Angle, Arc, Circle, Distance, Ellipse, Line, Point, Polygon,", + icon="LAYER_USED") + box.label(text="Polygon ab, Rectangle, Rhomb, Sector, Segment, Trapezoid", + icon="LAYER_USED") + box.label(text="Curve Profiles:", icon="LAYER_ACTIVE") + box.label(text="Arc, Arrow, Cogwheel, Cycloid, Flower, Helix (3D),", + icon="LAYER_USED") + box.label(text="Noise (3D), Nsided, Profile, Rectangle, Splat, Star", + icon="LAYER_USED") + box.label(text="Curve Spirals:", icon="LAYER_ACTIVE") + box.label(text="Archemedian, Logarithmic, Spheric, Torus", + icon="LAYER_USED") + box.label(text="Knots:", icon="LAYER_ACTIVE") + box.label(text="Torus Knots Plus, Celtic Links, Braid Knot", + icon="LAYER_USED") + box.label(text="Curly Curve", icon="LAYER_ACTIVE") + box.label(text="Bevel/Taper:", icon="LAYER_ACTIVE") + box.label(text="Add Curve as Bevel, Add Curve as Taper", + icon="LAYER_USED") + + box.label(text="Items located in the Add Menu > Surface (default shortcut Ctrl + A):", + icon="LAYER_USED") + box.label(text="Wedge, Cone, Star, Plane", + icon="LAYER_ACTIVE") -class INFO_MT_curve_knots_add1(bpy.types.Menu): + icon_2 = "TRIA_RIGHT" if not self.show_panel_list else "TRIA_DOWN" + box = layout.box() + box.prop(self, "show_panel_list", emboss=False, icon=icon_2) + + if self.show_panel_list: + box.label(text="Panel located in 3D View Tools Region > Create:", + icon="LAYER_ACTIVE") + box.label(text="Spline:", icon="LAYER_ACTIVE") + box.label(text="SpiroFit, Bounce Spline, Catenary", icon="LAYER_USED") + box.label(text="Panel located in 3D View Tools Region > Tools:", + icon="LAYER_ACTIVE") + box.label(text="Simple Curve:", icon="LAYER_ACTIVE") + box.label(text="Available if the Active Object is a Curve was created with 2D Objects", + icon="LAYER_USED") + + +class INFO_MT_curve_knots_add1(Menu): # Define the "Extras" menu bl_idname = "curve_knots_add" bl_label = "Plants" @@ -152,13 +233,10 @@ class INFO_MT_curve_knots_add1(bpy.types.Menu): def draw(self, context): layout = self.layout layout.operator_context = 'INVOKE_REGION_WIN' - layout.operator("curve.torus_knot_plus", - text="Torus Knot Plus") - layout.operator("curve.celtic_links", - text="Celtic Links") - layout.operator("mesh.add_braid", - text="Braid Knot") + layout.operator("curve.torus_knot_plus", text="Torus Knot Plus") + layout.operator("curve.celtic_links", text="Celtic Links") + layout.operator("mesh.add_braid", text="Braid Knot") # Define "Extras" menus @@ -166,31 +244,38 @@ def menu_func(self, context): if context.mode != 'OBJECT': # fix in D2142 will allow to work in EDIT_CURVE return None + layout = self.layout - layout.operator_menu_enum("mesh.curveaceous_galore", - "ProfileType", - icon='CURVE_DATA') - layout.operator_menu_enum("curve.spirals", - "spiral_type", - icon='CURVE_DATA') + layout.operator_menu_enum("mesh.curveaceous_galore", "ProfileType", + icon='CURVE_DATA') + layout.operator_menu_enum("curve.spirals", "spiral_type", + icon='CURVE_DATA') layout.separator() + layout.menu("curve_knots_add", text="Knots", icon='CURVE_DATA') layout.separator() - layout.operator("curve.curlycurve", text="Curly Curve", icon='CURVE_DATA') - layout.menu("OBJECT_MT_bevel_taper_curve_menu", text="Bevel/Taper", icon='CURVE_DATA') + layout.operator("curve.curlycurve", text="Curly Curve", + icon='CURVE_DATA') + layout.menu("OBJECT_MT_bevel_taper_curve_menu", text="Bevel/Taper", + icon='CURVE_DATA') def menu_surface(self, context): - layout = self.layout self.layout.separator() if context.mode == 'EDIT_SURFACE': - self.layout.operator("curve.smooth_x_times", text="Special Smooth", icon="MOD_CURVE") + self.layout.operator("curve.smooth_x_times", + text="Special Smooth", icon="MOD_CURVE") elif context.mode == 'OBJECT': - self.layout.operator("object.add_surface_wedge", text="Wedge", icon="MOD_CURVE") - self.layout.operator("object.add_surface_cone", text="Cone", icon="MOD_CURVE") - self.layout.operator("object.add_surface_star", text="Star", icon="MOD_CURVE") - self.layout.operator("object.add_surface_plane", text="Plane", icon="MOD_CURVE") + self.layout.operator("object.add_surface_wedge", text="Wedge", + icon="SURFACE_DATA") + self.layout.operator("object.add_surface_cone", text="Cone", + icon="SURFACE_DATA") + self.layout.operator("object.add_surface_star", text="Star", + icon="SURFACE_DATA") + self.layout.operator("object.add_surface_plane", text="Plane", + icon="SURFACE_DATA") + def register(): add_curve_simple.register() @@ -201,8 +286,8 @@ def register(): # Add "Extras" menu to the "Add Surface" menu bpy.types.INFO_MT_surface_add.append(menu_surface) -def unregister(): +def unregister(): add_curve_simple.unregister() # Remove "Extras" menu from the "Add Curve" menu. bpy.types.INFO_MT_curve_add.remove(menu_func) @@ -211,5 +296,6 @@ def unregister(): bpy.utils.unregister_module(__name__) + if __name__ == "__main__": register() |