Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login
    1. Home
    2. CanDo415
    • Profile
    • Following 0
    • Followers 0
    • Topics 8
    • Posts 77
    • Best 3
    • Controversial 0
    • Groups 0

    CanDo415

    @CanDo415

    4
    Reputation
    3
    Profile views
    77
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    CanDo415 Unfollow Follow

    Best posts made by CanDo415

    • RE: Y Homing on CoreXY

      @gixxerfast & @fcwilt
      yes. -5 🤦

      @Gixxerfast
      checked the Endstopcontroller, rewired it. now it works fine

      posted in Using Duet Controllers
      CanDo415undefined
      CanDo415
    • Upside Down Voron

      I build my Voron upside down on purpose. After my multitool Tevo Tarantula I decided to get a Printer wich is open on the bottom side to stand on a plate to laser, to plot or to mill. The limits on a moving buildplate were quite hard. So I was constructing and searching for an aceptable design the last 2 years.

      Using the Tarantula as a testbed for most of my desired features i discovered the Voron as a near perfect base for my Printer #3.

      Features:
      Duet3
      huge buildspace
      multicolor
      fast changeable tools
      bottomless build
      huge removeable filament storage
      filament buffer

      Some pictures will follow the next days.

      IMG_20211229_114622_copy_791x510.jpg IMG_20211229_114523_copy_513x571.jpg IMG_20211229_114456_copy_514x521.jpg IMG_20211111_163126_copy_381x796.jpg IMG_20211229_114357_copy_590x606.jpg

      posted in My Duet controlled machine
      CanDo415undefined
      CanDo415
    • RE: Duet 3 Expansion 3HC no modement on drivers

      @t3p3tony
      great jo. Thanks. Works. also with X & Y on 1.0 & 1.1 👍

      Also my teststepper died. it doesnt work on the extension nor on the mainboard.

      posted in Using Duet Controllers
      CanDo415undefined
      CanDo415

    Latest posts made by CanDo415

    • RE: Feature Request - workpiece angle compensation CNC

      thank you all. finally it works as inteded.

      G68 A0 B0 R0
      G10 L20 X{move.axes[0].machinePosition} Y{move.axes[1].machinePosition} Z{move.axes[2].machinePosition}
      var y_1 = 0
      var x_1 = 0
      var x_2 = 0
      var x_3 = 0
      var x_4 = 0
      var x_5 = 0
      var delta_x = 0
      var y_2 = 0
      var y_3 = 0
      var y_4 = 0
      var y_5 = 0
      var delta_y = 0
      var z0 = 0
      var d_probe = 0
      var z_probe = 0
      var m_1 = 0
      var m_2 = 0
      var m_1_rads = 0
      var m_1_deg = 0
      var m_2_rads = 0
      var m_2_deg = 0
      var buff1 = 0
      var buff2 = 0
      var buff3 = 0
      var buff4 = 0
      var speed = 1500
      
      M291 P"probe Diameter" R"enter diameter of probe" S5 							                ; Pop up box asking for operator input diameter of 
      set var.d_probe = input														                	; set the diameter of the probe
      M291 P"probe size in z" R"enter z-size of probe" S5 				            		    	; Pop up box asking for operator input diameter of 
      set var.z_probe = input														                	; set the size of the probe in z-direction (mostly same as diameter, for plate probes 0)
      M291 P"position probe over front left corner of workpiece" S2 X1 Y1 Z1		                	; Pop up box asking for operator input
       
      M558 F{var.speed/5}														    	            	; Set the initial movement speed
      G38.2 Z-10 P0 K0													                   			; Probe the material on top
      M558 F50														    		            		; Set the final probing speed
      G38.4 Z50 P0 K0												                					; Move away from workpiece in Z
      M400												            	    						; Make sure all movement is complete
      set var.z0 = move.axes[2].machinePosition           										    ; Record the stop position z_first_measurement
      M400																            		    	; Make sure all data recording is complete
       
      G1 Z{move.axes[2].machinePosition+5}					            				    		; Lift probe 5mm
      G1 X{move.axes[0].machinePosition-20-var.d_probe/2} Y{move.axes[1].machinePosition+5}           	; Move 20mm to the left of the initial point and 5mm deeper into the material direction
      G1 Z{var.z0 - 1 - var.z_probe / 2}			            									    ; Move to probe depth
       
      M558 F{var.speed}				            							    					; Set the initial movement speed
      G38.2 X1000 P0 K0	            										    					; Probe the material as a first pass
      M558 F50													    				            	; Set the final probing speed
      G38.4 X-10 P0 K0												                				; Move away from workpiece in X
      M400													            			    			; Make sure all movement is complete
      set var.y_1 = move.axes[1].machinePosition	            							    		; Record the stop position y_first_measurement
      set var.x_1 = move.axes[0].machinePosition									                	; Record the stop position x_first_measurement
      M400																	            		    ; Make sure all data recording is complete
       
      G1 X{move.axes[0].machinePosition-5}					            						            ; Move 5mm away from the material
      G1 Z{var.z0+5}									        			    				        	    ; Move 5mm above material
      G1 X{move.axes[0].machinePosition+15+var.d_probe/2} Y{move.axes[1].machinePosition-20-var.d_probe/2}	; Move to point 2
      G1 Z{var.z0 - 1 - var.z_probe / 2}	            											            ; Move to probe depth
       
      M558 F{var.speed}           															    	; Set the initial movement speed
      G38.2 Y1000 P0 K0			            													    ; Probe the material as a first pass
      M558 F50								            										    ; Set the final probing speed
      G38.4 Y-10 P0 K0									            							    ; Probe the material again
      M400											    			            					; Make sure all movement is complete
      set var.y_2 = move.axes[1].machinePosition			    					            		; Record the stop position y_second_measurement
      set var.x_2 = move.axes[0].machinePosition	            			    						; Record the stop position x_second_measurement
      M400													            	    					; Make sure all data recording is complete
       
      G1 Y{move.axes[1].machinePosition-20}							                				; Move 10mm away from the material
      G1 X{move.axes[0].machinePosition+50}								    		            	; Move 50mm along the workpiece in X
      
      M558 F{var.speed}           		    														; Set the initial movement speed
      G38.2 Y1000 P0 K0			                													; Probe the material as a first pass
      M558 F50						    	            											; Set the final probing speed
      G38.4 Y-10 P0 K0					    			            								; Probe the material again
      M400									    					            					; Make sure all movement is complete
      set var.y_3 = move.axes[1].machinePosition	    							            		; Record the stop position y_third_measurement
      set var.x_3 = move.axes[0].machinePosition          		    								; Record the stop position x_third_measurement
      M400												                							; Make sure all data recording is complete
       
      ;calculation
      set var.delta_y = {var.y_3-var.y_2}
      set var.delta_x = {var.x_3-var.x_2}
      set var.m_1 = {var.delta_y/var.delta_x}					    	            					; m of the staight P2-P3
      set var.m_2 = {-(var.delta_x/var.delta_y)}					    			            		; m of perpendicilar to straight P2-P3
      set var.m_1_rads = {atan(var.m_1)}								    	            			; workpiece rotation in rad
      set var.m_1_deg = {degrees(var.m_1_rads)}	            										; workpiece rotation in degrees
      set var.m_2_rads = {atan(var.m_2)}						            			    			; workpiece rotation in rad
      set var.m_2_deg = {degrees(var.m_2_rads)}							            				; workpiece rotation in degrees
      
      ;calc the corner of workpiece
      set var.buff1 = {var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1}
      set var.buff2 = {var.y_2-((var.y_3-var.y_2)/(var.x_3-var.x_2)*var.x_2)}
      set var.buff3 = {((var.y_3-var.y_2)/(var.x_3-var.x_2))-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))}
      set var.x_4 = {(var.buff1-var.buff2)/var.buff3}
      set var.buff1 = {(-(var.x_3-var.x_2)/(var.y_3-var.y_2))}
      set var.buff2 = {((var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)-(var.y_2-((var.y_3-var.y_2)/(var.x_3-var.x_2)*var.x_2)))}
      set var.buff3 = {(((var.y_3-var.y_2)/(var.x_3-var.x_2))-(-(var.x_3-var.x_2)/(var.y_3-var.y_2)))}
      set var.buff4 = {(var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)}
      set var.y_4 = {var.buff1*var.buff2/var.buff3+var.buff4}
      var a = 0
      set var.a= {var.y_3-var.y_2}
      if var.a < 0														            	            ; workpiece Zero coordinates
          set var.x_5 = {var.x_4+(cos(atan(var.m_1))+cos(atan(var.m_2)))*var.d_probe/2}
          set var.y_5 = {var.y_4+(sin(atan(var.m_1))+sin(atan(var.m_2)))*var.d_probe/2}
      if var.a > 0
          set var.x_5 = {var.x_4+(cos(atan(var.m_1))-cos(atan(var.m_2)))*var.d_probe/2}
          set var.y_5 = {var.y_4+(sin(atan(var.m_1))-sin(atan(var.m_2)))*var.d_probe/2}
      if var.a =0
          set var.x_5 = {var.x_1+var.d_probe/2}
          set var.y_5 = {var.y_2+var.d_probe/2}
      echo "ZERO X = ", var.x_5," ; Y = ", var.y_5
      
      ;move above workpiece zero and set tool x&y to 0
      M558 F{var.speed}							    									            ; Set the initial movement speed
      G1 Y{move.axes[1].machinePosition-1}			    					            			; Move 1mm away from the material
      G1 Z{var.z0 + 5}									    	            						; Move above workpiece
      G1 X{var.x_5} Y{var.y_5}						            		    						; go to Zero
      M400
      G10 L20 X0 Y0						            						    					; set x&y to Zero
      G68 A0 B0 R{-var.m_1_deg}										    			            	; set Rotation
      
      posted in Firmware wishlist
      CanDo415undefined
      CanDo415
    • RE: Feature Request - workpiece angle compensation CNC

      @dc42
      i don't know why. sometimes it works. sometimes it fails.
      getting Error: line 89 column 20: meta command: unknown value 'atan'
      i have no idea.
      the calculation seems to be correct. but using G10 moves the tool right down to Y=0

      G68 A0 B0 R0
      var y_1 = 0
      var x_1 = 0
      var x_2 = 0
      var x_3 = 0
      var x_4 = 0
      var x_5 = 0
      var delta_x = 0
      var y_2 = 0
      var y_3 = 0
      var y_4 = 0
      var y_5 = 0
      var delta_y = 0
      var z0 = 0
      var d_probe = 0
      var z_probe = 0
      var m_1 = 0
      var m_2 = 0
      var m_1_rads = 0
      var m_1_deg = 0
      var m_2_rads = 0
      var m_2_deg = 0
      var buff1 = 0
      var buff2 = 0
      var buff3 = 0
      var speed = 1500
      
      M291 P"probe Diameter" R"enter diameter of probe" S5 							; Pop up box asking for operator input diameter of 
      set var.d_probe = input															; set the diameter of the probe
      M291 P"probe size in z" R"enter z-size of probe" S5 							; Pop up box asking for operator input diameter of 
      set var.z_probe = input															; set the size of the probe in z-direction (mostly same as diameter, for plate probes 0)
      M291 P"position probe over front left corner of workpiece" S2 X1 Y1 Z1			; Pop up box asking for operator input
      
      M558 F{var.speed/5}																; Set the initial movement speed
      G38.2 Z-10 P0 K0																; Probe the material on top
      M558 F50																		; Set the final probing speed
      G38.4 Z50 P0 K0																	; Move away from workpiece in Z
      M400																			; Make sure all movement is complete
      set var.z0 = move.axes[2].machinePosition										; Record the stop position z_first_measurement
      M400																			; Make sure all data recording is complete
      
      G1 Z{move.axes[2].machinePosition+5}											; Lift probe 5mm
      G1 X{move.axes[0].machinePosition-20} Y{move.axes[1].machinePosition+5}			; Move 20mm to the left of the initial point and 5mm deeper into the material direction
      G1 Z{var.z0 - 1 - var.z_probe / 2}												; Move to probe depth
      
      M558 F{var.speed}																; Set the initial movement speed
      G38.2 X1000 P0 K0																; Probe the material as a first pass
      M558 F50																		; Set the final probing speed
      G38.4 X-10 P0 K0																; Move away from workpiece in X
      M400																			; Make sure all movement is complete
      set var.y_1 = move.axes[1].machinePosition										; Record the stop position y_first_measurement
      set var.x_1 = move.axes[0].machinePosition										; Record the stop position x_first_measurement
      M400																			; Make sure all data recording is complete
      
      G1 X{move.axes[0].machinePosition-5}											; Move 5mm away from the material
      G1 Z{var.z0+5}																	; Move 5mm above material
      G1 X{move.axes[0].machinePosition+15} Y{move.axes[1].machinePosition-20}		; Move to point 2
      G1 Z{var.z0 - 1 - var.z_probe / 2}												; Move to probe depth
      
      M558 F{var.speed}																; Set the initial movement speed
      G38.2 Y1000 P0 K0																; Probe the material as a first pass
      M558 F50																		; Set the final probing speed
      G38.4 Y-10 P0 K0																; Probe the material again
      M400																			; Make sure all movement is complete
      set var.y_2 = move.axes[1].machinePosition										; Record the stop position y_second_measurement
      set var.x_2 = move.axes[0].machinePosition										; Record the stop position x_second_measurement
      M400																			; Make sure all data recording is complete
      
      G1 Y{move.axes[1].machinePosition-20}											; Move 10mm away from the material
      G1 X{move.axes[0].machinePosition+50}											; Move 50mm along the workpiece in X
      
      M558 F{var.speed}																; Set the initial movement speed
      G38.2 Y1000 P0 K0																; Probe the material as a first pass
      M558 F50																		; Set the final probing speed
      G38.4 Y-10 P0 K0																; Probe the material again
      M400																			; Make sure all movement is complete
      set var.y_3 = move.axes[1].machinePosition										; Record the stop position y_third_measurement
      set var.x_3 = move.axes[0].machinePosition										; Record the stop position x_third_measurement
      M400																			; Make sure all data recording is complete
      
      ;calculation
      set var.delta_y = {var.y_3-var.y_2}
      set var.delta_x = {var.x_3-var.x_2}
      set var.m_1 = {var.delta_y/var.delta_x}											; m of the staight P2-P3
      set var.m_2 = {-(var.delta_x/var.delta_y)}										; m of perpendicilar to straight P2-P3
      set var.m_1_rads = atan(var.m_1)												; workpiece rotation in rad
      set var.m_1_deg = degrees(var.m_1_rads)											; workpiece rotation in degrees
      set var.m_2_rads = atan(var.m_2)												; workpiece rotation in rad
      set var.m_2_deg = degrees(var.m_2_rads)											; workpiece rotation in degrees
      
      ;calc the corner of workpiece
      ;set var.x_4 = {((var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)-(var.y_2-((var.y_3-var.y_2)/(var.x_3-var.x_2)*var.x_2)))/(((var.y_3-var.y_2)/(var.x_3-var.x_2))-(-(var.x_3-var.x_2)/(var.y_3-var.y_2)))}
      ;set var.y_4 = {(-(var.x_3-var.x_2)/(var.y_3-var.y_2))<>*((var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)-(var.y_2-((var.y_3-var.y_2)/(var.x_3-var.x_2)*var.x_2)))<>/(((var.y_3-var.y_2)/(var.x_3-var.x_2))-(-(var.x_3-var.x_2)/(var.y_3-var.y_2)))+(var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)}
      
      
      set var.buff1 = {var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1}
      set var.buff2 = {var.y_2-((var.y_3-var.y_2)/(var.x_3-var.x_2)*var.x_2)}
      set var.buff3 = {((var.y_3-var.y_2)/(var.x_3-var.x_2))-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))}
      set var.x_4 = {(var.buff1-var.buff2)/var.buff3}
      set var.buff1 = {(-(var.x_3-var.x_2)/(var.y_3-var.y_2))}
      set var.buff2 = {((var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)-(var.y_2-((var.y_3-var.y_2)/(var.x_3-var.x_2)*var.x_2)))}
      set var.buff3 = {(((var.y_3-var.y_2)/(var.x_3-var.x_2))-(-(var.x_3-var.x_2)/(var.y_3-var.y_2)))+(var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)}
      set var.y_4 = {var.buff1*var.buff2/var.buff3}
      
      var a = 0
      set var.a= {var.y_3-var.y_2}
      ;if var.a >= 0														            	; workpiece Zero coordinates
      set var.x_5 = {var.x_4+(cos(var.m_1_deg)+cos(var.m_2_deg))*var.d_probe/2}
      set var.y_5 = {var.y_4+(sin(var.m_1_deg)+sin(var.m_2_deg))*var.d_probe/2}
      ;echo 'X= '{var.x_5}', Y= '{var.y_5}
      ;if var.a < 0
      ;set var.x_5 = {var.x_4+(cos(atan(var.m_1))-cos(atan(var.m_2)))*var.d_probe/2}
      ;set var.y_5 = {var.y_4+(sin(atan(var.m_1))-sin(atan(var.m_2)))*var.d_probe/2}
      ;echo X= {var.x_5}, Y= {var.y_5}
      
      ;move above workpiece zero and set tool x&y to 0
      M558 F{var.speed}																; Set the initial movement speed
      G1 Y{move.axes[1].machinePosition-1}											; Move 1mm away from the material
      G1 Z{var.z0 + 5}																; Move above workpiece
      G1 X{var.x_5} 
      G1 Y{var.y_5}														            ; go to Zero
      ;G10 L20 X0 Y0																	; set x&y to Zero
      ;G68 A0 B0 R{-var.m_1_deg}														; set Rotation
      
      posted in Firmware wishlist
      CanDo415undefined
      CanDo415
    • RE: Feature Request - workpiece angle compensation CNC

      @dc42
      thanks so far.
      Error promt is:
      M292 S3
      Error: Bad command: If (var.y_2) >= (var.y_3)
      Error: in file macro line 179 column 8: meta command: expected "'"

      Makro:

      G68 A0 B0 R0
      var y_1 = 0
      var x_1 = 0
      var x_2 = 0
      var x_3 = 0
      var x_4 = 0
      var x_5 = 0
      var delta_x = 0
      var y_2 = 0
      var y_3 = 0
      var y_4 = 0
      var y_5 = 0
      var delta_y = 0
      var z0 = 0
      var d_probe = 0
      var z_probe = 0
      var m_1 = 0
      var m_2 = 0
      var m_1_rads = 0
      var m_1_deg = 0
      var buff1 = 0
      var buff2 = 0
      var buff3 = 0
      var speed = 1500
      
      M291 P"probe Diameter" R"enter diameter of probe" S5 							; Pop up box asking for operator input diameter of 
      set var.d_probe = input															; set the diameter of the probe
      M291 P"probe size in z" R"enter z-size of probe" S5 							; Pop up box asking for operator input diameter of 
      set var.z_probe = input															; set the size of the probe in z-direction (mostly same as diameter, for plate probes 0)
      M291 P"position probe over front left corner of workpiece" S2 X1 Y1 Z1			; Pop up box asking for operator input
      
      M558 F{var.speed/5}																; Set the initial movement speed
      G38.2 Z-10 P0 K0																; Probe the material on top
      M558 F50																		; Set the final probing speed
      G38.4 Z50 P0 K0																	; Move away from workpiece in Z
      M400																			; Make sure all movement is complete
      set var.z0 = move.axes[2].machinePosition										; Record the stop position z_first_measurement
      M400																			; Make sure all data recording is complete
      
      G1 Z{move.axes[2].machinePosition+5}											; Lift probe 5mm
      G1 X{move.axes[0].machinePosition-20} Y{move.axes[1].machinePosition+5}			; Move 20mm to the left of the initial point and 5mm deeper into the material direction
      G1 Z{var.z0 - 1 - var.z_probe / 2}												; Move to probe depth
      
      M558 F{var.speed}																; Set the initial movement speed
      G38.2 X1000 P0 K0																; Probe the material as a first pass
      M558 F50																		; Set the final probing speed
      G38.4 X-10 P0 K0																; Move away from workpiece in X
      M400																			; Make sure all movement is complete
      set var.y_1 = move.axes[1].machinePosition										; Record the stop position y_first_measurement
      set var.x_1 = move.axes[0].machinePosition										; Record the stop position x_first_measurement
      M400																			; Make sure all data recording is complete
      
      G1 X{move.axes[0].machinePosition-5}											; Move 5mm away from the material
      G1 Z{var.z0+5}																	; Move 5mm above material
      G1 X{move.axes[0].machinePosition+15} Y{move.axes[1].machinePosition-20}		; Move to point 2
      G1 Z{var.z0 - 1 - var.z_probe / 2}												; Move to probe depth
      
      M558 F{var.speed}																; Set the initial movement speed
      G38.2 Y1000 P0 K0																; Probe the material as a first pass
      M558 F50																		; Set the final probing speed
      G38.4 Y-10 P0 K0																; Probe the material again
      M400																			; Make sure all movement is complete
      set var.y_2 = move.axes[1].machinePosition										; Record the stop position y_second_measurement
      set var.x_2 = move.axes[0].machinePosition										; Record the stop position x_second_measurement
      M400																			; Make sure all data recording is complete
      
      G1 Y{move.axes[1].machinePosition-20}											; Move 10mm away from the material
      G1 X{move.axes[0].machinePosition+50}											; Move 50mm along the workpiece in X
      
      M558 F{var.speed}																; Set the initial movement speed
      G38.2 Y1000 P0 K0																; Probe the material as a first pass
      M558 F50																		; Set the final probing speed
      G38.4 Y-10 P0 K0																; Probe the material again
      M400																			; Make sure all movement is complete
      set var.y_3 = move.axes[1].machinePosition										; Record the stop position y_third_measurement
      set var.x_3 = move.axes[0].machinePosition										; Record the stop position x_third_measurement
      M400																			; Make sure all data recording is complete
      
      ;calculation
      set var.delta_y = {var.y_3-var.y_2}
      set var.delta_x = {var.x_3-var.x_2}
      set var.m_1 = {var.delta_y/var.delta_x}											; m of the staight P2-P3
      set var.m_2 = {(-var.delta_x)/var.delta_y}										; m of perpendicilar to straight P2-P3
      set var.m_1_rads = atan(var.m_1)												; workpiece rotation in rad
      set var.m_1_deg = degrees(var.m_1_rads)											; workpiece rotation in degrees
      
      ;calc the corner of workpiece
      ;set var.x_4 = {((var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)-(var.y_2-((var.y_3-var.y_2)/(var.x_3-var.x_2)*var.x_2)))/(((var.y_3-var.y_2)/(var.x_3-var.x_2))-(-(var.x_3-var.x_2)/(var.y_3-var.y_2)))}
      ;set var.y_4 = {(-(var.x_3-var.x_2)/(var.y_3-var.y_2))<>*((var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)-(var.y_2-((var.y_3-var.y_2)/(var.x_3-var.x_2)*var.x_2)))<>/(((var.y_3-var.y_2)/(var.x_3-var.x_2))-(-(var.x_3-var.x_2)/(var.y_3-var.y_2)))+(var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)}
      
      
      set var.buff1 = {var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1}
      set var.buff2 = {var.y_2-((var.y_3-var.y_2)/(var.x_3-var.x_2)*var.x_2)}
      set var.buff3 = {((var.y_3-var.y_2)/(var.x_3-var.x_2))-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))}
      set var.x_4 = {(var.buff1-var.buff2)/var.buff3}
      set var.buff1 = {(-(var.x_3-var.x_2)/(var.y_3-var.y_2))}
      set var.buff2 = {((var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)-(var.y_2-((var.y_3-var.y_2)/(var.x_3-var.x_2)*var.x_2)))}
      set var.buff3 = {(((var.y_3-var.y_2)/(var.x_3-var.x_2))-(-(var.x_3-var.x_2)/(var.y_3-var.y_2)))+(var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)}
      set var.y_4 = {var.buff1*var.buff2/var.buff3}
      
      If (var.y_2) >= (var.y_3)																; workpiece Zero coordinates
      set var.x_5 = {var.x_4+(cos(atan(var.m_1))+cos(atan(var.m_2)))*var.d_probe/2}
      set var.y_5 = {var.y_4+(sin(atan(var.m_1))+sin(atan(var.m_2)))*var.d_probe/2}
      echo 'X= '{var.x_5}', Y= '{var.y_5}
      If (var.y_2) < (var.y_3)
      set var.x_5 = {var.x_4+(cos(atan(var.m_1))-cos(atan(var.m_2)))*var.d_probe/2}
      set var.y_5 = {var.y_4+(sin(atan(var.m_1))-sin(atan(var.m_2)))*var.d_probe/2}
      ;echo X= {var.x_5}, Y= {var.y_5}
      
      ;move above workpiece zero and set tool x&y to 0
      M558 F{var.speed}																; Set the initial movement speed
      G1 Y{move.axes[1].machinePosition-1}											; Move 1mm away from the material
      G1 Z{var.z0 + 5}																; Move above workpiece
      G1 X{var.x_5} Y{var.y_5}														; go to Zero
      G10 X0 Y0																		; set x&y to Zero
      G68 A0 B0 R{-var.m_1_deg}														; set Rotation
      

      X seems to be working, on a psitive angle.
      Y is getting some wrong outputs

      posted in Firmware wishlist
      CanDo415undefined
      CanDo415
    • RE: Feature Request - workpiece angle compensation CNC

      @Exerqtor
      i tried this before in another case... everything unter the 2nd if wasnt done if the if doesn't match.
      the problem of the missing end if

      posted in Firmware wishlist
      CanDo415undefined
      CanDo415
    • RE: Feature Request - workpiece angle compensation CNC

      @Exerqtor
      like:

      If var.y_2>var.y_3																; workpiece Zero coordinates
      set var.x_5=var.x_4+(COS(ARCTAN(var.m_1))+COS(ARCTAN(var.m_2)))*var.d_probe/2
      set var.y_5=var.y_4+(SIN(ARCTAN(var.m_1))+SIN(ARCTAN(var.m_2)))*var.d_probe/2
      end if
      
      If var.y_2<var.y_3
      set var.x_5=var.x_4+(COS(ARCTAN(var.m_1))-COS(ARCTAN(var.m_2)))*var.d_probe/2
      set var.y_5=var.y_4+(SIN(ARCTAN(var.m_1))-SIN(ARCTAN(var.m_2)))*var.d_probe/2
      end if
      

      ?

      posted in Firmware wishlist
      CanDo415undefined
      CanDo415
    • RE: Feature Request - workpiece angle compensation CNC

      @jay_s_uk
      i modified it quite a bit. some points are still not ready.
      I'm not shure how to ent the if passage.
      end if seems not to work

      var y_1 = 0
      var x_1 = 0
      var x_2 = 0
      var x_3 = 0
      var x_4 = 0
      var x_5 = 0
      var delta_x = 0
      var y_2 = 0
      var y_3 = 0
      var y_4 = 0
      var y_5 = 0
      var delta_y = 0
      var z0 = 0
      var d_probe = 0
      var m_1 = 0
      var m_2 = 0
      var m_1_tan_rads = 0
      var m_1_tan_deg = 0
       
      M291 P"position probe over front left corner of workpiece" S2 X1 Y1 Z1	; Pop up box asking for operator input
      M558 F300																		; Set the initial probing speed
      G38.2 Z-60 P0 K0																; Probe the material as a first pass
      M558 F50																		; Set the final probing speed
      G38.4 Z50 P0 K0	                                                                                                                                ; Move away from workpiece in Z
      M400																			        ; Make sure all movement is complete
      set var.z0=move.axes[2].machinePosition	                			    		                ; Record the stop position y_first_measurement
      M400																			        ; Make sure all data recording is complete
      
      G1 Z{move.axes[2].machinePosition+5}										; Move along the workpiece in X
      G1 X{move.axes[0].machinePosition-20}										; Move 5mm away from the material
      G1 Y{move.axes[1].machinePosition+5}										; Move 5mm away from the material
      G1 Z{move.axes[2].machinePosition-3}											; Move along the workpiece in X
      
      M558 F1000																		; Set the initial probing speed
      G38.2 X100 P0 K0																; Probe the material as a first pass
      M558 F50																		; Set the final probing speed
      G38.4 X-10 P0 K0	                                                                                                                        ; Move away from workpiece in X
      M400																			        ; Make sure all movement is complete
      set var.y_1=move.axes[1].machinePosition							    		        ; Record the stop position y_first_measurement
      set var.x_1=move.axes[0].machinePosition							    		        ; Record the stop position x_first_measurement
      M400																			        ; Make sure all data recording is complete
      
      G1 X{move.axes[0].machinePosition-5}											; Move 5mm away from the material
      G1 Z{move.axes[2].machinePosition+10}										; Move along the workpiece in X
      G1 X{move.axes[0].machinePosition+15}										; Move 5mm away from the material
      G1 Y{move.axes[1].machinePosition-20}										; Move 5mm away from the material
      G1 Z{move.axes[2].machinePosition}	    										; Move along the workpiece in X
      
      M558 F1000																		; Set the initial probing speed
      G38.2 Y100 P0 K0																; Probe the material as a first pass
      M558 F50																		; Set the final probing speed
      G38.4 Y-10 P0 K0															        ; Probe the material again
      M400																			        ; Make sure all movement is complete
      set var.y_2=move.axes[1].machinePosition								    	        ; Record the stop position y_first_measurement
      set var.x_2=move.axes[0].machinePosition					    				        ; Record the stop position x_first_measurement
      M400																			        ; Make sure all data recording is complete
      G1 Y{move.axes[1].machinePosition-50}										; Move 5mm away from the material
      G1 X{move.axes[0].machinePosition+50}										; Move along the workpiece in X
      M558 F1000																		; Set the initial probing speed
      G38.2 Y100 P0 K0																; Probe the material as a first pass
      M558 F50																		; Set the final probing speed
      G38.4 Y-10 P0 K0																; Probe the material again
      M400																			        ; Make sure all movement is complete
      set var.y_3=move.axes[1].machinePosition								    	        ; Record the stop position y_second_measurement
      set var.x_3=move.axes[0].machinePosition								    	        ; Record the stop position x_second_measurement
      M400																			        ; Make sure all data recording is complete
      M291 P"Probe Diameter" R"enter diameter of probe" S5 L0 H10			; Pop up box asking for operator input diameter of 
      set var.d_probe=input															; set the diameter of the probe
      ;calculation
      set var.delta_y={var.y_3-var.y_2}
      set var.delta_x={var.x_3-var.x_2}
      set var.m_1={var.delta_y/var.delta_x}											; m of the staight P2-P3
      set var.m_2={(-var.delta_x)/var.delta_y}										        ; m of perpendicilar to straight P2-P3
      set var.m_1_tan_rads=atan(var.m_1)
      set var.m_1_tan_deg=degrees(var.m_1_tan_rads)
      
      ;calc the corner of workpeace
      set var.x_4=((var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)-(var.y_2-((var.y_3-var.y_2)/(var.x_3-var.x_2)*var.x_2)))/(((var.y_3-var.y_2)/(var.x_3-var.x_2))-(-(var.x_3-var.x_2)/(var.y_3-var.y_2)))
      set var.y_4=(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*((var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)-(var.y_2-((var.y_3-var.y_2)/(var.x_3-var.x_2)*var.x_2)))/(((var.y_3-var.y_2)/(var.x_3-var.x_2))-(-(var.x_3-var.x_2)/(var.y_3-var.y_2)))+(var.y_1-(-(var.x_3-var.x_2)/(var.y_3-var.y_2))*var.x_1)
      If var.y_2>var.y_3																; workpiece Zero coordinates
      set var.x_5=var.x_4+(COS(ARCTAN(var.m_1))+COS(ARCTAN(var.m_2)))*var.d_probe/2
      set var.y_5=var.y_4+(SIN(ARCTAN(var.m_1))+SIN(ARCTAN(var.m_2)))*var.d_probe/2
      If var.y_2<var.y_3
      set var.x_5=var.x_4+(COS(ARCTAN(var.m_1))-COS(ARCTAN(var.m_2)))*var.d_probe/2
      set var.y_5=var.y_4+(SIN(ARCTAN(var.m_1))-SIN(ARCTAN(var.m_2)))*var.d_probe/2
      
      ;move over workpiece zero and set tool x&y to 0
      G1 Y{move.axes[1].machinePosition-1}											        ; Move 1mm away from the material
      G1 Z{move.axes[2].machinePosition+10}											; Move above workpiece
      
      ;G68 A0 B0 R{-var.m_1_tan_deg}                                                                                                        ; set Rotation
      
      posted in Firmware wishlist
      CanDo415undefined
      CanDo415
    • RE: Feature Request - workpiece angle compensation CNC

      G68 A0 B0 R{-var.y_x_tan_rads}
      the "-" seems important. otherwise the system gets turned the wrong way round

      posted in Firmware wishlist
      CanDo415undefined
      CanDo415
    • RE: Feature Request - workpiece angle compensation CNC

      @OwenD
      thank you for showing up the problem

      posted in Firmware wishlist
      CanDo415undefined
      CanDo415
    • RE: Feature Request - workpiece angle compensation CNC

      @droftarts
      jay corrected it already.
      the problem shifted to the degrees command

      posted in Firmware wishlist
      CanDo415undefined
      CanDo415
    • RE: Feature Request - workpiece angle compensation CNC

      @dc42
      maybe he can help?

      posted in Firmware wishlist
      CanDo415undefined
      CanDo415