private void processStorey(Building building, IfcBuildingStorey ifcBuildingStorey) throws SerializerException { for (IfcRelDecomposes ifcRelDecomposes : ifcBuildingStorey.getIsDecomposedBy()) { for (IfcObjectDefinition ifcObjectDefinition : ifcRelDecomposes.getRelatedObjects()) { if (ifcObjectDefinition instanceof IfcSpace) { IfcSpace ifcSpace = (IfcSpace) ifcObjectDefinition; processSpace(building, ifcSpace); } } } for (IfcRelContainedInSpatialStructure ifcRelContainedInSpatialStructure : ifcBuildingStorey.getContainsElements()) { for (IfcProduct ifcProduct : ifcRelContainedInSpatialStructure.getRelatedElements()) { if (!convertedObjects.containsKey(ifcProduct)) { Room room = createFakeRoom(building); processBoundary(building, room, ifcProduct, null); if (ifcProduct instanceof IfcSpace) { IfcSpace ifcSpace = (IfcSpace) ifcProduct; processSpace(building, ifcSpace); } else if (ifcProduct instanceof IfcSlab) { convertSlab(building, room, (IfcSlab) ifcProduct); } } } } for (IfcRelContainedInSpatialStructure spatialStructure : ifcBuildingStorey.getContainsElements()) { for (IfcProduct ifcProduct : spatialStructure.getRelatedElements()) { if (ifcProduct instanceof IfcRoof) { RoofSurface roofSurface = new RoofSurface(); MultiSurfaceProperty roofMSP = new MultiSurfaceProperty(); MultiSurface roofMs = new MultiSurface(); roofMSP.setMultiSurface(roofMs); roofSurface.setLod4MultiSurface(roofMSP); setGeometry(roofMs, (IfcProduct) ifcProduct); BoundarySurfaceProperty boundarySurfaceProperty = new BoundarySurfaceProperty(); boundarySurfaceProperty.setObject(roofSurface); convertedObjects.put(ifcProduct, roofSurface); setName(roofSurface.getName(), ifcProduct.getName()); setGlobalId(roofSurface, ifcProduct); // IfcRoof ifcRoof = (IfcRoof) ifcProduct; // RoofTypeEnum roofTypeEnum = // RoofTypeEnum.valueOf(ifcRoof.getShapeType().getName()); // roofSurface.addGenericApplicationPropertyOfCityObject(roofTypeEnum); building.addBoundedBySurface(boundarySurfaceProperty); } else { List<Element> processProduct = processProduct(ifcProduct); if (processProduct != null) { for (Element element : processProduct) { building.addGenericADEComponent(new ADEComponent(element)); } } } } } }
private RoofSurface createRoof(Building building, IfcProduct ifcRelating) throws SerializerException { RoofSurface roofSurface = new RoofSurface(); MultiSurfaceProperty roofMSP = new MultiSurfaceProperty(); MultiSurface roofMs = new MultiSurface(); roofMSP.setMultiSurface(roofMs); roofSurface.setLod4MultiSurface(roofMSP); setGeometry(roofMs, ifcRelating); BoundarySurfaceProperty boundarySurfaceProperty = new BoundarySurfaceProperty(); boundarySurfaceProperty.setObject(roofSurface); building.addBoundedBySurface(boundarySurfaceProperty); setName(roofSurface.getName(), ifcRelating.getName()); setGlobalId(roofSurface, ifcRelating); return roofSurface; }