openscad에는 문자열 키 연관 배열 (일명 해시 맵, 일명 사전)에 대한 언어 기본 요소가 있습니까? 아니면 연관 배열을 에뮬레이트하는 방법에 대한 규칙이 있습니까?
지금까지 제가 생각할 수있는 것은 벡터를 사용하고 변수를 사용하여 인덱스를 벡터에 사람이 읽을 수있는 이름으로 매핑하는 것입니다. 즉 , 벡터 를 정의 하는 멋지고 읽기 쉬운 방법이 없으며 주석 만 달면됩니다.
파이썬 데이터 구조와 비슷한 것을 작성하고 싶다고 상상해보십시오.
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 외부에서 데이터 세트를 유지하고 필요한 경우 포함 파일에 대한 생성기를 가질 준비가되어 있지만, 그렇지 않습니다.
또한 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 라이브러리를 사용할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다