From 48b83422af7a5230409e39f4f2ece322b199128b Mon Sep 17 00:00:00 2001 From: eap Date: Thu, 29 Nov 2018 17:31:43 +0300 Subject: [PATCH] IMP 23612: EDF 14143 - Compute angle from 3 points --- doc/salome/examples/measurements_ex04.py | 26 ++ doc/salome/examples/tests.set | 2 + doc/salome/gui/SMESH/images/angle_measure.png | Bin 0 -> 25250 bytes doc/salome/gui/SMESH/images/basic_props.png | Bin 13090 -> 21362 bytes doc/salome/gui/SMESH/images/bnd_box.png | Bin 14481 -> 24625 bytes doc/salome/gui/SMESH/images/min_distance.png | Bin 16329 -> 27995 bytes .../input/face_groups_by_sharp_edges.rst | 4 +- .../gui/SMESH/input/grouping_elements.rst | 2 +- doc/salome/gui/SMESH/input/measurements.rst | 13 +- doc/salome/gui/SMESH/input/modules.rst | 3 + .../gui/SMESH/input/tui_measurements.rst | 8 + idl/SMESH_Measurements.idl | 5 + idl/SMESH_Mesh.idl | 2 +- resources/CMakeLists.txt | 1 + resources/mesh_angle_measure.png | Bin 0 -> 360 bytes src/SMESHGUI/SMESHGUI.cxx | 5 + src/SMESHGUI/SMESHGUI_Measurements.cxx | 378 +++++++++++++++++- src/SMESHGUI/SMESHGUI_Measurements.h | 41 +- src/SMESHGUI/SMESHGUI_Operations.h | 1 + src/SMESHGUI/SMESHGUI_VTKUtils.cxx | 2 +- src/SMESHGUI/SMESH_images.ts | 4 + src/SMESHGUI/SMESH_msg_en.ts | 33 +- src/SMESH_I/SMESH_2smeshpy.cxx | 2 +- src/SMESH_I/SMESH_Measurements_i.cxx | 27 ++ src/SMESH_I/SMESH_Measurements_i.hxx | 7 + src/SMESH_SWIG/smeshBuilder.py | 40 +- 26 files changed, 594 insertions(+), 12 deletions(-) create mode 100644 doc/salome/examples/measurements_ex04.py create mode 100644 doc/salome/gui/SMESH/images/angle_measure.png create mode 100644 resources/mesh_angle_measure.png diff --git a/doc/salome/examples/measurements_ex04.py b/doc/salome/examples/measurements_ex04.py new file mode 100644 index 000000000..6524ac97a --- /dev/null +++ b/doc/salome/examples/measurements_ex04.py @@ -0,0 +1,26 @@ +# Angle measurement + + +import salome +salome.salome_init() +from salome.smesh import smeshBuilder +smesh = smeshBuilder.New() + +# use smeshBuilder.GetAngle() to compute angle between 3 arbitrary points + +p0 = [1,0,0] +p1 = [0,0,0] +p2 = [0,1,0] + +a1 = smesh.GetAngle(p0, p1, p2) +print("Right angle measure", a1 ) + +# use Mesh.GetAngle() to compute angle between 3 nodes of a mesh + +mesh = smesh.Mesh() +n0 = mesh.AddNode( *p0 ) +n1 = mesh.AddNode( *p1 ) +n2 = mesh.AddNode( *p2 ) + +a2 = mesh.GetAngle( n0,n1,n2 ) + diff --git a/doc/salome/examples/tests.set b/doc/salome/examples/tests.set index f8940611d..29910eda8 100644 --- a/doc/salome/examples/tests.set +++ b/doc/salome/examples/tests.set @@ -115,6 +115,8 @@ SET(GOOD_TESTS grouping_elements_ex09.py measurements_ex01.py measurements_ex02.py + measurements_ex03.py + measurements_ex04.py modifying_meshes_ex01.py modifying_meshes_ex02.py modifying_meshes_ex03.py diff --git a/doc/salome/gui/SMESH/images/angle_measure.png b/doc/salome/gui/SMESH/images/angle_measure.png new file mode 100644 index 0000000000000000000000000000000000000000..80a2116e3f61ebf37dc82c0bb61ddf26d6fa4393 GIT binary patch literal 25250 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 G+y4UAIMQVR diff --git a/doc/salome/gui/SMESH/images/bnd_box.png b/doc/salome/gui/SMESH/images/bnd_box.png index d079eaaa4b38a970146d8aa085201a8ade3eec78..4c0bbd3e67b057c8956ad386a57daa83838279b5 100644 GIT binary patch literal 24625 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 literal 14481 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 diff --git a/doc/salome/gui/SMESH/images/min_distance.png b/doc/salome/gui/SMESH/images/min_distance.png index 486dab376e386fffbaba4798aa49939daef52d5e..294178f2a2526c05df261acd2a2597bbb1e99cab 100644 GIT binary patch literal 27995 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 b%u?xk0jB-SNJ}Qf`M|Z2L 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 TB;miKA@1LKC{rM1;Pbx#MdG_3 literal 16329 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

cfc+ooVVyj{Bet%K}Q1Nv2!`TNrQL zsJ^=zs0mN}e{FPur0dLS;71aNy zIZ;6tY-VQ0NY%QJx|46-v8)S49mD#~91X@H3nuy3K@Ro0gt128B)-@sCCz_5>FILJ zu77F~OK^})` dialog allows creation of a group of any type: :ref:`Standalone group`, :ref:`Group on geometry ` and :ref:`Group on filter ` using dedicated tabs. * :ref:`Create Groups from Geometry ` dialog allows creation of several groups on geometry at once. -* :doc:`face_groups_by_sharp_edges` operation distributes all faces of the mesh between groups using sharp edges and/or existing 1D elements as group boundaries. +* :doc:`face_groups_by_sharp_edges` operation distributes all faces of the mesh among groups using sharp edges and/or existing 1D elements as group boundaries. * Standalone groups of all nodes and elements of the chosen sub-mesh (type of elements depends on dimension of sub-mesh geometry) can be created using **Mesh -> Construct Group** menu item (available from the context menu as well). * Standalone groups of any element type can be created basing on nodes of other groups - using :ref:`Group based on nodes of other groups ` dialog. * Standalone groups can be created by applying :ref:`Boolean operations ` to other groups. diff --git a/doc/salome/gui/SMESH/input/measurements.rst b/doc/salome/gui/SMESH/input/measurements.rst index ed1426a0a..248ea4f02 100644 --- a/doc/salome/gui/SMESH/input/measurements.rst +++ b/doc/salome/gui/SMESH/input/measurements.rst @@ -84,6 +84,17 @@ The result of calculation will be shown in the bottom area of the dialog. * As calculation result is a sum of lengths, areas and volumes of all mesh elements, the duplication is not taken into account; i.e. all duplicated elements (elements built on the same set of nodes) will be included into the result. * Similarly, intersection of elements is not taken into account. -**See Also** a sample TUI Script of :ref:`tui_measurements_page`. +.. _angle_anchor: + +Angle +##### +This operation measures angle defined by three nodes. The second of the specified nodes is a vertex of angle. +You can specify nodes either by clicking them in the Viewer or by typing their IDs in **Tree nodes** field. If the nodes are correctly specified, upon pressing **Compute** button the angle measure will be displayed and the angle will be shown in the Viewer. + +.. image:: ../images/angle_measure.png + :align: center + + +**See Also** a sample TUI Script of :ref:`tui_measurements_page`. diff --git a/doc/salome/gui/SMESH/input/modules.rst b/doc/salome/gui/SMESH/input/modules.rst index 45494b2a5..6c673f6db 100644 --- a/doc/salome/gui/SMESH/input/modules.rst +++ b/doc/salome/gui/SMESH/input/modules.rst @@ -168,6 +168,7 @@ Creating groups Mesh.MakeGroupByCriterion Mesh.MakeGroupByCriteria Mesh.MakeGroupByFilter + Mesh.FaceGroupsSeparatedByEdges Mesh.GetGroups Mesh.NbGroups Mesh.GetGroupNames @@ -305,6 +306,7 @@ Measurements smeshBuilder.GetLength smeshBuilder.GetArea smeshBuilder.GetVolume + smeshBuilder.GetAngle Mesh.GetFreeBorders Mesh.MinDistance Mesh.GetMinDistance @@ -315,6 +317,7 @@ Measurements Mesh.GetLength Mesh.GetArea Mesh.GetVolume + Mesh.GetAngle **************** Modifying meshes diff --git a/doc/salome/gui/SMESH/input/tui_measurements.rst b/doc/salome/gui/SMESH/input/tui_measurements.rst index b3f596450..a4e056531 100644 --- a/doc/salome/gui/SMESH/input/tui_measurements.rst +++ b/doc/salome/gui/SMESH/input/tui_measurements.rst @@ -33,3 +33,11 @@ Basic Properties :language: python :download:`Download this script <../../../examples/measurements_ex03.py>` + +Angle +===== + +.. literalinclude:: ../../../examples/measurements_ex04.py + :language: python + +:download:`Download this script <../../../examples/measurements_ex04.py>` diff --git a/idl/SMESH_Measurements.idl b/idl/SMESH_Measurements.idl index d3a9c77f4..bf8dc2152 100644 --- a/idl/SMESH_Measurements.idl +++ b/idl/SMESH_Measurements.idl @@ -74,6 +74,11 @@ module SMESH * gravity center of the source */ PointStruct GravityCenter(in SMESH_IDSource source); + + /*! + * angle in radians defined by 3 points <(p1,p2,p3) + */ + double Angle(in PointStruct p1, in PointStruct p2, in PointStruct p3 ); }; }; diff --git a/idl/SMESH_Mesh.idl b/idl/SMESH_Mesh.idl index cb25bb183..c8c7bd786 100644 --- a/idl/SMESH_Mesh.idl +++ b/idl/SMESH_Mesh.idl @@ -517,7 +517,7 @@ module SMESH raises (SALOME::SALOME_Exception); /*! - * Distribute all faces of the mesh between groups using sharp edges and optionally + * Distribute all faces of the mesh among groups using sharp edges and optionally * existing 1D elements as group boundaries. * \param [in] sharpAngle - edge is considered sharp if an angle between normals of * adjacent faces is more than \a sharpAngle in degrees. diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt index 2196b1b8c..638e99c30 100755 --- a/resources/CMakeLists.txt +++ b/resources/CMakeLists.txt @@ -232,6 +232,7 @@ SET(SMESH_RESOURCES_FILES mesh_deflection.png mesh_offset.png mesh_face_groups_by_edges.png + mesh_angle_measure.png ) INSTALL(FILES ${SMESH_RESOURCES_FILES} DESTINATION ${SALOME_SMESH_INSTALL_RES_DATA}) diff --git a/resources/mesh_angle_measure.png b/resources/mesh_angle_measure.png new file mode 100644 index 0000000000000000000000000000000000000000..d77b7451d62753f898f07b657c48e98e3ba4fc48 GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 z0|U1(2s1Lwnj--eWH0gbb!C6VEz2cmt)=!i94I7N;u=xnoS&PUnpeW$T$GwvlA5AW zo>`Ki;O^-g5Z=fq4pel()5S5w;`G(a8@&z($h3Zp?@DNE+RY!}5@UU3ZFTuV3(iOH zo+R(!Xw{qR#jeSb=eN(H-EZz(tM2B=o^D1?&lA3zzRcE_Z!i9LUB&N`=bR;0iQiJC$U9$Ug6CX5gUr+xBoc6qn>O1=a7u}kArN_bA_JGOzJNT*VZp=4V@eJ zdfr*XRg-^;ppCfx$4N-`oPI8lHVnsxURo{JaEH?7g9!n z0f#o3I4-{88SH%{WQyR_zmo(!Qx7d$)DwT~hr{G3=eHq1zcF~a`njxgN@xNANGXhT literal 0 HcmV?d00001 diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 6f4e1d7cb..b4a75cb4d 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -3719,6 +3719,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) case SMESHOp::OpPropertiesVolume: case SMESHOp::OpMinimumDistance: case SMESHOp::OpBoundingBox: + case SMESHOp::OpAngle: { int page = SMESHGUI_MeasureDlg::MinDistance; if ( theCommandID == SMESHOp::OpBoundingBox ) @@ -3729,6 +3730,8 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) page = SMESHGUI_MeasureDlg::Area; else if ( theCommandID == SMESHOp::OpPropertiesVolume ) page = SMESHGUI_MeasureDlg::Volume; + else if ( theCommandID == SMESHOp::OpAngle ) + page = SMESHGUI_MeasureDlg::Angle; EmitSignalDeactivateDialog(); SMESHGUI_MeasureDlg* dlg = new SMESHGUI_MeasureDlg( SMESHGUI::desktop(), page ); @@ -4063,6 +4066,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createSMESHAction( SMESHOp::OpPropertiesLength, "MEASURE_LENGTH", "ICON_MEASURE_LENGTH" ); createSMESHAction( SMESHOp::OpPropertiesArea, "MEASURE_AREA", "ICON_MEASURE_AREA" ); createSMESHAction( SMESHOp::OpPropertiesVolume, "MEASURE_VOLUME", "ICON_MEASURE_VOLUME" ); + createSMESHAction( SMESHOp::OpAngle, "MEASURE_ANGLE", "ICON_MEASURE_ANGLE" ); createSMESHAction( SMESHOp::OpHide, "HIDE", "ICON_HIDE" ); createSMESHAction( SMESHOp::OpShow, "SHOW", "ICON_SHOW" ); @@ -4270,6 +4274,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createMenu( SMESHOp::OpMinimumDistance, measureId, -1 ); createMenu( SMESHOp::OpBoundingBox, measureId, -1 ); + createMenu( SMESHOp::OpAngle, measureId, -1 ); createMenu( SMESHOp::OpPropertiesLength, basicPropId, -1 ); createMenu( SMESHOp::OpPropertiesArea, basicPropId, -1 ); createMenu( SMESHOp::OpPropertiesVolume, basicPropId, -1 ); diff --git a/src/SMESHGUI/SMESHGUI_Measurements.cxx b/src/SMESHGUI/SMESHGUI_Measurements.cxx index 1f1d5aa8a..8e19cddca 100644 --- a/src/SMESHGUI/SMESHGUI_Measurements.cxx +++ b/src/SMESHGUI/SMESHGUI_Measurements.cxx @@ -28,9 +28,13 @@ #include "SMESHGUI.h" #include "SMESHGUI_IdValidator.h" #include "SMESHGUI_Utils.h" +#include "SMESHGUI_MeshEditPreview.h" #include "SMESHGUI_VTKUtils.h" #include +#include #include +#include +#include #include #include @@ -59,6 +63,8 @@ #include #include +#include + #include #include CORBA_SERVER_HEADER(SMESH_MeshEditor) #include CORBA_SERVER_HEADER(SMESH_Measurements) @@ -1312,6 +1318,367 @@ void SMESHGUI_BasicProperties::clear() myResult->clear(); } +/*! + \class SMESHGUI_Angle + \brief Angle measurement widget. + + Widget to calculate angle between 3 nodes. +*/ + +/*! + \brief Constructor. + \param parent parent widget +*/ +SMESHGUI_Angle::SMESHGUI_Angle( QWidget* parent ) + : QWidget( parent ) +{ + // 3 nodes + + QGroupBox* aNodesGrp = new QGroupBox( tr( "NODES_GROUP" ), this ); + myNodes = new QLineEdit( aNodesGrp ); + myNodes->setValidator( new SMESHGUI_IdValidator( this, 3 )); + QHBoxLayout* aNodesLayout = new QHBoxLayout( aNodesGrp ); + aNodesLayout->addWidget( myNodes ); + + // Compute button + QPushButton* aCompute = new QPushButton( tr( "COMPUTE" ), this ); + + // Angle + + QGroupBox* aResultGrp = new QGroupBox( tr( "RESULT" ), this ); + + myResult = new QLineEdit; + myResult->setReadOnly( true ); + + QHBoxLayout* aResultLayout = new QHBoxLayout( aResultGrp ); + aResultLayout->addWidget( myResult ); + + // Layout + + QGridLayout* aMainLayout = new QGridLayout( this ); + aMainLayout->setMargin( MARGIN ); + aMainLayout->setSpacing( SPACING ); + + aMainLayout->addWidget( aNodesGrp, 0, 0, 1, 2 ); + aMainLayout->addWidget( aCompute, 1, 0 ); + aMainLayout->addWidget( aResultGrp, 2, 0, 1, 2 ); + aMainLayout->setColumnStretch( 1, 5 ); + aMainLayout->setRowStretch( 3, 5 ); + + // Connections + connect( aCompute, SIGNAL( clicked() ), this, SLOT( compute() )); + + // preview + myPreview = 0; + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow() ) + { + myPreview = new SMESHGUI_MeshEditPreview( aViewWindow ); + if ( myPreview && myPreview->GetActor() ) + myPreview->GetActor()->GetProperty()->SetLineWidth( 5 ); + } + myActor = 0; +} + +SMESHGUI_Angle::~SMESHGUI_Angle() +{ + if ( myPreview ) + delete myPreview; +} + +/*! + \brief Setup selection mode +*/ +void SMESHGUI_Angle::updateSelection() +{ + LightApp_SelectionMgr* selMgr = SMESHGUI::selectionMgr(); + + disconnect( selMgr, 0, this, 0 ); + selMgr->clearFilters(); + + SMESH::SetPointRepresentation( true ); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow() ) + aViewWindow->SetSelectionMode( NodeSelection ); + + connect( selMgr, SIGNAL( currentSelectionChanged() ), this, SLOT( selectionChanged() )); + connect( myNodes, SIGNAL( textEdited( QString ) ), this, SLOT( nodesEdited() )); + + if ( myPoints.empty() ) + selectionChanged(); +} + +/*! + \brief Called when selection is changed +*/ +void SMESHGUI_Angle::selectionChanged() +{ + clear(); + QString nodesString; + + TColStd_IndexedMapOfInteger idsMap; + SALOME_ListIO selected; + SMESHGUI::selectionMgr()->selectedObjects( selected ); + selected.Reverse(); // to keep order of selection + + SALOME_ListIteratorOfListIO ioIterator( selected ); + for ( ; ioIterator.More(); ioIterator.Next() ) + { + Handle(SALOME_InteractiveObject) IO = ioIterator.Value(); + + idsMap.Clear(); + if ( SVTK_Selector* selector = SMESH::GetViewWindow()->GetSelector() ) + selector->GetIndex( IO, idsMap ); + + if ( SMESH_Actor* actor = SMESH::FindActorByEntry( IO->getEntry() )) + { + myActor = actor; + for ( int i = 1; i <= idsMap.Extent() && myPoints.size() < 3; ++i ) + if ( addPointByActor( idsMap(i) )) + nodesString += QString(" %1").arg( idsMap(i) ); + idsMap.Clear(); + } + SMESH::SMESH_IDSource_var obj = SMESH::IObjectToInterface( IO ); + if ( !CORBA::is_nil( obj ) ) + { + myIDSrc = obj; + for ( int i = 1; i <= idsMap.Extent() && myPoints.size() < 3; ++i ) + if ( addPointByIDSource( idsMap(i) )) + nodesString += QString(" %1").arg( idsMap(i) ); + } + } + + myNodes->setText( nodesString ); +} + +//======================================================================= +//function : clear +//purpose : Erase preview and result +//======================================================================= + +void SMESHGUI_Angle::clear() +{ + myPoints.clear(); + myResult->clear(); + if ( myPreview && myPreview->GetActor()) + { + myPreview->GetActor()->SetVisibility( false ); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow() ) + aViewWindow->Repaint(); + } +} + +//======================================================================= +//function : addPointByActor +//purpose : append to myPoints XYZ got from myActor +//======================================================================= + +bool SMESHGUI_Angle::addPointByActor( int id ) +{ + size_t nbP = myPoints.size(); + + if ( myActor ) + { + TVisualObjPtr obj = myActor->GetObject(); + if ( SMDS_Mesh* mesh = obj->GetMesh() ) + if ( const SMDS_MeshNode* node = mesh->FindNode( id )) + { + SMESH::PointStruct p = { node->X(), node->Y(), node->Z() }; + myPoints.push_back( p ); + } + } + return nbP < myPoints.size(); +} + +//======================================================================= +//function : addPointByIDSource +//purpose : append to myPoints XYZ got from myIDSrc +//======================================================================= + +bool SMESHGUI_Angle::addPointByIDSource( int id ) +{ + size_t nbP = myPoints.size(); + + if ( !myIDSrc->_is_nil() ) + { + SMESH::SMESH_Mesh_var mesh = myIDSrc->GetMesh(); + if ( !mesh->_is_nil() ) + { + SMESH::double_array_var xyz = mesh->GetNodeXYZ( id ); + if ( xyz->length() == 3 ) + { + SMESH::PointStruct p = { xyz[0], xyz[1], xyz[2] }; + myPoints.push_back( p ); + } + } + } + return nbP < myPoints.size(); +} + +//======================================================================= +//function : nodesEdited +//purpose : SLOT called when the user types node IDs +//======================================================================= + +void SMESHGUI_Angle::nodesEdited() +{ + clear(); + + TColStd_MapOfInteger ID; + QStringList ids = myNodes->text().split( " ", QString::SkipEmptyParts ); + foreach ( QString idStr, ids ) + { + int id = idStr.trimmed().toLong(); + if (( !ID.Contains( id )) && + ( addPointByActor( id ) || addPointByIDSource( id ))) + ID.Add( id ); + } + + SVTK_Selector* selector = SMESH::GetViewWindow()->GetSelector(); + if ( myActor && selector ) + { + Handle(SALOME_InteractiveObject) IO = myActor->getIO(); + selector->AddOrRemoveIndex( IO, ID, false ); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow() ) + aViewWindow->highlight( IO, true, true ); + } +} + +//======================================================================= +//function : compute +//purpose : SLOT. Compute angle and show preview +//======================================================================= + +void SMESHGUI_Angle::compute() +{ + if ( myPoints.size() != 3 ) + return; + + // -------------- + // compute angle + // -------------- + + SMESH::Measurements_var measure = SMESHGUI::GetSMESHGen()->CreateMeasurements(); + double radians = measure->Angle( myPoints[0], myPoints[1], myPoints[2] ); + measure->UnRegister(); + if ( radians < 0 ) + return; + + int precision = SMESHGUI::resourceMgr()->integerValue( "SMESH", "length_precision", 6 ); + myResult->setText( QString::number( radians * 180 / M_PI, + precision > 0 ? 'f' : 'g', qAbs( precision ))); + + // ------------- + // show preview + // ------------- + + if ( !myPreview || !myPreview->GetActor() ) + return; + + SMESH::MeshPreviewStruct preveiwData; + + const double anglePerSeg = 5 * M_PI/180; // angle per an arc segment + const double arcRadiusFactor = 0.5; // arc position, from p1 + + gp_Pnt p0 ( myPoints[0].x, myPoints[0].y, myPoints[0].z ); + gp_Pnt p1 ( myPoints[1].x, myPoints[1].y, myPoints[1].z ); + gp_Pnt p2 ( myPoints[2].x, myPoints[2].y, myPoints[2].z ); + gp_Vec vec10( p1, p0 ), vec12( p1, p2 ), norm( vec10 ^ vec12 ); + + if ( norm.Magnitude() <= gp::Resolution() ) // 180 degrees + norm = getNormal( vec10 ); + + double len10 = vec10.Magnitude(); + double len12 = vec12.Magnitude(); + double lenMax = Max( len10, len12 ); + double arcRadius = arcRadiusFactor * lenMax; + + p0 = p1.Translated( lenMax * vec10.Normalized() ); + p2 = p1.Translated( lenMax * vec12.Normalized() ); + + gp_Circ arc( gp_Ax2( p1, norm, vec10 ), arcRadius ); + + int nbRadialSegmensts = ceil( radians / anglePerSeg ) + 1; + int nbNodes = 3 + ( nbRadialSegmensts + 1 ); + + // coordinates + preveiwData.nodesXYZ.length( nbNodes ); + int iP = 0; + for ( ; iP < nbRadialSegmensts + 1; ++iP ) + { + double u = double( iP ) / nbRadialSegmensts * radians; + gp_Pnt p = ElCLib::Value( u, arc ); + preveiwData.nodesXYZ[ iP ].x = p.X(); + preveiwData.nodesXYZ[ iP ].y = p.Y(); + preveiwData.nodesXYZ[ iP ].z = p.Z(); + } + int iP0 = iP; + preveiwData.nodesXYZ[ iP ].x = p0.X(); + preveiwData.nodesXYZ[ iP ].y = p0.Y(); + preveiwData.nodesXYZ[ iP ].z = p0.Z(); + int iP1 = ++iP; + preveiwData.nodesXYZ[ iP ].x = p1.X(); + preveiwData.nodesXYZ[ iP ].y = p1.Y(); + preveiwData.nodesXYZ[ iP ].z = p1.Z(); + int iP2 = ++iP; + preveiwData.nodesXYZ[ iP ].x = p2.X(); + preveiwData.nodesXYZ[ iP ].y = p2.Y(); + preveiwData.nodesXYZ[ iP ].z = p2.Z(); + + // connectivity + preveiwData.elementConnectivities.length( 2 * ( 2 + nbRadialSegmensts )); + for ( int iSeg = 0; iSeg < nbRadialSegmensts; ++iSeg ) + { + preveiwData.elementConnectivities[ iSeg * 2 + 0 ] = iSeg; + preveiwData.elementConnectivities[ iSeg * 2 + 1 ] = iSeg + 1; + } + int iSeg = nbRadialSegmensts; + preveiwData.elementConnectivities[ iSeg * 2 + 0 ] = iP0; + preveiwData.elementConnectivities[ iSeg * 2 + 1 ] = iP1; + ++iSeg; + preveiwData.elementConnectivities[ iSeg * 2 + 0 ] = iP1; + preveiwData.elementConnectivities[ iSeg * 2 + 1 ] = iP2; + + // types + preveiwData.elementTypes.length( 2 + nbRadialSegmensts ); + SMESH::ElementSubType type = { SMESH::EDGE, /*isPoly=*/false, /*nbNodesInElement=*/2 }; + for ( CORBA::ULong i = 0; i < preveiwData.elementTypes.length(); ++i ) + preveiwData.elementTypes[ i ] = type; + + myPreview->SetData( preveiwData ); +} + +//================================================================================ +/*! + * \brief Return normal to a plane of drawing in the case of 180 degrees angle + */ +//================================================================================ + +gp_Vec SMESHGUI_Angle::getNormal(const gp_Vec& vec10 ) +{ + gp_XYZ norm; + + // try to get normal by a face at the 2nd node + if ( myActor && myActor->GetObject()->GetMesh() ) + { + QStringList ids = myNodes->text().split( " ", QString::SkipEmptyParts ); + SMDS_Mesh* mesh = myActor->GetObject()->GetMesh(); + if ( const SMDS_MeshNode* n = mesh->FindNode( ids[1].trimmed().toLong() )) + { + SMDS_ElemIteratorPtr faceIt = n->GetInverseElementIterator( SMDSAbs_Face ); + while ( faceIt->more() ) + if ( SMESH_MeshAlgos::FaceNormal( faceIt->next(), norm )) + return norm; + } + } + int iMinCoord = 1; + if ( vec10.Coord( iMinCoord ) > vec10.Y() ) iMinCoord = 2; + if ( vec10.Coord( iMinCoord ) > vec10.Z() ) iMinCoord = 3; + + gp_Vec vec = vec10; + vec.SetCoord( iMinCoord, vec10.Coord( iMinCoord ) + 1. ); + + return vec ^ vec10; +} + /*! \class SMESHGUI_MeshInfoDlg \brief Centralized dialog box for the measurements @@ -1323,7 +1690,7 @@ void SMESHGUI_BasicProperties::clear() \param page specifies the dialog page to be shown at the start-up */ SMESHGUI_MeasureDlg::SMESHGUI_MeasureDlg( QWidget* parent, int page ) -: QDialog( parent ) + : QDialog( parent ) { setModal( false ); setAttribute( Qt::WA_DeleteOnClose, true ); @@ -1349,6 +1716,9 @@ SMESHGUI_MeasureDlg::SMESHGUI_MeasureDlg( QWidget* parent, int page ) myBasicProps = new SMESHGUI_BasicProperties( myTabWidget ); int aBasicPropInd = myTabWidget->addTab( myBasicProps, resMgr->loadPixmap( "SMESH", tr( "ICON_MEASURE_BASIC_PROPS" ) ), tr( "BASIC_PROPERTIES" ) ); + myAngle = new SMESHGUI_Angle( myTabWidget ); + int aAngleInd = myTabWidget->addTab( myAngle, resMgr->loadPixmap( "SMESH", tr( "ICON_MEASURE_ANGLE" ) ), tr( "ANGLE" ) ); + // buttons QPushButton* okBtn = new QPushButton( tr( "SMESH_BUT_OK" ), this ); okBtn->setAutoDefault( true ); @@ -1376,6 +1746,8 @@ SMESHGUI_MeasureDlg::SMESHGUI_MeasureDlg( QWidget* parent, int page ) anInd = aMinDistInd; } else if ( page == BoundingBox ) { anInd = aBndBoxInd; + } else if ( page == Angle ) { + anInd = aAngleInd; } else if ( page == Length || page == Area || page == Volume ) { myBasicProps->setMode( (SMESHGUI_BasicProperties::Mode)(page - Length) ); anInd = aBasicPropInd; @@ -1444,6 +1816,8 @@ void SMESHGUI_MeasureDlg::updateSelection() myMinDist->updateSelection(); else if ( myTabWidget->currentIndex() == BoundingBox ) myBndBox->updateSelection(); + else if ( myTabWidget->currentWidget() == myAngle ) + myAngle->updateSelection(); else { myBndBox->erasePreview(); myBasicProps->updateSelection(); @@ -1460,6 +1834,8 @@ void SMESHGUI_MeasureDlg::help() aHelpFile = "measurements.html#min-distance-anchor"; } else if ( myTabWidget->currentIndex() == BoundingBox ) { aHelpFile = "measurements.html#bounding-box-anchor"; + } else if ( myTabWidget->currentWidget() == myAngle ) { + aHelpFile = "measurements.html#angle-anchor"; } else { aHelpFile = "measurements.html#basic-properties-anchor"; } diff --git a/src/SMESHGUI/SMESHGUI_Measurements.h b/src/SMESHGUI/SMESHGUI_Measurements.h index cadcf1f55..3d583f06a 100644 --- a/src/SMESHGUI/SMESHGUI_Measurements.h +++ b/src/SMESHGUI/SMESHGUI_Measurements.h @@ -37,10 +37,13 @@ class SUIT_SelectionFilter; class SALOME_Actor; class SMESH_Actor; class SMESHGUI_IdValidator; +class SMESHGUI_MeshEditPreview; #include #include CORBA_SERVER_HEADER(SMESH_Mesh) +#include + class SMESHGUI_EXPORT SMESHGUI_MinDistance : public QWidget { Q_OBJECT; @@ -167,6 +170,40 @@ private: SUIT_SelectionFilter* myFilter; }; +class SMESHGUI_EXPORT SMESHGUI_Angle : public QWidget +{ + Q_OBJECT; + +public: + + SMESHGUI_Angle( QWidget* = 0 ); + ~SMESHGUI_Angle(); + + void deactivate(); + void updateSelection(); + +private slots: + void selectionChanged(); + void nodesEdited(); + void compute(); + void clear(); + +private: + + bool addPointByActor( int id ); + bool addPointByIDSource( int id ); + gp_Vec getNormal(const gp_Vec& vec10 ); + + QLineEdit* myNodes; + QLineEdit* myResult; + + SMESH::SMESH_IDSource_var myIDSrc; + SMESH_Actor* myActor; + + std::vector< SMESH::PointStruct > myPoints; + SMESHGUI_MeshEditPreview* myPreview; +}; + class SMESHGUI_EXPORT SMESHGUI_MeasureDlg : public QDialog { Q_OBJECT; @@ -180,7 +217,8 @@ public: BoundingBox, //!< bounding box Length, //!< length Area, //!< area - Volume //!< volume + Volume, //!< volume + Angle }; SMESHGUI_MeasureDlg( QWidget* = 0, int = MinDistance ); @@ -203,6 +241,7 @@ private: SMESHGUI_MinDistance* myMinDist; SMESHGUI_BoundingBox* myBndBox; SMESHGUI_BasicProperties* myBasicProps; + SMESHGUI_Angle* myAngle; }; #endif // SMESHGUI_MEASUREMENTS_H diff --git a/src/SMESHGUI/SMESHGUI_Operations.h b/src/SMESHGUI/SMESHGUI_Operations.h index b4ccb9d02..97f79382e 100644 --- a/src/SMESHGUI/SMESHGUI_Operations.h +++ b/src/SMESHGUI/SMESHGUI_Operations.h @@ -190,6 +190,7 @@ namespace SMESHOp { OpPropertiesVolume = 5002, // MENU MEASUREMENTS - BASIC PROPERTIES - VOLUME OpMinimumDistance = 5003, // MENU MEASUREMENTS - MINIMUM DISTANCE OpBoundingBox = 5004, // MENU MEASUREMENTS - BOUNDING BOX + OpAngle = 5005, // MENU MEASUREMENTS - ANGLE // Hypothesis ---------------------//-------------------------------- OpEditHypothesis = 6000, // POPUP MENU - EDIT HYPOTHESIS OpUnassign = 6001, // POPUP MENU - UNASSIGN diff --git a/src/SMESHGUI/SMESHGUI_VTKUtils.cxx b/src/SMESHGUI/SMESHGUI_VTKUtils.cxx index b74d29e50..cf0e475d4 100644 --- a/src/SMESHGUI/SMESHGUI_VTKUtils.cxx +++ b/src/SMESHGUI/SMESHGUI_VTKUtils.cxx @@ -923,7 +923,7 @@ namespace SMESH aCollection->InitTraversal(); while ( vtkActor *anAct = aCollection->GetNextActor() ) { if ( SMESH_Actor *anActor = dynamic_cast(anAct) ) { - anActor->UpdateSelectionProps(); + anActor->UpdateSelectionProps(); } } } diff --git a/src/SMESHGUI/SMESH_images.ts b/src/SMESHGUI/SMESH_images.ts index 50b33888f..0a09a43ec 100644 --- a/src/SMESHGUI/SMESH_images.ts +++ b/src/SMESHGUI/SMESH_images.ts @@ -651,6 +651,10 @@ ICON_MEASURE_BND_BOX mesh_bounding_box.png + + ICON_MEASURE_ANGLE + mesh_angle_measure.png + ICON_SHOW mesh_show.png diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index b6f1fa619..209a6bd88 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -848,6 +848,18 @@ TOP_MEASURE_VOLUME Volume + + MEN_MEASURE_ANGLE + Angle + + + STB_MEASURE_ANGLE + Measure angle defined by three nodes + + + TOP_MEASURE_ANGLE + Angle + MEN_MOVE Move Node @@ -3617,7 +3629,7 @@ Use Display Entity menu command to show them. Create groups of entities basing on nodes of other groups - STB_UNDERLYING_ELEMS + STB_FACE_GROUPS_BY_EDGES Create face groups separated by sharp edges @@ -8108,6 +8120,21 @@ as they are of improper type: Compute + + SMESHGUI_Angle + + NODES_GROUP + Three nodes + + + RESULT + Angle in degrees + + + COMPUTE + Compute + + SMESHGUI_CopyMeshDlg @@ -8164,6 +8191,10 @@ with red in the Object Browser. BASIC_PROPERTIES Basic Properties + + ANGLE + Angle + SMESHGUI_BoundingBox diff --git a/src/SMESH_I/SMESH_2smeshpy.cxx b/src/SMESH_I/SMESH_2smeshpy.cxx index cef6517ce..e76d1b343 100644 --- a/src/SMESH_I/SMESH_2smeshpy.cxx +++ b/src/SMESH_I/SMESH_2smeshpy.cxx @@ -2478,7 +2478,7 @@ void _pyMeshEditor::Process( const Handle(_pyCommand)& theCommand) "MergeElements","MergeEqualElements","SewFreeBorders","SewConformFreeBorders", "FindCoincidentFreeBorders", "SewCoincidentFreeBorders", "SewBorderToSide","SewSideElements","ChangeElemNodes","GetLastCreatedNodes", - "GetLastCreatedElems", + "GetLastCreatedElems", "FaceGroupsSeparatedByEdges", "MirrorMakeMesh","MirrorObjectMakeMesh","TranslateMakeMesh","TranslateObjectMakeMesh", "Scale","ScaleMakeMesh","RotateMakeMesh","RotateObjectMakeMesh","MakeBoundaryMesh", "MakeBoundaryElements", "SplitVolumesIntoTetra","SplitHexahedraIntoPrisms", diff --git a/src/SMESH_I/SMESH_Measurements_i.cxx b/src/SMESH_I/SMESH_Measurements_i.cxx index 2fcac5a7f..45f5f0b7f 100644 --- a/src/SMESH_I/SMESH_Measurements_i.cxx +++ b/src/SMESH_I/SMESH_Measurements_i.cxx @@ -346,3 +346,30 @@ SMESH::PointStruct Measurements_i::GravityCenter(SMESH::SMESH_IDSource_ptr theSo return grCenter; } + +//======================================================================= +//function : Angle +//purpose : Return angle in radians defined by 3 points <(p1,p2,p3) +//======================================================================= + +CORBA::Double Measurements_i::Angle(const SMESH::PointStruct& p1, + const SMESH::PointStruct& p2, + const SMESH::PointStruct& p3 ) +{ + gp_Vec v1( p1.x - p2.x, p1.y - p2.y, p1.z - p2.z ); + gp_Vec v2( p3.x - p2.x, p3.y - p2.y, p3.z - p2.z ); + + double angle = -1; + + try + { + angle = v1.Angle( v2 ); + } + catch(...) + { + } + if ( isnan( angle )) + angle = -1; + + return angle; +} diff --git a/src/SMESH_I/SMESH_Measurements_i.hxx b/src/SMESH_I/SMESH_Measurements_i.hxx index bb696eb92..3ba642ca6 100644 --- a/src/SMESH_I/SMESH_Measurements_i.hxx +++ b/src/SMESH_I/SMESH_Measurements_i.hxx @@ -78,6 +78,13 @@ namespace SMESH * gravity center of the source */ SMESH::PointStruct GravityCenter(SMESH::SMESH_IDSource_ptr theSource); + + /*! + * angle in radians defined by 3 points <(p1,p2,p3) + */ + CORBA::Double Angle(const SMESH::PointStruct& p1, + const SMESH::PointStruct& p2, + const SMESH::PointStruct& p3 ); }; } diff --git a/src/SMESH_SWIG/smeshBuilder.py b/src/SMESH_SWIG/smeshBuilder.py index 7037fd2eb..35198fe59 100755 --- a/src/SMESH_SWIG/smeshBuilder.py +++ b/src/SMESH_SWIG/smeshBuilder.py @@ -1443,6 +1443,28 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ): aMeasurements.UnRegister() return pointStruct.x, pointStruct.y, pointStruct.z + def GetAngle(self, p1, p2, p3 ): + """ + Computes a radian measure of an angle defined by 3 points: <(p1,p2,p3) + + Parameters: + p1,p2,p3: coordinates of 3 points defined by either SMESH.PointStruct + or list [x,y,z] + + Returns: + Angle in radians + """ + if isinstance( p1, list ): p1 = PointStruct(*p1) + if isinstance( p2, list ): p2 = PointStruct(*p2) + if isinstance( p3, list ): p3 = PointStruct(*p3) + + aMeasurements = self.CreateMeasurements() + angle = aMeasurements.Angle(p1,p2,p3) + aMeasurements.UnRegister() + + return angle + + pass # end of class smeshBuilder import omniORB @@ -2887,7 +2909,7 @@ class Mesh(metaclass = MeshMeta): def FaceGroupsSeparatedByEdges( self, sharpAngle, createEdges=False, useExistingEdges=False ): """ - Distribute all faces of the mesh between groups using sharp edges and optionally + Distribute all faces of the mesh among groups using sharp edges and optionally existing 1D elements as group boundaries. Parameters: @@ -2896,7 +2918,7 @@ class Mesh(metaclass = MeshMeta): createEdges (boolean): to create 1D elements for detected sharp edges. useExistingEdges (boolean): to use existing edges as group boundaries Returns: - ListOfGroups - the created groups + ListOfGroups - the created :class:`groups ` """ sharpAngle,Parameters,hasVars = ParseParameters( sharpAngle ) self.mesh.SetParameters(Parameters) @@ -6826,6 +6848,20 @@ class Mesh(metaclass = MeshMeta): volume = self.FunctorValue(SMESH.FT_Volume3D, elemId) return volume + def GetAngle(self, node1, node2, node3 ): + """ + Computes a radian measure of an angle defined by 3 nodes: <(node1,node2,node3) + + Parameters: + node1,node2,node3: IDs of the three nodes + + Returns: + Angle in radians + """ + return self.smeshpyD.GetAngle( self.GetNodeXYZ( node1 ), + self.GetNodeXYZ( node2 ), + self.GetNodeXYZ( node3 )) + def GetMaxElementLength(self, elemId): """ Get maximum element length. -- 2.39.2