|
|
|
@ -1,9 +1,7 @@ |
|
|
|
import FreeCAD |
|
|
|
import FreeCAD |
|
|
|
import numpy as np |
|
|
|
|
|
|
|
import math |
|
|
|
import math |
|
|
|
import time |
|
|
|
import time |
|
|
|
import Part |
|
|
|
import Part |
|
|
|
import re |
|
|
|
|
|
|
|
import copy |
|
|
|
import copy |
|
|
|
import os |
|
|
|
import os |
|
|
|
|
|
|
|
|
|
|
|
@ -37,6 +35,8 @@ BAS(#PTP_PARAMS,100) |
|
|
|
PTP Xxp1 |
|
|
|
PTP Xxp1 |
|
|
|
;ENDFOLD""" |
|
|
|
;ENDFOLD""" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
z_up_pose = """{X 0.0, Y 0.0, Z 50.0, A 0.0, B 0.0, C 0.0, E1 0.0, E2 0.0}""" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Kuka_Prog: |
|
|
|
class Kuka_Prog: |
|
|
|
@ -138,7 +138,7 @@ class Kuka_Prog: |
|
|
|
if self.simulation: |
|
|
|
if self.simulation: |
|
|
|
filename = "kvt_{}_sim.src".format(article) |
|
|
|
filename = "kvt_{}_sim.src".format(article) |
|
|
|
else: |
|
|
|
else: |
|
|
|
filename = "kvt_{}.src" |
|
|
|
filename = "kvt_{}.src".format(article) |
|
|
|
|
|
|
|
|
|
|
|
srcfile = open(os.path.join(path, filename), 'w') |
|
|
|
srcfile = open(os.path.join(path, filename), 'w') |
|
|
|
srcfile.write(header_src) |
|
|
|
srcfile.write(header_src) |
|
|
|
@ -162,18 +162,23 @@ class Kuka_Prog: |
|
|
|
CDIS = 2.3 |
|
|
|
CDIS = 2.3 |
|
|
|
CVEL = 95.0 |
|
|
|
CVEL = 95.0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
srcfile.write(";- Movement paramters\n") |
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vmax) |
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vmax) |
|
|
|
srcfile.write("$APO.CDIS = %f ; mm \n" % CDIS) |
|
|
|
srcfile.write("$APO.CDIS = %f ; mm \n" % CDIS) |
|
|
|
srcfile.write("$APO.CVEL = %f ; percent \n" % CVEL) |
|
|
|
srcfile.write("$APO.CVEL = %f ; percent \n" % CVEL) |
|
|
|
|
|
|
|
|
|
|
|
srcfile.write("$ANOUT[1] = %f ; \n" % self.laser_power) |
|
|
|
srcfile.write(";- Input/Output settings\n") |
|
|
|
|
|
|
|
srcfile.write("$ANOUT[1] = %f ; Set laser power\n" % self.laser_power) |
|
|
|
|
|
|
|
srcfile.write("$OUT[%d] = FALSE ; Set Laser off\n" % self.use_laser_out) # don't know but must be on |
|
|
|
if not self.simulation: |
|
|
|
if not self.simulation: |
|
|
|
srcfile.write("$OUT[%d] = TRUE ; \n" % self.powder_out) |
|
|
|
srcfile.write("$OUT[2] = TRUE ; Set Laser activation on\n") # don't know but must be on |
|
|
|
srcfile.write("$OUT[%d] = TRUE ; \n" % self.inert_gas_out) |
|
|
|
srcfile.write("$OUT[%d] = TRUE ; Set powder on \n" % self.powder_out) |
|
|
|
|
|
|
|
srcfile.write("$OUT[%d] = TRUE ; Set inert gas on \n" % self.inert_gas_out) |
|
|
|
else: |
|
|
|
else: |
|
|
|
srcfile.write("$OUT[%d] = FALSE ; \n" % self.powder_out) |
|
|
|
srcfile.write("$OUT[%d] = FALSE ; set powder off \n" % self.powder_out) |
|
|
|
srcfile.write("$OUT[%d] = FALSE ; \n" % self.inert_gas_out) |
|
|
|
srcfile.write("$OUT[%d] = FALSE ; set inert gas off\n" % self.inert_gas_out) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
srcfile.write(";- Starting point\n") |
|
|
|
srcfile.write("point1 = {X -110.0, Y 0.0, Z 0.0, A 0.0000, B 0.0000, C 0.0000, E1 0.0000, E2 0.0000}\n") |
|
|
|
srcfile.write("point1 = {X -110.0, Y 0.0, Z 0.0, A 0.0000, B 0.0000, C 0.0000, E1 0.0000, E2 0.0000}\n") |
|
|
|
srcfile.write("point1.S = startp.S\n") |
|
|
|
srcfile.write("point1.S = startp.S\n") |
|
|
|
srcfile.write("point1.T = startp.T\n") |
|
|
|
srcfile.write("point1.T = startp.T\n") |
|
|
|
@ -182,13 +187,14 @@ class Kuka_Prog: |
|
|
|
srcfile.write(";- Contourpaths\n") |
|
|
|
srcfile.write(";- Contourpaths\n") |
|
|
|
for (poses, seg_type) in self.contour_path_list: |
|
|
|
for (poses, seg_type) in self.contour_path_list: |
|
|
|
# start laser code |
|
|
|
# start laser code |
|
|
|
srcfile.write(";- Turn on Laser\n") |
|
|
|
srcfile.write(";- Move to pose up from contour start\n") |
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vmax) |
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s (vmax)\n" % self.vmax) |
|
|
|
srcfile.write("LIN_REL {Z 90.0} C_VEL; GENERATED\n") |
|
|
|
srcfile.write("LIN_REL {Z 90.0} C_VEL; relative 90mm up\n") |
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vproc) |
|
|
|
srcfile.write("LIN {}:{} C_VEL; move to start point but save z distance\n".format(poses[0].translate_with(self.baseorigin).to_string(), z_up_pose)) |
|
|
|
if seg_type == 'LIN': |
|
|
|
if seg_type == 'LIN': |
|
|
|
srcfile.write("LIN {} C_VEL; GENERATED\n".format(poses[0].translate_with(self.baseorigin).to_string())) |
|
|
|
srcfile.write("LIN {} C_VEL; GENERATED\n".format(poses[0].translate_with(self.baseorigin).to_string())) |
|
|
|
srcfile.write("TRIGGER WHEN DISTANCE=0 DELAY=0 DO $OUT[%d]=True\n" % self.use_laser_out) |
|
|
|
srcfile.write("TRIGGER WHEN DISTANCE=0 DELAY=0 DO $OUT[%d]=True ; Turn on Laser at point\n" % self.use_laser_out) |
|
|
|
|
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s (vproc)\n" % self.vproc) |
|
|
|
for pose in poses[1:]: |
|
|
|
for pose in poses[1:]: |
|
|
|
srcfile.write("LIN {} C_VEL; GENERATED\n".format(pose.translate_with(self.baseorigin).to_string())) |
|
|
|
srcfile.write("LIN {} C_VEL; GENERATED\n".format(pose.translate_with(self.baseorigin).to_string())) |
|
|
|
|
|
|
|
|
|
|
|
@ -204,24 +210,25 @@ class Kuka_Prog: |
|
|
|
|
|
|
|
|
|
|
|
srcfile.write(";- Hatchlines\n") |
|
|
|
srcfile.write(";- Hatchlines\n") |
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vmax) |
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vmax) |
|
|
|
srcfile.write("LIN_REL {Z 90.0} C_VEL; GENERATED\n") |
|
|
|
srcfile.write("LIN_REL {Z 90.0} C_VEL; just move up \n") |
|
|
|
|
|
|
|
(line, seg_type) = self.hatchlines_list[0] |
|
|
|
|
|
|
|
srcfile.write("LIN {}:{} C_VEL; move to first hatch point but with z_up\n".format(line[0].translate_with(self.baseorigin).to_string(), z_up_pose)) |
|
|
|
for (line, seg_type) in self.hatchlines_list: |
|
|
|
for (line, seg_type) in self.hatchlines_list: |
|
|
|
# start laser code |
|
|
|
# start laser code |
|
|
|
srcfile.write(";- Hatchline\n") |
|
|
|
srcfile.write(";- Hatchline\n") |
|
|
|
if seg_type == 'LIN': |
|
|
|
if seg_type == 'LIN': |
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vmax) |
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vmax) |
|
|
|
srcfile.write("LIN {} C_VEL; GENERATED\n".format(line[0].translate_with(self.baseorigin).to_string())) |
|
|
|
srcfile.write("LIN {} C_VEL; GENERATED\n".format(line[0].translate_with(self.baseorigin).to_string())) |
|
|
|
srcfile.write("TRIGGER WHEN DISTANCE=0 DELAY=0 DO $OUT[%d]=True\n" % self.use_laser_out) |
|
|
|
srcfile.write("TRIGGER WHEN DISTANCE=0 DELAY=0 DO $OUT[%d]=True; Turn on Laser at point \n" % self.use_laser_out) |
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vproc) |
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vproc) |
|
|
|
srcfile.write("LIN {} C_VEL; GENERATED\n".format(line[1].translate_with(self.baseorigin).to_string())) |
|
|
|
srcfile.write("LIN {} C_VEL; GENERATED\n".format(line[1].translate_with(self.baseorigin).to_string())) |
|
|
|
srcfile.write("TRIGGER WHEN DISTANCE=0 DELAY=0 DO $OUT[%d]=FALSE\n" % self.use_laser_out) |
|
|
|
srcfile.write("TRIGGER WHEN DISTANCE=0 DELAY=0 DO $OUT[%d]=FALSE; Turn off Laser at point\n" % self.use_laser_out) |
|
|
|
# end of subroutine |
|
|
|
# end of subroutine |
|
|
|
srcfile.write("$OUT[%d] = FALSE\n" % self.use_laser_out) |
|
|
|
srcfile.write("$OUT[%d] = FALSE; laser off\n" % self.use_laser_out) |
|
|
|
srcfile.write("$OUT[%d] = FALSE\n" % self.powder_out) |
|
|
|
srcfile.write("$OUT[%d] = FALSE; powder off\n" % self.powder_out) |
|
|
|
srcfile.write("$OUT[%d] = FALSE\n" % self.inert_gas_out) |
|
|
|
srcfile.write("$OUT[%d] = FALSE; inert gas off\n" % self.inert_gas_out) |
|
|
|
srcfile.write("startp=$POS_ACT\n") |
|
|
|
|
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vmax) |
|
|
|
srcfile.write("$VEL.CP = %f ; m/s ; m/s \n" % self.vmax) |
|
|
|
#srcfile.write("LIN_REL {Z 90.0} C_DIS; GENERATED\n") |
|
|
|
srcfile.write(";- Move to HOME position\n") |
|
|
|
srcfile.write("PTP {A1 -33.31, A2 -104.71, A3 114.60, A4 282.66, A5 -39.21, A6 -104.87, E1 -90, E2 1.0}\n") |
|
|
|
srcfile.write("PTP {A1 -33.31, A2 -104.71, A3 114.60, A4 282.66, A5 -39.21, A6 -104.87, E1 -90, E2 1.0}\n") |
|
|
|
srcfile.write("\n;------------- end ------------\n") |
|
|
|
srcfile.write("\n;------------- end ------------\n") |
|
|
|
srcfile.write("END \n\n") |
|
|
|
srcfile.write("END \n\n") |
|
|
|
|