본문 바로가기
<해석프로그램>/하이퍼매쉬 자동화

[하이퍼매쉬 자동화] 두 node 사이의 거리를 구하는 방법

by bigpicture 2020. 9. 15.
반응형

[하이퍼매쉬 자동화] 두 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 dataname=z]


각 좌표의 차이를 구합니다. 


set d_x [expr $d1_x-$d2_x]

set d_y [expr $d1_x-$d2_x]

set d_z [expr $d1_z-$d2_z]


두 점사이의 거리를 계산합니다. 


set dist [expr sqrt(pow($d_x,2)+pow($d_y,2)+pow($d_z,2))]





2) node를 *createmark 로 얻는 경우


특정 plane위에 있는 node들을 선택해서 n2 변수에 저장했습니다. 아래와 같은 방법으로 거리를 계산합니다. 


*createmark nodes 1 "on plane" 0 0 -2 0 0 1 0.1 1 0

set n2 [hm_getmark nodes 1]


set n1_x [hm_getvalue nodes id=[lindex $n2 0] dataname=x]

set n1_y [hm_getvalue nodes id=[lindex $n2 0] dataname=y]

set n1_z [hm_getvalue nodes id=[lindex $n2 0] dataname=z]

set n1_x [hm_getvalue nodes id=[lindex $n2 1] dataname=x]

set n1_y [hm_getvalue nodes id=[lindex $n2 1] dataname=y]

set n1_z [hm_getvalue nodes id=[lindex $n2 1] dataname=z]

set d_x [expr $d1_x-$d2_x]

set d_y [expr $d1_x-$d2_x]

set d_z [expr $d1_z-$d2_z]

set dist [expr sqrt(pow($d_x,2)+pow($d_y,2)+pow($d_z,2))]



3) Tcl command 이용


두 node의 아이디가 11과 22라고 합시다. 아래와 같은 방법으로 거리를 계산합니다. 


hm_getdistance nodes 11 22 0


0은 글로벌 좌표계를 의미합니다. 위와같이 명령어를 입력하면 아래 네가지 결과가 출력됩니다.


total distance and the three component values between the input nodes/points


거리만 원할 경우 아래 명령어를 이용합니다.


lindex [hm_getdistance nodes 11 22 0] 0

반응형

댓글