use of org.bimserver.models.ifc2x3tc1.IfcExtrudedAreaSolid in project BIMserver by opensourceBIM.
the class Scaler method scale.
public void scale(float scale) {
if (scale != 1.0f) {
for (long key : ifcModel.keySet()) {
IdEObject idEObject = (IdEObject) ifcModel.get(key);
if (idEObject instanceof IfcAsymmetricIShapeProfileDef) {
setIfcAsymmetricIShapeProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcBlock) {
setIfcBlock(idEObject, scale);
} else if (idEObject instanceof IfcBoundingBox) {
setIfcBoundingBox(idEObject, scale);
} else if (idEObject instanceof IfcBuilding) {
setIfcBuilding(idEObject, scale);
} else if (idEObject instanceof IfcBuildingStorey) {
setIfcBuildingStorey(idEObject, scale);
} else if (idEObject instanceof IfcCartesianPoint) {
setIfcCartesianPoint(idEObject, scale);
} else if (idEObject instanceof IfcCenterLineProfileDef) {
setIfcCenterLineProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcChamferEdgeFeature) {
setIfcChamferEdgeFeature(idEObject, scale);
} else if (idEObject instanceof IfcCircle) {
setIfcCircle(idEObject, scale);
} else if (idEObject instanceof IfcCircleHollowProfileDef) {
setIfcCircleHollowProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcCircleProfileDef) {
setIfcCircleProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcCraneRailAShapeProfileDef) {
setIfcCraneRailAShapeProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcCraneRailFShapeProfileDef) {
setIfcCraneRailFShapeProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcConnectionPointEccentricity) {
setIfcConnectionPointEccentricity(idEObject, scale);
} else if (idEObject instanceof IfcCShapeProfileDef) {
setIfcCShapeProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcCurveStyleFontPattern) {
setIfcCurveStyleFontPattern(idEObject, scale);
} else if (idEObject instanceof IfcDoor) {
setIfcDoor(idEObject, scale);
} else if (idEObject instanceof IfcDoorLiningProperties) {
setIfcDoorLiningProperties(idEObject, scale);
} else if (idEObject instanceof IfcDoorPanelProperties) {
setIfcDoorPanelProperties(idEObject, scale);
} else if (idEObject instanceof IfcEdgeFeature) {
setIfcEdgeFeature(idEObject, scale);
} else if (idEObject instanceof IfcEllipse) {
setIfcEllipse(idEObject, scale);
} else if (idEObject instanceof IfcEllipseProfileDef) {
setIfcEllipseProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcExtrudedAreaSolid) {
setIfcExtrudedAreaSolid(idEObject, scale);
} else if (idEObject instanceof IfcGeneralProfileProperties) {
setIfcGeneralProfileProperties(idEObject, scale);
} else if (idEObject instanceof IfcIShapeProfileDef) {
setIfcIShapeProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcLightSourcePositional) {
setIfcLightSourcePositional(idEObject, scale);
} else if (idEObject instanceof IfcLShapeProfileDef) {
setIfcLShapeProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcMaterialLayer) {
setIfcMaterialLayer(idEObject, scale);
} else if (idEObject instanceof IfcMaterialLayerSetUsage) {
setIfcMaterialLayerSetUsage(idEObject, scale);
} else if (idEObject instanceof IfcMechanicalConcreteMaterialProperties) {
setIfcMechanicalConcreteMaterialProperties(idEObject, scale);
} else if (idEObject instanceof IfcMechanicalFastener) {
setIfcMechanicalFastener(idEObject, scale);
} else if (idEObject instanceof IfcOffsetCurve2D) {
setIfcOffsetCurve2D(idEObject, scale);
} else if (idEObject instanceof IfcOffsetCurve3D) {
setIfcOffsetCurve3D(idEObject, scale);
} else if (idEObject instanceof IfcPermeableCoveringProperties) {
setIfcPermeableCoveringProperties(idEObject, scale);
} else if (idEObject instanceof IfcPlanarExtent) {
setIfcPlanarExtent(idEObject, scale);
} else if (idEObject instanceof IfcQuantityLength) {
setIfcQuantityLength(idEObject, scale);
} else if (idEObject instanceof IfcRectangleHollowProfileDef) {
setIfcRectangleHollowProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcRectangleProfileDef) {
setIfcRectangleProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcRectangularPyramid) {
setIfcRectangularPyramid(idEObject, scale);
} else if (idEObject instanceof IfcReinforcementBarProperties) {
setIfcReinforcementBarProperties(idEObject, scale);
} else if (idEObject instanceof IfcReinforcingBar) {
setIfcReinforcingBar(idEObject, scale);
} else if (idEObject instanceof IfcReinforcingMesh) {
setIfcReinforcingMesh(idEObject, scale);
} else if (idEObject instanceof IfcRelConnectsStructuralMember) {
setIfcRelConnectsStructuralMember(idEObject, scale);
} else if (idEObject instanceof IfcRibPlateProfileProperties) {
setIfcRibPlateProfileProperties(idEObject, scale);
} else if (idEObject instanceof IfcRightCircularCone) {
setIfcRightCircularCone(idEObject, scale);
} else if (idEObject instanceof IfcRightCircularCylinder) {
setIfcRightCircularCylinder(idEObject, scale);
} else if (idEObject instanceof IfcRoundedEdgeFeature) {
setIfcRoundedEdgeFeature(idEObject, scale);
} else if (idEObject instanceof IfcRoundedRectangleProfileDef) {
setIfcRoundedRectangleProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcSectionReinforcementProperties) {
setIfcSectionReinforcementProperties(idEObject, scale);
} else if (idEObject instanceof IfcSite) {
setIfcSite(idEObject, scale);
} else if (idEObject instanceof IfcSlippageConnectionCondition) {
setIfcSlippageConnectionCondition(idEObject, scale);
} else if (idEObject instanceof IfcSpace) {
setIfcSpace(idEObject, scale);
} else if (idEObject instanceof IfcSphere) {
setIfcSphere(idEObject, scale);
} else if (idEObject instanceof IfcStairFlight) {
setIfcStairFlight(idEObject, scale);
} else if (idEObject instanceof IfcStructuralLoadSingleDisplacement) {
setIfcStructuralLoadSingleDisplacement(idEObject, scale);
} else if (idEObject instanceof IfcStructuralProfileProperties) {
setIfcStructuralProfileProperties(idEObject, scale);
} else if (idEObject instanceof IfcStructuralSurfaceMember) {
setIfcStructuralSurfaceMember(idEObject, scale);
} else if (idEObject instanceof IfcStructuralSurfaceMemberVarying) {
setIfcStructuralSurfaceMemberVarying(idEObject, scale);
} else if (idEObject instanceof IfcSurfaceOfLinearExtrusion) {
setIfcSurfaceOfLinearExtrusion(idEObject, scale);
} else if (idEObject instanceof IfcSweptDiskSolid) {
setIfcSweptDiskSolid(idEObject, scale);
} else if (idEObject instanceof IfcTendon) {
setIfcTendon(idEObject, scale);
} else if (idEObject instanceof IfcTextStyleWithBoxCharacteristics) {
setIfcTextStyleWithBoxCharacteristics(idEObject, scale);
} else if (idEObject instanceof IfcTrapeziumProfileDef) {
setIfcTrapeziumProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcTShapeProfileDef) {
setIfcTShapeProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcUShapeProfileDef) {
setIfcUShapeProfileDef(idEObject, scale);
} else if (idEObject instanceof IfcVector) {
setIfcVector(idEObject, scale);
} else if (idEObject instanceof IfcVirtualGridIntersection) {
setIfcVirtualGridIntersection(idEObject, scale);
} else if (idEObject instanceof IfcWindow) {
setIfcWindow(idEObject, scale);
} else if (idEObject instanceof IfcWindowLiningProperties) {
setIfcWindowLiningProperties(idEObject, scale);
} else if (idEObject instanceof IfcWindowPanelProperties) {
setIfcWindowPanelProperties(idEObject, scale);
} else if (idEObject instanceof IfcZShapeProfileDef) {
setIfcZShapeProfileDef(idEObject, scale);
}
setDoubleAsStringValues(idEObject);
}
}
}
use of org.bimserver.models.ifc2x3tc1.IfcExtrudedAreaSolid in project BIMserver by opensourceBIM.
the class IfcTools2D method getArea.
private Area getArea(double multiplierMillimeters, double[] productMatrix, IfcRepresentationItem ifcRepresentationItem) {
if (ifcRepresentationItem instanceof IfcExtrudedAreaSolid) {
IfcExtrudedAreaSolid ifcExtrudedAreaSolid = (IfcExtrudedAreaSolid) ifcRepresentationItem;
IfcAxis2Placement3D position = ifcExtrudedAreaSolid.getPosition();
// 1 0 0 0 <- 3de argument
// 0 1 0 0 <- cross product van 2 en 3 (levert ortogonale vector op)
// 0 0 1 0 <- 2st argument
// 5 0 0 1 <- 1st argument
double[] matrix = placement3DToMatrix(position);
if (productMatrix != null) {
double[] rhs = matrix;
matrix = Matrix.identity();
Matrix.multiplyMM(matrix, 0, productMatrix, 0, rhs, 0);
}
IfcDirection extrudedDirection = ifcExtrudedAreaSolid.getExtrudedDirection();
// TODO do something with this
IfcProfileDef ifcProfileDef = ifcExtrudedAreaSolid.getSweptArea();
if (ifcProfileDef instanceof IfcArbitraryProfileDefWithVoids) {
IfcArbitraryProfileDefWithVoids ifcArbitraryProfileDefWithVoids = (IfcArbitraryProfileDefWithVoids) ifcProfileDef;
IfcCurve outerCurve = ifcArbitraryProfileDefWithVoids.getOuterCurve();
Path2D outerPath = null;
if (outerCurve instanceof IfcPolyline) {
outerPath = curveToPath(matrix, outerCurve, multiplierMillimeters);
} else {
storeUnimplemented(outerCurve);
}
if (outerPath != null) {
Area area = new Area(outerPath);
for (IfcCurve innerCurve : ifcArbitraryProfileDefWithVoids.getInnerCurves()) {
Path2D.Float innerPath = curveToPath(matrix, innerCurve, multiplierMillimeters);
if (innerPath != null) {
area.subtract(new Area(innerPath));
}
}
return area;
}
} else if (ifcProfileDef instanceof IfcArbitraryClosedProfileDef) {
IfcArbitraryClosedProfileDef ifcArbitraryClosedProfileDef = (IfcArbitraryClosedProfileDef) ifcProfileDef;
Path2D.Float path2d = new Path2D.Float();
IfcCurve outerCurve = ifcArbitraryClosedProfileDef.getOuterCurve();
boolean first = true;
if (outerCurve instanceof IfcPolyline) {
IfcPolyline ifcPolyline = (IfcPolyline) outerCurve;
double[] res = new double[4];
int i = 0;
for (IfcCartesianPoint cartesianPoint : ifcPolyline.getPoints()) {
EList<Double> coords = cartesianPoint.getCoordinates();
Matrix.multiplyMV(res, 0, matrix, 0, new double[] { coords.get(0), coords.get(1), 0, 1 }, 0);
if (first) {
path2d.moveTo(res[0] * multiplierMillimeters, res[1] * multiplierMillimeters);
first = false;
} else {
if (i > 1) {
}
path2d.lineTo(res[0] * multiplierMillimeters, res[1] * multiplierMillimeters);
}
i++;
}
path2d.closePath();
return new Area(path2d);
} else if (outerCurve instanceof IfcCompositeCurve) {
IfcCompositeCurve ifcCompositeCurve = (IfcCompositeCurve) outerCurve;
for (IfcCompositeCurveSegment ifcCompositeCurveSegment : ifcCompositeCurve.getSegments()) {
IfcCurve curve = ifcCompositeCurveSegment.getParentCurve();
if (curve instanceof IfcPolyline) {
IfcPolyline ifcPolyline = (IfcPolyline) curve;
double[] res = new double[4];
for (IfcCartesianPoint cartesianPoint : ifcPolyline.getPoints()) {
EList<Double> coords = cartesianPoint.getCoordinates();
Matrix.multiplyMV(res, 0, matrix, 0, new double[] { coords.get(0), coords.get(1), 0, 1 }, 0);
if (first) {
path2d.moveTo(res[0] * multiplierMillimeters, res[1] * multiplierMillimeters);
first = false;
} else {
path2d.lineTo(res[0] * multiplierMillimeters, res[1] * multiplierMillimeters);
}
}
} else if (curve instanceof IfcTrimmedCurve) {
storeUnimplemented(curve);
} else {
storeUnimplemented(curve);
}
}
try {
path2d.closePath();
return new Area(path2d);
} catch (Exception e) {
//
}
}
} else if (ifcProfileDef instanceof IfcRectangleProfileDef) {
IfcRectangleProfileDef ifcRectangleProfileDef = (IfcRectangleProfileDef) ifcProfileDef;
double[] min = new double[] { ifcRectangleProfileDef.getPosition().getLocation().getCoordinates().get(0) - ifcRectangleProfileDef.getXDim() / 2, ifcRectangleProfileDef.getPosition().getLocation().getCoordinates().get(1) - ifcRectangleProfileDef.getYDim() / 2, 0, 1 };
double[] max = new double[] { ifcRectangleProfileDef.getPosition().getLocation().getCoordinates().get(0) + ifcRectangleProfileDef.getXDim() / 2, ifcRectangleProfileDef.getPosition().getLocation().getCoordinates().get(1) + ifcRectangleProfileDef.getYDim() / 2, 0, 1 };
Cube cube = new Cube(min, max);
cube.transform(matrix);
double[] transformedMin = cube.getMin();
double[] transformedMax = cube.getMax();
Path2D.Float path2d = new Path2D.Float();
path2d.moveTo(transformedMin[0] * multiplierMillimeters, transformedMin[1] * multiplierMillimeters);
path2d.lineTo(transformedMax[0] * multiplierMillimeters, transformedMin[1] * multiplierMillimeters);
path2d.lineTo(transformedMax[0] * multiplierMillimeters, transformedMax[1] * multiplierMillimeters);
path2d.lineTo(transformedMin[0] * multiplierMillimeters, transformedMax[1] * multiplierMillimeters);
path2d.lineTo(transformedMin[0] * multiplierMillimeters, transformedMin[1] * multiplierMillimeters);
path2d.closePath();
return new Area(path2d);
} else {
storeUnimplemented(ifcProfileDef);
}
} else if (ifcRepresentationItem instanceof IfcPolyline) {
IfcPolyline ifcPolyline = (IfcPolyline) ifcRepresentationItem;
double[] res = new double[4];
Path2D.Float path2d = new Path2D.Float();
boolean first = true;
for (IfcCartesianPoint cartesianPoint : ifcPolyline.getPoints()) {
EList<Double> coords = cartesianPoint.getCoordinates();
Matrix.multiplyMV(res, 0, productMatrix, 0, new double[] { coords.get(0), coords.get(1), 0, 1 }, 0);
if (first) {
path2d.moveTo(res[0] * multiplierMillimeters, res[1] * multiplierMillimeters);
first = false;
} else {
path2d.lineTo(res[0] * multiplierMillimeters, res[1] * multiplierMillimeters);
}
}
path2d.closePath();
return new Area(path2d);
} else {
storeUnimplemented(ifcRepresentationItem);
}
return null;
}
use of org.bimserver.models.ifc2x3tc1.IfcExtrudedAreaSolid in project BIMserver by opensourceBIM.
the class RichIfcModel method createRectangularExtrusionProductRepresentation.
public IfcProductRepresentation createRectangularExtrusionProductRepresentation(double width, double depth, double height) throws IfcModelInterfaceException {
IfcPolyline ifcPolyline = create(IfcPolyline.class);
EList<IfcCartesianPoint> points = ifcPolyline.getPoints();
points.add(createIfcCartesianPoint(0, 0, 0));
points.add(createIfcCartesianPoint(width, 0, 0));
points.add(createIfcCartesianPoint(width, depth, 0));
points.add(createIfcCartesianPoint(0, depth, 0));
points.add(createIfcCartesianPoint(0, 0, 0));
IfcArbitraryClosedProfileDef def = create(IfcArbitraryClosedProfileDef.class);
def.setProfileType(IfcProfileTypeEnum.AREA);
def.setOuterCurve(ifcPolyline);
IfcExtrudedAreaSolid extrudedAreaSolid = create(IfcExtrudedAreaSolid.class);
extrudedAreaSolid.setDepth(height);
extrudedAreaSolid.setSweptArea(def);
extrudedAreaSolid.setPosition(createBasicPosition(0, 0, 0));
extrudedAreaSolid.setExtrudedDirection(createDirection(0, 0, 1));
IfcProductRepresentation productRepresentation = create(IfcProductRepresentation.class);
IfcShapeRepresentation shapeRepresentation = create(IfcShapeRepresentation.class);
if (defaultRepresentationContext != null) {
shapeRepresentation.setContextOfItems(defaultRepresentationContext);
}
shapeRepresentation.setRepresentationType("SweptSolid");
shapeRepresentation.setRepresentationIdentifier("Body");
shapeRepresentation.getItems().add(extrudedAreaSolid);
productRepresentation.getRepresentations().add(shapeRepresentation);
return productRepresentation;
}
use of org.bimserver.models.ifc2x3tc1.IfcExtrudedAreaSolid in project BIMserver by opensourceBIM.
the class Scaler method setIfcExtrudedAreaSolid.
private void setIfcExtrudedAreaSolid(IdEObject idEObject, float scale) {
IfcExtrudedAreaSolid ifcExtrudedAreaSolid = (IfcExtrudedAreaSolid) idEObject;
ifcExtrudedAreaSolid.setDepth(ifcExtrudedAreaSolid.getDepth() * scale);
}
Aggregations