Fix a bug in the order of applying the scaling of a IfcCartesianTransformationOperator3DnonUniform

Fix a bug in the formatting of IFC simple types
Provide a way of iterating over all entities in the IFC file
Added IFC test file by Ryan Schultz
Added another IFC test file from AutoCAD Architecture 2010
This commit is contained in:
Thomas Krijnen
2012-03-16 15:21:52 +00:00
parent 3bb008c89f
commit cdbafac676
7 changed files with 16321 additions and 4 deletions
+1 -1
View File
@@ -186,7 +186,7 @@ bool IfcGeom::convert(const Ifc2x3::IfcCartesianTransformationOperator3DnonUnifo
gtrsf.SetValue(1,1,scale1);
gtrsf.SetValue(2,2,scale2);
gtrsf.SetValue(3,3,scale3);
gtrsf.Multiply(trsf);
gtrsf.PreMultiply(trsf);
CACHE(IfcCartesianTransformationOperator3DnonUniform,l,gtrsf)
return true;
}
+7 -1
View File
@@ -444,7 +444,7 @@ ArgumentPtr EntityArgument::operator [] (unsigned int i) const { throw IfcExcept
std::string EntityArgument::toString(bool upper) const {
ArgumentPtr arg = entity->wrappedValue();
IfcParse::TokenArgument* token_arg = dynamic_cast<IfcParse::TokenArgument*>(arg);
std::string token_string = ( token_arg ) ? TokenFunc::asString(token_arg->token) : "";
std::string token_string = ( token_arg ) ? TokenFunc::toString(token_arg->token) : "";
std::string dt = Ifc2x3::Type::ToString(entity->type());
if ( upper ) {
for (std::string::iterator p = dt.begin(); p != dt.end(); ++p ) *p = toupper(*p);
@@ -807,6 +807,12 @@ void Ifc::LogMessage(const std::string& type, const std::string& message, const
std::string Ifc::GetLog() {
return log_stream.str();
}
MapEntityById::const_iterator Ifc::First() {
return byid.begin();
}
MapEntityById::const_iterator Ifc::Last() {
return byid.end();
}
File* Ifc::file = 0;
std::ostream* Ifc::log1 = 0;
+2
View File
@@ -228,6 +228,8 @@ private:
static std::ostream* log2;
static std::stringstream log_stream;
public:
static MapEntityById::const_iterator First();
static MapEntityById::const_iterator Last();
static void SetOutput(std::ostream* l1, std::ostream* l2);
static void LogMessage(const std::string& type, const std::string& message, const IfcAbstractEntityPtr entity=0);
static IfcParse::File* file;
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -33,7 +33,7 @@ DATA;
#16= IFCCARTESIANPOINT((0.0,0.0));
#17= IFCAXIS2PLACEMENT3D(#10,#13,#11);
#18= IFCGEOMETRICREPRESENTATIONCONTEXT('Body','Model',3,0.01,#17,$);
#19= IFCRECTANGLEHOLLOWPROFILEDEF(.AREA.,'Steel Grid Member',#15,0.1,0.2,0.0063,-0.0063,0.0);
#19= IFCRECTANGLEHOLLOWPROFILEDEF(.AREA.,'Steel Grid Member',#15,0.1,0.2,0.0063,0.0,0.0);
#20= IFCGENERALPROFILEPROPERTIES('Steel Grid Member',#19,$,$,$,$,$);
#22= IFCAXIS2PLACEMENT3D(#23,#24,#25);
#23= IFCCARTESIANPOINT((-36.625,-51.125,19.709999));
Binary file not shown.
+5 -1
View File
@@ -192,12 +192,16 @@ TestFile("http://bimserver.googlecode.com/svn/trunk/TestData/data/AC90R1-niedrih
# File courtesey of Jon Mirtschin / Geometry Gym
TestFile("geometrygym_great_court_roof.ifc")
# File courtesey of Ryan Schultz / Opening Design / Studio Wikitecture
TestFile("revit2012_janesville_restaurant.zip")
# Walls cut by IfcPolygonalBoundedHalfSpaces from Revit 2011
TestFile("revit2011_wall1.ifc")
TestFile("revit2011_wall2.ifc")
# Walls from Autocad Architecture 2010
# Objects from Autocad Architecture 2010
TestFile("acad2010_walls.ifc")
TestFile("acad2010_objects.ifc")
# Various half space configuration to test cutting tolerances
TestFile("ifcopenshell_halfspaces.ifc")