mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-28 09:40:34 +05:00
22384: [CEA 831] New wire discretization hypothesis: geometric progression
This commit is contained in:
parent
3b5e74cc91
commit
cf4c2d7209
@ -1,12 +1,11 @@
|
|||||||
# Arithmetic 1D
|
# Arithmetic 1D and Geometric Progression
|
||||||
|
|
||||||
import salome
|
import salome
|
||||||
salome.salome_init()
|
salome.salome_init()
|
||||||
import GEOM
|
|
||||||
from salome.geom import geomBuilder
|
from salome.geom import geomBuilder
|
||||||
geompy = geomBuilder.New(salome.myStudy)
|
geompy = geomBuilder.New(salome.myStudy)
|
||||||
|
|
||||||
import SMESH, SALOMEDS
|
|
||||||
from salome.smesh import smeshBuilder
|
from salome.smesh import smeshBuilder
|
||||||
smesh = smeshBuilder.New(salome.myStudy)
|
smesh = smeshBuilder.New(salome.myStudy)
|
||||||
|
|
||||||
@ -21,12 +20,20 @@ hexa = smesh.Mesh(box, "Box : hexahedrical mesh")
|
|||||||
algo1D = hexa.Segment()
|
algo1D = hexa.Segment()
|
||||||
|
|
||||||
# optionally reverse node distribution on certain edges
|
# optionally reverse node distribution on certain edges
|
||||||
allEdges = geompy.SubShapeAllSortedIDs( box, geompy.ShapeType["EDGE"])
|
allEdges = geompy.SubShapeAllSorted( box, geompy.ShapeType["EDGE"])
|
||||||
reversedEdges = [ allEdges[0], allEdges[4] ]
|
reversedEdges = [ allEdges[0], allEdges[4] ]
|
||||||
|
|
||||||
# define "Arithmetic1D" hypothesis to cut all edges in several segments with increasing arithmetic length
|
# define "Arithmetic1D" hypothesis to cut all edges in several segments with increasing arithmetic length
|
||||||
algo1D.Arithmetic1D(1, 4, reversedEdges)
|
algo1D.Arithmetic1D(1, 4, reversedEdges)
|
||||||
|
|
||||||
|
# define "Geometric Progression" hypothesis on one edge to cut this edge in segments with length increasing by 20% starting from 1
|
||||||
|
gpAlgo = hexa.Segment( allEdges[1] )
|
||||||
|
gpAlgo.GeometricProgression( 1, 1.2 )
|
||||||
|
|
||||||
|
# propagate distribution of nodes computed using "Geometric Progression" to parallel edges
|
||||||
|
gpAlgo.PropagationOfDistribution()
|
||||||
|
|
||||||
|
|
||||||
# create a quadrangle 2D algorithm for faces
|
# create a quadrangle 2D algorithm for faces
|
||||||
hexa.Quadrangle()
|
hexa.Quadrangle()
|
||||||
|
|
||||||
|
BIN
doc/salome/gui/SMESH/images/a-geometric1d.png
Normal file
BIN
doc/salome/gui/SMESH/images/a-geometric1d.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
@ -6,6 +6,7 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li>\ref adaptive_1d_anchor "Adaptive"</li>
|
<li>\ref adaptive_1d_anchor "Adaptive"</li>
|
||||||
<li>\ref arithmetic_1d_anchor "Arithmetic 1D"</li>
|
<li>\ref arithmetic_1d_anchor "Arithmetic 1D"</li>
|
||||||
|
<li>\ref geometric_1d_anchor "Geometric Progression"</li>
|
||||||
<li>\ref average_length_anchor "Local Length"</li>
|
<li>\ref average_length_anchor "Local Length"</li>
|
||||||
<li>\ref max_length_anchor "Max Size"</li>
|
<li>\ref max_length_anchor "Max Size"</li>
|
||||||
<li>\ref deflection_1d_anchor "Deflection 1D"</li>
|
<li>\ref deflection_1d_anchor "Deflection 1D"</li>
|
||||||
@ -56,7 +57,30 @@ picking them in the 3D viewer or by selecting the edges or groups of edges in th
|
|||||||
\image html b-ithmetic1d.png "Arithmetic 1D hypothesis - the size of mesh elements gradually increases"
|
\image html b-ithmetic1d.png "Arithmetic 1D hypothesis - the size of mesh elements gradually increases"
|
||||||
|
|
||||||
<b>See Also</b> a sample TUI Script of a
|
<b>See Also</b> a sample TUI Script of a
|
||||||
\ref tui_1d_arithmetic "Defining Arithmetic 1D hypothesis" operation.
|
\ref tui_1d_arithmetic "Defining Arithmetic 1D and Geometric Progression hypothesis" operation.
|
||||||
|
|
||||||
|
<br>
|
||||||
|
\anchor geometric_1d_anchor
|
||||||
|
<h2>Geometric Progression hypothesis</h2>
|
||||||
|
|
||||||
|
<b>Geometric Progression</b> hypothesis allows to split edges into
|
||||||
|
segments with a length that changes in geometric progression (Lk =
|
||||||
|
Lk-1 * d) beginning from a given starting length and with a given
|
||||||
|
common ratio.
|
||||||
|
|
||||||
|
The direction of the splitting is defined by the orientation of the
|
||||||
|
underlying geometrical edge. <b>"Reverse Edges"</b> list box allows to
|
||||||
|
specify the edges for which the splitting should be made in the
|
||||||
|
direction opposing to their orientation. This list box is enabled only
|
||||||
|
if the geometry object is selected for the meshing. In this case the
|
||||||
|
user can select edges to be reversed either directly picking them in
|
||||||
|
the 3D viewer or by selecting the edges or groups of edges in the
|
||||||
|
Object Browser.
|
||||||
|
|
||||||
|
\image html a-geometric1d.png
|
||||||
|
|
||||||
|
<b>See Also</b> a sample TUI Script of a
|
||||||
|
\ref tui_1d_arithmetic "Defining Arithmetic 1D and Geometric Progression hypothesis" operation.
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
\anchor deflection_1d_anchor
|
\anchor deflection_1d_anchor
|
||||||
|
@ -20,6 +20,7 @@ In \b MESH there are the following Basic Hypotheses:
|
|||||||
<li>\ref max_length_anchor "Max Size"</li>
|
<li>\ref max_length_anchor "Max Size"</li>
|
||||||
<li>\ref adaptive_1d_anchor "Adaptive"</li>
|
<li>\ref adaptive_1d_anchor "Adaptive"</li>
|
||||||
<li>\ref arithmetic_1d_anchor "Arithmetic 1D"</li>
|
<li>\ref arithmetic_1d_anchor "Arithmetic 1D"</li>
|
||||||
|
<li>\ref geometric_1d_anchor "Geometric 1D"</li>
|
||||||
<li>\ref start_and_end_length_anchor "Start and end length"</li>
|
<li>\ref start_and_end_length_anchor "Start and end length"</li>
|
||||||
<li>\ref deflection_1d_anchor "Deflection 1D"</li>
|
<li>\ref deflection_1d_anchor "Deflection 1D"</li>
|
||||||
<li>\ref automatic_length_anchor "Automatic Length"</li>
|
<li>\ref automatic_length_anchor "Automatic Length"</li>
|
||||||
|
@ -9,6 +9,7 @@ This page provides example codes of \ref tui_defining_meshing_algos
|
|||||||
<ul>
|
<ul>
|
||||||
<li>\ref tui_1d_adaptive "Adaptive 1D" hypothesis</li>
|
<li>\ref tui_1d_adaptive "Adaptive 1D" hypothesis</li>
|
||||||
<li>\ref tui_1d_arithmetic "Arithmetic 1D" hypothesis</li>
|
<li>\ref tui_1d_arithmetic "Arithmetic 1D" hypothesis</li>
|
||||||
|
<li>\ref tui_1d_arithmetic "Geometric Progression" hypothesis</li>
|
||||||
<li>\ref tui_deflection_1d "Deflection 1D and Number of Segments" hypotheses</li>
|
<li>\ref tui_deflection_1d "Deflection 1D and Number of Segments" hypotheses</li>
|
||||||
<li>\ref tui_start_and_end_length "Start and End Length" hypotheses</li>
|
<li>\ref tui_start_and_end_length "Start and End Length" hypotheses</li>
|
||||||
<li>\ref tui_average_length "Local Length"</li>
|
<li>\ref tui_average_length "Local Length"</li>
|
||||||
@ -44,7 +45,7 @@ This page provides example codes of \ref tui_defining_meshing_algos
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
\anchor tui_1d_arithmetic
|
\anchor tui_1d_arithmetic
|
||||||
<h3>Arithmetic 1D</h3>
|
<h3>Arithmetic 1D and Geometric Progression</h3>
|
||||||
\tui_script{defining_hypotheses_ex01.py}
|
\tui_script{defining_hypotheses_ex01.py}
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
@ -127,10 +127,36 @@ module StdMeshers
|
|||||||
double GetFineness();
|
double GetFineness();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Common inteface of 1D hypotheses that can be reversed
|
||||||
|
*/
|
||||||
|
interface Reversible1D
|
||||||
|
{
|
||||||
|
/*!
|
||||||
|
* Set list of edges to reverse
|
||||||
|
*/
|
||||||
|
void SetReversedEdges( in SMESH::long_array list );
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns list of edges to reverse
|
||||||
|
*/
|
||||||
|
SMESH::long_array GetReversedEdges();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Set entry of the main object
|
||||||
|
*/
|
||||||
|
void SetObjectEntry( in string entry );
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Get the entry of the main object
|
||||||
|
*/
|
||||||
|
string GetObjectEntry();
|
||||||
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* StdMeshers_NumberOfSegments: interface of "Nb. Segments" hypothesis
|
* StdMeshers_NumberOfSegments: interface of "Nb. Segments" hypothesis
|
||||||
*/
|
*/
|
||||||
interface StdMeshers_NumberOfSegments : SMESH::SMESH_Hypothesis
|
interface StdMeshers_NumberOfSegments : SMESH::SMESH_Hypothesis, Reversible1D
|
||||||
{
|
{
|
||||||
/*!
|
/*!
|
||||||
* Builds and returns point distribution according to passed density function
|
* Builds and returns point distribution according to passed density function
|
||||||
@ -209,32 +235,12 @@ module StdMeshers
|
|||||||
*/
|
*/
|
||||||
long ConversionMode()
|
long ConversionMode()
|
||||||
raises (SALOME::SALOME_Exception);
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
/*!
|
|
||||||
* Set list of edges to reverse
|
|
||||||
*/
|
|
||||||
void SetReversedEdges( in SMESH::long_array list );
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns list of edges to reverse
|
|
||||||
*/
|
|
||||||
SMESH::long_array GetReversedEdges();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Set entry of the main object
|
|
||||||
*/
|
|
||||||
void SetObjectEntry( in string entry );
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Get the entry of the main object
|
|
||||||
*/
|
|
||||||
string GetObjectEntry();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* StdMeshers_Arithmetic1D: interface of "Arithmetic 1D" hypothesis
|
* StdMeshers_Arithmetic1D: interface of "Arithmetic 1D" hypothesis
|
||||||
*/
|
*/
|
||||||
interface StdMeshers_Arithmetic1D : SMESH::SMESH_Hypothesis
|
interface StdMeshers_Arithmetic1D : SMESH::SMESH_Hypothesis, Reversible1D
|
||||||
{
|
{
|
||||||
/*!
|
/*!
|
||||||
* Sets <start segment length> or <end segment length> parameter value
|
* Sets <start segment length> or <end segment length> parameter value
|
||||||
@ -260,26 +266,36 @@ module StdMeshers
|
|||||||
* Returns <start segment length> or <end segment length> parameter value
|
* Returns <start segment length> or <end segment length> parameter value
|
||||||
*/
|
*/
|
||||||
double GetLength(in boolean isStartLength);
|
double GetLength(in boolean isStartLength);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* StdMeshers_Arithmetic1D: interface of "Geometric 1D" hypothesis
|
||||||
|
*/
|
||||||
|
interface StdMeshers_Geometric1D : SMESH::SMESH_Hypothesis, Reversible1D
|
||||||
|
{
|
||||||
/*!
|
/*!
|
||||||
* Set list of edges to reverse
|
* Sets length of the first segment
|
||||||
*/
|
*/
|
||||||
void SetReversedEdges( in SMESH::long_array list );
|
void SetStartLength(in double length)
|
||||||
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Returns list of edges to reverse
|
* Sets value of Common Ratio
|
||||||
*/
|
*/
|
||||||
SMESH::long_array GetReversedEdges();
|
void SetCommonRatio(in double factor)
|
||||||
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Set entry of the main object
|
* Returns length of the first segment
|
||||||
*/
|
*/
|
||||||
void SetObjectEntry( in string entry );
|
double GetStartLength();
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Get the entry of the main object
|
* Returns value of Common Ratio
|
||||||
*/
|
*/
|
||||||
string GetObjectEntry();
|
double GetCommonRatio();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -319,7 +335,7 @@ module StdMeshers
|
|||||||
/*!
|
/*!
|
||||||
* StdMeshers_StartEndLength: interface of "Start and End Length" hypothesis
|
* StdMeshers_StartEndLength: interface of "Start and End Length" hypothesis
|
||||||
*/
|
*/
|
||||||
interface StdMeshers_StartEndLength : SMESH::SMESH_Hypothesis
|
interface StdMeshers_StartEndLength : SMESH::SMESH_Hypothesis, Reversible1D
|
||||||
{
|
{
|
||||||
/*!
|
/*!
|
||||||
* Sets <start segment length> or <end segment length> parameter value
|
* Sets <start segment length> or <end segment length> parameter value
|
||||||
@ -346,25 +362,6 @@ module StdMeshers
|
|||||||
*/
|
*/
|
||||||
double GetLength(in boolean isStartLength);
|
double GetLength(in boolean isStartLength);
|
||||||
|
|
||||||
/*!
|
|
||||||
* Set list of edges to reverse
|
|
||||||
*/
|
|
||||||
void SetReversedEdges( in SMESH::long_array list );
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns list of edges to reverse
|
|
||||||
*/
|
|
||||||
SMESH::long_array GetReversedEdges();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Set entry of the main object
|
|
||||||
*/
|
|
||||||
void SetObjectEntry( in string entry );
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Get the entry of the main object
|
|
||||||
*/
|
|
||||||
string GetObjectEntry();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -388,7 +385,7 @@ module StdMeshers
|
|||||||
/*!
|
/*!
|
||||||
* StdMeshers_FixedPoints1D: interface of "Fixed points 1D" hypothesis
|
* StdMeshers_FixedPoints1D: interface of "Fixed points 1D" hypothesis
|
||||||
*/
|
*/
|
||||||
interface StdMeshers_FixedPoints1D : SMESH::SMESH_Hypothesis
|
interface StdMeshers_FixedPoints1D : SMESH::SMESH_Hypothesis, Reversible1D
|
||||||
{
|
{
|
||||||
/*!
|
/*!
|
||||||
* Sets some points on edge using parameter on curve from 0 to 1
|
* Sets some points on edge using parameter on curve from 0 to 1
|
||||||
@ -410,26 +407,7 @@ module StdMeshers
|
|||||||
* Returns list of numbers of segments
|
* Returns list of numbers of segments
|
||||||
*/
|
*/
|
||||||
SMESH::long_array GetNbSegments();
|
SMESH::long_array GetNbSegments();
|
||||||
|
|
||||||
/*!
|
|
||||||
* Set list of edges to reverse
|
|
||||||
*/
|
|
||||||
void SetReversedEdges( in SMESH::long_array list );
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns list of edges to reverse
|
|
||||||
*/
|
|
||||||
SMESH::long_array GetReversedEdges();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Set entry of the main object
|
|
||||||
*/
|
|
||||||
void SetObjectEntry( in string entry );
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Get the entry of the main object
|
|
||||||
*/
|
|
||||||
string GetObjectEntry();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -55,6 +55,11 @@
|
|||||||
icon-id ="mesh_hypo_length.png"
|
icon-id ="mesh_hypo_length.png"
|
||||||
dim ="1"/>
|
dim ="1"/>
|
||||||
|
|
||||||
|
<hypothesis type ="GeometricProgression"
|
||||||
|
label-id ="Geometric Progression"
|
||||||
|
icon-id ="mesh_hypo_length.png"
|
||||||
|
dim ="1"/>
|
||||||
|
|
||||||
<hypothesis type ="FixedPoints1D"
|
<hypothesis type ="FixedPoints1D"
|
||||||
label-id ="Fixed Points 1D"
|
label-id ="Fixed Points 1D"
|
||||||
icon-id ="mesh_hypo_length.png"
|
icon-id ="mesh_hypo_length.png"
|
||||||
@ -211,7 +216,7 @@
|
|||||||
<algorithm type ="Regular_1D"
|
<algorithm type ="Regular_1D"
|
||||||
label-id ="Wire Discretisation"
|
label-id ="Wire Discretisation"
|
||||||
icon-id ="mesh_algo_regular.png"
|
icon-id ="mesh_algo_regular.png"
|
||||||
hypos ="Adaptive1D,LocalLength,MaxLength,Arithmetic1D,StartEndLength,NumberOfSegments,Deflection1D,AutomaticLength,FixedPoints1D"
|
hypos ="Adaptive1D,LocalLength,MaxLength,Arithmetic1D,GeometricProgression,StartEndLength,NumberOfSegments,Deflection1D,AutomaticLength,FixedPoints1D"
|
||||||
opt-hypos="Propagation,PropagOfDistribution,QuadraticMesh"
|
opt-hypos="Propagation,PropagOfDistribution,QuadraticMesh"
|
||||||
input ="VERTEX"
|
input ="VERTEX"
|
||||||
output ="EDGE"
|
output ="EDGE"
|
||||||
@ -221,6 +226,7 @@
|
|||||||
<hypo>LocalLength=LocalLength(SetLength(1),,SetPrecision(1))</hypo>
|
<hypo>LocalLength=LocalLength(SetLength(1),,SetPrecision(1))</hypo>
|
||||||
<hypo>MaxLength=MaxSize(SetLength(1))</hypo>
|
<hypo>MaxLength=MaxSize(SetLength(1))</hypo>
|
||||||
<hypo>Arithmetic1D=Arithmetic1D(SetStartLength(),SetEndLength(),SetReversedEdges())</hypo>
|
<hypo>Arithmetic1D=Arithmetic1D(SetStartLength(),SetEndLength(),SetReversedEdges())</hypo>
|
||||||
|
<hypo>GeometricProgression=GeometricProgression(SetStartLength(),SetCommonRatio(),SetReversedEdges())</hypo>
|
||||||
<hypo>StartEndLength=StartEndLength(SetStartLength(),SetEndLength(),SetReversedEdges())</hypo>
|
<hypo>StartEndLength=StartEndLength(SetStartLength(),SetEndLength(),SetReversedEdges())</hypo>
|
||||||
<hypo>Deflection1D=Deflection1D(SetDeflection())</hypo>
|
<hypo>Deflection1D=Deflection1D(SetDeflection())</hypo>
|
||||||
<hypo>Adaptive1D=Adaptive(SetMinSize(),SetMaxSize(),SetDeflection())</hypo>
|
<hypo>Adaptive1D=Adaptive(SetMinSize(),SetMaxSize(),SetDeflection())</hypo>
|
||||||
@ -235,7 +241,7 @@
|
|||||||
<algorithm type ="CompositeSegment_1D"
|
<algorithm type ="CompositeSegment_1D"
|
||||||
label-id ="Composite Side Discretisation"
|
label-id ="Composite Side Discretisation"
|
||||||
icon-id ="mesh_algo_regular.png"
|
icon-id ="mesh_algo_regular.png"
|
||||||
hypos ="Adaptive1D,LocalLength,MaxLength,Arithmetic1D,StartEndLength,NumberOfSegments,Deflection1D,AutomaticLength,FixedPoints1D"
|
hypos ="Adaptive1D,LocalLength,MaxLength,Arithmetic1D,GeometricProgression,StartEndLength,NumberOfSegments,Deflection1D,AutomaticLength,FixedPoints1D"
|
||||||
opt-hypos="Propagation,PropagOfDistribution,QuadraticMesh"
|
opt-hypos="Propagation,PropagOfDistribution,QuadraticMesh"
|
||||||
input ="VERTEX"
|
input ="VERTEX"
|
||||||
output ="EDGE"
|
output ="EDGE"
|
||||||
@ -245,6 +251,7 @@
|
|||||||
<hypo>LocalLength=LocalLength(SetLength(), ,SetPrecision())</hypo>
|
<hypo>LocalLength=LocalLength(SetLength(), ,SetPrecision())</hypo>
|
||||||
<hypo>MaxLength=MaxSize(SetLength())</hypo>
|
<hypo>MaxLength=MaxSize(SetLength())</hypo>
|
||||||
<hypo>Arithmetic1D=Arithmetic1D(SetStartLength(),SetEndLength(),SetReversedEdges())</hypo>
|
<hypo>Arithmetic1D=Arithmetic1D(SetStartLength(),SetEndLength(),SetReversedEdges())</hypo>
|
||||||
|
<hypo>GeometricProgression=GeometricProgression(SetStartLength(),SetCommonRatio(),SetReversedEdges())</hypo>
|
||||||
<hypo>StartEndLength=StartEndLength(SetStartLength(),SetEndLength(),SetReversedEdges())</hypo>
|
<hypo>StartEndLength=StartEndLength(SetStartLength(),SetEndLength(),SetReversedEdges())</hypo>
|
||||||
<hypo>Deflection1D=Deflection1D(SetDeflection())</hypo>
|
<hypo>Deflection1D=Deflection1D(SetDeflection())</hypo>
|
||||||
<hypo>Adaptive1D=Adaptive(SetMinSize(),SetMaxSize(),SetDeflection())</hypo>
|
<hypo>Adaptive1D=Adaptive(SetMinSize(),SetMaxSize(),SetDeflection())</hypo>
|
||||||
|
@ -551,6 +551,8 @@ QString SMESHGUI_GenericHypothesisCreator::helpPage() const
|
|||||||
aHelpFileName = "a1d_meshing_hypo_page.html#max_length_anchor";
|
aHelpFileName = "a1d_meshing_hypo_page.html#max_length_anchor";
|
||||||
else if ( aHypType == "Arithmetic1D")
|
else if ( aHypType == "Arithmetic1D")
|
||||||
aHelpFileName = "a1d_meshing_hypo_page.html#arithmetic_1d_anchor";
|
aHelpFileName = "a1d_meshing_hypo_page.html#arithmetic_1d_anchor";
|
||||||
|
else if ( aHypType == "GeometricProgression")
|
||||||
|
aHelpFileName = "a1d_meshing_hypo_page.html#geometric_1d_anchor";
|
||||||
else if ( aHypType == "FixedPoints1D")
|
else if ( aHypType == "FixedPoints1D")
|
||||||
aHelpFileName = "a1d_meshing_hypo_page.html#fixed_points_1d_anchor";
|
aHelpFileName = "a1d_meshing_hypo_page.html#fixed_points_1d_anchor";
|
||||||
else if ( aHypType == "MaxElementArea")
|
else if ( aHypType == "MaxElementArea")
|
||||||
|
@ -284,7 +284,7 @@ public:
|
|||||||
std::list< int > & theNbEdgesInWires,
|
std::list< int > & theNbEdgesInWires,
|
||||||
TopoDS_Vertex theFirstVertex=TopoDS_Vertex(),
|
TopoDS_Vertex theFirstVertex=TopoDS_Vertex(),
|
||||||
const bool theShapeAnalysisAlgo=false);
|
const bool theShapeAnalysisAlgo=false);
|
||||||
// Return nb wires and a list of oredered edges.
|
// Return nb wires and a list of ordered edges.
|
||||||
// It is used to assign indices to subshapes.
|
// It is used to assign indices to subshapes.
|
||||||
// theFirstVertex may be NULL.
|
// theFirstVertex may be NULL.
|
||||||
// Always try to set a seam edge first
|
// Always try to set a seam edge first
|
||||||
|
@ -199,7 +199,8 @@ class StdMeshersBuilder_Segment(Mesh_Algorithm):
|
|||||||
hyp.SetDeflection(deflection)
|
hyp.SetDeflection(deflection)
|
||||||
return hyp
|
return hyp
|
||||||
|
|
||||||
## Defines "Arithmetic1D" hypothesis to cut an edge in several segments with increasing arithmetic length
|
## Defines "Arithmetic1D" hypothesis to cut an edge in several segments with a length
|
||||||
|
# that changes in arithmetic progression
|
||||||
# @param start defines the length of the first segment
|
# @param start defines the length of the first segment
|
||||||
# @param end defines the length of the last segment
|
# @param end defines the length of the last segment
|
||||||
# @param reversedEdges is a list of edges to mesh using reversed orientation.
|
# @param reversedEdges is a list of edges to mesh using reversed orientation.
|
||||||
@ -226,6 +227,32 @@ class StdMeshersBuilder_Segment(Mesh_Algorithm):
|
|||||||
hyp.SetObjectEntry( entry )
|
hyp.SetObjectEntry( entry )
|
||||||
return hyp
|
return hyp
|
||||||
|
|
||||||
|
## Defines "GeometricProgression" hypothesis to cut an edge in several
|
||||||
|
# segments with a length that changes in Geometric progression
|
||||||
|
# @param start defines the length of the first segment
|
||||||
|
# @param ratio defines the common ratio of the geometric progression
|
||||||
|
# @param reversedEdges is a list of edges to mesh using reversed orientation.
|
||||||
|
# A list item can also be a tuple (edge, 1st_vertex_of_edge)
|
||||||
|
# @param UseExisting if ==true - searches for an existing hypothesis created with
|
||||||
|
# the same parameters, else (default) - creates a new one
|
||||||
|
# @return an instance of StdMeshers_Geometric1D hypothesis
|
||||||
|
# @ingroup l3_hypos_1dhyps
|
||||||
|
def GeometricProgression(self, start, ratio, reversedEdges=[], UseExisting=0):
|
||||||
|
reversedEdgeInd = self.ReversedEdgeIndices(reversedEdges)
|
||||||
|
entry = self.MainShapeEntry()
|
||||||
|
from salome.smesh.smeshBuilder import IsEqual
|
||||||
|
compFun = lambda hyp, args: ( IsEqual(hyp.GetLength(1), args[0]) and \
|
||||||
|
IsEqual(hyp.GetLength(0), args[1]) and \
|
||||||
|
hyp.GetReversedEdges() == args[2] and \
|
||||||
|
(not args[2] or hyp.GetObjectEntry() == args[3]))
|
||||||
|
hyp = self.Hypothesis("GeometricProgression", [start, ratio, reversedEdgeInd, entry],
|
||||||
|
UseExisting=UseExisting, CompareMethod=compFun)
|
||||||
|
hyp.SetStartLength( start )
|
||||||
|
hyp.SetCommonRatio( ratio )
|
||||||
|
hyp.SetReversedEdges( reversedEdgeInd )
|
||||||
|
hyp.SetObjectEntry( entry )
|
||||||
|
return hyp
|
||||||
|
|
||||||
## Defines "FixedPoints1D" hypothesis to cut an edge using parameter
|
## Defines "FixedPoints1D" hypothesis to cut an edge using parameter
|
||||||
# on curve from 0 to 1 (additionally it is neecessary to check
|
# on curve from 0 to 1 (additionally it is neecessary to check
|
||||||
# orientation of edges and create list of reversed edges if it is
|
# orientation of edges and create list of reversed edges if it is
|
||||||
@ -237,7 +264,7 @@ class StdMeshersBuilder_Segment(Mesh_Algorithm):
|
|||||||
# A list item can also be a tuple (edge, 1st_vertex_of_edge)
|
# A list item can also be a tuple (edge, 1st_vertex_of_edge)
|
||||||
# @param UseExisting if ==true - searches for an existing hypothesis created with
|
# @param UseExisting if ==true - searches for an existing hypothesis created with
|
||||||
# the same parameters, else (default) - creates a new one
|
# the same parameters, else (default) - creates a new one
|
||||||
# @return an instance of StdMeshers_Arithmetic1D hypothesis
|
# @return an instance of StdMeshers_FixedPoints1D hypothesis
|
||||||
# @ingroup l3_hypos_1dhyps
|
# @ingroup l3_hypos_1dhyps
|
||||||
def FixedPoints1D(self, points, nbSegs=[1], reversedEdges=[], UseExisting=0):
|
def FixedPoints1D(self, points, nbSegs=[1], reversedEdges=[], UseExisting=0):
|
||||||
if not isinstance(reversedEdges,list): #old version script, before adding reversedEdges
|
if not isinstance(reversedEdges,list): #old version script, before adding reversedEdges
|
||||||
@ -1019,7 +1046,8 @@ class StdMeshersBuilder_Prism3D(Mesh_Algorithm):
|
|||||||
return hyp
|
return hyp
|
||||||
|
|
||||||
## Defines "Arithmetic1D" hypothesis, specifying the distribution of segments
|
## Defines "Arithmetic1D" hypothesis, specifying the distribution of segments
|
||||||
# to build between the inner and the outer shells with a length that changes in arithmetic progression
|
# to build between the inner and the outer shells with a length that changes
|
||||||
|
# in arithmetic progression
|
||||||
# @param start the length of the first segment
|
# @param start the length of the first segment
|
||||||
# @param end the length of the last segment
|
# @param end the length of the last segment
|
||||||
def Arithmetic1D(self, start, end ):
|
def Arithmetic1D(self, start, end ):
|
||||||
@ -1031,6 +1059,20 @@ class StdMeshersBuilder_Prism3D(Mesh_Algorithm):
|
|||||||
hyp.SetLength(end , 0)
|
hyp.SetLength(end , 0)
|
||||||
return hyp
|
return hyp
|
||||||
|
|
||||||
|
## Defines "GeometricProgression" hypothesis, specifying the distribution of segments
|
||||||
|
# to build between the inner and the outer shells with a length that changes
|
||||||
|
# in Geometric progression
|
||||||
|
# @param start the length of the first segment
|
||||||
|
# @param ratio the common ratio of the geometric progression
|
||||||
|
def GeometricProgression(self, start, ratio ):
|
||||||
|
if self.algoType != "RadialPrism_3D":
|
||||||
|
print "Prism_3D algorith doesn't support any hyposesis"
|
||||||
|
return None
|
||||||
|
hyp = self.OwnHypothesis("GeometricProgression", [start, ratio])
|
||||||
|
hyp.SetStartLength( start )
|
||||||
|
hyp.SetCommonRatio( ratio )
|
||||||
|
return hyp
|
||||||
|
|
||||||
## Defines "StartEndLength" hypothesis, specifying distribution of segments
|
## Defines "StartEndLength" hypothesis, specifying distribution of segments
|
||||||
# to build between the inner and the outer shells as geometric length increasing
|
# to build between the inner and the outer shells as geometric length increasing
|
||||||
# @param start for the length of the first segment
|
# @param start for the length of the first segment
|
||||||
@ -1187,6 +1229,16 @@ class StdMeshersBuilder_RadialQuadrangle1D2D(Mesh_Algorithm):
|
|||||||
hyp.SetLength(end , 0)
|
hyp.SetLength(end , 0)
|
||||||
return hyp
|
return hyp
|
||||||
|
|
||||||
|
## Defines "GeometricProgression" hypothesis, specifying the distribution of segments
|
||||||
|
# with a length that changes in Geometric progression
|
||||||
|
# @param start the length of the first segment
|
||||||
|
# @param ratio the common ratio of the geometric progression
|
||||||
|
def GeometricProgression(self, start, ratio ):
|
||||||
|
hyp = self.OwnHypothesis("GeometricProgression", [start, ratio])
|
||||||
|
hyp.SetStartLength( start )
|
||||||
|
hyp.SetCommonRatio( ratio )
|
||||||
|
return hyp
|
||||||
|
|
||||||
## Defines "StartEndLength" hypothesis, specifying distribution of segments
|
## Defines "StartEndLength" hypothesis, specifying distribution of segments
|
||||||
# as geometric length increasing
|
# as geometric length increasing
|
||||||
# @param start for the length of the first segment
|
# @param start for the length of the first segment
|
||||||
|
@ -75,8 +75,10 @@ ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
|
|||||||
# header files / no moc processing
|
# header files / no moc processing
|
||||||
SET(StdMeshers_HEADERS
|
SET(StdMeshers_HEADERS
|
||||||
StdMeshers_LocalLength.hxx
|
StdMeshers_LocalLength.hxx
|
||||||
|
StdMeshers_Reversible1D.hxx
|
||||||
StdMeshers_StartEndLength.hxx
|
StdMeshers_StartEndLength.hxx
|
||||||
StdMeshers_Arithmetic1D.hxx
|
StdMeshers_Arithmetic1D.hxx
|
||||||
|
StdMeshers_Geometric1D.hxx
|
||||||
StdMeshers_FixedPoints1D.hxx
|
StdMeshers_FixedPoints1D.hxx
|
||||||
StdMeshers_NumberOfSegments.hxx
|
StdMeshers_NumberOfSegments.hxx
|
||||||
StdMeshers_Deflection1D.hxx
|
StdMeshers_Deflection1D.hxx
|
||||||
@ -136,8 +138,10 @@ ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
|
|||||||
# sources / static
|
# sources / static
|
||||||
SET(StdMeshers_SOURCES
|
SET(StdMeshers_SOURCES
|
||||||
StdMeshers_LocalLength.cxx
|
StdMeshers_LocalLength.cxx
|
||||||
|
StdMeshers_Reversible1D.cxx
|
||||||
StdMeshers_StartEndLength.cxx
|
StdMeshers_StartEndLength.cxx
|
||||||
StdMeshers_Arithmetic1D.cxx
|
StdMeshers_Arithmetic1D.cxx
|
||||||
|
StdMeshers_Geometric1D.cxx
|
||||||
StdMeshers_FixedPoints1D.cxx
|
StdMeshers_FixedPoints1D.cxx
|
||||||
StdMeshers_NumberOfSegments.cxx
|
StdMeshers_NumberOfSegments.cxx
|
||||||
StdMeshers_Deflection1D.cxx
|
StdMeshers_Deflection1D.cxx
|
||||||
|
204
src/StdMeshers/StdMeshers_Geometric1D.cxx
Normal file
204
src/StdMeshers/StdMeshers_Geometric1D.cxx
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
//
|
||||||
|
|
||||||
|
// SMESH SMESH : implementaion of SMESH idl descriptions
|
||||||
|
// File : StdMeshers_Geometric1D.cxx
|
||||||
|
// Module : SMESH
|
||||||
|
//
|
||||||
|
#include "StdMeshers_Geometric1D.hxx"
|
||||||
|
|
||||||
|
#include "SMESH_Mesh.hxx"
|
||||||
|
|
||||||
|
#include <BRepAdaptor_Curve.hxx>
|
||||||
|
#include <GCPnts_AbscissaPoint.hxx>
|
||||||
|
#include <SMESH_Algo.hxx>
|
||||||
|
#include <TopExp.hxx>
|
||||||
|
#include <TopTools_IndexedMapOfShape.hxx>
|
||||||
|
#include <TopoDS.hxx>
|
||||||
|
#include <TopoDS_Edge.hxx>
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
StdMeshers_Geometric1D::StdMeshers_Geometric1D(int hypId, int studyId, SMESH_Gen * gen)
|
||||||
|
:StdMeshers_Reversible1D(hypId, studyId, gen)
|
||||||
|
{
|
||||||
|
_begLength = 1.;
|
||||||
|
_ratio = 1.;
|
||||||
|
_name = "GeometricProgression";
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Sets length of the first segment
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
void StdMeshers_Geometric1D::SetStartLength(double length)
|
||||||
|
throw(SALOME_Exception)
|
||||||
|
{
|
||||||
|
if ( _begLength != length )
|
||||||
|
{
|
||||||
|
if (length <= 0)
|
||||||
|
throw SALOME_Exception(LOCALIZED("length must be positive"));
|
||||||
|
_begLength = length;
|
||||||
|
NotifySubMeshesHypothesisModification();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Sets value of Common Ratio
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
void StdMeshers_Geometric1D::SetCommonRatio(double factor)
|
||||||
|
throw(SALOME_Exception)
|
||||||
|
{
|
||||||
|
if ( _ratio != factor )
|
||||||
|
{
|
||||||
|
if (factor == 0)
|
||||||
|
throw SALOME_Exception(LOCALIZED("Zero factor is not allowed"));
|
||||||
|
_ratio = factor;
|
||||||
|
NotifySubMeshesHypothesisModification();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Returns length of the first segment
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
double StdMeshers_Geometric1D::GetStartLength() const
|
||||||
|
{
|
||||||
|
return _begLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Returns value of Common Ratio
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
double StdMeshers_Geometric1D::GetCommonRatio() const
|
||||||
|
{
|
||||||
|
return _ratio;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
ostream & StdMeshers_Geometric1D::SaveTo(ostream & save)
|
||||||
|
{
|
||||||
|
save << _begLength << " " << _ratio << " ";
|
||||||
|
|
||||||
|
StdMeshers_Reversible1D::SaveTo( save );
|
||||||
|
|
||||||
|
return save;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
istream & StdMeshers_Geometric1D::LoadFrom(istream & load)
|
||||||
|
{
|
||||||
|
bool isOK = true;
|
||||||
|
isOK = (load >> _begLength);
|
||||||
|
isOK = (load >> _ratio);
|
||||||
|
|
||||||
|
if (isOK)
|
||||||
|
StdMeshers_Reversible1D::LoadFrom( load );
|
||||||
|
|
||||||
|
return load;
|
||||||
|
}
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*!
|
||||||
|
* \brief Initialize start and end length by the mesh built on the geometry
|
||||||
|
* \param theMesh - the built mesh
|
||||||
|
* \param theShape - the geometry of interest
|
||||||
|
* \retval bool - true if parameter values have been successfully defined
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
|
bool StdMeshers_Geometric1D::SetParametersByMesh(const SMESH_Mesh* theMesh,
|
||||||
|
const TopoDS_Shape& theShape)
|
||||||
|
{
|
||||||
|
if ( !theMesh || theShape.IsNull() )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
_begLength = _ratio = 0.;
|
||||||
|
|
||||||
|
int nbEdges = 0;
|
||||||
|
TopTools_IndexedMapOfShape edgeMap;
|
||||||
|
TopExp::MapShapes( theShape, TopAbs_EDGE, edgeMap );
|
||||||
|
for ( int i = 1; i <= edgeMap.Extent(); ++i )
|
||||||
|
{
|
||||||
|
const TopoDS_Edge& edge = TopoDS::Edge( edgeMap( i ));
|
||||||
|
BRepAdaptor_Curve C( edge );
|
||||||
|
|
||||||
|
vector< double > params;
|
||||||
|
if ( SMESH_Algo::GetNodeParamOnEdge( theMesh->GetMeshDS(), edge, params ))
|
||||||
|
{
|
||||||
|
nbEdges++;
|
||||||
|
double l1 = GCPnts_AbscissaPoint::Length( C, params[0], params[1] );
|
||||||
|
_begLength += l1;
|
||||||
|
if ( params.size() > 2 && l1 > 1e-100 )
|
||||||
|
_ratio += GCPnts_AbscissaPoint::Length( C, params[1], params[2]) / l1;
|
||||||
|
else
|
||||||
|
_ratio += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( nbEdges ) {
|
||||||
|
_begLength /= nbEdges;
|
||||||
|
_ratio /= nbEdges;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_begLength = 1;
|
||||||
|
_ratio = 1;
|
||||||
|
}
|
||||||
|
return nbEdges;
|
||||||
|
}
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*!
|
||||||
|
* \brief Initialize my parameter values by default parameters.
|
||||||
|
* \retval bool - true if parameter values have been successfully defined
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
|
bool StdMeshers_Geometric1D::SetParametersByDefaults(const TDefaults& dflts,
|
||||||
|
const SMESH_Mesh* /*mesh*/)
|
||||||
|
{
|
||||||
|
return ( _begLength = dflts._elemLength );
|
||||||
|
}
|
||||||
|
|
67
src/StdMeshers/StdMeshers_Geometric1D.hxx
Normal file
67
src/StdMeshers/StdMeshers_Geometric1D.hxx
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
//
|
||||||
|
|
||||||
|
// SMESH SMESH : implementaion of SMESH idl descriptions
|
||||||
|
// File : StdMeshers_Geometric1D.hxx
|
||||||
|
// Module : SMESH
|
||||||
|
//
|
||||||
|
#ifndef _SMESH_Geometric1D_HXX_
|
||||||
|
#define _SMESH_Geometric1D_HXX_
|
||||||
|
|
||||||
|
#include "SMESH_StdMeshers.hxx"
|
||||||
|
|
||||||
|
#include "StdMeshers_Reversible1D.hxx"
|
||||||
|
#include "Utils_SALOME_Exception.hxx"
|
||||||
|
|
||||||
|
class STDMESHERS_EXPORT StdMeshers_Geometric1D: public StdMeshers_Reversible1D
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
StdMeshers_Geometric1D(int hypId, int studyId, SMESH_Gen* gen);
|
||||||
|
|
||||||
|
void SetStartLength(double length) throw(SALOME_Exception);
|
||||||
|
void SetCommonRatio(double factor) throw(SALOME_Exception);
|
||||||
|
|
||||||
|
double GetStartLength() const;
|
||||||
|
double GetCommonRatio() const;
|
||||||
|
|
||||||
|
virtual std::ostream & SaveTo(std::ostream & save);
|
||||||
|
virtual std::istream & LoadFrom(std::istream & load);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Initialize start and end length by the mesh built on the geometry
|
||||||
|
* \param theMesh - the built mesh
|
||||||
|
* \param theShape - the geometry of interest
|
||||||
|
* \retval bool - true if parameter values have been successfully defined
|
||||||
|
*/
|
||||||
|
virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Initialize my parameter values by default parameters.
|
||||||
|
* \retval bool - true if parameter values have been successfully defined
|
||||||
|
*/
|
||||||
|
virtual bool SetParametersByDefaults(const TDefaults& dflts, const SMESH_Mesh* theMesh=0);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
double _begLength, _ratio;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -37,6 +37,7 @@
|
|||||||
#include "SMESH_subMeshEventListener.hxx"
|
#include "SMESH_subMeshEventListener.hxx"
|
||||||
#include "StdMeshers_Adaptive1D.hxx"
|
#include "StdMeshers_Adaptive1D.hxx"
|
||||||
#include "StdMeshers_Arithmetic1D.hxx"
|
#include "StdMeshers_Arithmetic1D.hxx"
|
||||||
|
#include "StdMeshers_Geometric1D.hxx"
|
||||||
#include "StdMeshers_AutomaticLength.hxx"
|
#include "StdMeshers_AutomaticLength.hxx"
|
||||||
#include "StdMeshers_Deflection1D.hxx"
|
#include "StdMeshers_Deflection1D.hxx"
|
||||||
#include "StdMeshers_Distribution.hxx"
|
#include "StdMeshers_Distribution.hxx"
|
||||||
@ -89,6 +90,7 @@ StdMeshers_Regular_1D::StdMeshers_Regular_1D(int hypId, int studyId,
|
|||||||
_compatibleHypothesis.push_back("StartEndLength");
|
_compatibleHypothesis.push_back("StartEndLength");
|
||||||
_compatibleHypothesis.push_back("Deflection1D");
|
_compatibleHypothesis.push_back("Deflection1D");
|
||||||
_compatibleHypothesis.push_back("Arithmetic1D");
|
_compatibleHypothesis.push_back("Arithmetic1D");
|
||||||
|
_compatibleHypothesis.push_back("GeometricProgression");
|
||||||
_compatibleHypothesis.push_back("FixedPoints1D");
|
_compatibleHypothesis.push_back("FixedPoints1D");
|
||||||
_compatibleHypothesis.push_back("AutomaticLength");
|
_compatibleHypothesis.push_back("AutomaticLength");
|
||||||
_compatibleHypothesis.push_back("Adaptive1D");
|
_compatibleHypothesis.push_back("Adaptive1D");
|
||||||
@ -224,6 +226,21 @@ bool StdMeshers_Regular_1D::CheckHypothesis( SMESH_Mesh& aMesh,
|
|||||||
aStatus = SMESH_Hypothesis::HYP_OK;
|
aStatus = SMESH_Hypothesis::HYP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (hypName == "GeometricProgression")
|
||||||
|
{
|
||||||
|
const StdMeshers_Geometric1D * hyp =
|
||||||
|
dynamic_cast <const StdMeshers_Geometric1D * >(theHyp);
|
||||||
|
ASSERT(hyp);
|
||||||
|
_value[ BEG_LENGTH_IND ] = hyp->GetStartLength();
|
||||||
|
_value[ END_LENGTH_IND ] = hyp->GetCommonRatio();
|
||||||
|
ASSERT( _value[ BEG_LENGTH_IND ] > 0 && _value[ END_LENGTH_IND ] > 0 );
|
||||||
|
_hypType = GEOMETRIC_1D;
|
||||||
|
|
||||||
|
_revEdgesIDs = hyp->GetReversedEdges();
|
||||||
|
|
||||||
|
aStatus = SMESH_Hypothesis::HYP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
else if (hypName == "FixedPoints1D") {
|
else if (hypName == "FixedPoints1D") {
|
||||||
_fpHyp = dynamic_cast <const StdMeshers_FixedPoints1D*>(theHyp);
|
_fpHyp = dynamic_cast <const StdMeshers_FixedPoints1D*>(theHyp);
|
||||||
ASSERT(_fpHyp);
|
ASSERT(_fpHyp);
|
||||||
@ -877,9 +894,54 @@ bool StdMeshers_Regular_1D::computeInternalParameters(SMESH_Mesh & theMesh,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case GEOMETRIC_1D: {
|
||||||
|
|
||||||
|
double a1 = _value[ BEG_LENGTH_IND ], an;
|
||||||
|
double q = _value[ END_LENGTH_IND ];
|
||||||
|
|
||||||
|
double U1 = theReverse ? l : f;
|
||||||
|
double Un = theReverse ? f : l;
|
||||||
|
double param = U1;
|
||||||
|
double eltSize = a1;
|
||||||
|
if ( theReverse )
|
||||||
|
eltSize = -eltSize;
|
||||||
|
|
||||||
|
int nbParams = 0;
|
||||||
|
while ( true ) {
|
||||||
|
// computes a point on a curve <theC3d> at the distance <eltSize>
|
||||||
|
// from the point of parameter <param>.
|
||||||
|
GCPnts_AbscissaPoint Discret( theC3d, eltSize, param );
|
||||||
|
if ( !Discret.IsDone() ) break;
|
||||||
|
param = Discret.Parameter();
|
||||||
|
if ( f < param && param < l )
|
||||||
|
theParams.push_back( param );
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
an = eltSize;
|
||||||
|
eltSize *= q;
|
||||||
|
++nbParams;
|
||||||
|
}
|
||||||
|
if ( nbParams > 1 )
|
||||||
|
{
|
||||||
|
if ( Abs( param - Un ) < 0.2 * Abs( param - theParams.back() ))
|
||||||
|
{
|
||||||
|
compensateError( a1, eltSize, U1, Un, theLength, theC3d, theParams );
|
||||||
|
}
|
||||||
|
else if ( Abs( Un - theParams.back() ) <
|
||||||
|
0.2 * Abs( theParams.back() - *(--theParams.rbegin())))
|
||||||
|
{
|
||||||
|
theParams.pop_back();
|
||||||
|
compensateError( a1, an, U1, Un, theLength, theC3d, theParams );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (theReverse) theParams.reverse(); // NPAL18025
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
case FIXED_POINTS_1D: {
|
case FIXED_POINTS_1D: {
|
||||||
const std::vector<double>& aPnts = _fpHyp->GetPoints();
|
const std::vector<double>& aPnts = _fpHyp->GetPoints();
|
||||||
const std::vector<int>& nbsegs = _fpHyp->GetNbSegments();
|
const std::vector<int>& nbsegs = _fpHyp->GetNbSegments();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
TColStd_SequenceOfReal Params;
|
TColStd_SequenceOfReal Params;
|
||||||
for(; i<aPnts.size(); i++) {
|
for(; i<aPnts.size(); i++) {
|
||||||
|
@ -102,7 +102,7 @@ protected:
|
|||||||
StdMeshers_SegmentLengthAroundVertex* getVertexHyp(SMESH_Mesh & theMesh,
|
StdMeshers_SegmentLengthAroundVertex* getVertexHyp(SMESH_Mesh & theMesh,
|
||||||
const TopoDS_Vertex & theV);
|
const TopoDS_Vertex & theV);
|
||||||
|
|
||||||
enum HypothesisType { LOCAL_LENGTH, MAX_LENGTH, NB_SEGMENTS, BEG_END_LENGTH, DEFLECTION, ARITHMETIC_1D, FIXED_POINTS_1D, ADAPTIVE, NONE };
|
enum HypothesisType { LOCAL_LENGTH, MAX_LENGTH, NB_SEGMENTS, BEG_END_LENGTH, DEFLECTION, ARITHMETIC_1D, FIXED_POINTS_1D, ADAPTIVE, GEOMETRIC_1D, NONE };
|
||||||
|
|
||||||
enum ValueIndex {
|
enum ValueIndex {
|
||||||
SCALE_FACTOR_IND = 0,
|
SCALE_FACTOR_IND = 0,
|
||||||
|
99
src/StdMeshers/StdMeshers_Reversible1D.cxx
Normal file
99
src/StdMeshers/StdMeshers_Reversible1D.cxx
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
//
|
||||||
|
|
||||||
|
// SMESH SMESH : implementaion of SMESH idl descriptions
|
||||||
|
// File : StdMeshers_Reversible1D.cxx
|
||||||
|
// Module : SMESH
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "StdMeshers_Reversible1D.hxx"
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
StdMeshers_Reversible1D::StdMeshers_Reversible1D(int hypId, int studyId, SMESH_Gen * gen)
|
||||||
|
:SMESH_Hypothesis(hypId, studyId, gen)
|
||||||
|
{
|
||||||
|
_param_algo_dim = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
void StdMeshers_Reversible1D::SetReversedEdges( const std::vector<int>& ids )
|
||||||
|
{
|
||||||
|
if ( ids != _edgeIDs )
|
||||||
|
{
|
||||||
|
_edgeIDs = ids;
|
||||||
|
NotifySubMeshesHypothesisModification();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
std::ostream & StdMeshers_Reversible1D::SaveTo(std::ostream & save)
|
||||||
|
{
|
||||||
|
save << " " << _edgeIDs.size() << " ";
|
||||||
|
|
||||||
|
if ( !_edgeIDs.empty() )
|
||||||
|
{
|
||||||
|
for ( size_t i = 0; i < _edgeIDs.size(); i++)
|
||||||
|
save << " " << _edgeIDs[i];
|
||||||
|
save << " " << _objEntry << " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
return save;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
std::istream & StdMeshers_Reversible1D::LoadFrom(std::istream & load)
|
||||||
|
{
|
||||||
|
bool isOK;
|
||||||
|
int intVal;
|
||||||
|
|
||||||
|
isOK = (load >> intVal);
|
||||||
|
if (isOK && intVal > 0) {
|
||||||
|
_edgeIDs.reserve( intVal );
|
||||||
|
for (int i = 0; i < _edgeIDs.capacity() && isOK; i++) {
|
||||||
|
isOK = (load >> intVal);
|
||||||
|
if ( isOK ) _edgeIDs.push_back( intVal );
|
||||||
|
}
|
||||||
|
isOK = (load >> _objEntry);
|
||||||
|
}
|
||||||
|
|
||||||
|
return load;
|
||||||
|
}
|
59
src/StdMeshers/StdMeshers_Reversible1D.hxx
Normal file
59
src/StdMeshers/StdMeshers_Reversible1D.hxx
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
//
|
||||||
|
|
||||||
|
// SMESH SMESH : implementaion of SMESH idl descriptions
|
||||||
|
// File : StdMeshers_Reversible1D.hxx
|
||||||
|
// Module : SMESH
|
||||||
|
//
|
||||||
|
#ifndef _SMESH_Reversible1D_HXX_
|
||||||
|
#define _SMESH_Reversible1D_HXX_
|
||||||
|
|
||||||
|
#include "SMESH_StdMeshers.hxx"
|
||||||
|
#include "SMESH_Hypothesis.hxx"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief A base of reversible 1D hypotheses
|
||||||
|
*/
|
||||||
|
class STDMESHERS_EXPORT StdMeshers_Reversible1D : public SMESH_Hypothesis
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
StdMeshers_Reversible1D(int hypId, int studyId, SMESH_Gen* gen);
|
||||||
|
|
||||||
|
void SetReversedEdges( const std::vector<int>& ids);
|
||||||
|
|
||||||
|
void SetObjectEntry( const char* entry ) { _objEntry = entry; }
|
||||||
|
|
||||||
|
const char* GetObjectEntry() { return _objEntry.c_str(); }
|
||||||
|
|
||||||
|
const std::vector<int>& GetReversedEdges() const { return _edgeIDs; }
|
||||||
|
|
||||||
|
virtual std::ostream & SaveTo(std::ostream & save);
|
||||||
|
virtual std::istream & LoadFrom(std::istream & load);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::vector<int> _edgeIDs;
|
||||||
|
std::string _objEntry;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -523,6 +523,23 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const
|
|||||||
h->SetObjectEntry( w->GetMainShapeEntry() );
|
h->SetObjectEntry( w->GetMainShapeEntry() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if( hypType()=="GeometricProgression" )
|
||||||
|
{
|
||||||
|
StdMeshers::StdMeshers_Geometric1D_var h =
|
||||||
|
StdMeshers::StdMeshers_Geometric1D::_narrow( hypothesis() );
|
||||||
|
|
||||||
|
StdMeshersGUI_SubShapeSelectorWdg* w =
|
||||||
|
widget< StdMeshersGUI_SubShapeSelectorWdg >( 2 );
|
||||||
|
|
||||||
|
h->SetVarParameter( params[0].text(), "SetStartLength" );
|
||||||
|
h->SetStartLength( params[0].myValue.toDouble() );
|
||||||
|
h->SetVarParameter( params[1].text(), "SetCommonRatio" );
|
||||||
|
h->SetCommonRatio( params[1].myValue.toDouble() );
|
||||||
|
if (w) {
|
||||||
|
h->SetReversedEdges( w->GetListOfIDs() );
|
||||||
|
h->SetObjectEntry( w->GetMainShapeEntry() );
|
||||||
|
}
|
||||||
|
}
|
||||||
else if( hypType()=="FixedPoints1D" )
|
else if( hypType()=="FixedPoints1D" )
|
||||||
{
|
{
|
||||||
StdMeshers::StdMeshers_FixedPoints1D_var h =
|
StdMeshers::StdMeshers_FixedPoints1D_var h =
|
||||||
@ -878,6 +895,41 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const
|
|||||||
customWidgets()->append ( aDirectionWidget );
|
customWidgets()->append ( aDirectionWidget );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if( hypType()=="GeometricProgression" )
|
||||||
|
{
|
||||||
|
StdMeshers::StdMeshers_Geometric1D_var h =
|
||||||
|
StdMeshers::StdMeshers_Geometric1D::_narrow( hyp );
|
||||||
|
|
||||||
|
item.myName = tr( "SMESH_START_LENGTH_PARAM" );
|
||||||
|
if(!initVariableName( hyp, item, "SetStartLength" ))
|
||||||
|
item.myValue = h->GetStartLength();
|
||||||
|
p.append( item );
|
||||||
|
|
||||||
|
customWidgets()->append (0);
|
||||||
|
|
||||||
|
item.myName = tr( "SMESH_COMMON_RATIO" );
|
||||||
|
if(!initVariableName( hyp, item, "SetCommonRatio" ))
|
||||||
|
item.myValue = h->GetCommonRatio();
|
||||||
|
p.append( item );
|
||||||
|
|
||||||
|
customWidgets()->append (0);
|
||||||
|
|
||||||
|
item.myName = tr( "SMESH_REVERSED_EDGES" );
|
||||||
|
p.append( item );
|
||||||
|
|
||||||
|
StdMeshersGUI_SubShapeSelectorWdg* aDirectionWidget =
|
||||||
|
new StdMeshersGUI_SubShapeSelectorWdg();
|
||||||
|
QString aGeomEntry = SMESHGUI_GenericHypothesisCreator::getShapeEntry();
|
||||||
|
QString aMainEntry = SMESHGUI_GenericHypothesisCreator::getMainShapeEntry();
|
||||||
|
if ( aGeomEntry == "" )
|
||||||
|
aGeomEntry = h->GetObjectEntry();
|
||||||
|
|
||||||
|
aDirectionWidget->SetGeomShapeEntry( aGeomEntry );
|
||||||
|
aDirectionWidget->SetMainShapeEntry( aMainEntry );
|
||||||
|
aDirectionWidget->SetListOfIDs( h->GetReversedEdges() );
|
||||||
|
aDirectionWidget->showPreview( true );
|
||||||
|
customWidgets()->append ( aDirectionWidget );
|
||||||
|
}
|
||||||
|
|
||||||
else if( hypType()=="FixedPoints1D" )
|
else if( hypType()=="FixedPoints1D" )
|
||||||
{
|
{
|
||||||
@ -1325,6 +1377,13 @@ void StdMeshersGUI_StdHypothesisCreator::attuneStdWidget (QWidget* w, const int)
|
|||||||
{
|
{
|
||||||
sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, "parametric_precision" );
|
sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, "parametric_precision" );
|
||||||
}
|
}
|
||||||
|
else if( hypType()=="GeometricProgression" )
|
||||||
|
{
|
||||||
|
if (sb->objectName() == tr("SMESH_START_LENGTH_PARAM"))
|
||||||
|
sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, "length_precision" );
|
||||||
|
else if (sb->objectName() == tr("SMESH_COMMON_RATIO"))
|
||||||
|
sb->RangeStepAndValidator( -VALUE_MAX, VALUE_MAX, 0.5, "len_tol_precision" );
|
||||||
|
}
|
||||||
else if( hypType()=="MaxLength" )
|
else if( hypType()=="MaxLength" )
|
||||||
{
|
{
|
||||||
sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, "length_precision" );
|
sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, "length_precision" );
|
||||||
@ -1423,6 +1482,7 @@ QString StdMeshersGUI_StdHypothesisCreator::hypTypeName( const QString& t ) cons
|
|||||||
types.insert( "Deflection1D", "DEFLECTION1D" );
|
types.insert( "Deflection1D", "DEFLECTION1D" );
|
||||||
types.insert( "Adaptive1D", "ADAPTIVE1D" );
|
types.insert( "Adaptive1D", "ADAPTIVE1D" );
|
||||||
types.insert( "Arithmetic1D", "ARITHMETIC_1D" );
|
types.insert( "Arithmetic1D", "ARITHMETIC_1D" );
|
||||||
|
types.insert( "GeometricProgression", "GEOMETRIC_1D" );
|
||||||
types.insert( "FixedPoints1D", "FIXED_POINTS_1D" );
|
types.insert( "FixedPoints1D", "FIXED_POINTS_1D" );
|
||||||
types.insert( "AutomaticLength", "AUTOMATIC_LENGTH" );
|
types.insert( "AutomaticLength", "AUTOMATIC_LENGTH" );
|
||||||
types.insert( "ProjectionSource1D", "PROJECTION_SOURCE_1D" );
|
types.insert( "ProjectionSource1D", "PROJECTION_SOURCE_1D" );
|
||||||
|
@ -7,6 +7,10 @@
|
|||||||
<source>ICON_DLG_ARITHMETIC_1D</source>
|
<source>ICON_DLG_ARITHMETIC_1D</source>
|
||||||
<translation>mesh_hypo_length.png</translation>
|
<translation>mesh_hypo_length.png</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_DLG_GEOMETRIC_1D</source>
|
||||||
|
<translation>mesh_hypo_length.png</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>ICON_DLG_FIXED_POINTS_1D</source>
|
<source>ICON_DLG_FIXED_POINTS_1D</source>
|
||||||
<translation>mesh_hypo_length.png</translation>
|
<translation>mesh_hypo_length.png</translation>
|
||||||
@ -23,10 +27,6 @@
|
|||||||
<source>ICON_DLG_ADAPTIVE1D</source>
|
<source>ICON_DLG_ADAPTIVE1D</source>
|
||||||
<translation>mesh_hypo_length.png</translation>
|
<translation>mesh_hypo_length.png</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>ICON_DLG_GEOMETRIC_1D</source>
|
|
||||||
<translation>mesh_hypo_length.png</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>ICON_DLG_LAYER_DISTRIBUTION</source>
|
<source>ICON_DLG_LAYER_DISTRIBUTION</source>
|
||||||
<translation>mesh_hypo_layer_distribution.png</translation>
|
<translation>mesh_hypo_layer_distribution.png</translation>
|
||||||
@ -163,6 +163,10 @@
|
|||||||
<source>ICON_SMESH_TREE_HYPO_Arithmetic1D</source>
|
<source>ICON_SMESH_TREE_HYPO_Arithmetic1D</source>
|
||||||
<translation>mesh_tree_hypo_length.png</translation>
|
<translation>mesh_tree_hypo_length.png</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_SMESH_TREE_HYPO_Geometric1D</source>
|
||||||
|
<translation>mesh_tree_hypo_length.png</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>ICON_SMESH_TREE_HYPO_AutomaticLength</source>
|
<source>ICON_SMESH_TREE_HYPO_AutomaticLength</source>
|
||||||
<translation>mesh_tree_hypo_length.png</translation>
|
<translation>mesh_tree_hypo_length.png</translation>
|
||||||
|
@ -22,14 +22,22 @@
|
|||||||
<source>SMESH_ARITHMETIC_1D_HYPOTHESIS</source>
|
<source>SMESH_ARITHMETIC_1D_HYPOTHESIS</source>
|
||||||
<translation>Arithmetic 1D</translation>
|
<translation>Arithmetic 1D</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>SMESH_ARITHMETIC_1D_PARAM</source>
|
|
||||||
<translation>Arithmetic Reason</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>SMESH_ARITHMETIC_1D_TITLE</source>
|
<source>SMESH_ARITHMETIC_1D_TITLE</source>
|
||||||
<translation>Hypothesis Construction</translation>
|
<translation>Hypothesis Construction</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SMESH_GEOMETRIC_1D_HYPOTHESIS</source>
|
||||||
|
<translation>Geometric Progression</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SMESH_GEOMETRIC_1D_TITLE</source>
|
||||||
|
<translation>Hypothesis Construction</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SMESH_COMMON_RATIO</source>
|
||||||
|
<translation>Common Ratio</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>SMESH_AUTOMATIC_LENGTH_HYPOTHESIS</source>
|
<source>SMESH_AUTOMATIC_LENGTH_HYPOTHESIS</source>
|
||||||
<translation>Automatic Length</translation>
|
<translation>Automatic Length</translation>
|
||||||
|
@ -3,6 +3,18 @@
|
|||||||
<TS version="2.0" language="fr_FR">
|
<TS version="2.0" language="fr_FR">
|
||||||
<context>
|
<context>
|
||||||
<name>@default</name>
|
<name>@default</name>
|
||||||
|
<message>
|
||||||
|
<source>SMESH_COMMON_RATIO</source>
|
||||||
|
<translation type="unfinished">Common Ratio</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SMESH_GEOMETRIC_1D_TITLE</source>
|
||||||
|
<translation type="unfinished">Hypothesis Construction</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SMESH_GEOMETRIC_1D_HYPOTHESIS</source>
|
||||||
|
<translation type="unfinished">Geometric Progression</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>SMESH_EDGES_WITH_LAYERS</source>
|
<source>SMESH_EDGES_WITH_LAYERS</source>
|
||||||
<translation type="unfinished">Edges with layers</translation>
|
<translation type="unfinished">Edges with layers</translation>
|
||||||
|
@ -129,8 +129,10 @@ ENDIF(SALOME_SMESH_ENABLE_MEFISTO)
|
|||||||
SET(StdMeshersEngine_SOURCES
|
SET(StdMeshersEngine_SOURCES
|
||||||
StdMeshers_i.cxx
|
StdMeshers_i.cxx
|
||||||
StdMeshers_LocalLength_i.cxx
|
StdMeshers_LocalLength_i.cxx
|
||||||
|
StdMeshers_Reversible1D_i.cxx
|
||||||
StdMeshers_StartEndLength_i.cxx
|
StdMeshers_StartEndLength_i.cxx
|
||||||
StdMeshers_Arithmetic1D_i.cxx
|
StdMeshers_Arithmetic1D_i.cxx
|
||||||
|
StdMeshers_Geometric1D_i.cxx
|
||||||
StdMeshers_FixedPoints1D_i.cxx
|
StdMeshers_FixedPoints1D_i.cxx
|
||||||
StdMeshers_NumberOfSegments_i.cxx
|
StdMeshers_NumberOfSegments_i.cxx
|
||||||
StdMeshers_Deflection1D_i.cxx
|
StdMeshers_Deflection1D_i.cxx
|
||||||
|
143
src/StdMeshers_I/StdMeshers_Geometric1D_i.cxx
Normal file
143
src/StdMeshers_I/StdMeshers_Geometric1D_i.cxx
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
//
|
||||||
|
|
||||||
|
// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
|
||||||
|
// File : StdMeshers_Geometric1D_i.cxx
|
||||||
|
// Module : SMESH
|
||||||
|
//
|
||||||
|
#include "StdMeshers_Geometric1D_i.hxx"
|
||||||
|
#include "SMESH_Gen_i.hxx"
|
||||||
|
#include "SMESH_Gen.hxx"
|
||||||
|
#include "SMESH_PythonDump.hxx"
|
||||||
|
|
||||||
|
#include <Utils_CorbaException.hxx>
|
||||||
|
#include <utilities.h>
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* StdMeshers_Geometric1D_i::StdMeshers_Geometric1D_i
|
||||||
|
*
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
StdMeshers_Geometric1D_i::StdMeshers_Geometric1D_i( PortableServer::POA_ptr thePOA,
|
||||||
|
int theStudyId,
|
||||||
|
::SMESH_Gen* theGenImpl )
|
||||||
|
: SALOME::GenericObj_i( thePOA ),
|
||||||
|
SMESH_Hypothesis_i( thePOA ),
|
||||||
|
StdMeshers_Reversible1D_i( this )
|
||||||
|
{
|
||||||
|
myBaseImpl = new ::StdMeshers_Geometric1D( theGenImpl->GetANewId(),
|
||||||
|
theStudyId,
|
||||||
|
theGenImpl );
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Sets <start segment length> parameter value
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
void StdMeshers_Geometric1D_i::SetStartLength( CORBA::Double theLength )
|
||||||
|
throw (SALOME::SALOME_Exception)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
this->GetImpl()->SetStartLength( theLength );
|
||||||
|
}
|
||||||
|
catch ( SALOME_Exception& S_ex ) {
|
||||||
|
THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), SALOME::BAD_PARAM );
|
||||||
|
}
|
||||||
|
// Update Python script
|
||||||
|
SMESH::TPythonDump()
|
||||||
|
<< _this() << ".SetStartLength( " << SMESH::TVar(theLength) << " )";
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Sets <common ratio> parameter value
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
void StdMeshers_Geometric1D_i::SetCommonRatio( CORBA::Double factor )
|
||||||
|
throw (SALOME::SALOME_Exception)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
this->GetImpl()->SetCommonRatio( factor );
|
||||||
|
}
|
||||||
|
catch ( SALOME_Exception& S_ex ) {
|
||||||
|
THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), SALOME::BAD_PARAM );
|
||||||
|
}
|
||||||
|
// Update Python script
|
||||||
|
SMESH::TPythonDump()
|
||||||
|
<< _this() << ".SetCommonRatio( " << SMESH::TVar(factor) << " )";
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Returns length of the first segment
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
CORBA::Double StdMeshers_Geometric1D_i::GetStartLength()
|
||||||
|
{
|
||||||
|
return this->GetImpl()->GetStartLength();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* Returns value of Common Ratio
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
CORBA::Double StdMeshers_Geometric1D_i::GetCommonRatio()
|
||||||
|
{
|
||||||
|
return this->GetImpl()->GetCommonRatio();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* StdMeshers_Geometric1D_i::GetImpl
|
||||||
|
*
|
||||||
|
* Get implementation
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
::StdMeshers_Geometric1D* StdMeshers_Geometric1D_i::GetImpl()
|
||||||
|
{
|
||||||
|
return ( ::StdMeshers_Geometric1D* )myBaseImpl;
|
||||||
|
}
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*!
|
||||||
|
* \brief Verify whether hypothesis supports given entity type
|
||||||
|
* \param type - dimension (see SMESH::Dimension enumeration)
|
||||||
|
* \retval CORBA::Boolean - TRUE if dimension is supported, FALSE otherwise
|
||||||
|
*
|
||||||
|
* Verify whether hypothesis supports given entity type (see SMESH::Dimension enumeration)
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
|
CORBA::Boolean StdMeshers_Geometric1D_i::IsDimSupported(::SMESH::Dimension type)
|
||||||
|
{
|
||||||
|
return type == SMESH::DIM_1D;
|
||||||
|
}
|
65
src/StdMeshers_I/StdMeshers_Geometric1D_i.hxx
Normal file
65
src/StdMeshers_I/StdMeshers_Geometric1D_i.hxx
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
//
|
||||||
|
|
||||||
|
// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
|
||||||
|
// File : StdMeshers_Geometric1D_i.hxx
|
||||||
|
// Module : SMESH
|
||||||
|
//
|
||||||
|
#ifndef _SMESH_Geometric1D_I_HXX_
|
||||||
|
#define _SMESH_Geometric1D_I_HXX_
|
||||||
|
|
||||||
|
#include "SMESH_StdMeshers_I.hxx"
|
||||||
|
|
||||||
|
#include <SALOMEconfig.h>
|
||||||
|
#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
|
||||||
|
|
||||||
|
#include "SMESH_Hypothesis_i.hxx"
|
||||||
|
#include "StdMeshers_Geometric1D.hxx"
|
||||||
|
#include "StdMeshers_Reversible1D_i.hxx"
|
||||||
|
|
||||||
|
// ======================================================
|
||||||
|
// Geometric 1D hypothesis
|
||||||
|
// ======================================================
|
||||||
|
class STDMESHERS_I_EXPORT StdMeshers_Geometric1D_i:
|
||||||
|
public virtual POA_StdMeshers::StdMeshers_Geometric1D,
|
||||||
|
public virtual SMESH_Hypothesis_i,
|
||||||
|
public virtual StdMeshers_Reversible1D_i
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// Constructor
|
||||||
|
StdMeshers_Geometric1D_i( PortableServer::POA_ptr thePOA,
|
||||||
|
int theStudyId,
|
||||||
|
::SMESH_Gen* theGenImpl );
|
||||||
|
|
||||||
|
void SetStartLength(CORBA::Double length) throw(SALOME::SALOME_Exception);
|
||||||
|
void SetCommonRatio(CORBA::Double factor) throw(SALOME::SALOME_Exception);
|
||||||
|
|
||||||
|
CORBA::Double GetStartLength();
|
||||||
|
CORBA::Double GetCommonRatio();
|
||||||
|
|
||||||
|
virtual ::CORBA::Boolean IsDimSupported(::SMESH::Dimension type);
|
||||||
|
|
||||||
|
// Get implementation
|
||||||
|
::StdMeshers_Geometric1D* GetImpl();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
143
src/StdMeshers_I/StdMeshers_Reversible1D_i.cxx
Normal file
143
src/StdMeshers_I/StdMeshers_Reversible1D_i.cxx
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
//
|
||||||
|
|
||||||
|
// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
|
||||||
|
// File : StdMeshers_Reversible1D_i.cxx
|
||||||
|
// Module : SMESH
|
||||||
|
//
|
||||||
|
#include "StdMeshers_Reversible1D_i.hxx"
|
||||||
|
#include "SMESH_PythonDump.hxx"
|
||||||
|
|
||||||
|
#include <Utils_CorbaException.hxx>
|
||||||
|
#include <utilities.h>
|
||||||
|
|
||||||
|
#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*!
|
||||||
|
* \brief Constructor
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
|
StdMeshers_Reversible1D_i::StdMeshers_Reversible1D_i( SMESH_Hypothesis_i* reversible )
|
||||||
|
: myHyp( reversible )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* StdMeshers_Reversible1D_i::SetReversedEdges
|
||||||
|
*
|
||||||
|
* Set edges to reverse
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
void StdMeshers_Reversible1D_i::SetReversedEdges( const SMESH::long_array& theIds )
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
std::vector<int> ids( theIds.length() );
|
||||||
|
CORBA::Long iEnd = theIds.length();
|
||||||
|
for ( CORBA::Long i = 0; i < iEnd; i++ )
|
||||||
|
ids[ i ] = theIds[ i ];
|
||||||
|
|
||||||
|
this->GetImpl()->SetReversedEdges( ids );
|
||||||
|
}
|
||||||
|
catch ( SALOME_Exception& S_ex ) {
|
||||||
|
THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), SALOME::BAD_PARAM );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update Python script
|
||||||
|
SMESH::TPythonDump() << myHyp->_this() << ".SetReversedEdges( " << theIds << " )";
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* StdMeshers_Reversible1D_i::SetObjectEntry
|
||||||
|
*
|
||||||
|
* Set the Entry for the Main Object
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
void StdMeshers_Reversible1D_i::SetObjectEntry( const char* theEntry )
|
||||||
|
{
|
||||||
|
string entry(theEntry); // actually needed as theEntry is spoiled by moment of dumping
|
||||||
|
try {
|
||||||
|
this->GetImpl()->SetObjectEntry( entry.c_str() );
|
||||||
|
// Update Python script
|
||||||
|
SMESH::TPythonDump() << myHyp->_this() << ".SetObjectEntry( \"" << entry.c_str() << "\" )";
|
||||||
|
}
|
||||||
|
catch ( SALOME_Exception& S_ex ) {
|
||||||
|
THROW_SALOME_CORBA_EXCEPTION( S_ex.what(),SALOME::BAD_PARAM );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* StdMeshers_Reversible1D_i::GetObjectEntry
|
||||||
|
*
|
||||||
|
* Set the Entry for the Main Object
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
char* StdMeshers_Reversible1D_i::GetObjectEntry()
|
||||||
|
{
|
||||||
|
const char* entry;
|
||||||
|
try {
|
||||||
|
entry = this->GetImpl()->GetObjectEntry();
|
||||||
|
}
|
||||||
|
catch ( SALOME_Exception& S_ex ) {
|
||||||
|
THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), SALOME::BAD_PARAM );
|
||||||
|
}
|
||||||
|
return CORBA::string_dup( entry );
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* StdMeshers_Reversible1D_i::GetReversedEdges
|
||||||
|
*
|
||||||
|
* Get reversed edges
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
SMESH::long_array* StdMeshers_Reversible1D_i::GetReversedEdges()
|
||||||
|
{
|
||||||
|
SMESH::long_array_var anArray = new SMESH::long_array;
|
||||||
|
std::vector<int> ids = this->GetImpl()->GetReversedEdges();
|
||||||
|
anArray->length( ids.size() );
|
||||||
|
for ( CORBA::Long i = 0; i < ids.size(); i++)
|
||||||
|
anArray [ i ] = ids [ i ];
|
||||||
|
|
||||||
|
return anArray._retn();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* StdMeshers_Reversible1D_i::GetImpl
|
||||||
|
*
|
||||||
|
* Get implementation
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
::StdMeshers_Reversible1D* StdMeshers_Reversible1D_i::GetImpl()
|
||||||
|
{
|
||||||
|
return ( ::StdMeshers_Reversible1D* )myHyp->GetImpl();
|
||||||
|
}
|
66
src/StdMeshers_I/StdMeshers_Reversible1D_i.hxx
Normal file
66
src/StdMeshers_I/StdMeshers_Reversible1D_i.hxx
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
//
|
||||||
|
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
||||||
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
//
|
||||||
|
|
||||||
|
// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
|
||||||
|
// File : StdMeshers_Reversible1D_i.hxx
|
||||||
|
// Module : SMESH
|
||||||
|
//
|
||||||
|
#ifndef _SMESH_Reversible1D_I_HXX_
|
||||||
|
#define _SMESH_Reversible1D_I_HXX_
|
||||||
|
|
||||||
|
#include "SMESH_StdMeshers_I.hxx"
|
||||||
|
|
||||||
|
#include <SALOMEconfig.h>
|
||||||
|
#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
|
||||||
|
|
||||||
|
#include "SMESH_Hypothesis_i.hxx"
|
||||||
|
#include "StdMeshers_Reversible1D.hxx"
|
||||||
|
|
||||||
|
// ======================================================
|
||||||
|
// Common metrhods of Reversible 1D hypotheses
|
||||||
|
// ======================================================
|
||||||
|
class STDMESHERS_I_EXPORT StdMeshers_Reversible1D_i:
|
||||||
|
public virtual POA_StdMeshers::Reversible1D
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
StdMeshers_Reversible1D_i( SMESH_Hypothesis_i* reversible );
|
||||||
|
|
||||||
|
//Set Reversed Edges
|
||||||
|
void SetReversedEdges( const SMESH::long_array& theIDs);
|
||||||
|
|
||||||
|
//Get Reversed Edges
|
||||||
|
SMESH::long_array* GetReversedEdges();
|
||||||
|
|
||||||
|
//Set the Entry of the Object
|
||||||
|
void SetObjectEntry( const char* theEntry);
|
||||||
|
|
||||||
|
//Get Object Entry
|
||||||
|
char* GetObjectEntry();
|
||||||
|
|
||||||
|
// Get implementation
|
||||||
|
::StdMeshers_Reversible1D* GetImpl();
|
||||||
|
|
||||||
|
private:
|
||||||
|
SMESH_Hypothesis_i* myHyp;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -35,6 +35,7 @@
|
|||||||
#include "StdMeshers_AutomaticLength_i.hxx"
|
#include "StdMeshers_AutomaticLength_i.hxx"
|
||||||
#include "StdMeshers_StartEndLength_i.hxx"
|
#include "StdMeshers_StartEndLength_i.hxx"
|
||||||
#include "StdMeshers_Arithmetic1D_i.hxx"
|
#include "StdMeshers_Arithmetic1D_i.hxx"
|
||||||
|
#include "StdMeshers_Geometric1D_i.hxx"
|
||||||
#include "StdMeshers_FixedPoints1D_i.hxx"
|
#include "StdMeshers_FixedPoints1D_i.hxx"
|
||||||
#include "StdMeshers_NumberOfSegments_i.hxx"
|
#include "StdMeshers_NumberOfSegments_i.hxx"
|
||||||
#include "StdMeshers_Deflection1D_i.hxx"
|
#include "StdMeshers_Deflection1D_i.hxx"
|
||||||
@ -152,6 +153,8 @@ STDMESHERS_I_EXPORT
|
|||||||
aCreator = new StdHypothesisCreator_i<StdMeshers_FixedPoints1D_i>;
|
aCreator = new StdHypothesisCreator_i<StdMeshers_FixedPoints1D_i>;
|
||||||
else if (strcmp(aHypName, "Arithmetic1D") == 0)
|
else if (strcmp(aHypName, "Arithmetic1D") == 0)
|
||||||
aCreator = new StdHypothesisCreator_i<StdMeshers_Arithmetic1D_i>;
|
aCreator = new StdHypothesisCreator_i<StdMeshers_Arithmetic1D_i>;
|
||||||
|
else if (strcmp(aHypName, "GeometricProgression") == 0)
|
||||||
|
aCreator = new StdHypothesisCreator_i<StdMeshers_Geometric1D_i>;
|
||||||
else if (strcmp(aHypName, "AutomaticLength") == 0)
|
else if (strcmp(aHypName, "AutomaticLength") == 0)
|
||||||
aCreator = new StdHypothesisCreator_i<StdMeshers_AutomaticLength_i>;
|
aCreator = new StdHypothesisCreator_i<StdMeshers_AutomaticLength_i>;
|
||||||
else if (strcmp(aHypName, "QuadranglePreference") == 0)
|
else if (strcmp(aHypName, "QuadranglePreference") == 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user