This is amazing and did exactly what I was looking for. Thanks so much, incredible.
While you can do this in Karel, unless you need to do this on the fly on a real controller, I wouldn't recommend it. I just went through this, and it is not trivial.
You can use Targets in roboguide to import points from a CSV file, and then generate a path from them, I find them pretty cumbersome to work with.
EnergyAddict's route is the I typically take. My customers will usually provide me with a series of points they want to measure as an excel file, and I use Excel's vba engine to generate a .ls file I can then import into the robot.
Here is a bit of VBA code to get you started:VBA Display MoreRem Option Explicit Sub Fanuc_ls_Output() progName = InputBox("Input the name of the program. Omit the .ls extenstion.") If progName = "" Then Exit Sub myFile = ActiveWorkbook.Path & "\" & progName & ".ls" Open myFile For Output As #1 Header = _ "/PROG " & UCase(progName) & vbCrLf & _ "/ATTR" & vbCrLf & _ "OWNER = MNEDITOR;" & vbCrLf & _ "COMMENT = ""Insert Comment"";" & vbCrLf & _ "PROG_SIZE = 7326;" & vbCrLf & _ "CREATE = DATE 17-11-17 TIME 07:43:46;" & vbCrLf & _ "MODIFIED = DATE 17-11-17 TIME 07:43:46;" & vbCrLf & _ "FILE_NAME = ;" & vbCrLf & _ "VERSION = 0;" & vbCrLf & _ "LINE_COUNT = 267;" & vbCrLf & _ "MEMORY_SIZE = 8102;" & vbCrLf & _ "PROTECT = READ_WRITE;" & vbCrLf & _ "TCD: STACK_SIZE = 0," & vbCrLf & _ " TASK_PRIORITY = 50," & vbCrLf & _ " TIME_SLICE = 0," & vbCrLf Header = Header & _ " BUSY_LAMP_OFF = 0," & vbCrLf & _ " ABORT_REQUEST = 0," & vbCrLf & _ " PAUSE_REQUEST = 0;" & vbCrLf & _ "DEFAULT_GROUP = 1,*,*,*,*;" & vbCrLf & _ "CONTROL_CODE = 00000000 00000000;" & vbCrLf & _ "/APPL" & vbCrLf & _ "/MN" & vbCrLf Header = Header & _ " : ! ****************************** ;" & vbCrLf & _ " : ! Robot: XX ;" & vbCrLf & _ " : ! ****************************** ;" & vbCrLf & _ " : ;" & vbCrLf Header = Header & _ " : UTOOL_NUM=1 ;" & vbCrLf & _ " : UFRAME_NUM=2 ;" & vbCrLf & _ " : ;" Print #1, Header Rem Next definitions should all be the same row length. Set pointName = Range("A8:A300") Set pointXYZ = Range("B8:D300") codeTP = "" codePos = "" For i = 1 To pointName.Rows.Count Rem Ignore the line if it is hidden by the smart filter. rowHidden = cellIsOnHiddenRow(pointName.Cells(i, 1)) If Not rowHidden Then Rem Exit early if we reach the end. If pointName.Cells(i, 1).Value = "" Then Exit For codeTP = codeTP & _ " :J P[" & i & "] 100% FINE ;" & vbCrLf & _ " : ;" & vbCrLf codePos = codePos & _ "P[" & i & ":""" & pointName.Cells(i, 1).Value & """]{" & vbCrLf & _ " GP1:" & vbCrLf & _ vbTab & "UF : 2, UT : 1, CONFIG : 'N U T, 0, 0, 0'," & vbCrLf & _ vbTab & "X = " & Format(((pointXYZ.Cells(i, 1).Value)), "###0.000") & " mm, Y = " & Format((pointXYZ.Cells(i, 2).Value), "###0.000") & " mm, Z = " & Format((pointXYZ.Cells(i, 3).Value), "###0.000") & " mm," & vbCrLf & _ vbTab & "W = -90.000 deg, P = 90.000 deg, R = 0.000 deg" & vbCrLf & _ "};" & vbCrLf End If Next Print #1, codeTP Print #1, "/POS" Print #1, codePos Print #1, "/END" Close #1 MsgBox ("File Created at:" & vbCrLf & myFile) End Sub ' Is the row which referenceCell is on hidden by a filter? Public Function cellIsOnHiddenRow(referenceCell As Range) As Boolean Dim referenceSheet As Worksheet Dim rowNumber As Long Set referenceSheet = referenceCell.Parent rowNumber = referenceCell.Row cellIsOnHiddenRow = referenceSheet.Rows(rowNumber).EntireRow.Hidden End Function