SHAPER  9.12.0
SketchSolver_Storage Class Referenceabstract

Interface to map SketchPlugin features to the entities of corresponding solver. More...

Inheritance diagram for SketchSolver_Storage:
Inheritance graph

Public Member Functions

 SketchSolver_Storage (SolverPtr theSolver)
 
virtual void addConstraint (ConstraintPtr theConstraint, ConstraintWrapperPtr theSolverConstraint)
 Change mapping between constraint from SketchPlugin and a constraint applicable for corresponding solver. More...
 
virtual void addMovementConstraint (const ConstraintWrapperPtr &theSolverConstraint)=0
 Add a movement constraint which will be destroyed after the next solving of the set of constraints. More...
 
void addEntity (FeaturePtr theFeature, EntityWrapperPtr theSolverEntity)
 Change mapping feature from SketchPlugin and the entity applicable for corresponding solver. More...
 
void addEntity (AttributePtr theAttribute, EntityWrapperPtr theSolverEntity)
 Change mapping attribute of a feature and the entity applicable for corresponding solver. More...
 
virtual bool update (FeaturePtr theFeature, bool theForce=false)=0
 Convert feature to the form applicable for specific solver and map it. More...
 
virtual bool update (AttributePtr theAttribute, bool theForce=false)=0
 Convert attribute to the form applicable for specific solver and map it. More...
 
const ConstraintWrapperPtr & constraint (const ConstraintPtr &theConstraint) const
 Returns constraint related to corresponding constraint. More...
 
const EntityWrapperPtr & entity (const FeaturePtr &theFeature) const
 Returns entity related to corresponding feature. More...
 
const EntityWrapperPtr & entity (const AttributePtr &theAttribute) const
 Returns entity related to corresponding attribute. More...
 
virtual void makeExternal (const EntityWrapperPtr &theEntity)=0
 Make entity external. More...
 
virtual void makeNonExternal (const EntityWrapperPtr &theEntity)=0
 Make entity non-external. More...
 
virtual bool removeConstraint (ConstraintPtr theConstraint)=0
 Removes constraint from the storage. More...
 
void removeFeature (FeaturePtr theFeature)
 Removes feature from the storage. More...
 
void removeAttribute (AttributePtr theAttribute)
 Removes attribute from the storage. More...
 
virtual void removeInvalidEntities ()=0
 Remove all features became invalid. More...
 
bool areFeaturesValid () const
 Check the features have not been removed. More...
 
virtual bool isEmpty () const
 Check the storage has constraints. More...
 
virtual bool isNeedToResolve ()
 Shows the sketch should be resolved. More...
 
void setNeedToResolve (bool theFlag)
 Changes the flag of group to be resolved. More...
 
std::set< ObjectPtr > getConflictingConstraints (SolverPtr theSolver) const
 Return list of conflicting constraints. More...
 
virtual void getUnderconstrainedGeometry (std::set< ObjectPtr > &theFeatures) const =0
 Return list of features which are not fully constrained. More...
 
virtual PlaneGCSSolver_Solver::SolveStatus checkDegeneratedGeometry () const =0
 Verify, the sketch contains degenerated geometry after resolving the set of constraints. More...
 
virtual void refresh () const =0
 Update SketchPlugin features after resolving constraints. More...
 
void blockEvents (bool isBlocked)
 Block or unblock events when refreshing features. More...
 
void subscribeUpdates (SketchSolver_Constraint *theSubscriber, const std::string &theGroup) const
 Subscribe for updates of features. More...
 
void unsubscribeUpdates (SketchSolver_Constraint *theSubscriber) const
 Unsubscribe for updates of features. More...
 
void notify (const FeaturePtr &theFeature) const
 Notify all subscribers about update of the feature. More...
 
virtual void adjustParametrizationOfArcs ()=0
 Make parametrization of arcs consistent. More...
 

Static Protected Member Functions

static void resultToFeatureOrAttribute (const ObjectPtr &theResult, FeaturePtr &theFeature, AttributePtr &theAttribute)
 Convert result to feature or attribute if theResult is linked to center of circle/arc. More...
 

Protected Attributes

SolverPtr mySketchSolver
 Sketch solver, prepared in corresponding group. More...
 
bool myNeedToResolve
 parameters are changed and group needs to be resolved More...
 
bool myEventsBlocked
 indicates that features do not send events More...
 
std::map< ConstraintPtr, ConstraintWrapperPtr > myConstraintMap
 map SketchPlugin constraint to a list of solver's constraints More...
 
std::map< FeaturePtr, EntityWrapperPtr > myFeatureMap
 map SketchPlugin feature to solver's entity More...
 
std::map< AttributePtr, EntityWrapperPtr > myAttributeMap
 map attribute to solver's entity More...
 
UpdaterPtr myUpdaters
 

Detailed Description

Interface to map SketchPlugin features to the entities of corresponding solver.

Member Function Documentation

◆ addConstraint()

void SketchSolver_Storage::addConstraint ( ConstraintPtr  theConstraint,
ConstraintWrapperPtr  theSolverConstraint 
)
virtual

Change mapping between constraint from SketchPlugin and a constraint applicable for corresponding solver.

Parameters
theConstraint[in] original SketchPlugin constraint
theSolverConstraint[in] solver's constraint

Reimplemented in PlaneGCSSolver_Storage.

◆ addMovementConstraint()

virtual void SketchSolver_Storage::addMovementConstraint ( const ConstraintWrapperPtr &  theSolverConstraint)
pure virtual

Add a movement constraint which will be destroyed after the next solving of the set of constraints.

Parameters
theSolverConstraint[in] solver's constraint

Implemented in PlaneGCSSolver_Storage.

◆ addEntity() [1/2]

void SketchSolver_Storage::addEntity ( FeaturePtr  theFeature,
EntityWrapperPtr  theSolverEntity 
)

Change mapping feature from SketchPlugin and the entity applicable for corresponding solver.

Parameters
theFeature[in] original SketchPlugin feature
theSolverEntity[in] solver's entity, created outside

◆ addEntity() [2/2]

void SketchSolver_Storage::addEntity ( AttributePtr  theAttribute,
EntityWrapperPtr  theSolverEntity 
)

Change mapping attribute of a feature and the entity applicable for corresponding solver.

Parameters
theAttribute[in] original attribute
theSolverEntity[in] solver's entity, created outside

◆ update() [1/2]

virtual bool SketchSolver_Storage::update ( FeaturePtr  theFeature,
bool  theForce = false 
)
pure virtual

Convert feature to the form applicable for specific solver and map it.

Parameters
theFeature[in] feature to convert
theForce[in] forced feature creation
Returns
true if the feature has been created or updated

Implemented in PlaneGCSSolver_Storage.

◆ update() [2/2]

virtual bool SketchSolver_Storage::update ( AttributePtr  theAttribute,
bool  theForce = false 
)
pure virtual

Convert attribute to the form applicable for specific solver and map it.

Parameters
theAttribute[in] attribute to convert
theForce[in] forced feature creation
Returns
true if the attribute has been created or updated

Implemented in PlaneGCSSolver_Storage.

◆ constraint()

const ConstraintWrapperPtr & SketchSolver_Storage::constraint ( const ConstraintPtr &  theConstraint) const

Returns constraint related to corresponding constraint.

◆ entity() [1/2]

const EntityWrapperPtr & SketchSolver_Storage::entity ( const FeaturePtr &  theFeature) const

Returns entity related to corresponding feature.

◆ entity() [2/2]

const EntityWrapperPtr & SketchSolver_Storage::entity ( const AttributePtr &  theAttribute) const

Returns entity related to corresponding attribute.

TODO: Check resultToFeatureOrAttribute() precisely. Create additional unit-test

◆ makeExternal()

virtual void SketchSolver_Storage::makeExternal ( const EntityWrapperPtr &  theEntity)
pure virtual

Make entity external.

Implemented in PlaneGCSSolver_Storage.

◆ makeNonExternal()

virtual void SketchSolver_Storage::makeNonExternal ( const EntityWrapperPtr &  theEntity)
pure virtual

Make entity non-external.

Implemented in PlaneGCSSolver_Storage.

◆ removeConstraint()

virtual bool SketchSolver_Storage::removeConstraint ( ConstraintPtr  theConstraint)
pure virtual

Removes constraint from the storage.

Returns
true if the constraint and all its parameters are removed successfully

Implemented in PlaneGCSSolver_Storage.

◆ removeFeature()

void SketchSolver_Storage::removeFeature ( FeaturePtr  theFeature)

Removes feature from the storage.

◆ removeAttribute()

void SketchSolver_Storage::removeAttribute ( AttributePtr  theAttribute)

Removes attribute from the storage.

◆ removeInvalidEntities()

virtual void SketchSolver_Storage::removeInvalidEntities ( )
pure virtual

Remove all features became invalid.

Implemented in PlaneGCSSolver_Storage.

◆ areFeaturesValid()

bool SketchSolver_Storage::areFeaturesValid ( ) const

Check the features have not been removed.

◆ isEmpty()

virtual bool SketchSolver_Storage::isEmpty ( ) const
inlinevirtual

Check the storage has constraints.

Reimplemented in PlaneGCSSolver_Storage.

◆ isNeedToResolve()

virtual bool SketchSolver_Storage::isNeedToResolve ( )
inlinevirtual

Shows the sketch should be resolved.

◆ setNeedToResolve()

void SketchSolver_Storage::setNeedToResolve ( bool  theFlag)
inline

Changes the flag of group to be resolved.

◆ getConflictingConstraints()

std::set< ObjectPtr > SketchSolver_Storage::getConflictingConstraints ( SolverPtr  theSolver) const

Return list of conflicting constraints.

◆ getUnderconstrainedGeometry()

virtual void SketchSolver_Storage::getUnderconstrainedGeometry ( std::set< ObjectPtr > &  theFeatures) const
pure virtual

Return list of features which are not fully constrained.

Implemented in PlaneGCSSolver_Storage.

◆ checkDegeneratedGeometry()

virtual PlaneGCSSolver_Solver::SolveStatus SketchSolver_Storage::checkDegeneratedGeometry ( ) const
pure virtual

Verify, the sketch contains degenerated geometry after resolving the set of constraints.

Returns
STATUS_OK if the geometry is valid, STATUS_DEGENERATED otherwise.

Implemented in PlaneGCSSolver_Storage.

◆ refresh()

virtual void SketchSolver_Storage::refresh ( ) const
pure virtual

Update SketchPlugin features after resolving constraints.

Implemented in PlaneGCSSolver_Storage.

◆ blockEvents()

void SketchSolver_Storage::blockEvents ( bool  isBlocked)

Block or unblock events when refreshing features.

◆ subscribeUpdates()

void SketchSolver_Storage::subscribeUpdates ( SketchSolver_Constraint theSubscriber,
const std::string &  theGroup 
) const

Subscribe for updates of features.

Parameters
theSubscriber[in] object which wants to revceive notifications
theGroup[in] group of updates features to be send

◆ unsubscribeUpdates()

void SketchSolver_Storage::unsubscribeUpdates ( SketchSolver_Constraint theSubscriber) const

Unsubscribe for updates of features.

Parameters
theSubscriber[in] object which does not want to revceive notifications anymore

◆ notify()

void SketchSolver_Storage::notify ( const FeaturePtr &  theFeature) const

Notify all subscribers about update of the feature.

◆ adjustParametrizationOfArcs()

virtual void SketchSolver_Storage::adjustParametrizationOfArcs ( )
pure virtual

Make parametrization of arcs consistent.

Forward arcs should have the last parameter greater than the first parameter. Reversed arcs should have the last parameter lesser than the first parameter.

Implemented in PlaneGCSSolver_Storage.

◆ resultToFeatureOrAttribute()

void SketchSolver_Storage::resultToFeatureOrAttribute ( const ObjectPtr &  theResult,
FeaturePtr &  theFeature,
AttributePtr &  theAttribute 
)
staticprotected

Convert result to feature or attribute if theResult is linked to center of circle/arc.

Field Documentation

◆ mySketchSolver

SolverPtr SketchSolver_Storage::mySketchSolver
protected

Sketch solver, prepared in corresponding group.

◆ myNeedToResolve

bool SketchSolver_Storage::myNeedToResolve
protected

parameters are changed and group needs to be resolved

◆ myEventsBlocked

bool SketchSolver_Storage::myEventsBlocked
protected

indicates that features do not send events

◆ myConstraintMap

std::map<ConstraintPtr, ConstraintWrapperPtr> SketchSolver_Storage::myConstraintMap
protected

map SketchPlugin constraint to a list of solver's constraints

◆ myFeatureMap

std::map<FeaturePtr, EntityWrapperPtr> SketchSolver_Storage::myFeatureMap
protected

map SketchPlugin feature to solver's entity

◆ myAttributeMap

std::map<AttributePtr, EntityWrapperPtr> SketchSolver_Storage::myAttributeMap
protected

map attribute to solver's entity