Hi Roland,
with 1.7 scripting API in LDCad, is it possible to pass an argument to a macro when it is run? For example, if I have a macro named:
Code:
linkage_parts_select_gf
which has a single argument
can a value be passed via the setEvent API e.g.
Code:
macro_lo:setEvent('run', 'linkage_parts_select_gf', '1')
Regards,
David
(2021-09-25, 1:45)David Manley Wrote: [ -> ]with 1.7 scripting API in LDCad, is it possible to pass an argument to a macro when it is run?
Not at the moment.
I kept the callbacks simple (like in Javascript etc).
But the problem in your project can be handled using a global variable, like:
Code:
initTest=true
function runTest()
if initTest then
ldc.dialog.runMessage('init')
initTest=false
end
ldc.dialog.runMessage('work')
end
function register()
local macro=ldc.macro('test')
macro:setEvent('run', 'runTest')
end
register()
Globals in any script will be preserved until the containing script is reloaded as each script runs in it's own environment.
(2021-09-25, 1:45)David Manley Wrote: [ -> ]can a value be passed via the setEvent API
Side note:
I have been thinking about adding a single extra optional parameter to all the setEvent functions.
But it will be a table name so you could have something like:
Code:
test={
doInit=true,
init=function(self)
print('init')
self.doInit=false
end,
run=function(self)
if self.doInit then
self:init()
end
print('work')
end
}
function register()
local macro=ldc.macro('test')
macro:setEvent('run', 'run', 'test')
end
register()
To fake object oriented programming.