Так, ну смотрите, вот код (на Revit Python Shell), думаю, не проблема будет перевести при необходимости, который Вам нужен
- room = selection[0] #нужно выбрать помещение 
-   
- calculator = SpatialElementGeometryCalculator(doc) 
- results = calculator.CalculateSpatialElementGeometry(room) 
-   
- solid = results.GetGeometry() 
-   
- plane = Plane.CreateByNormalAndOrigin(XYZ.BasisZ, room.get_BoundingBox(None).Min-XYZ.BasisZ) 
-   
- extrAnalyzer = ExtrusionAnalyzer.Create(solid, plane, -1*XYZ.BasisZ) 
-   
- face = extrAnalyzer.GetExtrusionBase() 
-   
- print face.GetEdgesAsCurveLoops()# тут работаем как раз с CurveLoop-ом 
НО. Оно не заработает, пока слегка не поправить модель. Я пробовал по-разному получать Solid, через get_Geometry, из свойства ClosedShell, даже пытался создавать FreeForm в семействе на основе этой геометрии и заново получать геометрию, нет, ExtrusionAnalyzer.Create вываливается с ошибкой. Пёс с ним, выбираем непосредственно из геометрии (не важно, get_Geometry или ClosedShell) solid, из него берем поверхность с нормалью -1*XYZ.BasisZ, окей, дальше берем границы - CurveLoop и тут внезапно оказывается, что он незамкнут, IsOpen() выдает true.
Как поправить файл:

Как понять, что нужно править именно в этом месте - не знаю, смотреть стены, ограничивающие помещения, но тут есть более очевидные кандидаты, на одной из стен висит предупреждение, у другой стоит запрет на соединение
Но №2: а какая задача? зачем 
Далее планирую выдавливание геометрии из CurveLoop 
У Вас вроде и так уже есть готовый Solid