Just an FYI for the archives.
I just finished writing an M Code macro and was reminded of lessons learned using another CNC software program.
I could step through my macro using VB editor no problem. Could run the macro in VB editor not quite as well, and using the compiled M Code in G Code went all to hell.
Embedding M Code inside M Code has one effect. Writing longhand logic of the same process inside an M Code has another.
When Mach lookahead is set above a threshold, sometimes the program just blows by logic statements or the programatic sequence plays out funny. Not ha-ha funny though.
I wanted to call a tool (Txx) and have the offsets update (Hxx, Dxx) and then getoemdro to use the values in a G01 statement. To update the DROs I first used M6 but that left a flashing ToolChg led on the screen. I replaced the sequence
G43 H20 D20
tool = GetSelectedTool()
SetCurrentTool( tool )
G43 H20 D20
to avoid the flashing led.
The tool call had no effect when positioned on the fourth or fifth line similar to the placement one might expect in a Gcode file. Moving the first three lines of the logic snipet to the top of the file did work since I'm assuming was the first logic read.