Skip to content

Commit

Permalink
Issue 170. Creation of a block in bounding box mode of a list of sele…
Browse files Browse the repository at this point in the history
…cted entities.
  • Loading branch information
Charles PIGNEROL authored and nicolaslg committed Jan 31, 2025
1 parent e50ecb9 commit f19675a
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 6 deletions.
2 changes: 1 addition & 1 deletion src/QtComponents/QtTopologyBlockCreationAction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ void QtTopologyBlockCreationAction::executeOperation ( )
cmdResult = getContext ( ).getTopoManager( ).newFreeTopoInGroup (groupName, 3);
else
{
vector<string> names = getContext ( ).getSelectionManager ( ).getEntitiesNames ( );
vector<string> names = panel->getBoundingEntities ( );
cmdResult = getContext ( ).getTopoManager( ).newFreeBoundedTopoInGroup (groupName, 3, names);
} // else if (false == verticesOnSelection)
}
Expand Down
30 changes: 27 additions & 3 deletions src/QtComponents/QtTopologyCreationAction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ QtTopologyCreationPanel::QtTopologyCreationPanel (
const string& helpURL,
const string& helpTag)
: QtMgx3DOperationPanel (parent, mainWindow, action, helpURL, helpTag),
_geomEntityPanel (0), _topologyPanel (0), _selectionCheckBox (0)
_geomEntityPanel (0), _topologyPanel (0), _selectionCheckBox (0), _selectionEntitiesPanel (0)
{
// SET_WIDGET_BACKGROUND (this, Qt::yellow)
QVBoxLayout* layout = new QVBoxLayout (this);
Expand Down Expand Up @@ -105,11 +105,16 @@ QtTopologyCreationPanel::QtTopologyCreationPanel (
case SelectionManagerIfc::D3 :
_selectionCheckBox = new QCheckBox ("Sommets aux coins de la sélection", this);
layout->addWidget (_selectionCheckBox);
_selectionEntitiesPanel = new QtMgx3DEntityPanel (this, "", true, "Entités : ", "", &mainWindow, SelectionManagerIfc::ALL_DIMENSIONS, FilterEntity::All);
_selectionEntitiesPanel->setMultiSelectMode (true);
layout->addWidget (_selectionEntitiesPanel);
break;
} // switch (dimension)

CHECK_NULL_PTR_ERROR (_geomEntityPanel->getNameTextField ( ))
_geomEntityPanel->getNameTextField ( )->setLinkedSeizureManagers (0, 0);
_geomEntityPanel->getNameTextField ( )->setLinkedSeizureManagers (0, 0 == _selectionEntitiesPanel ? 0 : _selectionEntitiesPanel->getNameTextField ( ));
if ((0 != _selectionEntitiesPanel) && (0 != _selectionEntitiesPanel->getNameTextField ( )))
_selectionEntitiesPanel->getNameTextField ( )->setLinkedSeizureManagers (0 == _geomEntityPanel ? 0 : _geomEntityPanel->getNameTextField ( ), 0);

topologyModifiedCallback ( );

Expand All @@ -120,7 +125,7 @@ QtTopologyCreationPanel::QtTopologyCreationPanel (

QtTopologyCreationPanel::QtTopologyCreationPanel (const QtTopologyCreationPanel& cao)
: QtMgx3DOperationPanel (0, *new QtMgx3DMainWindow(0), 0, "", ""),
_geomEntityPanel (0), _topologyPanel (0), _selectionCheckBox (0)
_geomEntityPanel (0), _topologyPanel (0), _selectionCheckBox (0), _selectionEntitiesPanel (0)
{
MGX_FORBIDDEN ("QtTopologyCreationPanel copy constructor is not allowed.");
} // QtTopologyCreationPanel::QtTopologyCreationPanel (const QtTopologyCreationPanel&)
Expand Down Expand Up @@ -172,6 +177,13 @@ bool QtTopologyCreationPanel::placeVerticesOnSelectionBounds ( ) const
} // QtTopologyCreationPanel::placeVerticesOnSelectionBounds


vector<string> QtTopologyCreationPanel::getBoundingEntities ( ) const
{
CHECK_NULL_PTR_ERROR(_selectionEntitiesPanel)
return _selectionEntitiesPanel->getUniqueNames ( );
} // QtTopologyCreationPanel::getBoundingEntities


void QtTopologyCreationPanel::reset ( )
{
BEGIN_QT_TRY_CATCH_BLOCK
Expand Down Expand Up @@ -231,6 +243,7 @@ void QtTopologyCreationPanel::cancel ( )
BEGIN_QT_TRY_CATCH_BLOCK

setGeomEntityName ("");


COMPLETE_QT_TRY_CATCH_BLOCK (true, this, "Magix 3D")
} // if (true == cancelClearEntities ( ))
Expand All @@ -252,10 +265,19 @@ void QtTopologyCreationPanel::autoUpdate ( )
if (1 == selectedVolumes.size ( ))
setGeomEntityName (selectedVolumes [0]);

// A affiner :
if (0 != _selectionEntitiesPanel)
{ // Les sommets sont susceptibles d'être positionnés sur la boite englobante de la sélection
const vector<string> selection = getSelectionManager ( ).getEntitiesNames ( );
_selectionEntitiesPanel->setUniqueNames (selection);
} // if (0 != _selectionEntitiesPanel)

COMPLETE_QT_TRY_CATCH_BLOCK (true, this, "Magix 3D")
} // if (true == autoUpdateUsesSelection ( ))
#else // AUTO_UPDATE_OLD_SCHEME
_geomEntityPanel->clearSelection ( );
if (0 != _selectionEntitiesPanel)
_selectionEntitiesPanel->clearSelection ( );
#endif // AUTO_UPDATE_OLD_SCHEME

_geomEntityPanel->actualizeGui (true);
Expand Down Expand Up @@ -327,6 +349,8 @@ void QtTopologyCreationPanel::topologyModifiedCallback ( )
getTopologyPanel ( ).allowGroupName (allowGroup);
if (0 != _selectionCheckBox)
_selectionCheckBox->setEnabled (allowSelection);
if (0 != _selectionEntitiesPanel)
_selectionEntitiesPanel->setEnabled (allowSelection);
} // QtTopologyCreationPanel::topologyModifiedCallback


Expand Down
12 changes: 10 additions & 2 deletions src/QtComponents/protected/QtComponents/QtTopologyCreationAction.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,14 @@ class QtTopologyCreationPanel : public QtMgx3DOperationPanel
virtual double getOGridRatio ( ) const;

/**
* \return true si il faut positionner les vertex sur les coins de la boite englobant la sélection courante
* \return true si il faut positionner les vertex sur les coins de la boite englobant une sélection d'entités
*/
virtual bool placeVerticesOnSelectionBounds ( ) const;

/**
* \return La liste des noms d'entités définissant la boite englobante de positionnement des sommets
*/
virtual std::vector<std::string> getBoundingEntities ( ) const;

/**
* Réinitialise le panneau.
Expand Down Expand Up @@ -173,8 +178,11 @@ class QtTopologyCreationPanel : public QtMgx3DOperationPanel
/** La topologie créée. */
QtTopologyPanel* _topologyPanel;

/** Faut-il positionner les sommets topologiques sur les coins de la boite englobant une sélection ? */
/** Faut-il positionner les sommets topologiques sur les coins d'une boite englobant une sélection d'entités ? */
QCheckBox* _selectionCheckBox;

/** La sélection définissant une boite englobante. */
QtMgx3DEntityPanel* _selectionEntitiesPanel;
}; // class QtTopologyCreationPanel


Expand Down

0 comments on commit f19675a

Please sign in to comment.