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:
authorBrendon Murphy <meta.androcto1@gmail.com>2015-05-04 03:45:11 +0300
committerBrendon Murphy <meta.androcto1@gmail.com>2015-05-04 03:46:42 +0300
commit487aa3cbf094106a4ae97177dc3ac2617e758025 (patch)
treefa75d3d528d41b6b33f55f1df93bad7005abd64a
parent93b9836e0ba6c634a4531622eba86fd501a83ba5 (diff)
Final commit Mesh Extra Objects 2.75
Updated Authors, added built in xyz math object presets
-rw-r--r--add_mesh_extra_objects/__init__.py6
-rw-r--r--presets/operator/mesh.primitive_round_cube_add/Capsule.py8
-rw-r--r--presets/operator/mesh.primitive_round_cube_add/Clay_Bar.py8
-rw-r--r--presets/operator/mesh.primitive_round_cube_add/Cube.py9
-rw-r--r--presets/operator/mesh.primitive_round_cube_add/Grid_3D.py7
-rw-r--r--presets/operator/mesh.primitive_round_cube_add/Octahedron.py9
-rw-r--r--presets/operator/mesh.primitive_round_cube_add/Quadsphere.py8
-rw-r--r--presets/operator/mesh.primitive_round_cube_add/Rounded_Cube.py8
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/bonbon.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/boy.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/catalan.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/catenoid.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/clifford_torus.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/cochlea.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/cosinus.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/dini.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/enneper.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/helicoidal.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/helix.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/hexahedron.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/hyperhelicoidal.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/klein.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/moebius.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/pseudo_catenoid.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/pseudosphere.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/ridged_torus.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/shell.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/sine.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/snake.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/sterosphere.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/torus.py22
-rw-r--r--presets/operator/mesh.primitive_xyz_function_surface/twisted_torus.py22
32 files changed, 589 insertions, 2 deletions
diff --git a/add_mesh_extra_objects/__init__.py b/add_mesh_extra_objects/__init__.py
index 9cd18128..e15054cb 100644
--- a/add_mesh_extra_objects/__init__.py
+++ b/add_mesh_extra_objects/__init__.py
@@ -16,13 +16,15 @@
#
# ##### END GPL LICENSE BLOCK #####
# Contributed to by
-# Pontiac, Fourmadmen, varkenvarken, tuga3d, meta-androcto, metalliandy, dreampainter, cotejrp1#
+# Pontiac, Fourmadmen, varkenvarken, tuga3d, meta-androcto, metalliandy, dreampainter, cotejrp1 #
+# liero, Kayo Phoenix, sugiany, dommetysk, Phymec, Anthony D'Agostino, Pablo Vazquez, Richard Wilks #
+# xyz presets by elfnor
bl_info = {
"name": "Extra Objects",
"author": "Multiple Authors",
"version": (0, 3, 0),
- "blender": (2, 74, 0),
+ "blender": (2, 75, 0),
"location": "View3D > Add > Mesh",
"description": "Add extra mesh object types",
"warning": "",
diff --git a/presets/operator/mesh.primitive_round_cube_add/Capsule.py b/presets/operator/mesh.primitive_round_cube_add/Capsule.py
new file mode 100644
index 00000000..05122dfb
--- /dev/null
+++ b/presets/operator/mesh.primitive_round_cube_add/Capsule.py
@@ -0,0 +1,8 @@
+import bpy
+op = bpy.context.active_operator
+
+op.radius = 0.5
+op.arc_div = 8
+op.lin_div = 0
+op.size = (0.0, 0.0, 3.0)
+op.div_type = 'CORNERS' \ No newline at end of file
diff --git a/presets/operator/mesh.primitive_round_cube_add/Clay_Bar.py b/presets/operator/mesh.primitive_round_cube_add/Clay_Bar.py
new file mode 100644
index 00000000..0f56d050
--- /dev/null
+++ b/presets/operator/mesh.primitive_round_cube_add/Clay_Bar.py
@@ -0,0 +1,8 @@
+import bpy
+op = bpy.context.active_operator
+
+op.radius = 0.4
+op.arc_div = 8
+op.lin_div = 0
+op.size = (1.5, 3.0, 1.0)
+op.div_type = 'ALL' \ No newline at end of file
diff --git a/presets/operator/mesh.primitive_round_cube_add/Cube.py b/presets/operator/mesh.primitive_round_cube_add/Cube.py
new file mode 100644
index 00000000..c5b07819
--- /dev/null
+++ b/presets/operator/mesh.primitive_round_cube_add/Cube.py
@@ -0,0 +1,9 @@
+import bpy
+op = bpy.context.active_operator
+
+op.radius = 0.0
+op.arc_div = 1
+op.lin_div = 0
+op.size = (2.0, 2.0, 2.0)
+op.div_type = 'CORNERS'
+op.odd_axis_align = False \ No newline at end of file
diff --git a/presets/operator/mesh.primitive_round_cube_add/Grid_3D.py b/presets/operator/mesh.primitive_round_cube_add/Grid_3D.py
new file mode 100644
index 00000000..d0519f4f
--- /dev/null
+++ b/presets/operator/mesh.primitive_round_cube_add/Grid_3D.py
@@ -0,0 +1,7 @@
+import bpy
+op = bpy.context.active_operator
+
+op.radius = 0
+op.size = (2, 2, 2)
+op.lin_div = 5
+op.div_type = 'ALL' \ No newline at end of file
diff --git a/presets/operator/mesh.primitive_round_cube_add/Octahedron.py b/presets/operator/mesh.primitive_round_cube_add/Octahedron.py
new file mode 100644
index 00000000..b795e846
--- /dev/null
+++ b/presets/operator/mesh.primitive_round_cube_add/Octahedron.py
@@ -0,0 +1,9 @@
+import bpy
+op = bpy.context.active_operator
+
+op.radius = 1.0
+op.arc_div = 1
+op.lin_div = 0
+op.size = (0.0, 0.0, 0.0)
+op.div_type = 'CORNERS'
+op.odd_axis_align = True \ No newline at end of file
diff --git a/presets/operator/mesh.primitive_round_cube_add/Quadsphere.py b/presets/operator/mesh.primitive_round_cube_add/Quadsphere.py
new file mode 100644
index 00000000..3e777d2e
--- /dev/null
+++ b/presets/operator/mesh.primitive_round_cube_add/Quadsphere.py
@@ -0,0 +1,8 @@
+import bpy
+op = bpy.context.active_operator
+
+op.radius = 1.0
+op.arc_div = 8
+op.lin_div = 0
+op.size = (0.0, 0.0, 0.0)
+op.div_type = 'CORNERS' \ No newline at end of file
diff --git a/presets/operator/mesh.primitive_round_cube_add/Rounded_Cube.py b/presets/operator/mesh.primitive_round_cube_add/Rounded_Cube.py
new file mode 100644
index 00000000..1a892ddf
--- /dev/null
+++ b/presets/operator/mesh.primitive_round_cube_add/Rounded_Cube.py
@@ -0,0 +1,8 @@
+import bpy
+op = bpy.context.active_operator
+
+op.radius = 0.25
+op.arc_div = 8
+op.lin_div = 0
+op.size = (2.0, 2.0, 2.0)
+op.div_type = 'CORNERS' \ No newline at end of file
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/bonbon.py b/presets/operator/mesh.primitive_xyz_function_surface/bonbon.py
new file mode 100644
index 00000000..b464e762
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/bonbon.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = 'u'
+op.y_eq = 'cos(u)*sin(v)'
+op.z_eq = 'cos(u)*cos(v)'
+op.range_u_min = 0.0
+op.range_u_max = 6.2831854820251465
+op.range_u_step = 32
+op.wrap_u = False
+op.range_v_min = 0.0
+op.range_v_max = 6.2831854820251465
+op.range_v_step = 128
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/boy.py b/presets/operator/mesh.primitive_xyz_function_surface/boy.py
new file mode 100644
index 00000000..25378830
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/boy.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = '2/3* (cos(u)* cos(2*v) + sqrt(2)* sin(u)* cos(v))* cos(u) / (sqrt(2) - sin(2*u)* sin(3*v))'
+op.y_eq = 'sqrt(2)* cos(u)* cos(u) / (sqrt(2) - sin(2*u)* sin(3*v))'
+op.z_eq = '2/3* (cos(u)* sin(2*v) - sqrt(2)* sin(u)* sin(v))* cos(u) / (sqrt(2) - sin(2*u)* sin(3*v))'
+op.range_u_min = 0.0
+op.range_u_max = 3.1415927410125732
+op.range_u_step = 32
+op.wrap_u = False
+op.range_v_min = 0.0
+op.range_v_max = 3.1415927410125732
+op.range_v_step = 64
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/catalan.py b/presets/operator/mesh.primitive_xyz_function_surface/catalan.py
new file mode 100644
index 00000000..8c876758
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/catalan.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = 'u-sin(u)*cosh(v)'
+op.y_eq = '4*sin(1/2*u)*sinh(v/2)'
+op.z_eq = '1-cos(u)*cosh(v)'
+op.range_u_min = -3.1415927410125732
+op.range_u_max = 9.42477798461914
+op.range_u_step = 32
+op.wrap_u = False
+op.range_v_min = -2.0
+op.range_v_max = 2.0
+op.range_v_step = 128
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/catenoid.py b/presets/operator/mesh.primitive_xyz_function_surface/catenoid.py
new file mode 100644
index 00000000..98e12bad
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/catenoid.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = '2*cosh(v/2)*cos(u)'
+op.y_eq = 'v'
+op.z_eq = '2*cosh(v/2)*sin(u)'
+op.range_u_min = -3.1415927410125732
+op.range_u_max = 3.1415927410125732
+op.range_u_step = 32
+op.wrap_u = True
+op.range_v_min = -3.1415927410125732
+op.range_v_max = 3.1415927410125732
+op.range_v_step = 128
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/clifford_torus.py b/presets/operator/mesh.primitive_xyz_function_surface/clifford_torus.py
new file mode 100644
index 00000000..7e14f555
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/clifford_torus.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = 'cos(u+v)/(sqrt(2.)+cos(v-u))'
+op.y_eq = 'sin(v-u)/(sqrt(2.)+cos(v-u))'
+op.z_eq = 'sin(u+v)/(sqrt(2.)+cos(v-u))'
+op.range_u_min = 0.0
+op.range_u_max = 3.140000104904175
+op.range_u_step = 8
+op.wrap_u = False
+op.range_v_min = 0.0
+op.range_v_max = 6.2831854820251465
+op.range_v_step = 128
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/cochlea.py b/presets/operator/mesh.primitive_xyz_function_surface/cochlea.py
new file mode 100644
index 00000000..0e9ed68c
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/cochlea.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = 'v*cos(u)'
+op.y_eq = 'v*sin(u)'
+op.z_eq = '0.4*u'
+op.range_u_min = 0.0
+op.range_u_max = 12.566370964050293
+op.range_u_step = 32
+op.wrap_u = False
+op.range_v_min = 0.0
+op.range_v_max = 2.0
+op.range_v_step = 32
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/cosinus.py b/presets/operator/mesh.primitive_xyz_function_surface/cosinus.py
new file mode 100644
index 00000000..a8b3e5d4
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/cosinus.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = 'u'
+op.y_eq = 'sin(pi*((u)**2+(v)**2))/2'
+op.z_eq = 'v'
+op.range_u_min = -1.0
+op.range_u_max = 1.0
+op.range_u_step = 32
+op.wrap_u = False
+op.range_v_min = -1.0
+op.range_v_max = 1.0
+op.range_v_step = 128
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/dini.py b/presets/operator/mesh.primitive_xyz_function_surface/dini.py
new file mode 100644
index 00000000..aef4591c
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/dini.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = 'a*cos(u)*sin(v)'
+op.y_eq = 'a*sin(u)*sin(v)'
+op.z_eq = '(cos(v)+log(tan(v/2)+1e-2)) + b*u'
+op.range_u_min = 0.0
+op.range_u_max = 12.566370964050293
+op.range_u_step = 128
+op.wrap_u = False
+op.range_v_min = 0.0
+op.range_v_max = 2.0
+op.range_v_step = 128
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '1'
+op.b_eq = '0.2'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/enneper.py b/presets/operator/mesh.primitive_xyz_function_surface/enneper.py
new file mode 100644
index 00000000..ebeb4d7e
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/enneper.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = 'u -u**3/3 + u*v**2'
+op.y_eq = 'u**2 - v**2'
+op.z_eq = 'v -v**3/3 + v*u**2'
+op.range_u_min = -2.0
+op.range_u_max = 2.0
+op.range_u_step = 32
+op.wrap_u = False
+op.range_v_min = -2.0
+op.range_v_max = 2.0
+op.range_v_step = 32
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/helicoidal.py b/presets/operator/mesh.primitive_xyz_function_surface/helicoidal.py
new file mode 100644
index 00000000..d6c4bf1a
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/helicoidal.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = 'sinh(v)*sin(u)'
+op.y_eq = '3*u'
+op.z_eq = '-sinh(v)*cos(u)'
+op.range_u_min = -3.1415927410125732
+op.range_u_max = 3.1415927410125732
+op.range_u_step = 32
+op.wrap_u = False
+op.range_v_min = -3.1415927410125732
+op.range_v_max = 3.1415927410125732
+op.range_v_step = 32
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/helix.py b/presets/operator/mesh.primitive_xyz_function_surface/helix.py
new file mode 100644
index 00000000..ba22cace
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/helix.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = '(1-0.1*cos(v))*cos(u)'
+op.y_eq = '0.1*(sin(v) + u/1.7 -10)'
+op.z_eq = '(1-0.1*cos(v))*sin(u)'
+op.range_u_min = 0.0
+op.range_u_max = 12.566370964050293
+op.range_u_step = 128
+op.wrap_u = False
+op.range_v_min = 0.0
+op.range_v_max = 6.2831854820251465
+op.range_v_step = 128
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/hexahedron.py b/presets/operator/mesh.primitive_xyz_function_surface/hexahedron.py
new file mode 100644
index 00000000..d532eb6c
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/hexahedron.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = 'cos(v)**3*cos(u)**3'
+op.y_eq = 'sin(u)**3'
+op.z_eq = 'sin(v)**3*cos(u)**3'
+op.range_u_min = -1.2999999523162842
+op.range_u_max = 1.2999999523162842
+op.range_u_step = 32
+op.wrap_u = False
+op.range_v_min = 0.0
+op.range_v_max = 6.2831854820251465
+op.range_v_step = 32
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/hyperhelicoidal.py b/presets/operator/mesh.primitive_xyz_function_surface/hyperhelicoidal.py
new file mode 100644
index 00000000..74feb2ce
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/hyperhelicoidal.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = '(sinh(v)*cos(3*u))/(1+cosh(u)*cosh(v))'
+op.y_eq = '(cosh(v)*sinh(u))/(1+cosh(u)*cosh(v))'
+op.z_eq = '(sinh(v)*sin(3*u))/(1+cosh(u)*cosh(v))'
+op.range_u_min = -3.1415927410125732
+op.range_u_max = 3.1415927410125732
+op.range_u_step = 32
+op.wrap_u = False
+op.range_v_min = -3.1415927410125732
+op.range_v_max = 3.1415927410125732
+op.range_v_step = 128
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/klein.py b/presets/operator/mesh.primitive_xyz_function_surface/klein.py
new file mode 100644
index 00000000..cc568d77
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/klein.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = '(3*(1+sin(v)) + 2*(1-cos(v)/2)*cos(u))*cos(v)'
+op.y_eq = '(4+2*(1-cos(v)/2)*cos(u))*sin(v)'
+op.z_eq = '-2*(1-cos(v)/2)*sin(u)'
+op.range_u_min = 0.0
+op.range_u_max = 6.2831854820251465
+op.range_u_step = 32
+op.wrap_u = True
+op.range_v_min = 0.0
+op.range_v_max = 6.2831854820251465
+op.range_v_step = 128
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/moebius.py b/presets/operator/mesh.primitive_xyz_function_surface/moebius.py
new file mode 100644
index 00000000..020ddbc3
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/moebius.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = 'cos(v)+u*cos(v/2)*cos(v)'
+op.y_eq = 'u*sin(v/2)'
+op.z_eq = 'sin(v)+u*cos(v/2)*sin(v)'
+op.range_u_min = -0.4000000059604645
+op.range_u_max = 0.4000000059604645
+op.range_u_step = 32
+op.wrap_u = False
+op.range_v_min = 0.0
+op.range_v_max = 6.2831854820251465
+op.range_v_step = 32
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/pseudo_catenoid.py b/presets/operator/mesh.primitive_xyz_function_surface/pseudo_catenoid.py
new file mode 100644
index 00000000..b21df383
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/pseudo_catenoid.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = '2.2*(2*cosh(v/2)*cos(u)) '
+op.y_eq = '1.51166 * (2*cosh(v/2)*sin(u) * sin((2.2*(2*cosh(v/2)*cos(u)) - -11.0404)*2*pi*1/22.0513) + 1.8*(v) * cos((2.2*(2*cosh(v/2)*cos(u)) - -11.0404)*2*pi*1/22.0513)) '
+op.z_eq = '1.51166 * (2*cosh(v/2)*sin(u) * cos((2.2*(2*cosh(v/2)*cos(u)) - -11.0404)*2*pi*1/22.0513) - 1.8*(v) * sin((2.2*(2*cosh(v/2)*cos(u)) - -11.0404)*2*pi*1/22.0513)) '
+op.range_u_min = -3.1415927410125732
+op.range_u_max = 3.1415927410125732
+op.range_u_step = 32
+op.wrap_u = False
+op.range_v_min = -3.1415927410125732
+op.range_v_max = 3.1415927410125732
+op.range_v_step = 128
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/pseudosphere.py b/presets/operator/mesh.primitive_xyz_function_surface/pseudosphere.py
new file mode 100644
index 00000000..2bcb3730
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/pseudosphere.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = 'cos(u)*cos(v)+sin((sin(u)+1)*2*pi) '
+op.y_eq = '4*sin(u) '
+op.z_eq = 'cos(u)*sin(v)+cos((sin(u)+1)*2*pi) '
+op.range_u_min = -1.5707963705062866
+op.range_u_max = 1.5707963705062866
+op.range_u_step = 32
+op.wrap_u = False
+op.range_v_min = 0.0
+op.range_v_max = 6.2831854820251465
+op.range_v_step = 128
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/ridged_torus.py b/presets/operator/mesh.primitive_xyz_function_surface/ridged_torus.py
new file mode 100644
index 00000000..96cddfc4
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/ridged_torus.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = 'a*cos(u)+(b*sin(f*u)+c)*cos(u)*cos(v)'
+op.y_eq = 'a*sin(u)+(b*sin(f*u)+c)*sin(u)*cos(v)'
+op.z_eq = '(b*sin(f*u)+c)*sin(v)'
+op.range_u_min = 0.0
+op.range_u_max = 6.2831854820251465
+op.range_u_step = 128
+op.wrap_u = False
+op.range_v_min = 0.0
+op.range_v_max = 6.2831854820251465
+op.range_v_step = 32
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '5'
+op.b_eq = '0.6'
+op.c_eq = '2'
+op.f_eq = '10'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/shell.py b/presets/operator/mesh.primitive_xyz_function_surface/shell.py
new file mode 100644
index 00000000..d2437bb8
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/shell.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = 'cos(v)*(1+cos(u))*sin(v/8)'
+op.y_eq = 'sin(u)*sin(v/8)+cos(v/8)*1.5'
+op.z_eq = 'sin(v)*(1+cos(u))*sin(v/8)'
+op.range_u_min = 0.0
+op.range_u_max = 6.2831854820251465
+op.range_u_step = 32
+op.wrap_u = True
+op.range_v_min = 0.0
+op.range_v_max = 12.566370964050293
+op.range_v_step = 128
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/sine.py b/presets/operator/mesh.primitive_xyz_function_surface/sine.py
new file mode 100644
index 00000000..d6b9fa5d
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/sine.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = 'sin(u)'
+op.y_eq = 'sin(v)'
+op.z_eq = 'sin(u+v)'
+op.range_u_min = 0.0
+op.range_u_max = 6.2831854820251465
+op.range_u_step = 128
+op.wrap_u = True
+op.range_v_min = 0.0
+op.range_v_max = 6.2831854820251465
+op.range_v_step = 128
+op.wrap_v = True
+op.close_v = True
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/snake.py b/presets/operator/mesh.primitive_xyz_function_surface/snake.py
new file mode 100644
index 00000000..b2c42692
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/snake.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = '1.2*(1 -v/(2*pi))*cos(3*v)*(1 + cos(u)) + 3*cos(3*v)'
+op.y_eq = '9*v/(2*pi) + 1.2*(1 - v/(2*pi))*sin(u)'
+op.z_eq = '1.2*(1 -v/(2*pi))*sin(3*v)*(1 + cos(u)) + 3*sin(3*v)'
+op.range_u_min = 0.0
+op.range_u_max = 6.2831854820251465
+op.range_u_step = 32
+op.wrap_u = False
+op.range_v_min = 0.0
+op.range_v_max = 6.2831854820251465
+op.range_v_step = 64
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/sterosphere.py b/presets/operator/mesh.primitive_xyz_function_surface/sterosphere.py
new file mode 100644
index 00000000..366b81cf
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/sterosphere.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = '2.*u/(u*u+v*v+1.)'
+op.y_eq = '(u*u+v*v-1.)/(u*u+v*v+1.)'
+op.z_eq = '2.*v/(u*u+v*v+1.)'
+op.range_u_min = -2.0
+op.range_u_max = 2.0
+op.range_u_step = 32
+op.wrap_u = False
+op.range_v_min = -2.0
+op.range_v_max = 2.0
+op.range_v_step = 32
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/torus.py b/presets/operator/mesh.primitive_xyz_function_surface/torus.py
new file mode 100644
index 00000000..82b59231
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/torus.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = '(1+0.5*cos(u))*cos(v)'
+op.y_eq = '0.5*sin(u)'
+op.z_eq = '(1+0.5*cos(u))*sin(v)'
+op.range_u_min = 0.0
+op.range_u_max = 6.2831854820251465
+op.range_u_step = 32
+op.wrap_u = False
+op.range_v_min = 0.0
+op.range_v_max = 6.2831854820251465
+op.range_v_step = 128
+op.wrap_v = False
+op.close_v = False
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'
diff --git a/presets/operator/mesh.primitive_xyz_function_surface/twisted_torus.py b/presets/operator/mesh.primitive_xyz_function_surface/twisted_torus.py
new file mode 100644
index 00000000..b94eff60
--- /dev/null
+++ b/presets/operator/mesh.primitive_xyz_function_surface/twisted_torus.py
@@ -0,0 +1,22 @@
+import bpy
+op = bpy.context.active_operator
+
+op.x_eq = 'cos(u)*(6-(5./4. + sin(3*v))*sin(v-3*u))'
+op.y_eq = '(6-(5./4. + sin(3*v))*sin(v-3*u))*sin(u)'
+op.z_eq = '-cos(v-3*u)*(5./4.+sin(3*v))'
+op.range_u_min = 0.0
+op.range_u_max = 6.2831854820251465
+op.range_u_step = 128
+op.wrap_u = True
+op.range_v_min = 0.0
+op.range_v_max = 6.2831854820251465
+op.range_v_step = 32
+op.wrap_v = True
+op.close_v = True
+op.n_eq = 1
+op.a_eq = '0'
+op.b_eq = '0'
+op.c_eq = '0'
+op.f_eq = '0'
+op.g_eq = '0'
+op.h_eq = '0'