cam.curvecamequation#

BlenderCAM ‘curvecamequation.py’ © 2021, 2022 Alain Pelletier

Operators to create a number of geometric shapes with curves.

Classes#

CamSineCurve

Object Sine

CamLissajousCurve

Lissajous

CamHypotrochoidCurve

Hypotrochoid

CamCustomCurve

Object Custom Curve

Functions#

triangle(i, T, A)

ssine(A, T[, dc_offset, phase_shift])

Module Contents#

class CamSineCurve[source]#

Bases: bpy.types.Operator

Object Sine

bl_idname = 'object.sine'[source]#
bl_label = 'Periodic Wave'[source]#
bl_options[source]#
axis: EnumProperty(name='Displacement Axis', items='XY', 'Y to displace X axis', 'Y constant; X sine displacement', 'YX', 'X to displace Y axis', 'X constant; Y sine displacement', 'ZX', 'X to displace Z axis', 'X constant; Y sine displacement', 'ZY', 'Y to displace Z axis', 'X constant; Y sine displacement', default='ZX')[source]#
wave: EnumProperty(name='Wave', items='sine', 'Sine Wave', 'Sine Wave', 'triangle', 'Triangle Wave', 'triangle wave', 'cycloid', 'Cycloid', 'Sine wave rectification', 'invcycloid', 'Inverse Cycloid', 'Sine wave rectification', default='sine')[source]#
amplitude: FloatProperty(name='Amplitude', default=0.01, min=0, max=10, precision=4, unit='LENGTH')[source]#
period: FloatProperty(name='Period', default=0.5, min=0.001, max=100, precision=4, unit='LENGTH')[source]#
beatperiod: FloatProperty(name='Beat Period Offset', default=0.0, min=0.0, max=100, precision=4, unit='LENGTH')[source]#
shift: FloatProperty(name='Phase Shift', default=0, min=-360, max=360, precision=4, unit='ROTATION')[source]#
offset: FloatProperty(name='Offset', default=0, min=-1.0, max=1, precision=4, unit='LENGTH')[source]#
iteration: IntProperty(name='Iteration', default=100, min=50, max=2000)[source]#
maxt: FloatProperty(name='Wave Ends at X', default=0.5, min=-3.0, max=3, precision=4, unit='LENGTH')[source]#
mint: FloatProperty(name='Wave Starts at X', default=0, min=-3.0, max=3, precision=4, unit='LENGTH')[source]#
wave_distance: FloatProperty(name='Distance Between Multiple Waves', default=0.0, min=0.0, max=100, precision=4, unit='LENGTH')[source]#
wave_angle_offset: FloatProperty(name='Angle Offset for Multiple Waves', default=pi / 2, min=-200 * pi, max=200 * pi, precision=4, unit='ROTATION')[source]#
wave_amount: IntProperty(name='Amount of Multiple Waves', default=1, min=1, max=2000)[source]#
execute(context)[source]#
class CamLissajousCurve[source]#

Bases: bpy.types.Operator

Lissajous

bl_idname = 'object.lissajous'[source]#
bl_label = 'Lissajous Figure'[source]#
bl_options[source]#
amplitude_A: FloatProperty(name='Amplitude A', default=0.1, min=0, max=100, precision=4, unit='LENGTH')[source]#
waveA: EnumProperty(name='Wave X', items='sine', 'Sine Wave', 'Sine Wave', 'triangle', 'Triangle Wave', 'triangle wave', default='sine')[source]#
amplitude_B: FloatProperty(name='Amplitude B', default=0.1, min=0, max=100, precision=4, unit='LENGTH')[source]#
waveB: EnumProperty(name='Wave Y', items='sine', 'Sine Wave', 'Sine Wave', 'triangle', 'Triangle Wave', 'triangle wave', default='sine')[source]#
period_A: FloatProperty(name='Period A', default=1.1, min=0.001, max=100, precision=4, unit='LENGTH')[source]#
period_B: FloatProperty(name='Period B', default=1.0, min=0.001, max=100, precision=4, unit='LENGTH')[source]#
period_Z: FloatProperty(name='Period Z', default=1.0, min=0.001, max=100, precision=4, unit='LENGTH')[source]#
amplitude_Z: FloatProperty(name='Amplitude Z', default=0.0, min=0, max=100, precision=4, unit='LENGTH')[source]#
shift: FloatProperty(name='Phase Shift', default=0, min=-360, max=360, precision=4, unit='ROTATION')[source]#
iteration: IntProperty(name='Iteration', default=500, min=50, max=10000)[source]#
maxt: FloatProperty(name='Wave Ends at X', default=11, min=-3.0, max=1000000, precision=4, unit='LENGTH')[source]#
mint: FloatProperty(name='Wave Starts at X', default=0, min=-10.0, max=3, precision=4, unit='LENGTH')[source]#
execute(context)[source]#
class CamHypotrochoidCurve[source]#

Bases: bpy.types.Operator

Hypotrochoid

bl_idname = 'object.hypotrochoid'[source]#
bl_label = 'Spirograph Type Figure'[source]#
bl_options[source]#
typecurve: EnumProperty(name='Type of Curve', items='hypo', 'Hypotrochoid', 'Inside ring', 'epi', 'Epicycloid', 'Outside inner ring')[source]#
R: FloatProperty(name='Big Circle Radius', default=0.25, min=0.001, max=100, precision=4, unit='LENGTH')[source]#
r: FloatProperty(name='Small Circle Radius', default=0.18, min=0.0001, max=100, precision=4, unit='LENGTH')[source]#
d: FloatProperty(name='Distance from Center of Interior Circle', default=0.05, min=0, max=100, precision=4, unit='LENGTH')[source]#
dip: FloatProperty(name='Variable Depth from Center', default=0.0, min=-100, max=100, precision=4)[source]#
execute(context)[source]#
class CamCustomCurve[source]#

Bases: bpy.types.Operator

Object Custom Curve

bl_idname = 'object.customcurve'[source]#
bl_label = 'Custom Curve'[source]#
bl_options[source]#
xstring: StringProperty(name='X Equation', description='Equation x=F(t)', default='t')[source]#
ystring: StringProperty(name='Y Equation', description='Equation y=F(t)', default='0')[source]#
zstring: StringProperty(name='Z Equation', description='Equation z=F(t)', default='0.05*sin(2*pi*4*t)')[source]#
iteration: IntProperty(name='Iteration', default=100, min=50, max=2000)[source]#
maxt: FloatProperty(name='Wave Ends at X', default=0.5, min=-3.0, max=10, precision=4, unit='LENGTH')[source]#
mint: FloatProperty(name='Wave Starts at X', default=0, min=-3.0, max=3, precision=4, unit='LENGTH')[source]#
execute(context)[source]#
triangle(i, T, A)[source]#
ssine(A, T, dc_offset=0, phase_shift=0)[source]#