[Sketcher] Attempt to fix toponaming issue on trim refactor

TNP fix algorithm doesn't seem to like when edge with geoId 0 is deleted/made
construction after new geometry is added. Instead, we just ensure that one of
the newly added geometries becomes geoId 0 instead.

Making a `generateId(const Part::Geometry*)` was part of earlier attempts, but
still appears to remain relevant. This part can be reverted if necessary.
This commit is contained in:
Ajinkya Dahale
2024-08-09 00:26:16 +05:30
parent 30e95ee86a
commit d652db63f0
4 changed files with 195 additions and 76 deletions

View File

@@ -55,7 +55,8 @@ GeometryFacade::~GeometryFacade()
}
}
std::unique_ptr<GeometryFacade> GeometryFacade::getFacade(Part::Geometry* geometry, bool owner)
std::unique_ptr<GeometryFacade> GeometryFacade::getFacade(const Part::Geometry* geometry,
bool owner)
{
if (geometry) {
return std::unique_ptr<GeometryFacade>(new GeometryFacade(geometry, owner));
@@ -67,17 +68,17 @@ std::unique_ptr<GeometryFacade> GeometryFacade::getFacade(Part::Geometry* geomet
// return std::make_unique<GeometryFacade>(geometry);
}
std::unique_ptr<const GeometryFacade> GeometryFacade::getFacade(const Part::Geometry* geometry)
{
if (geometry) {
return std::unique_ptr<const GeometryFacade>(new GeometryFacade(geometry));
}
else {
return std::unique_ptr<const GeometryFacade>(nullptr);
}
// make_unique has no access to private constructor
// return std::make_unique<const GeometryFacade>(geometry);
}
// std::unique_ptr<const GeometryFacade> GeometryFacade::getFacade(const Part::Geometry* geometry)
// {
// if (geometry) {
// return std::unique_ptr<const GeometryFacade>(new GeometryFacade(geometry));
// }
// else {
// return std::unique_ptr<const GeometryFacade>(nullptr);
// }
// // make_unique has no access to private constructor
// // return std::make_unique<const GeometryFacade>(geometry);
// }
void GeometryFacade::setGeometry(Part::Geometry* geometry)
{
@@ -152,7 +153,7 @@ int GeometryFacade::getId(const Part::Geometry* geometry)
return gf->getId();
}
void GeometryFacade::setId(Part::Geometry* geometry, int id)
void GeometryFacade::setId(const Part::Geometry* geometry, int id)
{
auto gf = GeometryFacade::getFacade(geometry);
gf->setId(id);