Cable AutoRouting을 하기 위해서는 Cable이 지나는 모든 CableTray에 대한 맵을 구성해야 합니다. 맵을 구성하기 위해 먼저 각 CableTray에 대해서 Node와 Edge를 구성합니다. 프로젝트 수행을 위해 고객사에서 보여준 제안서의 CableTray는 끊어진 Feature 없이 매끄럽게 연결되어 있었습니다. 하지만 막상 실제 프로젝트 수행이 끝난 3D Model을 받아 보니 군데군데 이빠지듯 Feature가 빠진 CableTray도 다수 있고 CableTray의 Feature 순서도 뒤죽박죽이었습니다. 우리가 생각한것보다 모델링의 품질이 좋지 않았습니다. CableTray1과 CableTray2가 하나의 CableTray로 구성될거라 생각했었는데 다른 CableTray로 만들어져 있습니다. [CableTray의 Feature가 서로 떨어져 있는 경우] CableTray는 여러 Feature들로 구성되어 있습니다. 그리고 Feature는 Part를 가지고 있습니다. Feature의 타입에는 Straight, Branch, End, Turn, AlongLegFeature등이 있습니다. Part가 있는 Feature만 노드를 생성합니다. End, Branch Feature등 물리적 형상의 나타내는 Part를 가지고 있지 않는 Feature에 대해서는 노드를 생성하지 않습니다. 노드를 생성한 Feature의 OrientedRangeBox의 Intersects 함수를 이용하여 Feature와 Feature간의 에지를 생성합니다. class CableTray: def __init__ ( ) : self ._nodes = [ ] def build_network ( ) : for feature in self ._features: if feature. has_part : self ._nodes. append ( new Node ( feature ) ) for i...