IList <CurveLoop> GetCurveLoops(Document doc, Reference rf)
        {
            IList <CurveLoop> curveloop      = new List <CurveLoop>();
            GeometryObject    geometryObject = doc.GetElement(rf).GetGeometryObjectFromReference(rf);

            try
            {
                PlanarFace planarFace = geometryObject as PlanarFace;
                curveloop = planarFace.GetEdgesAsCurveLoops();
            }
            catch
            {
                HermiteFace hermiteFace = geometryObject as HermiteFace;
                if (hermiteFace == null)
                {
                    RuledFace ruledFace = geometryObject as RuledFace;
                    curveloop = ruledFace.GetEdgesAsCurveLoops();
                }
                else
                {
                    curveloop = hermiteFace.GetEdgesAsCurveLoops();
                }
            }
            return(curveloop);
        }