openscad의 연관 배열?

크레이그 링거

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 일을 기리기 위해 깜박임 태그를 놓치고 스크롤 선택 윤곽이 작동하는지 궁금합니다. 시도했습니다 :)

dipi

여기 설명서에 설명 된 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

연관 배열 내의 연관 배열

분류에서Dev

연관 배열의 트리

분류에서Dev

연관 배열 PHP의 Findind 배열

분류에서Dev

연관 배열의 배열 키 수정

분류에서Dev

(node) js의 '연관 배열'배열

분류에서Dev

(node) js의 '연관 배열'배열

분류에서Dev

연관 배열의 배열 정렬

분류에서Dev

배열의 다차원 연관 배열

분류에서Dev

PHP의 다른 연관 배열에 연관 배열 추가

분류에서Dev

연관 배열을 하나의 연관 배열로 푸시

분류에서Dev

연관 배열의 값 재설정

분류에서Dev

연관 배열의 값 얻기 [PHP]

분류에서Dev

연관 배열의 일부 지우기

분류에서Dev

값의 연관 배열에 값 입력

분류에서Dev

셸 스크립트의 연관 배열

분류에서Dev

필터와의 연관 배열 차이

분류에서Dev

C #의 다차원 연관 배열

분류에서Dev

연관 배열의 단일 mysql 필드

분류에서Dev

연관 배열로서의 PHP POST / GET?

분류에서Dev

package.json의 비 연관 배열

분류에서Dev

연관 배열의 값 매핑

분류에서Dev

Smarty의 연관 배열 데이터

분류에서Dev

두 개의 관련 TableViewController 배열 연결

분류에서Dev

if-else 내의 PHP 연관 배열

분류에서Dev

연관 배열의 모든 첫 번째 배열 값 선택

분류에서Dev

연관 객체 배열의 오프셋 인쇄 배열 키

분류에서Dev

키-값 쌍의 배열을 연관 배열로 변환

분류에서Dev

일반 배열의 PHP 푸시 연관 배열

분류에서Dev

배열 내부의 연관 배열에서 키와 값 제거