Есть ли в openscad какой-либо языковой примитив для ассоциативных массивов со строковыми ключами (иначе говоря, хеш-карты, или словари)?Или есть какое-то соглашение о том, как эмулировать ассоциативные массивы?
Пока что все, о чем я могу думать, - это использовать векторы и использовать переменные для отображения индексов в векторе на понятные человеку имена.Это означает, что нет никакого удобного, удобочитаемого способа определить вектор, вы просто должны прокомментировать его.
Представьте, что я хочу написать что-то похожее на структуру данных Python:
bobbin_metrics = {
'majacraft': {
'shaft_inner_diameter': 9.0,
'shaft_outer_diameter': 19.5,
'close_wheel_diameter': 60.1,
# ...
},
'majacraft_jumbo': {
'shaft_inner_diameter': 9.0,
'shaft_outer_diameter': 25.0,
'close_wheel_diameter': 100.0,
},
# ...
}
такой, что я могу ссылаться на него в определениях модели некоторым узнаваемым образом, похожим на хэш-карту, например, передавая bobbin_metrics['majacraft']
чему-то как metrics
и ссылаясь на metrics['close_wheel_diameter']
.
Пока что мой лучшийусилие выглядит как
# Vector indexes into bobbin-metrics arrays
BM_SHAFT_INNER_DIAMETER = 0
BM_SHAFT_OUTER_DIAMETER = 1
BM_CLOSE_WHEEL_DIAMETER = 2
bobbin_metrics_majacraft = [
9.0, # shaft inner diameter
19.5, # shaft outer diameter
60.1, # close-side wheel diameter
# ....
];
bobbin_metrics_majacraft_jumbo = [
9.0, # shaft inner diameter
25.0, # shaft outer diameter
100.0, # close-side wheel diameter
# ....
];
bobbin_metrics = [
bobbin_metrics_majacraft,
bobbin_metrics_majacraft_jumbo,
# ...
];
# Usage when passed a bobbin metrics vector like
# bobbin_metrics_majacraft as 'metrics' to a function
metrics[BM_SHAFT_INNER_DIAMETER]
Я думаю, что это сработает.Но это Гадкий .Не совсем "я пишу приложения в bash
", некрасиво, но не за горами.
Есть ли лучший способ?
Я готов поддерживать набор данных вне openscad и иметьГенератор для включаемого файла, если я должен, но я бы предпочел не.
Кроме того, в честь 1 апреля я пропускаю метку мигания и задаюсь вопросом, будет ли работать прокрутка?Пробовал их:)