From e96b4c11a2d2deb1eb9079135c8d0b52c66c146c Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Fri, 28 Jun 2024 16:19:30 +0200 Subject: [PATCH] Implement edge as top-level representation item #4924 --- src/ifcgeom/kernels/opencascade/OpenCascadeKernel.h | 1 + src/ifcgeom/kernels/opencascade/loop.cpp | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/ifcgeom/kernels/opencascade/OpenCascadeKernel.h b/src/ifcgeom/kernels/opencascade/OpenCascadeKernel.h index c38fc8d812..106604123a 100644 --- a/src/ifcgeom/kernels/opencascade/OpenCascadeKernel.h +++ b/src/ifcgeom/kernels/opencascade/OpenCascadeKernel.h @@ -136,6 +136,7 @@ public: bool convert(const ifcopenshell::geometry::taxonomy::loft::ptr, TopoDS_Shape&); bool convert(const ifcopenshell::geometry::taxonomy::bspline_surface::ptr bs, Handle(Geom_Surface) surf); + virtual bool convert_impl(const ifcopenshell::geometry::taxonomy::edge::ptr, IfcGeom::ConversionResults&); virtual bool convert_impl(const ifcopenshell::geometry::taxonomy::loop::ptr, IfcGeom::ConversionResults&); virtual bool convert_impl(const ifcopenshell::geometry::taxonomy::face::ptr, IfcGeom::ConversionResults&); virtual bool convert_impl(const ifcopenshell::geometry::taxonomy::solid::ptr, IfcGeom::ConversionResults&); diff --git a/src/ifcgeom/kernels/opencascade/loop.cpp b/src/ifcgeom/kernels/opencascade/loop.cpp index a7443f772b..700b5a670e 100644 --- a/src/ifcgeom/kernels/opencascade/loop.cpp +++ b/src/ifcgeom/kernels/opencascade/loop.cpp @@ -365,3 +365,16 @@ bool OpenCascadeKernel::convert_impl(const taxonomy::loop::ptr loop, IfcGeom::Co )); return true; } + +bool OpenCascadeKernel::convert_impl(const taxonomy::edge::ptr edge, IfcGeom::ConversionResults& results) { + edge->print(std::cout); + + TopoDS_Wire shape = boost::get(convert_curve(this, edge)); + + results.emplace_back(ConversionResult( + edge->instance->data().id(), + new OpenCascadeShape(shape), + edge->surface_style + )); + return true; +}