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/add_curve_simple.py')
-rw-r--r--add_curve_extra_objects/add_curve_simple.py1061
1 files changed, 598 insertions, 463 deletions
diff --git a/add_curve_extra_objects/add_curve_simple.py b/add_curve_extra_objects/add_curve_simple.py
index a17e544a..3e85fa18 100644
--- a/add_curve_extra_objects/add_curve_simple.py
+++ b/add_curve_extra_objects/add_curve_simple.py
@@ -17,31 +17,52 @@
# ##### END GPL LICENSE BLOCK #####
bl_info = {
- 'name': 'Simple Curve',
- 'author': 'Spivak Vladimir (http://cwolf3d.korostyshev.net)',
- 'version': (1, 5, 2),
- 'blender': (2, 6, 9),
- 'location': 'View3D > Add > Curve',
- 'description': 'Adds Simple Curve',
- 'warning': '', # used for warning icon and text in addons panel
- 'wiki_url': 'http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Curve/Simple_curves',
- "tracker_url": "https://developer.blender.org/maniphest/task/edit/form/2/",
- 'category': 'Add Curve'}
+ "name": "Simple Curve",
+ "author": "Spivak Vladimir (http://cwolf3d.korostyshev.net)",
+ "version": (1, 5, 3),
+ "blender": (2, 6, 9),
+ "location": "View3D > Add > Curve",
+ "description": "Adds Simple Curve",
+ "warning": "",
+ "wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6/"
+ "Py/Scripts/Curve/Simple_curves",
+ "category": "Add Curve"}
# ------------------------------------------------------------
-#### import modules
+
import bpy
-from bpy.props import *
-from mathutils import *
-from math import *
-from bpy_extras.object_utils import *
-from random import *
+from bpy.types import (
+ Operator,
+ Menu,
+ Panel,
+ PropertyGroup,
+ )
+from bpy.props import (
+ BoolProperty,
+ EnumProperty,
+ FloatProperty,
+ FloatVectorProperty,
+ IntProperty,
+ StringProperty,
+ PointerProperty,
+ )
+from mathutils import (
+ Vector,
+ Matrix,
+ )
+from math import (
+ sin, asin, sqrt,
+ acos, cos, pi,
+ radians, tan,
+ hypot,
+ )
+# from bpy_extras.object_utils import *
+
# ------------------------------------------------------------
# Point:
-
def SimplePoint():
newpoints = []
@@ -49,10 +70,10 @@ def SimplePoint():
return newpoints
+
# ------------------------------------------------------------
# Line:
-
def SimpleLine(c1=[0.0, 0.0, 0.0], c2=[2.0, 2.0, 2.0]):
newpoints = []
@@ -62,10 +83,10 @@ def SimpleLine(c1=[0.0, 0.0, 0.0], c2=[2.0, 2.0, 2.0]):
return newpoints
+
# ------------------------------------------------------------
# Angle:
-
def SimpleAngle(length=1.0, angle=45.0):
newpoints = []
@@ -76,10 +97,10 @@ def SimpleAngle(length=1.0, angle=45.0):
return newpoints
+
# ------------------------------------------------------------
# Distance:
-
def SimpleDistance(length=1.0, center=True):
newpoints = []
@@ -92,10 +113,10 @@ def SimpleDistance(length=1.0, center=True):
return newpoints
+
# ------------------------------------------------------------
# Circle:
-
def SimpleCircle(sides=4, radius=1.0):
newpoints = []
@@ -111,10 +132,10 @@ def SimpleCircle(sides=4, radius=1.0):
return newpoints
+
# ------------------------------------------------------------
# Ellipse:
-
def SimpleEllipse(a=2.0, b=1.0):
newpoints = []
@@ -125,10 +146,10 @@ def SimpleEllipse(a=2.0, b=1.0):
return newpoints
+
# ------------------------------------------------------------
# Arc:
-
def SimpleArc(sides=0, radius=1.0, startangle=0.0, endangle=45.0):
newpoints = []
@@ -153,10 +174,10 @@ def SimpleArc(sides=0, radius=1.0, startangle=0.0, endangle=45.0):
return newpoints
+
# ------------------------------------------------------------
# Sector:
-
def SimpleSector(sides=0, radius=1.0, startangle=0.0, endangle=45.0):
newpoints = []
@@ -182,10 +203,10 @@ def SimpleSector(sides=0, radius=1.0, startangle=0.0, endangle=45.0):
return newpoints
+
# ------------------------------------------------------------
# Segment:
-
def SimpleSegment(sides=0, a=2.0, b=1.0, startangle=0.0, endangle=45.0):
newpoints = []
@@ -224,10 +245,10 @@ def SimpleSegment(sides=0, a=2.0, b=1.0, startangle=0.0, endangle=45.0):
return newpoints
+
# ------------------------------------------------------------
# Rectangle:
-
def SimpleRectangle(width=2.0, length=2.0, rounded=0.0, center=True):
newpoints = []
@@ -271,10 +292,10 @@ def SimpleRectangle(width=2.0, length=2.0, rounded=0.0, center=True):
return newpoints
+
# ------------------------------------------------------------
# Rhomb:
-
def SimpleRhomb(width=2.0, length=2.0, center=True):
newpoints = []
x = width / 2
@@ -293,10 +314,10 @@ def SimpleRhomb(width=2.0, length=2.0, center=True):
return newpoints
+
# ------------------------------------------------------------
# Polygon:
-
def SimplePolygon(sides=3, radius=1.0):
newpoints = []
angle = radians(360.0) / sides
@@ -311,10 +332,10 @@ def SimplePolygon(sides=3, radius=1.0):
return newpoints
+
# ------------------------------------------------------------
# Polygon_ab:
-
def SimplePolygon_ab(sides=3, a=2.0, b=1.0):
newpoints = []
angle = radians(360.0) / sides
@@ -329,10 +350,10 @@ def SimplePolygon_ab(sides=3, a=2.0, b=1.0):
return newpoints
+
# ------------------------------------------------------------
# Trapezoid:
-
def SimpleTrapezoid(a=2.0, b=1.0, h=1.0, center=True):
newpoints = []
x = a / 2
@@ -353,16 +374,16 @@ def SimpleTrapezoid(a=2.0, b=1.0, h=1.0, center=True):
return newpoints
+
# ------------------------------------------------------------
# calculates the matrix for the new object
# depending on user pref
-
def align_matrix(context, location):
loc = Matrix.Translation(location)
obj_align = context.user_preferences.edit.object_align
- if (context.space_data.type == 'VIEW_3D'
- and obj_align == 'VIEW'):
+ if (context.space_data.type == 'VIEW_3D' and
+ obj_align == 'VIEW'):
rot = context.space_data.region_3d.view_matrix.to_3x3().inverted().to_4x4()
else:
rot = Matrix()
@@ -370,21 +391,21 @@ def align_matrix(context, location):
return align_matrix
+
# ------------------------------------------------------------
# Main Function
-
def main(context, self, align_matrix):
# deselect all objects
bpy.ops.object.select_all(action='DESELECT')
# create object
- name = self.Simple_Type # Type as name
+ name = self.Simple_Type # Type as name
# create curve
scene = bpy.context.scene
newCurve = bpy.data.curves.new(name, type='CURVE') # curvedatablock
- newSpline = newCurve.splines.new('BEZIER') # spline
+ newSpline = newCurve.splines.new('BEZIER') # spline
# set curveOptions
newCurve.dimensions = self.shape
@@ -425,15 +446,23 @@ def main(context, self, align_matrix):
self.Simple_sides = sides
if self.Simple_radius == 0:
return {'FINISHED'}
- verts = SimpleArc(self.Simple_sides, self.Simple_radius, self.Simple_startangle, self.Simple_endangle)
+ verts = SimpleArc(
+ self.Simple_sides, self.Simple_radius,
+ self.Simple_startangle, self.Simple_endangle
+ )
newSpline.use_cyclic_u = False
if self.Simple_Type == 'Sector':
if self.Simple_sides < sides:
self.Simple_sides = sides
+
if self.Simple_radius == 0:
return {'FINISHED'}
- verts = SimpleSector(self.Simple_sides, self.Simple_radius, self.Simple_startangle, self.Simple_endangle)
+
+ verts = SimpleSector(
+ self.Simple_sides, self.Simple_radius,
+ self.Simple_startangle, self.Simple_endangle
+ )
newSpline.use_cyclic_u = True
if self.Simple_Type == 'Segment':
@@ -441,31 +470,45 @@ def main(context, self, align_matrix):
self.Simple_sides = sides
if self.Simple_a == 0 or self.Simple_b == 0:
return {'FINISHED'}
- verts = SimpleSegment(self.Simple_sides, self.Simple_a, self.Simple_b, self.Simple_startangle, self.Simple_endangle)
+ verts = SimpleSegment(
+ self.Simple_sides, self.Simple_a, self.Simple_b,
+ self.Simple_startangle, self.Simple_endangle
+ )
newSpline.use_cyclic_u = True
if self.Simple_Type == 'Rectangle':
- verts = SimpleRectangle(self.Simple_width, self.Simple_length, self.Simple_rounded, self.Simple_center)
+ verts = SimpleRectangle(
+ self.Simple_width, self.Simple_length,
+ self.Simple_rounded, self.Simple_center
+ )
newSpline.use_cyclic_u = True
if self.Simple_Type == 'Rhomb':
- verts = SimpleRhomb(self.Simple_width, self.Simple_length, self.Simple_center)
+ verts = SimpleRhomb(
+ self.Simple_width, self.Simple_length, self.Simple_center
+ )
newSpline.use_cyclic_u = True
if self.Simple_Type == 'Polygon':
if self.Simple_sides < 3:
self.Simple_sides = 3
- verts = SimplePolygon(self.Simple_sides, self.Simple_radius)
+ verts = SimplePolygon(
+ self.Simple_sides, self.Simple_radius
+ )
newSpline.use_cyclic_u = True
if self.Simple_Type == 'Polygon_ab':
if self.Simple_sides < 3:
self.Simple_sides = 3
- verts = SimplePolygon_ab(self.Simple_sides, self.Simple_a, self.Simple_b)
+ verts = SimplePolygon_ab(
+ self.Simple_sides, self.Simple_a, self.Simple_b
+ )
newSpline.use_cyclic_u = True
if self.Simple_Type == 'Trapezoid':
- verts = SimpleTrapezoid(self.Simple_a, self.Simple_b, self.Simple_h, self.Simple_center)
+ verts = SimpleTrapezoid(
+ self.Simple_a, self.Simple_b, self.Simple_h, self.Simple_center
+ )
newSpline.use_cyclic_u = True
vertArray = []
@@ -491,7 +534,10 @@ def main(context, self, align_matrix):
p.handle_left_type = 'VECTOR'
n += 1
- if self.Simple_Type == 'Circle' or self.Simple_Type == 'Arc' or self.Simple_Type == 'Sector' or self.Simple_Type == 'Segment' or self.Simple_Type == 'Ellipse':
+ if self.Simple_Type == 'Circle' or self.Simple_Type == 'Arc' or \
+ self.Simple_Type == 'Sector' or self.Simple_Type == 'Segment' or \
+ self.Simple_Type == 'Ellipse':
+
for p in all_points:
p.handle_right_type = 'FREE'
p.handle_left_type = 'FREE'
@@ -702,24 +748,24 @@ def main(context, self, align_matrix):
all_points[int(n / 2) - 1].handle_right_type = 'VECTOR'
all_points[int(n / 2)].handle_left_type = 'VECTOR'
- SimpleCurve.Simple = True
- SimpleCurve.Simple_Change = False
- SimpleCurve.Simple_Type = self.Simple_Type
- SimpleCurve.Simple_startlocation = self.Simple_startlocation
- SimpleCurve.Simple_endlocation = self.Simple_endlocation
- SimpleCurve.Simple_a = self.Simple_a
- SimpleCurve.Simple_b = self.Simple_b
- SimpleCurve.Simple_h = self.Simple_h
- SimpleCurve.Simple_angle = self.Simple_angle
- SimpleCurve.Simple_startangle = self.Simple_startangle
- SimpleCurve.Simple_endangle = self.Simple_endangle
- SimpleCurve.Simple_rotation_euler = self.Simple_rotation_euler
- SimpleCurve.Simple_sides = self.Simple_sides
- SimpleCurve.Simple_radius = self.Simple_radius
- SimpleCurve.Simple_center = self.Simple_center
- SimpleCurve.Simple_width = self.Simple_width
- SimpleCurve.Simple_length = self.Simple_length
- SimpleCurve.Simple_rounded = self.Simple_rounded
+ SimpleCurve.s_curve.Simple = True
+ SimpleCurve.s_curve.Simple_Change = False
+ SimpleCurve.s_curve.Simple_Type = self.Simple_Type
+ SimpleCurve.s_curve.Simple_startlocation = self.Simple_startlocation
+ SimpleCurve.s_curve.Simple_endlocation = self.Simple_endlocation
+ SimpleCurve.s_curve.Simple_a = self.Simple_a
+ SimpleCurve.s_curve.Simple_b = self.Simple_b
+ SimpleCurve.s_curve.Simple_h = self.Simple_h
+ SimpleCurve.s_curve.Simple_angle = self.Simple_angle
+ SimpleCurve.s_curve.Simple_startangle = self.Simple_startangle
+ SimpleCurve.s_curve.Simple_endangle = self.Simple_endangle
+ SimpleCurve.s_curve.Simple_rotation_euler = self.Simple_rotation_euler
+ SimpleCurve.s_curve.Simple_sides = self.Simple_sides
+ SimpleCurve.s_curve.Simple_radius = self.Simple_radius
+ SimpleCurve.s_curve.Simple_center = self.Simple_center
+ SimpleCurve.s_curve.Simple_width = self.Simple_width
+ SimpleCurve.s_curve.Simple_length = self.Simple_length
+ SimpleCurve.s_curve.Simple_rounded = self.Simple_rounded
bpy.ops.object.mode_set(mode='EDIT', toggle=True)
bpy.ops.curve.select_all(action='SELECT')
@@ -727,10 +773,10 @@ def main(context, self, align_matrix):
return
+
# ------------------------------------------------------------
# Delete simple curve
-
def SimpleDelete(name):
if bpy.ops.object.mode_set.poll():
bpy.ops.object.mode_set(mode='OBJECT')
@@ -740,297 +786,367 @@ def SimpleDelete(name):
return
+
# ------------------------------------------------------------
# Simple operator
-
-class Simple(bpy.types.Operator):
- ''''''
+class Simple(Operator):
bl_idname = "curve.simple"
- bl_label = "Simple curve"
+ bl_label = "Simple Curve"
+ bl_description = "Construct a Simple Curve"
bl_options = {'REGISTER', 'UNDO'}
- bl_description = "adds simple curve"
# align_matrix for the invoke
align_matrix = Matrix()
# change properties
- Simple = BoolProperty(name="Simple",
- default=True,
- description="simple curve")
-
- Simple_Change = BoolProperty(name="Change",
- default=False,
- description="change simple curve")
-
- Simple_Delete = StringProperty(name="Delete",
- description="Delete simple curve")
-
+ Simple = BoolProperty(
+ name="Simple",
+ default=True,
+ description="Simple Curve"
+ )
+ Simple_Change = BoolProperty(
+ name="Change",
+ default=False,
+ description="Change Simple Curve"
+ )
+ Simple_Delete = StringProperty(
+ name="Delete",
+ description="Delete Simple Curve"
+ )
# general properties
- Types = [('Point', 'Point', 'Point'),
- ('Line', 'Line', 'Line'),
- ('Distance', 'Distance', 'Distance'),
- ('Angle', 'Angle', 'Angle'),
- ('Circle', 'Circle', 'Circle'),
- ('Ellipse', 'Ellipse', 'Ellipse'),
- ('Arc', 'Arc', 'Arc'),
- ('Sector', 'Sector', 'Sector'),
- ('Segment', 'Segment', 'Segment'),
- ('Rectangle', 'Rectangle', 'Rectangle'),
- ('Rhomb', 'Rhomb', 'Rhomb'),
- ('Polygon', 'Polygon', 'Polygon'),
- ('Polygon_ab', 'Polygon_ab', 'Polygon_ab'),
- ('Trapezoid', 'Trapezoid', 'Trapezoid')]
- Simple_Type = EnumProperty(name="Type",
- description="Form of Curve to create",
- items=Types)
-
+ Types = [('Point', "Point", "Construct a Point"),
+ ('Line', "Line", "Construct a Line"),
+ ('Distance', "Distance", "Contruct a two point Distance"),
+ ('Angle', "Angle", "Construct an Angle"),
+ ('Circle', "Circle", "Construct a Circle"),
+ ('Ellipse', "Ellipse", "Construct an Ellipse"),
+ ('Arc', "Arc", "Construct an Arc"),
+ ('Sector', "Sector", "Construct a Sector"),
+ ('Segment', "Segment", "Construct a Segment"),
+ ('Rectangle', "Rectangle", "Construct a Rectangle"),
+ ('Rhomb', "Rhomb", "Construct a Rhomb"),
+ ('Polygon', "Polygon", "Construct a Polygon"),
+ ('Polygon_ab', "Polygon ab", "Construct a Polygon ab"),
+ ('Trapezoid', "Trapezoid", "Construct a Trapezoid")
+ ]
+ Simple_Type = EnumProperty(
+ name="Type",
+ description="Form of Curve to create",
+ items=Types
+ )
# Line properties
- Simple_startlocation = FloatVectorProperty(name="",
- description="Start location",
- default=(0.0, 0.0, 0.0),
- subtype='TRANSLATION')
- Simple_endlocation = FloatVectorProperty(name="",
- description="End location",
- default=(2.0, 2.0, 2.0),
- subtype='TRANSLATION')
- Simple_rotation_euler = FloatVectorProperty(name="",
- description="Rotation",
- default=(0.0, 0.0, 0.0),
- subtype='EULER')
-
+ Simple_startlocation = FloatVectorProperty(
+ name="",
+ description="Start location",
+ default=(0.0, 0.0, 0.0),
+ subtype='TRANSLATION'
+ )
+ Simple_endlocation = FloatVectorProperty(
+ name="",
+ description="End location",
+ default=(2.0, 2.0, 2.0),
+ subtype='TRANSLATION'
+ )
+ Simple_rotation_euler = FloatVectorProperty(
+ name="",
+ description="Rotation",
+ default=(0.0, 0.0, 0.0),
+ subtype='EULER'
+ )
# Trapezoid properties
- Simple_a = FloatProperty(name="a",
- default=2.0,
- min=0.0, soft_min=0.0,
- unit='LENGTH',
- description="a")
- Simple_b = FloatProperty(name="b",
- default=1.0,
- min=0.0, soft_min=0.0,
- unit='LENGTH',
- description="b")
- Simple_h = FloatProperty(name="h",
- default=1.0,
- unit='LENGTH',
- description="h")
-
- Simple_angle = FloatProperty(name="Angle",
- default=45.0,
- description="Angle")
- Simple_startangle = FloatProperty(name="Start angle",
- default=0.0,
- min=-360.0, soft_min=-360.0,
- max=360.0, soft_max=360.0,
- description="Start angle")
- Simple_endangle = FloatProperty(name="End angle",
- default=45.0,
- min=-360.0, soft_min=-360.0,
- max=360.0, soft_max=360.0,
- description="End angle")
-
- Simple_sides = IntProperty(name="sides",
- default=3,
- min=0, soft_min=0,
- description="sides")
-
- Simple_radius = FloatProperty(name="radius",
- default=1.0,
- min=0.0, soft_min=0.0,
- unit='LENGTH',
- description="radius")
-
- Simple_center = BoolProperty(name="Length center",
- default=True,
- description="Length center")
-
- Angle_types = [('Degrees', 'Degrees', 'Degrees'),
- ('Radians', 'Radians', 'Radians')]
- Simple_degrees_or_radians = EnumProperty(name="Degrees or radians",
- description="Degrees or radians",
- items=Angle_types)
-
+ Simple_a = FloatProperty(
+ name="Side a",
+ default=2.0,
+ min=0.0, soft_min=0.0,
+ unit='LENGTH',
+ description="a side Value"
+ )
+ Simple_b = FloatProperty(
+ name="Side b",
+ default=1.0,
+ min=0.0, soft_min=0.0,
+ unit='LENGTH',
+ description="b side Value"
+ )
+ Simple_h = FloatProperty(
+ name="Height",
+ default=1.0,
+ unit='LENGTH',
+ description="Height of the Trapezoid - distance between a and b"
+ )
+ Simple_angle = FloatProperty(
+ name="Angle",
+ default=45.0,
+ description="Angle"
+ )
+ Simple_startangle = FloatProperty(
+ name="Start angle",
+ default=0.0,
+ min=-360.0, soft_min=-360.0,
+ max=360.0, soft_max=360.0,
+ description="Start angle"
+ )
+ Simple_endangle = FloatProperty(
+ name="End angle",
+ default=45.0,
+ min=-360.0, soft_min=-360.0,
+ max=360.0, soft_max=360.0,
+ description="End angle"
+ )
+ Simple_sides = IntProperty(
+ name="Sides",
+ default=3,
+ min=0, soft_min=0,
+ description="Sides"
+ )
+ Simple_radius = FloatProperty(
+ name="Radius",
+ default=1.0,
+ min=0.0, soft_min=0.0,
+ unit='LENGTH',
+ description="Radius"
+ )
+ Simple_center = BoolProperty(
+ name="Length center",
+ default=True,
+ description="Length center"
+ )
+
+ Angle_types = [('Degrees', "Degrees", "Use Degrees"),
+ ('Radians', "Radians", "Use Radians")]
+ Simple_degrees_or_radians = EnumProperty(
+ name="Degrees or radians",
+ description="Degrees or radians",
+ items=Angle_types
+ )
# Rectangle properties
- Simple_width = FloatProperty(name="Width",
- default=2.0,
- min=0.0, soft_min=0,
- unit='LENGTH',
- description="Width")
- Simple_length = FloatProperty(name="Length",
- default=2.0,
- min=0.0, soft_min=0.0,
- unit='LENGTH',
- description="Length")
- Simple_rounded = FloatProperty(name="Rounded",
- default=0.0,
- min=0.0, soft_min=0.0,
- unit='LENGTH',
- description="Rounded")
-
+ Simple_width = FloatProperty(
+ name="Width",
+ default=2.0,
+ min=0.0, soft_min=0,
+ unit='LENGTH',
+ description="Width"
+ )
+ Simple_length = FloatProperty(
+ name="Length",
+ default=2.0,
+ min=0.0, soft_min=0.0,
+ unit='LENGTH',
+ description="Length"
+ )
+ Simple_rounded = FloatProperty(
+ name="Rounded",
+ default=0.0,
+ min=0.0, soft_min=0.0,
+ unit='LENGTH',
+ description="Rounded corners"
+ )
# Curve Options
shapeItems = [
- ('2D', '2D', '2D'),
- ('3D', '3D', '3D')]
- shape = EnumProperty(name="2D / 3D",
- items=shapeItems,
- description="2D or 3D Curve")
+ ('2D', "2D", "2D shape Curve"),
+ ('3D', "3D", "3D shape Curve")]
+ shape = EnumProperty(
+ name="2D / 3D",
+ items=shapeItems,
+ description="2D or 3D Curve"
+ )
- ##### DRAW #####
def draw(self, context):
layout = self.layout
# general options
col = layout.column()
- col.prop(self, 'Simple_Type')
+ col.prop(self, "Simple_Type")
l = 0
s = 0
if self.Simple_Type == 'Line':
- col.label(text=self.Simple_Type + " Options")
box = layout.box()
- box.prop(self, 'Simple_endlocation')
+ col = box.column(align=True)
+ col.label(text=self.Simple_Type + " Options:")
+ col.prop(self, "Simple_endlocation")
v = Vector(self.Simple_endlocation) - Vector(self.Simple_startlocation)
l = v.length
if self.Simple_Type == 'Distance':
- col.label(text=self.Simple_Type + " Options")
box = layout.box()
- box.prop(self, 'Simple_length')
- box.prop(self, 'Simple_center')
+ col = box.column(align=True)
+ col.label(text=self.Simple_Type + " Options:")
+ col.prop(self, "Simple_length")
+ col.prop(self, "Simple_center")
l = self.Simple_length
if self.Simple_Type == 'Angle':
- col.label(text=self.Simple_Type + " Options")
box = layout.box()
- box.prop(self, 'Simple_length')
- box.prop(self, 'Simple_angle')
+ col = box.column(align=True)
+ col.label(text=self.Simple_Type + " Options:")
+ col.prop(self, "Simple_length")
+ col.prop(self, "Simple_angle")
+
row = layout.row()
- row.prop(self, 'Simple_degrees_or_radians', expand=True)
+ row.prop(self, "Simple_degrees_or_radians", expand=True)
if self.Simple_Type == 'Circle':
- col.label(text=self.Simple_Type + " Options")
box = layout.box()
- box.prop(self, 'Simple_sides')
- box.prop(self, 'Simple_radius')
+ col = box.column(align=True)
+ col.label(text=self.Simple_Type + " Options:")
+ col.prop(self, "Simple_sides")
+ col.prop(self, "Simple_radius")
+
l = 2 * pi * abs(self.Simple_radius)
s = pi * self.Simple_radius * self.Simple_radius
if self.Simple_Type == 'Ellipse':
- col.label(text=self.Simple_Type + " Options")
box = layout.box()
- box.prop(self, 'Simple_a')
- box.prop(self, 'Simple_b')
- l = pi * (3 * (self.Simple_a + self.Simple_b) - sqrt((3 * self.Simple_a + self.Simple_b) * (self.Simple_a + 3 * self.Simple_b)))
+ col = box.column(align=True)
+ col.label(text=self.Simple_Type + " Options:")
+ col.prop(self, "Simple_a", text="Radius a")
+ col.prop(self, "Simple_b", text="Radius b")
+
+ l = pi * (3 * (self.Simple_a + self.Simple_b) -
+ sqrt((3 * self.Simple_a + self.Simple_b) *
+ (self.Simple_a + 3 * self.Simple_b)))
+
s = pi * abs(self.Simple_b) * abs(self.Simple_a)
if self.Simple_Type == 'Arc':
- col.label(text=self.Simple_Type + " Options")
box = layout.box()
- box.prop(self, 'Simple_sides')
- box.prop(self, 'Simple_radius')
- box.prop(self, 'Simple_startangle')
- box.prop(self, 'Simple_endangle')
+ col = box.column(align=True)
+ col.label(text=self.Simple_Type + " Options:")
+ col.prop(self, "Simple_sides")
+ col.prop(self, "Simple_radius")
+
+ col = box.column(align=True)
+ col.prop(self, "Simple_startangle")
+ col.prop(self, "Simple_endangle")
row = layout.row()
- row.prop(self, 'Simple_degrees_or_radians', expand=True)
+ row.prop(self, "Simple_degrees_or_radians", expand=True)
+
l = abs(pi * self.Simple_radius * (self.Simple_endangle - self.Simple_startangle) / 180)
if self.Simple_Type == 'Sector':
- col.label(text=self.Simple_Type + " Options")
box = layout.box()
- box.prop(self, 'Simple_sides')
- box.prop(self, 'Simple_radius')
- box.prop(self, 'Simple_startangle')
- box.prop(self, 'Simple_endangle')
+ col = box.column(align=True)
+ col.label(text=self.Simple_Type + " Options:")
+ col.prop(self, "Simple_sides")
+ col.prop(self, "Simple_radius")
+
+ col = box.column(align=True)
+ col.prop(self, "Simple_startangle")
+ col.prop(self, "Simple_endangle")
row = layout.row()
- row.prop(self, 'Simple_degrees_or_radians', expand=True)
- l = abs(pi * self.Simple_radius * (self.Simple_endangle - self.Simple_startangle) / 180) + self.Simple_radius * 2
- s = pi * self.Simple_radius * self.Simple_radius * abs(self.Simple_endangle - self.Simple_startangle) / 360
+ row.prop(self, "Simple_degrees_or_radians", expand=True)
+
+ l = abs(pi * self.Simple_radius *
+ (self.Simple_endangle - self.Simple_startangle) / 180) + self.Simple_radius * 2
+
+ s = pi * self.Simple_radius * self.Simple_radius * \
+ abs(self.Simple_endangle - self.Simple_startangle) / 360
if self.Simple_Type == 'Segment':
- col.label(text=self.Simple_Type + " Options")
box = layout.box()
- box.prop(self, 'Simple_sides')
- box.prop(self, 'Simple_a')
- box.prop(self, 'Simple_b')
- box.prop(self, 'Simple_startangle')
- box.prop(self, 'Simple_endangle')
+ col = box.column(align=True)
+ col.label(text=self.Simple_Type + " Options:")
+ col.prop(self, "Simple_sides")
+ col.prop(self, "Simple_a", text="Radius a")
+ col.prop(self, "Simple_b", text="Radius b")
+
+ col = box.column(align=True)
+ col.prop(self, "Simple_startangle")
+ col.prop(self, "Simple_endangle")
+
row = layout.row()
- row.prop(self, 'Simple_degrees_or_radians', expand=True)
+ row.prop(self, "Simple_degrees_or_radians", expand=True)
+
la = abs(pi * self.Simple_a * (self.Simple_endangle - self.Simple_startangle) / 180)
lb = abs(pi * self.Simple_b * (self.Simple_endangle - self.Simple_startangle) / 180)
l = abs(self.Simple_a - self.Simple_b) * 2 + la + lb
- sa = pi * self.Simple_a * self.Simple_a * abs(self.Simple_endangle - self.Simple_startangle) / 360
- sb = pi * self.Simple_b * self.Simple_b * abs(self.Simple_endangle - self.Simple_startangle) / 360
+
+ sa = pi * self.Simple_a * self.Simple_a * \
+ abs(self.Simple_endangle - self.Simple_startangle) / 360
+
+ sb = pi * self.Simple_b * self.Simple_b * \
+ abs(self.Simple_endangle - self.Simple_startangle) / 360
+
s = abs(sa - sb)
if self.Simple_Type == 'Rectangle':
- col.label(text=self.Simple_Type + " Options")
box = layout.box()
- box.prop(self, 'Simple_width')
- box.prop(self, 'Simple_length')
- box.prop(self, 'Simple_rounded')
- box.prop(self, 'Simple_center')
+ col = box.column(align=True)
+ col.label(text=self.Simple_Type + " Options:")
+ col.prop(self, "Simple_width")
+ col.prop(self, "Simple_length")
+ col.prop(self, "Simple_rounded")
+
+ box.prop(self, "Simple_center")
l = 2 * abs(self.Simple_width) + 2 * abs(self.Simple_length)
s = abs(self.Simple_width) * abs(self.Simple_length)
if self.Simple_Type == 'Rhomb':
- col.label(text=self.Simple_Type + " Options")
box = layout.box()
- box.prop(self, 'Simple_width')
- box.prop(self, 'Simple_length')
- box.prop(self, 'Simple_center')
+ col = box.column(align=True)
+ col.label(text=self.Simple_Type + " Options:")
+ col.prop(self, "Simple_width")
+ col.prop(self, "Simple_length")
+ col.prop(self, "Simple_center")
+
g = hypot(self.Simple_width / 2, self.Simple_length / 2)
l = 4 * g
s = self.Simple_width * self.Simple_length / 2
if self.Simple_Type == 'Polygon':
- col.label(text=self.Simple_Type + " Options")
box = layout.box()
- box.prop(self, 'Simple_sides')
- box.prop(self, 'Simple_radius')
+ col = box.column(align=True)
+ col.label(text=self.Simple_Type + " Options:")
+ col.prop(self, "Simple_sides")
+ col.prop(self, "Simple_radius")
if self.Simple_Type == 'Polygon_ab':
- col.label(text=self.Simple_Type + " Options")
box = layout.box()
- box.prop(self, 'Simple_sides')
- box.prop(self, 'Simple_a')
- box.prop(self, 'Simple_b')
+ col = box.column(align=True)
+ col.label(text="Polygon ab Options:")
+ col.prop(self, "Simple_sides")
+ col.prop(self, "Simple_a")
+ col.prop(self, "Simple_b")
if self.Simple_Type == 'Trapezoid':
- col.label(text=self.Simple_Type + " Options")
box = layout.box()
- box.prop(self, 'Simple_a')
- box.prop(self, 'Simple_b')
- box.prop(self, 'Simple_h')
- box.prop(self, 'Simple_center')
+ col = box.column(align=True)
+ col.label(text=self.Simple_Type + " Options:")
+ col.prop(self, "Simple_a")
+ col.prop(self, "Simple_b")
+ col.prop(self, "Simple_h")
+
+ box.prop(self, "Simple_center")
g = hypot(self.Simple_h, (self.Simple_a - self.Simple_b) / 2)
l = self.Simple_a + self.Simple_b + g * 2
s = (abs(self.Simple_a) + abs(self.Simple_b)) / 2 * self.Simple_h
row = layout.row()
- row.prop(self, 'shape', expand=True)
+ row.prop(self, "shape", expand=True)
box = layout.box()
box.label("Location:")
- box.prop(self, 'Simple_startlocation')
+ box.prop(self, "Simple_startlocation")
box = layout.box()
box.label("Rotation:")
- box.prop(self, 'Simple_rotation_euler')
+ box.prop(self, "Simple_rotation_euler")
+
+ if l != 0 or s != 0:
+ box = layout.box()
+ box.label(text="Statistics:", icon="INFO")
if l != 0:
l_str = str(round(l, 4))
- row = layout.row()
- row.label("Length: " + l_str)
+ box.label("Length: " + l_str)
if s != 0:
s_str = str(round(s, 4))
- row = layout.row()
- row.label("Area: " + s_str)
+ box.label("Area: " + s_str)
- ##### POLL #####
@classmethod
def poll(cls, context):
return context.scene is not None
- ##### EXECUTE #####
def execute(self, context):
if self.Simple_Change:
SimpleDelete(self.Simple_Delete)
@@ -1052,7 +1168,6 @@ class Simple(bpy.types.Operator):
return {'FINISHED'}
- ##### INVOKE #####
def invoke(self, context, event):
# store creation_matrix
if self.Simple_Change:
@@ -1065,43 +1180,42 @@ class Simple(bpy.types.Operator):
return {'FINISHED'}
+
# ------------------------------------------------------------
# Fillet
-
-class BezierPointsFillet(bpy.types.Operator):
- ''''''
+class BezierPointsFillet(Operator):
bl_idname = "curve.bezier_points_fillet"
- bl_label = "Bezier points fillet"
+ bl_label = "Bezier points Fillet"
+ bl_description = "Bezier points Fillet"
bl_options = {'REGISTER', 'UNDO'}
- bl_description = "bezier points fillet"
-
- Fillet_radius = FloatProperty(name="Radius",
- default=0.25,
- unit='LENGTH',
- description="radius")
- Types = [('Round', 'Round', 'Round'),
- ('Chamfer', 'Chamfer', 'Chamfer')]
- Fillet_Type = EnumProperty(name="Type",
- description="Fillet type",
- items=Types)
+ Fillet_radius = FloatProperty(
+ name="Radius",
+ default=0.25,
+ unit='LENGTH',
+ description="Radius"
+ )
+ Types = [('Round', "Round", "Round"),
+ ('Chamfer', "Chamfer", "Chamfer")]
+ Fillet_Type = EnumProperty(
+ name="Type",
+ description="Fillet type",
+ items=Types
+ )
- ##### DRAW #####
def draw(self, context):
layout = self.layout
# general options
col = layout.column()
- col.prop(self, 'Fillet_radius')
- col.prop(self, 'Fillet_Type', expand=True)
+ col.prop(self, "Fillet_radius")
+ col.prop(self, "Fillet_Type", expand=True)
- ##### POLL #####
@classmethod
def poll(cls, context):
return context.scene is not None
- ##### EXECUTE #####
def execute(self, context):
# go to object mode
if bpy.ops.object.mode_set.poll():
@@ -1127,9 +1241,7 @@ class BezierPointsFillet(bpy.types.Operator):
n += 1
if n > 2:
-
jn = 0
-
for j in ii:
j += jn
@@ -1143,7 +1255,8 @@ class BezierPointsFillet(bpy.types.Operator):
selected_all[j + 1].select_control_point = True
bpy.ops.curve.subdivide()
selected_all = [p for p in spline.bezier_points]
- selected4 = [selected_all[j - 1], selected_all[j], selected_all[j + 1], selected_all[j + 2]]
+ selected4 = [selected_all[j - 1], selected_all[j],
+ selected_all[j + 1], selected_all[j + 2]]
jn += 1
n += 1
@@ -1152,7 +1265,8 @@ class BezierPointsFillet(bpy.types.Operator):
selected_all[j + 1].select_control_point = True
bpy.ops.curve.subdivide()
selected_all = [p for p in spline.bezier_points]
- selected4 = [selected_all[n], selected_all[0], selected_all[1], selected_all[2]]
+ selected4 = [selected_all[n], selected_all[0],
+ selected_all[1], selected_all[2]]
jn += 1
n += 1
@@ -1161,7 +1275,8 @@ class BezierPointsFillet(bpy.types.Operator):
selected_all[j - 1].select_control_point = True
bpy.ops.curve.subdivide()
selected_all = [p for p in spline.bezier_points]
- selected4 = [selected_all[0], selected_all[n], selected_all[n - 1], selected_all[n - 2]]
+ selected4 = [selected_all[0], selected_all[n],
+ selected_all[n - 1], selected_all[n - 2]]
selected4[2].co = selected4[1].co
s1 = Vector(selected4[0].co) - Vector(selected4[1].co)
@@ -1198,7 +1313,6 @@ class BezierPointsFillet(bpy.types.Operator):
return {'FINISHED'}
- ##### INVOKE #####
def invoke(self, context, event):
self.execute(context)
@@ -1214,32 +1328,31 @@ def subdivide_cubic_bezier(p1, p2, p3, p4, t):
p1234 = (p234 - p123) * t + p123
return [p12, p123, p1234, p234, p34]
+
# ------------------------------------------------------------
# BezierDivide Operator
-
-class BezierDivide(bpy.types.Operator):
- ''''''
+class BezierDivide(Operator):
bl_idname = "curve.bezier_spline_divide"
- bl_label = "Bezier Divide (enters edit mode) for Fillet Curves"
+ bl_label = "Bezier Spline Divide"
+ bl_description = "Bezier Divide (enters edit mode) for Fillet Curves"
bl_options = {'REGISTER', 'UNDO'}
- bl_description = "bezier spline divide"
# align_matrix for the invoke
align_matrix = Matrix()
- Bezier_t = FloatProperty(name="t (0% - 100%)",
- default=50.0,
- min=0.0, soft_min=0.0,
- max=100.0, soft_max=100.0,
- description="t (0% - 100%)")
+ Bezier_t = FloatProperty(
+ name="t (0% - 100%)",
+ default=50.0,
+ min=0.0, soft_min=0.0,
+ max=100.0, soft_max=100.0,
+ description="t (0% - 100%)"
+ )
- ##### POLL #####
@classmethod
def poll(cls, context):
return context.scene is not None
- ##### EXECUTE #####
def execute(self, context):
# go to object mode
if bpy.ops.object.mode_set.poll():
@@ -1252,9 +1365,11 @@ class BezierDivide(bpy.types.Operator):
# main function
spline = bpy.context.object.data.splines.active
- vertex = []
selected_all = [p for p in spline.bezier_points if p.select_control_point]
- h = subdivide_cubic_bezier(selected_all[0].co, selected_all[0].handle_right, selected_all[1].handle_left, selected_all[1].co, self.Bezier_t / 100)
+ h = subdivide_cubic_bezier(
+ selected_all[0].co, selected_all[0].handle_right,
+ selected_all[1].handle_left, selected_all[1].co, self.Bezier_t / 100
+ )
selected_all[0].handle_right_type = 'FREE'
selected_all[0].handle_left_type = 'FREE'
@@ -1274,73 +1389,69 @@ class BezierDivide(bpy.types.Operator):
return {'FINISHED'}
- ##### INVOKE #####
def invoke(self, context, event):
self.execute(context)
return {'FINISHED'}
+
# ------------------------------------------------------------
# Simple change panel
-
-class SimplePanel(bpy.types.Panel):
-
- bl_label = "Simple change"
+class SimplePanel(Panel):
+ bl_label = "Simple Curve"
bl_space_type = "VIEW_3D"
bl_region_type = "TOOLS"
bl_options = {'DEFAULT_CLOSED'}
bl_category = "Tools"
- ##### POLL #####
@classmethod
def poll(cls, context):
if not context.active_object:
pass
- elif context.object.Simple == True:
+ elif context.object.s_curve.Simple is True:
return (context.object)
- ##### DRAW #####
def draw(self, context):
- if context.object.Simple == True:
-
+ if context.object.s_curve.Simple is True:
layout = self.layout
-
obj = context.object
row = layout.row()
- simple_change = row.operator("curve.simple", text='Change')
+
+ simple_change = row.operator("curve.simple", text="Change",
+ icon="OUTLINER_DATA_CURVE")
simple_change.Simple_Change = True
simple_change.Simple_Delete = obj.name
- simple_change.Simple_Type = obj.Simple_Type
+ simple_change.Simple_Type = obj.s_curve.Simple_Type
simple_change.Simple_startlocation = obj.location
- simple_change.Simple_endlocation = obj.Simple_endlocation
- simple_change.Simple_a = obj.Simple_a
- simple_change.Simple_b = obj.Simple_b
- simple_change.Simple_h = obj.Simple_h
- simple_change.Simple_angle = obj.Simple_angle
- simple_change.Simple_startangle = obj.Simple_startangle
- simple_change.Simple_endangle = obj.Simple_endangle
+ simple_change.Simple_endlocation = obj.s_curve.Simple_endlocation
+
+ simple_change.Simple_a = obj.s_curve.Simple_a
+ simple_change.Simple_b = obj.s_curve.Simple_b
+ simple_change.Simple_h = obj.s_curve.Simple_h
+
+ simple_change.Simple_angle = obj.s_curve.Simple_angle
+ simple_change.Simple_startangle = obj.s_curve.Simple_startangle
+ simple_change.Simple_endangle = obj.s_curve.Simple_endangle
simple_change.Simple_rotation_euler = obj.rotation_euler
- simple_change.Simple_sides = obj.Simple_sides
- simple_change.Simple_radius = obj.Simple_radius
- simple_change.Simple_center = obj.Simple_center
- simple_change.Simple_width = obj.Simple_width
- simple_change.Simple_length = obj.Simple_length
- simple_change.Simple_rounded = obj.Simple_rounded
-# ------------------------------------------------------------
-# Fillet tools panel
+ simple_change.Simple_sides = obj.s_curve.Simple_sides
+ simple_change.Simple_radius = obj.s_curve.Simple_radius
+ simple_change.Simple_center = obj.s_curve.Simple_center
+ simple_change.Simple_width = obj.s_curve.Simple_width
+ simple_change.Simple_length = obj.s_curve.Simple_length
+ simple_change.Simple_rounded = obj.s_curve.Simple_rounded
-class SimpleEdit(bpy.types.Operator):
+# ------------------------------------------------------------
+# Fillet tools panel
- """Curve Simple"""
+class SimpleEdit(Operator):
bl_idname = "object._simple_edit"
bl_label = "Create Curves"
+ bl_description = "Subdivide and Fillet Curves"
bl_options = {'REGISTER', 'UNDO'}
- bl_description = "Subdivide & Fillet Curves"
- ##### POLL #####
@classmethod
def poll(cls, context):
vertex = []
@@ -1369,7 +1480,6 @@ class SimpleEdit(bpy.types.Operator):
if selected >= 2:
return (context.selected_objects)
- ##### DRAW #####
def draw(self, context):
vertex = []
selected = []
@@ -1387,201 +1497,222 @@ class SimpleEdit(bpy.types.Operator):
if len(vertex) > 0 and n > 2:
layout = self.layout
row = layout.row()
- simple_edit = row.operator("curve.bezier_points_fillet", text='Fillet')
+ row.operator("curve.bezier_points_fillet", text="Fillet")
+
if len(vertex) == 2 and abs(selected[0] - selected[1]) == 1:
layout = self.layout
row = layout.row()
- simple_divide = row.operator("curve.bezier_spline_divide", text='Divide')
+ row.operator("curve.bezier_spline_divide", text="Divide")
+
# ------------------------------------------------------------
# location update
-
def StartLocationUpdate(self, context):
bpy.context.scene.cursor_location = self.Simple_startlocation
-
return
+
# ------------------------------------------------------------
# Add properties to objects
+class SimpleVariables(PropertyGroup):
-def SimpleVariables():
+ Simple = BoolProperty()
+ Simple_Change = BoolProperty()
- bpy.types.Object.Simple = bpy.props.BoolProperty()
- bpy.types.Object.Simple_Change = bpy.props.BoolProperty()
# general properties
- Types = [('Point', 'Point', 'Point'),
- ('Line', 'Line', 'Line'),
- ('Distance', 'Distance', 'Distance'),
- ('Angle', 'Angle', 'Angle'),
- ('Circle', 'Circle', 'Circle'),
- ('Ellipse', 'Ellipse', 'Ellipse'),
- ('Arc', 'Arc', 'Arc'),
- ('Sector', 'Sector', 'Sector'),
- ('Segment', 'Segment', 'Segment'),
- ('Rectangle', 'Rectangle', 'Rectangle'),
- ('Rhomb', 'Rhomb', 'Rhomb'),
- ('Polygon', 'Polygon', 'Polygon'),
- ('Polygon_ab', 'Polygon_ab', 'Polygon_ab'),
- ('Trapezoid', 'Trapezoid', 'Trapezoid')]
- bpy.types.Object.Simple_Type = bpy.props.EnumProperty(name="Type",
- description="Form of Curve to create",
- items=Types)
-
+ Types = [('Point', "Point", "Construct a Point"),
+ ('Line', "Line", "Construct a Line"),
+ ('Distance', "Distance", "Contruct a two point Distance"),
+ ('Angle', "Angle", "Construct an Angle"),
+ ('Circle', "Circle", "Construct a Circle"),
+ ('Ellipse', "Ellipse", "Construct an Ellipse"),
+ ('Arc', "Arc", "Construct an Arc"),
+ ('Sector', "Sector", "Construct a Sector"),
+ ('Segment', "Segment", "Construct a Segment"),
+ ('Rectangle', "Rectangle", "Construct a Rectangle"),
+ ('Rhomb', "Rhomb", "Construct a Rhomb"),
+ ('Polygon', "Polygon", "Construct a Polygon"),
+ ('Polygon_ab', "Polygon ab", "Construct a Polygon ab"),
+ ('Trapezoid', "Trapezoid", "Construct a Trapezoid")
+ ]
+ Simple_Type = EnumProperty(
+ name="Type",
+ description="Form of Curve to create",
+ items=Types
+ )
# Line properties
- bpy.types.Object.Simple_startlocation = bpy.props.FloatVectorProperty(name="Start location",
- description="Start location",
- default=(0.0, 0.0, 0.0),
- subtype='TRANSLATION',
- update=StartLocationUpdate)
- bpy.types.Object.Simple_endlocation = bpy.props.FloatVectorProperty(name="End location",
- description="End location",
- default=(2.0, 2.0, 2.0),
- subtype='TRANSLATION')
- bpy.types.Object.Simple_rotation_euler = bpy.props.FloatVectorProperty(name="Rotation",
- description="Rotation",
- default=(0.0, 0.0, 0.0),
- subtype='EULER')
-
+ Simple_startlocation = FloatVectorProperty(
+ name="Start location",
+ description="Start location",
+ default=(0.0, 0.0, 0.0),
+ subtype='TRANSLATION',
+ update=StartLocationUpdate
+ )
+ Simple_endlocation = FloatVectorProperty(
+ name="End location",
+ description="End location",
+ default=(2.0, 2.0, 2.0),
+ subtype='TRANSLATION'
+ )
+ Simple_rotation_euler = FloatVectorProperty(
+ name="Rotation",
+ description="Rotation",
+ default=(0.0, 0.0, 0.0),
+ subtype='EULER'
+ )
# Trapezoid properties
- bpy.types.Object.Simple_a = bpy.props.FloatProperty(name="a",
- default=2.0,
- min=0.0, soft_min=0.0,
- unit='LENGTH',
- description="a")
- bpy.types.Object.Simple_b = bpy.props.FloatProperty(name="b",
- default=1.0,
- min=0.0, soft_min=0.0,
- unit='LENGTH',
- description="b")
- bpy.types.Object.Simple_h = bpy.props.FloatProperty(name="h",
- default=1.0,
- unit='LENGTH',
- description="h")
-
- bpy.types.Object.Simple_angle = bpy.props.FloatProperty(name="Angle",
- default=45.0,
- description="Angle")
- bpy.types.Object.Simple_startangle = bpy.props.FloatProperty(name="Start angle",
- default=0.0,
- min=-360.0, soft_min=-360.0,
- max=360.0, soft_max=360.0,
- description="Start angle")
- bpy.types.Object.Simple_endangle = bpy.props.FloatProperty(name="End angle",
- default=45.0,
- min=-360.0, soft_min=-360.0,
- max=360.0, soft_max=360.0,
- description="End angle")
-
- bpy.types.Object.Simple_sides = bpy.props.IntProperty(name="sides",
- default=3,
- min=3, soft_min=3,
- description="sides")
-
- bpy.types.Object.Simple_radius = bpy.props.FloatProperty(name="radius",
- default=1.0,
- min=0.0, soft_min=0.0,
- unit='LENGTH',
- description="radius")
-
- bpy.types.Object.Simple_center = bpy.props.BoolProperty(name="Length center",
- default=True,
- description="Length center")
-
+ Simple_a = FloatProperty(
+ name="Side a",
+ default=2.0,
+ min=0.0, soft_min=0.0,
+ unit='LENGTH',
+ description="a side Value"
+ )
+ Simple_b = FloatProperty(
+ name="Side b",
+ default=1.0,
+ min=0.0, soft_min=0.0,
+ unit='LENGTH',
+ description="b side Value"
+ )
+ Simple_h = FloatProperty(
+ name="Height",
+ default=1.0,
+ unit='LENGTH',
+ description="Height of the Trapezoid - distance between a and b"
+ )
+ Simple_angle = FloatProperty(
+ name="Angle",
+ default=45.0,
+ description="Angle"
+ )
+ Simple_startangle = FloatProperty(
+ name="Start angle",
+ default=0.0,
+ min=-360.0, soft_min=-360.0,
+ max=360.0, soft_max=360.0,
+ description="Start angle"
+ )
+ Simple_endangle = FloatProperty(
+ name="End angle",
+ default=45.0,
+ min=-360.0, soft_min=-360.0,
+ max=360.0, soft_max=360.0,
+ description="End angle"
+ )
+ Simple_sides = IntProperty(
+ name="Sides",
+ default=3,
+ min=3, soft_min=3,
+ description="Number of Sides"
+ )
+ Simple_radius = FloatProperty(
+ name="Radius",
+ default=1.0,
+ min=0.0, soft_min=0.0,
+ unit='LENGTH',
+ description="Radius"
+ )
+ Simple_center = BoolProperty(
+ name="Length center",
+ default=True,
+ description="Length center"
+ )
# Rectangle properties
- bpy.types.Object.Simple_width = bpy.props.FloatProperty(name="Width",
- default=2.0,
- min=0.0, soft_min=0.0,
- unit='LENGTH',
- description="Width")
- bpy.types.Object.Simple_length = bpy.props.FloatProperty(name="Length",
- default=2.0,
- min=0.0, soft_min=0.0,
- unit='LENGTH',
- description="Length")
- bpy.types.Object.Simple_rounded = bpy.props.FloatProperty(name="Rounded",
- default=0.0,
- unit='LENGTH',
- description="Rounded")
-
-################################################################################
-##### REGISTER #####
-
-
-class INFO_MT_simple_menu(bpy.types.Menu):
- # Define the "Extras" menu
+ Simple_width = FloatProperty(
+ name="Width",
+ default=2.0,
+ min=0.0, soft_min=0.0,
+ unit='LENGTH',
+ description="Width"
+ )
+ Simple_length = FloatProperty(
+ name="Length",
+ default=2.0,
+ min=0.0, soft_min=0.0,
+ unit='LENGTH',
+ description="Length"
+ )
+ Simple_rounded = FloatProperty(
+ name="Rounded",
+ default=0.0,
+ unit='LENGTH',
+ description="Rounded corners"
+ )
+
+
+class INFO_MT_simple_menu(Menu):
bl_idname = "INFO_MT_simple_menu"
bl_label = "2D Objects"
def draw(self, context):
self.layout.operator_context = 'INVOKE_REGION_WIN'
- oper2 = self.layout.operator(Simple.bl_idname, text="Point", icon="MOD_CURVE")
+ oper1 = self.layout.operator(Simple.bl_idname, text="Angle", icon="MOD_CURVE")
+ oper1.Simple_Change = False
+ oper1.Simple_Type = "Angle"
+
+ oper2 = self.layout.operator(Simple.bl_idname, text="Arc", icon="MOD_CURVE")
oper2.Simple_Change = False
- oper2.Simple_Type = "Point"
+ oper2.Simple_Type = "Arc"
- oper3 = self.layout.operator(Simple.bl_idname, text="Line", icon="MOD_CURVE")
+ oper3 = self.layout.operator(Simple.bl_idname, text="Circle", icon="MOD_CURVE")
oper3.Simple_Change = False
- oper3.Simple_Type = "Line"
+ oper3.Simple_Type = "Circle"
oper4 = self.layout.operator(Simple.bl_idname, text="Distance", icon="MOD_CURVE")
oper4.Simple_Change = False
oper4.Simple_Type = "Distance"
- oper5 = self.layout.operator(Simple.bl_idname, text="Angle", icon="MOD_CURVE")
+ oper5 = self.layout.operator(Simple.bl_idname, text="Ellipse", icon="MOD_CURVE")
oper5.Simple_Change = False
- oper5.Simple_Type = "Angle"
+ oper5.Simple_Type = "Ellipse"
- oper6 = self.layout.operator(Simple.bl_idname, text="Circle", icon="MOD_CURVE")
+ oper6 = self.layout.operator(Simple.bl_idname, text="Line", icon="MOD_CURVE")
oper6.Simple_Change = False
- oper6.Simple_Type = "Circle"
+ oper6.Simple_Type = "Line"
- oper7 = self.layout.operator(Simple.bl_idname, text="Ellipse", icon="MOD_CURVE")
+ oper7 = self.layout.operator(Simple.bl_idname, text="Point", icon="MOD_CURVE")
oper7.Simple_Change = False
- oper7.Simple_Type = "Ellipse"
+ oper7.Simple_Type = "Point"
- oper8 = self.layout.operator(Simple.bl_idname, text="Arc", icon="MOD_CURVE")
+ oper8 = self.layout.operator(Simple.bl_idname, text="Polygon", icon="MOD_CURVE")
oper8.Simple_Change = False
- oper8.Simple_Type = "Arc"
+ oper8.Simple_Type = "Polygon"
- oper9 = self.layout.operator(Simple.bl_idname, text="Sector", icon="MOD_CURVE")
+ oper9 = self.layout.operator(Simple.bl_idname, text="Polygon ab", icon="MOD_CURVE")
oper9.Simple_Change = False
- oper9.Simple_Type = "Sector"
+ oper9.Simple_Type = "Polygon_ab"
- oper10 = self.layout.operator(Simple.bl_idname, text="Segment", icon="MOD_CURVE")
+ oper10 = self.layout.operator(Simple.bl_idname, text="Rectangle", icon="MOD_CURVE")
oper10.Simple_Change = False
- oper10.Simple_Type = "Segment"
+ oper10.Simple_Type = "Rectangle"
- oper11 = self.layout.operator(Simple.bl_idname, text="Rectangle", icon="MOD_CURVE")
+ oper11 = self.layout.operator(Simple.bl_idname, text="Rhomb", icon="MOD_CURVE")
oper11.Simple_Change = False
- oper11.Simple_Type = "Rectangle"
+ oper11.Simple_Type = "Rhomb"
- oper12 = self.layout.operator(Simple.bl_idname, text="Rhomb", icon="MOD_CURVE")
+ oper12 = self.layout.operator(Simple.bl_idname, text="Sector", icon="MOD_CURVE")
oper12.Simple_Change = False
- oper12.Simple_Type = "Rhomb"
+ oper12.Simple_Type = "Sector"
- oper13 = self.layout.operator(Simple.bl_idname, text="Polygon", icon="MOD_CURVE")
+ oper13 = self.layout.operator(Simple.bl_idname, text="Segment", icon="MOD_CURVE")
oper13.Simple_Change = False
- oper13.Simple_Type = "Polygon"
+ oper13.Simple_Type = "Segment"
- oper14 = self.layout.operator(Simple.bl_idname, text="Polygon_ab", icon="MOD_CURVE")
+ oper14 = self.layout.operator(Simple.bl_idname, text="Trapezoid", icon="MOD_CURVE")
oper14.Simple_Change = False
- oper14.Simple_Type = "Polygon_ab"
+ oper14.Simple_Type = "Trapezoid"
- oper15 = self.layout.operator(Simple.bl_idname, text="Trapezoid", icon="MOD_CURVE")
- oper15.Simple_Change = False
- oper15.Simple_Type = "Trapezoid"
+# Register
def Simple_button(self, context):
layout = self.layout
layout.separator()
- oper11 = self.layout.operator(Simple.bl_idname, text="Rectangle", icon="MOD_CURVE")
- oper11.Simple_Change = False
- oper11.Simple_Type = "Rectangle"
-
self.layout.menu("INFO_MT_simple_menu", icon="MOD_CURVE")
@@ -1592,10 +1723,11 @@ def register():
bpy.utils.register_class(SimplePanel)
bpy.utils.register_class(SimpleEdit)
bpy.utils.register_class(INFO_MT_simple_menu)
+ bpy.utils.register_class(SimpleVariables)
bpy.types.INFO_MT_curve_add.append(Simple_button)
- SimpleVariables()
+ bpy.types.Object.s_curve = PointerProperty(type=SimpleVariables)
def unregister():
@@ -1605,8 +1737,11 @@ def unregister():
bpy.utils.unregister_class(SimplePanel)
bpy.utils.unregister_class(SimpleEdit)
bpy.utils.unregister_class(INFO_MT_simple_menu)
+ bpy.utils.unregister_class(SimpleVariables)
bpy.types.INFO_MT_curve_add.remove(Simple_button)
+ del bpy.types.Object.s_curve
+
if __name__ == "__main__":
register()