Skip to content

Commit edeea1d

Browse files
Backed up macros from forum
1 parent feaf67a commit edeea1d

21 files changed

Lines changed: 1372 additions & 0 deletions
Lines changed: 304 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,304 @@
1+
// LASER Focus Pattern Generator Macro For OpenBuilds Control
2+
// V0.9
3+
// Change these values to customise basic operation:
4+
5+
const z_Range = 3; // Z movement each side of current position (mm)
6+
7+
const power_Percent = 80; // Engraving power (0-100%)
8+
const engrave_Speed = 2000; // Engraving speed (mm/min)
9+
const num_Lines = 8; // Number of lines in test pattern (must be >0)
10+
const line_Spacing = 0.3; // Spacing between lines (mm)
11+
12+
const power_Max = 1000; // Maximum power in spindle speed units - Check value of $30 in GRBL settings
13+
const power_Min = 0; // Minimum power in spindle speed units - Check value of $31 in GRBL settings
14+
const x_acceleration = 320; // Machine X acceleration value (mm/s^2)- Check value of $120 n GRBL settings
15+
// (Used to calculate over-travel - Set to zero to disable over-travel)
16+
17+
const xplus_Only = "no"; // "no" = move to left of X0 to allow acceleration
18+
// "yes" = start acceleration from X0 - pattern will be shifted to the right
19+
const tilt = 0.12; // Slope of test pattern (mm/mm)
20+
//
21+
// Generates GCode to produce a pattern with varying Z height to assist with LASER focussing
22+
// Running this macro will replace any existing GCode in Control
23+
// The GCode uses M4 to control the LASER and so needs LASER mode enabled ($32 = 1 in GRBL settings)
24+
//
25+
// Use at own risk!
26+
// DAG 23/4/23
27+
//
28+
// Macro continues below...
29+
30+
var p_Power = ((power_Max - power_Min) * power_Percent / 100 + power_Min).toFixed();// Calculate engraving power in spindle speed units
31+
var over_Travel = 0; // Distance required to accelerate to engraving speed
32+
if (x_acceleration > 0){ over_Travel = (engrave_Speed / x_acceleration)}; // Calculate over-travel if X axis acceleration is set
33+
34+
var line_Length = (z_Range * 2) / tilt; // Calculate pattern length
35+
var start_X = 0;
36+
if (xplus_Only != "yes" ) {start_X = -over_Travel}; // Starting point for X travel - NOT engraving
37+
38+
var z_Min = z_Range * (-1);
39+
var z_Max = z_Range;
40+
41+
42+
// Start building the GCode string that will be the eventual output
43+
44+
var gcode = "; Laser Focus Test Pattern\n;\n";
45+
gcode += "; Z Range +/- " + z_Range + "mm\n";
46+
gcode += "; Generated by Openbuilds Control macro V0.9 by Misterg\n;\n";
47+
gcode += "G21; mm-mode\nG90; Absolute Positioning\n";
48+
gcode += "F"+ engrave_Speed +" ; Set engraving speed\n";
49+
gcode += "M04 S" + p_Power + " ; Laser on at set power\n";
50+
51+
// Draw lines
52+
53+
for (var lineCount =0; lineCount < num_Lines; lineCount ++){
54+
var gcYval = (line_Spacing * lineCount); // Current Y position
55+
56+
gcode += "G0 X" + start_X +" Y" + gcYval +" Z"+ z_Min + "\n"; // Rapid to start of row
57+
gcode += "G91\nG0 X" + over_Travel + "\n"; // Rapid to start of line (relative)
58+
gcode += "G1 X" + line_Length + " Z" + (z_Range * 2) + "\n"; // Cut to end of line (relative)
59+
gcode += "G0 X" + over_Travel +"\nG90\n"; // Rapid to end of deceleration zone (relative)
60+
}
61+
62+
// Add Tick Marks
63+
gcode += "G0 Z0; Add tick marks\n";
64+
65+
var major_Ticks = z_Range * 2; // 1 majortick per mm
66+
var minor_Ticks = 10; // 10 minor tick marks per mm
67+
var y_Pos = (line_Spacing * (num_Lines -1)); // Bottom of tick marks
68+
var gcXval = 0; // Calculated position
69+
var line_Start = start_X + over_Travel; // Start of labels
70+
var label_Z = z_Min;
71+
var z_MajorIncrement = (z_Max - z_Min)/(major_Ticks );
72+
var z_MinorIncrement = z_MajorIncrement / minor_Ticks;
73+
var x_Increment = line_Length / (major_Ticks * minor_Ticks);
74+
75+
for( var i =0 ;i<= major_Ticks;i++){
76+
gcXval = line_Start + line_Length * i / major_Ticks;
77+
label_Z = z_Min + z_MajorIncrement * i;
78+
79+
gcode += "G0 X" + gcXval +" Y" + y_Pos +" Z" +label_Z + "\n"; // move to start of major tick
80+
gcode += "G91\nG1 Y4\n"; // draw tick & stay in G91
81+
82+
// add labels
83+
84+
if (i < major_Ticks / 2){ // Add +/- sign if needed
85+
gcode += ";minus\nG0 X2.571 Y1.5\nG1 X-2.571\nG0 X3 Y-1.5\n";
86+
}
87+
else if (i > major_Ticks /2){
88+
gcode += ";plus\nG0 X1.286 Y0.214\nG1 Y2.572\nG0 X1.285 Y-1.286\nG1 X-2.571\nG0 X3 Y-1.5\n";
89+
}
90+
gcode += getGcode( ""+ Math.abs(i-major_Ticks/2)) +"G90\n"; // Get numeral & switch back to G90
91+
92+
gcode += "G0 X" + gcXval +" Y" + y_Pos +" Z" +label_Z + "\n"; // move back to start of major tick
93+
94+
95+
if (i < major_Ticks){ // Fill in minor ticks
96+
for( var j = 1; j <minor_Ticks; j++){
97+
gcode += "G91\nG0 X" + x_Increment + " Z" + z_MinorIncrement + "\n"; // Move to start of tick
98+
if (j == (minor_Ticks /2)) {
99+
gcode += "\nG1 Y3\nG0 Y-3\n"; // Draw '5s' tick
100+
}
101+
else {
102+
gcode += "\nG1 Y2\nG0 Y-2\n"; // Draw minor tick
103+
};
104+
}
105+
gcode += "G90\n";
106+
}
107+
}
108+
109+
// Tidy up the end of the GCode and pass to OB COntrol
110+
111+
gcode += "G0 X0 Y0 Z0\n";
112+
gcode += "M5 S0\nM2\n"; // LASER off & End of program
113+
114+
editor.session.setValue(gcode);
115+
parseGcodeInWebWorker(gcode)
116+
printLog("<span class='fg-red'>[ Laser Test Pattern ] </span><span class='fg-green'>GCODE Loaded</span>")
117+
118+
// The End
119+
120+
function getGcode (numeral){ // Returns GCode string representing numbers 0 - 9
121+
// No error checking!
122+
const gc_num = [];
123+
124+
gc_num[0] = `;zero
125+
G0 X0.857 Y3
126+
G1 X0.286
127+
X0.428 Y-0.143
128+
X0.286 Y-0.428
129+
X0.143 Y-0.715
130+
Y-0.428
131+
X-0.143 Y-0.715
132+
X-0.286 Y-0.428
133+
X-0.428 Y-0.143
134+
X-0.286
135+
X-0.428 Y0.143
136+
X-0.286 Y0.428
137+
X-0.143 Y0.715
138+
Y0.428
139+
X0.143 Y0.715
140+
X0.286 Y0.428
141+
X0.428 Y0.143
142+
`;
143+
144+
gc_num[1] = `;one
145+
G0 Y2.429
146+
G1 X0.286 Y0.142
147+
X0.428 Y0.429
148+
Y-3
149+
`;
150+
151+
gc_num[2] = `;two
152+
G0 X0.143 Y2.286
153+
G1 Y0.143
154+
X0.143 Y0.285
155+
X0.143 Y0.143
156+
X0.285 Y0.143
157+
X0.572
158+
X0.285 Y-0.143
159+
X0.143 Y-0.143
160+
X0.143 Y-0.285
161+
Y-0.286
162+
X-0.143 Y-0.286
163+
X-0.285 Y-0.428
164+
X-1.429 Y-1.429
165+
X2
166+
`;
167+
168+
gc_num[3] = `;three
169+
G0 X0.286 Y3
170+
G1 X1.571
171+
X-0.857 Y-1.143
172+
X0.429
173+
X0.285 Y-0.143
174+
X0.143 Y-0.143
175+
X0.143 Y-0.428
176+
Y-0.286
177+
X-0.143 Y-0.428
178+
X-0.286 Y-0.286
179+
X-0.428 Y-0.143
180+
X-0.429
181+
X-0.428 Y0.143
182+
X-0.143 Y0.143
183+
X-0.143 Y0.285
184+
`;
185+
186+
gc_num[4] = `;four
187+
G0 X2.143 Y1
188+
G1 X-2.143
189+
X1.429 Y2
190+
Y-3
191+
`;
192+
193+
gc_num[5] = `;five
194+
G0 X1.714 Y3
195+
G1 X-1.428
196+
X-0.143 Y-1.286
197+
X0.143 Y0.143
198+
X0.428 Y0.143
199+
X0.429
200+
X0.428 Y-0.143
201+
X0.286 Y-0.286
202+
X0.143 Y-0.428
203+
Y-0.286
204+
X-0.143 Y-0.428
205+
X-0.286 Y-0.286
206+
X-0.428 Y-0.143
207+
X-0.429
208+
X-0.428 Y0.143
209+
X-0.143 Y0.143
210+
X-0.143 Y0.285
211+
`;
212+
213+
gc_num[6] = `;six
214+
G0 Y1
215+
G1 X0.143 Y0.429
216+
X0.286 Y0.285
217+
X0.428 Y0.143
218+
X0.143
219+
X0.429 Y-0.143
220+
X0.285 Y-0.285
221+
X0.143 Y-0.429
222+
Y-0.143
223+
X-0.143 Y-0.428
224+
X-0.285 Y-0.286
225+
X-0.429 Y-0.143
226+
X-0.143
227+
X-0.428 Y0.143
228+
X-0.286 Y0.286
229+
X-0.143 Y0.571
230+
Y0.714
231+
X0.143 Y0.715
232+
X0.286 Y0.428
233+
X0.428 Y0.143
234+
X0.286
235+
X0.428 Y-0.143
236+
X0.143 Y-0.286
237+
`;
238+
239+
gc_num[7] = `;seven
240+
G0 Y3
241+
G1 X2
242+
X-1.429 Y-3
243+
`;
244+
245+
gc_num[8] = `;eight
246+
G0 X0.714 Y3
247+
G1 X-0.428 Y-0.143
248+
X-0.143 Y-0.286
249+
Y-0.285
250+
X0.143 Y-0.286
251+
X0.285 Y-0.143
252+
X0.572 Y-0.143
253+
X0.428 Y-0.143
254+
X0.286 Y-0.285
255+
X0.143 Y-0.286
256+
Y-0.429
257+
X-0.143 Y-0.285
258+
X-0.143 Y-0.143
259+
X-0.428 Y-0.143
260+
X-0.572
261+
X-0.428 Y0.143
262+
X-0.143 Y0.143
263+
X-0.143 Y0.285
264+
Y0.429
265+
X0.143 Y0.286
266+
X0.286 Y0.285
267+
X0.428 Y0.143
268+
X0.572 Y0.143
269+
X0.285 Y0.143
270+
X0.143 Y0.286
271+
Y0.285
272+
X-0.143 Y0.286
273+
X-0.428 Y0.143
274+
X-0.572
275+
`;
276+
277+
gc_num[9] = `;nine
278+
G0 X1.857 Y2
279+
G1 X-0.143 Y-0.429
280+
X-0.285 Y-0.285
281+
X-0.429 Y-0.143
282+
X-0.143
283+
X-0.428 Y0.143
284+
X-0.286 Y0.285
285+
X-0.143 Y0.429
286+
Y0.143
287+
X0.143 Y0.428
288+
X0.286 Y0.286
289+
X0.428 Y0.143
290+
X0.143
291+
X0.429 Y-0.143
292+
X0.285 Y-0.286
293+
X0.143 Y-0.571
294+
Y-0.714
295+
X-0.143 Y-0.715
296+
X-0.285 Y-0.428
297+
X-0.429 Y-0.143
298+
X-0.286
299+
X-0.428 Y0.143
300+
X-0.143 Y0.286
301+
`;
302+
303+
return gc_num[numeral];
304+
}
270 KB
Loading
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
BACKED UP FROM https://builds.openbuilds.com/threads/getting-started-with-javascript-macros-in-control-library-of-macros-created-by-the-community.15880/
2+
3+
Big thanks to Sharmstr, MisterG, aixpower, Ivo Beltchev
4+
5+
Also see
6+
7+
https://github.com/ivomirb/OpenBuilds-CONTROL/tree/master/UsefulMacros
8+
https://github.com/sharmstr/OpenBuildsHacks/
9+
https://github.com/poWer4aiX/ob-linear-cut-macro
10+
https://raw.githubusercontent.com/poWer4aiX/ob-hole-milling-macro/master/src/ob-hole-milling-macro.js
2.49 KB
Loading

0 commit comments

Comments
 (0)