void IfcDirection::readStepData( std::vector<std::string>& args, const std::map<int,shared_ptr<IfcBridgeEntity> >& map ) { const int num_args = (int)args.size(); if( num_args<1 ){ std::stringstream strserr; strserr << "Wrong parameter count for entity IfcDirection, expecting 1, having " << num_args << ". Object id: " << getId() << std::endl; throw IfcBridgeException( strserr.str().c_str() ); } #ifdef _DEBUG if( num_args>1 ){ std::cout << "Wrong parameter count for entity IfcDirection, expecting 1, having " << num_args << ". Object id: " << getId() << std::endl; } #endif readDoubleList( args[0], m_DirectionRatios ); }
shared_ptr<IfcComplexNumber> IfcComplexNumber::readStepData( std::string& arg ) { // read TYPE if( arg.compare( "$" ) == 0 ) { return shared_ptr<IfcComplexNumber>(); } shared_ptr<IfcComplexNumber> type_object( new IfcComplexNumber() ); //supertype as attribute: std::vector<double> m_vec readDoubleList( arg, type_object->m_vec ); return type_object; }
void readDoubleList2D( const std::string& str, std::vector<std::vector<double> >& vec ) { // ((1.6,2.0,4.9382),(3.78,23.34,039.938367),(938.034,3.0,-3.45,6.9182)) const char* ch = str.c_str(); const unsigned int argsize = (unsigned int)str.size(); if( argsize == 0 ) { return; } unsigned int i=0; unsigned int num_par_open=0; unsigned int last_token = 0; while( i<argsize ) { if( ch[i] == ',' ) { if( num_par_open == 1 ) { std::vector<double> inner_vec; vec.push_back(inner_vec); readDoubleList( str.substr( last_token, i-last_token ), vec.back() ); last_token = i; } } else if( ch[i] == '(' ) { ++num_par_open; last_token = i; } else if( ch[i] == ')' ) { --num_par_open; if( num_par_open == 0 ) { std::vector<double> inner_vec; vec.push_back(inner_vec); readDoubleList( str.substr( last_token, i-last_token ), vec.back() ); return; } } ++i; } }
void IfcTextureCoordinateGenerator::readStepData( std::vector<std::string>& args, const std::map<int,shared_ptr<Ifc4Entity> >& map ) { const int num_args = (int)args.size(); if( num_args<3 ){ std::stringstream strserr; strserr << "Wrong parameter count for entity IfcTextureCoordinateGenerator, expecting 3, having " << num_args << ". Object id: " << getId() << std::endl; throw Ifc4Exception( strserr.str().c_str() ); } #ifdef _DEBUG if( num_args>3 ){ std::cout << "Wrong parameter count for entity IfcTextureCoordinateGenerator, expecting 3, having " << num_args << ". Object id: " << getId() << std::endl; } #endif readEntityReferenceList( args[0], m_Maps, map ); m_Mode = IfcLabel::readStepData( args[1] ); readDoubleList( args[2], m_Parameter ); }
void IfcRationalBSplineCurveWithKnots::readStepData( std::vector<std::string>& args, const std::map<int,shared_ptr<Ifc4Entity> >& map ) { const int num_args = (int)args.size(); if( num_args<9 ){ std::stringstream strserr; strserr << "Wrong parameter count for entity IfcRationalBSplineCurveWithKnots, expecting 9, having " << num_args << ". Object id: " << getId() << std::endl; throw Ifc4Exception( strserr.str().c_str() ); } #ifdef _DEBUG if( num_args>9 ){ std::cout << "Wrong parameter count for entity IfcRationalBSplineCurveWithKnots, expecting 9, having " << num_args << ". Object id: " << getId() << std::endl; } #endif readIntValue( args[0], m_Degree ); readEntityReferenceList( args[1], m_ControlPointsList, map ); m_CurveForm = IfcBSplineCurveForm::readStepData( args[2] ); m_ClosedCurve = IfcLogical::readStepData( args[3] ); m_SelfIntersect = IfcLogical::readStepData( args[4] ); readIntList( args[5], m_KnotMultiplicities ); readTypeOfRealList( args[6], m_Knots ); m_KnotSpec = IfcKnotType::readStepData( args[7] ); readDoubleList( args[8], m_WeightsData ); }