def sub_canvas_graphics(ai_rotation_direction, ai_angle_position): r_canvas_graphics = [] r_canvas_graphics.append(("graphic_lines", cnc25d_api.outline_arc_line(my_outline_for_cnc, "tkinter"), "red", 1)) r_canvas_graphics.append( ("graphic_lines", cnc25d_api.outline_arc_line(my_outline_for_cnc_x_shifted, "tkinter"), "red", 1) ) r_canvas_graphics.append( ("graphic_lines", cnc25d_api.outline_arc_line(my_outline_for_cnc_y_shifted, "tkinter"), "red", 1) ) turning_outline = cnc25d_api.outline_rotate( my_outline_for_cnc_xy_shifted, big_length * 4, big_length * 4, ai_angle_position ) r_canvas_graphics.append(("graphic_lines", cnc25d_api.outline_arc_line(turning_outline, "tkinter"), "red", 1)) r_canvas_graphics.append( ("overlay_lines", cnc25d_api.outline_arc_line(my_outline_for_cnc_rotated, "tkinter"), "green", 2) ) r_canvas_graphics.append( ("graphic_lines", cnc25d_api.outline_arc_line(my_outline_for_cnc_closed, "tkinter"), "blue", 1) ) r_canvas_graphics.append( ("graphic_lines", cnc25d_api.outline_arc_line(my_outline_for_cnc_reverse, "tkinter"), "blue", 1) ) # r_canvas_graphics.append(('overlay_lines', cnc25d_api.outline_circle((100,100), 40, 'tkinter'), 'orange', 1)) # create a circle (obsolete) r_canvas_graphics.append( ("overlay_lines", cnc25d_api.outline_arc_line((100, 100, 40), "tkinter"), "orange", 1) ) # create a circle r_canvas_graphics.append(("overlay_lines", cnc25d_api.outline_arc_line(my_curve, "tkinter"), "green", 2)) r_canvas_graphics.append(("graphic_lines", cnc25d_api.outline_arc_line(my_curve_for_cnc, "tkinter"), "blue", 1)) return r_canvas_graphics
def sub_canvas_graphics(ai_rotation_direction, ai_angle_position): r_canvas_graphics = [] r_canvas_graphics.append(('graphic_lines', cnc25d_api.outline_arc_line(my_outline_for_cnc, 'tkinter'), 'red', 1)) r_canvas_graphics.append(('graphic_lines', cnc25d_api.outline_arc_line(my_outline_for_cnc_x_shifted, 'tkinter'), 'red', 1)) r_canvas_graphics.append(('graphic_lines', cnc25d_api.outline_arc_line(my_outline_for_cnc_y_shifted, 'tkinter'), 'red', 1)) turning_outline = cnc25d_api.outline_rotate(my_outline_for_cnc_xy_shifted, big_length*4, big_length*4, ai_angle_position) r_canvas_graphics.append(('graphic_lines', cnc25d_api.outline_arc_line(turning_outline, 'tkinter'), 'red', 1)) r_canvas_graphics.append(('overlay_lines', cnc25d_api.outline_arc_line(my_outline_for_cnc_rotated, 'tkinter'), 'green', 2)) r_canvas_graphics.append(('graphic_lines', cnc25d_api.outline_arc_line(my_outline_for_cnc_closed, 'tkinter'), 'blue', 1)) r_canvas_graphics.append(('graphic_lines', cnc25d_api.outline_arc_line(my_outline_for_cnc_reverse, 'tkinter'), 'blue', 1)) #r_canvas_graphics.append(('overlay_lines', cnc25d_api.outline_circle((100,100), 40, 'tkinter'), 'orange', 1)) # create a circle (obsolete) r_canvas_graphics.append(('overlay_lines', cnc25d_api.outline_arc_line((100, 100, 40), 'tkinter'), 'orange', 1)) # create a circle r_canvas_graphics.append(('overlay_lines', cnc25d_api.outline_arc_line(my_curve, 'tkinter'), 'green', 2)) r_canvas_graphics.append(('graphic_lines', cnc25d_api.outline_arc_line(my_curve_for_cnc, 'tkinter'), 'blue', 1)) return(r_canvas_graphics)
################################################################ ## use the Cnc25D API function cnc_cut_outline to create a makable outline from the wished outline # the second argument is just used to enhance the error, warning and debug messages my_outline_for_cnc = cnc25d_api.cnc_cut_outline(my_outline, "api_example") # other help functions to manipulate outlines # outline_shift_x my_outline_for_cnc_x_shifted = cnc25d_api.outline_shift_x(my_outline_for_cnc, big_length * 4, 1) # outline_shift_y my_outline_for_cnc_y_shifted = cnc25d_api.outline_shift_y(my_outline_for_cnc, big_length * 6, -1) # outline_shift_xy my_outline_for_cnc_xy_shifted = cnc25d_api.outline_shift_xy( my_outline_for_cnc, big_length * 4, 0.5, big_length * 4, 0.5 ) # outline_rotate my_outline_for_cnc_rotated = cnc25d_api.outline_rotate(my_outline_for_cnc, big_length * 2, big_length * 2, math.pi / 4) # outline_close # it has no effect because the outline is already closed # notice that the help functions to manipulate outlines can be used before or after applying the function cnc25d_api.cnc_cut_outline() my_outline_for_cnc_closed = cnc25d_api.cnc_cut_outline( cnc25d_api.outline_close(cnc25d_api.outline_shift_x(my_outline, -1 * big_length, 0.25)), "api_example2" ) # outline_reverse # reverse the order of the segments. If the outline is closed, it changes the orientation from CW to CCW and vice versa my_outline_for_cnc_reverse = cnc25d_api.cnc_cut_outline( cnc25d_api.outline_reverse(cnc25d_api.outline_shift_x(my_outline, -2 * big_length, 0.25)), "api_example3" ) # curve radian_precision = math.pi / 100 my_curve_for_cnc = cnc25d_api.smooth_outline_b_curve(my_curve, radian_precision, my_router_bit_radius, "api_example4")
################################################################ # Combine your outline and your router_bit constraint ################################################################ ## use the Cnc25D API function cnc_cut_outline to create a makable outline from the wished outline # the second argument is just used to enhance the error, warning and debug messages my_outline_for_cnc = cnc25d_api.cnc_cut_outline(my_outline, 'api_example') # other help functions to manipulate outlines #outline_shift_x my_outline_for_cnc_x_shifted = cnc25d_api.outline_shift_x(my_outline_for_cnc, big_length*4, 1) #outline_shift_y my_outline_for_cnc_y_shifted = cnc25d_api.outline_shift_y(my_outline_for_cnc, big_length*6, -1) #outline_shift_xy my_outline_for_cnc_xy_shifted = cnc25d_api.outline_shift_xy(my_outline_for_cnc, big_length*4, 0.5, big_length*4, 0.5) #outline_rotate my_outline_for_cnc_rotated = cnc25d_api.outline_rotate(my_outline_for_cnc, big_length*2, big_length*2, math.pi/4) #outline_close # it has no effect because the outline is already closed # notice that the help functions to manipulate outlines can be used before or after applying the function cnc25d_api.cnc_cut_outline() my_outline_for_cnc_closed = cnc25d_api.cnc_cut_outline(cnc25d_api.outline_close(cnc25d_api.outline_shift_x(my_outline, -1*big_length, 0.25)), 'api_example2') #outline_reverse # reverse the order of the segments. If the outline is closed, it changes the orientation from CW to CCW and vice versa my_outline_for_cnc_reverse = cnc25d_api.cnc_cut_outline(cnc25d_api.outline_reverse(cnc25d_api.outline_shift_x(my_outline, -2*big_length, 0.25)), 'api_example3') # curve radian_precision = math.pi/100 my_curve_for_cnc = cnc25d_api.smooth_outline_b_curve(my_curve, radian_precision, my_router_bit_radius, 'api_example4') ################################################################ # ********** Work at outline-level *********** ################################################################