/// <summary>
        /// 根据房间边界曲线,获得房间的包围盒(默认AABB)
        /// </summary>
        /// <param name="boundaryLoops"></param>
        /// <param name="sSpaceId"></param>
        /// <returns>Polygon2D包围盒数据</returns>
        public static AABB GetGeometryBBox(Geometry geo, string transformer)
        {
            PointIntList ptlist = new PointIntList();

            ConvertVerticesToPointIntList(geo.vertices, transformer, ref ptlist);

            // 暂时全部采用A包围盒,O.S.P后续视情况添加
            AABB aabb = ptlist.GetAABB(geo.Id.ToString());

            //PointInt ptCenter = aabb.Center();
            return(aabb);

            //OBB obb = ptlist.GetOBB(geo.Id.ToString());
            // obb.ToDataList_OBB();
        }
        /// <summary>
        /// 根据element的几何图形的顶点数据和转换矩阵,获取其位置点集
        /// </summary>
        /// <param name="sVertices">顶点字符串</param>
        /// <param name="transformer">矩阵信息字符串</param>
        /// <param name="ptlist">返回的位置点集</param>
        public static void ConvertVerticesToPointIntList(string sVertices, string transformer, ref PointIntList ptlist)
        {
            bool bConverted = ConvertFromJsonString(sVertices, out List <double> vertices);

            if (!bConverted)
            {
                return;
            }

            int vertexCount = vertices.Count / 3;

            for (var i = 0; i < vertexCount; i++)
            {
                double   x        = vertices[3 * i];
                double   y        = vertices[3 * i + 1];
                double   z        = vertices[3 * i + 2];
                XYZ      ptXYZ    = new XYZ(x, y, z);
                XYZ      ptChange = TransformPoint(ptXYZ, transformer);
                PointInt pt       = new PointInt((int)ptChange.X, (int)ptChange.Y, (int)ptChange.Z);
                ptlist.Add(pt);
            }
        }