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 the fact that an end user found a need to call an internal function like this, 
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! Seems like 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...
to top