mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-12-27 09:50:34 +05:00
Corrections
This commit is contained in:
parent
2c3b693211
commit
db82e55631
Binary file not shown.
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 1.7 MiB |
Binary file not shown.
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 1.2 MiB |
BIN
doc/salome/gui/GEOM/images/shape_statistics.png
Normal file
BIN
doc/salome/gui/GEOM/images/shape_statistics.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 380 KiB |
BIN
doc/salome/gui/GEOM/images/shape_statistics_simple.png
Normal file
BIN
doc/salome/gui/GEOM/images/shape_statistics_simple.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 240 KiB |
28
doc/salome/gui/GEOM/input/shape_statistics_operation.doc
Normal file
28
doc/salome/gui/GEOM/input/shape_statistics_operation.doc
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/*!
|
||||||
|
|
||||||
|
\page shape_statistics_operation_page Shape Statistics
|
||||||
|
|
||||||
|
This operation allows plotting a distribution histogram for the numerical parameters and creating the corresponding geometrical groups of the given shape.
|
||||||
|
|
||||||
|
To call <b>Shape Statistics</b> dialog box, in the <b>Main Menu</b> select <b>Inspection - > Shape Statistics</b>.
|
||||||
|
|
||||||
|
\image html shape_statistics.png
|
||||||
|
|
||||||
|
In this dialog:
|
||||||
|
- "Selected objects" standard selection box allows selecting one or more geometrical objects.
|
||||||
|
|
||||||
|
- "Type" combo-box with the following items: "Edges length", "Faces area", "Solids volume".
|
||||||
|
\note "Type" combo-box includes only parameters applied to the currently selected shape (e.g. "Solids volume" will not be available for face or shell being selected); multiple selection is processed correspondingly (i.e. only types applicable for all selected shapes will be available).
|
||||||
|
|
||||||
|
- "Number of intervals" spin box is used to specify number of distribution histogram ranges.
|
||||||
|
|
||||||
|
- "Scalar range" checkable group box that, when switched ON, allows specifying custom values range used for plotting and creating groups.
|
||||||
|
\note By default, "Scalar range" controls is empty; pressing "Compute" button allows automatic computing initial range of the chosen parameter. This is needed as computation of the parameters range can be time-consuming for large or complex models. In case of multiple selection, scalar range is computed as common from all selected shapes.
|
||||||
|
|
||||||
|
- "Plot" button opens or uses an opened Plot2d viewer and plots the distribution histogram for the selected shape(s).
|
||||||
|
|
||||||
|
- "Create groups" button allows creating a groups according to the currently specified parameters. The groups names will include numerical values of the range, e.g. "Edges_length_0-20", "Edges_length_20-40", etc. Empty groups are not created.
|
||||||
|
|
||||||
|
- Close dialog box, by pressing <b>Close</b> button.
|
||||||
|
|
||||||
|
*/
|
@ -19,6 +19,7 @@
|
|||||||
<li>\subpage managing_dimensions_page "Dimensions"</li>
|
<li>\subpage managing_dimensions_page "Dimensions"</li>
|
||||||
<li>\subpage whatis_page "WhatIs"</li>
|
<li>\subpage whatis_page "WhatIs"</li>
|
||||||
<li>\subpage inspect_object_operation_page "Inspect Object"</li>
|
<li>\subpage inspect_object_operation_page "Inspect Object"</li>
|
||||||
|
<li>\subpage shape_statistics_operation_page "Shape Statistics"</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
\n To check their integrity:
|
\n To check their integrity:
|
||||||
|
@ -24,7 +24,7 @@ This functionality is available in OCC viewer only.
|
|||||||
|
|
||||||
To create a group of sub-shapes of a geometrical object in the main
|
To create a group of sub-shapes of a geometrical object in the main
|
||||||
menu select <b>New entity > Group > Create</b>
|
menu select <b>New entity > Group > Create</b>
|
||||||
\n The following menu will appear:
|
\n The following dialog box will appear:
|
||||||
|
|
||||||
\image html geomcreategroup.png
|
\image html geomcreategroup.png
|
||||||
|
|
||||||
@ -101,6 +101,11 @@ In order to filter out some entities:
|
|||||||
The entities which satisfy entered filtering parameters will be automatically highlighted
|
The entities which satisfy entered filtering parameters will be automatically highlighted
|
||||||
in the 3D viewer.
|
in the 3D viewer.
|
||||||
|
|
||||||
|
\b Plot button into "Filter" group box provides an access
|
||||||
|
to the \ref shape_statistics_operation_page "Shape Statistics" functionality with simplified look-n-feel:
|
||||||
|
|
||||||
|
\image html shape_statistics_simple.png
|
||||||
|
|
||||||
\n <b>TUI Command:</b> <em>geompy.CreateGroup(MainShape,
|
\n <b>TUI Command:</b> <em>geompy.CreateGroup(MainShape,
|
||||||
ShapeType),</em> where MainShape is a shape for which the group is
|
ShapeType),</em> where MainShape is a shape for which the group is
|
||||||
created, ShapeType is a type of shapes in the created group.
|
created, ShapeType is a type of shapes in the created group.
|
||||||
|
@ -47,14 +47,15 @@ namespace GEOMUtils
|
|||||||
std::list<TopoDS_Shape>::const_iterator it;
|
std::list<TopoDS_Shape>::const_iterator it;
|
||||||
for ( it = shapes.begin(); it != shapes.end(); ++it ) {
|
for ( it = shapes.begin(); it != shapes.end(); ++it ) {
|
||||||
double aMeasure;
|
double aMeasure;
|
||||||
|
TopTools_IndexedMapOfShape aSubShapesMap;
|
||||||
|
TopExp::MapShapes(*it, aSubShapesMap); // map of all global indices
|
||||||
TopTools_IndexedMapOfShape aMx;
|
TopTools_IndexedMapOfShape aMx;
|
||||||
TopExp::MapShapes( *it, entity, aMx );
|
TopExp::MapShapes( *it, entity, aMx ); // map of current type sub-shape indices
|
||||||
int aNbS = aMx.Extent();
|
int aNbS = aMx.Extent();
|
||||||
int index = -1;
|
int index = -1;
|
||||||
for ( int i = 1; i <= aNbS; ++i ) {
|
for ( int i = 1; i <= aNbS; ++i ) {
|
||||||
aMeasure = 0.0;
|
aMeasure = 0.0;
|
||||||
const TopoDS_Shape& aSubShape = aMx( i );
|
const TopoDS_Shape& aSubShape = aMx( i );
|
||||||
index = aMx.FindIndex( aSubShape );
|
|
||||||
//Get the measure: length, area or volume
|
//Get the measure: length, area or volume
|
||||||
GProp_GProps LProps, SProps, VProps;
|
GProp_GProps LProps, SProps, VProps;
|
||||||
if ( entity == TopAbs_EDGE ) {
|
if ( entity == TopAbs_EDGE ) {
|
||||||
@ -76,6 +77,8 @@ namespace GEOMUtils
|
|||||||
if ( aMeasure < range.min ) range.min = aMeasure;
|
if ( aMeasure < range.min ) range.min = aMeasure;
|
||||||
if ( aMeasure > range.max ) range.max = aMeasure;
|
if ( aMeasure > range.max ) range.max = aMeasure;
|
||||||
}
|
}
|
||||||
|
// get global index of sub-shape
|
||||||
|
index = aSubShapesMap.FindIndex( aSubShape );
|
||||||
// keep measures to distribute it
|
// keep measures to distribute it
|
||||||
measures[index] = aMeasure;
|
measures[index] = aMeasure;
|
||||||
}
|
}
|
||||||
@ -139,16 +142,4 @@ Distribution ComputeDistribution( std::list<TopoDS_Shape> shapes,
|
|||||||
return aDistr;
|
return aDistr;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
|
||||||
// function : FilterSubShapes()
|
|
||||||
// purpose : gets list of sub-shapes IDs according to the specified range data (needed for groups creation function)
|
|
||||||
//=================================================================================
|
|
||||||
std::list<long> FilterSubShapes( TopoDS_Shape shape,
|
|
||||||
TopAbs_ShapeEnum entity,
|
|
||||||
Range range)
|
|
||||||
{
|
|
||||||
std::list<long> idList;
|
|
||||||
return idList;
|
|
||||||
}
|
|
||||||
|
|
||||||
} //namespace GEOMUtils
|
} //namespace GEOMUtils
|
||||||
|
@ -56,12 +56,6 @@ namespace GEOMUtils
|
|||||||
int intervals,
|
int intervals,
|
||||||
Range range );
|
Range range );
|
||||||
|
|
||||||
// function to get list of sub-shapes IDs according to the specified range data (needed for groups creation function).
|
|
||||||
Standard_EXPORT std::list<long> FilterSubShapes(
|
|
||||||
TopoDS_Shape shape,
|
|
||||||
TopAbs_ShapeEnum entity,
|
|
||||||
Range range );
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // _GEOMUtils_ShapeStatistics_HXX_
|
#endif // _GEOMUtils_ShapeStatistics_HXX_
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
#include <LightApp_SelectionMgr.h>
|
#include <LightApp_SelectionMgr.h>
|
||||||
|
|
||||||
#include <SalomeApp_Application.h>
|
#include <SalomeApp_Application.h>
|
||||||
|
#include <SalomeApp_Study.h>
|
||||||
|
|
||||||
#include <Plot2d_Histogram.h>
|
#include <Plot2d_Histogram.h>
|
||||||
#include <Plot2d_ViewFrame.h>
|
#include <Plot2d_ViewFrame.h>
|
||||||
@ -58,6 +59,8 @@
|
|||||||
// OCC includes
|
// OCC includes
|
||||||
#include <TopoDS_Shape.hxx>
|
#include <TopoDS_Shape.hxx>
|
||||||
|
|
||||||
|
#include <GEOMImpl_Types.hxx>
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
// class : MeasureGUI_ShapeStatisticsDlg()
|
// class : MeasureGUI_ShapeStatisticsDlg()
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
@ -67,7 +70,6 @@ MeasureGUI_ShapeStatisticsDlg::MeasureGUI_ShapeStatisticsDlg( QWidget* parent, T
|
|||||||
myHistogram ( 0 )
|
myHistogram ( 0 )
|
||||||
{
|
{
|
||||||
myShapes.push_back( aShape );
|
myShapes.push_back( aShape );
|
||||||
myMainObj = GEOM::GEOM_Object::_nil();
|
|
||||||
|
|
||||||
QIcon iconSelect( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
|
QIcon iconSelect( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
|
||||||
|
|
||||||
@ -75,7 +77,6 @@ MeasureGUI_ShapeStatisticsDlg::MeasureGUI_ShapeStatisticsDlg( QWidget* parent, T
|
|||||||
setAttribute( Qt::WA_DeleteOnClose );
|
setAttribute( Qt::WA_DeleteOnClose );
|
||||||
|
|
||||||
myApp = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
|
myApp = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
|
||||||
//myViewWindow = myApp->desktop()->activeWindow();
|
|
||||||
|
|
||||||
QVBoxLayout* topLayout = new QVBoxLayout( this );
|
QVBoxLayout* topLayout = new QVBoxLayout( this );
|
||||||
|
|
||||||
@ -154,6 +155,7 @@ MeasureGUI_ShapeStatisticsDlg::MeasureGUI_ShapeStatisticsDlg( QWidget* parent, T
|
|||||||
/********************** Buttons **********************/
|
/********************** Buttons **********************/
|
||||||
|
|
||||||
myButtonPlot = new QPushButton( tr( "GEOM_PLOT_DISTRIBUTION" ), this );
|
myButtonPlot = new QPushButton( tr( "GEOM_PLOT_DISTRIBUTION" ), this );
|
||||||
|
myButtonPlot->setDefault( true );
|
||||||
myButtonCreateGr = new QPushButton( tr( "GEOM_SHAPE_STATISTICS_CREATE_GROUPS" ), this );
|
myButtonCreateGr = new QPushButton( tr( "GEOM_SHAPE_STATISTICS_CREATE_GROUPS" ), this );
|
||||||
QPushButton* buttonClose = new QPushButton( tr( "GEOM_BUT_CLOSE" ), this );
|
QPushButton* buttonClose = new QPushButton( tr( "GEOM_BUT_CLOSE" ), this );
|
||||||
QPushButton* buttonHelp = new QPushButton( tr( "GEOM_BUT_HELP" ), this );
|
QPushButton* buttonHelp = new QPushButton( tr( "GEOM_BUT_HELP" ), this );
|
||||||
@ -198,6 +200,48 @@ MeasureGUI_ShapeStatisticsDlg::~MeasureGUI_ShapeStatisticsDlg()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : createOperation
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
GEOM::GEOM_IOperations_ptr MeasureGUI_ShapeStatisticsDlg::createOperation()
|
||||||
|
{
|
||||||
|
return getGeomEngine()->GetIGroupOperations(getStudyId());
|
||||||
|
}
|
||||||
|
|
||||||
|
#define RETURN_WITH_MSG(a, b) \
|
||||||
|
if (!(a)) { \
|
||||||
|
theMessage += (b); \
|
||||||
|
return false; \
|
||||||
|
}
|
||||||
|
|
||||||
|
//================================================================
|
||||||
|
// Function : getFather
|
||||||
|
// Purpose : Get father object for object to be added in study
|
||||||
|
// (called with addInStudy method)
|
||||||
|
//================================================================
|
||||||
|
GEOM::GEOM_Object_ptr MeasureGUI_ShapeStatisticsDlg::getFather(GEOM::GEOM_Object_ptr theObj)
|
||||||
|
{
|
||||||
|
GEOM::GEOM_Object_var aFatherObj;
|
||||||
|
if (theObj->GetType() == GEOM_GROUP) {
|
||||||
|
GEOM::GEOM_IGroupOperations_var anOper = GEOM::GEOM_IGroupOperations::_narrow(getOperation());
|
||||||
|
aFatherObj = anOper->GetMainShape(theObj);
|
||||||
|
}
|
||||||
|
return aFatherObj._retn();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : getSourceObjects
|
||||||
|
// purpose : virtual method to get source objects
|
||||||
|
//=================================================================================
|
||||||
|
QList<GEOM::GeomObjPtr> MeasureGUI_ShapeStatisticsDlg::getSourceObjects()
|
||||||
|
{
|
||||||
|
QList<GEOM::GeomObjPtr> res;
|
||||||
|
GEOM::GeomObjPtr aGeomObjPtr1(myMainObj);
|
||||||
|
res << aGeomObjPtr1;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
// function : onEditMainShape()
|
// function : onEditMainShape()
|
||||||
// purpose : called when selection button was clicked
|
// purpose : called when selection button was clicked
|
||||||
@ -216,8 +260,8 @@ void MeasureGUI_ShapeStatisticsDlg::onEditMainShape()
|
|||||||
|
|
||||||
if ( !selShapes.isEmpty() ) {
|
if ( !selShapes.isEmpty() ) {
|
||||||
if ( selShapes.count() == 1 )
|
if ( selShapes.count() == 1 )
|
||||||
myMainObj = selShapes[0].get();
|
myMainObj = selShapes[0];
|
||||||
QString aName = selShapes.count() > 1 ? QString( "%1_objects").arg( selShapes.count() ) : GEOMBase::GetName( myMainObj );
|
QString aName = selShapes.count() > 1 ? QString( "%1_objects").arg( selShapes.count() ) : GEOMBase::GetName( myMainObj.get() );
|
||||||
myEditMainShape->setText( aName );
|
myEditMainShape->setText( aName );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,19 +348,12 @@ TopAbs_ShapeEnum MeasureGUI_ShapeStatisticsDlg::currentType()
|
|||||||
// function : clickOnPlot()
|
// function : clickOnPlot()
|
||||||
// purpose : called when Plot button was clicked
|
// purpose : called when Plot button was clicked
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
bool MeasureGUI_ShapeStatisticsDlg::checkInput()
|
bool MeasureGUI_ShapeStatisticsDlg::isValid(QString& theMessage)
|
||||||
{
|
{
|
||||||
if ( myMin->text().isEmpty() ) {
|
if ( myScalarRangeBox->isChecked() ) {
|
||||||
showError( tr("GEOM_SHAPE_STATISTICS_MIN_ERROR") );
|
RETURN_WITH_MSG( !myMin->text().isEmpty(), tr("GEOM_SHAPE_STATISTICS_MIN_ERROR") )
|
||||||
return false;
|
RETURN_WITH_MSG( !myMax->text().isEmpty(), tr("GEOM_SHAPE_STATISTICS_MAX_ERROR") )
|
||||||
}
|
RETURN_WITH_MSG( myMin->text().toDouble() <= myMax->text().toDouble(), tr("GEOM_SHAPE_STATISTICS_MIN_MAX_ERROR") )
|
||||||
if ( myMax->text().isEmpty() ) {
|
|
||||||
showError( tr("GEOM_SHAPE_STATISTICS_MAX_ERROR" ) );
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (myMin->text().toDouble() > myMax->text().toDouble()) {
|
|
||||||
showError( tr("GEOM_SHAPE_STATISTICS_MIN_MAX_ERROR" ) );
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -328,8 +365,11 @@ void MeasureGUI_ShapeStatisticsDlg::clickOnPlot()
|
|||||||
{
|
{
|
||||||
GEOMUtils::Range aRange;
|
GEOMUtils::Range aRange;
|
||||||
if ( myScalarRangeBox->isChecked() ) {
|
if ( myScalarRangeBox->isChecked() ) {
|
||||||
if ( !checkInput() )
|
QString msg;
|
||||||
|
if ( !isValid( msg ) ) {
|
||||||
|
showError( msg );
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
aRange.min = myMin->text().toDouble();
|
aRange.min = myMin->text().toDouble();
|
||||||
aRange.max = myMax->text().toDouble();
|
aRange.max = myMax->text().toDouble();
|
||||||
} else {
|
} else {
|
||||||
@ -361,13 +401,10 @@ void MeasureGUI_ShapeStatisticsDlg::clickOnPlot()
|
|||||||
SUIT_ViewManager* aViewManager = myApp->getViewManager( Plot2d_Viewer::Type(), true ); // create if necessary
|
SUIT_ViewManager* aViewManager = myApp->getViewManager( Plot2d_Viewer::Type(), true ); // create if necessary
|
||||||
if( !aViewManager )
|
if( !aViewManager )
|
||||||
return;
|
return;
|
||||||
Plot2d_Viewer* aView = dynamic_cast<Plot2d_Viewer*>(aViewManager->getViewModel());
|
aViewManager->getActiveView()->setFocus();
|
||||||
if ( !aView )
|
|
||||||
return;
|
|
||||||
Plot2d_ViewWindow* aViewWnd = dynamic_cast<Plot2d_ViewWindow*>(aViewManager->getActiveView());
|
Plot2d_ViewWindow* aViewWnd = dynamic_cast<Plot2d_ViewWindow*>(aViewManager->getActiveView());
|
||||||
if( !aViewWnd )
|
if( !aViewWnd )
|
||||||
return;
|
return;
|
||||||
aViewWnd->setFocus();
|
|
||||||
Plot2d_ViewFrame* aPlot = aViewWnd->getViewFrame();
|
Plot2d_ViewFrame* aPlot = aViewWnd->getViewFrame();
|
||||||
if ( !aPlot )
|
if ( !aPlot )
|
||||||
return;
|
return;
|
||||||
@ -419,18 +456,37 @@ void MeasureGUI_ShapeStatisticsDlg::clickOnCompute()
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
void MeasureGUI_ShapeStatisticsDlg::clickOnCreateGroups()
|
void MeasureGUI_ShapeStatisticsDlg::clickOnCreateGroups()
|
||||||
{
|
{
|
||||||
GEOM::GEOM_IGroupOperations_var anOper = GEOM::GEOM_IGroupOperations::_narrow(getOperation());
|
onAccept(false, false, false);
|
||||||
|
}
|
||||||
|
//=================================================================================
|
||||||
|
// function : execute(ObjectList& objects)
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
|
bool MeasureGUI_ShapeStatisticsDlg::execute(ObjectList& objects)
|
||||||
|
{
|
||||||
|
if ( myMainObj.isNull() )
|
||||||
|
return false;
|
||||||
|
GEOM::GroupOpPtr anOper = GEOM::GEOM_IGroupOperations::_narrow(getOperation());
|
||||||
|
|
||||||
GEOMUtils::Range aRange;
|
GEOMUtils::Range aRange;
|
||||||
if ( myScalarRangeBox->isChecked() ) {
|
if ( myScalarRangeBox->isChecked() ) {
|
||||||
if ( !checkInput() )
|
QString msg;
|
||||||
return;
|
if ( !isValid( msg ) ) {
|
||||||
|
showError( msg );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
aRange.min = myMin->text().toDouble();
|
aRange.min = myMin->text().toDouble();
|
||||||
aRange.max = myMax->text().toDouble();
|
aRange.max = myMax->text().toDouble();
|
||||||
} else {
|
} else {
|
||||||
aRange.min = -1.0; // flag that range is empty
|
aRange.min = -1.0; // flag that range is empty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
||||||
|
int aPrecision = resMgr->integerValue( "Geometry", "length_precision", 6 );
|
||||||
|
QString aTypePrefix = myCBTypes->currentText().replace(' ', '_');
|
||||||
|
QString objIOR, aMin, aMax, aGroupName;
|
||||||
|
SalomeApp_Study* study = getStudy();
|
||||||
|
|
||||||
GEOMUtils::Distribution aShapesDistr =
|
GEOMUtils::Distribution aShapesDistr =
|
||||||
GEOMUtils::ComputeDistribution( myShapes, currentType(), myNbIntervals->value(), aRange );
|
GEOMUtils::ComputeDistribution( myShapes, currentType(), myNbIntervals->value(), aRange );
|
||||||
|
|
||||||
@ -448,31 +504,40 @@ void MeasureGUI_ShapeStatisticsDlg::clickOnCreateGroups()
|
|||||||
ii++;
|
ii++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CORBA::is_nil(myMainObj))
|
// Create an empty group
|
||||||
return;
|
|
||||||
|
|
||||||
GEOM::GEOM_Object_var aGroup;
|
GEOM::GEOM_Object_var aGroup;
|
||||||
aGroup = anOper->CreateGroup( myMainObj, currentType() );
|
aGroup = anOper->CreateGroup( myMainObj.get(), currentType() );
|
||||||
|
|
||||||
if (CORBA::is_nil(aGroup) || !anOper->IsDone())
|
if (CORBA::is_nil(aGroup) || !anOper->IsDone())
|
||||||
return;
|
return false;
|
||||||
|
|
||||||
GEOM::ListOfLong_var aCurrList = anOper->GetObjects(aGroup);
|
|
||||||
if (!anOper->IsDone())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (aCurrList->length() > 0)
|
|
||||||
{
|
|
||||||
anOper->DifferenceIDs(aGroup, aCurrList);
|
|
||||||
if (!anOper->IsDone())
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// Add sub-shapes into group
|
||||||
anOper->UnionIDs(aGroup, aNewList);
|
anOper->UnionIDs(aGroup, aNewList);
|
||||||
if (!anOper->IsDone())
|
if (!anOper->IsDone())
|
||||||
return;
|
return false;
|
||||||
|
|
||||||
|
GEOMBase::PublishSubObject( aGroup );
|
||||||
|
|
||||||
|
// Set a correct group name
|
||||||
|
if (study) {
|
||||||
|
objIOR = GEOMBase::GetIORFromObject(aGroup);
|
||||||
|
if (objIOR != "") {
|
||||||
|
_PTR(SObject) SO (study->studyDS()->FindObjectIOR(objIOR.toLatin1().constData()));
|
||||||
|
if (SO) {
|
||||||
|
aMin = DlgRef::PrintDoubleValue( (*it).min, aPrecision );
|
||||||
|
aMax = DlgRef::PrintDoubleValue( (*it).max, aPrecision );
|
||||||
|
aGroupName = aTypePrefix + "_" + aMin + "_" + aMax;
|
||||||
|
_PTR(StudyBuilder) aBuilder (study->studyDS()->NewBuilder());
|
||||||
|
aBuilder->SetName(SO, aGroupName.toLatin1().constData());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// add group to be published
|
||||||
|
objects.push_back(aGroup._retn());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
|
@ -53,6 +53,14 @@ public:
|
|||||||
MeasureGUI_ShapeStatisticsDlg( QWidget*, TopoDS_Shape aShape = TopoDS_Shape(), TopAbs_ShapeEnum aSubShapeType = TopAbs_SHAPE );
|
MeasureGUI_ShapeStatisticsDlg( QWidget*, TopoDS_Shape aShape = TopoDS_Shape(), TopAbs_ShapeEnum aSubShapeType = TopAbs_SHAPE );
|
||||||
~MeasureGUI_ShapeStatisticsDlg();
|
~MeasureGUI_ShapeStatisticsDlg();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// redefined from GEOMBase_Helper
|
||||||
|
virtual GEOM::GEOM_IOperations_ptr createOperation();
|
||||||
|
virtual bool isValid (QString&);
|
||||||
|
virtual bool execute (ObjectList&);
|
||||||
|
virtual GEOM::GEOM_Object_ptr getFather (GEOM::GEOM_Object_ptr);
|
||||||
|
virtual QList<GEOM::GeomObjPtr> getSourceObjects();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onEditMainShape();
|
void onEditMainShape();
|
||||||
void clickOnCompute();
|
void clickOnCompute();
|
||||||
@ -64,15 +72,13 @@ private:
|
|||||||
void fillTypes( bool, bool, bool );
|
void fillTypes( bool, bool, bool );
|
||||||
void updateTypes( QList<GEOM::GeomObjPtr> theShapes );
|
void updateTypes( QList<GEOM::GeomObjPtr> theShapes );
|
||||||
TopAbs_ShapeEnum currentType();
|
TopAbs_ShapeEnum currentType();
|
||||||
bool checkInput();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SalomeApp_Application* myApp;
|
SalomeApp_Application* myApp;
|
||||||
QPointer<SUIT_ViewWindow> myViewWindow;
|
|
||||||
QLineEdit* myEditMainShape;
|
QLineEdit* myEditMainShape;
|
||||||
QtxComboBox* myCBTypes;
|
QtxComboBox* myCBTypes;
|
||||||
std::list<TopoDS_Shape> myShapes;
|
std::list<TopoDS_Shape> myShapes;
|
||||||
GEOM::GEOM_Object_var myMainObj;
|
GEOM::GeomObjPtr myMainObj;
|
||||||
QtxIntSpinBox* myNbIntervals;
|
QtxIntSpinBox* myNbIntervals;
|
||||||
QGroupBox* myScalarRangeBox;
|
QGroupBox* myScalarRangeBox;
|
||||||
QLineEdit* myMin;
|
QLineEdit* myMin;
|
||||||
|
Loading…
Reference in New Issue
Block a user