/// <summary>
        /// Create IFC connection surface geometry from an opening object.
        /// </summary>
        /// <param name="file">
        /// The IFC file.
        /// </param>
        /// <param name="opening">
        /// The EnergyAnalysisOpening.
        /// </param>
        /// <param name="offset">
        /// The offset of opening.
        /// </param>
        /// <returns>
        /// The connection surface geometry handle.
        /// </returns>
        static IFCAnyHandle CreateConnectionSurfaceGeometry(IFCFile file, EnergyAnalysisOpening opening)
        {
            Polyloop outerLoop = opening.GetPolyloop();
            IList<XYZ> outerLoopPoints = outerLoop.GetPoints();

            IList<IList<XYZ>> innerLoopPoints = new List<IList<XYZ>>();

            IFCAnyHandle hnd = file.CreateCurveBoundedPlane(outerLoopPoints, innerLoopPoints);

            IFCAnyHandle ifcOptionalHnd = IFCAnyHandle.Create();
            return file.CreateConnectionSurfaceGeometry(hnd, ifcOptionalHnd);
        }