현재 수행하고 있는 과제 중에서 기존에 그려진 Cable Way를 이용하여 Cable Way를 지나가는 Cable Tray를 자동으로 그려주는 기능이 있습니다.
Cable Way가 X-Y 평면에 놓여 있을 경우에는 문제없이 잘 그려지지만 수직 방향으로 시작하는 경우에는 Cable Tray의 Open 방향이 잘못 선택되는 문제가 있습니다.
그래서 이 경우에 어떻게 Cable Tray의 Open 방향 벡터를 구하는 방법에 대해 알아보도록 하겠습니다.
제시 1)
Cable Way가 시작하는 지점에서 Cable Tray의 기본 Open 방향은 아래와 같습니다.
예를 들어 Vertical Cable Way의 경우는 이렇게 생겼습니다.
우선 Vec1과 Vec2의 Cross Product를 수행하여 벡터 O를 구합니다.
그리고 Vec1과 벡터 O의 Cross Product로 벡터 X를 구합니다.
이제 벡터 X방향으로 Cable Tray의 Open 방향을 맞추면 됩니다.
벡터 O와 벡터 X의 사이 각을 구해 구한 각 만큼 Cable Tray의 단면을 회전시켜 Cable Tray를 생성하면 됩니다.
이렇게해서 Vertical일 경우 Angle을 구해 Open 방향을 찾을 수 있습니다.
단 평면을 구성할 수 있어야 하기 때문에 3점 이상이 필요합니다.
2개의 점으로 구성된 Cable Way에서 Cable Tray의 Open 방향을 맞출 수 없으므로(Open 방향을 구할 수는 있지만 맞는 방향인지는 확인할 수 없음)
사용자가 방향을 정해줘야 합니다.
S3D에서는 그것이 가능합니다.!!!
확장해서 Vertical Cable Tray의 경우에 사용자 방향성을 정해 줄수 있다는 것이고
그렇게 된다면 위에서 말한 골치 아픈 계산을 하지 않고 프로그램에서 사용자가 입력한 각도만 사용하면 됩니다.
사용자 편의를 위해(각도를 입력하는 노력을 줄이는) 계산을 수행하는 것과
사용자를 잘 설득해 각도를 입력하라고 유도하는 방향으로 진행하는 것.
프로젝트에서 둘 중 어느것을 선택하는 것이 좋을까요?
제시 2)
앞의 내용은 약간은 머리 아픈 수식 계산을 동반했다면
트릭을 사용해 위 문제를 해결하는 방식입니다.
일단 Cable Way를 따라 Cable Tray를 생성합니다.
그리고 Vertical로 시작하는 Cable Way일 경우 생성된 X-Y 평면에 있는 Cable Tray를 하나 찾습니다.
그 Cable Tray의 O 벡터를 구해 Z(조건 : X-Y 축에 놓인 Cable Tray의 경우 O 벡터는 무조건 Z축이 됩니다.) 축 과의 사이 각을 구합니다.
생성한 Cable Tray들을 삭제합니다.
앞에서 구한 각도를 이용해서 다시 Cable Tray를 생성합니다.
여러분은 제시 1)과 제시 2)중 어느 것을 선택하시겠습니다.
Cable Way가 X-Y 평면에 놓여 있을 경우에는 문제없이 잘 그려지지만 수직 방향으로 시작하는 경우에는 Cable Tray의 Open 방향이 잘못 선택되는 문제가 있습니다.
그래서 이 경우에 어떻게 Cable Tray의 Open 방향 벡터를 구하는 방법에 대해 알아보도록 하겠습니다.
제시 1)
Cable Way가 시작하는 지점에서 Cable Tray의 기본 Open 방향은 아래와 같습니다.
예를 들어 Vertical Cable Way의 경우는 이렇게 생겼습니다.
우선 Vec1과 Vec2의 Cross Product를 수행하여 벡터 O를 구합니다.
그리고 Vec1과 벡터 O의 Cross Product로 벡터 X를 구합니다.
이제 벡터 X방향으로 Cable Tray의 Open 방향을 맞추면 됩니다.
벡터 O와 벡터 X의 사이 각을 구해 구한 각 만큼 Cable Tray의 단면을 회전시켜 Cable Tray를 생성하면 됩니다.
이렇게해서 Vertical일 경우 Angle을 구해 Open 방향을 찾을 수 있습니다.
단 평면을 구성할 수 있어야 하기 때문에 3점 이상이 필요합니다.
2개의 점으로 구성된 Cable Way에서 Cable Tray의 Open 방향을 맞출 수 없으므로(Open 방향을 구할 수는 있지만 맞는 방향인지는 확인할 수 없음)
사용자가 방향을 정해줘야 합니다.
S3D에서는 그것이 가능합니다.!!!
확장해서 Vertical Cable Tray의 경우에 사용자 방향성을 정해 줄수 있다는 것이고
그렇게 된다면 위에서 말한 골치 아픈 계산을 하지 않고 프로그램에서 사용자가 입력한 각도만 사용하면 됩니다.
사용자 편의를 위해(각도를 입력하는 노력을 줄이는) 계산을 수행하는 것과
사용자를 잘 설득해 각도를 입력하라고 유도하는 방향으로 진행하는 것.
프로젝트에서 둘 중 어느것을 선택하는 것이 좋을까요?
제시 2)
앞의 내용은 약간은 머리 아픈 수식 계산을 동반했다면
트릭을 사용해 위 문제를 해결하는 방식입니다.
일단 Cable Way를 따라 Cable Tray를 생성합니다.
그리고 Vertical로 시작하는 Cable Way일 경우 생성된 X-Y 평면에 있는 Cable Tray를 하나 찾습니다.
그 Cable Tray의 O 벡터를 구해 Z(조건 : X-Y 축에 놓인 Cable Tray의 경우 O 벡터는 무조건 Z축이 됩니다.) 축 과의 사이 각을 구합니다.
생성한 Cable Tray들을 삭제합니다.
앞에서 구한 각도를 이용해서 다시 Cable Tray를 생성합니다.
여러분은 제시 1)과 제시 2)중 어느 것을 선택하시겠습니다.
댓글
댓글 쓰기