Points and wires

This commit is contained in:
Ken Arroyo Ohori
2017-01-31 19:03:15 -06:00
parent 9c21e05184
commit 233aaeaca2
2 changed files with 15 additions and 14 deletions
@@ -28,13 +28,14 @@ bool IfcGeom::CgalKernel::convert(const IfcSchema::IfcExtrudedAreaSolid*, cgal_s
}
bool IfcGeom::CgalKernel::convert(const IfcSchema::IfcCartesianPoint* l, cgal_point_t& point) {
// IN_CACHE(IfcCartesianPoint,l,gp_Pnt,point)
// std::vector<double> xyz = l->Coordinates();
// point = gp_Pnt(
// xyz.size() ? (xyz[0]*getValue(GV_LENGTH_UNIT)) : 0.0f,
// xyz.size() > 1 ? (xyz[1]*getValue(GV_LENGTH_UNIT)) : 0.0f,
// xyz.size() > 2 ? (xyz[2]*getValue(GV_LENGTH_UNIT)) : 0.0f
// );
// CACHE(IfcCartesianPoint,l,point)
return true;
std::vector<double> xyz = l->Coordinates();
// for (const double &coordinate: xyz) std::cout << coordinate << " ";
// std::cout << std::endl;
if (xyz.size() == 3) {
point = new Kernel::Point_3(xyz[0], xyz[1], xyz[2]);
return true;
} else {
point = new Kernel::Point_3();
return false;
}
}
@@ -390,14 +390,14 @@ bool IfcGeom::CgalKernel::convert(const IfcSchema::IfcFace* l, cgal_face_t& face
bool IfcGeom::CgalKernel::convert(const IfcSchema::IfcPolyLoop* l, cgal_wire_t& result) {
IfcSchema::IfcCartesianPoint::list::ptr points = l->Polygon();
// // Parse and store the points in a sequence
// TColgp_SequenceOfPnt polygon;
// Parse and store the points in a sequence
cgal_wire_t polygon;
for(IfcSchema::IfcCartesianPoint::list::it it = points->begin(); it != points->end(); ++ it) {
cgal_point_t pnt;
IfcGeom::CgalKernel::convert(*it, pnt);
// polygon.Append(pnt);
polygon->push_back(*pnt);
}
//
// // A loop should consist of at least three vertices
// int original_count = polygon.Length();
// if (original_count < 3) {
@@ -425,7 +425,7 @@ bool IfcGeom::CgalKernel::convert(const IfcSchema::IfcPolyLoop* l, cgal_wire_t&
// }
// w.Close();
//
// result = w.Wire();
result = polygon;
return true;
}