본문 바로가기
반응형

전체 글404

[하이퍼매쉬 자동화] node 로 surface 만들때 번호 꼬이는 문제 해결 [하이퍼매쉬 자동화] node 로 surface 만들때 번호 꼬이는 문제 해결 node로 surface 만들 때, 하이퍼매쉬 상에서 직접 선택하면 node 순서가 loop 대로 선택되는데, 코드를 이용해서 "on plane" 등의 옵션을 주면, 순서가 loop 순서가 아니라 번호 순으로 배열된다. 아주 만족스러운 방법은 아니지만 해결방법을 찾았다. hm_getedgeloops 라는 명령어인데, element의 free edge 부분의 node를 loop 순서로 저장해준다. free edge가 여러개일 경우 각각 리스트로 저장한다. 아래는 예시다. blockA라는 block을 이용하여 element를 선택했다. free edge 를 얻어서 loop_all에 저장했다. 총 두개의 free edge가 저장되는.. 2020. 9. 18.
[하이퍼매쉬 자동화] surface trim 방식에 따른 node 생성 오류 [하이퍼매쉬 자동화] surface trim 방식에 따른 node 생성 오류 surface A와 B가 있다. B가 A에 포함된다. B로 A를 cutting 할 경우, B에 붙어 있는 node들이, A에도 그대로 있게 하고 싶다. trim의 종류가 두가지가 있는데, 상호 trim을 할 경우 node 유지가 안되는데 이해할 수가 없다. 아래처럼 trim 한 뒤에, A에서 B부분을 삭제해야 문제가 발생하지 않는다. *createmark surfaces 1 "by_collector" "lower_outer"*createmark surfaces 2 "by_collector" "lower_inner"*surfmark_trim_by_surfmark 1 2 0 *createmark surfaces 1 "by_colle.. 2020. 9. 17.
[하이퍼매쉬 자동화] 매쉬 순서에 따른 매쉬오류 [하이퍼매쉬 자동화] 매쉬 순서에 따른 매쉬오류 A라는 surface가 있고, A안에 포함되는 B라는 surface가 있다. A에서 B 부분을 subtract 할 것이다. 이때 문제가 생기는데, B를 매쉬하고 난 뒤, A에서 B를 아래 코드로 trim하면 매쉬가 변형된다. 지저분하게 이중으로 생긴다. *createmark surfaces 1 "by_collector" "lower_outer"*createmark surfaces 2 "by_collector" "lower_inner"*surfmark_trim_by_surfmark 1 2 1 트림을 먼저하고 매쉬를 짜면 아무 문제가 없다. 2020. 9. 17.
surface로 surface 자르기 surface로 surface 자르기 Surface B로 A 자르기*createmark surfaces 1 "by_collector" "A"*createmark surfaces 2 "by_collector" "B"*surfmark_trim_by_surfmark 1 2 0 Surfac B로 A 자르고, A로도 B 잘라 각각 저장*createmark surfaces 1 "by_collector" "A"*createmark surfaces 2 "by_collector" "B"*surfmark_trim_by_surfmark 1 2 1 2020. 9. 16.
[하이퍼매쉬 자동화] 두 node 사이의 거리를 구하는 방법 [하이퍼매쉬 자동화] 두 node 사이의 거리를 구하는 방법 1) node의 id를 아는 경우 두 node의 아이디가 11과 22라고 합시다. 아래와 같은 방법으로 거리를 계산합니다. 먼저 각각 node의 좌표를 얻어 변수에 저장합니다. set n1_x [hm_getvalue nodes id=11 dataname=x]set n1_y [hm_getvalue nodes id=11 dataname=y]set n1_z [hm_getvalue nodes id=11 dataname=z]set n1_x [hm_getvalue nodes id=22 dataname=x]set n1_y [hm_getvalue nodes id=22 dataname=y]set n1_z [hm_getvalue nodes id=22 datana.. 2020. 9. 15.
[하이퍼매쉬 자동화] 스크립팅할때 명령어들 모아놓은 곳 [하이퍼매쉬 자동화] 스크립팅할때 명령어들 모아놓은 곳 하이퍼매쉬켜고 F1 을 클릭하면, Hypermesh and BatchMesher 홈페이지가 뜬다. 왼쪽 Contents 트리에서 HyperMesh를 클릭하면 우측 화면이 변하는데 Help 단락에서 Reference Guide 를 클릭한다. 나오는 화면에서, Scripts 를 클릭한다. 다시 나오는 화면에서 Commends and Functions 를 클릭한다. 다양한 command를 확인할 수 있다. 현재 링크는 아래와 같은데 업데이트 등으로 인해 바뀔 수 있으니 위 과정을 따라가면 된다. C:\Program Files\Altair\2017\help\hm_ref_guide\topics\chapter_heads\commands_and_functions.. 2020. 9. 15.
[하이퍼매쉬 자동화] line drag 할때, 생성 위치 [하이퍼매쉬 자동화] line drag 할때, 생성 위치 #line component에 생성*surfacecreatedraglinealongvector 1 1 2 0 1 0 0 0 #current component에 생성*surfacecreatedraglinealongvector 1 1 2 0 0 0 0 0 2020. 9. 15.
[하이퍼매쉬 자동화] 연산 하는 방법 [하이퍼매쉬 자동화] 연산 하는 방법 앞에 expr 을 붙여줘야 한다. expr 2+3 원소로 넣을 경우 대괄호로 구분해준다. set mylist "1 2 [expr 3+5]" 2020. 9. 15.
[하이퍼매쉬 자동화] node로 surface 생성시, 번호 순서 때문에 생성 안되는 문제 [하이퍼매쉬 자동화] node로 surface 생성시, 번호 순서 때문에 생성 안되는 문제 마우스로 직접 node를 선택하면, 자동으로 node path 순서로 입력이 되는데 아래 코드 등을 사용할 경우 번호 순서대로 입력이 된다. *createmark nodes 1 "on plane" 0 0 -2 0 0 1 0.1 1 0 만약 닫힌 곡선의 노드가 1 3 2 4 5 6 으로 되어 있다면, 이 순서대로 node가 입력되어야 하는데, 코드로 입력할 경오 1,2,3,4,5,6 이렇게 입력되는 것이다. surface 끝부분, 즉 free edge 의 경우는, 매쉬 후 remesh를 해주면 free edge 부분이 번호 크기 순으로 정렬되어 문제를 해결할 수 있다. 하지만 free edge라고 하더라고, 형상이 .. 2020. 9. 15.
[하이퍼매쉬 자동화] 없는 node인데 자꾸 선택이 될 때 [하이퍼매쉬 자동화] 없는 node인데 자꾸 선택이 될 때 이전 surface를 만들 때 생성한 node 인데, 그 다음 surface를 만들때 자꾸 이 node가 선택되어 문제가 생기는 경우가 있다. 분명히 눈에는 보이지 않는데 선택하면 자꾸 있다. 이때 사용하는 코드이다. 키워드이다. *nodecleartempmark는 Geom->temp nodes -> clear 와 같은 기능이다. #for unmark----------*createmark nodes 1*createlist nodes 1*surfacesplineonnodesloop2 1 0*nodecleartempmark createmark와 createlist 를 초기화하고, temp node도 지워줬더니 된다. 2020. 9. 15.
[하이퍼매쉬 자동화] surface와 surface 사이를 다른 surface로 채우는 경우 [하이퍼매쉬 자동화] surface와 surface 사이를 다른 surface로 채우는 경우 서로 떨어져 있는 A와 B surface가 있다고 하자. 각각 surface는 component A와 B에 들어있다. A와 B를 매쉬한 상태에서, 그 사이를 매꾸고 싶은 상황이다. ruled 등을 하면 되긴 하는데 수동이다. 두 surface 사이에 surface를 create 할 때 방법은 세가지다. line 이용points 이용node list 이용 line을 이용할 경우, 매쉬 불일치 문제가 생긴다. points 이용할 경우, 형상이 복잡하면 생성이 안된다.nodelist 가장 좋음. nodelist 이용하는게 젤 낫다. 매쉬불일치 문제도 해결된다. 2020. 9. 14.
[하이퍼매쉬 자동화] node 이용하여 surface 생성 [하이퍼매쉬 자동화] node 이용하여 surface 생성 node를 이용하여 surface를 생성할 수 있다. node로 닫힌 surface 를생성해주는데, 가운데가 뚤린 모양의 경우 끝부분이 비어있는 surface가 생성된다는 단점은 있다. 아래와 같이 사용한다. 사용법 찾는데 애먹었다. 일단 *createlist는 "on plane"등의 옵션을 사용할 수가 없다. *create mark 로 노드를 생성해주고, 이 번호를 넣어주려고 하는데 계속 에러가 떴다. 알아보니 eval 을 붙여줘야 된다고 한다. #노드 마크 생성하고 변수 n1에 저장*createmark nodes 1 "on plane" 0 0 -2 0 0 1 0.1 1 0set n1 [hm_getmark nodes 1] #변수 n1에 저장된 .. 2020. 9. 14.
[하이퍼매쉬 자동화] node에서 추출한 points 를 이용하여 surface 생성 [하이퍼매쉬 자동화] node에서 추출한 points 를 이용하여 surface 생성 surface를 생성할 때, node 를 선택하여 생성할 수도 있고 points 를 선택하여 생성할 수도 있다. node를 선택할 경우 node path 로만 선택이 가능해 기능이 제한적이다. 따라서 surface 가 생성되기 원하는 node를 이용하여 point 를 생성하고, 다시 이 point를 이용하여 surface 를 생성하는 방법을 만들어 보았다. 먼저 node를 이용하여 point를 생성한다. 이때 생성된 point는 current component의 surface 에 들어가게 된다. *createmark nodes 1 "on plane" 0 0 $min 0 0 1 0.1 1 0set mylist [hm_ge.. 2020. 9. 14.
[하이퍼매쉬 자동화] surface mesh 할 때, anchor node 기능 구현하기 [하이퍼매쉬 자동화] surface mesh 할 때, anchor node 기능 구현하기 surface mesh 에는 anchor node 기능이 없다. 하지만 다른 방식으로 구현할 수 있다. surface에 point 를 추가하는 기능이 있는데, 이때 원하는 node를 추가하면 된다. 코드 예시는 아래와 같다. Component A의 surface에 (0,0,-3)을 지나고 노멀 방향이 z축인 평면 위의 node를 추가한 것이다. 이후 이 node들은 anchor node와 같은 기능을 한다. 대신 equivalence 는 해주어야 한다. *createmark surfs 1 "by collector" "component_A"set SurfId [lindex [hm_getmark surfs 1] 0]*c.. 2020. 9. 14.
[하이퍼매쉬 자동화] suface 로 매쉬생성시 element 노드번호 일치 문제 [하이퍼매쉬 자동화] suface 로 매쉬생성시 element 노드번호 일치 문제 같은 line을 공유하는 surface라고 해도, 서로 다른 component로 분리되어 있으면 mesh 생성시 element가 일치되지 않는다. 2020. 9. 11.
[하이퍼매쉬 자동화] Surface A를 Surface B로 trim하기 [하이퍼매쉬 자동화] Surface A를 Surface B로 trim하기 Surface A는 component A 의 surface 이고, Surface B는 component B의 surface 라고 가정합시다. #surface A 선택*createmark surfaces 1 "by_collector" "A" #surface B 선택*createmark surfaces 2 "by_collector" "B" *trim 수행*surfmark_trim_by_surfmark 1 2 0 2020. 9. 9.
[하이퍼매쉬 자동화] on plane으로 요소 선택 [하이퍼매쉬 자동화] on plane으로 요소 선택 "on plane"으로 요소 선택 시 지나는 점의 위치와, normal vector 순으로 입력한다. 그리고 나서 tolerance와 plane옵션 touching 옵션을 입력한다. plane: 0 = plane, 1 = normal of planetouching: 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 .. 2020. 9. 9.
[하이퍼매쉬 자동화] 변수 생성 방법 [하이퍼매쉬 자동화] 변수 생성 방법 var라는 변수를 생성하고 30을 넣겠습니다. set 명령어를 사용합니다. set var 30>>30 이후 이 값을 사용할 때는 앞에 $ 표시를 붙여줘야 합니다. 예를들어 b라는 변수에 var 값을 넣어봅시다. set b $var>>30 2020. 9. 9.
[하이퍼매쉬 자동화] block 생성 방법 [하이퍼매쉬 자동화] block 생성 및 block으로 선택 어떤 요소를 선택할 때 유용하게 사용되는 기능이 block이다. 아래와 같이 생성한다. *createsimpleblock "B2" 11 10 10 -1 -10 -10 1 (10,10,-1) 과 (-10,-10,1)을 가장 긴 대각선 꼭지점으로 하는 정육면체를 생성해준다. block으로 요소를 선택하는 방법은 아래와 같다. *createmark elements 1 "by block" "B2" 2020. 9. 9.
[하이퍼매쉬 자동화] line으로 둘러쌓인 surface 생성 [하이퍼매쉬 자동화] line으로 둘러쌓인 surface 생성 #surfacemode 4선택#1 – mesh keep surface#2 – mesh delete surface#3 – mesh without surface#4 – surface only *surfacemode 4 #line 생성 (아래는 하나의 예시, 해당 평면 위에 있는 line 선택)*createmark lines 1 "on plane" 0 0 -10 0 0 1 0.1 1 0 #위 line 이용하여 surface 생성 (line componene에 생성)*splinesurface lines 1 1 1 3 # current component 에 생성 원하는 경우*splinesurface lines 1 1 1 2 2020. 9. 9.
[하이퍼매쉬 자동화] 화면의 점들을 리스트로 저장해서 z 최소값 출력 (for문) [하이퍼매쉬 자동화] 화면의 점들을 리스트로 저장해서 z 최소값 출력 (for문) #화면에 보이는 모든 포인트를 그룹1에 저장*createmark points 1 "displayed" #mylist 라는 변수에 points 1에 지정된 노드를 저장 set mylist [hm_getmark points 1] #mylist 길이 구하기(point 개수) set length [llength $mylist] #점들의 z 값만 list에 저장. set zlist "" for {set i 0} {$i 2020. 9. 9.
[하이퍼매쉬 자동화] 리스트에 요소 추가하기 [하이퍼매쉬 자동화] 리스트에 요소 추가하기 리스트에 요소를 추가할 때는 lappend 를 사용합니다. 먼저 리스트를 하나 만들어보겠습니다. set a "1 2 3">>1 2 3 요소를 추가합시다. lappend a 3>>1 2 3 3 2020. 9. 9.
[하이퍼매쉬 자동화] 리스트를 만들고 인덱싱 하는 법 [하이퍼매쉬 자동화] 리스트를 만들고 인덱싱 하는 법 리스트는 아래와 같이 큰 따옴표를 이용하여 만듭니다. set mylist "1 2 3 4 5" 또는 아래와 같이 입력합니다. set mylist [list 1 2 3] 출력하는 방법은 아래와 같습니다. put $mylist 인덱싱을 해봅시다. 위 리스트의 첫번째 원소에 접근해보겠습니다. 인덱싱에는 lindex 가 사용됩니다. lindex $mylist 0 2020. 9. 9.
[하이퍼매쉬 자동화] 선택과 확인 (createmark 와 hm_getmark) [하이퍼매쉬 자동화] 선택과 확인 (createmark 와 hm_getmark) 어떤 요소를 선택할 때 사용하는 명령어는 *createmark 입니다. elements, surfaces, nodes, lines, points 등을 뒤에 붙이면 됩니다. 그 뒤에는 임의의 그룹 번호를 입력하고, 선택 방법을 입력합니다. *createmark surfaces 1 "displayed" 위에서 선택된 surface의 번호(id)를 확인하는 방법은 아래와 같습니다. hm_getmark surfaces 1 2020. 9. 9.
[하이퍼매쉬 자동화] 리스트에 저장된 값 중 최댓값 구하기 [하이퍼매쉬 자동화] 리스트에 저장된 값 중 최댓값 구하기 리스트에 저장된 값들 중 최댓값을 구해주는 코드입니다. #listname 이라는 list에서 최댓값 구해서 max라는 변수에 저장set max [tcl::mathfunc::max {*}$listname] 2020. 9. 9.
[하이퍼매쉬 자동화] node 읽고 좌표 출력하기 [하이퍼매쉬 자동화] node 읽고 좌표 출력하기 #화면에 보이는 모든 노드를 그룹1에 저장*createmark nodes 1 "displayed" #nodelist 라는 변수에 nodes 1에 지정된 노드를 저장set nodelist [hm_getmark nodes 1] #nodelist 길이 얻기(node 개수)set length [llength $nodelist] #nodelist 의 1번째 node 번호 얻기lindex $nodelist 0 #node 154의 z값 얻기hm_getvalue nodes id=154 dataname=z #nodelist indes 이용해서 z값 얻기, 아래는 61번째 node의 z값hm_getvalue nodes id=[lindex $nodelist 60] datan.. 2020. 9. 9.
[하이퍼매쉬 자동화] hide와 show 명령어 사용 방법 [하이퍼매쉬 자동화] hide와 show 명령어 사용 방법 Component1과 Component2가 있다고 하자. on, off 변화를 잘 보면 이해될거다. 두 component의 mesh와 surface 모두 hide *createmark components 3 "component1" "component2"*createstringarray 2 "elements_on" "geometry_on"*hideentitybymark 3 1 2 두 component의 mesh만 hide *createmark components 3 "component1" "component2"*createstringarray 2 "elements_on" "geometry_off"*hideentitybymark 3 1 2 두 com.. 2020. 9. 8.
하이퍼매쉬 자동화 시도 이야기 하이퍼매쉬 자동화 시도 이야기 비슷한 모델을 몇백개 만들어야 했다. IGES로 되어있는 base 모델을 가져와서, 몇가지 컴포넌트를 더 생성하고 매쉬를 해줘야 했다. base  모델의 형상이 조금씩 바뀌는 것이고, 작업 방식은 동일하다.  매쉬를 짜고 아바쿠스로 해석까지 돌려야 했다. 주 업무는 아니고, 틈틈히 해야하는 일이었다.  시간은 충분히 주어져서, 오전에 한두모델 정도씩 하려고 했다. 모델을 3개 정도 진행했을 때, 단순 반복 작업이라 분명 자동화가 가능할 것이라는 느낌이 왔다. 모델을 만들때 생각난 것은 아니고, 집에서 영화를 보다 생각났다. 보통 아이디어는 다른 일을 할 때 떠오르더라.  아무튼 자동화가 가능할 것 같아 검색을 해보니 자동화가 가능했다. 하이퍼매쉬는 내가 하는 모든 작업을 c.. 2020. 9. 8.
abaqus 결과 튈 때 확인사항 아바쿠스 매쉬 튈 때 확인사항 하이퍼매쉬로 매쉬를 짜고 아바쿠스 inp으로 해석을 돌리는 사람입니다. 아바쿠스를 쓰다가 값이 자주 튀고, 튀는 값을 잡기위해 늘 많은 시간을 소모합니다. FEM이 주 업무는 아니라서, 자주 쓰지 않기 때문에 할 때마다 튀는 값을 잡느라 시간을 허비하는게 아까워서 기록을 해두려고 합니다. 삽질을 엄청 했는데 결과만 공유합니다. elastic 재료이고, tie의 경우입니다. 1) tie조건 아래 조건으로 했을 때, 가장 안튐 SURFACE TO SURFACE adjust = no 2) element 테트라로 짜는 경우. C3D10M 3) 얇은 구조물은 두께방향 매쉬 개수 3개 이상 4) 서로 다른 두 물체의 접합면을 tie 하는 경우는 매쉬를 일치시켜주는게 가장 좋고. 완전히.. 2020. 8. 5.
[하이퍼매쉬 tips] 인접한 파트의 매쉬와 일치시키는 방법 [하이퍼매쉬 tips] 인접한 파트의 매쉬와 일치시키는 방법 서로 다른 파트가 접촉하고 있고, tie로 결합되는 경우 mesh 형상을 최대한 일치시켜야 아바쿠스로 넘겨서 해석할 시 튀는 문제를 줄일 수 있음. 이때 사용하는 기능임. 2D 패널의 automesh에 들어가서 우측 하단에 보면, anchor nodes 가 있음. 인접 node를 선택하고, 이 node를 반드시 포함하도록 매쉬를 짜게 해주는 기능임. 문제는 anchor node를 설정할 경우, node 번호가 일치되버림. 아래는 해결방법. 매쉬할 때만, 인접 node와 일치하고, 번호는 분리하려면. 매쉬 한 이후에 2D 패널의 detach 에 들어가서, element를 선택하고 detach 해주면 됨. 2020. 8. 4.
반응형