하이퍼매쉬 자동화 시도 이야기
비슷한 모델을 몇백개 만들어야 했다. IGES로 되어있는 base 모델을 가져와서, 몇가지 컴포넌트를 더 생성하고 매쉬를 해줘야 했다. base 모델의 형상이 조금씩 바뀌는 것이고, 작업 방식은 동일하다.
매쉬를 짜고 아바쿠스로 해석까지 돌려야 했다. 주 업무는 아니고, 틈틈히 해야하는 일이었다.
시간은 충분히 주어져서, 오전에 한두모델 정도씩 하려고 했다. 모델을 3개 정도 진행했을 때, 단순 반복 작업이라 분명 자동화가 가능할 것이라는 느낌이 왔다. 모델을 만들때 생각난 것은 아니고, 집에서 영화를 보다 생각났다. 보통 아이디어는 다른 일을 할 때 떠오르더라.
아무튼 자동화가 가능할 것 같아 검색을 해보니 자동화가 가능했다. 하이퍼매쉬는 내가 하는 모든 작업을 command.tcl 에 기록해 놓고 있었다. 보통 '문서'에 생성된다.
이 파일 외에도 몇가지 생성되는데 아래와 같다.
1) command.tcl
- 하이퍼매쉬 작업 이력을 코드로 저장(ASCII)
- 이전 버전은 command.cmf이다. 13버전인데, 쉼표랑 괄호가 있 어서 이걸 제거하고 써야되서 굉장히 불편했음
2) hmmenu.set
- 하이퍼매쉬의 환경설정파일(Binary)
3) hmsetting.tcl
- 브라우저나 인터페이스 정보가 저장되는 파일(ASCII)
하이퍼 매쉬 실행파일에서 우클릭 하고, 시작위치 경로를 바꿔주면 해당 경로에 생성된다.
일단 command.tcl을 노트패드로 열어서 내용을 전부 지웠다. 내가 지난 시간동한 한 작업에 대한 기록이다.
메모장으로 .tcl 파일을 하나 더 만들었다. 이름은 my.tcl 이라 일단 부르겠다. 이제 파일을 불러오고 매쉬 작업을 하며 command.tcl 에 기록되는 것들을 step-by-step 으로 살펴봤다. 화면을 회전시킬 때도 기록이 된다. 필요한 것들만 my.tcl 로 옮겼다. 작업 단계 하나가 끝나면 파일이 잘 작동하는지 시험해봤다. 파일에서 새 창을 열고, my.tcl 에 있는 내용을 복사해서 command 창에 붙여넣으면 된다. File->Run->Tcl/Tk Script 이렇게도 된다는데 나는 안되더라.
command 창은 화면 아래쪽을 드레그하면 나온다. 혹은 View->Command Window 로 열 수 있다.
불필요한 코드들도 많이 생성된다. 이런 코드들은 지워주면 된다. 예를 들면이런 애들.
*startnotehistorystate
Component 생성할 때도 뭐가 길게 쓰여지는데 이거 한줄이면 된다.
*collectorcreateonly components "mycom" "" 17
17은 색상인데, 색상표에서 17번째 색이다.
자동화가 어려웠던 작업은 mesh 일부를 선택하는 것이다. A라는 모델에서의 mesh 번호와, B라는 모델에서 mesh 번호가 다르기 때문이다. 내가 다루는 모델들의 경우, 다행이 mesh의 공간 상 위치가 같았다. block 을 생성하여 해결했다. block은 block 안에 들어 있는 요소들을 선택해준다. block 생성 방법은 아래와 같다.
*createsimpleblock "B2" 11 10 10 -1 -10 -10 1
(10,10,-1) 과 (-10,-10,1)을 가장 긴 대각선 꼭지점으로 하는 정육면체를 생성해준다.
꽤 많은 부분을 자동화했다. 이미 시간을 30% 이상 단축한 것 같다. 기간으로 따지면 몇주에서 몇 달에 해당된다. 아무튼 지금 시도중이다.
또 어렵게 찾은 기능이 on plane 으로 요소를 선택하는 것이다. 지나는 점의 위치와, normal vector 순으로 입력한다. 그리고 나서 tolerance와 plane옵션 touching 옵션을 입력한다.
plane: 0 = plane, 1 = normal of plane
touching: 0 = entities touching, 1 = entities on
예를들어, (0,0,-2)를 지나고, normal vector가 (0,0,1)인 평면을 지나는 line을 선택해보자. tol은 0.1로, plane opeiton은 plane인 0번, toucing 은 entities on인 1번으로 설정한다.
*createmark lines 1 "on plane" 0 0 -2 0 0 1 0.1 1 0
'<해석프로그램> > 하이퍼매쉬 자동화' 카테고리의 다른 글
[하이퍼매쉬 자동화] 리스트를 만들고 인덱싱 하는 법 (0) | 2020.09.09 |
---|---|
[하이퍼매쉬 자동화] 선택과 확인 (createmark 와 hm_getmark) (0) | 2020.09.09 |
[하이퍼매쉬 자동화] 리스트에 저장된 값 중 최댓값 구하기 (0) | 2020.09.09 |
[하이퍼매쉬 자동화] node 읽고 좌표 출력하기 (0) | 2020.09.09 |
[하이퍼매쉬 자동화] hide와 show 명령어 사용 방법 (0) | 2020.09.08 |
댓글