@gixxerfast & @fcwilt
yes. -5
@Gixxerfast
checked the Endstopcontroller, rewired it. now it works fine
@gixxerfast & @fcwilt
yes. -5
@Gixxerfast
checked the Endstopcontroller, rewired it. now it works fine
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.
@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.
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
@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
@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
@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
@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
?
@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
G68 A0 B0 R{-var.y_x_tan_rads}
the "-" seems important. otherwise the system gets turned the wrong way round
@OwenD
thank you for showing up the problem
@droftarts
jay corrected it already.
the problem shifted to the degrees command