앞서 CableWay, CableTray의 OrientedRangeBox를 구했습니다.
이번에는 Structure 부재의 OrientedRangeBox를 구하도록 하겠습니다. Structure 부재에는 Column, Beam, Girder, Brace가 있습니다.
선택한 부재의 BussinessObject의 CutLength 속성은 부재의 길이, $Origin$은 부재의 시작점을 의미합니다. 그리고 XAxis, YAxis, ZAxis는 부재가 놓인 방향을 의미합니니다.
XAxis는 길이 방향, YAxis는 너비 방향, ZAxis는 깊이 방향을 의미합니다.
BussinessObject가 가지고 있는 CrossSection 속성에는 부재 단면의 정보가 있습니다.
CrossSection은 다시 부재의 Width, Depth와 Cardinal Point 정보를 가지고 있습니다.
Cardinal Point는 아래와 같이 정의됩니다.
Cardinal Point가 지정하는 위치가 $Origin$의 위치가 됩니다.
OrientedRangeBox를 정의하기 위해서는 $Origin\prime,\text{ }\overrightarrow{Width},\text{ }\overrightarrow{Depth},\text{ }\overrightarrow{Direction}$ 정보가 필요합니다.
$$\begin{eqnarray} \overrightarrow{Direction} &=&\overrightarrow{XAxis}*CutLength \\ \overrightarrow{Width}&=&\overrightarrow{YAxis}*Width \\ \overrightarrow{Depth}&=&\overrightarrow{ZAxis}*Depth \end{eqnarray}$$
$$\begin{eqnarray} \overrightarrow{Direction} &=&\overrightarrow{XAxis}*CutLength \\ \overrightarrow{Width}&=&\overrightarrow{YAxis}*Width \\ \overrightarrow{Depth}&=&\overrightarrow{ZAxis}*Depth \end{eqnarray}$$
이 됩니다.
방향 벡터는 모두 정해졌으니 $Origin\prime$만 구하면 됩니다.
OrientedRangeBox의 $Origin\prime$은 부재의 $Origin$과 축 벡터를 통하여 구할 수 있습니다.
예를 들어 Cardinal Point가 8이면,
$Origin^\prime=Origin - \overrightarrow{YAxis}\times Width*0.5 - \overrightarrow{ZAxis}\times Depth$ 이 됩니다.
댓글
댓글 쓰기