regarding your question and your answers 1 or 2, I'd like to add:
LSYNTH primitives are never directly used in models normally.
instead, you put LSYNTH placeholders there,
then run the generator which puts the generated stuff, made from LSYNTH primitives, into there.
(I always wanted these primitives to become normal LDRAW primitives.)
MLCad uses a special syntax to switch between the placeholders and the generated stuff.
My suggestion to you would be to use EXACTLY that syntax to avoid re-inventing the wheel.
LSYNTH primitives are never directly used in models normally.
instead, you put LSYNTH placeholders there,
then run the generator which puts the generated stuff, made from LSYNTH primitives, into there.
(I always wanted these primitives to become normal LDRAW primitives.)
MLCad uses a special syntax to switch between the placeholders and the generated stuff.
My suggestion to you would be to use EXACTLY that syntax to avoid re-inventing the wheel.