cam

Contents

cam#

Fabex ‘__init__.py’ © 2012 Vilem Novak

Import Modules, Register and Unregister Classes

Submodules#

Attributes#

Classes#

Functions#

get_panels()

Retrieve a list of panels for the Blender UI.

ops_register()

ops_unregister()

props_register()

props_unregister()

on_blender_startup(context)

Checks for any broken computations on load and resets them.

keymap_register()

keymap_unregister()

on_engine_change(*args)

timer_update(context)

Monitor background processes related to camera path calculations.

register(→ None)

unregister(→ None)

Package Contents#

class FABEX_ENGINE[source]#

Bases: bpy.types.RenderEngine

bl_idname = 'FABEX_RENDER'#
bl_label = 'Fabex CNC/CAM'#
bl_use_eevee_viewport = True#
get_panels()[source]#

Retrieve a list of panels for the Blender UI.

This function compiles a list of UI panels that are compatible with the Blender rendering engine. It excludes certain predefined panels that are not relevant for the current context. The function checks all subclasses of the bpy.types.Panel and includes those that have the COMPAT_ENGINES attribute set to include ‘BLENDER_RENDER’, provided they are not in the exclusion list.

Returns:

A list of panel classes that are compatible with the Blender rendering engine, excluding specified panels.

Return type:

list

ops_register()#
ops_unregister()#
props_register()#
props_unregister()#
class CAM_OPERATION_Properties[source]#

Bases: bpy.types.PropertyGroup

material: PointerProperty(type=CAM_MATERIAL_Properties)#
info: PointerProperty(type=CAM_INFO_Properties)#
optimisation: PointerProperty(type=CAM_OPTIMISATION_Properties)#
movement: PointerProperty(type=CAM_MOVEMENT_Properties)#
name: StringProperty(name='Operation Name', default='Operation', update=update_rest)#
filename: StringProperty(name='File Name', default='Operation', update=update_rest)#
auto_export: BoolProperty(name='Auto Export', description='Export files immediately after path calculation', default=True)#
remove_redundant_points: BoolProperty(name='Simplify G-code', description='Remove redundant points sharing the same angle as the start vector', default=False)#
simplify_tolerance: IntProperty(name='Tolerance', description='lower number means more precise', default=50, min=1, max=1000)#
hide_all_others: BoolProperty(name='Hide All Others', description='Hide all other tool paths except toolpath associated with selected CAM operation', default=False)#
parent_path_to_object: BoolProperty(name='Parent Path to Object', description='Parent generated CAM path to source object', default=False)#
object_name: StringProperty(name='Object', description='Object handled by this operation', update=update_operation_valid)#
collection_name: StringProperty(name='Collection', description='Object collection handled by this operation', update=update_operation_valid)#
curve_source: StringProperty(name='Curve Source', description='Curve which will be sampled along the 3D object', update=operation_valid)#
curve_target: StringProperty(name='Curve Target', description='Curve which will serve as attractor for the cutter when the cutter follows the curve', update=operation_valid)#
source_image_name: StringProperty(name='Image Source', description='image source', update=operation_valid)#
geometry_source: EnumProperty(name='Data Source', items='OBJECT', 'Object', 'a', 'COLLECTION', 'Collection of Objects', 'a', 'IMAGE', 'Image', 'a', description='Geometry source', default='OBJECT', update=update_operation_valid)#
cutter_type: EnumProperty(name='Cutter', items='END', 'End', 'End - Flat cutter', 'BALLNOSE', 'Ballnose', 'Ballnose cutter', 'BULLNOSE', 'Bullnose', 'Bullnose cutter ***placeholder **', 'VCARVE', 'V-carve', 'V-carve cutter', 'BALLCONE', 'Ballcone', 'Ball with a Cone for Parallel - X', 'CYLCONE', 'Cylinder cone', 'Cylinder End with a Cone for Parallel - X', 'LASER', 'Laser', 'Laser cutter', 'PLASMA', 'Plasma', 'Plasma cutter', 'CUSTOM', 'Custom-EXPERIMENTAL', 'Modelled cutter - not well tested yet.', description='Type of cutter used', default='END', update=update_Z_buffer_image)#
cutter_object_name: StringProperty(name='Cutter Object', description='Object used as custom cutter for this operation', update=update_Z_buffer_image)#
machine_axes: EnumProperty(name='Number of Axes', items='3', '3 axis', 'a', 'EMPTY_DATA', 0, '4', '4 axis - EXPERIMENTAL', 'a', 'EXPERIMENTAL', 1, '5', '5 axis - EXPERIMENTAL', 'a', 'EXPERIMENTAL', 2, description='How many axes will be used for the operation', default='3', update=update_strategy)#
strategy: EnumProperty(name='Strategy', items=get_strategy_list, description='Strategy', update=update_strategy)#
strategy_4_axis: EnumProperty(name='4 Axis Strategy', items='PARALLELR', 'Parallel around 1st rotary axis', 'Parallel lines around first rotary axis', 'PARALLEL', 'Parallel along 1st rotary axis', 'Parallel lines along first rotary axis', 'HELIX', 'Helix around 1st rotary axis', 'Helix around rotary axis', 'INDEXED', 'Indexed 3-axis', 'all 3 axis strategies, just applied to the 4th axis', 'CROSS', 'Cross', 'Cross paths', description='#Strategy', default='PARALLEL', update=update_strategy)#
strategy_5_axis: EnumProperty(name='Strategy', items='INDEXED', 'Indexed 3-axis', 'All 3 axis strategies, just rotated by 4+5th axes', description='5 axis Strategy', default='INDEXED', update=update_strategy)#
rotary_axis_1: EnumProperty(name='Rotary Axis', items='X', 'X', '', 'Y', 'Y', '', 'Z', 'Z', '', description='Around which axis rotates the first rotary axis', default='X', update=update_strategy)#
rotary_axis_2: EnumProperty(name='Rotary Axis 2', items='X', 'X', '', 'Y', 'Y', '', 'Z', 'Z', '', description='Around which axis rotates the second rotary axis', default='Z', update=update_strategy)#
skin: FloatProperty(name='Skin', description='Material to leave when roughing ', min=0.0, max=1.0, default=0.0, precision=PRECISION, unit='LENGTH', update=update_offset_image)#
inverse: BoolProperty(name='Inverse Milling', description='Male to female model conversion', default=False, update=update_offset_image)#
array: BoolProperty(name='Use Array', description='Create a repetitive array for producing the same thing many times', default=False, update=update_rest)#
array_x_count: IntProperty(name='X Count', description='X count', default=1, min=1, max=32000, update=update_rest)#
array_y_count: IntProperty(name='Y Count', description='Y count', default=1, min=1, max=32000, update=update_rest)#
array_x_distance: FloatProperty(name='X Distance', description='Distance between operation origins', min=1e-05, max=1.0, default=0.01, precision=PRECISION, unit='LENGTH', update=update_rest)#
array_y_distance: FloatProperty(name='Y Distance', description='Distance between operation origins', min=1e-05, max=1.0, default=0.01, precision=PRECISION, unit='LENGTH', update=update_rest)#
pocket_option: EnumProperty(name='Start Position', items='INSIDE', 'Inside', 'a', 'OUTSIDE', 'Outside', 'a', description='Pocket starting position', default='INSIDE', update=update_rest)#
pocket_type: EnumProperty(name='pocket type', items='PERIMETER', 'Perimeter', 'a', '', 0, 'PARALLEL', 'Parallel', 'a', 'EXPERIMENTAL', 1, description='Type of pocket', default='PERIMETER', update=update_rest)#
parallel_pocket_angle: FloatProperty(name='Parallel Pocket Angle', description='Angle for parallel pocket', min=-180, max=180.0, default=45.0, precision=PRECISION, update=update_rest)#
parallel_pocket_crosshatch: BoolProperty(name='Crosshatch #', description='Crosshatch X finish', default=False, update=update_rest)#
parallel_pocket_contour: BoolProperty(name='Contour Finish', description='Contour path finish', default=False, update=update_rest)#
pocket_to_curve: BoolProperty(name='Pocket to Curve', description='Generates a curve instead of a path', default=False, update=update_rest)#
cut_type: EnumProperty(name='Cut', items='OUTSIDE', 'Outside', 'a', 'INSIDE', 'Inside', 'a', 'ONLINE', 'On Line', 'a', description='Type of cutter used', default='OUTSIDE', update=update_rest)#
outlines_count: IntProperty(name='Outlines Count', description='Outlines count', default=1, min=1, max=32, update=update_cutout)#
straight: BoolProperty(name='Overshoot Style', description='Use overshoot cutout instead of conventional rounded', default=True, update=update_rest)#
cutter_id: IntProperty(name='Tool Number', description='For machines which support tool change based on tool id', min=0, max=10000, default=1, update=update_rest)#
cutter_diameter: FloatProperty(name='Cutter Diameter', description='Cutter diameter = 2x cutter radius', min=1e-06, max=10, default=0.003, precision=PRECISION, unit='LENGTH', update=update_offset_image)#
cylcone_diameter: FloatProperty(name='Bottom Diameter', description='Bottom diameter', min=1e-06, max=10, default=0.003, precision=PRECISION, unit='LENGTH', update=update_offset_image)#
cutter_length: FloatProperty(name='#Cutter Length', description='#not supported#Cutter length', min=0.0, max=100.0, default=25.0, precision=PRECISION, unit='LENGTH', update=update_offset_image)#
cutter_flutes: IntProperty(name='Cutter Flutes', description='Cutter flutes', min=1, max=20, default=2, update=update_chipload)#
cutter_tip_angle: FloatProperty(name='Cutter V-carve Angle', description='Cutter V-carve angle', default=pi / 3, min=0.0, max=pi, subtype='ANGLE', unit='ROTATION', precision=PRECISION, step=500, update=update_offset_image)#
ball_radius: FloatProperty(name='Ball Radius', description='Radius of', min=0.0, max=0.035, default=0.001, unit='LENGTH', precision=PRECISION, update=update_offset_image)#
bull_corner_radius: FloatProperty(name='Bull Corner Radius', description='Radius tool bit corner', min=0.0, max=0.035, default=0.005, unit='LENGTH', precision=PRECISION, update=update_offset_image)#
cutter_description: StringProperty(name='Tool Description', default='', update=update_offset_image)#
laser_on: StringProperty(name='Laser ON String', default='M68 E0 Q100')#
laser_off: StringProperty(name='Laser OFF String', default='M68 E0 Q0')#
laser_cmd: StringProperty(name='Laser Command', default='M68 E0 Q')#
laser_delay: FloatProperty(name='Laser ON Delay', description='Time after fast move to turn on laser and let machine stabilize', default=0.2)#
plasma_on: StringProperty(name='Plasma ON String', default='M03')#
plasma_off: StringProperty(name='Plasma OFF String', default='M05')#
plasma_delay: FloatProperty(name='Plasma ON Delay', description='Time after fast move to turn on Plasma and let machine stabilize', default=0.1)#
plasma_dwell: FloatProperty(name='Plasma Dwell Time', description='Time to dwell and warm up the torch', default=0.0)#
distance_between_paths: FloatProperty(name='Distance Between Toolpaths', default=0.001, min=1e-05, max=32, precision=PRECISION, unit='LENGTH', update=update_rest)#
distance_along_paths: FloatProperty(name='Distance Along Toolpaths', default=0.0002, min=1e-05, max=32, precision=PRECISION, unit='LENGTH', update=update_rest)#
parallel_angle: FloatProperty(name='Angle of Paths', default=0, min=-360, max=360, precision=0, step=500, subtype='ANGLE', unit='ROTATION', update=update_rest)#
old_rotation_a: FloatProperty(name='A Axis Angle', description='old value of Rotate A axis\nto specified angle', default=0, min=-360, max=360, precision=0, subtype='ANGLE', unit='ROTATION', update=update_rest)#
old_rotation_b: FloatProperty(name='A Axis Angle', description='old value of Rotate A axis\nto specified angle', default=0, min=-360, max=360, precision=0, subtype='ANGLE', unit='ROTATION', update=update_rest)#
rotation_a: FloatProperty(name='A Axis Angle', description='Rotate A axis\nto specified angle', default=0, min=-360, max=360, precision=0, step=500, subtype='ANGLE', unit='ROTATION', update=update_rotation)#
enable_a_axis: BoolProperty(name='Enable A Axis', description='Rotate A axis', default=False, update=update_rotation)#
a_along_x: BoolProperty(name='A Along X ', description='A Parallel to X', default=True, update=update_rest)#
rotation_b: FloatProperty(name='B Axis Angle', description='Rotate B axis\nto specified angle', default=0, min=-360, max=360, precision=0, step=500, subtype='ANGLE', unit='ROTATION', update=update_rotation)#
enable_b_axis: BoolProperty(name='Enable B Axis', description='Rotate B axis', default=False, update=update_rotation)#
carve_depth: FloatProperty(name='Carve Depth', default=0.001, min=-0.1, max=32, precision=PRECISION, unit='LENGTH', update=update_rest)#
drill_type: EnumProperty(name='Holes On', items='MIDDLE_SYMETRIC', 'Middle of Symmetric Curves', 'a', 'MIDDLE_ALL', 'Middle of All Curve Parts', 'a', 'ALL_POINTS', 'All Points in Curve', 'a', description='Strategy to detect holes to drill', default='MIDDLE_SYMETRIC', update=update_rest)#
slice_detail: FloatProperty(name='Distance Between Slices', default=0.001, min=1e-05, max=32, precision=PRECISION, unit='LENGTH', update=update_rest)#
waterline_fill: BoolProperty(name='Fill Areas Between Slices', description='Fill areas between slices in waterline mode', default=True, update=update_rest)#
waterline_project: BoolProperty(name='Project Paths - Not Recomended', description='Project paths in areas between slices', default=True, update=update_rest)#
use_layers: BoolProperty(name='Use Layers', description='Use layers for roughing', default=True, update=update_rest)#
stepdown: FloatProperty(name='', description='Layer height', default=0.01, min=1e-05, max=32, precision=PRECISION, unit='LENGTH', update=update_rest)#
lead_in: FloatProperty(name='Lead-in Radius', description='Lead in radius for torch or laser to turn off', min=0.0, max=1, default=0.0, precision=PRECISION, unit='LENGTH')#
lead_out: FloatProperty(name='Lead-out Radius', description='Lead out radius for torch or laser to turn off', min=0.0, max=1, default=0.0, precision=PRECISION, unit='LENGTH')#
profile_start: IntProperty(name='Start Point', description='Start point offset', min=0, default=0, update=update_rest)#
min_z: FloatProperty(name='Operation Depth End', default=-0.01, min=-3, max=3, precision=PRECISION, unit='LENGTH', update=update_rest)#
min_z_from: EnumProperty(name='Max Depth From', description='Set maximum operation depth', items='OBJECT', 'Object', 'Set max operation depth from Object', 'MATERIAL', 'Material', 'Set max operation depth from Material', 'CUSTOM', 'Custom', 'Custom max depth', default='OBJECT', update=update_rest)#
start_type: EnumProperty(name='Start Type', items='ZLEVEL', 'Z level', 'Starts on a given Z level', 'OPERATIONRESULT', 'Rest Milling', 'For rest milling, operations have to be put in chain for this to work well.', description='Starting depth', default='ZLEVEL', update=update_strategy)#
max_z: FloatProperty(name='Operation Depth Start', description='operation starting depth', default=0, min=-3, max=10, precision=PRECISION, unit='LENGTH', update=update_rest)#
first_down: BoolProperty(name='First Down', description='First go down on a contour, then go to the next one', default=False, update=update_operation)#
source_image_scale_z: FloatProperty(name='Image Source Depth Scale', default=0.01, min=-1, max=1, precision=PRECISION, unit='LENGTH', update=update_Z_buffer_image)#
source_image_size_x: FloatProperty(name='Image Source X Size', default=0.1, min=-10, max=10, precision=PRECISION, unit='LENGTH', update=update_Z_buffer_image)#
source_image_size_y: FloatProperty(name='Image Source Y Size', default=0.1, min=-10, max=10, precision=PRECISION, unit='LENGTH', update=update_image_size_y)#
source_image_offset: FloatVectorProperty(name='Image Offset', default=0, 0, 0, unit='LENGTH', precision=PRECISION, subtype='XYZ', update=update_Z_buffer_image)#
source_image_crop: BoolProperty(name='Crop Source Image', description='Crop source image - the position of the sub-rectangle is relative to the whole image, so it can be used for e.g. finishing just a part of an image', default=False, update=update_Z_buffer_image)#
source_image_crop_start_x: FloatProperty(name='Crop Start X', default=0, min=0, max=100, precision=PRECISION, subtype='PERCENTAGE', update=update_Z_buffer_image)#
source_image_crop_start_y: FloatProperty(name='Crop Start Y', default=0, min=0, max=100, precision=PRECISION, subtype='PERCENTAGE', update=update_Z_buffer_image)#
source_image_crop_end_x: FloatProperty(name='Crop End X', default=100, min=0, max=100, precision=PRECISION, subtype='PERCENTAGE', update=update_Z_buffer_image)#
source_image_crop_end_y: FloatProperty(name='Crop End Y', default=100, min=0, max=100, precision=PRECISION, subtype='PERCENTAGE', update=update_Z_buffer_image)#
ambient_behaviour: EnumProperty(name='Ambient', items='ALL', 'All', 'a', 'AROUND', 'Around', 'a', description='Handling ambient surfaces', default='ALL', update=update_Z_buffer_image)#
ambient_radius: FloatProperty(name='Ambient Radius', description='Radius around the part which will be milled if ambient is set to Around', min=0.0, max=100.0, default=0.01, precision=PRECISION, unit='LENGTH', update=update_rest)#
use_limit_curve: BoolProperty(name='Use Limit Curve', description='A curve limits the operation area', default=False, update=update_rest)#
ambient_cutter_restrict: BoolProperty(name='Cutter Stays in Ambient Limits', description="Cutter doesn't get out from ambient limits otherwise goes on the border exactly", default=True, update=update_rest)#
limit_curve: StringProperty(name='Limit Curve', description='Curve used to limit the area of the operation', update=update_rest)#
feedrate: FloatProperty(name='Feedrate', description='Feedrate in units per minute', min=5e-05, max=50.0, default=1.0, precision=PRECISION, unit='LENGTH', update=update_chipload)#
plunge_feedrate: FloatProperty(name='Plunge Speed', description='% of feedrate', min=0.1, max=100.0, default=50.0, precision=1, subtype='PERCENTAGE', update=update_rest)#
plunge_angle: FloatProperty(name='Plunge Angle', description='What angle is already considered to plunge', default=pi / 6, min=0, max=pi * 0.5, precision=0, step=500, subtype='ANGLE', unit='ROTATION', update=update_rest)#
spindle_rpm: FloatProperty(name='Spindle RPM', description='Spindle speed ', min=0, max=60000, default=12000, update=update_chipload)#
do_simulation_feedrate: BoolProperty(name='Adjust Feedrates with Simulation EXPERIMENTAL', description='Adjust feedrates with simulation', default=False, update=update_rest)#
dont_merge: BoolProperty(name="Don't Merge Outlines when Cutting", description='this is usefull when you want to cut around everything', default=False, update=update_rest)#
pencil_threshold: FloatProperty(name='Pencil Threshold', default=2e-05, min=1e-08, max=1, precision=PRECISION, unit='LENGTH', update=update_rest)#
crazy_threshold_1: FloatProperty(name='Min Engagement', default=0.02, min=1e-08, max=100, precision=PRECISION, update=update_rest)#
crazy_threshold_2: FloatProperty(name='Max Engagement', default=0.5, min=1e-08, max=100, precision=PRECISION, update=update_rest)#
crazy_threshold_3: FloatProperty(name='Max Angle', default=2, min=1e-08, max=100, precision=PRECISION, update=update_rest)#
crazy_threshold_4: FloatProperty(name='Test Angle Step', default=0.05, min=1e-08, max=100, precision=PRECISION, update=update_rest)#
crazy_threshold_5: FloatProperty(name='Optimal Engagement', default=0.3, min=1e-08, max=100, precision=PRECISION, update=update_rest)#
add_pocket_for_medial: BoolProperty(name='Add Pocket Operation', description='Clean unremoved material after medial axis', default=True, update=update_rest)#
add_mesh_for_medial: BoolProperty(name='Add Medial mesh', description='Medial operation returns mesh for editing and further processing', default=False, update=update_rest)#
medial_axis_threshold: FloatProperty(name='Long Vector Threshold', default=0.001, min=1e-08, max=100, precision=PRECISION, unit='LENGTH', update=update_rest)#
medial_axis_subdivision: FloatProperty(name='Fine Subdivision', default=0.0002, min=1e-08, max=100, precision=PRECISION, unit='LENGTH', update=update_rest)#
use_bridges: BoolProperty(name='Use Bridges / Tabs', description='Use bridges in cutout', default=False, update=update_bridges)#
bridges_width: FloatProperty(name='Bridge / Tab Width', default=0.002, unit='LENGTH', precision=PRECISION, update=update_bridges)#
bridges_height: FloatProperty(name='Bridge / Tab Height', description='Height from the bottom of the cutting operation', default=0.0005, unit='LENGTH', precision=PRECISION, update=update_bridges)#
bridges_collection_name: StringProperty(name='Bridges / Tabs Collection', description='Collection of curves used as bridges', update=operation_valid)#
use_bridge_modifiers: BoolProperty(name='Use Bridge / Tab Modifiers', description='Include bridge curve modifiers using render level when calculating operation, does not effect original bridge data', default=True, update=update_bridges)#
use_modifiers: BoolProperty(name='Use Mesh Modifiers', description='Include mesh modifiers using render level when calculating operation, does not effect original mesh', default=True, update=operation_valid)#
min: FloatVectorProperty(name='Operation Minimum', default=0, 0, 0, unit='LENGTH', precision=PRECISION, subtype='XYZ')#
max: FloatVectorProperty(name='Operation Maximum', default=0, 0, 0, unit='LENGTH', precision=PRECISION, subtype='XYZ')#
output_header: BoolProperty(name='Output G-code Header', description='Output user defined G-code command header at start of operation', default=False)#
gcode_header: StringProperty(name='G-code Header', description='G-code commands at start of operation. Use ; for line breaks', default='G53 G0')#
enable_dust: BoolProperty(name='Dust Collector', description='Output user defined g-code command header at start of operation', default=False)#
gcode_start_dust_cmd: StringProperty(name='Start Dust Collector', description='Commands to start dust collection. Use ; for line breaks', default='M100')#
gcode_stop_dust_cmd: StringProperty(name='Stop Dust Collector', description='Command to stop dust collection. Use ; for line breaks', default='M101')#
enable_hold: BoolProperty(name='Hold Down', description='Output hold down command at start of operation', default=False)#
gcode_start_hold_cmd: StringProperty(name='G-code Header', description='G-code commands at start of operation. Use ; for line breaks', default='M102')#
gcode_stop_hold_cmd: StringProperty(name='G-code Header', description='G-code commands at end operation. Use ; for line breaks', default='M103')#
enable_mist: BoolProperty(name='Mist', description='Mist command at start of operation', default=False)#
gcode_start_mist_cmd: StringProperty(name='Start Mist', description='Command to start mist. Use ; for line breaks', default='M104')#
gcode_stop_mist_cmd: StringProperty(name='Stop Mist', description='Command to stop mist. Use ; for line breaks', default='M105')#
output_trailer: BoolProperty(name='Output G-code Trailer', description='Output user defined g-code command trailer at end of operation', default=False)#
gcode_trailer: StringProperty(name='G-code Trailer', description='G-code commands at end of operation. Use ; for line breaks', default='M02')#
offset_image#
zbuffer_image#
silhouette#
ambient#
operation_limit#
borderwidth = 50#
object = None#
path_object_name: StringProperty(name='Path Object', description='Actual CNC path')#
changed: BoolProperty(name='True if any of the Operation Settings has Changed', description='Mark for update', default=False)#
update_z_buffer_image_tag: BoolProperty(name='Mark Z-Buffer Image for Update', description='Mark for update', default=True)#
update_offset_image_tag: BoolProperty(name='Mark Offset Image for Update', description='Mark for update', default=True)#
update_silhouette_tag: BoolProperty(name='Mark Silhouette Image for Update', description='Mark for update', default=True)#
update_ambient_tag: BoolProperty(name='Mark Ambient Polygon for Update', description='Mark for update', default=True)#
update_bullet_collision_tag: BoolProperty(name='Mark Bullet Collision World for Update', description='Mark for update', default=True)#
valid: BoolProperty(name='Valid', description='True if operation is ok for calculation', default=True)#
change_data: StringProperty(name='Changedata', description='change data for checking if stuff changed.')#
computing: BoolProperty(name='Computing Right Now', description='', default=False)#
pid: IntProperty(name='Process Id', description='Background process id', default=-1)#
out_text: StringProperty(name='Outtext', description='outtext', default='')#
class CamAddonPreferences[source]#

Bases: bpy.types.AddonPreferences

bl_idname = ''#
op_preset_update: BoolProperty(name='Have the Operation Presets Been Updated', default=False)#
default_interface_level: EnumProperty(name='Interface Level in New File', description='Choose visible options', items=['0', 'Basic', 'Only show Essential Options', '1', 'Advanced', 'Show Advanced Options', '2', 'Complete', 'Show All Options', '3', 'Experimental', 'Show Experimental Options'], default='3')#
default_shading: EnumProperty(name='Viewport Shading in New File', description='Choose viewport shading preset', items=['DEFAULT', 'Default', 'Standard viewport shading', 'DELUXE', 'Deluxe', 'Cavity, Curvature, Depth of Field, Shadows & Object Colors', 'CLEAN_DEFAULT', 'Clean Default', 'Standard viewport shading with no overlays', 'CLEAN_DELUXE', 'Clean Deluxe', 'Deluxe shading with no overlays', 'PREVIEW', 'Preview', 'HDRI Lighting Preview'], default='DEFAULT')#
default_layout: EnumProperty(name='Panel Layout', description='Presets for all panel locations', items=['CLASSIC', 'Classic', 'Properties Area holds most panels, Tools holds the rest', 'MODERN', 'Modern', 'Properties holds Main panels, Sidebar holds Operation panels, Tools holds Tools', 'USER', 'User', 'Define your own locations for panels'], default='MODERN')#
default_main_location: EnumProperty(name='Main Panels', description='Location for Chains, Operations, Material, Machine, Pack, Slice Panels', items=['PROPERTIES', 'Properties', 'Default panel location is the Render tab of the Properties Area', 'SIDEBAR', 'Sidebar (N-Panel)', 'Common location for addon UI, press N to show/hide', 'TOOLS', 'Tools (T-Panel)', "Blender's Tool area, press T to show/hide"], default='PROPERTIES')#
default_operation_location: EnumProperty(name='Operation Panels', description='Location for Setup, Area, Cutter, Feedrate, Optimisation, Movement, G-code', items=['PROPERTIES', 'Properties', 'Default panel location is the Render tab of the Properties Area', 'SIDEBAR', 'Sidebar (N-Panel)', 'Common location for addon UI, press N to show/hide', 'TOOLS', 'Tools (T-Panel)', "Blender's Tool area, press T to show/hide"], default='SIDEBAR')#
default_tools_location: EnumProperty(name='Tools Panels', description='Location for Curve Tools, Curve Creators, Info', items=['PROPERTIES', 'Properties', 'Default panel location is the Render tab of the Properties Area', 'SIDEBAR', 'Sidebar (N-Panel)', 'Common location for addon UI, press N to show/hide', 'TOOLS', 'Tools (T-Panel)', "Blender's Tool area, press T to show/hide"], default='TOOLS')#
user_main_location: EnumProperty(name='Main Panels', items=['PROPERTIES', 'Properties', 'Default panel location is the Render tab of the Properties Area', 'SIDEBAR', 'Sidebar (N-Panel)', 'Common location for addon UI, press N to show/hide', 'TOOLS', 'Tools (T-Panel)', "Blender's Tool area, press T to show/hide"], default='PROPERTIES')#
user_operation_location: EnumProperty(name='Operation Panels', items=['PROPERTIES', 'Properties', 'Default panel location is the Render tab of the Properties Area', 'SIDEBAR', 'Sidebar (N-Panel)', 'Common location for addon UI, press N to show/hide', 'TOOLS', 'Tools (T-Panel)', "Blender's Tool area, press T to show/hide"], default='SIDEBAR')#
user_tools_location: EnumProperty(name='Tools Panels', items=['PROPERTIES', 'Properties', 'Default panel location is the Render tab of the Properties Area', 'SIDEBAR', 'Sidebar (N-Panel)', 'Common location for addon UI, press N to show/hide', 'TOOLS', 'Tools (T-Panel)', "Blender's Tool area, press T to show/hide"], default='TOOLS')#
default_machine_preset: StringProperty(name='Machine Preset in New File', description='So that machine preset choice persists between files', default='')#
show_popups: BoolProperty(name='Show Warning Popups', description='Shows a Popup window when there is a warning', default=True)#
draw(context)[source]#
on_blender_startup(context)[source]#

Checks for any broken computations on load and resets them.

This function verifies the presence of necessary Blender add-ons and installs any that are missing. It also resets any ongoing computations in camera operations and sets the interface level to the previously used level when loading a new file. If the add-on has been updated, it copies the necessary presets from the source to the target directory. Additionally, it checks for updates to the camera plugin and updates operation presets if required.

Parameters:

context – The context in which the function is executed, typically containing information about the current Blender environment.

keymap_register()[source]#
keymap_unregister()[source]#
on_engine_change(*args)[source]#
timer_update(context)[source]#

Monitor background processes related to camera path calculations.

This function checks the status of background processes that are responsible for calculating camera paths. It retrieves the current processes and monitors their state. If a process has finished, it updates the corresponding camera operation and reloads the necessary paths. If the process is still running, it restarts the associated thread to continue monitoring.

Parameters:

context – The context in which the function is called, typically containing information about the current scene and operations.

classes[source]#
register() None[source]#
unregister() None[source]#