template<class PT, class FT> bool readPropExt3(const Abc::ICompoundProperty& prop, const AbcA::PropertyHeader& pheader, std::string& val, bool& isConstant) { if(PT::matches(pheader)) { PT aProp(prop, pheader.getName()); if(!aProp.valid()){ return false; } FT val3; aProp.get(val3);//TODO: crashes here if property has no samples std::stringstream valStream; valStream<<val3.x<<","<<val3.y<<","<<val3.z; val = valStream.str(); return true; } return false; }
Base::BoundBox3f Edgesort::getBoundingBox(std::vector<TopoDS_Edge>& aList) { std::vector<TopoDS_Edge>::iterator aListIt; //Fill Bounding Boxes with Edges //Therefore we have to evaluate some points on our wire and feed the BBox Algorithm Base::BoundBox3f currentBox; currentBox.Flush(); for (aListIt = aList.begin();aListIt!=aList.end();aListIt++) { BRepAdaptor_Curve curveAdaptor(*aListIt); GCPnts_QuasiUniformDeflection aProp(curveAdaptor,0.1); Base::Vector3f aPoint; for (int j=1;j<=aProp.NbPoints();++j) { aPoint.x = aProp.Value(j).X(); aPoint.y = aProp.Value(j).Y(); aPoint.z = aProp.Value(j).Z(); currentBox.Add(aPoint); } } return currentBox; }