Редактировал(а) Edgar Allan Poe 2024/11/14 17:01

От версии 8.1
отредактировано writer
на 2023/03/01 11:52
Изменить комментарий: К данной версии нет комментариев
К версии 5.1
отредактировано writer
на 2023/01/26 13:53
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

Свойства страницы
Содержимое
... ... @@ -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 - 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"
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 - DisplayMessage("Could not open probe output file ("..msg..")")
31 - Stop()
32 - return
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 = 0
43 + ExecuteMDI("G0 X"..x.." Y"..y.." Z"..SafeZ)
45 45   else
46 - direction = 1
45 + 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 - ExecuteMDI("G0 X"..XWidth.." Y"..YWidth.." Z"..SafeZ)
55 + ExecuteMDI("G0 X"..XWidth.." Y"..YWidth.." Z"..SafeZ)
65 65   else
66 - ExecuteMDI("G0 X".."0".." Y"..YWidth.." Z"..SafeZ)
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 - local CurrX = AxisGetPos(Axis.X)
78 - local CurrY = AxisGetPos(Axis.Y)
79 - local CurrZ = AxisGetPos(Axis.Z)
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]]