52     """Prints a pose target"""    54     return (
'%.3f, %.3f, %.3f, %.3f, %.3f, %.3f' % (x,y,z,r,p,w))
    57     """Prints a joint target"""    59     data = [
',',
',',
',',
',',
',',
'']
    60     for i 
in range(len(angles)):
    62         str = str + (
'%.3f%s ' %  (angles[i],data[i]))
    69     """Robot post object"""    86     def __init__(self, robotpost=None, robotname=None, robot_axes = 6, **kwargs):
    97             self.
addline(
'    Public Sub MAIN')
    98             self.
addline(
'        Dim prof1 As New Profile')
    99             self.
addline(
'        Dim loc1 As New Location')
   100             self.
addline(
'        prof1.Speed = 40')
   101             self.
addline(
'        prof1.Straight = True')
   102             self.
addline(
'        Controller.PowerEnabled = 1')
   103             self.
addline(
'        Robot.Attached = 1')
   111     def ProgSave(self, folder, progname, ask_user=True, show_result=True):
   112         progname = 
'Main' + 
'.' + self.
PROG_EXT   114             filesave = 
getSaveFile(folder, progname, 
'Save program as...')
   115             if filesave 
is not None:
   116                 filesave = filesave.name
   120             filesave = folder + 
'/' + progname
   121         fid = open(filesave, 
"w")
   124         print(
'SAVED: %s\n' % filesave)
   129             if type(show_result) 
is str:
   132                 p = subprocess.Popen([show_result, filesave])   
   133             elif type(show_result) 
is list:
   135                 p = subprocess.Popen(show_result + [filesave])   
   139                 os.startfile(filesave)  
   141             if len(self.
LOG) > 0:
   142                 mbox(
'Program generation LOG:\n\n' + self.
LOG)
   145         """Send a program to the robot using the provided parameters. This method is executed right after ProgSave if we selected the option "Send Program to Robot".   146         The connection parameters must be provided in the robot connection menu of RoboDK"""   149     def MoveJ(self, pose, joints, conf_RLF=None):
   150         """Add a joint movement"""   154     def MoveL(self, pose, joints, conf_RLF=None):
   155         """Add a linear movement"""   159     def MoveC(self, pose1, joints1, pose2, joints2, conf_RLF_1=None, conf_RLF_2=None):
   160         """Add a circular movement"""   165     def setFrame(self, pose, frame_id = None, frame_name = None):
   166         """Change the robot reference frame"""   170     def setTool(self, pose, tool_id = None, tool_name = None):
   171         """Change the robot TCP"""   176         """Pause the robot program"""   177         self.
addline(
'        Move.Delay(%s)' % (time_ms*0.001))
   180         """Changes the robot speed (in mm/s)"""   181         self.
addline(
'        prof1.Speed = %0.2f' % speed_mms)
   184         """Changes the robot acceleration (in %)"""   185         self.
addline(
'        prof1.Accel = %0.2f' % accel_ptg)
   186         self.
addline(
'        prof1.Decel = %0.2f' % accel_ptg)
   189         """Changes the robot joint speed (in deg/s)"""   190         self.
addlog(
'setSpeedJoints not defined')
   193         """Changes the robot joint acceleration (in deg/s2)"""   194         self.
addlog(
'setAccelerationJoints not defined')
   197         """Changes the zone data approach (makes the movement more smooth)"""   198         self.
addlog(
'setZoneData not defined (%.1f mm)' % zone_mm)
   201         """Sets a variable (output) to a given value"""   202         if type(io_var) != str:  
   203             io_var = 
'OUT[%s]' % str(io_var)        
   204         if type(io_value) != str: 
   211         self.
addline(
'%s=%s' % (io_var, io_value))
   213     def waitDI(self, io_var, io_value, timeout_ms=-1):
   214         """Waits for an input io_var to attain a given value io_value. Optionally, a timeout can be provided."""   215         if type(io_var) != str:  
   216             io_var = 
'IN[%s]' % str(io_var)        
   217         if type(io_value) != str: 
   225             self.
addline(
'WAIT FOR %s==%s' % (io_var, io_value))
   227             self.
addline(
'WAIT FOR %s==%s TIMEOUT=%.1f' % (io_var, io_value, timeout_ms))   
   229     def RunCode(self, code, is_function_call = False):
   230         """Adds code or a function call"""   232             code.replace(
' ',
'_')
   233             if not code.endswith(
')'):
   240         """Display a message in the robot controller screen (teach pendant)"""   244             self.
addline(
'Print "%s"' % message)
   248         """Add a program line"""   249         self.
PROG = self.
PROG + newline + 
'\n'   252         """Add a log message"""   253         self.
LOG = self.
LOG + newline + 
'\n'   258     [x,y,z,r,p,w] = xyzrpw
   268     return Mat([[cb*ca, ca*sc*sb - cc*sa, sc*sa + cc*ca*sb, x],[cb*sa, cc*ca + sc*sb*sa, cc*sb*sa - ca*sc, y],[-sb, cb*sc, cc*cb, z],[0,0,0,1]])
   271     """Test the post with a basic program"""   275     robot.ProgStart(
"Program")
   277     robot.MoveJ(
Pose([200, 200, 500, 180, 0, 180]), [-46.18419, -6.77518, -20.54925, 71.38674, 49.58727, -302.54752] )
   278     robot.MoveL(
Pose([200, 250, 15, 180, 0, -150]), [-41.62707, -8.89064, -30.01809, 60.62329, 49.66749, -258.98418] )
   279     robot.MoveC(
Pose([200, 200, 34, 180, 0, -150]), [-43.73892, -3.91728, -35.77935, 58.57566, 54.11615, -253.81122],
Pose([200, 200, 15, 180, 0, -150]), [-43.73892, -3.91728, -35.77935, 58.57566, 54.11615, -253.81122])
   287     if len(robot.LOG) > 0:
   288         mbox(
'Program generation LOG:\n\n' + robot.LOG)
   290     input(
"Press Enter to close...")
   292 if __name__ == 
"__main__":
   293     """Function to call when the module is executed by itself: test""" def MoveJ(self, pose, joints, conf_RLF=None)
def addline(self, newline)
def ProgFinish(self, progname)
def setZoneData(self, zone_mm)
def setTool(self, pose, tool_id=None, tool_name=None)
def __init__(self, robotpost=None, robotname=None, robot_axes=6, kwargs)
def setDO(self, io_var, io_value)
def UploadFTP(program, robot_ip, remote_path, ftp_user, ftp_pass)
def ProgSave(self, folder, progname, ask_user=True, show_result=True)
def ProgSendRobot(self, robot_ip, remote_path, ftp_user, ftp_pass)
def mbox(msg, b1='OK', b2='Cancel', frame=True, t=False, entry=None)
def waitDI(self, io_var, io_value, timeout_ms=-1)
def RunCode(self, code, is_function_call=False)
def addlog(self, newline)
def RunMessage(self, message, iscomment=False)
def Acceleration(self, accel_ptg)
def setSpeedJoints(self, speed_degs)
def setAccelerationJoints(self, accel_degss)
def setSpeed(self, speed_mms)
def getSaveFile(strdir='C:\\', strfile='file.txt', strtitle='Save file as ...')
def MoveC(self, pose1, joints1, pose2, joints2, conf_RLF_1=None, conf_RLF_2=None)
def setFrame(self, pose, frame_id=None, frame_name=None)
def MoveL(self, pose, joints, conf_RLF=None)
def ProgStart(self, progname)