Dictionary openscad中的关联数组?
openscad是否有任何用于字符串键控关联数组的语言原语(又称哈希映射、字典)?或者,对于如何模拟关联数组,是否有任何约定 到目前为止,我所能想到的就是使用向量和变量将索引映射到向量中,以获得人类可读的名称。这意味着没有好的,可读的方法来定义向量,你只需要注释它 假设我想写一些类似于Python数据结构的东西:Dictionary openscad中的关联数组?,dictionary,openscad,3d-printing,Dictionary,Openscad,3d Printing,openscad是否有任何用于字符串键控关联数组的语言原语(又称哈希映射、字典)?或者,对于如何模拟关联数组,是否有任何约定 到目前为止,我所能想到的就是使用向量和变量将索引映射到向量中,以获得人类可读的名称。这意味着没有好的,可读的方法来定义向量,你只需要注释它 假设我想写一些类似于Python数据结构的东西: bobbin_metrics = { 'majacraft': { 'shaft_inner_diameter': 9.0, 'shaft_outer_d
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]
我想那会有用的。但它是U.G.L.Y。。“我在bash
中编写应用程序”这句话并不难听,但也不遥远
有更好的办法吗
我准备在openscad之外维护数据集,如果有必要的话,我还准备了一个包含文件的生成器,但我不想这样做
此外,为了纪念4月1日,我错过了闪烁标记,不知道滚动字幕是否有效?试用过:)我使用了OpenSCAD search()函数,该函数记录在这里的手册中
https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#Search
下面的模式允许一种形式的关联列表,它可能不是最优的,但确实提供了一种方法来设置字典结构并根据字符串键检索值
// associative searching
// dp 2019
// - define the dictionary
dict = [
["shaft_inner_diameter", 9.0],
["shaft_outer_diameter", 19.5],
["close_wheel_diameter", 60.1]
];
// specify the serach term
term = "close_wheel_diameter";
// execute the search
find = search(term, dict);
// process results
echo("1", find);
echo ("2",dict[find[0]]);
echo ("3",dict[find[0]][1]);
上述产品
Compiling design (CSG Tree generation)...
WARNING: search term not found: "l"
...
WARNING: search term not found: "r"
ECHO: "1", [2, 0]
ECHO: "2", ["close_wheel_diameter", 60.1]
ECHO: "3", 60.1
就我个人而言,我会用Python做这类事情,然后生成OpenSCAD作为中间文件,或者使用SolidPython库。我使用了OpenSCAD search()函数,该函数在这里的手册中有说明
https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#Search
下面的模式允许一种形式的关联列表,它可能不是最优的,但确实提供了一种方法来设置字典结构并根据字符串键检索值
// associative searching
// dp 2019
// - define the dictionary
dict = [
["shaft_inner_diameter", 9.0],
["shaft_outer_diameter", 19.5],
["close_wheel_diameter", 60.1]
];
// specify the serach term
term = "close_wheel_diameter";
// execute the search
find = search(term, dict);
// process results
echo("1", find);
echo ("2",dict[find[0]]);
echo ("3",dict[find[0]][1]);
上述产品
Compiling design (CSG Tree generation)...
WARNING: search term not found: "l"
...
WARNING: search term not found: "r"
ECHO: "1", [2, 0]
ECHO: "2", ["close_wheel_diameter", 60.1]
ECHO: "3", 60.1
就我个人而言,我会用Python做这类事情,然后生成OpenSCAD作为中间文件,或者使用SolidPython库。在Archlinux、OpenSCAD 2015.03-3上工作,但只使用最多15个字符的匹配模式非常感谢。这是一个好主意。在Archlinux、openscad 2015.03-3上运行,但仅使用最多15个字符的匹配模式非常感谢您。那是个好主意。