Duck and cover! Another mini-series approaching!
My apologies to users of CoCreate Modeling
who tried to find some meat for them in the package riddle
series for them - there wasn't any, as that series was strictly meant for
Lisp geeks. Sorry!
This new series covers programming fundamentals as well.
If you ever wanted to understand how Common Lisp functions like print
and
CoCreate Modeling commands such as extrude
differ and how they
interact, you've come to the right place.
Reader highway45 recently came up with a
very interesting observation (abridged and translated from German):
Usually, I call a dialog like this: (set_pers_context "Toolbox-Context" function)
Or like this:
function
As soon as I add parentheses, however, the "ok action" will be called:
(function)
When highway45 talks of "functions" here, he actually means commands like
extrude
or
turn
. So,
(set_pers_context "Toolbox-Context" extrude)? Really? Wow!
set_pers_context
is an internal CoCreate Modeling function dealing with
how UI elements for a given command are displayed and where. I was floored -
first, by a end user finding a need to call that internal function, and second,
because that magic incantation indeed works "as advertised" by highway45. For example,
try entering the following in CoCreate Modeling's user input line:
(set_pers_context "Toolbox-Context" extrude)
Lo and behold, this will indeed open the
Extrude
dialog, and CoCreate Modeling
now prompts for more input, such as extrusion distances or angles.
What's so surprising about this, you ask? If you've used CoCreate Modeling for a while,
then you'll know that, as a rule of thumb, code enclosed in parentheses won't prompt
for more input, but will instead expect additional parameters in the command line itself.
For example, if you run
(extrude)
(with parentheses!) from the user input line, Lisp will
complain that the parameter "DISTANCE is not specified". But in highway45's example, there
clearly was a closing parenthesis after
extrude
, and yet the Extrude command started to
prompt!
So is
set_pers_context
some kind of magic potion? Try this:
(print extrude)
The Extrude dialog opens and prompts for input! Even
print
has
magic powers, even though it's a plain ol'
Common Lisp standard function!
Well, maybe there is something special about all built-in functions? Let's test this out and
try a trivial function of our own:
(defun foobar() 42)
(foobar extrude)
Once more, the dialog opens and awaits user input!
So
maybe it is neither of
set_pers_context
,
print
or
foobar
that is magic - but instead
extrude
.
We'll tumble down that rabbit hole next time.
To be continued...