
examples.Doors Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of javaqueryengine Show documentation
Show all versions of javaqueryengine Show documentation
BIMserver plugin that provides a Java based query engine (old style)
The newest version!
/*
* This example fetches all stories from the model,
* orders them by elevation, selects the second floor,
* iterates over all doors, and print the doors higher than 2 meters
*
* Example file: AC9R1-Haus-G-H-Ver2-2x3.ifc
*/
package org.bimserver.jqep;
import java.io.PrintWriter;
import org.bimserver.jqep.*;
import org.bimserver.plugins.ModelHelper;
import org.bimserver.plugins.Reporter;
import org.bimserver.emf.IdEObject;
import org.bimserver.emf.IfcModelInterface;
import org.bimserver.emf.IfcModelInterfaceException;
import java.util.*;
import org.bimserver.models.ifc2x3tc1.*;
public class Query implements QueryInterface {
private IfcModelInterface model;
@Override
public void query(IfcModelInterface source, Reporter reporter, ModelHelper modelHelper) throws IfcModelInterfaceException {
reporter.info("Running doors example");
List stories = source.getAll(IfcBuildingStorey.class);
Map orderedStories = new TreeMap();
for (IfcBuildingStorey storey : stories) {
orderedStories.put(storey.getElevation(), storey);
}
final Map bigMap = new HashMap();
IdEObject newOwnerHistory = modelHelper.copyBasicObjects(source, bigMap);
if (orderedStories.size() > 1) {
IfcBuildingStorey firstFloor = stories.get(1);
for (IfcRelContainedInSpatialStructure rel : firstFloor.getContainsElements()) {
for (IfcProduct product : rel.getRelatedElements()) {
if (product instanceof IfcDoor) {
IfcDoor ifcDoor = (IfcDoor)product;
if (ifcDoor.getOverallHeight() > 2) {
reporter.info(ifcDoor.getName() + " " + ifcDoor.getOverallHeight());
IdEObject newObject = modelHelper.copy(ifcDoor, false, ModelHelper.createObjectIdm(ifcDoor.eClass()));
modelHelper.copyDecomposes(ifcDoor, newOwnerHistory);
bigMap.put(newObject, ifcDoor);
}
}
}
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy