/// <summary> /// 获取一个ifcproduct的boundingbox /// </summary> /// <param name="product">指定的product</param> /// <returns>XbimRect3D精度为2位的盒子</returns> public XbimRect3D GetAABB(IIfcProduct product) { //Xbim3DModelContext context = new Xbim3DModelContext(model); //context.CreateContext(); XbimRect3D prodBox = XbimRect3D.Empty; if (context.ShapeInstancesOf(product).Count() == 0) { return(prodBox); } foreach (var shp in context.ShapeInstancesOf(product)) { var bb = shp.BoundingBox; bb = XbimRect3D.TransformBy(bb, shp.Transformation); if (prodBox.IsEmpty) { prodBox = bb; } else { prodBox.Union(bb); } } //精度为2位小数 prodBox.Round(2); return(prodBox); //Console.WriteLine(prodBox.ToString()); }