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