ReUseX  0.0.5
3D Point Cloud Processing for Building Reuse
Loading...
Searching...
No Matches
reusex::geometry::Solidifier Class Reference

Solidifier solves room segmentation using Mixed Integer Programming. More...

#include <Solidifier.hpp>

Public Types

using Fd = CellComplex::Vertex
using Cd = CellComplex::Vertex

Public Member Functions

 Solidifier ()=delete
 Solidifier (std::shared_ptr< const CellComplex > cc, SolidifierOptions options=SolidifierOptions{})
 ~Solidifier ()
 Solidifier (const Solidifier &)=delete
Solidifieroperator= (const Solidifier &)=delete
 Solidifier (Solidifier &&)=delete
Solidifieroperator= (Solidifier &&)=delete
std::optional< std::pair< std::unordered_map< Cd, int >, std::unordered_map< Cd, std::set< int > > > > solve ()
 Solve the MIP problem for room segmentation.
SolveStatus last_solve_status () const
 Status of the most recent solve() call.
const std::vector< SectionSolveStats > & section_stats () const
 Per-section solve diagnostics from the most recent solve().
std::pair< Eigen::MatrixXd, Eigen::MatrixXi > toMesh (std::function< bool(const Cd)> filter)
 Convert solved cell complex to mesh.

Protected Member Functions

std::shared_ptr< const CellComplexget_cell_complex () const

Detailed Description

Solidifier solves room segmentation using Mixed Integer Programming.

Uses PIMPL idiom to hide CGAL MIP solver implementation details. This significantly reduces compile times by not exposing CGAL headers.

Definition at line 101 of file Solidifier.hpp.

Member Typedef Documentation

◆ Cd

◆ Fd

Constructor & Destructor Documentation

◆ Solidifier() [1/4]

reusex::geometry::Solidifier::Solidifier ( )
delete

◆ Solidifier() [2/4]

reusex::geometry::Solidifier::Solidifier ( std::shared_ptr< const CellComplex > cc,
SolidifierOptions options = SolidifierOptions{} )
explicit

◆ ~Solidifier()

reusex::geometry::Solidifier::~Solidifier ( )

◆ Solidifier() [3/4]

reusex::geometry::Solidifier::Solidifier ( const Solidifier & )
delete

References Solidifier().

◆ Solidifier() [4/4]

reusex::geometry::Solidifier::Solidifier ( Solidifier && )
delete

References Solidifier().

Member Function Documentation

◆ get_cell_complex()

std::shared_ptr< const CellComplex > reusex::geometry::Solidifier::get_cell_complex ( ) const
protected

◆ last_solve_status()

SolveStatus reusex::geometry::Solidifier::last_solve_status ( ) const

Status of the most recent solve() call.

Distinguishes timeout from infeasibility from a modelling error so the caller can report an actionable reason on failure (issue #212).

◆ operator=() [1/2]

Solidifier & reusex::geometry::Solidifier::operator= ( const Solidifier & )
delete

References Solidifier().

◆ operator=() [2/2]

Solidifier & reusex::geometry::Solidifier::operator= ( Solidifier && )
delete

References Solidifier().

◆ section_stats()

const std::vector< SectionSolveStats > & reusex::geometry::Solidifier::section_stats ( ) const

Per-section solve diagnostics from the most recent solve().

Empty when the monolithic path was taken; otherwise one entry per section that was attempted (issue #226).

◆ solve()

std::optional< std::pair< std::unordered_map< Cd, int >, std::unordered_map< Cd, std::set< int > > > > reusex::geometry::Solidifier::solve ( )

Solve the MIP problem for room segmentation.

Returns
Optional pair of room labels and wall labels, or nullopt if solving fails

◆ toMesh()

std::pair< Eigen::MatrixXd, Eigen::MatrixXi > reusex::geometry::Solidifier::toMesh ( std::function< bool(const Cd)> filter)

Convert solved cell complex to mesh.

Parameters
filterFunction to filter which cells to include in mesh
Returns
Pair of vertex matrix and face matrix (Eigen format)

The documentation for this class was generated from the following file: