Передача параметров модуля OpenSCAD, полученных из других переменных

Я новичок в OpenSCAD, но могу настроить параметры по умолчанию только для простых значений.

Мне интересно, есть ли какой-либо способ добиться следующего, когда у меня есть некоторые параметры, доступные вызывающему модулю, но по умолчанию они получены из других параметров.

Я ожидал, что это сработает - я думал, что компилятор сможет разрешить эти переменные в области видимости во время компиляции, так как здесь все детерминировано-так что, возможно, мне просто не хватает какого - то синтаксиса? Если нет, то есть ли какой-то лучший способ достичь этого?

module clasp(length=20, 
             pin_radius=5,
             mouth = pin_radius * 0.9,
             inner_radius = pin_radius + 0.25,
             outer_radius = inner_radius * 1.4,
             ) {
  ... do the work ...
}

К сожалению, этот подход оставляет крепление/внутреннее/внешнее все неопределенным.

, 👍2


1 ответ


Лучший ответ:

2

Это, по-видимому, является ограничением языка. Один обходной путь, который является лишь умеренно уродливым, находится в теле модуля:

mouth = is_undef(mouth) ? pin_radius * 0.9 : mouth;

и т.д. Если вы будете использовать файл только с помощью директивы use в других файлах, другой подход-переменные области действия файла. Они могут быть переопределены при вызове модуля, как и параметры модуля, и они не предоставляют и не принимают значения для/из пространства имен переменных области действия вызывающего файла.


,

Узнал "is_undef" из вашего ответа. Спасибо., @cmm

Спасибо, обходной путь-это хороший трюк, @Hamy