Передача параметров модуля 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 ...
}
К сожалению, этот подход оставляет крепление/внутреннее/внешнее все неопределенным
.
@Hamy, 👍2
1 ответ
Лучший ответ:
Это, по-видимому, является ограничением языка. Один обходной путь, который является лишь умеренно уродливым, находится в теле модуля:
mouth = is_undef(mouth) ? pin_radius * 0.9 : mouth;
и т.д. Если вы будете использовать файл только с помощью
директивы use в других файлах, другой подход-переменные области действия файла. Они могут быть переопределены при вызове модуля, как и параметры модуля, и они не предоставляют и не принимают значения для/из пространства имен переменных области действия вызывающего файла.
- Существует ли простой способ разделения моделей в OpenSCAD?
- OpenSCAD linear_extrude из многопутевого импорта svg
- .STEP/.F3D to .Файл SCAD?
- Как указать начало вращения в openscad
- Библиотека OpenSCAD для пустого пространства/отверстий
- OpenSCAD "not valid 2-manifold" полезная информация
- Рендер OpenSCAD (F6) завершается ошибкой "ERROR: CGAL error in CGAL_Nef_polyhedron3()"
- Создание "куска пирога" в OpenSCAD?
Узнал "is_undef" из вашего ответа. Спасибо., @cmm
Спасибо, обходной путь-это хороший трюк, @Hamy