public static CirculationPackage CirculationTypes(TestFitPackage tf) { //Trim circulation axis to floor plate region, shatter, and characterize. List <Curve> circulationAxis = tf.FloorPlanPackage.CirculationAxisCurves; Curve floorProfile = tf.FloorPlanPackage.FloorProfile; List <Curve> trimmedCirculationAxis = new List <Curve>(); foreach (Curve axis in circulationAxis) { Curve trimmedAxis = Curves.TrimWithClosedCurve(floorProfile, axis); trimmedCirculationAxis.Add(trimmedAxis); } //Shatter trimmed axis. List <Curve> circulationSegments = Curves.ShatterToSegments(trimmedCirculationAxis); //Characterize segments and format as CirculationPackage. CirculationPackage classifiedAxisSegments = Select.CirculationConfig(tf, circulationSegments); //Unify main curves before offset. List <Curve> simplifiedCurves = Curves.JoinColinear(classifiedAxisSegments.MainCurves); classifiedAxisSegments.MainCurves = simplifiedCurves; return(classifiedAxisSegments); }