Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'add_curve_extra_objects/beveltaper_curve.py')
-rw-r--r--add_curve_extra_objects/beveltaper_curve.py431
1 files changed, 297 insertions, 134 deletions
diff --git a/add_curve_extra_objects/beveltaper_curve.py b/add_curve_extra_objects/beveltaper_curve.py
index 70e910fb..f91eb8b3 100644
--- a/add_curve_extra_objects/beveltaper_curve.py
+++ b/add_curve_extra_objects/beveltaper_curve.py
@@ -1,3 +1,22 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# DevBo Task: https://developer.blender.org/T37377
+
bl_info = {
"name": "Bevel/Taper Curve",
"author": "Cmomoney",
@@ -6,234 +25,374 @@ bl_info = {
"location": "View3D > Object > Bevel/Taper",
"description": "Adds bevel and/or taper curve to active curve",
"warning": "",
- "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Curve/Bevel_-Taper_Curve",
- "tracker_url": "https://projects.blender.org/tracker/index.php?func=detail&aid=37377&group_id=153&atid=467",
+ "wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6/"
+ "Py/Scripts/Curve/Bevel_-Taper_Curve",
"category": "Curve"}
- # ***** BEGIN GPL LICENSE BLOCK *****
- #
- # This program is free software: you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation, either version 3 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
- #
- # ***** END GPL LICENSE BLOCK *****
import bpy
-from bpy.types import Operator
-from bpy.props import *
-from bpy_extras.object_utils import AddObjectHelper, object_data_add
-from mathutils import Vector
+from bpy.types import (
+ Operator,
+ Menu,
+ )
+from bpy.props import (
+ BoolProperty,
+ FloatProperty,
+ IntProperty,
+ )
+from bpy_extras.object_utils import (
+ AddObjectHelper,
+ object_data_add,
+ )
-def add_taper(self, context):
+def add_taper(self, context):
scale_ends1 = self.scale_ends1
scale_ends2 = self.scale_ends2
scale_mid = self.scale_mid
- verts = [(-2.0, 1.0 * scale_ends1, 0.0, 1.0),
- (-1.0, 0.75 * scale_mid, 0.0, 1.0),
- (0.0, 1.5 * scale_mid, 0.0, 1.0),
- (1.0, 0.75 * scale_mid, 0.0, 1.0),
- (2.0, 1.0 * scale_ends2, 0.0, 1.0)]
+ verts = [
+ (-2.0, 1.0 * scale_ends1, 0.0, 1.0),
+ (-1.0, 0.75 * scale_mid, 0.0, 1.0),
+ (0.0, 1.5 * scale_mid, 0.0, 1.0),
+ (1.0, 0.75 * scale_mid, 0.0, 1.0),
+ (2.0, 1.0 * scale_ends2, 0.0, 1.0)
+ ]
make_path(self, context, verts)
-def add_type5(self, context):
+def add_type5(self, context):
scale_x = self.scale_x
scale_y = self.scale_y
- verts = [[0.0 * scale_x, 0.049549 * scale_y,
- 0.0, 0.031603 * scale_x, 0.047013 * scale_y,
- 0.0, 0.05 * scale_x, 0.0 * scale_y, 0.0,
- 0.031603 * scale_x, -0.047013 * scale_y,
- 0.0, 0.0 * scale_x, -0.049549 * scale_y,
- 0.0, -0.031603 * scale_x, -0.047013 * scale_y,
- 0.0, -0.05 * scale_x, -0.0 * scale_y, 0.0,
- -0.031603 * scale_x, 0.047013 * scale_y, 0.0]]
- lhandles = [[(-0.008804 * scale_x, 0.049549 * scale_y, 0.0),
- (0.021304 * scale_x, 0.02119 * scale_y, 0.0),
- (0.05 * scale_x, 0.051228 * scale_y, 0.0),
- (0.036552 * scale_x, -0.059423 * scale_y, 0.0),
- (0.008804 * scale_x, -0.049549 * scale_y, 0.0),
- (-0.021304 * scale_x, -0.02119 * scale_y, 0.0),
- (-0.05 * scale_x, -0.051228 * scale_y, 0.0),
- (-0.036552 * scale_x, 0.059423 * scale_y, 0.0)]]
- rhandles = [[(0.008803 * scale_x, 0.049549 * scale_y, 0.0),
- (0.036552 * scale_x, 0.059423 * scale_y, 0.0),
- (0.05 * scale_x, -0.051228 * scale_y, 0.0),
- (0.021304 * scale_x, -0.02119 * scale_y, 0.0),
- (-0.008803 * scale_x, -0.049549 * scale_y, 0.0),
- (-0.036552 * scale_x, -0.059423 * scale_y, 0.0),
- (-0.05 * scale_x, 0.051228 * scale_y, 0.0),
- (-0.021304 * scale_x, 0.02119 * scale_y, 0.0)]]
+ verts = [
+ [0.0 * scale_x, 0.049549 * scale_y,
+ 0.0, 0.031603 * scale_x, 0.047013 * scale_y,
+ 0.0, 0.05 * scale_x, 0.0 * scale_y, 0.0,
+ 0.031603 * scale_x, -0.047013 * scale_y,
+ 0.0, 0.0 * scale_x, -0.049549 * scale_y,
+ 0.0, -0.031603 * scale_x, -0.047013 * scale_y,
+ 0.0, -0.05 * scale_x, -0.0 * scale_y, 0.0,
+ -0.031603 * scale_x, 0.047013 * scale_y, 0.0]
+ ]
+ lhandles = [
+ [(-0.008804 * scale_x, 0.049549 * scale_y, 0.0),
+ (0.021304 * scale_x, 0.02119 * scale_y, 0.0),
+ (0.05 * scale_x, 0.051228 * scale_y, 0.0),
+ (0.036552 * scale_x, -0.059423 * scale_y, 0.0),
+ (0.008804 * scale_x, -0.049549 * scale_y, 0.0),
+ (-0.021304 * scale_x, -0.02119 * scale_y, 0.0),
+ (-0.05 * scale_x, -0.051228 * scale_y, 0.0),
+ (-0.036552 * scale_x, 0.059423 * scale_y, 0.0)]
+ ]
+ rhandles = [
+ [(0.008803 * scale_x, 0.049549 * scale_y, 0.0),
+ (0.036552 * scale_x, 0.059423 * scale_y, 0.0),
+ (0.05 * scale_x, -0.051228 * scale_y, 0.0),
+ (0.021304 * scale_x, -0.02119 * scale_y, 0.0),
+ (-0.008803 * scale_x, -0.049549 * scale_y, 0.0),
+ (-0.036552 * scale_x, -0.059423 * scale_y, 0.0),
+ (-0.05 * scale_x, 0.051228 * scale_y, 0.0),
+ (-0.021304 * scale_x, 0.02119 * scale_y, 0.0)]
+ ]
make_curve(self, context, verts, lhandles, rhandles)
-def add_type4(self, context):
+def add_type4(self, context):
scale_x = self.scale_x
scale_y = self.scale_y
- verts = [[-0.0 * scale_x, 0.017183 * scale_y,
- 0.0, 0.05 * scale_x, 0.0 * scale_y,
- 0.0, 0.0 * scale_x, -0.017183 * scale_y,
- 0.0, -0.05 * scale_x, -0.0 * scale_y, 0.0]]
- lhandles = [[(-0.017607 * scale_x, 0.017183 * scale_y, 0.0),
- (0.05 * scale_x, 0.102456 * scale_y, 0.0),
- (0.017607 * scale_x, -0.017183 * scale_y, 0.0),
- (-0.05 * scale_x, -0.102456 * scale_y, 0.0)]]
- rhandles = [[(0.017607 * scale_x, 0.017183 * scale_y, 0.0),
- (0.05 * scale_x, -0.102456 * scale_y, 0.0),
- (-0.017607 * scale_x, -0.017183 * scale_y, 0.0),
- (-0.05 * scale_x, 0.102456 * scale_y, 0.0)]]
+ verts = [
+ [-0.0 * scale_x, 0.017183 * scale_y,
+ 0.0, 0.05 * scale_x, 0.0 * scale_y,
+ 0.0, 0.0 * scale_x, -0.017183 * scale_y,
+ 0.0, -0.05 * scale_x, -0.0 * scale_y, 0.0]
+ ]
+ lhandles = [
+ [(-0.017607 * scale_x, 0.017183 * scale_y, 0.0),
+ (0.05 * scale_x, 0.102456 * scale_y, 0.0),
+ (0.017607 * scale_x, -0.017183 * scale_y, 0.0),
+ (-0.05 * scale_x, -0.102456 * scale_y, 0.0)]
+ ]
+ rhandles = [
+ [(0.017607 * scale_x, 0.017183 * scale_y, 0.0),
+ (0.05 * scale_x, -0.102456 * scale_y, 0.0),
+ (-0.017607 * scale_x, -0.017183 * scale_y, 0.0),
+ (-0.05 * scale_x, 0.102456 * scale_y, 0.0)]
+ ]
make_curve(self, context, verts, lhandles, rhandles)
-def add_type3(self, context):
+def add_type3(self, context):
scale_x = self.scale_x
scale_y = self.scale_y
- verts = [[-0.017183 * scale_x, 0.0 * scale_y,
- 0.0, 0.0 * scale_x, 0.05 * scale_y,
- 0.0, 0.017183 * scale_x, 0.0 * scale_y,
- 0.0, 0.0 * scale_x, -0.05 * scale_y, 0.0]]
- lhandles = [[(-0.017183 * scale_x, -0.017607 * scale_y, 0.0),
- (-0.102456 * scale_x, 0.05 * scale_y, 0.0),
- (0.017183 * scale_x, 0.017607 * scale_y, 0.0),
- (0.102456 * scale_x, -0.05 * scale_y, 0.0)]]
- rhandles = [[(-0.017183 * scale_x, 0.017607 * scale_y, 0.0),
- (0.102456 * scale_x, 0.05 * scale_y, 0.0),
- (0.017183 * scale_x, -0.017607 * scale_y, 0.0),
- (-0.102456 * scale_x, -0.05 * scale_y, 0.0)]]
+ verts = [
+ [-0.017183 * scale_x, 0.0 * scale_y,
+ 0.0, 0.0 * scale_x, 0.05 * scale_y,
+ 0.0, 0.017183 * scale_x, 0.0 * scale_y,
+ 0.0, 0.0 * scale_x, -0.05 * scale_y, 0.0]
+ ]
+ lhandles = [
+ [(-0.017183 * scale_x, -0.017607 * scale_y, 0.0),
+ (-0.102456 * scale_x, 0.05 * scale_y, 0.0),
+ (0.017183 * scale_x, 0.017607 * scale_y, 0.0),
+ (0.102456 * scale_x, -0.05 * scale_y, 0.0)]
+ ]
+ rhandles = [
+ [(-0.017183 * scale_x, 0.017607 * scale_y, 0.0),
+ (0.102456 * scale_x, 0.05 * scale_y, 0.0),
+ (0.017183 * scale_x, -0.017607 * scale_y, 0.0),
+ (-0.102456 * scale_x, -0.05 * scale_y, 0.0)]
+ ]
make_curve(self, context, verts, lhandles, rhandles)
-def add_type2(self, context):
+def add_type2(self, context):
scale_x = self.scale_x
scale_y = self.scale_y
- verts = [[-0.05 * scale_x, 0.0 * scale_y,
- 0.0, 0.0 * scale_x, 0.05 * scale_y,
- 0.0, 0.05 * scale_x, 0.0 * scale_y,
- 0.0, 0.0 * scale_x, -0.05 * scale_y, 0.0]]
- lhandles = [[(-0.05 * scale_x, -0.047606 * scale_y, 0.0),
- (-0.047606 * scale_x, 0.05 * scale_y, 0.0),
- (0.05 * scale_x, 0.047607 * scale_y, 0.0),
- (0.047606 * scale_x, -0.05 * scale_y, 0.0)]]
- rhandles = [[(-0.05 * scale_x, 0.047607 * scale_y, 0.0),
- (0.047607 * scale_x, 0.05 * scale_y, 0.0),
- (0.05 * scale_x, -0.047607 * scale_y, 0.0),
- (-0.047607 * scale_x, -0.05 * scale_y, 0.0)]]
+ verts = [
+ [-0.05 * scale_x, 0.0 * scale_y,
+ 0.0, 0.0 * scale_x, 0.05 * scale_y,
+ 0.0, 0.05 * scale_x, 0.0 * scale_y,
+ 0.0, 0.0 * scale_x, -0.05 * scale_y, 0.0]
+ ]
+ lhandles = [
+ [(-0.05 * scale_x, -0.047606 * scale_y, 0.0),
+ (-0.047606 * scale_x, 0.05 * scale_y, 0.0),
+ (0.05 * scale_x, 0.047607 * scale_y, 0.0),
+ (0.047606 * scale_x, -0.05 * scale_y, 0.0)]
+ ]
+ rhandles = [
+ [(-0.05 * scale_x, 0.047607 * scale_y, 0.0),
+ (0.047607 * scale_x, 0.05 * scale_y, 0.0),
+ (0.05 * scale_x, -0.047607 * scale_y, 0.0),
+ (-0.047607 * scale_x, -0.05 * scale_y, 0.0)]
+ ]
make_curve(self, context, verts, lhandles, rhandles)
-def add_type1(self, context):
+def add_type1(self, context):
scale_x = self.scale_x
scale_y = self.scale_y
- verts = [[-0.05 * scale_x, 0.0 * scale_y,
- 0.0, 0.0 * scale_x, 0.05 * scale_y,
- 0.0, 0.05 * scale_x, 0.0 * scale_y,
- 0.0, 0.0 * scale_x, -0.05 * scale_y, 0.0]]
- lhandles = [[(-0.05 * scale_x, -0.027606 * scale_y, 0.0),
- (-0.027606 * scale_x, 0.05 * scale_y, 0.0),
- (0.05 * scale_x, 0.027606 * scale_y, 0.0),
- (0.027606 * scale_x, -0.05 * scale_y, 0.0)]]
- rhandles = [[(-0.05 * scale_x, 0.027607 * scale_y, 0.0),
- (0.027607 * scale_x, 0.05 * scale_y, 0.0),
- (0.05 * scale_x, -0.027607 * scale_y, 0.0),
- (-0.027607 * scale_x, -0.05 * scale_y, 0.0)]]
+ verts = [
+ [-0.05 * scale_x, 0.0 * scale_y,
+ 0.0, 0.0 * scale_x, 0.05 * scale_y,
+ 0.0, 0.05 * scale_x, 0.0 * scale_y,
+ 0.0, 0.0 * scale_x, -0.05 * scale_y, 0.0]
+ ]
+ lhandles = [
+ [(-0.05 * scale_x, -0.027606 * scale_y, 0.0),
+ (-0.027606 * scale_x, 0.05 * scale_y, 0.0),
+ (0.05 * scale_x, 0.027606 * scale_y, 0.0),
+ (0.027606 * scale_x, -0.05 * scale_y, 0.0)]
+ ]
+ rhandles = [
+ [(-0.05 * scale_x, 0.027607 * scale_y, 0.0),
+ (0.027607 * scale_x, 0.05 * scale_y, 0.0),
+ (0.05 * scale_x, -0.027607 * scale_y, 0.0),
+ (-0.027607 * scale_x, -0.05 * scale_y, 0.0)]
+ ]
make_curve(self, context, verts, lhandles, rhandles)
-def make_path(self, context, verts):
+def make_path(self, context, verts):
target = bpy.context.scene.objects.active
- bpy.ops.curve.primitive_nurbs_path_add(view_align=False, enter_editmode=False, location=(0, 0, 0))
+ bpy.ops.curve.primitive_nurbs_path_add(
+ view_align=False, enter_editmode=False, location=(0, 0, 0)
+ )
target.data.taper_object = bpy.context.scene.objects.active
taper = bpy.context.scene.objects.active
taper.name = target.name + '_Taper'
bpy.context.scene.objects.active = target
points = taper.data.splines[0].points
+
for i in range(len(verts)):
points[i].co = verts[i]
-def make_curve(self, context, verts, lh, rh):
- scale_x = self.scale_x
- scale_y = self.scale_y
- type = self.type
+def make_curve(self, context, verts, lh, rh):
target = bpy.context.scene.objects.active
- curve_data = bpy.data.curves.new(name=target.name +'_Bevel', type='CURVE')
+ curve_data = bpy.data.curves.new(
+ name=target.name + '_Bevel', type='CURVE'
+ )
curve_data.dimensions = '3D'
+
for p in range(len(verts)):
c = 0
spline = curve_data.splines.new(type='BEZIER')
spline.use_cyclic_u = True
- spline.bezier_points.add( len(verts[p])/3-1 )
+ spline.bezier_points.add(len(verts[p]) / 3 - 1)
spline.bezier_points.foreach_set('co', verts[p])
+
for bp in spline.bezier_points:
bp.handle_left_type = 'ALIGNED'
bp.handle_right_type = 'ALIGNED'
bp.handle_left.xyz = lh[p][c]
bp.handle_right.xyz = rh[p][c]
c += 1
+
object_data_add(context, curve_data, operator=self)
target.data.bevel_object = bpy.context.scene.objects.active
bpy.context.scene.objects.active = target
-class add_tapercurve(Operator, AddObjectHelper):
- """Add taper curve to active curve"""
+
+class add_tapercurve(Operator):
bl_idname = "curve.tapercurve"
bl_label = "Add Curve as Taper"
+ bl_description = ("Add taper curve to Active Curve\n"
+ "Needs an existing Active Curve")
bl_options = {'REGISTER', 'UNDO'}
+ scale_ends1 = FloatProperty(
+ name="End Width Left",
+ description="Adjust left end taper",
+ default=0.0,
+ min=0.0
+ )
+ scale_ends2 = FloatProperty(
+ name="End Width Right",
+ description="Adjust right end taper",
+ default=0.0,
+ min=0.0
+ )
+ scale_mid = FloatProperty(
+ name="Center Width",
+ description="Adjust taper at center",
+ default=1.0,
+ min=0.0
+ )
+ link1 = BoolProperty(
+ name="Link Ends",
+ description="Link the End Width Left / Right settings\n"
+ "End Width Left will be editable ",
+ default=True
+ )
+ link2 = BoolProperty(
+ name="Link Ends / Center",
+ description="Link the End Widths with the Center Width",
+ default=False
+ )
+ diff = FloatProperty(
+ name="Difference",
+ default=1,
+ description="Difference between ends and center while linked"
+ )
+
+ @classmethod
+ def poll(cls, context):
+ obj = context.active_object
+ return context.mode == 'OBJECT' and obj and obj.type == "CURVE"
+
+ def draw(self, context):
+ layout = self.layout
- scale_ends1 = FloatProperty(name="End Width Left", description="Adjust left end taper", default=0.0, min=0.0)
- scale_ends2 = FloatProperty(name="End Width Right", description="Adjust right end taper", default=0.0, min=0.0)
- scale_mid = FloatProperty(name="Center Width", description="Adjust taper at center", default=1.0, min=0.0)
- link1 = BoolProperty(name='link ends', default=True)
- link2 = BoolProperty(name='link ends/center', default=False)
- if link2:
- diff = FloatProperty(name='Difference', default=1, description='Difference between ends and center while linked')
+ col = layout.column(align=True)
+ col.label("Settings:")
+ split = layout.split(percentage=0.95, align=True)
+ split.active = not self.link2
+ col = split.column(align=True)
+ col.prop(self, "scale_ends1")
+
+ row = split.row(align=True)
+ row.scale_y = 2.0
+ col_sub = col.column(align=True)
+ col_sub.active = not self.link1
+ col_sub.prop(self, "scale_ends2")
+ row.prop(self, "link1", toggle=True, text="", icon="LINKED")
+
+ split = layout.split(percentage=0.95, align=True)
+ col = split.column(align=True)
+ col.prop(self, "scale_mid")
+
+ row = split.row(align=True)
+ row.scale_y = 2.0
+ col_sub = col.column(align=True)
+ col_sub.active = self.link2
+ row.prop(self, "link2", toggle=True, text="", icon="LINKED")
+ col_sub.prop(self, "diff")
def execute(self, context):
if self.link1:
self.scale_ends2 = self.scale_ends1
+
if self.link2:
- self.scale_ends2 = self.scale_ends1 = self.scale_mid-self.diff
+ self.scale_ends2 = self.scale_ends1 = self.scale_mid - self.diff
+
add_taper(self, context)
+
return {'FINISHED'}
+
class add_bevelcurve(Operator, AddObjectHelper):
- """Add bevel curve to active curve"""
bl_idname = "curve.bevelcurve"
bl_label = "Add Curve as Bevel"
+ bl_description = ("Add bevel curve to Active Curve\n"
+ "Needs an existing Active Curve")
bl_options = {'REGISTER', 'UNDO'}
- type = IntProperty(name='Type', description='Type of bevel curve', default=1, min=1, max=5)
- scale_x = FloatProperty(name="scale x", description="scale on x axis", default=1.0)
- scale_y = FloatProperty(name="scale y", description="scale on y axis", default=1.0)
- link = BoolProperty(name='link xy', default=True)
+ types = IntProperty(
+ name="Type",
+ description="Type of bevel curve",
+ default=1,
+ min=1, max=5
+ )
+ scale_x = FloatProperty(
+ name="Scale X",
+ description="Scale on X axis",
+ default=1.0
+ )
+ scale_y = FloatProperty(
+ name="Scale Y",
+ description="Scale on Y axis",
+ default=1.0
+ )
+ link = BoolProperty(
+ name="Link XY",
+ description="Link the Scale on X/Y axis",
+ default=True
+ )
+
+ @classmethod
+ def poll(cls, context):
+ obj = context.active_object
+ return context.mode == 'OBJECT' and obj and obj.type == "CURVE"
+
+ def draw(self, context):
+ layout = self.layout
+
+ col = layout.column(align=True)
+ # AddObjectHelper props
+ col.prop(self, "view_align")
+ col.prop(self, "location")
+ col.prop(self, "rotation")
+
+ col = layout.column(align=True)
+ col.label("Settings:")
+ col.prop(self, "types")
+
+ split = layout.split(percentage=0.95, align=True)
+ col = split.column(align=True)
+ col.prop(self, "scale_x")
+ row = split.row(align=True)
+ row.scale_y = 2.0
+ col.prop(self, "scale_y")
+ row.prop(self, "link", toggle=True, text="", icon="LINKED")
def execute(self, context):
if self.link:
self.scale_y = self.scale_x
- if self.type == 1:
+ if self.types == 1:
add_type1(self, context)
- if self.type == 2:
+ if self.types == 2:
add_type2(self, context)
- if self.type == 3:
+ if self.types == 3:
add_type3(self, context)
- if self.type == 4:
+ if self.types == 4:
add_type4(self, context)
- if self.type == 5:
+ if self.types == 5:
add_type5(self, context)
return {'FINISHED'}
-class Bevel_Taper_Curve_Menu(bpy.types.Menu):
+
+class Bevel_Taper_Curve_Menu(Menu):
bl_label = "Bevel/Taper"
bl_idname = "OBJECT_MT_bevel_taper_curve_menu"
@@ -243,17 +402,21 @@ class Bevel_Taper_Curve_Menu(bpy.types.Menu):
layout.operator("curve.bevelcurve")
layout.operator("curve.tapercurve")
+
def menu_funcs(self, context):
if bpy.context.scene.objects.active.type == "CURVE":
self.layout.menu("OBJECT_MT_bevel_taper_curve_menu")
+
def register():
bpy.utils.register_module(__name__)
bpy.types.VIEW3D_MT_object.append(menu_funcs)
+
def unregister():
bpy.utils.unregister_module(__name__)
bpy.types.VIEW3D_MT_object.remove(menu_funcs)
+
if __name__ == "__main__":
register()