Изменения документа Макрос для формирования карты высот
Редактировал(а) Edgar Allan Poe 2024/11/14 17:01
От версии 4.1
отредактировано writer
на 2022/06/23 14:50
на 2022/06/23 14:50
Изменить комментарий:
К данной версии нет комментариев
К версии 9.1
отредактировано Edgar Allan Poe
на 2024/11/14 17:01
на 2024/11/14 17:01
Изменить комментарий:
К данной версии нет комментариев
Сводка
-
Свойства страницы (3 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Автор документа
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. Knetyaga1 +XWiki.afirsov - Теги
-
... ... @@ -1,0 +1,1 @@ 1 +macros|макросы|probing - Содержимое
-
... ... @@ -1,62 +1,69 @@ 1 -Для определённых задач (например, фрезеровки печатных плат) возник ает необходимость сканирования поверхности с последующей корректировкой неровностей по Z.Карта высот подготавливается с помощью макроса (пример ниже), и на основе этой карты высот модифицируется G-код. Сформировать G-код с готовыми координатами можно, например, в программе G-Code Ripper.1 +Для определённых задач (например, фрезеровки печатных плат) может возникнуть необходимость сканирования поверхности с последующей корректировкой неровностей по Z. 2 2 3 -{{code}} 3 +Карту высот на основе сканирования поверхности можно подготовить с помощью макроса (пример ниже) и затем, используя эту карту высот, модифицировать G-код. 4 + 5 +Сформировать G-код с готовыми координатами поможет, например, программа G-Code Ripper. 6 + 7 +{{code language="lua"}} 4 4 function m155() 5 - local XWidth = 70 6 - local YWidth = 50 7 - local SafeZ = 3 8 - local ProbeZ = -3 9 - local StepX = 15 10 - local StepY = 15 11 - local Feed = 50 12 - local TipHeight = 0 13 - local ProbeFilename = "C:\temp\probe.txt" 9 + local XWidth = 70 10 + local YWidth = 50 11 + local SafeZ = 3 12 + local ProbeZ = -3 13 + local StepX = 15 14 + local StepY = 15 15 + local Feed = 50 16 + local TipHeight = 0 17 + local ProbeFilename = "C:\\temp\\probe.txt" 14 14 15 - PushCurrentDistanceMode() 16 - PushCurrentMotionMode() 17 - 18 - if (IsProbingPinConfigured()) then 19 - -- open the file 20 - file, msg = io.open(ProbeFilename, "w") 19 + PushCurrentDistanceMode() 20 + PushCurrentMotionMode() 21 + 22 + if (IsProbingPinConfigured()) then 23 + file, msg = io.open(ProbeFilename, "w") -- open the file 24 + else 25 + DisplayMessage("Probe input is not configured") 26 + return 27 + end 21 21 22 22 if (file == nil) then 23 - DisplayMessage("Could not open probe output file ("..msg..")") 24 - Stop() 25 - return 30 + DisplayMessage("Could not open probe output file ("..msg..")") 31 + Stop() 32 + return 26 26 end 27 27 28 28 ExecuteMDI("F "..Feed) 29 29 ExecuteMDI("G90 G38.2 Z-100") 30 30 31 - -- set the current location to 0,0,0 32 - ExecuteMDI("G92 X0Y0Z0") 38 + ExecuteMDI("G92 X0Y0Z0") -- set the current location to 0,0,0 33 33 ExecuteMDI("G0 Z"..SafeZ) 34 34 35 35 local direction = 0 36 36 for y = 0, YWidth, StepY do 37 - if (direction == 1) then 38 - direction = 0 39 - else 40 - direction = 1 41 - end 42 - 43 - for x = 0, XWidth, StepX do 44 44 if (direction == 1) then 45 - ExecuteMDI("G0X"..x.."Y"..y.." Z"..SafeZ)44 + direction = 0 46 46 else 47 - ExecuteMDI("G0 X"..(XWidth-x).." Y"..y.." Z"..SafeZ)46 + direction = 1 48 48 end 48 + 49 + for x = 0, XWidth, StepX do 50 + if (direction == 1) then 51 + ExecuteMDI("G0 X"..x.." Y"..y.." Z"..SafeZ) 52 + else 53 + ExecuteMDI("G0 X"..(XWidth - x).." Y"..y.." Z"..SafeZ) 54 + end 49 49 50 - ExecuteMDI("G38.2 Z"..ProbeZ) 51 - LogCurrentPos(TipHeight) 52 - ExecuteMDI("G0 Z"..SafeZ) 53 - end 56 + ExecuteMDI("G38.2 Z"..ProbeZ) 57 + LogCurrentPos(TipHeight) 58 + ExecuteMDI("G0 Z"..SafeZ) 59 + end 60 + 54 54 end 55 55 56 56 if (direction == 1) then 57 - ExecuteMDI("G0 X"..XWidth.." Y"..YWidth.." Z"..SafeZ) 64 + ExecuteMDI("G0 X"..XWidth.." Y"..YWidth.." Z"..SafeZ) 58 58 else 59 - ExecuteMDI("G0 X".."0".." Y"..YWidth.." Z"..SafeZ) 66 + ExecuteMDI("G0 X".."0".." Y"..YWidth.." Z"..SafeZ) 60 60 end 61 61 62 62 local HighZ = 5 ... ... @@ -64,20 +64,17 @@ 64 64 ExecuteMDI("G0 X0Y0") 65 65 66 66 file:close() 67 - else 68 - DisplayMessage("Probe input is not configured") 69 - return 70 - end 71 71 end 72 72 73 73 function LogCurrentPos(tipHeight) 74 - local CurrX = AxisGetPos(Axis.X) 75 - local CurrY = AxisGetPos(Axis.Y) 76 - local CurrZ = AxisGetPos(Axis.Z) 77 + local CurrX = AxisGetPos(Axis.X) 78 + local CurrY = AxisGetPos(Axis.Y) 79 + local CurrZ = AxisGetPos(Axis.Z) 77 77 78 - local fmt = "%.5f" 79 - file:write(string.format(fmt, CurrX)..","..string.format(fmt, CurrY)..","..string.format(fmt, CurrZ - tipHeight), "\n") 81 + local fmt = "%.5f" 82 + file:write(string.format(fmt, CurrX)..","..string.format(fmt, CurrY)..",".. 83 + string.format(fmt, CurrZ - tipHeight), "\n") 80 80 end 81 81 {{/code}} 82 82 83 -[[Скачать макрос>>attach:M155.pm]] 87 +**[[Скачать макрос>>attach:M155.pm]]**