기본 콘텐츠로 건너뛰기

4월, 2022의 게시물 표시

Shipping Box

  배관 자재를 운반하기 위한 컨테이너 박스에 운송비를 줄이기 위해 최대로 많은 배관 자재를 넣기 위한 방안입니다. 컨테이너 박스는 아시다시피 직육면체로 보시면 되고 배관 자재는 분기(TEE)가 없는 선형적인 구조라고 가정하겠습니다.(직관, ELBOW, REDUER, FLANGE로만 구성)   쉽게 생각해보면 " 컨테이너 박스에 차례로 배관 자재를 들어갈때 까지 넣으면 될것 같습니다. " 이게 끝일까요? 이렇게만 하고 코딩을 시작하면 될까요? 가슴 한 구석에서 " 이렇게만 하면 안될 것 같은데... "라고 이야기하는 것 같습니다.   여튼 시작해보겠습니다. 일반적으로 컨테이너 박스는 차량에 실려 운반되기 때문에 한쪽이 긴 직육면체입니다. 다행이 직관이 컨테이너의 길이 방향으로 놓여있다면 쉬울것 같은데 그렇지 않다면 문제가 됩니다.   그래서 직관을 컨테이너 길이 방향(각도 0)으로 회전시켜서 넣습니다.   코딩을 해봅시다. if angle == 0:     pass elif angle == 90:     직관을 -90도로 회전 elif angle == 270:     직관을 -270도로 회전 else:     pass 여러분들이 이런 코드를 보면 위험하다는 느낌을 가져야 합니다. 평면(360)을 4분면으로 나누어 처리했는데 일반 배관 라인은 직교하여 생성하기 때문에 큰 무리가 없어 보입니다만  사선으로 이동하는 배관 라인의 경우에 우리가 원하는 결과를 만족시킬수 없습니다.   그럼 45도를 코드에 넣어서 처리하면 되지 않을까 생각하시겠지만 if angle == 0:     pass elif angle == 45:     직관을 -45도로 회전 elif angle == 90:     직관을 -90도로 회전 elif angle == 270:     직관을 -270도로 회전 else:     pass 그렇게 생각하면 안됩니다. 위 코드는 특정 상황에만 제대로 동작하고 예외의 경우를 처리하지 못합니다. 저의 경험상 사용자는 우리가