mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-14 10:40:34 +05:00
0020943: EDF 1463 SMESH: additional fonctionnality to the feature 20749
+ class BareBorderVolume: public Predicate + class BareBorderFace: public Predicate
This commit is contained in:
parent
8a18df0d9a
commit
3b2ddf07cc
BIN
doc/salome/gui/SMESH/images/bare_border_faces_smpl.png
Normal file
BIN
doc/salome/gui/SMESH/images/bare_border_faces_smpl.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.9 KiB |
BIN
doc/salome/gui/SMESH/images/bare_border_volumes_smpl.png
Normal file
BIN
doc/salome/gui/SMESH/images/bare_border_volumes_smpl.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.4 KiB |
@ -32,6 +32,7 @@ Edge quality controls:
|
|||||||
Face quality controls:
|
Face quality controls:
|
||||||
<ul>
|
<ul>
|
||||||
<li>\subpage free_faces_page "Free faces"</li>
|
<li>\subpage free_faces_page "Free faces"</li>
|
||||||
|
<li>\subpage bare_border_faces_page "Bare border faces"</li>
|
||||||
<li>\subpage length_2d_page "Length 2D"</li>
|
<li>\subpage length_2d_page "Length 2D"</li>
|
||||||
<li>\subpage borders_at_multi_connection_2d_page "Borders at multi-connection 2D"</li>
|
<li>\subpage borders_at_multi_connection_2d_page "Borders at multi-connection 2D"</li>
|
||||||
<li>\subpage area_page "Area"</li>
|
<li>\subpage area_page "Area"</li>
|
||||||
@ -48,6 +49,7 @@ Volume quality controls:
|
|||||||
<li>\subpage aspect_ratio_3d_page "Aspect ratio 3D"</li>
|
<li>\subpage aspect_ratio_3d_page "Aspect ratio 3D"</li>
|
||||||
<li>\subpage volume_page "Volume"</li>
|
<li>\subpage volume_page "Volume"</li>
|
||||||
<li>\subpage max_element_length_3d_page "Max element length 3D"</li>
|
<li>\subpage max_element_length_3d_page "Max element length 3D"</li>
|
||||||
|
<li>\subpage bare_border_volumes_page "Bare border volumes"</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
15
doc/salome/gui/SMESH/input/bare_border_face.doc
Normal file
15
doc/salome/gui/SMESH/input/bare_border_face.doc
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/*!
|
||||||
|
|
||||||
|
\page bare_border_faces_page Bare border faces
|
||||||
|
|
||||||
|
This mesh quality control highlights the faces having the border not
|
||||||
|
shared with other faces (free border) and missing an edge based on
|
||||||
|
nodes of the free border. The faces with bare border are shown with a
|
||||||
|
color different from the color of shared faces.
|
||||||
|
|
||||||
|
\image html bare_border_faces_smpl.png
|
||||||
|
|
||||||
|
\sa A sample TUI Script making a group of faces highlighted in the
|
||||||
|
picture is \ref tui_bare_border_faces "Bare border faces Control".
|
||||||
|
|
||||||
|
*/
|
15
doc/salome/gui/SMESH/input/bare_border_volumes.doc
Normal file
15
doc/salome/gui/SMESH/input/bare_border_volumes.doc
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/*!
|
||||||
|
|
||||||
|
\page bare_border_volumes_page Bare border volumes
|
||||||
|
|
||||||
|
This mesh quality control highlights the volumes having the border not
|
||||||
|
shared with other volumes (free border) and missing a face based on
|
||||||
|
nodes of the free border. The volumes with bare border are shown with a
|
||||||
|
color different from the color of shared volumes.
|
||||||
|
|
||||||
|
\image html bare_border_volumes_smpl.png
|
||||||
|
|
||||||
|
\sa A sample TUI Script making a group of volumes highlighted in the
|
||||||
|
picture is \ref tui_bare_border_volumes "Bare border volumes Control".
|
||||||
|
|
||||||
|
*/
|
@ -144,7 +144,10 @@ Additional criteria to select mesh <b>Faces</b> are the following:
|
|||||||
one element of mesh only. See also a
|
one element of mesh only. See also a
|
||||||
\ref free_edges_page "Free Edges quality control".
|
\ref free_edges_page "Free Edges quality control".
|
||||||
</li><li>
|
</li><li>
|
||||||
<b>Free faces</b> selects 3D mesh elements wich belong to less than two volumes.
|
<b>Free faces</b> selects 2D mesh elements wich belong to less than two volumes.
|
||||||
|
</li><li>
|
||||||
|
<b>Faces with bare border</b> selects 2D mesh elements having a free border without an edge on it.
|
||||||
|
See also \ref bare_border_faces_page "Bare border faces quality control".
|
||||||
</li><li>
|
</li><li>
|
||||||
<b>Borders at Multi-Connections 2D</b> selects cells consisting of edges belonging to
|
<b>Borders at Multi-Connections 2D</b> selects cells consisting of edges belonging to
|
||||||
several elements of mesh. The number of mesh elements should be more, less or equal
|
several elements of mesh. The number of mesh elements should be more, less or equal
|
||||||
@ -181,6 +184,9 @@ diagonals with a value of length, which is more, less or equal
|
|||||||
</li><li>
|
</li><li>
|
||||||
<b>Bad oriented volume</b> selects mesh volumes, which are incorrectly oriented from
|
<b>Bad oriented volume</b> selects mesh volumes, which are incorrectly oriented from
|
||||||
the point of view of MED convention.
|
the point of view of MED convention.
|
||||||
|
</li><li>
|
||||||
|
<b>Volumes with bare border</b> selects 3D mesh elements having a free border without a face on it.
|
||||||
|
See also \ref bare_border_volumes_page "Bare border volumes quality control".
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
@ -309,6 +309,54 @@ aGroup.Add(aFaceIds)
|
|||||||
salome.sg.updateObjBrowser(1)
|
salome.sg.updateObjBrowser(1)
|
||||||
\endcode
|
\endcode
|
||||||
|
|
||||||
|
\section tui_bare_border_faces Bare border faces
|
||||||
|
|
||||||
|
\code
|
||||||
|
from smesh import *
|
||||||
|
SetCurrentStudy(salome.myStudy)
|
||||||
|
|
||||||
|
box = geompy.MakeBoxDXDYDZ(100, 100, 100)
|
||||||
|
geompy.addToStudy( box, "box" )
|
||||||
|
|
||||||
|
mesh = smesh.Mesh(box)
|
||||||
|
mesh.Segment().NumberOfSegments(3)
|
||||||
|
mesh.Quadrangle()
|
||||||
|
mesh.Compute()
|
||||||
|
|
||||||
|
# remove 2 faces
|
||||||
|
allFaces = mesh.GetElementsByType(FACE)
|
||||||
|
mesh.RemoveElements( allFaces[0:2])
|
||||||
|
|
||||||
|
bareGroup = mesh.MakeGroup("bare faces", FACE, FT_BareBorderFace)
|
||||||
|
assert(bareGroup.Size() == 3)
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
\section tui_bare_border_volumes Bare border volumes
|
||||||
|
|
||||||
|
\code
|
||||||
|
from smesh import *
|
||||||
|
SetCurrentStudy(salome.myStudy)
|
||||||
|
|
||||||
|
box = geompy.MakeBoxDXDYDZ(100, 30, 10)
|
||||||
|
# the smallest face of the box
|
||||||
|
face = geompy.SubShapeAllSorted( box, geompy.ShapeType["FACE"])[0]
|
||||||
|
|
||||||
|
geompy.addToStudy( box, "box" )
|
||||||
|
geompy.addToStudyInFather( box, face, "face" )
|
||||||
|
|
||||||
|
mesh = Mesh(box)
|
||||||
|
mesh.AutomaticHexahedralization();
|
||||||
|
|
||||||
|
# remove half of mesh faces from the smallest face
|
||||||
|
faceFaces = mesh.GetSubMeshElementsId(face)
|
||||||
|
faceToRemove = faceFaces[: len(faceFaces)/2]
|
||||||
|
mesh.RemoveElements( faceToRemove )
|
||||||
|
|
||||||
|
# make a group of volumes missing the removed faces
|
||||||
|
bareGroup = mesh.MakeGroup("bare volumes", VOLUME, FT_BareBorderVolume)
|
||||||
|
assert(bareGroup.Size() == len( faceToRemove))
|
||||||
|
\endcode
|
||||||
|
|
||||||
\section tui_length_2d Length 2D
|
\section tui_length_2d Length 2D
|
||||||
|
|
||||||
\code
|
\code
|
||||||
|
@ -64,6 +64,8 @@ module SMESH
|
|||||||
FT_LyingOnGeom,
|
FT_LyingOnGeom,
|
||||||
FT_RangeOfIds,
|
FT_RangeOfIds,
|
||||||
FT_BadOrientedVolume,
|
FT_BadOrientedVolume,
|
||||||
|
FT_BareBorderVolume,
|
||||||
|
FT_BareBorderFace,
|
||||||
FT_LinearOrQuadratic,
|
FT_LinearOrQuadratic,
|
||||||
FT_GroupColor,
|
FT_GroupColor,
|
||||||
FT_ElemGeomType,
|
FT_ElemGeomType,
|
||||||
@ -87,6 +89,7 @@ module SMESH
|
|||||||
};
|
};
|
||||||
typedef sequence<HistogramRectangle> Histogram;
|
typedef sequence<HistogramRectangle> Histogram;
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Base interface for all functors ( i.e. numerical functors and predicates )
|
* Base interface for all functors ( i.e. numerical functors and predicates )
|
||||||
*/
|
*/
|
||||||
@ -97,8 +100,6 @@ module SMESH
|
|||||||
ElementType GetElementType();
|
ElementType GetElementType();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Numerical functors are intended for calculating value by Id of mesh entity
|
* Numerical functors are intended for calculating value by Id of mesh entity
|
||||||
*/
|
*/
|
||||||
@ -149,6 +150,7 @@ module SMESH
|
|||||||
Values GetValues();
|
Values GetValues();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Predicates are intended for verification of criteria,
|
* Predicates are intended for verification of criteria,
|
||||||
* must return bool value by mesh id
|
* must return bool value by mesh id
|
||||||
@ -165,6 +167,18 @@ module SMESH
|
|||||||
*/
|
*/
|
||||||
interface BadOrientedVolume: Predicate {};
|
interface BadOrientedVolume: Predicate {};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Logical functor (predicate) "Volumes with bare border" and "Faces with bare border".
|
||||||
|
* Verify whether a mesh volume has a free facet without a mesh face on it
|
||||||
|
*/
|
||||||
|
interface BareBorderVolume: Predicate {};
|
||||||
|
/*!
|
||||||
|
* Logical functor (predicate) "Faces with bare border".
|
||||||
|
* Verify whether a mesh face has a side not shared with another face
|
||||||
|
* and without a mesh edge on it
|
||||||
|
*/
|
||||||
|
interface BareBorderFace: Predicate {};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Logical functor (predicate) "Belong To Geometry".
|
* Logical functor (predicate) "Belong To Geometry".
|
||||||
* Verify whether mesh element or node belong to pointed Geom Object
|
* Verify whether mesh element or node belong to pointed Geom Object
|
||||||
@ -492,6 +506,8 @@ module SMESH
|
|||||||
RangeOfIds CreateRangeOfIds();
|
RangeOfIds CreateRangeOfIds();
|
||||||
|
|
||||||
BadOrientedVolume CreateBadOrientedVolume();
|
BadOrientedVolume CreateBadOrientedVolume();
|
||||||
|
BareBorderVolume CreateBareBorderVolume();
|
||||||
|
BareBorderFace CreateBareBorderFace();
|
||||||
LinearOrQuadratic CreateLinearOrQuadratic();
|
LinearOrQuadratic CreateLinearOrQuadratic();
|
||||||
|
|
||||||
GroupColor CreateGroupColor();
|
GroupColor CreateGroupColor();
|
||||||
|
@ -102,6 +102,8 @@ dist_salomeres_DATA = \
|
|||||||
mesh_vertex_n.png \
|
mesh_vertex_n.png \
|
||||||
mesh_vertex.png \
|
mesh_vertex.png \
|
||||||
mesh_volume_3d.png \
|
mesh_volume_3d.png \
|
||||||
|
bare_border_volume.png \
|
||||||
|
bare_border_face.png \
|
||||||
mesh_wireframe.png \
|
mesh_wireframe.png \
|
||||||
mesh_points.png \
|
mesh_points.png \
|
||||||
mesh_wrap.png \
|
mesh_wrap.png \
|
||||||
|
BIN
resources/bare_border_face.png
Normal file
BIN
resources/bare_border_face.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
BIN
resources/bare_border_volume.png
Normal file
BIN
resources/bare_border_volume.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
@ -199,6 +199,25 @@ SMESH_ActorDef::SMESH_ActorDef()
|
|||||||
aFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID);
|
aFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID);
|
||||||
aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
|
aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
|
||||||
|
|
||||||
|
my3DExtActor = SMESH_DeviceActor::New();
|
||||||
|
my3DExtActor->SetUserMatrix(aMatrix);
|
||||||
|
my3DExtActor->PickableOff();
|
||||||
|
my3DExtActor->SetProperty(my2DExtProp);
|
||||||
|
my3DExtActor->SetBackfaceProperty(my2DExtProp);
|
||||||
|
my3DExtActor->SetRepresentation(SMESH_DeviceActor::eSurface);
|
||||||
|
aFilter = my3DExtActor->GetExtractUnstructuredGrid();
|
||||||
|
aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
|
||||||
|
aFilter->RegisterCellsWithType(VTK_TETRA);
|
||||||
|
aFilter->RegisterCellsWithType(VTK_VOXEL);
|
||||||
|
aFilter->RegisterCellsWithType(VTK_HEXAHEDRON);
|
||||||
|
aFilter->RegisterCellsWithType(VTK_WEDGE);
|
||||||
|
aFilter->RegisterCellsWithType(VTK_PYRAMID);
|
||||||
|
aFilter->RegisterCellsWithType(VTK_QUADRATIC_TETRA);
|
||||||
|
aFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON);
|
||||||
|
aFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE);
|
||||||
|
aFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID);
|
||||||
|
aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
|
||||||
|
|
||||||
//Definition 1D device of the actor
|
//Definition 1D device of the actor
|
||||||
//---------------------------------
|
//---------------------------------
|
||||||
myEdgeProp = vtkProperty::New();
|
myEdgeProp = vtkProperty::New();
|
||||||
@ -532,6 +551,7 @@ SMESH_ActorDef::~SMESH_ActorDef()
|
|||||||
my2DExtProp->Delete();
|
my2DExtProp->Delete();
|
||||||
my2DExtActor->Delete();
|
my2DExtActor->Delete();
|
||||||
my3DActor->Delete();
|
my3DActor->Delete();
|
||||||
|
my3DExtActor->Delete();
|
||||||
|
|
||||||
myNodeActor->Delete();
|
myNodeActor->Delete();
|
||||||
myBaseActor->Delete();
|
myBaseActor->Delete();
|
||||||
@ -723,8 +743,8 @@ SetControlMode(eControl theMode,
|
|||||||
|
|
||||||
bool anIsScalarVisible = theMode > eNone;
|
bool anIsScalarVisible = theMode > eNone;
|
||||||
|
|
||||||
if(anIsScalarVisible){
|
if(anIsScalarVisible) {
|
||||||
switch(theMode){
|
switch(theMode) {
|
||||||
case eLength:
|
case eLength:
|
||||||
{
|
{
|
||||||
SMESH::Controls::Length* aControl = new SMESH::Controls::Length();
|
SMESH::Controls::Length* aControl = new SMESH::Controls::Length();
|
||||||
@ -755,6 +775,10 @@ SetControlMode(eControl theMode,
|
|||||||
myFunctor.reset(new SMESH::Controls::FreeFaces());
|
myFunctor.reset(new SMESH::Controls::FreeFaces());
|
||||||
myControlActor = my2DActor;
|
myControlActor = my2DActor;
|
||||||
break;
|
break;
|
||||||
|
case eBareBorderFace:
|
||||||
|
myFunctor.reset(new SMESH::Controls::BareBorderFace());
|
||||||
|
myControlActor = my2DActor;
|
||||||
|
break;
|
||||||
case eMultiConnection:
|
case eMultiConnection:
|
||||||
myFunctor.reset(new SMESH::Controls::MultiConnection());
|
myFunctor.reset(new SMESH::Controls::MultiConnection());
|
||||||
myControlActor = my1DActor;
|
myControlActor = my1DActor;
|
||||||
@ -819,6 +843,12 @@ SetControlMode(eControl theMode,
|
|||||||
myControlActor = my3DActor;
|
myControlActor = my3DActor;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case eBareBorderVolume:
|
||||||
|
{
|
||||||
|
myFunctor.reset(new SMESH::Controls::BareBorderVolume());
|
||||||
|
myControlActor = my3DActor;
|
||||||
|
break;
|
||||||
|
}
|
||||||
case eMinimumAngle:
|
case eMinimumAngle:
|
||||||
{
|
{
|
||||||
SMESH::Controls::MinimumAngle* aControl = new SMESH::Controls::MinimumAngle();
|
SMESH::Controls::MinimumAngle* aControl = new SMESH::Controls::MinimumAngle();
|
||||||
@ -862,6 +892,12 @@ SetControlMode(eControl theMode,
|
|||||||
case eFreeFaces:
|
case eFreeFaces:
|
||||||
my2DExtActor->SetExtControlMode(myFunctor);
|
my2DExtActor->SetExtControlMode(myFunctor);
|
||||||
break;
|
break;
|
||||||
|
case eBareBorderFace:
|
||||||
|
my2DExtActor->SetExtControlMode(myFunctor);
|
||||||
|
break;
|
||||||
|
case eBareBorderVolume:
|
||||||
|
my3DExtActor->SetExtControlMode(myFunctor);
|
||||||
|
break;
|
||||||
case eLength2D:
|
case eLength2D:
|
||||||
case eMultiConnection2D:
|
case eMultiConnection2D:
|
||||||
my1DExtActor->SetExtControlMode(myFunctor,myScalarBarActor,myLookupTable);
|
my1DExtActor->SetExtControlMode(myFunctor,myScalarBarActor,myLookupTable);
|
||||||
@ -911,6 +947,7 @@ void SMESH_ActorDef::AddToRender(vtkRenderer* theRenderer){
|
|||||||
theRenderer->AddActor(myNodeExtActor);
|
theRenderer->AddActor(myNodeExtActor);
|
||||||
|
|
||||||
my3DActor->AddToRender(theRenderer);
|
my3DActor->AddToRender(theRenderer);
|
||||||
|
my3DExtActor->AddToRender(theRenderer);
|
||||||
my2DActor->AddToRender(theRenderer);
|
my2DActor->AddToRender(theRenderer);
|
||||||
my2DExtActor->AddToRender(theRenderer);
|
my2DExtActor->AddToRender(theRenderer);
|
||||||
|
|
||||||
@ -954,6 +991,7 @@ void SMESH_ActorDef::RemoveFromRender(vtkRenderer* theRenderer){
|
|||||||
my2DActor->RemoveFromRender(theRenderer);
|
my2DActor->RemoveFromRender(theRenderer);
|
||||||
my2DExtActor->RemoveFromRender(theRenderer);
|
my2DExtActor->RemoveFromRender(theRenderer);
|
||||||
my3DActor->RemoveFromRender(theRenderer);
|
my3DActor->RemoveFromRender(theRenderer);
|
||||||
|
my3DExtActor->RemoveFromRender(theRenderer);
|
||||||
|
|
||||||
theRenderer->RemoveActor(myScalarBarActor);
|
theRenderer->RemoveActor(myScalarBarActor);
|
||||||
theRenderer->RemoveActor(myPointLabels);
|
theRenderer->RemoveActor(myPointLabels);
|
||||||
@ -989,6 +1027,7 @@ bool SMESH_ActorDef::Init(TVisualObjPtr theVisualObj,
|
|||||||
my2DActor->Init(myVisualObj,myImplicitBoolean);
|
my2DActor->Init(myVisualObj,myImplicitBoolean);
|
||||||
my2DExtActor->Init(myVisualObj,myImplicitBoolean);
|
my2DExtActor->Init(myVisualObj,myImplicitBoolean);
|
||||||
my3DActor->Init(myVisualObj,myImplicitBoolean);
|
my3DActor->Init(myVisualObj,myImplicitBoolean);
|
||||||
|
my3DExtActor->Init(myVisualObj,myImplicitBoolean);
|
||||||
|
|
||||||
my0DActor->GetMapper()->SetLookupTable(myLookupTable);
|
my0DActor->GetMapper()->SetLookupTable(myLookupTable);
|
||||||
//my0DExtActor->GetMapper()->SetLookupTable(myLookupTable);
|
//my0DExtActor->GetMapper()->SetLookupTable(myLookupTable);
|
||||||
@ -999,6 +1038,7 @@ bool SMESH_ActorDef::Init(TVisualObjPtr theVisualObj,
|
|||||||
my2DActor->GetMapper()->SetLookupTable(myLookupTable);
|
my2DActor->GetMapper()->SetLookupTable(myLookupTable);
|
||||||
my2DExtActor->GetMapper()->SetLookupTable(myLookupTable);
|
my2DExtActor->GetMapper()->SetLookupTable(myLookupTable);
|
||||||
my3DActor->GetMapper()->SetLookupTable(myLookupTable);
|
my3DActor->GetMapper()->SetLookupTable(myLookupTable);
|
||||||
|
my3DExtActor->GetMapper()->SetLookupTable(myLookupTable);
|
||||||
|
|
||||||
vtkFloatingPointType aFactor, aUnits;
|
vtkFloatingPointType aFactor, aUnits;
|
||||||
my2DActor->GetPolygonOffsetParameters(aFactor,aUnits);
|
my2DActor->GetPolygonOffsetParameters(aFactor,aUnits);
|
||||||
@ -1071,6 +1111,7 @@ void SMESH_ActorDef::SetTransform(VTKViewer_Transform* theTransform){
|
|||||||
my2DActor->SetTransform(theTransform);
|
my2DActor->SetTransform(theTransform);
|
||||||
my2DExtActor->SetTransform(theTransform);
|
my2DExtActor->SetTransform(theTransform);
|
||||||
my3DActor->SetTransform(theTransform);
|
my3DActor->SetTransform(theTransform);
|
||||||
|
my3DExtActor->SetTransform(theTransform);
|
||||||
|
|
||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
@ -1126,6 +1167,7 @@ void SMESH_ActorDef::SetShrinkFactor(vtkFloatingPointType theValue){
|
|||||||
my2DActor->SetShrinkFactor(theValue);
|
my2DActor->SetShrinkFactor(theValue);
|
||||||
my2DExtActor->SetShrinkFactor(theValue);
|
my2DExtActor->SetShrinkFactor(theValue);
|
||||||
my3DActor->SetShrinkFactor(theValue);
|
my3DActor->SetShrinkFactor(theValue);
|
||||||
|
my3DExtActor->SetShrinkFactor(theValue);
|
||||||
|
|
||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
@ -1141,6 +1183,7 @@ void SMESH_ActorDef::SetShrink(){
|
|||||||
my2DActor->SetShrink();
|
my2DActor->SetShrink();
|
||||||
my2DExtActor->SetShrink();
|
my2DExtActor->SetShrink();
|
||||||
my3DActor->SetShrink();
|
my3DActor->SetShrink();
|
||||||
|
my3DExtActor->SetShrink();
|
||||||
|
|
||||||
myIsShrunk = true;
|
myIsShrunk = true;
|
||||||
Modified();
|
Modified();
|
||||||
@ -1157,6 +1200,7 @@ void SMESH_ActorDef::UnShrink(){
|
|||||||
my2DActor->UnShrink();
|
my2DActor->UnShrink();
|
||||||
my2DExtActor->UnShrink();
|
my2DExtActor->UnShrink();
|
||||||
my3DActor->UnShrink();
|
my3DActor->UnShrink();
|
||||||
|
my3DExtActor->UnShrink();
|
||||||
|
|
||||||
myIsShrunk = false;
|
myIsShrunk = false;
|
||||||
Modified();
|
Modified();
|
||||||
@ -1203,6 +1247,7 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){
|
|||||||
my2DActor->VisibilityOff();
|
my2DActor->VisibilityOff();
|
||||||
my2DExtActor->VisibilityOff();
|
my2DExtActor->VisibilityOff();
|
||||||
my3DActor->VisibilityOff();
|
my3DActor->VisibilityOff();
|
||||||
|
my3DExtActor->VisibilityOff();
|
||||||
|
|
||||||
myScalarBarActor->VisibilityOff();
|
myScalarBarActor->VisibilityOff();
|
||||||
myPointLabels->VisibilityOff();
|
myPointLabels->VisibilityOff();
|
||||||
@ -1222,8 +1267,12 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){
|
|||||||
my1DExtActor->VisibilityOn();
|
my1DExtActor->VisibilityOn();
|
||||||
break;
|
break;
|
||||||
case eFreeFaces:
|
case eFreeFaces:
|
||||||
|
case eBareBorderFace:
|
||||||
my2DExtActor->VisibilityOn();
|
my2DExtActor->VisibilityOn();
|
||||||
break;
|
break;
|
||||||
|
case eBareBorderVolume:
|
||||||
|
my3DExtActor->VisibilityOn();
|
||||||
|
break;
|
||||||
case eLength2D:
|
case eLength2D:
|
||||||
case eMultiConnection2D:
|
case eMultiConnection2D:
|
||||||
my1DExtActor->VisibilityOn();
|
my1DExtActor->VisibilityOn();
|
||||||
@ -1456,6 +1505,7 @@ void SMESH_ActorDef::SetRepresentation (int theMode)
|
|||||||
//my0DExtActor->SetVisibility(false);
|
//my0DExtActor->SetVisibility(false);
|
||||||
my1DExtActor->SetVisibility(false);
|
my1DExtActor->SetVisibility(false);
|
||||||
my2DExtActor->SetVisibility(false);
|
my2DExtActor->SetVisibility(false);
|
||||||
|
my3DExtActor->SetVisibility(false);
|
||||||
|
|
||||||
// ???
|
// ???
|
||||||
//my0DActor->SetProperty(aProp);
|
//my0DActor->SetProperty(aProp);
|
||||||
@ -1786,6 +1836,7 @@ SMESH_ActorDef::SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed)
|
|||||||
my2DActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
my2DActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
||||||
my2DExtActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
my2DExtActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
||||||
my3DActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
my3DActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
||||||
|
my3DExtActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkIdType
|
vtkIdType
|
||||||
|
@ -123,7 +123,7 @@ class SMESHOBJECT_EXPORT SMESH_Actor: public SALOME_Actor
|
|||||||
enum eControl{eNone, eLength, eLength2D, eFreeBorders, eFreeEdges, eFreeNodes,
|
enum eControl{eNone, eLength, eLength2D, eFreeBorders, eFreeEdges, eFreeNodes,
|
||||||
eFreeFaces, eMultiConnection, eArea, eTaper, eAspectRatio,
|
eFreeFaces, eMultiConnection, eArea, eTaper, eAspectRatio,
|
||||||
eMinimumAngle, eWarping, eSkew, eAspectRatio3D, eMultiConnection2D, eVolume3D,
|
eMinimumAngle, eWarping, eSkew, eAspectRatio3D, eMultiConnection2D, eVolume3D,
|
||||||
eMaxElementLength2D, eMaxElementLength3D};
|
eMaxElementLength2D, eMaxElementLength3D, eBareBorderFace, eBareBorderVolume};
|
||||||
virtual void SetControlMode(eControl theMode) = 0;
|
virtual void SetControlMode(eControl theMode) = 0;
|
||||||
virtual eControl GetControlMode() = 0;
|
virtual eControl GetControlMode() = 0;
|
||||||
virtual SMESH::Controls::FunctorPtr GetFunctor() = 0;
|
virtual SMESH::Controls::FunctorPtr GetFunctor() = 0;
|
||||||
|
@ -234,6 +234,7 @@ class SMESH_ActorDef : public SMESH_Actor
|
|||||||
SMESH_DeviceActor* my2DActor;
|
SMESH_DeviceActor* my2DActor;
|
||||||
SMESH_DeviceActor* my2DExtActor;
|
SMESH_DeviceActor* my2DExtActor;
|
||||||
SMESH_DeviceActor* my3DActor;
|
SMESH_DeviceActor* my3DActor;
|
||||||
|
SMESH_DeviceActor* my3DExtActor;
|
||||||
SMESH_DeviceActor* myControlActor;
|
SMESH_DeviceActor* myControlActor;
|
||||||
|
|
||||||
vtkProperty* myNodeExtProp;
|
vtkProperty* myNodeExtProp;
|
||||||
|
@ -501,7 +501,10 @@ SMESH_DeviceActor
|
|||||||
|
|
||||||
using namespace SMESH::Controls;
|
using namespace SMESH::Controls;
|
||||||
if ( dynamic_cast<FreeBorders*>(theFunctor.get()) ||
|
if ( dynamic_cast<FreeBorders*>(theFunctor.get()) ||
|
||||||
dynamic_cast<FreeFaces*>(theFunctor.get()) ) {
|
dynamic_cast<FreeFaces*>(theFunctor.get()) ||
|
||||||
|
dynamic_cast<BareBorderVolume*>(theFunctor.get())||
|
||||||
|
dynamic_cast<BareBorderFace*>(theFunctor.get()))
|
||||||
|
{
|
||||||
Predicate* aFreePredicate = dynamic_cast<Predicate*>(theFunctor.get());
|
Predicate* aFreePredicate = dynamic_cast<Predicate*>(theFunctor.get());
|
||||||
myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
|
myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
|
||||||
vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
|
vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
|
||||||
@ -514,7 +517,9 @@ SMESH_DeviceActor
|
|||||||
if(!myExtractUnstructuredGrid->IsCellsRegistered())
|
if(!myExtractUnstructuredGrid->IsCellsRegistered())
|
||||||
myExtractUnstructuredGrid->RegisterCell(-1);
|
myExtractUnstructuredGrid->RegisterCell(-1);
|
||||||
SetUnstructuredGrid(myVisualObj->GetUnstructuredGrid());
|
SetUnstructuredGrid(myVisualObj->GetUnstructuredGrid());
|
||||||
}else if(FreeEdges* aFreeEdges = dynamic_cast<FreeEdges*>(theFunctor.get())){
|
}
|
||||||
|
else if(FreeEdges* aFreeEdges = dynamic_cast<FreeEdges*>(theFunctor.get()))
|
||||||
|
{
|
||||||
SMESH::Controls::FreeEdges::TBorders aBorders;
|
SMESH::Controls::FreeEdges::TBorders aBorders;
|
||||||
aFreeEdges->GetBoreders(aBorders);
|
aFreeEdges->GetBoreders(aBorders);
|
||||||
vtkUnstructuredGrid* aDataSet = vtkUnstructuredGrid::New();
|
vtkUnstructuredGrid* aDataSet = vtkUnstructuredGrid::New();
|
||||||
@ -561,7 +566,9 @@ SMESH_DeviceActor
|
|||||||
|
|
||||||
SetUnstructuredGrid(aDataSet);
|
SetUnstructuredGrid(aDataSet);
|
||||||
aDataSet->Delete();
|
aDataSet->Delete();
|
||||||
}else if(FreeNodes* aFreeNodes = dynamic_cast<FreeNodes*>(theFunctor.get())){
|
}
|
||||||
|
else if(FreeNodes* aFreeNodes = dynamic_cast<FreeNodes*>(theFunctor.get()))
|
||||||
|
{
|
||||||
myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
|
myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
|
||||||
vtkIdType aNbNodes = myVisualObj->GetNbEntities(SMDSAbs_Node);
|
vtkIdType aNbNodes = myVisualObj->GetNbEntities(SMDSAbs_Node);
|
||||||
for( vtkIdType i = 0; i < aNbNodes; i++ ){
|
for( vtkIdType i = 0; i < aNbNodes; i++ ){
|
||||||
|
@ -757,6 +757,10 @@
|
|||||||
type = QObject::tr( "FREE_BORDERS" );
|
type = QObject::tr( "FREE_BORDERS" );
|
||||||
else if ( dynamic_cast< SMESH::Controls::FreeFaces* >( f.get() ) )
|
else if ( dynamic_cast< SMESH::Controls::FreeFaces* >( f.get() ) )
|
||||||
type = QObject::tr( "FREE_FACES" );
|
type = QObject::tr( "FREE_FACES" );
|
||||||
|
else if ( dynamic_cast< SMESH::Controls::BareBorderVolume* >( f.get() ) )
|
||||||
|
type = QObject::tr( "BARE_BORDER_VOLUME" );
|
||||||
|
else if ( dynamic_cast< SMESH::Controls::BareBorderFace* >( f.get() ) )
|
||||||
|
type = QObject::tr( "BARE_BORDER_FACE" );
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1176,6 +1180,12 @@
|
|||||||
case 6023:
|
case 6023:
|
||||||
aControl = SMESH_Actor::eMaxElementLength3D;
|
aControl = SMESH_Actor::eMaxElementLength3D;
|
||||||
break;
|
break;
|
||||||
|
case 6024:
|
||||||
|
aControl = SMESH_Actor::eBareBorderVolume;
|
||||||
|
break;
|
||||||
|
case 6025:
|
||||||
|
aControl = SMESH_Actor::eBareBorderFace;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
anActor->SetControlMode(aControl);
|
anActor->SetControlMode(aControl);
|
||||||
anActor->GetScalarBarActor()->SetTitle( functorToString( anActor->GetFunctor() ).toLatin1().constData() );
|
anActor->GetScalarBarActor()->SetTitle( functorToString( anActor->GetFunctor() ).toLatin1().constData() );
|
||||||
@ -2951,6 +2961,8 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
|
|||||||
case 6021:
|
case 6021:
|
||||||
case 6022:
|
case 6022:
|
||||||
case 6023:
|
case 6023:
|
||||||
|
case 6024:
|
||||||
|
case 6025:
|
||||||
if ( vtkwnd ) {
|
if ( vtkwnd ) {
|
||||||
|
|
||||||
LightApp_SelectionMgr* mgr = selectionMgr();
|
LightApp_SelectionMgr* mgr = selectionMgr();
|
||||||
@ -3192,6 +3204,8 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
createSMESHAction( 6021, "FREE_FACES", "ICON_FREE_FACES", 0, true );
|
createSMESHAction( 6021, "FREE_FACES", "ICON_FREE_FACES", 0, true );
|
||||||
createSMESHAction( 6022, "MAX_ELEMENT_LENGTH_2D", "ICON_MAX_ELEMENT_LENGTH_2D", 0, true );
|
createSMESHAction( 6022, "MAX_ELEMENT_LENGTH_2D", "ICON_MAX_ELEMENT_LENGTH_2D", 0, true );
|
||||||
createSMESHAction( 6023, "MAX_ELEMENT_LENGTH_3D", "ICON_MAX_ELEMENT_LENGTH_3D", 0, true );
|
createSMESHAction( 6023, "MAX_ELEMENT_LENGTH_3D", "ICON_MAX_ELEMENT_LENGTH_3D", 0, true );
|
||||||
|
createSMESHAction( 6024, "BARE_BORDER_VOLUME","ICON_BARE_BORDER_VOLUME", 0, true );
|
||||||
|
createSMESHAction( 6025, "BARE_BORDER_FACE","ICON_BARE_BORDER_FACE", 0, true );
|
||||||
createSMESHAction( 6003, "FREE_BORDER", "ICON_FREE_EDGE_2D", 0, true );
|
createSMESHAction( 6003, "FREE_BORDER", "ICON_FREE_EDGE_2D", 0, true );
|
||||||
createSMESHAction( 6004, "CONNECTION", "ICON_CONNECTION", 0, true );
|
createSMESHAction( 6004, "CONNECTION", "ICON_CONNECTION", 0, true );
|
||||||
createSMESHAction( 6005, "FREE_NODE", "ICON_FREE_NODE", 0, true );
|
createSMESHAction( 6005, "FREE_NODE", "ICON_FREE_NODE", 0, true );
|
||||||
@ -3363,6 +3377,7 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
createMenu( 6001, edgeId, -1 );
|
createMenu( 6001, edgeId, -1 );
|
||||||
createMenu( 6004, edgeId, -1 );
|
createMenu( 6004, edgeId, -1 );
|
||||||
createMenu( 6021, faceId, -1 );
|
createMenu( 6021, faceId, -1 );
|
||||||
|
createMenu( 6025, faceId, -1 );
|
||||||
createMenu( 6018, faceId, -1 );
|
createMenu( 6018, faceId, -1 );
|
||||||
createMenu( 6019, faceId, -1 );
|
createMenu( 6019, faceId, -1 );
|
||||||
createMenu( 6011, faceId, -1 );
|
createMenu( 6011, faceId, -1 );
|
||||||
@ -3375,6 +3390,7 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
createMenu( 6017, volumeId, -1 );
|
createMenu( 6017, volumeId, -1 );
|
||||||
createMenu( 6009, volumeId, -1 );
|
createMenu( 6009, volumeId, -1 );
|
||||||
createMenu( 6023, volumeId, -1 );
|
createMenu( 6023, volumeId, -1 );
|
||||||
|
createMenu( 6024, volumeId, -1 );
|
||||||
|
|
||||||
createMenu( 4000, addId, -1 );
|
createMenu( 4000, addId, -1 );
|
||||||
createMenu( 4009, addId, -1 );
|
createMenu( 4009, addId, -1 );
|
||||||
@ -3468,6 +3484,7 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
createTool( 6004, ctrlTb );
|
createTool( 6004, ctrlTb );
|
||||||
createTool( separator(), ctrlTb );
|
createTool( separator(), ctrlTb );
|
||||||
createTool( 6021, ctrlTb );
|
createTool( 6021, ctrlTb );
|
||||||
|
createTool( 6025, ctrlTb );
|
||||||
createTool( 6018, ctrlTb );
|
createTool( 6018, ctrlTb );
|
||||||
createTool( 6019, ctrlTb );
|
createTool( 6019, ctrlTb );
|
||||||
createTool( 6011, ctrlTb );
|
createTool( 6011, ctrlTb );
|
||||||
@ -3481,6 +3498,7 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
createTool( 6017, ctrlTb );
|
createTool( 6017, ctrlTb );
|
||||||
createTool( 6009, ctrlTb );
|
createTool( 6009, ctrlTb );
|
||||||
createTool( 6023, ctrlTb );
|
createTool( 6023, ctrlTb );
|
||||||
|
createTool( 6024, ctrlTb );
|
||||||
createTool( separator(), ctrlTb );
|
createTool( separator(), ctrlTb );
|
||||||
|
|
||||||
createTool( 4000, addRemTb );
|
createTool( 4000, addRemTb );
|
||||||
@ -3783,50 +3801,54 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
|
|
||||||
aSubId = popupMgr()->insert( tr( "MEN_FACE_CTRL" ), anId, -1 ); // FACE CONTROLS
|
aSubId = popupMgr()->insert( tr( "MEN_FACE_CTRL" ), anId, -1 ); // FACE CONTROLS
|
||||||
|
|
||||||
popupMgr()->insert( action( 6021 ), aSubId, -1 ); // FREE_FACE
|
popupMgr()->insert ( action( 6021 ), aSubId, -1 ); // FREE_FACE
|
||||||
popupMgr()->setRule( action( 6021 ), aMeshInVtkHasFaces /*aMeshInVtkHasVolumes*/,
|
popupMgr()->setRule( action( 6021 ), aMeshInVtkHasFaces /*aMeshInVtkHasVolumes*/,
|
||||||
QtxPopupMgr::VisibleRule );
|
QtxPopupMgr::VisibleRule );
|
||||||
popupMgr()->setRule( action( 6021 ), "controlMode = 'eFreeFaces'", QtxPopupMgr::ToggleRule );
|
popupMgr()->setRule( action( 6021 ), "controlMode = 'eFreeFaces'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
popupMgr()->insert( action( 6018 ), aSubId, -1 ); // LENGTH_2D
|
popupMgr()->insert ( action( 6018 ), aSubId, -1 ); // LENGTH_2D
|
||||||
popupMgr()->setRule( action( 6018 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
popupMgr()->setRule( action( 6018 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
||||||
popupMgr()->setRule( action( 6018 ), "controlMode = 'eLength2D'", QtxPopupMgr::ToggleRule );
|
popupMgr()->setRule( action( 6018 ), "controlMode = 'eLength2D'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
popupMgr()->insert( action( 6019 ), aSubId, -1 ); // CONNECTION_2D
|
popupMgr()->insert ( action( 6019 ), aSubId, -1 ); // CONNECTION_2D
|
||||||
popupMgr()->setRule( action( 6019 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
popupMgr()->setRule( action( 6019 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
||||||
popupMgr()->setRule( action( 6019 ), "controlMode = 'eMultiConnection2D'", QtxPopupMgr::ToggleRule );
|
popupMgr()->setRule( action( 6019 ), "controlMode = 'eMultiConnection2D'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
popupMgr()->insert( action( 6011 ), aSubId, -1 ); // AREA
|
popupMgr()->insert ( action( 6011 ), aSubId, -1 ); // AREA
|
||||||
popupMgr()->setRule( action( 6011 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
popupMgr()->setRule( action( 6011 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
||||||
popupMgr()->setRule( action( 6011 ), "controlMode = 'eArea'", QtxPopupMgr::ToggleRule );
|
popupMgr()->setRule( action( 6011 ), "controlMode = 'eArea'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
popupMgr()->insert( action( 6012 ), aSubId, -1 ); // TAPER
|
popupMgr()->insert ( action( 6012 ), aSubId, -1 ); // TAPER
|
||||||
popupMgr()->setRule( action( 6012 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
popupMgr()->setRule( action( 6012 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
||||||
popupMgr()->setRule( action( 6012 ), "controlMode = 'eTaper'", QtxPopupMgr::ToggleRule );
|
popupMgr()->setRule( action( 6012 ), "controlMode = 'eTaper'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
popupMgr()->insert( action( 6013 ), aSubId, -1 ); // ASPECT
|
popupMgr()->insert ( action( 6013 ), aSubId, -1 ); // ASPECT
|
||||||
popupMgr()->setRule( action( 6013 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
popupMgr()->setRule( action( 6013 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
||||||
popupMgr()->setRule( action( 6013 ), "controlMode = 'eAspectRatio'", QtxPopupMgr::ToggleRule );
|
popupMgr()->setRule( action( 6013 ), "controlMode = 'eAspectRatio'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
popupMgr()->insert( action( 6014 ), aSubId, -1 ); // MIN_ANG
|
popupMgr()->insert ( action( 6014 ), aSubId, -1 ); // MIN_ANG
|
||||||
popupMgr()->setRule( action( 6014 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
popupMgr()->setRule( action( 6014 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
||||||
popupMgr()->setRule( action( 6014 ), "controlMode = 'eMinimumAngle'", QtxPopupMgr::ToggleRule );
|
popupMgr()->setRule( action( 6014 ), "controlMode = 'eMinimumAngle'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
popupMgr()->insert( action( 6015 ), aSubId, -1 ); // WARP
|
popupMgr()->insert ( action( 6015 ), aSubId, -1 ); // WARP
|
||||||
popupMgr()->setRule( action( 6015 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
popupMgr()->setRule( action( 6015 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
||||||
popupMgr()->setRule( action( 6015 ), "controlMode = 'eWarping'", QtxPopupMgr::ToggleRule );
|
popupMgr()->setRule( action( 6015 ), "controlMode = 'eWarping'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
popupMgr()->insert( action( 6016 ), aSubId, -1 ); // SKEW
|
popupMgr()->insert ( action( 6016 ), aSubId, -1 ); // SKEW
|
||||||
popupMgr()->setRule( action( 6016 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
popupMgr()->setRule( action( 6016 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
||||||
popupMgr()->setRule( action( 6016 ), "controlMode = 'eSkew'", QtxPopupMgr::ToggleRule );
|
popupMgr()->setRule( action( 6016 ), "controlMode = 'eSkew'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
popupMgr()->insert( action( 6022 ), aSubId, -1 ); // MAX_ELEMENT_LENGTH_2D
|
popupMgr()->insert ( action( 6022 ), aSubId, -1 ); // MAX_ELEMENT_LENGTH_2D
|
||||||
popupMgr()->setRule( action( 6022 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
popupMgr()->setRule( action( 6022 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
||||||
popupMgr()->setRule( action( 6022 ), "controlMode = 'eMaxElementLength2D'", QtxPopupMgr::ToggleRule );
|
popupMgr()->setRule( action( 6022 ), "controlMode = 'eMaxElementLength2D'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
|
popupMgr()->insert ( action( 6025 ), aSubId, -1 ); // BARE_BORDER_FACE
|
||||||
|
popupMgr()->setRule( action( 6025 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
|
||||||
|
popupMgr()->setRule( action( 6025 ), "controlMode = 'eBareBorderFace'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
aSubId = popupMgr()->insert( tr( "MEN_VOLUME_CTRL" ), anId, -1 ); // VOLUME CONTROLS
|
aSubId = popupMgr()->insert( tr( "MEN_VOLUME_CTRL" ), anId, -1 ); // VOLUME CONTROLS
|
||||||
|
|
||||||
popupMgr()->insert( action( 6017 ), aSubId, -1 ); // ASPECT_3D
|
popupMgr()->insert ( action( 6017 ), aSubId, -1 ); // ASPECT_3D
|
||||||
popupMgr()->setRule( action( 6017 ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
|
popupMgr()->setRule( action( 6017 ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
|
||||||
popupMgr()->setRule( action( 6017 ), "controlMode = 'eAspectRatio3D'", QtxPopupMgr::ToggleRule );
|
popupMgr()->setRule( action( 6017 ), "controlMode = 'eAspectRatio3D'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
@ -3834,10 +3856,14 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
popupMgr()->setRule( action( 6009 ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
|
popupMgr()->setRule( action( 6009 ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
|
||||||
popupMgr()->setRule( action( 6009 ), "controlMode = 'eVolume3D'", QtxPopupMgr::ToggleRule );
|
popupMgr()->setRule( action( 6009 ), "controlMode = 'eVolume3D'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
popupMgr()->insert( action( 6023 ), aSubId, -1 ); // MAX_ELEMENT_LENGTH_3D
|
popupMgr()->insert ( action( 6023 ), aSubId, -1 ); // MAX_ELEMENT_LENGTH_3D
|
||||||
popupMgr()->setRule( action( 6023 ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
|
popupMgr()->setRule( action( 6023 ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
|
||||||
popupMgr()->setRule( action( 6023 ), "controlMode = 'eMaxElementLength3D'", QtxPopupMgr::ToggleRule );
|
popupMgr()->setRule( action( 6023 ), "controlMode = 'eMaxElementLength3D'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
|
popupMgr()->insert ( action( 6024 ), aSubId, -1 ); // BARE_BORDER_VOLUME
|
||||||
|
popupMgr()->setRule( action( 6024 ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
|
||||||
|
popupMgr()->setRule( action( 6024 ), "controlMode = 'eBareBorderVolume'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
popupMgr()->insert( separator(), anId, -1 );
|
popupMgr()->insert( separator(), anId, -1 );
|
||||||
|
|
||||||
popupMgr()->insert( action( 201 ), anId, -1 ); // SCALAR_BAR_PROP
|
popupMgr()->insert( action( 201 ), anId, -1 ); // SCALAR_BAR_PROP
|
||||||
|
@ -1170,6 +1170,8 @@ void SMESHGUI_FilterTable::SetCriterion (const int theRow,
|
|||||||
theCriterion.Type != SMESH::FT_FreeNodes &&
|
theCriterion.Type != SMESH::FT_FreeNodes &&
|
||||||
theCriterion.Type != SMESH::FT_FreeFaces &&
|
theCriterion.Type != SMESH::FT_FreeFaces &&
|
||||||
theCriterion.Type != SMESH::FT_BadOrientedVolume &&
|
theCriterion.Type != SMESH::FT_BadOrientedVolume &&
|
||||||
|
theCriterion.Type != SMESH::FT_BareBorderFace &&
|
||||||
|
theCriterion.Type != SMESH::FT_BareBorderVolume &&
|
||||||
theCriterion.Type != SMESH::FT_LinearOrQuadratic)
|
theCriterion.Type != SMESH::FT_LinearOrQuadratic)
|
||||||
aTable->item( theRow, 2 )->setText(QString("%1").arg(theCriterion.Threshold, 0, 'g', 15));
|
aTable->item( theRow, 2 )->setText(QString("%1").arg(theCriterion.Threshold, 0, 'g', 15));
|
||||||
else
|
else
|
||||||
@ -1324,11 +1326,13 @@ void SMESHGUI_FilterTable::updateAdditionalWidget()
|
|||||||
|
|
||||||
ComboItem* anItem = ((ComboItem*)aTable->item(aRow, 0));
|
ComboItem* anItem = ((ComboItem*)aTable->item(aRow, 0));
|
||||||
int aCriterion = GetCriterionType(aRow);
|
int aCriterion = GetCriterionType(aRow);
|
||||||
bool toEnable = ((ComboItem*)aTable->item(aRow, 1))->value() == SMESH::FT_EqualTo &&
|
bool toEnable = (((ComboItem*)aTable->item(aRow, 1))->value() == SMESH::FT_EqualTo &&
|
||||||
aCriterion != SMESH::FT_RangeOfIds &&
|
aCriterion != SMESH::FT_RangeOfIds &&
|
||||||
aCriterion != SMESH::FT_FreeEdges &&
|
aCriterion != SMESH::FT_FreeEdges &&
|
||||||
aCriterion != SMESH::FT_FreeFaces &&
|
aCriterion != SMESH::FT_FreeFaces &&
|
||||||
aCriterion != SMESH::FT_BadOrientedVolume;
|
aCriterion != SMESH::FT_BadOrientedVolume &&
|
||||||
|
aCriterion != SMESH::FT_BareBorderFace &&
|
||||||
|
aCriterion != SMESH::FT_BareBorderVolume);
|
||||||
|
|
||||||
if (!myAddWidgets.contains(anItem))
|
if (!myAddWidgets.contains(anItem))
|
||||||
{
|
{
|
||||||
@ -1504,9 +1508,11 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con
|
|||||||
|
|
||||||
if (aType == SMESH::NODE && aCriterionType == SMESH::FT_FreeNodes ||
|
if (aType == SMESH::NODE && aCriterionType == SMESH::FT_FreeNodes ||
|
||||||
aType == SMESH::EDGE && aCriterionType == SMESH::FT_FreeBorders ||
|
aType == SMESH::EDGE && aCriterionType == SMESH::FT_FreeBorders ||
|
||||||
aType == SMESH::FACE && (aCriterionType == SMESH::FT_FreeEdges ||
|
aType == SMESH::FACE && (aCriterionType == SMESH::FT_BareBorderFace ||
|
||||||
|
aCriterionType == SMESH::FT_FreeEdges ||
|
||||||
aCriterionType == SMESH::FT_FreeFaces) ||
|
aCriterionType == SMESH::FT_FreeFaces) ||
|
||||||
aType == SMESH::VOLUME && aCriterionType == SMESH::FT_BadOrientedVolume ||
|
aType == SMESH::VOLUME && (aCriterionType == SMESH::FT_BadOrientedVolume ||
|
||||||
|
aCriterionType == SMESH::FT_BareBorderVolume) ||
|
||||||
aCriterionType == SMESH::FT_LinearOrQuadratic ||
|
aCriterionType == SMESH::FT_LinearOrQuadratic ||
|
||||||
aCriterionType == SMESH::FT_GroupColor ||
|
aCriterionType == SMESH::FT_GroupColor ||
|
||||||
aCriterionType == SMESH::FT_ElemGeomType)
|
aCriterionType == SMESH::FT_ElemGeomType)
|
||||||
@ -1789,6 +1795,7 @@ const QMap<int, QString>& SMESHGUI_FilterTable::getCriteria (const int theType)
|
|||||||
aCriteria[ SMESH::FT_Length2D ] = tr("LENGTH2D");
|
aCriteria[ SMESH::FT_Length2D ] = tr("LENGTH2D");
|
||||||
aCriteria[ SMESH::FT_MultiConnection2D ] = tr("MULTI2D_BORDERS");
|
aCriteria[ SMESH::FT_MultiConnection2D ] = tr("MULTI2D_BORDERS");
|
||||||
aCriteria[ SMESH::FT_FreeFaces ] = tr("FREE_FACES");
|
aCriteria[ SMESH::FT_FreeFaces ] = tr("FREE_FACES");
|
||||||
|
aCriteria[ SMESH::FT_BareBorderFace ] = tr("BARE_BORDER_FACE");
|
||||||
aCriteria[ SMESH::FT_LinearOrQuadratic ] = tr("LINEAR");
|
aCriteria[ SMESH::FT_LinearOrQuadratic ] = tr("LINEAR");
|
||||||
aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR");
|
aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR");
|
||||||
aCriteria[ SMESH::FT_ElemGeomType ] = tr("GEOM_TYPE");
|
aCriteria[ SMESH::FT_ElemGeomType ] = tr("GEOM_TYPE");
|
||||||
@ -1805,6 +1812,7 @@ const QMap<int, QString>& SMESHGUI_FilterTable::getCriteria (const int theType)
|
|||||||
aCriteria[ SMESH::FT_BelongToGeom ] = tr("BELONG_TO_GEOM");
|
aCriteria[ SMESH::FT_BelongToGeom ] = tr("BELONG_TO_GEOM");
|
||||||
aCriteria[ SMESH::FT_LyingOnGeom ] = tr("LYING_ON_GEOM");
|
aCriteria[ SMESH::FT_LyingOnGeom ] = tr("LYING_ON_GEOM");
|
||||||
aCriteria[ SMESH::FT_BadOrientedVolume ] = tr("BAD_ORIENTED_VOLUME");
|
aCriteria[ SMESH::FT_BadOrientedVolume ] = tr("BAD_ORIENTED_VOLUME");
|
||||||
|
aCriteria[ SMESH::FT_BareBorderVolume ] = tr("BARE_BORDER_VOLUME");
|
||||||
aCriteria[ SMESH::FT_Volume3D ] = tr("VOLUME_3D");
|
aCriteria[ SMESH::FT_Volume3D ] = tr("VOLUME_3D");
|
||||||
aCriteria[ SMESH::FT_MaxElementLength3D ] = tr("MAX_ELEMENT_LENGTH_3D");
|
aCriteria[ SMESH::FT_MaxElementLength3D ] = tr("MAX_ELEMENT_LENGTH_3D");
|
||||||
aCriteria[ SMESH::FT_LinearOrQuadratic ] = tr("LINEAR");
|
aCriteria[ SMESH::FT_LinearOrQuadratic ] = tr("LINEAR");
|
||||||
|
@ -457,6 +457,14 @@
|
|||||||
<source>ICON_VOLUME_3D</source>
|
<source>ICON_VOLUME_3D</source>
|
||||||
<translation>mesh_volume_3d.png</translation>
|
<translation>mesh_volume_3d.png</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_BARE_BORDER_VOLUME</source>
|
||||||
|
<translation>bare_border_volume.png</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_BARE_BORDER_FACE</source>
|
||||||
|
<translation>bare_border_face.png</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>ICON_WARP</source>
|
<source>ICON_WARP</source>
|
||||||
<translation>mesh_wrap.png</translation>
|
<translation>mesh_wrap.png</translation>
|
||||||
|
@ -391,6 +391,14 @@
|
|||||||
<source>TOP_FIND_ELEM</source>
|
<source>TOP_FIND_ELEM</source>
|
||||||
<translation>Find Element by Point</translation>
|
<translation>Find Element by Point</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>MEN_BARE_BORDER_VOLUME</source>
|
||||||
|
<translation>Volumes with bare border</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>MEN_BARE_BORDER_FACE</source>
|
||||||
|
<translation>Faces with bare border</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>MEN_FREE_BORDER</source>
|
<source>MEN_FREE_BORDER</source>
|
||||||
<translation>Free Borders</translation>
|
<translation>Free Borders</translation>
|
||||||
@ -2424,6 +2432,14 @@ Consider saving your work before application crash</translation>
|
|||||||
<source>STB_FACES</source>
|
<source>STB_FACES</source>
|
||||||
<translation>Faces</translation>
|
<translation>Faces</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STB_BARE_BORDER_VOLUME</source>
|
||||||
|
<translation>Volumes with bare border</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STB_BARE_BORDER_FACE</source>
|
||||||
|
<translation>Faces with bare border</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>STB_FREE_BORDER</source>
|
<source>STB_FREE_BORDER</source>
|
||||||
<translation>Free Borders</translation>
|
<translation>Free Borders</translation>
|
||||||
@ -2960,6 +2976,14 @@ Consider saving your work before application crash</translation>
|
|||||||
<source>TOP_FACES</source>
|
<source>TOP_FACES</source>
|
||||||
<translation>Faces</translation>
|
<translation>Faces</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>TOP_BARE_BORDER_VOLUME</source>
|
||||||
|
<translation>Volumes with bare border</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>TOP_BARE_BORDER_FACE</source>
|
||||||
|
<translation>Faces with bare border</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>TOP_FREE_BORDER</source>
|
<source>TOP_FREE_BORDER</source>
|
||||||
<translation>Free Borders</translation>
|
<translation>Free Borders</translation>
|
||||||
@ -4299,6 +4323,14 @@ Please check input data and try again</translation>
|
|||||||
<source>BAD_ORIENTED_VOLUME</source>
|
<source>BAD_ORIENTED_VOLUME</source>
|
||||||
<translation>Bad oriented volume</translation>
|
<translation>Bad oriented volume</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>BARE_BORDER_VOLUME</source>
|
||||||
|
<translation>Volumes with bare border</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>BARE_BORDER_FACE</source>
|
||||||
|
<translation>Faces with bare border</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>BELONG_TO_CYLINDER</source>
|
<source>BELONG_TO_CYLINDER</source>
|
||||||
<translation>Belong to Cylinder</translation>
|
<translation>Belong to Cylinder</translation>
|
||||||
|
@ -120,6 +120,7 @@ namespace // INTERNAL STUFF
|
|||||||
enum _ListenerDataType
|
enum _ListenerDataType
|
||||||
{
|
{
|
||||||
WAIT_HYP_MODIF=1, // data indicating awaiting for valid parameters of src hyp
|
WAIT_HYP_MODIF=1, // data indicating awaiting for valid parameters of src hyp
|
||||||
|
LISTEN_SRC_MESH, // data storing submesh depending on source mesh state
|
||||||
SRC_HYP // data storing ImportSource hyp
|
SRC_HYP // data storing ImportSource hyp
|
||||||
};
|
};
|
||||||
//================================================================================
|
//================================================================================
|
||||||
@ -130,10 +131,10 @@ namespace // INTERNAL STUFF
|
|||||||
struct _ListenerData : public SMESH_subMeshEventListenerData
|
struct _ListenerData : public SMESH_subMeshEventListenerData
|
||||||
{
|
{
|
||||||
const StdMeshers_ImportSource1D* _srcHyp;
|
const StdMeshers_ImportSource1D* _srcHyp;
|
||||||
_ListenerData(const StdMeshers_ImportSource1D* h):
|
_ListenerData(const StdMeshers_ImportSource1D* h, _ListenerDataType type=SRC_HYP):
|
||||||
SMESH_subMeshEventListenerData(/*isDeletable=*/true), _srcHyp(h)
|
SMESH_subMeshEventListenerData(/*isDeletable=*/true), _srcHyp(h)
|
||||||
{
|
{
|
||||||
myType = SRC_HYP;
|
myType = type;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
//================================================================================
|
//================================================================================
|
||||||
@ -246,10 +247,9 @@ namespace // INTERNAL STUFF
|
|||||||
// set a listener to hear events of the source mesh
|
// set a listener to hear events of the source mesh
|
||||||
SMESH_subMesh* smToNotify = importSub;
|
SMESH_subMesh* smToNotify = importSub;
|
||||||
SMESH_subMesh* smToListen = srcMesh->GetSubMeshContaining(1);
|
SMESH_subMesh* smToListen = srcMesh->GetSubMeshContaining(1);
|
||||||
importSub->SetEventListener
|
SMESH_subMeshEventListenerData* data = new _ListenerData(srcHyp, LISTEN_SRC_MESH);
|
||||||
( new SMESH_subMeshEventListener(/*isDeletable=*/true),
|
data->mySubMeshes.push_back( smToNotify );
|
||||||
SMESH_subMeshEventListenerData::MakeData( smToNotify ),
|
importSub->SetEventListener( get(), data, smToListen );
|
||||||
smToListen );
|
|
||||||
|
|
||||||
// remeber the submesh
|
// remeber the submesh
|
||||||
_ImportData* iData = _Listener::getImportData( srcMesh, importSub->GetFather());
|
_ImportData* iData = _Listener::getImportData( srcMesh, importSub->GetFather());
|
||||||
@ -320,6 +320,12 @@ namespace // INTERNAL STUFF
|
|||||||
bool copyMesh = !d->_copyMeshSubM.empty();
|
bool copyMesh = !d->_copyMeshSubM.empty();
|
||||||
if ( copyMesh )
|
if ( copyMesh )
|
||||||
{
|
{
|
||||||
|
// remove imported mesh and groups
|
||||||
|
d->removeImportedMesh( sm->GetFather()->GetMeshDS() );
|
||||||
|
|
||||||
|
if ( data )
|
||||||
|
d->removeGroups( sm, data->_srcHyp );
|
||||||
|
|
||||||
// clear submeshes
|
// clear submeshes
|
||||||
if ( !d->_computedSubM.empty() )
|
if ( !d->_computedSubM.empty() )
|
||||||
{
|
{
|
||||||
@ -335,11 +341,10 @@ namespace // INTERNAL STUFF
|
|||||||
subM->ComputeStateEngine( SMESH_subMesh::CLEAN );
|
subM->ComputeStateEngine( SMESH_subMesh::CLEAN );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// remove imported mesh and groups
|
}
|
||||||
d->removeImportedMesh( sm->GetFather()->GetMeshDS() );
|
else
|
||||||
|
{
|
||||||
if ( data )
|
sm->ComputeStateEngine( SMESH_subMesh::CLEAN );
|
||||||
d->removeGroups( sm, data->_srcHyp );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( data )
|
if ( data )
|
||||||
@ -360,6 +365,7 @@ namespace // INTERNAL STUFF
|
|||||||
{
|
{
|
||||||
if ( data && data->myType == WAIT_HYP_MODIF )
|
if ( data && data->myType == WAIT_HYP_MODIF )
|
||||||
{
|
{
|
||||||
|
// event of Import submesh
|
||||||
if ( SMESH_subMesh::MODIF_HYP == event &&
|
if ( SMESH_subMesh::MODIF_HYP == event &&
|
||||||
SMESH_subMesh::ALGO_EVENT == eventType )
|
SMESH_subMesh::ALGO_EVENT == eventType )
|
||||||
{
|
{
|
||||||
@ -368,13 +374,39 @@ namespace // INTERNAL STUFF
|
|||||||
algo->SetEventListener( subMesh );
|
algo->SetEventListener( subMesh );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else if ( data && data->myType == LISTEN_SRC_MESH )
|
||||||
{
|
{
|
||||||
SMESH_Gen* gen = subMesh->GetFather()->GetGen();
|
// event of source mesh
|
||||||
SMESH_Algo* algo = gen->GetAlgo(*subMesh->GetFather(),subMesh->GetSubShape() );
|
if ( SMESH_subMesh::COMPUTE_EVENT == eventType )
|
||||||
|
{
|
||||||
|
switch ( event ) {
|
||||||
|
case SMESH_subMesh::CLEAN:
|
||||||
|
clearSubmesh( data->mySubMeshes.front(), (_ListenerData*) data );
|
||||||
|
break;
|
||||||
|
case SMESH_subMesh::COMPUTE:
|
||||||
|
if ( subMesh->GetComputeState() == SMESH_subMesh::COMPUTE_OK )
|
||||||
|
data->mySubMeshes.front()->ComputeStateEngine( SMESH_subMesh::SUBMESH_COMPUTED );
|
||||||
|
break;
|
||||||
|
default:;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else // event of Import submesh
|
||||||
|
{
|
||||||
|
bool removeImport = false;
|
||||||
|
if ( subMesh->GetAlgoState() != SMESH_subMesh::HYP_OK )
|
||||||
|
{
|
||||||
|
removeImport = true;
|
||||||
|
}
|
||||||
|
else if ( SMESH_subMesh::REMOVE_ALGO == event ||
|
||||||
|
SMESH_subMesh::REMOVE_FATHER_ALGO == event )
|
||||||
|
{
|
||||||
|
SMESH_Gen* gen = subMesh->GetFather()->GetGen();
|
||||||
|
SMESH_Algo* algo = gen->GetAlgo(*subMesh->GetFather(),subMesh->GetSubShape() );
|
||||||
|
removeImport = ( strncmp( "Import", algo->GetName(), 6 ) != 0 );
|
||||||
|
}
|
||||||
|
|
||||||
if ( subMesh->GetAlgoState() != SMESH_subMesh::HYP_OK ||
|
if ( removeImport )
|
||||||
strncmp( "Import", algo->GetName(), 6 ) != 0 )
|
|
||||||
{
|
{
|
||||||
// treate removal of Import algo from subMesh
|
// treate removal of Import algo from subMesh
|
||||||
removeSubmesh( subMesh, (_ListenerData*) data );
|
removeSubmesh( subMesh, (_ListenerData*) data );
|
||||||
@ -543,8 +575,8 @@ bool StdMeshers_Import_1D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape & th
|
|||||||
subShapeIDs.insert( shapeID );
|
subShapeIDs.insert( shapeID );
|
||||||
|
|
||||||
// get nodes on vertices
|
// get nodes on vertices
|
||||||
list < SMESH_MeshEditor::TNodeXYZ > vertexNodes;
|
list < SMESH_MeshEditor::TNodeXYZ > vertexNodes;
|
||||||
list < SMESH_MeshEditor::TNodeXYZ >::iterator vNIt;
|
list < SMESH_MeshEditor::TNodeXYZ >::iterator vNIt;
|
||||||
TopExp_Explorer vExp( theShape, TopAbs_VERTEX );
|
TopExp_Explorer vExp( theShape, TopAbs_VERTEX );
|
||||||
for ( ; vExp.More(); vExp.Next() )
|
for ( ; vExp.More(); vExp.Next() )
|
||||||
{
|
{
|
||||||
@ -797,6 +829,17 @@ void StdMeshers_Import_1D::importMesh(const SMESH_Mesh* srcMesh,
|
|||||||
n2n->clear();
|
n2n->clear();
|
||||||
e2e->clear();
|
e2e->clear();
|
||||||
|
|
||||||
|
{
|
||||||
|
cout << "IMPORT SubMesh " << endl << " Elems:";
|
||||||
|
SMDS_ElemIteratorPtr eIt = tgtSubMesh->GetElements();
|
||||||
|
while ( eIt->more() )
|
||||||
|
cout << " " << eIt->next()->GetID();
|
||||||
|
cout << endl << " Nodes:";
|
||||||
|
SMDS_NodeIteratorPtr nIt = tgtSubMesh->GetNodes();
|
||||||
|
while ( nIt->more() )
|
||||||
|
cout << " " << nIt->next()->GetID();
|
||||||
|
cout << endl;
|
||||||
|
}
|
||||||
// Remember created groups in order to remove them as soon as the srcHyp is
|
// Remember created groups in order to remove them as soon as the srcHyp is
|
||||||
// modified or something other similar happens. Store them in a hypothesis
|
// modified or something other similar happens. Store them in a hypothesis
|
||||||
// as it stores its values anyway
|
// as it stores its values anyway
|
||||||
|
@ -153,8 +153,8 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
|
|||||||
const bool toCheckOri = (helper.NbAncestors( geomFace, theMesh, TopAbs_SOLID ) == 1 );
|
const bool toCheckOri = (helper.NbAncestors( geomFace, theMesh, TopAbs_SOLID ) == 1 );
|
||||||
|
|
||||||
Handle(Geom_Surface) surface = BRep_Tool::Surface( geomFace );
|
Handle(Geom_Surface) surface = BRep_Tool::Surface( geomFace );
|
||||||
if ( helper.GetSubShapeOri( tgtMesh->ShapeToMesh(), geomFace) == TopAbs_REVERSED )
|
const bool reverse =
|
||||||
surface->UReverse();
|
( helper.GetSubShapeOri( tgtMesh->ShapeToMesh(), geomFace) == TopAbs_REVERSED );
|
||||||
gp_Pnt p; gp_Vec du, dv;
|
gp_Pnt p; gp_Vec du, dv;
|
||||||
|
|
||||||
set<int> subShapeIDs;
|
set<int> subShapeIDs;
|
||||||
@ -262,7 +262,7 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
|
|||||||
{
|
{
|
||||||
uv = helper.GetNodeUV( geomFace, newNodes[++iNode] );
|
uv = helper.GetNodeUV( geomFace, newNodes[++iNode] );
|
||||||
surface->D1( uv.X(),uv.Y(), p, du,dv );
|
surface->D1( uv.X(),uv.Y(), p, du,dv );
|
||||||
geomNorm = du ^ dv;
|
geomNorm = reverse ? dv^du : du^dv;
|
||||||
}
|
}
|
||||||
while ( geomNorm.SquareMagnitude() < 1e-6 && iNode+1 < face->NbCornerNodes());
|
while ( geomNorm.SquareMagnitude() < 1e-6 && iNode+1 < face->NbCornerNodes());
|
||||||
|
|
||||||
@ -458,6 +458,25 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
|
|||||||
for ( unsigned iE = 0; iE < edges.size(); ++iE )
|
for ( unsigned iE = 0; iE < edges.size(); ++iE )
|
||||||
theMesh.GetSubMesh( edges[iE] )->ComputeStateEngine(SMESH_subMesh::CHECK_COMPUTE_STATE);
|
theMesh.GetSubMesh( edges[iE] )->ComputeStateEngine(SMESH_subMesh::CHECK_COMPUTE_STATE);
|
||||||
|
|
||||||
|
SMESH_subMesh* sm = theMesh.GetSubMesh(theShape);
|
||||||
|
SMESH_subMeshIteratorPtr smIt = sm->getDependsOnIterator(true,false);
|
||||||
|
cout << endl << string(80,'=') << endl
|
||||||
|
<< "Compute( face " << tgtMesh->ShapeToIndex(theShape) << endl;
|
||||||
|
while ( smIt->more() )
|
||||||
|
{
|
||||||
|
sm = smIt->next();
|
||||||
|
TopAbs::Print(sm->GetSubShape().ShapeType(), cout);
|
||||||
|
cout << " " << sm->GetId() << endl << " Elems:";
|
||||||
|
SMDS_ElemIteratorPtr eIt = sm->GetSubMeshDS()->GetElements();
|
||||||
|
while ( eIt->more() )
|
||||||
|
cout << " " << eIt->next()->GetID();
|
||||||
|
cout << endl << " Nodes:";
|
||||||
|
SMDS_NodeIteratorPtr nIt = sm->GetSubMeshDS()->GetNodes();
|
||||||
|
while ( nIt->more() )
|
||||||
|
cout << " " << nIt->next()->GetID();
|
||||||
|
cout << endl;
|
||||||
|
}
|
||||||
|
|
||||||
// ============
|
// ============
|
||||||
// Copy meshes
|
// Copy meshes
|
||||||
// ============
|
// ============
|
||||||
|
Loading…
Reference in New Issue
Block a user