mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-18 19:30:25 +00:00
- Fixed a bug regarding IfcUnitAssignment
- Separate IFC parsing library and geometry libraries [#3395025] - Added example for IfcParse usage without geometry or Open CASCADE functionality - Cleanup of vcproj Open CASCADE dependencies - Added function to query parent class type in IfcExpressParser.py
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
ADD_EXECUTABLE(IfcParseExamples ../src/examples/IfcParseExamples.cpp)
|
||||
TARGET_LINK_LIBRARIES (IfcParseExamples IfcParse)
|
||||
@@ -0,0 +1,81 @@
|
||||
/********************************************************************************
|
||||
* *
|
||||
* This file is part of IfcOpenShell. *
|
||||
* *
|
||||
* IfcOpenShell is free software: you can redistribute it and/or modify *
|
||||
* it under the terms of the Lesser GNU General Public License as published by *
|
||||
* the Free Software Foundation, either version 3.0 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* IfcOpenShell is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* Lesser GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the Lesser GNU General Public License *
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
********************************************************************************/
|
||||
|
||||
#include "../ifcparse/IfcParse.h"
|
||||
|
||||
using namespace Ifc2x3;
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
|
||||
if ( argc != 2 ) {
|
||||
std::cout << "usage: IfcParseExamples <filename.ifc>" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Redirect the output (both progress and log) to stdout
|
||||
Ifc::SetOutput(&std::cout,&std::cout);
|
||||
|
||||
// Parse the IFC file provided in argv[1]
|
||||
if ( ! Ifc::Init(argv[1]) ) {
|
||||
std::cout << "Unable to parse .ifc file" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Lets get a list of IfcBuildingElements, this is the parent
|
||||
// type of things like walls, windows and doors.
|
||||
// EntitiesByType is a templated function and returns a
|
||||
// templated class that behaves like a std::vector.
|
||||
// Note that the return types are all typedef'ed as members of
|
||||
// the generated classes, ::list for the templated vector class,
|
||||
// ::ptr for a shared pointer and ::it for an iterator.
|
||||
// We will simply iterate over the vector and print a string
|
||||
// representation of the entity to stdout.
|
||||
//
|
||||
// Secondly, lets find out which of them are IfcWindows.
|
||||
// In order to access the additional properties that windows
|
||||
// have on top af the properties of building elements,
|
||||
// we need to cast them to IfcWindows. Since these properties
|
||||
// are optional we need to make sure the properties are
|
||||
// defined for the window in question before accessing them.
|
||||
//
|
||||
// Since we are accessing properties that represent a length
|
||||
// measure we can multiply the value by Ifc::LengthUnit, which
|
||||
// contains the ratio of the unit defined in the IfcUnitAssignment
|
||||
// to the standard SI Unit, the meter.
|
||||
IfcBuildingElement::list elements = Ifc::EntitiesByType<IfcBuildingElement>();
|
||||
|
||||
std::cout << "Found " << elements->Size() << " elements in " << argv[1] << ":" << std::endl;
|
||||
|
||||
for ( IfcBuildingElement::it it = elements->begin(); it != elements->end(); ++ it ) {
|
||||
|
||||
const IfcBuildingElement::ptr element = *it;
|
||||
std::cout << element->entity->toString() << std::endl;
|
||||
|
||||
if ( element->is(IfcWindow::Class()) ) {
|
||||
const IfcWindow::ptr window = reinterpret_pointer_cast<IfcBuildingElement,IfcWindow>(element);
|
||||
|
||||
if ( window->hasOverallWidth() && window->hasOverallHeight() ) {
|
||||
const float area = window->OverallWidth()*window->OverallHeight() * (Ifc::LengthUnit*Ifc::LengthUnit);
|
||||
std::cout << "This window has an area of " << area << "m2" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -381,6 +381,7 @@ namespace Type {
|
||||
typedef enum {
|
||||
%(enum)s
|
||||
} Enum;
|
||||
Enum Parent(Enum v);
|
||||
Enum FromString(const std::string& s);
|
||||
std::string ToString(Enum v);
|
||||
}
|
||||
@@ -450,6 +451,14 @@ for e in all_enumerations:
|
||||
print >>cpp_file, " throw;"
|
||||
print >>cpp_file, "}"
|
||||
|
||||
print >>cpp_file, "Type::Enum Type::Parent(Enum v){"
|
||||
print >>cpp_file, " if (v < 0 || v >= %d) return -1;"%len(all_enumerations)
|
||||
for e in entity_enumerations:
|
||||
if e not in parent_relations: continue
|
||||
print >>cpp_file, ' if(v==%s%s) { return %s; }'%(e," "*(maxlen-len(e)),parent_relations[e])
|
||||
print >>cpp_file, " return -1;"
|
||||
print >>cpp_file, "}"
|
||||
|
||||
for t in [T for T in types if isinstance(T.type,EnumType)]:
|
||||
print >>cpp_file, t
|
||||
for e in entities: print >>cpp_file, e,
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
#include <TopLoc_Location.hxx>
|
||||
|
||||
#include "../ifcparse/IfcGeom.h"
|
||||
#include "../ifcgeom/IfcGeom.h"
|
||||
|
||||
bool IfcGeom::convert(const Ifc2x3::IfcCircle::ptr& l, Handle(Geom_Curve)& curve) {
|
||||
const float r = l->Radius() * Ifc::LengthUnit;
|
||||
@@ -74,7 +74,7 @@
|
||||
|
||||
#include <TopLoc_Location.hxx>
|
||||
|
||||
#include "../ifcparse/IfcGeom.h"
|
||||
#include "../ifcgeom/IfcGeom.h"
|
||||
|
||||
bool IfcGeom::convert(const Ifc2x3::IfcFace::ptr& l, TopoDS_Face& face) {
|
||||
Ifc2x3::IfcFaceBound::list bounds = l->Bounds();
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
#include <TopLoc_Location.hxx>
|
||||
|
||||
#include "../ifcparse/IfcGeom.h"
|
||||
#include "../ifcgeom/IfcGeom.h"
|
||||
|
||||
bool IfcGeom::convert_openings(const Ifc2x3::IfcProduct::ptr& entity,
|
||||
const Ifc2x3::IfcRelVoidsElement::list& openings, TopoDS_Shape& result, const gp_Trsf& trsf2) {
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
#include <TopLoc_Location.hxx>
|
||||
|
||||
#include "../ifcparse/IfcGeom.h"
|
||||
#include "../ifcgeom/IfcGeom.h"
|
||||
|
||||
|
||||
namespace IfcGeom {
|
||||
@@ -33,8 +33,8 @@
|
||||
#include <Poly_Array1OfTriangle.hxx>
|
||||
#include <StdFail_NotDone.hxx>
|
||||
|
||||
#include "../ifcparse/IfcGeomObjects.h"
|
||||
#include "../ifcparse/IfcGeom.h"
|
||||
#include "../ifcgeom/IfcGeomObjects.h"
|
||||
#include "../ifcgeom/IfcGeom.h"
|
||||
|
||||
// Welds vertices that belong to different faces
|
||||
int IfcGeomObjects::IfcMesh::addvert(gp_Pnt p) {
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
#include <TopLoc_Location.hxx>
|
||||
|
||||
#include "../ifcparse/IfcGeom.h"
|
||||
#include "../ifcgeom/IfcGeom.h"
|
||||
|
||||
bool IfcGeom::convert(const Ifc2x3::IfcExtrudedAreaSolid::ptr& l, TopoDS_Shape& shape) {
|
||||
TopoDS_Face face;
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
#include <TopLoc_Location.hxx>
|
||||
|
||||
#include "../ifcparse/IfcGeom.h"
|
||||
#include "../ifcgeom/IfcGeom.h"
|
||||
|
||||
bool IfcGeom::convert(const Ifc2x3::IfcCompositeCurve::ptr& l, TopoDS_Wire& wire) {
|
||||
Ifc2x3::IfcCompositeCurveSegment::list segments = l->Segments();
|
||||
@@ -30,7 +30,7 @@
|
||||
#include <set>
|
||||
#include <time.h>
|
||||
|
||||
#include "../ifcparse/IfcGeomObjects.h"
|
||||
#include "../ifcgeom/IfcGeomObjects.h"
|
||||
#include "../ifcobj/ObjMaterials.h"
|
||||
|
||||
int main ( int argc, char** argv ) {
|
||||
@@ -102,8 +102,11 @@ int main ( int argc, char** argv ) {
|
||||
fMtl << GetMaterial(*it);
|
||||
}
|
||||
|
||||
std::cout << std::endl << "Log:" << std::endl;
|
||||
std::cout << ss.str();
|
||||
std::string log = ss.str();
|
||||
if ( log.size() ) {
|
||||
std::cout << std::endl << "Log:" << std::endl;
|
||||
std::cout << ss.str();
|
||||
}
|
||||
|
||||
time(&end);
|
||||
int dif = (int) difftime (end,start);
|
||||
|
||||
@@ -1557,6 +1557,562 @@ Type::Enum Type::FromString(const std::string& s){
|
||||
if(s=="IFCZONE" ) { return IfcZone; }
|
||||
throw;
|
||||
}
|
||||
Type::Enum Type::Parent(Enum v){
|
||||
if (v < 0 || v >= 758) return (Enum) -1;
|
||||
if(v==Ifc2DCompositeCurve ) { return IfcCompositeCurve; }
|
||||
if(v==IfcActionRequest ) { return IfcControl; }
|
||||
if(v==IfcActor ) { return IfcObject; }
|
||||
if(v==IfcActuatorType ) { return IfcDistributionControlElementType; }
|
||||
if(v==IfcAirTerminalBoxType ) { return IfcFlowControllerType; }
|
||||
if(v==IfcAirTerminalType ) { return IfcFlowTerminalType; }
|
||||
if(v==IfcAirToAirHeatRecoveryType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcAlarmType ) { return IfcDistributionControlElementType; }
|
||||
if(v==IfcAngularDimension ) { return IfcDimensionCurveDirectedCallout; }
|
||||
if(v==IfcAnnotation ) { return IfcProduct; }
|
||||
if(v==IfcAnnotationCurveOccurrence ) { return IfcAnnotationOccurrence; }
|
||||
if(v==IfcAnnotationFillArea ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcAnnotationFillAreaOccurrence ) { return IfcAnnotationOccurrence; }
|
||||
if(v==IfcAnnotationOccurrence ) { return IfcStyledItem; }
|
||||
if(v==IfcAnnotationSurface ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcAnnotationSurfaceOccurrence ) { return IfcAnnotationOccurrence; }
|
||||
if(v==IfcAnnotationSymbolOccurrence ) { return IfcAnnotationOccurrence; }
|
||||
if(v==IfcAnnotationTextOccurrence ) { return IfcAnnotationOccurrence; }
|
||||
if(v==IfcArbitraryClosedProfileDef ) { return IfcProfileDef; }
|
||||
if(v==IfcArbitraryOpenProfileDef ) { return IfcProfileDef; }
|
||||
if(v==IfcArbitraryProfileDefWithVoids ) { return IfcArbitraryClosedProfileDef; }
|
||||
if(v==IfcAsset ) { return IfcGroup; }
|
||||
if(v==IfcAsymmetricIShapeProfileDef ) { return IfcIShapeProfileDef; }
|
||||
if(v==IfcAxis1Placement ) { return IfcPlacement; }
|
||||
if(v==IfcAxis2Placement2D ) { return IfcPlacement; }
|
||||
if(v==IfcAxis2Placement3D ) { return IfcPlacement; }
|
||||
if(v==IfcBSplineCurve ) { return IfcBoundedCurve; }
|
||||
if(v==IfcBeam ) { return IfcBuildingElement; }
|
||||
if(v==IfcBeamType ) { return IfcBuildingElementType; }
|
||||
if(v==IfcBezierCurve ) { return IfcBSplineCurve; }
|
||||
if(v==IfcBlobTexture ) { return IfcSurfaceTexture; }
|
||||
if(v==IfcBlock ) { return IfcCsgPrimitive3D; }
|
||||
if(v==IfcBoilerType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcBooleanClippingResult ) { return IfcBooleanResult; }
|
||||
if(v==IfcBooleanResult ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcBoundaryEdgeCondition ) { return IfcBoundaryCondition; }
|
||||
if(v==IfcBoundaryFaceCondition ) { return IfcBoundaryCondition; }
|
||||
if(v==IfcBoundaryNodeCondition ) { return IfcBoundaryCondition; }
|
||||
if(v==IfcBoundaryNodeConditionWarping ) { return IfcBoundaryNodeCondition; }
|
||||
if(v==IfcBoundedCurve ) { return IfcCurve; }
|
||||
if(v==IfcBoundedSurface ) { return IfcSurface; }
|
||||
if(v==IfcBoundingBox ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcBoxedHalfSpace ) { return IfcHalfSpaceSolid; }
|
||||
if(v==IfcBuilding ) { return IfcSpatialStructureElement; }
|
||||
if(v==IfcBuildingElement ) { return IfcElement; }
|
||||
if(v==IfcBuildingElementComponent ) { return IfcBuildingElement; }
|
||||
if(v==IfcBuildingElementPart ) { return IfcBuildingElementComponent; }
|
||||
if(v==IfcBuildingElementProxy ) { return IfcBuildingElement; }
|
||||
if(v==IfcBuildingElementProxyType ) { return IfcBuildingElementType; }
|
||||
if(v==IfcBuildingElementType ) { return IfcElementType; }
|
||||
if(v==IfcBuildingStorey ) { return IfcSpatialStructureElement; }
|
||||
if(v==IfcCShapeProfileDef ) { return IfcParameterizedProfileDef; }
|
||||
if(v==IfcCableCarrierFittingType ) { return IfcFlowFittingType; }
|
||||
if(v==IfcCableCarrierSegmentType ) { return IfcFlowSegmentType; }
|
||||
if(v==IfcCableSegmentType ) { return IfcFlowSegmentType; }
|
||||
if(v==IfcCartesianPoint ) { return IfcPoint; }
|
||||
if(v==IfcCartesianTransformationOperator ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcCartesianTransformationOperator2D ) { return IfcCartesianTransformationOperator; }
|
||||
if(v==IfcCartesianTransformationOperator2DnonUniform) { return IfcCartesianTransformationOperator2D; }
|
||||
if(v==IfcCartesianTransformationOperator3D ) { return IfcCartesianTransformationOperator; }
|
||||
if(v==IfcCartesianTransformationOperator3DnonUniform) { return IfcCartesianTransformationOperator3D; }
|
||||
if(v==IfcCenterLineProfileDef ) { return IfcArbitraryOpenProfileDef; }
|
||||
if(v==IfcChamferEdgeFeature ) { return IfcEdgeFeature; }
|
||||
if(v==IfcChillerType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcCircle ) { return IfcConic; }
|
||||
if(v==IfcCircleHollowProfileDef ) { return IfcCircleProfileDef; }
|
||||
if(v==IfcCircleProfileDef ) { return IfcParameterizedProfileDef; }
|
||||
if(v==IfcClassificationReference ) { return IfcExternalReference; }
|
||||
if(v==IfcClosedShell ) { return IfcConnectedFaceSet; }
|
||||
if(v==IfcCoilType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcColourRgb ) { return IfcColourSpecification; }
|
||||
if(v==IfcColumn ) { return IfcBuildingElement; }
|
||||
if(v==IfcColumnType ) { return IfcBuildingElementType; }
|
||||
if(v==IfcComplexProperty ) { return IfcProperty; }
|
||||
if(v==IfcCompositeCurve ) { return IfcBoundedCurve; }
|
||||
if(v==IfcCompositeCurveSegment ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcCompositeProfileDef ) { return IfcProfileDef; }
|
||||
if(v==IfcCompressorType ) { return IfcFlowMovingDeviceType; }
|
||||
if(v==IfcCondenserType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcCondition ) { return IfcGroup; }
|
||||
if(v==IfcConditionCriterion ) { return IfcControl; }
|
||||
if(v==IfcConic ) { return IfcCurve; }
|
||||
if(v==IfcConnectedFaceSet ) { return IfcTopologicalRepresentationItem; }
|
||||
if(v==IfcConnectionCurveGeometry ) { return IfcConnectionGeometry; }
|
||||
if(v==IfcConnectionPointEccentricity ) { return IfcConnectionPointGeometry; }
|
||||
if(v==IfcConnectionPointGeometry ) { return IfcConnectionGeometry; }
|
||||
if(v==IfcConnectionPortGeometry ) { return IfcConnectionGeometry; }
|
||||
if(v==IfcConnectionSurfaceGeometry ) { return IfcConnectionGeometry; }
|
||||
if(v==IfcConstructionEquipmentResource ) { return IfcConstructionResource; }
|
||||
if(v==IfcConstructionMaterialResource ) { return IfcConstructionResource; }
|
||||
if(v==IfcConstructionProductResource ) { return IfcConstructionResource; }
|
||||
if(v==IfcConstructionResource ) { return IfcResource; }
|
||||
if(v==IfcContextDependentUnit ) { return IfcNamedUnit; }
|
||||
if(v==IfcControl ) { return IfcObject; }
|
||||
if(v==IfcControllerType ) { return IfcDistributionControlElementType; }
|
||||
if(v==IfcConversionBasedUnit ) { return IfcNamedUnit; }
|
||||
if(v==IfcCooledBeamType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcCoolingTowerType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcCostItem ) { return IfcControl; }
|
||||
if(v==IfcCostSchedule ) { return IfcControl; }
|
||||
if(v==IfcCostValue ) { return IfcAppliedValue; }
|
||||
if(v==IfcCovering ) { return IfcBuildingElement; }
|
||||
if(v==IfcCoveringType ) { return IfcBuildingElementType; }
|
||||
if(v==IfcCraneRailAShapeProfileDef ) { return IfcParameterizedProfileDef; }
|
||||
if(v==IfcCraneRailFShapeProfileDef ) { return IfcParameterizedProfileDef; }
|
||||
if(v==IfcCrewResource ) { return IfcConstructionResource; }
|
||||
if(v==IfcCsgPrimitive3D ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcCsgSolid ) { return IfcSolidModel; }
|
||||
if(v==IfcCurtainWall ) { return IfcBuildingElement; }
|
||||
if(v==IfcCurtainWallType ) { return IfcBuildingElementType; }
|
||||
if(v==IfcCurve ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcCurveBoundedPlane ) { return IfcBoundedSurface; }
|
||||
if(v==IfcCurveStyle ) { return IfcPresentationStyle; }
|
||||
if(v==IfcDamperType ) { return IfcFlowControllerType; }
|
||||
if(v==IfcDefinedSymbol ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcDerivedProfileDef ) { return IfcProfileDef; }
|
||||
if(v==IfcDiameterDimension ) { return IfcDimensionCurveDirectedCallout; }
|
||||
if(v==IfcDimensionCalloutRelationship ) { return IfcDraughtingCalloutRelationship; }
|
||||
if(v==IfcDimensionCurve ) { return IfcAnnotationCurveOccurrence; }
|
||||
if(v==IfcDimensionCurveDirectedCallout ) { return IfcDraughtingCallout; }
|
||||
if(v==IfcDimensionCurveTerminator ) { return IfcTerminatorSymbol; }
|
||||
if(v==IfcDimensionPair ) { return IfcDraughtingCalloutRelationship; }
|
||||
if(v==IfcDirection ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcDiscreteAccessory ) { return IfcElementComponent; }
|
||||
if(v==IfcDiscreteAccessoryType ) { return IfcElementComponentType; }
|
||||
if(v==IfcDistributionChamberElement ) { return IfcDistributionFlowElement; }
|
||||
if(v==IfcDistributionChamberElementType ) { return IfcDistributionFlowElementType; }
|
||||
if(v==IfcDistributionControlElement ) { return IfcDistributionElement; }
|
||||
if(v==IfcDistributionControlElementType ) { return IfcDistributionElementType; }
|
||||
if(v==IfcDistributionElement ) { return IfcElement; }
|
||||
if(v==IfcDistributionElementType ) { return IfcElementType; }
|
||||
if(v==IfcDistributionFlowElement ) { return IfcDistributionElement; }
|
||||
if(v==IfcDistributionFlowElementType ) { return IfcDistributionElementType; }
|
||||
if(v==IfcDistributionPort ) { return IfcPort; }
|
||||
if(v==IfcDocumentReference ) { return IfcExternalReference; }
|
||||
if(v==IfcDoor ) { return IfcBuildingElement; }
|
||||
if(v==IfcDoorLiningProperties ) { return IfcPropertySetDefinition; }
|
||||
if(v==IfcDoorPanelProperties ) { return IfcPropertySetDefinition; }
|
||||
if(v==IfcDoorStyle ) { return IfcTypeProduct; }
|
||||
if(v==IfcDraughtingCallout ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcDraughtingPreDefinedColour ) { return IfcPreDefinedColour; }
|
||||
if(v==IfcDraughtingPreDefinedCurveFont ) { return IfcPreDefinedCurveFont; }
|
||||
if(v==IfcDraughtingPreDefinedTextFont ) { return IfcPreDefinedTextFont; }
|
||||
if(v==IfcDuctFittingType ) { return IfcFlowFittingType; }
|
||||
if(v==IfcDuctSegmentType ) { return IfcFlowSegmentType; }
|
||||
if(v==IfcDuctSilencerType ) { return IfcFlowTreatmentDeviceType; }
|
||||
if(v==IfcEdge ) { return IfcTopologicalRepresentationItem; }
|
||||
if(v==IfcEdgeCurve ) { return IfcEdge; }
|
||||
if(v==IfcEdgeFeature ) { return IfcFeatureElementSubtraction; }
|
||||
if(v==IfcEdgeLoop ) { return IfcLoop; }
|
||||
if(v==IfcElectricApplianceType ) { return IfcFlowTerminalType; }
|
||||
if(v==IfcElectricDistributionPoint ) { return IfcFlowController; }
|
||||
if(v==IfcElectricFlowStorageDeviceType ) { return IfcFlowStorageDeviceType; }
|
||||
if(v==IfcElectricGeneratorType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcElectricHeaterType ) { return IfcFlowTerminalType; }
|
||||
if(v==IfcElectricMotorType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcElectricTimeControlType ) { return IfcFlowControllerType; }
|
||||
if(v==IfcElectricalBaseProperties ) { return IfcEnergyProperties; }
|
||||
if(v==IfcElectricalCircuit ) { return IfcSystem; }
|
||||
if(v==IfcElectricalElement ) { return IfcElement; }
|
||||
if(v==IfcElement ) { return IfcProduct; }
|
||||
if(v==IfcElementAssembly ) { return IfcElement; }
|
||||
if(v==IfcElementComponent ) { return IfcElement; }
|
||||
if(v==IfcElementComponentType ) { return IfcElementType; }
|
||||
if(v==IfcElementQuantity ) { return IfcPropertySetDefinition; }
|
||||
if(v==IfcElementType ) { return IfcTypeProduct; }
|
||||
if(v==IfcElementarySurface ) { return IfcSurface; }
|
||||
if(v==IfcEllipse ) { return IfcConic; }
|
||||
if(v==IfcEllipseProfileDef ) { return IfcParameterizedProfileDef; }
|
||||
if(v==IfcEnergyConversionDevice ) { return IfcDistributionFlowElement; }
|
||||
if(v==IfcEnergyConversionDeviceType ) { return IfcDistributionFlowElementType; }
|
||||
if(v==IfcEnergyProperties ) { return IfcPropertySetDefinition; }
|
||||
if(v==IfcEnvironmentalImpactValue ) { return IfcAppliedValue; }
|
||||
if(v==IfcEquipmentElement ) { return IfcElement; }
|
||||
if(v==IfcEquipmentStandard ) { return IfcControl; }
|
||||
if(v==IfcEvaporativeCoolerType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcEvaporatorType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcExtendedMaterialProperties ) { return IfcMaterialProperties; }
|
||||
if(v==IfcExternallyDefinedHatchStyle ) { return IfcExternalReference; }
|
||||
if(v==IfcExternallyDefinedSurfaceStyle ) { return IfcExternalReference; }
|
||||
if(v==IfcExternallyDefinedSymbol ) { return IfcExternalReference; }
|
||||
if(v==IfcExternallyDefinedTextFont ) { return IfcExternalReference; }
|
||||
if(v==IfcExtrudedAreaSolid ) { return IfcSweptAreaSolid; }
|
||||
if(v==IfcFace ) { return IfcTopologicalRepresentationItem; }
|
||||
if(v==IfcFaceBasedSurfaceModel ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcFaceBound ) { return IfcTopologicalRepresentationItem; }
|
||||
if(v==IfcFaceOuterBound ) { return IfcFaceBound; }
|
||||
if(v==IfcFaceSurface ) { return IfcFace; }
|
||||
if(v==IfcFacetedBrep ) { return IfcManifoldSolidBrep; }
|
||||
if(v==IfcFacetedBrepWithVoids ) { return IfcManifoldSolidBrep; }
|
||||
if(v==IfcFailureConnectionCondition ) { return IfcStructuralConnectionCondition; }
|
||||
if(v==IfcFanType ) { return IfcFlowMovingDeviceType; }
|
||||
if(v==IfcFastener ) { return IfcElementComponent; }
|
||||
if(v==IfcFastenerType ) { return IfcElementComponentType; }
|
||||
if(v==IfcFeatureElement ) { return IfcElement; }
|
||||
if(v==IfcFeatureElementAddition ) { return IfcFeatureElement; }
|
||||
if(v==IfcFeatureElementSubtraction ) { return IfcFeatureElement; }
|
||||
if(v==IfcFillAreaStyle ) { return IfcPresentationStyle; }
|
||||
if(v==IfcFillAreaStyleHatching ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcFillAreaStyleTileSymbolWithStyle ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcFillAreaStyleTiles ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcFilterType ) { return IfcFlowTreatmentDeviceType; }
|
||||
if(v==IfcFireSuppressionTerminalType ) { return IfcFlowTerminalType; }
|
||||
if(v==IfcFlowController ) { return IfcDistributionFlowElement; }
|
||||
if(v==IfcFlowControllerType ) { return IfcDistributionFlowElementType; }
|
||||
if(v==IfcFlowFitting ) { return IfcDistributionFlowElement; }
|
||||
if(v==IfcFlowFittingType ) { return IfcDistributionFlowElementType; }
|
||||
if(v==IfcFlowInstrumentType ) { return IfcDistributionControlElementType; }
|
||||
if(v==IfcFlowMeterType ) { return IfcFlowControllerType; }
|
||||
if(v==IfcFlowMovingDevice ) { return IfcDistributionFlowElement; }
|
||||
if(v==IfcFlowMovingDeviceType ) { return IfcDistributionFlowElementType; }
|
||||
if(v==IfcFlowSegment ) { return IfcDistributionFlowElement; }
|
||||
if(v==IfcFlowSegmentType ) { return IfcDistributionFlowElementType; }
|
||||
if(v==IfcFlowStorageDevice ) { return IfcDistributionFlowElement; }
|
||||
if(v==IfcFlowStorageDeviceType ) { return IfcDistributionFlowElementType; }
|
||||
if(v==IfcFlowTerminal ) { return IfcDistributionFlowElement; }
|
||||
if(v==IfcFlowTerminalType ) { return IfcDistributionFlowElementType; }
|
||||
if(v==IfcFlowTreatmentDevice ) { return IfcDistributionFlowElement; }
|
||||
if(v==IfcFlowTreatmentDeviceType ) { return IfcDistributionFlowElementType; }
|
||||
if(v==IfcFluidFlowProperties ) { return IfcPropertySetDefinition; }
|
||||
if(v==IfcFooting ) { return IfcBuildingElement; }
|
||||
if(v==IfcFuelProperties ) { return IfcMaterialProperties; }
|
||||
if(v==IfcFurnishingElement ) { return IfcElement; }
|
||||
if(v==IfcFurnishingElementType ) { return IfcElementType; }
|
||||
if(v==IfcFurnitureStandard ) { return IfcControl; }
|
||||
if(v==IfcFurnitureType ) { return IfcFurnishingElementType; }
|
||||
if(v==IfcGasTerminalType ) { return IfcFlowTerminalType; }
|
||||
if(v==IfcGeneralMaterialProperties ) { return IfcMaterialProperties; }
|
||||
if(v==IfcGeneralProfileProperties ) { return IfcProfileProperties; }
|
||||
if(v==IfcGeometricCurveSet ) { return IfcGeometricSet; }
|
||||
if(v==IfcGeometricRepresentationContext ) { return IfcRepresentationContext; }
|
||||
if(v==IfcGeometricRepresentationItem ) { return IfcRepresentationItem; }
|
||||
if(v==IfcGeometricRepresentationSubContext ) { return IfcGeometricRepresentationContext; }
|
||||
if(v==IfcGeometricSet ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcGrid ) { return IfcProduct; }
|
||||
if(v==IfcGridPlacement ) { return IfcObjectPlacement; }
|
||||
if(v==IfcGroup ) { return IfcObject; }
|
||||
if(v==IfcHalfSpaceSolid ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcHeatExchangerType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcHumidifierType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcHygroscopicMaterialProperties ) { return IfcMaterialProperties; }
|
||||
if(v==IfcIShapeProfileDef ) { return IfcParameterizedProfileDef; }
|
||||
if(v==IfcImageTexture ) { return IfcSurfaceTexture; }
|
||||
if(v==IfcInventory ) { return IfcGroup; }
|
||||
if(v==IfcIrregularTimeSeries ) { return IfcTimeSeries; }
|
||||
if(v==IfcJunctionBoxType ) { return IfcFlowFittingType; }
|
||||
if(v==IfcLShapeProfileDef ) { return IfcParameterizedProfileDef; }
|
||||
if(v==IfcLaborResource ) { return IfcConstructionResource; }
|
||||
if(v==IfcLampType ) { return IfcFlowTerminalType; }
|
||||
if(v==IfcLibraryReference ) { return IfcExternalReference; }
|
||||
if(v==IfcLightFixtureType ) { return IfcFlowTerminalType; }
|
||||
if(v==IfcLightSource ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcLightSourceAmbient ) { return IfcLightSource; }
|
||||
if(v==IfcLightSourceDirectional ) { return IfcLightSource; }
|
||||
if(v==IfcLightSourceGoniometric ) { return IfcLightSource; }
|
||||
if(v==IfcLightSourcePositional ) { return IfcLightSource; }
|
||||
if(v==IfcLightSourceSpot ) { return IfcLightSourcePositional; }
|
||||
if(v==IfcLine ) { return IfcCurve; }
|
||||
if(v==IfcLinearDimension ) { return IfcDimensionCurveDirectedCallout; }
|
||||
if(v==IfcLocalPlacement ) { return IfcObjectPlacement; }
|
||||
if(v==IfcLoop ) { return IfcTopologicalRepresentationItem; }
|
||||
if(v==IfcManifoldSolidBrep ) { return IfcSolidModel; }
|
||||
if(v==IfcMappedItem ) { return IfcRepresentationItem; }
|
||||
if(v==IfcMaterialDefinitionRepresentation ) { return IfcProductRepresentation; }
|
||||
if(v==IfcMechanicalConcreteMaterialProperties ) { return IfcMechanicalMaterialProperties; }
|
||||
if(v==IfcMechanicalFastener ) { return IfcFastener; }
|
||||
if(v==IfcMechanicalFastenerType ) { return IfcFastenerType; }
|
||||
if(v==IfcMechanicalMaterialProperties ) { return IfcMaterialProperties; }
|
||||
if(v==IfcMechanicalSteelMaterialProperties ) { return IfcMechanicalMaterialProperties; }
|
||||
if(v==IfcMember ) { return IfcBuildingElement; }
|
||||
if(v==IfcMemberType ) { return IfcBuildingElementType; }
|
||||
if(v==IfcMetric ) { return IfcConstraint; }
|
||||
if(v==IfcMotorConnectionType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcMove ) { return IfcTask; }
|
||||
if(v==IfcObject ) { return IfcObjectDefinition; }
|
||||
if(v==IfcObjectDefinition ) { return IfcRoot; }
|
||||
if(v==IfcObjective ) { return IfcConstraint; }
|
||||
if(v==IfcOccupant ) { return IfcActor; }
|
||||
if(v==IfcOffsetCurve2D ) { return IfcCurve; }
|
||||
if(v==IfcOffsetCurve3D ) { return IfcCurve; }
|
||||
if(v==IfcOneDirectionRepeatFactor ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcOpenShell ) { return IfcConnectedFaceSet; }
|
||||
if(v==IfcOpeningElement ) { return IfcFeatureElementSubtraction; }
|
||||
if(v==IfcOpticalMaterialProperties ) { return IfcMaterialProperties; }
|
||||
if(v==IfcOrderAction ) { return IfcTask; }
|
||||
if(v==IfcOrientedEdge ) { return IfcEdge; }
|
||||
if(v==IfcOutletType ) { return IfcFlowTerminalType; }
|
||||
if(v==IfcParameterizedProfileDef ) { return IfcProfileDef; }
|
||||
if(v==IfcPath ) { return IfcTopologicalRepresentationItem; }
|
||||
if(v==IfcPerformanceHistory ) { return IfcControl; }
|
||||
if(v==IfcPermeableCoveringProperties ) { return IfcPropertySetDefinition; }
|
||||
if(v==IfcPermit ) { return IfcControl; }
|
||||
if(v==IfcPhysicalComplexQuantity ) { return IfcPhysicalQuantity; }
|
||||
if(v==IfcPhysicalSimpleQuantity ) { return IfcPhysicalQuantity; }
|
||||
if(v==IfcPile ) { return IfcBuildingElement; }
|
||||
if(v==IfcPipeFittingType ) { return IfcFlowFittingType; }
|
||||
if(v==IfcPipeSegmentType ) { return IfcFlowSegmentType; }
|
||||
if(v==IfcPixelTexture ) { return IfcSurfaceTexture; }
|
||||
if(v==IfcPlacement ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcPlanarBox ) { return IfcPlanarExtent; }
|
||||
if(v==IfcPlanarExtent ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcPlane ) { return IfcElementarySurface; }
|
||||
if(v==IfcPlate ) { return IfcBuildingElement; }
|
||||
if(v==IfcPlateType ) { return IfcBuildingElementType; }
|
||||
if(v==IfcPoint ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcPointOnCurve ) { return IfcPoint; }
|
||||
if(v==IfcPointOnSurface ) { return IfcPoint; }
|
||||
if(v==IfcPolyLoop ) { return IfcLoop; }
|
||||
if(v==IfcPolygonalBoundedHalfSpace ) { return IfcHalfSpaceSolid; }
|
||||
if(v==IfcPolyline ) { return IfcBoundedCurve; }
|
||||
if(v==IfcPort ) { return IfcProduct; }
|
||||
if(v==IfcPostalAddress ) { return IfcAddress; }
|
||||
if(v==IfcPreDefinedColour ) { return IfcPreDefinedItem; }
|
||||
if(v==IfcPreDefinedCurveFont ) { return IfcPreDefinedItem; }
|
||||
if(v==IfcPreDefinedDimensionSymbol ) { return IfcPreDefinedSymbol; }
|
||||
if(v==IfcPreDefinedPointMarkerSymbol ) { return IfcPreDefinedSymbol; }
|
||||
if(v==IfcPreDefinedSymbol ) { return IfcPreDefinedItem; }
|
||||
if(v==IfcPreDefinedTerminatorSymbol ) { return IfcPreDefinedSymbol; }
|
||||
if(v==IfcPreDefinedTextFont ) { return IfcPreDefinedItem; }
|
||||
if(v==IfcPresentationLayerWithStyle ) { return IfcPresentationLayerAssignment; }
|
||||
if(v==IfcProcedure ) { return IfcProcess; }
|
||||
if(v==IfcProcess ) { return IfcObject; }
|
||||
if(v==IfcProduct ) { return IfcObject; }
|
||||
if(v==IfcProductDefinitionShape ) { return IfcProductRepresentation; }
|
||||
if(v==IfcProductsOfCombustionProperties ) { return IfcMaterialProperties; }
|
||||
if(v==IfcProject ) { return IfcObject; }
|
||||
if(v==IfcProjectOrder ) { return IfcControl; }
|
||||
if(v==IfcProjectOrderRecord ) { return IfcControl; }
|
||||
if(v==IfcProjectionCurve ) { return IfcAnnotationCurveOccurrence; }
|
||||
if(v==IfcProjectionElement ) { return IfcFeatureElementAddition; }
|
||||
if(v==IfcPropertyBoundedValue ) { return IfcSimpleProperty; }
|
||||
if(v==IfcPropertyDefinition ) { return IfcRoot; }
|
||||
if(v==IfcPropertyEnumeratedValue ) { return IfcSimpleProperty; }
|
||||
if(v==IfcPropertyListValue ) { return IfcSimpleProperty; }
|
||||
if(v==IfcPropertyReferenceValue ) { return IfcSimpleProperty; }
|
||||
if(v==IfcPropertySet ) { return IfcPropertySetDefinition; }
|
||||
if(v==IfcPropertySetDefinition ) { return IfcPropertyDefinition; }
|
||||
if(v==IfcPropertySingleValue ) { return IfcSimpleProperty; }
|
||||
if(v==IfcPropertyTableValue ) { return IfcSimpleProperty; }
|
||||
if(v==IfcProtectiveDeviceType ) { return IfcFlowControllerType; }
|
||||
if(v==IfcProxy ) { return IfcProduct; }
|
||||
if(v==IfcPumpType ) { return IfcFlowMovingDeviceType; }
|
||||
if(v==IfcQuantityArea ) { return IfcPhysicalSimpleQuantity; }
|
||||
if(v==IfcQuantityCount ) { return IfcPhysicalSimpleQuantity; }
|
||||
if(v==IfcQuantityLength ) { return IfcPhysicalSimpleQuantity; }
|
||||
if(v==IfcQuantityTime ) { return IfcPhysicalSimpleQuantity; }
|
||||
if(v==IfcQuantityVolume ) { return IfcPhysicalSimpleQuantity; }
|
||||
if(v==IfcQuantityWeight ) { return IfcPhysicalSimpleQuantity; }
|
||||
if(v==IfcRadiusDimension ) { return IfcDimensionCurveDirectedCallout; }
|
||||
if(v==IfcRailing ) { return IfcBuildingElement; }
|
||||
if(v==IfcRailingType ) { return IfcBuildingElementType; }
|
||||
if(v==IfcRamp ) { return IfcBuildingElement; }
|
||||
if(v==IfcRampFlight ) { return IfcBuildingElement; }
|
||||
if(v==IfcRampFlightType ) { return IfcBuildingElementType; }
|
||||
if(v==IfcRationalBezierCurve ) { return IfcBezierCurve; }
|
||||
if(v==IfcRectangleHollowProfileDef ) { return IfcRectangleProfileDef; }
|
||||
if(v==IfcRectangleProfileDef ) { return IfcParameterizedProfileDef; }
|
||||
if(v==IfcRectangularPyramid ) { return IfcCsgPrimitive3D; }
|
||||
if(v==IfcRectangularTrimmedSurface ) { return IfcBoundedSurface; }
|
||||
if(v==IfcRegularTimeSeries ) { return IfcTimeSeries; }
|
||||
if(v==IfcReinforcementDefinitionProperties ) { return IfcPropertySetDefinition; }
|
||||
if(v==IfcReinforcingBar ) { return IfcReinforcingElement; }
|
||||
if(v==IfcReinforcingElement ) { return IfcBuildingElementComponent; }
|
||||
if(v==IfcReinforcingMesh ) { return IfcReinforcingElement; }
|
||||
if(v==IfcRelAggregates ) { return IfcRelDecomposes; }
|
||||
if(v==IfcRelAssigns ) { return IfcRelationship; }
|
||||
if(v==IfcRelAssignsTasks ) { return IfcRelAssignsToControl; }
|
||||
if(v==IfcRelAssignsToActor ) { return IfcRelAssigns; }
|
||||
if(v==IfcRelAssignsToControl ) { return IfcRelAssigns; }
|
||||
if(v==IfcRelAssignsToGroup ) { return IfcRelAssigns; }
|
||||
if(v==IfcRelAssignsToProcess ) { return IfcRelAssigns; }
|
||||
if(v==IfcRelAssignsToProduct ) { return IfcRelAssigns; }
|
||||
if(v==IfcRelAssignsToProjectOrder ) { return IfcRelAssignsToControl; }
|
||||
if(v==IfcRelAssignsToResource ) { return IfcRelAssigns; }
|
||||
if(v==IfcRelAssociates ) { return IfcRelationship; }
|
||||
if(v==IfcRelAssociatesAppliedValue ) { return IfcRelAssociates; }
|
||||
if(v==IfcRelAssociatesApproval ) { return IfcRelAssociates; }
|
||||
if(v==IfcRelAssociatesClassification ) { return IfcRelAssociates; }
|
||||
if(v==IfcRelAssociatesConstraint ) { return IfcRelAssociates; }
|
||||
if(v==IfcRelAssociatesDocument ) { return IfcRelAssociates; }
|
||||
if(v==IfcRelAssociatesLibrary ) { return IfcRelAssociates; }
|
||||
if(v==IfcRelAssociatesMaterial ) { return IfcRelAssociates; }
|
||||
if(v==IfcRelAssociatesProfileProperties ) { return IfcRelAssociates; }
|
||||
if(v==IfcRelConnects ) { return IfcRelationship; }
|
||||
if(v==IfcRelConnectsElements ) { return IfcRelConnects; }
|
||||
if(v==IfcRelConnectsPathElements ) { return IfcRelConnectsElements; }
|
||||
if(v==IfcRelConnectsPortToElement ) { return IfcRelConnects; }
|
||||
if(v==IfcRelConnectsPorts ) { return IfcRelConnects; }
|
||||
if(v==IfcRelConnectsStructuralActivity ) { return IfcRelConnects; }
|
||||
if(v==IfcRelConnectsStructuralElement ) { return IfcRelConnects; }
|
||||
if(v==IfcRelConnectsStructuralMember ) { return IfcRelConnects; }
|
||||
if(v==IfcRelConnectsWithEccentricity ) { return IfcRelConnectsStructuralMember; }
|
||||
if(v==IfcRelConnectsWithRealizingElements ) { return IfcRelConnectsElements; }
|
||||
if(v==IfcRelContainedInSpatialStructure ) { return IfcRelConnects; }
|
||||
if(v==IfcRelCoversBldgElements ) { return IfcRelConnects; }
|
||||
if(v==IfcRelCoversSpaces ) { return IfcRelConnects; }
|
||||
if(v==IfcRelDecomposes ) { return IfcRelationship; }
|
||||
if(v==IfcRelDefines ) { return IfcRelationship; }
|
||||
if(v==IfcRelDefinesByProperties ) { return IfcRelDefines; }
|
||||
if(v==IfcRelDefinesByType ) { return IfcRelDefines; }
|
||||
if(v==IfcRelFillsElement ) { return IfcRelConnects; }
|
||||
if(v==IfcRelFlowControlElements ) { return IfcRelConnects; }
|
||||
if(v==IfcRelInteractionRequirements ) { return IfcRelConnects; }
|
||||
if(v==IfcRelNests ) { return IfcRelDecomposes; }
|
||||
if(v==IfcRelOccupiesSpaces ) { return IfcRelAssignsToActor; }
|
||||
if(v==IfcRelOverridesProperties ) { return IfcRelDefinesByProperties; }
|
||||
if(v==IfcRelProjectsElement ) { return IfcRelConnects; }
|
||||
if(v==IfcRelReferencedInSpatialStructure ) { return IfcRelConnects; }
|
||||
if(v==IfcRelSchedulesCostItems ) { return IfcRelAssignsToControl; }
|
||||
if(v==IfcRelSequence ) { return IfcRelConnects; }
|
||||
if(v==IfcRelServicesBuildings ) { return IfcRelConnects; }
|
||||
if(v==IfcRelSpaceBoundary ) { return IfcRelConnects; }
|
||||
if(v==IfcRelVoidsElement ) { return IfcRelConnects; }
|
||||
if(v==IfcRelationship ) { return IfcRoot; }
|
||||
if(v==IfcResource ) { return IfcObject; }
|
||||
if(v==IfcRevolvedAreaSolid ) { return IfcSweptAreaSolid; }
|
||||
if(v==IfcRibPlateProfileProperties ) { return IfcProfileProperties; }
|
||||
if(v==IfcRightCircularCone ) { return IfcCsgPrimitive3D; }
|
||||
if(v==IfcRightCircularCylinder ) { return IfcCsgPrimitive3D; }
|
||||
if(v==IfcRoof ) { return IfcBuildingElement; }
|
||||
if(v==IfcRoundedEdgeFeature ) { return IfcEdgeFeature; }
|
||||
if(v==IfcRoundedRectangleProfileDef ) { return IfcRectangleProfileDef; }
|
||||
if(v==IfcSIUnit ) { return IfcNamedUnit; }
|
||||
if(v==IfcSanitaryTerminalType ) { return IfcFlowTerminalType; }
|
||||
if(v==IfcScheduleTimeControl ) { return IfcControl; }
|
||||
if(v==IfcSectionedSpine ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcSensorType ) { return IfcDistributionControlElementType; }
|
||||
if(v==IfcServiceLife ) { return IfcControl; }
|
||||
if(v==IfcServiceLifeFactor ) { return IfcPropertySetDefinition; }
|
||||
if(v==IfcShapeModel ) { return IfcRepresentation; }
|
||||
if(v==IfcShapeRepresentation ) { return IfcShapeModel; }
|
||||
if(v==IfcShellBasedSurfaceModel ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcSimpleProperty ) { return IfcProperty; }
|
||||
if(v==IfcSite ) { return IfcSpatialStructureElement; }
|
||||
if(v==IfcSlab ) { return IfcBuildingElement; }
|
||||
if(v==IfcSlabType ) { return IfcBuildingElementType; }
|
||||
if(v==IfcSlippageConnectionCondition ) { return IfcStructuralConnectionCondition; }
|
||||
if(v==IfcSolidModel ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcSoundProperties ) { return IfcPropertySetDefinition; }
|
||||
if(v==IfcSoundValue ) { return IfcPropertySetDefinition; }
|
||||
if(v==IfcSpace ) { return IfcSpatialStructureElement; }
|
||||
if(v==IfcSpaceHeaterType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcSpaceProgram ) { return IfcControl; }
|
||||
if(v==IfcSpaceThermalLoadProperties ) { return IfcPropertySetDefinition; }
|
||||
if(v==IfcSpaceType ) { return IfcSpatialStructureElementType; }
|
||||
if(v==IfcSpatialStructureElement ) { return IfcProduct; }
|
||||
if(v==IfcSpatialStructureElementType ) { return IfcElementType; }
|
||||
if(v==IfcSphere ) { return IfcCsgPrimitive3D; }
|
||||
if(v==IfcStackTerminalType ) { return IfcFlowTerminalType; }
|
||||
if(v==IfcStair ) { return IfcBuildingElement; }
|
||||
if(v==IfcStairFlight ) { return IfcBuildingElement; }
|
||||
if(v==IfcStairFlightType ) { return IfcBuildingElementType; }
|
||||
if(v==IfcStructuralAction ) { return IfcStructuralActivity; }
|
||||
if(v==IfcStructuralActivity ) { return IfcProduct; }
|
||||
if(v==IfcStructuralAnalysisModel ) { return IfcSystem; }
|
||||
if(v==IfcStructuralConnection ) { return IfcStructuralItem; }
|
||||
if(v==IfcStructuralCurveConnection ) { return IfcStructuralConnection; }
|
||||
if(v==IfcStructuralCurveMember ) { return IfcStructuralMember; }
|
||||
if(v==IfcStructuralCurveMemberVarying ) { return IfcStructuralCurveMember; }
|
||||
if(v==IfcStructuralItem ) { return IfcProduct; }
|
||||
if(v==IfcStructuralLinearAction ) { return IfcStructuralAction; }
|
||||
if(v==IfcStructuralLinearActionVarying ) { return IfcStructuralLinearAction; }
|
||||
if(v==IfcStructuralLoadGroup ) { return IfcGroup; }
|
||||
if(v==IfcStructuralLoadLinearForce ) { return IfcStructuralLoadStatic; }
|
||||
if(v==IfcStructuralLoadPlanarForce ) { return IfcStructuralLoadStatic; }
|
||||
if(v==IfcStructuralLoadSingleDisplacement ) { return IfcStructuralLoadStatic; }
|
||||
if(v==IfcStructuralLoadSingleDisplacementDistortion ) { return IfcStructuralLoadSingleDisplacement; }
|
||||
if(v==IfcStructuralLoadSingleForce ) { return IfcStructuralLoadStatic; }
|
||||
if(v==IfcStructuralLoadSingleForceWarping ) { return IfcStructuralLoadSingleForce; }
|
||||
if(v==IfcStructuralLoadStatic ) { return IfcStructuralLoad; }
|
||||
if(v==IfcStructuralLoadTemperature ) { return IfcStructuralLoadStatic; }
|
||||
if(v==IfcStructuralMember ) { return IfcStructuralItem; }
|
||||
if(v==IfcStructuralPlanarAction ) { return IfcStructuralAction; }
|
||||
if(v==IfcStructuralPlanarActionVarying ) { return IfcStructuralPlanarAction; }
|
||||
if(v==IfcStructuralPointAction ) { return IfcStructuralAction; }
|
||||
if(v==IfcStructuralPointConnection ) { return IfcStructuralConnection; }
|
||||
if(v==IfcStructuralPointReaction ) { return IfcStructuralReaction; }
|
||||
if(v==IfcStructuralProfileProperties ) { return IfcGeneralProfileProperties; }
|
||||
if(v==IfcStructuralReaction ) { return IfcStructuralActivity; }
|
||||
if(v==IfcStructuralResultGroup ) { return IfcGroup; }
|
||||
if(v==IfcStructuralSteelProfileProperties ) { return IfcStructuralProfileProperties; }
|
||||
if(v==IfcStructuralSurfaceConnection ) { return IfcStructuralConnection; }
|
||||
if(v==IfcStructuralSurfaceMember ) { return IfcStructuralMember; }
|
||||
if(v==IfcStructuralSurfaceMemberVarying ) { return IfcStructuralSurfaceMember; }
|
||||
if(v==IfcStructuredDimensionCallout ) { return IfcDraughtingCallout; }
|
||||
if(v==IfcStyleModel ) { return IfcRepresentation; }
|
||||
if(v==IfcStyledItem ) { return IfcRepresentationItem; }
|
||||
if(v==IfcStyledRepresentation ) { return IfcStyleModel; }
|
||||
if(v==IfcSubContractResource ) { return IfcConstructionResource; }
|
||||
if(v==IfcSubedge ) { return IfcEdge; }
|
||||
if(v==IfcSurface ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcSurfaceCurveSweptAreaSolid ) { return IfcSweptAreaSolid; }
|
||||
if(v==IfcSurfaceOfLinearExtrusion ) { return IfcSweptSurface; }
|
||||
if(v==IfcSurfaceOfRevolution ) { return IfcSweptSurface; }
|
||||
if(v==IfcSurfaceStyle ) { return IfcPresentationStyle; }
|
||||
if(v==IfcSurfaceStyleRendering ) { return IfcSurfaceStyleShading; }
|
||||
if(v==IfcSweptAreaSolid ) { return IfcSolidModel; }
|
||||
if(v==IfcSweptDiskSolid ) { return IfcSolidModel; }
|
||||
if(v==IfcSweptSurface ) { return IfcSurface; }
|
||||
if(v==IfcSwitchingDeviceType ) { return IfcFlowControllerType; }
|
||||
if(v==IfcSymbolStyle ) { return IfcPresentationStyle; }
|
||||
if(v==IfcSystem ) { return IfcGroup; }
|
||||
if(v==IfcSystemFurnitureElementType ) { return IfcFurnishingElementType; }
|
||||
if(v==IfcTShapeProfileDef ) { return IfcParameterizedProfileDef; }
|
||||
if(v==IfcTankType ) { return IfcFlowStorageDeviceType; }
|
||||
if(v==IfcTask ) { return IfcProcess; }
|
||||
if(v==IfcTelecomAddress ) { return IfcAddress; }
|
||||
if(v==IfcTendon ) { return IfcReinforcingElement; }
|
||||
if(v==IfcTendonAnchor ) { return IfcReinforcingElement; }
|
||||
if(v==IfcTerminatorSymbol ) { return IfcAnnotationSymbolOccurrence; }
|
||||
if(v==IfcTextLiteral ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcTextLiteralWithExtent ) { return IfcTextLiteral; }
|
||||
if(v==IfcTextStyle ) { return IfcPresentationStyle; }
|
||||
if(v==IfcTextStyleFontModel ) { return IfcPreDefinedTextFont; }
|
||||
if(v==IfcTextureCoordinateGenerator ) { return IfcTextureCoordinate; }
|
||||
if(v==IfcTextureMap ) { return IfcTextureCoordinate; }
|
||||
if(v==IfcThermalMaterialProperties ) { return IfcMaterialProperties; }
|
||||
if(v==IfcTimeSeriesSchedule ) { return IfcControl; }
|
||||
if(v==IfcTopologicalRepresentationItem ) { return IfcRepresentationItem; }
|
||||
if(v==IfcTopologyRepresentation ) { return IfcShapeModel; }
|
||||
if(v==IfcTransformerType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcTransportElement ) { return IfcElement; }
|
||||
if(v==IfcTransportElementType ) { return IfcElementType; }
|
||||
if(v==IfcTrapeziumProfileDef ) { return IfcParameterizedProfileDef; }
|
||||
if(v==IfcTrimmedCurve ) { return IfcBoundedCurve; }
|
||||
if(v==IfcTubeBundleType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcTwoDirectionRepeatFactor ) { return IfcOneDirectionRepeatFactor; }
|
||||
if(v==IfcTypeObject ) { return IfcObjectDefinition; }
|
||||
if(v==IfcTypeProduct ) { return IfcTypeObject; }
|
||||
if(v==IfcUShapeProfileDef ) { return IfcParameterizedProfileDef; }
|
||||
if(v==IfcUnitaryEquipmentType ) { return IfcEnergyConversionDeviceType; }
|
||||
if(v==IfcValveType ) { return IfcFlowControllerType; }
|
||||
if(v==IfcVector ) { return IfcGeometricRepresentationItem; }
|
||||
if(v==IfcVertex ) { return IfcTopologicalRepresentationItem; }
|
||||
if(v==IfcVertexLoop ) { return IfcLoop; }
|
||||
if(v==IfcVertexPoint ) { return IfcVertex; }
|
||||
if(v==IfcVibrationIsolatorType ) { return IfcDiscreteAccessoryType; }
|
||||
if(v==IfcVirtualElement ) { return IfcElement; }
|
||||
if(v==IfcWall ) { return IfcBuildingElement; }
|
||||
if(v==IfcWallStandardCase ) { return IfcWall; }
|
||||
if(v==IfcWallType ) { return IfcBuildingElementType; }
|
||||
if(v==IfcWasteTerminalType ) { return IfcFlowTerminalType; }
|
||||
if(v==IfcWaterProperties ) { return IfcMaterialProperties; }
|
||||
if(v==IfcWindow ) { return IfcBuildingElement; }
|
||||
if(v==IfcWindowLiningProperties ) { return IfcPropertySetDefinition; }
|
||||
if(v==IfcWindowPanelProperties ) { return IfcPropertySetDefinition; }
|
||||
if(v==IfcWindowStyle ) { return IfcTypeProduct; }
|
||||
if(v==IfcWorkControl ) { return IfcControl; }
|
||||
if(v==IfcWorkPlan ) { return IfcWorkControl; }
|
||||
if(v==IfcWorkSchedule ) { return IfcWorkControl; }
|
||||
if(v==IfcZShapeProfileDef ) { return IfcParameterizedProfileDef; }
|
||||
if(v==IfcZone ) { return IfcGroup; }
|
||||
return (Enum) -1;
|
||||
}
|
||||
std::string IfcActionSourceTypeEnum::ToString(IfcActionSourceTypeEnum v) {
|
||||
if ( v < 0 || v >= 27 ) throw;
|
||||
const char* names[] = { "DEAD_LOAD_G","COMPLETION_G1","LIVE_LOAD_Q","SNOW_S","WIND_W","PRESTRESSING_P","SETTLEMENT_U","TEMPERATURE_T","EARTHQUAKE_E","FIRE","IMPULSE","IMPACT","TRANSPORT","ERECTION","PROPPING","SYSTEM_IMPERFECTION","SHRINKAGE","CREEP","LACK_OF_FIT","BUOYANCY","ICE","CURRENT","WAVE","RAIN","BRAKES","USERDEFINED","NOTDEFINED" };
|
||||
|
||||
File diff suppressed because one or more lines are too long
+16
-13
@@ -272,7 +272,7 @@ std::string TokenFunc::asString(Token t) {
|
||||
}
|
||||
std::string TokenFunc::toString(Token t) {
|
||||
if ( isOperator(t) ) return std::string ( (char*) &t, 1 );
|
||||
else return asString(t);
|
||||
else return Ifc::tokens->TokenString(t - 128);
|
||||
}
|
||||
|
||||
|
||||
@@ -390,7 +390,7 @@ TokenArgument::operator SHARED_PTR<IfcUtil::IfcAbstractSelect>() const {
|
||||
TokenArgument::operator IfcEntities() const { throw IfcException("Argument is not a list of entities"); }
|
||||
unsigned int TokenArgument::Size() const { return 1; }
|
||||
ArgumentPtr TokenArgument::operator [] (unsigned int i) const { throw IfcException("Argument is not a list of arguments"); }
|
||||
std::string TokenArgument::toString() const { return TokenFunc::asString(token); }
|
||||
std::string TokenArgument::toString() const { return TokenFunc::toString(token); }
|
||||
bool TokenArgument::isNull() const { return TokenFunc::isOperator(token,'$'); }
|
||||
//
|
||||
// Functions for casting the EntityArgument to other types
|
||||
@@ -454,7 +454,6 @@ void Entity::Load(std::vector<unsigned int>& ids, bool seek) {
|
||||
if ( seek ) {
|
||||
Ifc::file->Seek(offset);
|
||||
Token datatype = Ifc::tokens->Next();
|
||||
std::string dt = TokenFunc::toString(datatype);
|
||||
if ( ! TokenFunc::isDatatype(datatype)) throw IfcException("Unexpected token while parsing entity");
|
||||
_type = Ifc2x3::Type::FromString(TokenFunc::asString(datatype));
|
||||
}
|
||||
@@ -546,12 +545,16 @@ bool Ifc::Init(IfcParse::File* f) {
|
||||
e = EntityPtr(new Entity(currentId,tokens));
|
||||
entity = Ifc2x3::SchemaEntity(e);
|
||||
if ( log1 && !((++x)%1000) ) std::cout << "\r#" << currentId << " " << std::flush;
|
||||
IfcEntities L = EntitiesByType(entity->type());
|
||||
if ( L == 0 ) {
|
||||
L = IfcEntities(new IfcEntityList());
|
||||
bytype[entity->type()] = L;
|
||||
}
|
||||
L->push(entity);
|
||||
Ifc2x3::Type::Enum ty = entity->type();
|
||||
do {
|
||||
IfcEntities L = EntitiesByType(ty);
|
||||
if ( L == 0 ) {
|
||||
L = IfcEntities(new IfcEntityList());
|
||||
bytype[ty] = L;
|
||||
}
|
||||
L->push(entity);
|
||||
ty = Ifc2x3::Type::Parent(ty);
|
||||
} while ( ty > -1 );
|
||||
byid[currentId] = entity;
|
||||
currentId = 0;
|
||||
} else token = tokens->Next();
|
||||
@@ -577,10 +580,10 @@ bool Ifc::Init(IfcParse::File* f) {
|
||||
Ifc2x3::IfcUnitAssignment::list unit_assignments = EntitiesByType<Ifc2x3::IfcUnitAssignment>();
|
||||
IfcUtil::IfcAbstractSelect::list units = IfcUtil::IfcAbstractSelect::list();
|
||||
if ( unit_assignments->Size() ) {
|
||||
Ifc2x3::IfcUnitAssignment::ptr unit_assignment = *unit_assignments->begin();
|
||||
IfcUtil::IfcAbstractSelect::list units = unit_assignment->Units();
|
||||
}
|
||||
if ( units )
|
||||
Ifc2x3::IfcUnitAssignment::ptr unit_assignment = *unit_assignments->begin();
|
||||
units = unit_assignment->Units();
|
||||
}
|
||||
if ( ! units ) return true;
|
||||
for ( IfcUtil::IfcAbstractSelect::it it = units->begin(); it != units->end(); ++ it ) {
|
||||
const IfcUtil::IfcAbstractSelect::ptr base = *it;
|
||||
Ifc2x3::IfcSIUnit::ptr unit = Ifc2x3::IfcSIUnit::ptr();
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
/********************************************************************************
|
||||
* *
|
||||
* This file is part of IfcOpenShell. *
|
||||
* *
|
||||
* IfcOpenShell is free software: you can redistribute it and/or modify *
|
||||
* it under the terms of the Lesser GNU General Public License as published by *
|
||||
* the Free Software Foundation, either version 3.0 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* IfcOpenShell is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* Lesser GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the Lesser GNU General Public License *
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
* *
|
||||
********************************************************************************/
|
||||
|
||||
#include "IfcGeom.h"
|
||||
|
||||
namespace IfcGeom {
|
||||
namespace Cache {
|
||||
std::map<int,TopoDS_Shape> Shape;
|
||||
void PurgeShapeCache() {
|
||||
Shape.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
using namespace Ifc2x3;
|
||||
using namespace IfcUtil;
|
||||
|
||||
bool IfcGeom::convert_shape(const SHARED_PTR<IfcBaseClass>& l, TopoDS_Shape& r) {
|
||||
const unsigned int id = l->entity->id();
|
||||
std::map<int,TopoDS_Shape>::const_iterator it = Cache::Shape.find(id);
|
||||
if ( it != Cache::Shape.end() ) { r = it->second; return true; }
|
||||
#include "IfcRegisterConvertShape.h"
|
||||
Ifc::LogMessage("Error","No operation defined for:",l->entity);
|
||||
return false;
|
||||
}
|
||||
bool IfcGeom::convert_wire(const SHARED_PTR<IfcBaseClass>& l, TopoDS_Wire& r) {
|
||||
#include "IfcRegisterConvertWire.h"
|
||||
Ifc::LogMessage("Error","No operation defined for:",l->entity);
|
||||
return false;
|
||||
}
|
||||
bool IfcGeom::convert_face(const SHARED_PTR<IfcBaseClass>& l, TopoDS_Face& r) {
|
||||
#include "IfcRegisterConvertFace.h"
|
||||
Ifc::LogMessage("Error","No operation defined for:",l->entity);
|
||||
return false;
|
||||
}
|
||||
bool IfcGeom::convert_curve(const SHARED_PTR<IfcBaseClass>& l, Handle(Geom_Curve)& r) {
|
||||
#include "IfcRegisterConvertCurve.h"
|
||||
Ifc::LogMessage("Error","No operation defined for:",l->entity);
|
||||
return false;
|
||||
}
|
||||
@@ -10,4 +10,4 @@ SET(CMAKE_SWIG_FLAGS "")
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(IfcPython.i PROPERTIES CPLUSPLUS ON)
|
||||
SWIG_ADD_MODULE(IfcImport python IfcPython.i)
|
||||
SWIG_LINK_LIBRARIES(IfcImport ${PYTHON_LIBRARIES} IfcParse TKAdvTools TKMath TKernel TKBRep TKGeomBase TKGeomAlgo TKBool TKMesh TKShHealing TKFillet)
|
||||
SWIG_LINK_LIBRARIES(IfcImport ${PYTHON_LIBRARIES} IfcParse IfcGeom TKernel TKMath TKBRep TKGeomBase TKGeomAlgo TKG3d TKG2d TKShHealing TKTopAlgo TKMesh TKPrim TKBool TKBO TKFillet)
|
||||
|
||||
Reference in New Issue
Block a user