DCQ:prepare 2.0.0
@ -1,98 +0,0 @@
|
|||||||
<HTML><b>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_LocalLength</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>void SetLength ( in double length )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>SetLength ( length )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>double GetLength ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetLength ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_NumberOfSegments</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>void SetNumberOfSegments ( in long segmentsNumber )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>SetNumberOfSegments ( segmentsNumber )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long GetNumberOfSegments ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetNumberOfSegments ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_MaxElementArea</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>void SetMaxElementArea ( in double area )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>SetMaxElementArea ( area )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>double GetMaxElementArea ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetMaxElementArea ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_MaxElementVolume</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>void SetMaxElementVolume ( in double volume )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>SetMaxElementVolume ( volume )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>double GetMaxElementVolume ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetMaxElementVolume ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_Regular_1D</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_MEFISTO_2D</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_Quadrangle_2D</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_Hexa_3D</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
</b></HTML>
|
|
@ -1,30 +0,0 @@
|
|||||||
<HTML><b>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_Gen</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>SMESH_Hypothesis CreateHypothesis ( in string anHyp, in long studyId )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = CreateHypothesis ( anHyp, studyId )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>SMESH_Mesh Init ( in GEOM_Gen geomEngine, in long studyId, in GEOM_Shape aShape )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = Init ( geomEngine, studyId, aShape )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>boolean Compute ( in SMESH_Mesh aMesh, in GEOM_Shape aSubShape )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = Compute ( aMesh, aSubShape )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>boolean IsReadyToCompute ( in SMESH_Mesh aMesh, in GEOM_Shape aSubShape )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsReadyToCompute ( aMesh, aSubShape )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long_array GetSubShapesId ( in GEOM_Gen geomEngine, in long studyId, in GEOM_Shape mainShape, in shape_array listOfSubShape )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetSubShapesId ( geomEngine, studyId, mainShape, listOfSubShape )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
</b></HTML>
|
|
@ -1,54 +0,0 @@
|
|||||||
<HTML><b>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_Hypothesis</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>string GetName ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetName ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long GetId ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetId ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_Algo</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>ListOfHypothesisName GetCompatibleHypothesis ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetCompatibleHypothesis ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_1D_Algo</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_2D_Algo</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_3D_Algo</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
</b></HTML>
|
|
@ -1,166 +0,0 @@
|
|||||||
<HTML><b>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_Mesh</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>SMESH_subMesh GetElementsOnShape ( in GEOM_Shape aSubShape )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetElementsOnShape ( aSubShape )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>boolean AddHypothesis ( in GEOM_Shape aSubShape, in SMESH_Hypothesis anHyp )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = AddHypothesis ( aSubShape, anHyp )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>boolean RemoveHypothesis ( in GEOM_Shape aSubShape, in SMESH_Hypothesis anHyp )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = RemoveHypothesis ( aSubShape, anHyp )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>ListOfHypothesis GetHypothesisList ( in GEOM_Shape aSubShape )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetHypothesisList ( aSubShape )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>log_array GetLog ( in boolean clearAfterGet )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetLog ( clearAfterGet )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>void ClearLog ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>ClearLog ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long GetId ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetId ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long GetStudyId ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetStudyId ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>SMESH_MeshEditor GetMeshEditor ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetMeshEditor ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>void ExportDAT ( in string file )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>ExportDAT ( file )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>void ExportMED ( in string file )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>ExportMED ( file )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>void ExportUNV ( in string file )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>ExportUNV ( file )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>MESH GetMEDMesh ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetMEDMesh ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long NbNodes ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbNodes ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long NbEdges ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbEdges ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long NbFaces ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbFaces ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long NbTriangles ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbTriangles ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long NbQuadrangles ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbQuadrangles ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long NbVolumes ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbVolumes ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long NbTetras ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbTetras ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long NbHexas ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbHexas ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long NbSubMesh ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = NbSubMesh ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_subMesh</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long GetNumberOfElements ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetNumberOfElements ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long GetNumberOfNodes ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetNumberOfNodes ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long_array GetElementsId ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetElementsId ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long_array GetNodesId ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetNodesId ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>SMESH_Mesh GetFather ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetFather ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>long GetId ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetId ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>FAMILY GetFamily ( )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetFamily ( )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
<table width="100%" BORDER>
|
|
||||||
<tr bgcolor="#FFFFCC">
|
|
||||||
<td colspan="11"><font size="+3"><b><div align="center"><i>interface SMESH_MeshEditor</i></div></b></font></td>
|
|
||||||
</tr>
|
|
||||||
<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
|
|
||||||
<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>boolean RemoveElements ( in long_array IDsOfElements )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = RemoveElements ( IDsOfElements )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>boolean RemoveNodes ( in long_array IDsOfNodes )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = RemoveNodes ( IDsOfNodes )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>boolean AddNode ( in double x, in double y, in double z )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = AddNode ( x, y, z )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>boolean AddEdge ( in long_array IDsOfNodes )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = AddEdge ( IDsOfNodes )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>boolean AddFace ( in long_array IDsOfNodes )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = AddFace ( IDsOfNodes )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>boolean AddVolume ( in long_array IDsOfNodes )</b></div></td>
|
|
||||||
<td bgcolor= "lightgreen"><div align="center"><b>return_value = AddVolume ( IDsOfNodes )</b></div></td>
|
|
||||||
</tr>
|
|
||||||
</table><br>
|
|
||||||
</b></HTML>
|
|
@ -1,203 +0,0 @@
|
|||||||
# Doxyfile 1.3-rc1
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# General configuration options
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
PROJECT_NAME = "SALOME - SMESH - v.1.3.0"
|
|
||||||
PROJECT_NUMBER = id#1.1
|
|
||||||
OUTPUT_DIRECTORY = ../
|
|
||||||
OUTPUT_LANGUAGE = English
|
|
||||||
EXTRACT_ALL = YES
|
|
||||||
EXTRACT_PRIVATE = YES
|
|
||||||
EXTRACT_STATIC = YES
|
|
||||||
EXTRACT_LOCAL_CLASSES = YES
|
|
||||||
HIDE_UNDOC_MEMBERS = NO
|
|
||||||
HIDE_UNDOC_CLASSES = NO
|
|
||||||
HIDE_FRIEND_COMPOUNDS = NO
|
|
||||||
HIDE_IN_BODY_DOCS = NO
|
|
||||||
BRIEF_MEMBER_DESC = YES
|
|
||||||
REPEAT_BRIEF = NO
|
|
||||||
ALWAYS_DETAILED_SEC = YES
|
|
||||||
INLINE_INHERITED_MEMB = YES
|
|
||||||
FULL_PATH_NAMES = NO
|
|
||||||
STRIP_FROM_PATH =
|
|
||||||
INTERNAL_DOCS = YES
|
|
||||||
CASE_SENSE_NAMES = YES
|
|
||||||
SHORT_NAMES = NO
|
|
||||||
HIDE_SCOPE_NAMES = NO
|
|
||||||
VERBATIM_HEADERS = YES
|
|
||||||
SHOW_INCLUDE_FILES = YES
|
|
||||||
JAVADOC_AUTOBRIEF = YES
|
|
||||||
MULTILINE_CPP_IS_BRIEF = NO
|
|
||||||
DETAILS_AT_TOP = NO
|
|
||||||
INHERIT_DOCS = YES
|
|
||||||
INLINE_INFO = YES
|
|
||||||
SORT_MEMBER_DOCS = NO
|
|
||||||
DISTRIBUTE_GROUP_DOC = NO
|
|
||||||
TAB_SIZE = 5
|
|
||||||
GENERATE_TODOLIST = YES
|
|
||||||
GENERATE_TESTLIST = YES
|
|
||||||
GENERATE_BUGLIST = YES
|
|
||||||
GENERATE_DEPRECATEDLIST= YES
|
|
||||||
ALIASES =
|
|
||||||
ENABLED_SECTIONS =
|
|
||||||
MAX_INITIALIZER_LINES = 25
|
|
||||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
|
||||||
OPTIMIZE_OUTPUT_JAVA = YES
|
|
||||||
SHOW_USED_FILES = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to warning and progress messages
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
QUIET = NO
|
|
||||||
WARNINGS = YES
|
|
||||||
WARN_IF_UNDOCUMENTED = YES
|
|
||||||
WARN_FORMAT = "$file:$line: $text"
|
|
||||||
WARN_LOGFILE = log.txt
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the input files
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
INPUT = ../../../share/salome/idl/SMESH_Gen.idl \
|
|
||||||
../../../share/salome/idl/SMESH_Mesh.idl \
|
|
||||||
../../../share/salome/idl/SMESH_BasicHypothesis.idl \
|
|
||||||
../../../share/salome/idl/SMESH_Hypothesis.idl
|
|
||||||
FILE_PATTERNS =
|
|
||||||
RECURSIVE = NO
|
|
||||||
EXCLUDE =
|
|
||||||
EXCLUDE_SYMLINKS = NO
|
|
||||||
EXCLUDE_PATTERNS =
|
|
||||||
EXAMPLE_PATH =
|
|
||||||
EXAMPLE_PATTERNS =
|
|
||||||
EXAMPLE_RECURSIVE = NO
|
|
||||||
IMAGE_PATH = sources/
|
|
||||||
INPUT_FILTER =
|
|
||||||
FILTER_SOURCE_FILES = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to source browsing
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SOURCE_BROWSER = NO
|
|
||||||
INLINE_SOURCES = NO
|
|
||||||
STRIP_CODE_COMMENTS = YES
|
|
||||||
REFERENCED_BY_RELATION = NO
|
|
||||||
REFERENCES_RELATION = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the alphabetical class index
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ALPHABETICAL_INDEX = NO
|
|
||||||
COLS_IN_ALPHA_INDEX = 5
|
|
||||||
IGNORE_PREFIX =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the HTML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_HTML = YES
|
|
||||||
HTML_OUTPUT = html
|
|
||||||
HTML_FILE_EXTENSION = .html
|
|
||||||
HTML_HEADER = sources/myheader.html
|
|
||||||
HTML_FOOTER =
|
|
||||||
HTML_STYLESHEET =
|
|
||||||
HTML_ALIGN_MEMBERS = YES
|
|
||||||
GENERATE_HTMLHELP = NO
|
|
||||||
CHM_FILE =
|
|
||||||
HHC_LOCATION =
|
|
||||||
GENERATE_CHI = NO
|
|
||||||
BINARY_TOC = YES
|
|
||||||
TOC_EXPAND = YES
|
|
||||||
DISABLE_INDEX = YES
|
|
||||||
ENUM_VALUES_PER_LINE = 4
|
|
||||||
GENERATE_TREEVIEW = YES
|
|
||||||
TREEVIEW_WIDTH = 250
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the LaTeX output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_LATEX = NO
|
|
||||||
LATEX_OUTPUT = latex
|
|
||||||
LATEX_CMD_NAME = latex
|
|
||||||
MAKEINDEX_CMD_NAME = makeindex
|
|
||||||
COMPACT_LATEX = NO
|
|
||||||
PAPER_TYPE = a4wide
|
|
||||||
EXTRA_PACKAGES =
|
|
||||||
LATEX_HEADER =
|
|
||||||
PDF_HYPERLINKS = NO
|
|
||||||
USE_PDFLATEX = NO
|
|
||||||
LATEX_BATCHMODE = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the RTF output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_RTF = NO
|
|
||||||
RTF_OUTPUT = rtf
|
|
||||||
COMPACT_RTF = NO
|
|
||||||
RTF_HYPERLINKS = NO
|
|
||||||
RTF_STYLESHEET_FILE =
|
|
||||||
RTF_EXTENSIONS_FILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the man page output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_MAN = NO
|
|
||||||
MAN_OUTPUT = man
|
|
||||||
MAN_EXTENSION = .3
|
|
||||||
MAN_LINKS = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the XML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_XML = NO
|
|
||||||
XML_SCHEMA =
|
|
||||||
XML_DTD =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options for the AutoGen Definitions output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_AUTOGEN_DEF = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the Perl module output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_PERLMOD = NO
|
|
||||||
PERLMOD_LATEX = NO
|
|
||||||
PERLMOD_PRETTY = YES
|
|
||||||
PERLMOD_MAKEVAR_PREFIX =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the preprocessor
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ENABLE_PREPROCESSING = YES
|
|
||||||
MACRO_EXPANSION = YES
|
|
||||||
EXPAND_ONLY_PREDEF = NO
|
|
||||||
SEARCH_INCLUDES = YES
|
|
||||||
INCLUDE_PATH =
|
|
||||||
INCLUDE_FILE_PATTERNS =
|
|
||||||
PREDEFINED =
|
|
||||||
EXPAND_AS_DEFINED =
|
|
||||||
SKIP_FUNCTION_MACROS = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to external references
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
TAGFILES =
|
|
||||||
GENERATE_TAGFILE =
|
|
||||||
ALLEXTERNALS = NO
|
|
||||||
EXTERNAL_GROUPS = YES
|
|
||||||
PERL_PATH = /usr/bin/perl
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the dot tool
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
CLASS_DIAGRAMS = YES
|
|
||||||
HIDE_UNDOC_RELATIONS = NO
|
|
||||||
HAVE_DOT = YES
|
|
||||||
CLASS_GRAPH = YES
|
|
||||||
COLLABORATION_GRAPH = NO
|
|
||||||
TEMPLATE_RELATIONS = YES
|
|
||||||
INCLUDE_GRAPH = YES
|
|
||||||
INCLUDED_BY_GRAPH = NO
|
|
||||||
GRAPHICAL_HIERARCHY = YES
|
|
||||||
DOT_IMAGE_FORMAT = jpg
|
|
||||||
DOT_PATH =
|
|
||||||
DOTFILE_DIRS =
|
|
||||||
MAX_DOT_GRAPH_WIDTH = 1024
|
|
||||||
MAX_DOT_GRAPH_HEIGHT = 1200
|
|
||||||
GENERATE_LEGEND = NO
|
|
||||||
DOT_CLEANUP = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::addtions related to the search engine
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SEARCHENGINE = NO
|
|
||||||
CGI_NAME = search.cgi
|
|
||||||
CGI_URL =
|
|
||||||
DOC_URL =
|
|
||||||
DOC_ABSPATH =
|
|
||||||
BIN_ABSPATH = /usr/local/bin/
|
|
||||||
EXT_DOC_PATHS =
|
|
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 792 B |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 1.8 KiB |
@ -1,24 +0,0 @@
|
|||||||
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
||||||
<meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
|
|
||||||
<title>Main Page</title>
|
|
||||||
<link href="doxygen.css" rel="stylesheet" type="text/css">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<center><table WIDTH="96%" >
|
|
||||||
<tr>
|
|
||||||
<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>
|
|
||||||
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table></center>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
Before Width: | Height: | Size: 14 KiB |
@ -1,49 +0,0 @@
|
|||||||
H1 { text-align: center; }
|
|
||||||
CAPTION { font-weight: bold }
|
|
||||||
A.qindex {}
|
|
||||||
A.qindexRef {}
|
|
||||||
A.el { text-decoration: none; font-weight: bold }
|
|
||||||
A.elRef { font-weight: bold }
|
|
||||||
A.code { text-decoration: none; font-weight: normal; color: #4444ee }
|
|
||||||
A.codeRef { font-weight: normal; color: #4444ee }
|
|
||||||
A:hover { text-decoration: none; background-color: lightblue }
|
|
||||||
DL.el { margin-left: -1cm }
|
|
||||||
DIV.fragment { width: 100%; border: none; background-color: #CCCCCC }
|
|
||||||
DIV.ah { background-color: #CCCCCC; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
|
|
||||||
TD.md { background-color: lightblue; font-weight: bold; }
|
|
||||||
TD.mdname1 { background-color: lightblue; font-weight: bold; color: #602020; }
|
|
||||||
TD.mdname { background-color: lightblue; font-weight: bold; color: #602020; width: 600px; }
|
|
||||||
DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
|
|
||||||
DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
|
|
||||||
BODY { background: url(sources/bg_salome.gif) }
|
|
||||||
TD.indexkey {
|
|
||||||
background-color: #CCCCCC;
|
|
||||||
font-weight: bold;
|
|
||||||
padding-right : 10px;
|
|
||||||
padding-top : 2px;
|
|
||||||
padding-left : 10px;
|
|
||||||
padding-bottom : 2px;
|
|
||||||
margin-left : 0px;
|
|
||||||
margin-right : 0px;
|
|
||||||
margin-top : 2px;
|
|
||||||
margin-bottom : 2px
|
|
||||||
}
|
|
||||||
TD.indexvalue {
|
|
||||||
background-color: #CCCCCC;
|
|
||||||
font-style: italic;
|
|
||||||
padding-right : 10px;
|
|
||||||
padding-top : 2px;
|
|
||||||
padding-left : 10px;
|
|
||||||
padding-bottom : 2px;
|
|
||||||
margin-left : 0px;
|
|
||||||
margin-right : 0px;
|
|
||||||
margin-top : 2px;
|
|
||||||
margin-bottom : 2px
|
|
||||||
}
|
|
||||||
span.keyword { color: #008000 }
|
|
||||||
span.keywordtype { color: #604020 }
|
|
||||||
span.keywordflow { color: #e08000 }
|
|
||||||
span.comment { color: #800000 }
|
|
||||||
span.preprocessor { color: #806020 }
|
|
||||||
span.stringliteral { color: #002080 }
|
|
||||||
span.charliteral { color: #008080 }
|
|
@ -1,46 +0,0 @@
|
|||||||
<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
|
|
||||||
<meta http-equiv="Content-Type"
|
|
||||||
content="text/html; charset=iso-8859-1">
|
|
||||||
|
|
||||||
<meta name="GENERATOR"
|
|
||||||
content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
|
|
||||||
<title>Main Page</title>
|
|
||||||
|
|
||||||
<link href="doxygen.css" rel="stylesheet" type="text/css">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<center>
|
|
||||||
<table width="96%">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><a href="http://www.opencascade.com"><img
|
|
||||||
src="sources/logocorp.gif" border="0" height="46" width="122">
|
|
||||||
</a></td>
|
|
||||||
<td>
|
|
||||||
<div align="right"><a href="http://www.opencascade.org/SALOME/"><img
|
|
||||||
src="sources/application.gif" border="0" height="46" width="108">
|
|
||||||
</a></div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</center>
|
|
||||||
<!-- Generated by Doxygen 1.3-rc2 -->
|
|
||||||
<ul>
|
|
||||||
<li><b>SALOME SMESH module</b>
|
|
||||||
<ul>
|
|
||||||
<li><a href="HTML/SMESH_Gen.html">Mapping of SMESH_Gen functions</a></li>
|
|
||||||
<li><a href="HTML/SMESH_BasicHypothesis.html">Mapping of SMESH_BasicHypothesis functions</a></li>
|
|
||||||
<li><a href="HTML/SMESH_Hypothesis.html">Mapping of SMESH_Hypothesis functions</a></li>
|
|
||||||
<li><a href="HTML/SMESH_Mesh.html">Mapping of SMESH_Mesh functions</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<br>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,20 +0,0 @@
|
|||||||
foldersTree = gFld("<b>SALOME v.1.3.0 </b>", "", "")
|
|
||||||
insDoc(foldersTree, gLnk("Main Page", "", "main.html"))
|
|
||||||
|
|
||||||
aux1 = insFld(foldersTree, gFld("TUI Reference Guide", ""))
|
|
||||||
aux2 = insFld(aux1, gFld("Modules", ""))
|
|
||||||
aux3 = insFld(aux2, gFld("SALOME SMESH module", ""))
|
|
||||||
/*! insDoc(aux3, gLnk("Overview", "", "overview_SMESH.html"))*/
|
|
||||||
aux4 = insFld(aux3, gFld("Packages", ""))
|
|
||||||
insDoc(aux4, gLnk("SMESH", "", "namespaceSMESH.html"))
|
|
||||||
/*! insDoc(aux3, gLnk("Examples", "", "examples_SMESH.html"))
|
|
||||||
*/
|
|
||||||
|
|
||||||
insDoc(aux1, gLnk("Data Structures", "", "annotated.html"))
|
|
||||||
insDoc(aux1, gLnk("Class Hierarchy", "", "hierarchy.html"))
|
|
||||||
insDoc(aux1, gLnk("Class methods list", "", "functions.html"))
|
|
||||||
insDoc(aux1, gLnk("Namespace Members", "", "namespacemembers.html"))
|
|
||||||
insDoc(aux1, gLnk("File List", "", "files.html"))
|
|
||||||
|
|
||||||
aux1 = insFld(foldersTree, gFld("IDL/Python mapping", ""))
|
|
||||||
insDoc(aux1, gLnk("Mapping of SMESH IDL definitions to Python language", "", "page2.html"))
|
|
@ -1,505 +0,0 @@
|
|||||||
//****************************************************************
|
|
||||||
// You are free to copy the "Folder-Tree" script as long as you
|
|
||||||
// keep this copyright notice:
|
|
||||||
// Script found in: http://www.geocities.com/Paris/LeftBank/2178/
|
|
||||||
// Author: Marcelino Alves Martins (martins@hks.com) December '97.
|
|
||||||
//****************************************************************
|
|
||||||
|
|
||||||
//Log of changes:
|
|
||||||
// 17 Feb 98 - Fix initialization flashing problem with Netscape
|
|
||||||
//
|
|
||||||
// 27 Jan 98 - Root folder starts open; support for USETEXTLINKS;
|
|
||||||
// make the ftien4 a js file
|
|
||||||
//
|
|
||||||
// DvH: Dec 2000 - Made some minor changes to support external
|
|
||||||
// references
|
|
||||||
|
|
||||||
// Definition of class Folder
|
|
||||||
// *****************************************************************
|
|
||||||
|
|
||||||
function Folder(folderDescription, tagName, hreference) //constructor
|
|
||||||
{
|
|
||||||
//constant data
|
|
||||||
this.desc = folderDescription
|
|
||||||
this.tagName = tagName
|
|
||||||
this.hreference = hreference
|
|
||||||
this.id = -1
|
|
||||||
this.navObj = 0
|
|
||||||
this.iconImg = 0
|
|
||||||
this.nodeImg = 0
|
|
||||||
this.isLastNode = 0
|
|
||||||
|
|
||||||
//dynamic data
|
|
||||||
this.isOpen = true
|
|
||||||
this.iconSrc = "ftv2folderopen.png"
|
|
||||||
this.children = new Array
|
|
||||||
this.nChildren = 0
|
|
||||||
|
|
||||||
//methods
|
|
||||||
this.initialize = initializeFolder
|
|
||||||
this.setState = setStateFolder
|
|
||||||
this.addChild = addChild
|
|
||||||
this.createIndex = createEntryIndex
|
|
||||||
this.hide = hideFolder
|
|
||||||
this.display = display
|
|
||||||
this.renderOb = drawFolder
|
|
||||||
this.totalHeight = totalHeight
|
|
||||||
this.subEntries = folderSubEntries
|
|
||||||
this.outputLink = outputFolderLink
|
|
||||||
}
|
|
||||||
|
|
||||||
function setStateFolder(isOpen)
|
|
||||||
{
|
|
||||||
var subEntries
|
|
||||||
var totalHeight
|
|
||||||
var fIt = 0
|
|
||||||
var i=0
|
|
||||||
|
|
||||||
if (isOpen == this.isOpen)
|
|
||||||
return
|
|
||||||
|
|
||||||
if (browserVersion == 2)
|
|
||||||
{
|
|
||||||
totalHeight = 0
|
|
||||||
for (i=0; i < this.nChildren; i++)
|
|
||||||
totalHeight = totalHeight + this.children[i].navObj.clip.height
|
|
||||||
subEntries = this.subEntries()
|
|
||||||
if (this.isOpen)
|
|
||||||
totalHeight = 0 - totalHeight
|
|
||||||
for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++)
|
|
||||||
indexOfEntries[fIt].navObj.moveBy(0, totalHeight)
|
|
||||||
}
|
|
||||||
this.isOpen = isOpen
|
|
||||||
propagateChangesInState(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
function propagateChangesInState(folder)
|
|
||||||
{
|
|
||||||
var i=0
|
|
||||||
|
|
||||||
if (folder.isOpen)
|
|
||||||
{
|
|
||||||
if (folder.nodeImg)
|
|
||||||
if (folder.isLastNode)
|
|
||||||
folder.nodeImg.src = "ftv2mlastnode.png"
|
|
||||||
else
|
|
||||||
folder.nodeImg.src = "ftv2mnode.png"
|
|
||||||
folder.iconImg.src = "ftv2folderopen.png"
|
|
||||||
for (i=0; i<folder.nChildren; i++)
|
|
||||||
folder.children[i].display()
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (folder.nodeImg)
|
|
||||||
if (folder.isLastNode)
|
|
||||||
folder.nodeImg.src = "ftv2plastnode.png"
|
|
||||||
else
|
|
||||||
folder.nodeImg.src = "ftv2pnode.png"
|
|
||||||
folder.iconImg.src = "ftv2folderclosed.png"
|
|
||||||
for (i=0; i<folder.nChildren; i++)
|
|
||||||
folder.children[i].hide()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function hideFolder()
|
|
||||||
{
|
|
||||||
if (browserVersion == 1 || browserVersion == 3) {
|
|
||||||
if (this.navObj.style.display == "none")
|
|
||||||
return
|
|
||||||
this.navObj.style.display = "none"
|
|
||||||
} else {
|
|
||||||
if (this.navObj.visibility == "hidden")
|
|
||||||
return
|
|
||||||
this.navObj.visibility = "hidden"
|
|
||||||
}
|
|
||||||
|
|
||||||
this.setState(0)
|
|
||||||
}
|
|
||||||
|
|
||||||
function initializeFolder(level, lastNode, leftSide)
|
|
||||||
{
|
|
||||||
var j=0
|
|
||||||
var i=0
|
|
||||||
var numberOfFolders
|
|
||||||
var numberOfDocs
|
|
||||||
var nc
|
|
||||||
|
|
||||||
nc = this.nChildren
|
|
||||||
|
|
||||||
this.createIndex()
|
|
||||||
|
|
||||||
var auxEv = ""
|
|
||||||
|
|
||||||
if (browserVersion > 0)
|
|
||||||
auxEv = "<a href='javascript:clickOnNode("+this.id+")'>"
|
|
||||||
else
|
|
||||||
auxEv = "<a>"
|
|
||||||
|
|
||||||
if (level>0)
|
|
||||||
if (lastNode) //the last 'brother' in the children array
|
|
||||||
{
|
|
||||||
this.renderOb(leftSide + auxEv + "<img name='nodeIcon" + this.id + "' src='ftv2mlastnode.png' width=16 height=22 border=0></a>")
|
|
||||||
// leftSide = leftSide + "<img src='ftv2blank.png' width=16 height=22>"
|
|
||||||
this.isLastNode = 1
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.renderOb(leftSide + auxEv + "<img name='nodeIcon" + this.id + "' src='ftv2mnode.png' width=16 height=22 border=0></a>")
|
|
||||||
leftSide = leftSide + "<img src='ftv2vertline.png' width=16 height=22>"
|
|
||||||
this.isLastNode = 0
|
|
||||||
}
|
|
||||||
else
|
|
||||||
this.renderOb("")
|
|
||||||
|
|
||||||
if (nc > 0)
|
|
||||||
{
|
|
||||||
level = level + 1
|
|
||||||
for (i=0 ; i < this.nChildren; i++)
|
|
||||||
{
|
|
||||||
if (i == this.nChildren-1)
|
|
||||||
this.children[i].initialize(level, 1, leftSide)
|
|
||||||
else
|
|
||||||
this.children[i].initialize(level, 0, leftSide)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function drawFolder(leftSide)
|
|
||||||
{
|
|
||||||
if (browserVersion == 2) {
|
|
||||||
if (!doc.yPos)
|
|
||||||
doc.yPos=8
|
|
||||||
doc.write("<layer id='folder" + this.id + "' top=" + doc.yPos + " visibility=hidden>")
|
|
||||||
}
|
|
||||||
if (browserVersion == 3)
|
|
||||||
{
|
|
||||||
doc.write("<div id='folder" + this.id + "' style='visibility:hide;'>")
|
|
||||||
}
|
|
||||||
|
|
||||||
doc.write("\n<table ")
|
|
||||||
if (browserVersion == 1)
|
|
||||||
doc.write(" id='folder" + this.id + "' style='position:block;' ")
|
|
||||||
doc.write(" border=0 cellspacing=0 cellpadding=0>")
|
|
||||||
doc.write("\n<tr><td>")
|
|
||||||
doc.write(leftSide)
|
|
||||||
this.outputLink()
|
|
||||||
doc.write("<img name='folderIcon" + this.id + "' ")
|
|
||||||
doc.write("src='" + this.iconSrc+"' border=0></a>")
|
|
||||||
doc.write("</td>\n<td valign=middle nowrap>")
|
|
||||||
if (USETEXTLINKS)
|
|
||||||
{
|
|
||||||
this.outputLink()
|
|
||||||
doc.write(this.desc + "</a>")
|
|
||||||
}
|
|
||||||
else
|
|
||||||
doc.write(this.desc)
|
|
||||||
|
|
||||||
/*!
|
|
||||||
if (this.tagName!="")
|
|
||||||
{
|
|
||||||
doc.write(" [external]")
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
doc.write("</td>")
|
|
||||||
doc.write("\n</table>\n")
|
|
||||||
|
|
||||||
if (browserVersion == 2) {
|
|
||||||
doc.write("</layer>")
|
|
||||||
}
|
|
||||||
if (browserVersion == 3) {
|
|
||||||
doc.write("</div>")
|
|
||||||
}
|
|
||||||
|
|
||||||
if (browserVersion == 1) {
|
|
||||||
this.navObj = doc.all["folder"+this.id]
|
|
||||||
this.iconImg = doc.all["folderIcon"+this.id]
|
|
||||||
this.nodeImg = doc.all["nodeIcon"+this.id]
|
|
||||||
} else if (browserVersion == 2) {
|
|
||||||
this.navObj = doc.layers["folder"+this.id]
|
|
||||||
this.iconImg = this.navObj.document.images["folderIcon"+this.id]
|
|
||||||
this.nodeImg = this.navObj.document.images["nodeIcon"+this.id]
|
|
||||||
doc.yPos=doc.yPos+this.navObj.clip.height
|
|
||||||
} else if (browserVersion == 3) {
|
|
||||||
this.navObj = doc.getElementById("folder"+this.id)
|
|
||||||
this.iconImg = doc.images.namedItem("folderIcon"+this.id)
|
|
||||||
this.nodeImg = doc.images.namedItem("nodeIcon"+this.id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function outputFolderLink()
|
|
||||||
{
|
|
||||||
if (this.hreference)
|
|
||||||
{
|
|
||||||
doc.write("<a ")
|
|
||||||
if (this.tagName)
|
|
||||||
{
|
|
||||||
doc.write("doxygen='" + this.tagName + "' ");
|
|
||||||
}
|
|
||||||
doc.write("href='" + this.hreference + "' TARGET=\"basefrm\" ")
|
|
||||||
if (browserVersion > 0)
|
|
||||||
doc.write("onClick='javascript:clickOnFolder("+this.id+")'")
|
|
||||||
doc.write(">")
|
|
||||||
}
|
|
||||||
else
|
|
||||||
doc.write("<a>")
|
|
||||||
}
|
|
||||||
|
|
||||||
function addChild(childNode)
|
|
||||||
{
|
|
||||||
this.children[this.nChildren] = childNode
|
|
||||||
this.nChildren++
|
|
||||||
return childNode
|
|
||||||
}
|
|
||||||
|
|
||||||
function folderSubEntries()
|
|
||||||
{
|
|
||||||
var i = 0
|
|
||||||
var se = this.nChildren
|
|
||||||
|
|
||||||
for (i=0; i < this.nChildren; i++){
|
|
||||||
if (this.children[i].children) //is a folder
|
|
||||||
se = se + this.children[i].subEntries()
|
|
||||||
}
|
|
||||||
|
|
||||||
return se
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Definition of class Item (a document or link inside a Folder)
|
|
||||||
// *************************************************************
|
|
||||||
|
|
||||||
function Item(itemDescription, tagName, itemLink) // Constructor
|
|
||||||
{
|
|
||||||
// constant data
|
|
||||||
this.desc = itemDescription
|
|
||||||
this.tagName = tagName
|
|
||||||
this.link = itemLink
|
|
||||||
this.id = -1 //initialized in initalize()
|
|
||||||
this.navObj = 0 //initialized in render()
|
|
||||||
this.iconImg = 0 //initialized in render()
|
|
||||||
this.iconSrc = "ftv2doc.png"
|
|
||||||
|
|
||||||
// methods
|
|
||||||
this.initialize = initializeItem
|
|
||||||
this.createIndex = createEntryIndex
|
|
||||||
this.hide = hideItem
|
|
||||||
this.display = display
|
|
||||||
this.renderOb = drawItem
|
|
||||||
this.totalHeight = totalHeight
|
|
||||||
}
|
|
||||||
|
|
||||||
function hideItem()
|
|
||||||
{
|
|
||||||
if (browserVersion == 1 || browserVersion == 3) {
|
|
||||||
if (this.navObj.style.display == "none")
|
|
||||||
return
|
|
||||||
this.navObj.style.display = "none"
|
|
||||||
} else {
|
|
||||||
if (this.navObj.visibility == "hidden")
|
|
||||||
return
|
|
||||||
this.navObj.visibility = "hidden"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function initializeItem(level, lastNode, leftSide)
|
|
||||||
{
|
|
||||||
this.createIndex()
|
|
||||||
|
|
||||||
if (level>0)
|
|
||||||
if (lastNode) //the last 'brother' in the children array
|
|
||||||
{
|
|
||||||
this.renderOb(leftSide + "<img src='ftv2lastnode.png' width=16 height=22>")
|
|
||||||
leftSide = leftSide + "<img src='ftv2blank.png' width=16 height=22>"
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.renderOb(leftSide + "<img src='ftv2node.png' width=16 height=22>")
|
|
||||||
leftSide = leftSide + "<img src='ftv2vertline.png' width=16 height=22>"
|
|
||||||
}
|
|
||||||
else
|
|
||||||
this.renderOb("")
|
|
||||||
}
|
|
||||||
|
|
||||||
function drawItem(leftSide)
|
|
||||||
{
|
|
||||||
if (browserVersion == 2)
|
|
||||||
doc.write("<layer id='item" + this.id + "' top=" + doc.yPos + " visibility=hidden>")
|
|
||||||
if (browserVersion == 3)
|
|
||||||
doc.write("<div id='item" + this.id + "' style='display:block;'>")
|
|
||||||
|
|
||||||
doc.write("\n<table ")
|
|
||||||
if (browserVersion == 1)
|
|
||||||
doc.write(" id='item" + this.id + "' style='position:block;' ")
|
|
||||||
doc.write(" border=0 cellspacing=0 cellpadding=0>\n")
|
|
||||||
doc.write("<tr><td>")
|
|
||||||
doc.write(leftSide)
|
|
||||||
if (this.link!="")
|
|
||||||
{
|
|
||||||
doc.write("<a href=" + this.link + ">")
|
|
||||||
}
|
|
||||||
doc.write("<img id='itemIcon"+this.id+"' ")
|
|
||||||
doc.write("src='"+this.iconSrc+"' border=0>")
|
|
||||||
if (this.link!="")
|
|
||||||
{
|
|
||||||
doc.write("</a>")
|
|
||||||
}
|
|
||||||
doc.write("</td>\n<td valign=middle nowrap>")
|
|
||||||
if (USETEXTLINKS && this.link!="")
|
|
||||||
doc.write("<a href=" + this.link + ">" + this.desc + "</a>")
|
|
||||||
else
|
|
||||||
doc.write(this.desc)
|
|
||||||
/*!
|
|
||||||
if (this.tagName!="")
|
|
||||||
{
|
|
||||||
doc.write(" [external]");
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
doc.write("\n</table>\n")
|
|
||||||
|
|
||||||
if (browserVersion == 2)
|
|
||||||
doc.write("</layer>")
|
|
||||||
if (browserVersion == 3)
|
|
||||||
doc.write("</div>")
|
|
||||||
|
|
||||||
if (browserVersion == 1) {
|
|
||||||
this.navObj = doc.all["item"+this.id]
|
|
||||||
this.iconImg = doc.all["itemIcon"+this.id]
|
|
||||||
} else if (browserVersion == 2) {
|
|
||||||
this.navObj = doc.layers["item"+this.id]
|
|
||||||
this.iconImg = this.navObj.document.images["itemIcon"+this.id]
|
|
||||||
doc.yPos=doc.yPos+this.navObj.clip.height
|
|
||||||
} else if (browserVersion == 3) {
|
|
||||||
this.navObj = doc.getElementById("item"+this.id)
|
|
||||||
this.iconImg = doc.images.namedItem("itemIcon"+this.id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Methods common to both objects (pseudo-inheritance)
|
|
||||||
// ********************************************************
|
|
||||||
|
|
||||||
function display()
|
|
||||||
{
|
|
||||||
if (browserVersion == 1 || browserVersion == 3)
|
|
||||||
this.navObj.style.display = "block"
|
|
||||||
else
|
|
||||||
this.navObj.visibility = "show"
|
|
||||||
}
|
|
||||||
|
|
||||||
function createEntryIndex()
|
|
||||||
{
|
|
||||||
this.id = nEntries
|
|
||||||
indexOfEntries[nEntries] = this
|
|
||||||
nEntries++
|
|
||||||
}
|
|
||||||
|
|
||||||
// total height of subEntries open
|
|
||||||
function totalHeight() //used with browserVersion == 2
|
|
||||||
{
|
|
||||||
var h = this.navObj.clip.height
|
|
||||||
var i = 0
|
|
||||||
|
|
||||||
if (this.isOpen) //is a folder and _is_ open
|
|
||||||
for (i=0 ; i < this.nChildren; i++)
|
|
||||||
h = h + this.children[i].totalHeight()
|
|
||||||
|
|
||||||
return h
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Events
|
|
||||||
// *********************************************************
|
|
||||||
|
|
||||||
function clickOnFolder(folderId)
|
|
||||||
{
|
|
||||||
var clicked = indexOfEntries[folderId]
|
|
||||||
|
|
||||||
if (!clicked.isOpen)
|
|
||||||
clickOnNode(folderId)
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
if (clicked.isSelected)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
function clickOnNode(folderId)
|
|
||||||
{
|
|
||||||
var clickedFolder = 0
|
|
||||||
var state = 0
|
|
||||||
|
|
||||||
clickedFolder = indexOfEntries[folderId]
|
|
||||||
state = clickedFolder.isOpen
|
|
||||||
|
|
||||||
clickedFolder.setState(!state) //open<->close
|
|
||||||
}
|
|
||||||
|
|
||||||
function initializeDocument()
|
|
||||||
{
|
|
||||||
doc = document;
|
|
||||||
if (doc.all)
|
|
||||||
browserVersion = 1 //IE4
|
|
||||||
else
|
|
||||||
if (doc.layers)
|
|
||||||
browserVersion = 2 //NS4
|
|
||||||
else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1)
|
|
||||||
browserVersion = 3 //mozilla
|
|
||||||
else
|
|
||||||
browserVersion = 0 //other
|
|
||||||
|
|
||||||
foldersTree.initialize(0, 1, "")
|
|
||||||
foldersTree.display()
|
|
||||||
|
|
||||||
if (browserVersion > 0)
|
|
||||||
{
|
|
||||||
if(browserVersion != 3)
|
|
||||||
doc.write("<layer top="+indexOfEntries[nEntries-1].navObj.top+"> </layer>")
|
|
||||||
|
|
||||||
// close the whole tree
|
|
||||||
clickOnNode(0)
|
|
||||||
// open the root folder
|
|
||||||
clickOnNode(0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Auxiliary Functions for Folder-Treee backward compatibility
|
|
||||||
// *********************************************************
|
|
||||||
|
|
||||||
function gFld(description, tagName, hreference)
|
|
||||||
{
|
|
||||||
folder = new Folder(description, tagName, hreference)
|
|
||||||
return folder
|
|
||||||
}
|
|
||||||
|
|
||||||
function gLnk(description, tagName, linkData)
|
|
||||||
{
|
|
||||||
fullLink = ""
|
|
||||||
|
|
||||||
if (linkData!="")
|
|
||||||
{
|
|
||||||
fullLink = "'"+linkData+"' target=\"basefrm\""
|
|
||||||
}
|
|
||||||
|
|
||||||
linkItem = new Item(description, tagName, fullLink)
|
|
||||||
return linkItem
|
|
||||||
}
|
|
||||||
|
|
||||||
function insFld(parentFolder, childFolder)
|
|
||||||
{
|
|
||||||
return parentFolder.addChild(childFolder)
|
|
||||||
}
|
|
||||||
|
|
||||||
function insDoc(parentFolder, document)
|
|
||||||
{
|
|
||||||
parentFolder.addChild(document)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Global variables
|
|
||||||
// ****************
|
|
||||||
|
|
||||||
USETEXTLINKS = 1
|
|
||||||
indexOfEntries = new Array
|
|
||||||
nEntries = 0
|
|
||||||
doc = document
|
|
||||||
browserVersion = 0
|
|
||||||
selectedFolder=0
|
|
@ -1,39 +0,0 @@
|
|||||||
# -* Makefile *-
|
|
||||||
#
|
|
||||||
# Author : Vasily Rusyaev (Open Cascade NN)
|
|
||||||
# Date : 13/02/2003
|
|
||||||
# $Header:
|
|
||||||
#
|
|
||||||
# source path
|
|
||||||
top_srcdir=@top_srcdir@
|
|
||||||
root_srcdir=@ROOT_SRCDIR@
|
|
||||||
top_builddir=../..
|
|
||||||
srcdir=@srcdir@
|
|
||||||
VPATH=.:@srcdir@
|
|
||||||
doxygen=@DOXYGEN@
|
|
||||||
|
|
||||||
@COMMENCE@
|
|
||||||
|
|
||||||
doc:
|
|
||||||
cp -fr $(srcdir)/INPUT ./; \
|
|
||||||
cd INPUT; \
|
|
||||||
sed 's|../../../share/salome|$(root_srcdir)|' doxyfile > doxyfile1; \
|
|
||||||
mv -f doxyfile1 doxyfile; \
|
|
||||||
$(doxygen) ./doxyfile; \
|
|
||||||
cd ..; \
|
|
||||||
cp -fr $(srcdir)/INPUT/sources/static/*.* ./html/
|
|
||||||
cp -fr $(srcdir)/INPUT/sources/ html/
|
|
||||||
cp -fr $(srcdir)/INPUT/HTML/ html/
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -rf html
|
|
||||||
|
|
||||||
distclean: clean
|
|
||||||
rm -rf INPUT
|
|
||||||
|
|
||||||
install:
|
|
||||||
$(INSTALL) -d $(docdir); \
|
|
||||||
cp -rf html $(docdir)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
rm -rf $(docdir)/html
|
|
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 804 B |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 40 KiB |
@ -1,230 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "HTML 4.01 Transitional">
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html">
|
|
||||||
<title>Geometry module in SALOME environnement </title>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<h1>SMESH starting tutorial</h1>
|
|
||||||
|
|
||||||
<h2>2D meshing with MEFISTO</h2>
|
|
||||||
|
|
||||||
<h3>Overview</h3>
|
|
||||||
|
|
||||||
<p><i>Before following this tutorial you need to create or import a geometry.
|
|
||||||
Please refere to the GEOM module documentation to do so.</i></p>
|
|
||||||
|
|
||||||
<p>Now we have to load SMESH component. To do so : </p>
|
|
||||||
<ul>
|
|
||||||
<li>click on the SMESH icon or on 'SMESH' into the combo box of resources
|
|
||||||
on botton left.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p><i>SMESH is used to mesh edges, faces and volums each one thanks to a
|
|
||||||
specialised algorithm. To mesh an entity which degree is n, one must have all
|
|
||||||
its lower degree entities meshed. For instance, to mesh a face requires a
|
|
||||||
previous meshing of all its edges. In the example MEFISTO meshes faces, and
|
|
||||||
Regular_1D meshes edges. MEFISTO doesn't check how edges are meshed. The only
|
|
||||||
test it does is to verify that edges are meshed before starting its work.
|
|
||||||
MEFISTO requires an hypothesis : maximum area of triangles. Regular_1D
|
|
||||||
requires one hypothesis among two: number of segments per edge <u>or</u>
|
|
||||||
length of segment.</i> </p>
|
|
||||||
|
|
||||||
<p>The entire operation is done by :</p>
|
|
||||||
<ol>
|
|
||||||
<li>init a mesh object associated to a geometrical object</li>
|
|
||||||
<li>choosing an <u>algorithm</u> for meshing faces, here MEFISTO is
|
|
||||||
choosen</li>
|
|
||||||
<li>choosing an <u>algorithm</u> for meshing edges, here Regular1d is
|
|
||||||
choosen</li>
|
|
||||||
<li>creating <u>hypothesis</u> of calculation. We need to inform :
|
|
||||||
<ul>
|
|
||||||
<li>the number of segments per edge</li>
|
|
||||||
<li>the maximum area per triangle of meshing</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>setting or attaching algorithm and hypothesis to the object loaded</li>
|
|
||||||
<li>launching computation</li>
|
|
||||||
<li>displaying the result in the best mode.</li>
|
|
||||||
</ol>
|
|
||||||
<img alt="" src="SMESHOverview.png">
|
|
||||||
|
|
||||||
<h3>Details</h3>
|
|
||||||
|
|
||||||
<p>Below are explained those 6 steps precisely : </p>
|
|
||||||
<ol>
|
|
||||||
<li><p><u>init a mesh object associated to a geometrical object :</u></p>
|
|
||||||
<p><img src="MeshInit.png"></p>
|
|
||||||
<ul>
|
|
||||||
<li>In the menu bar on the top, find the <u>Mesh</u> menu and click on
|
|
||||||
<u>Init.</u></li>
|
|
||||||
<li>Then in the dialog box select the topology into Geometry field of
|
|
||||||
ObjectBrowser or Viewer, give a name an click on Ok.</li>
|
|
||||||
<li>The topology is now known inside SMESH component.</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li><p>define algorithms for meshing : </p>
|
|
||||||
<p><img src="SelectAlgorithms.png"></p>
|
|
||||||
<ul>
|
|
||||||
<li>In the menu bar, find <u>Hypothesis</u>, <u>Algorithm</u> then
|
|
||||||
click on <u>Mefisto.</u></li>
|
|
||||||
<li>Do the same to load 'Regular1D'.</li>
|
|
||||||
<li>Remember, Regular1D is needed for edge meshing.</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li><p>define <u>hypothesis</u> of calculation :<br>
|
|
||||||
In the menu bar, find <u>Hypothesis</u> then Hypothesis and click on
|
|
||||||
Segments. Then in the dialog box give a name for <u>hypothesis</u> and a
|
|
||||||
value that is the number of segments per edge. Enter 7 segments for
|
|
||||||
example.<br>
|
|
||||||
Do the same for 'Max. Element Area' argument that is the maximum surface
|
|
||||||
of triangles builded during meshing. Enter 2500 here.</p>
|
|
||||||
</li>
|
|
||||||
<li><p>Attach previous arguments (hypothesis) and algorithm to the
|
|
||||||
topology :<br>
|
|
||||||
Select the object in the Object Browser then using pop up menu (right
|
|
||||||
click on object),<br>
|
|
||||||
'Set algorithm' and 'Set Hypothesis' into specialized dialog boxes.<br>
|
|
||||||
You can also find these methods in the menu 'Hypothesis'.</p>
|
|
||||||
</li>
|
|
||||||
<li><p>Selecting the mesh object before, start computation in the pop up
|
|
||||||
menu; click on 'Compute'.</p>
|
|
||||||
</li>
|
|
||||||
<li><p>Update the display using '<i>Update'</i> if necessary.<br>
|
|
||||||
Note : in <i>Preferencies</i> / <i>Mesh</i> menu there is an
|
|
||||||
option to have an automatic update of the display after operations that
|
|
||||||
modify it such as Compute, adding nodes… If this option is not
|
|
||||||
setted user must make an update of the display manually.<br>
|
|
||||||
<br>
|
|
||||||
You may also adjust the display '<i>Properties' / 'Display Mode</i>' has
|
|
||||||
you prefer ; shading, wireframe or shrink,<br>
|
|
||||||
and adjust color and size attributs in a specific dialog box shown
|
|
||||||
below.</p>
|
|
||||||
<p><img src="SetColor.png"></p>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
|
|
||||||
<h3>Final result of meshing</h3>
|
|
||||||
|
|
||||||
<p>At this final step you can observe the result of 2D meshing of faces by
|
|
||||||
MEFISTO.</p>
|
|
||||||
|
|
||||||
<p>Note : it is possible to change an hypothesis by mean the pop up then
|
|
||||||
<i>Edit</i> and finally compute again.</p>
|
|
||||||
|
|
||||||
<p><img src="MeshResult.png"></p>
|
|
||||||
|
|
||||||
<h2>Meshing with global and local hypothesis</h2>
|
|
||||||
|
|
||||||
<h3>details</h3>
|
|
||||||
|
|
||||||
<p><i>We would now make a mesh as before but with a local modification of
|
|
||||||
parameter (hypothesis) on an edge. We first have to explode the initial
|
|
||||||
topology in GEOMETRY component. This operation will give us access to sub
|
|
||||||
shapes edges of geom.brep.</i></p>
|
|
||||||
<ol>
|
|
||||||
<li><p>import or create a geometry as before</p>
|
|
||||||
</li>
|
|
||||||
<li><p>call 'Explode' method found in 'New Entity' on the menu bar ;
|
|
||||||
(remember the tip about Automatic/Store !) </p>
|
|
||||||
<p><img src="SubShapesSelection.png"></p>
|
|
||||||
</li>
|
|
||||||
<li><p>select the main object, choose 'Edge' in the combo box and click on
|
|
||||||
Ok.<br>
|
|
||||||
<u>Note</u> : do not click on 'select sub shape' at anytime. This
|
|
||||||
function is used with OCC viewer for individual sub shape selection not
|
|
||||||
yet available with VTK.<br>
|
|
||||||
<br>
|
|
||||||
Now the object browser contents all edges as sub shapes of the main
|
|
||||||
topology. Select the first edge <i>Edge_ 1</i> and display only it.
|
|
||||||
Use the pop up 'Display only' mode for this.<br>
|
|
||||||
You may also rename the edge to remember it for future meshing.<br>
|
|
||||||
<i>Our scope : apply a local hypothesis on this edge.<br>
|
|
||||||
</i></p>
|
|
||||||
</li>
|
|
||||||
<li><p>The job is now finished for GEOMETRY component.</p>
|
|
||||||
</li>
|
|
||||||
<li><p>Load SMESH component and use menus 'Mesh' and 'Init' to load the
|
|
||||||
topology into SMESH as before.<br>
|
|
||||||
(Already defined if you have kept the previous study.)</p>
|
|
||||||
</li>
|
|
||||||
<li><p>Define algorithms Regular_1D and Mefisto using menus 'Hypothesis'
|
|
||||||
and 'Algorithm'.</p>
|
|
||||||
</li>
|
|
||||||
<li><p>Define hypothesis 'Segments' = 7 and 'Max. Element Area' = 2500.
|
|
||||||
(Already defined if…) </p>
|
|
||||||
</li>
|
|
||||||
<li><p>Define another hypothesis 'Local length' = 100 to be used only as
|
|
||||||
local parameter for the edge.</p>
|
|
||||||
</li>
|
|
||||||
<li><p>Now we have to attach algorithms and hypothesis to topologies, the
|
|
||||||
global and the sub shape edge.<br>
|
|
||||||
For the main topology, select it and use 'Set algorithms' and 'Set
|
|
||||||
Hypothesis' and attach :<br>
|
|
||||||
hypothesis 'Segments' = 7 and 'Max. Element Area' = 2500.</p>
|
|
||||||
</li>
|
|
||||||
<li><p>To set a local parameter of meshing on the edge we do :<br>
|
|
||||||
click on 'Mesh' menu then 'Add Sub Mesh'. On the dialog box select the
|
|
||||||
main object then sub object edge from Object Browser and GEOMETRY field.
|
|
||||||
Give it a local name; for example <i>myEdge</i> or anyone.</p>
|
|
||||||
<p><img src="SubMeshContruction.png"></p>
|
|
||||||
</li>
|
|
||||||
<li><p>Set the algorithm used for edge meshing. Here use Regular_ 1D.
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
<li><p>Set a local hypothesis to the edge. Use 'Local length' = 100.</p>
|
|
||||||
</li>
|
|
||||||
<li><p>'<i>Compute'</i> (and '<i>Update'</i> display if necessary see
|
|
||||||
before) the main mesh object. This will compute also the edge sub
|
|
||||||
shape.<br>
|
|
||||||
Do not forget to activate the display mode Wireframe,
|
|
||||||
Shading or Shrink; see in pop up menu '<i>Properties'</i>,
|
|
||||||
'<i>Display mode'</i>… </p>
|
|
||||||
</li>
|
|
||||||
<li><p>Move the point of view to watch the edge meshed with a local
|
|
||||||
hypothesis 'Local length' = 100. </p>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
|
|
||||||
<h3>The result of second meshing</h3>
|
|
||||||
|
|
||||||
<p>As we see below, the effect produced by setting a local hypothesis setted
|
|
||||||
on the edge <i>Edge_ 1.</i></p>
|
|
||||||
|
|
||||||
<p align="left">Compare to another edge that have the same physical
|
|
||||||
length.</p>
|
|
||||||
|
|
||||||
<p><img src="MeshResult2.png"></p>
|
|
||||||
|
|
||||||
<h2>Using PYTHON interpretor to import an example script</h2>
|
|
||||||
It is easy to import an example of meshing procedure using PYTHON interpretor
|
|
||||||
:
|
|
||||||
<ul>
|
|
||||||
<li>Load SMESH component with VTK viewer.</li>
|
|
||||||
<li>Just type <i>'import geomMesh.py'</i> in the textual window of
|
|
||||||
PYTHON.</li>
|
|
||||||
<li>Validate with the <i>Enter</i> key.</li>
|
|
||||||
<li>You just have to run 'Compute' then choose a display mode to see the
|
|
||||||
result.</li>
|
|
||||||
</ul>
|
|
||||||
This imported example is very similar to the last exercice. It uses a local
|
|
||||||
hypothesis on an edge too.
|
|
||||||
|
|
||||||
<p><img src="ImportResult.png"></p>
|
|
||||||
|
|
||||||
<h2>Control features</h2>
|
|
||||||
|
|
||||||
<p>Test now a control function of area for mesh resulting triangles.</p>
|
|
||||||
|
|
||||||
<p>Find <i>Control</i> on the menu bar then <i>Cells</i> and <i>Area</i>. The
|
|
||||||
image below displays areas with a color depending on its value in the scalar
|
|
||||||
bar shown on the left.<br>
|
|
||||||
Scalar bar general parameters are setted in <i>Preferencies</i> /
|
|
||||||
<i>Mesh</i> / <i>Scalar Bar</i>.</p>
|
|
||||||
|
|
||||||
<p>Specific range parameters are changed with the pop up menu.</p>
|
|
||||||
|
|
||||||
<p><img src="ControlFeature.png"></p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
Before Width: | Height: | Size: 1002 B |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 5.0 KiB |
@ -1,50 +0,0 @@
|
|||||||
# SMESH OBJECT : interactive object for SMESH visualization
|
|
||||||
#
|
|
||||||
# Copyright (C) 2003 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# File : Makefile.in
|
|
||||||
# Module : SMESH
|
|
||||||
|
|
||||||
top_srcdir=@top_srcdir@
|
|
||||||
top_builddir=../..
|
|
||||||
srcdir=@srcdir@
|
|
||||||
VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_builddir)/idl
|
|
||||||
|
|
||||||
@COMMENCE@
|
|
||||||
|
|
||||||
EXPORT_HEADERS = SMESH_Controls.hxx
|
|
||||||
|
|
||||||
|
|
||||||
# Libraries targets
|
|
||||||
|
|
||||||
LIB = libSMESHControls.la
|
|
||||||
LIB_SRC = SMESH_Controls.cxx
|
|
||||||
|
|
||||||
# Executables targets
|
|
||||||
BIN = SMESHControls
|
|
||||||
BIN_SRC =
|
|
||||||
|
|
||||||
CPPFLAGS+=$(OCC_INCLUDES) $(BOOST_CPPFLAGS)
|
|
||||||
|
|
||||||
LDFLAGS+=$(OCC_KERNEL_LIBS) -L${KERNEL_ROOT_DIR}/lib/salome -lOpUtil -lSMDS
|
|
||||||
|
|
||||||
@CONCLUDE@
|
|
@ -1,42 +0,0 @@
|
|||||||
// Copyright (C) 2003 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
|
||||||
|
|
||||||
#include "SMESH_Controls.hxx"
|
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
|
||||||
{
|
|
||||||
using namespace SMESH::Controls;
|
|
||||||
new MinimumAngle();
|
|
||||||
new AspectRatio();
|
|
||||||
new Warping();
|
|
||||||
new Taper();
|
|
||||||
new Skew();
|
|
||||||
new Area();
|
|
||||||
new Length();
|
|
||||||
new MultiConnection();
|
|
||||||
new FreeBorders();
|
|
||||||
new LessThan();
|
|
||||||
new MoreThan();
|
|
||||||
new EqualTo();
|
|
||||||
new LogicalNOT();
|
|
||||||
new LogicalAND();
|
|
||||||
new LogicalOR();
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
@ -1,774 +0,0 @@
|
|||||||
// Copyright (C) 2003 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
|
||||||
|
|
||||||
#include <set>
|
|
||||||
|
|
||||||
#include <gp_Pnt.hxx>
|
|
||||||
#include <gp_Vec.hxx>
|
|
||||||
#include <gp_XYZ.hxx>
|
|
||||||
#include <Precision.hxx>
|
|
||||||
#include <TColgp_SequenceOfXYZ.hxx>
|
|
||||||
#include <TColStd_MapOfInteger.hxx>
|
|
||||||
|
|
||||||
#include "SMDS_Mesh.hxx"
|
|
||||||
#include "SMDS_Iterator.hxx"
|
|
||||||
#include "SMDS_MeshElement.hxx"
|
|
||||||
#include "SMDS_MeshNode.hxx"
|
|
||||||
|
|
||||||
#include "SMESH_Controls.hxx"
|
|
||||||
|
|
||||||
/*
|
|
||||||
AUXILIARY METHODS
|
|
||||||
*/
|
|
||||||
|
|
||||||
static inline double getAngle( const gp_XYZ& P1, const gp_XYZ& P2, const gp_XYZ& P3 )
|
|
||||||
{
|
|
||||||
return gp_Vec( P1 - P2 ).Angle( gp_Vec( P3 - P2 ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline double getArea( const gp_XYZ& P1, const gp_XYZ& P2, const gp_XYZ& P3 )
|
|
||||||
{
|
|
||||||
gp_Vec aVec1( P2 - P1 );
|
|
||||||
gp_Vec aVec2( P3 - P1 );
|
|
||||||
return ( aVec1 ^ aVec2 ).Magnitude() * 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline double getArea( const gp_Pnt& P1, const gp_Pnt& P2, const gp_Pnt& P3 )
|
|
||||||
{
|
|
||||||
return getArea( P1.XYZ(), P2.XYZ(), P3.XYZ() );
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline double getDistance( const gp_XYZ& P1, const gp_XYZ& P2 )
|
|
||||||
{
|
|
||||||
double aDist = gp_Pnt( P1 ).Distance( gp_Pnt( P2 ) );
|
|
||||||
return aDist;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int getNbMultiConnection( SMDS_Mesh* theMesh, const int theId )
|
|
||||||
{
|
|
||||||
if ( theMesh == 0 )
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
const SMDS_MeshElement* anEdge = theMesh->FindElement( theId );
|
|
||||||
if ( anEdge == 0 || anEdge->GetType() != SMDSAbs_Edge || anEdge->NbNodes() != 2 )
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
TColStd_MapOfInteger aMap;
|
|
||||||
|
|
||||||
int aResult = 0;
|
|
||||||
SMDS_ElemIteratorPtr anIter = anEdge->nodesIterator();
|
|
||||||
if ( anIter != 0 )
|
|
||||||
{
|
|
||||||
while( anIter->more() )
|
|
||||||
{
|
|
||||||
const SMDS_MeshNode* aNode = (SMDS_MeshNode*)anIter->next();
|
|
||||||
if ( aNode == 0 )
|
|
||||||
return 0;
|
|
||||||
SMDS_ElemIteratorPtr anElemIter = aNode->GetInverseElementIterator();
|
|
||||||
while( anElemIter->more() )
|
|
||||||
{
|
|
||||||
const SMDS_MeshElement* anElem = anElemIter->next();
|
|
||||||
if ( anElem != 0 && anElem->GetType() != SMDSAbs_Edge )
|
|
||||||
{
|
|
||||||
int anId = anElem->GetID();
|
|
||||||
|
|
||||||
if ( anIter->more() ) // i.e. first node
|
|
||||||
aMap.Add( anId );
|
|
||||||
else if ( aMap.Contains( anId ) )
|
|
||||||
aResult++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return aResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
using namespace SMESH::Controls;
|
|
||||||
|
|
||||||
/*
|
|
||||||
FUNCTORS
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : NumericalFunctor
|
|
||||||
Description : Base class for numerical functors
|
|
||||||
*/
|
|
||||||
NumericalFunctor::NumericalFunctor():
|
|
||||||
myMesh(NULL)
|
|
||||||
{}
|
|
||||||
|
|
||||||
void NumericalFunctor::SetMesh( SMDS_Mesh* theMesh )
|
|
||||||
{
|
|
||||||
myMesh = theMesh;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool NumericalFunctor::getPoints( const int theId,
|
|
||||||
TColgp_SequenceOfXYZ& theRes ) const
|
|
||||||
{
|
|
||||||
theRes.Clear();
|
|
||||||
|
|
||||||
if ( myMesh == 0 )
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// Get nodes of the face
|
|
||||||
const SMDS_MeshElement* anElem = myMesh->FindElement( theId );
|
|
||||||
if ( anElem == 0 || anElem->GetType() != GetType() )
|
|
||||||
return false;
|
|
||||||
|
|
||||||
int nbNodes = anElem->NbNodes();
|
|
||||||
|
|
||||||
SMDS_ElemIteratorPtr anIter = anElem->nodesIterator();
|
|
||||||
if ( anIter != 0 )
|
|
||||||
{
|
|
||||||
while( anIter->more() )
|
|
||||||
{
|
|
||||||
const SMDS_MeshNode* aNode = (SMDS_MeshNode*)anIter->next();
|
|
||||||
if ( aNode != 0 )
|
|
||||||
theRes.Append( gp_XYZ( aNode->X(), aNode->Y(), aNode->Z() ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : MinimumAngle
|
|
||||||
Description : Functor for calculation of minimum angle
|
|
||||||
*/
|
|
||||||
double MinimumAngle::GetValue( long theId )
|
|
||||||
{
|
|
||||||
TColgp_SequenceOfXYZ P;
|
|
||||||
if ( !getPoints( theId, P ) || P.Length() != 3 && P.Length() != 4 )
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
double aMin;
|
|
||||||
|
|
||||||
if ( P.Length() == 3 )
|
|
||||||
{
|
|
||||||
double A0 = getAngle( P( 3 ), P( 1 ), P( 2 ) );
|
|
||||||
double A1 = getAngle( P( 1 ), P( 2 ), P( 3 ) );
|
|
||||||
double A2 = getAngle( P( 2 ), P( 3 ), P( 1 ) );
|
|
||||||
|
|
||||||
aMin = Min( A0, Min( A1, A2 ) );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
double A0 = getAngle( P( 4 ), P( 1 ), P( 2 ) );
|
|
||||||
double A1 = getAngle( P( 1 ), P( 2 ), P( 3 ) );
|
|
||||||
double A2 = getAngle( P( 2 ), P( 3 ), P( 4 ) );
|
|
||||||
double A3 = getAngle( P( 3 ), P( 4 ), P( 1 ) );
|
|
||||||
|
|
||||||
aMin = Min( Min( A0, A1 ), Min( A2, A3 ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
return aMin * 180 / PI;
|
|
||||||
}
|
|
||||||
|
|
||||||
SMDSAbs_ElementType MinimumAngle::GetType() const
|
|
||||||
{
|
|
||||||
return SMDSAbs_Face;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : AspectRatio
|
|
||||||
Description : Functor for calculating aspect ratio
|
|
||||||
*/
|
|
||||||
double AspectRatio::GetValue( long theId )
|
|
||||||
{
|
|
||||||
TColgp_SequenceOfXYZ P;
|
|
||||||
if ( !getPoints( theId, P ) || P.Length() != 3 && P.Length() != 4 )
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
int nbNodes = P.Length();
|
|
||||||
|
|
||||||
// Compute lengths of the sides
|
|
||||||
|
|
||||||
double aLen[ nbNodes ];
|
|
||||||
for ( int i = 0; i < nbNodes - 1; i++ )
|
|
||||||
aLen[ i ] = getDistance( P( i + 1 ), P( i + 2 ) );
|
|
||||||
aLen[ nbNodes - 1 ] = getDistance( P( 1 ), P( nbNodes ) );
|
|
||||||
|
|
||||||
// Compute aspect ratio
|
|
||||||
|
|
||||||
if ( nbNodes == 3 )
|
|
||||||
{
|
|
||||||
double aMaxLen = Max( aLen[ 0 ], Max( aLen[ 1 ], aLen[ 2 ] ) );
|
|
||||||
double anArea = getArea( P( 1 ), P( 2 ), P( 3 ) );
|
|
||||||
static double aCoef = sqrt( 3. ) / 4;
|
|
||||||
|
|
||||||
return anArea != 0 ? aCoef * aMaxLen * aMaxLen / anArea : 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
double aMaxLen = Max( Max( aLen[ 0 ], aLen[ 1 ] ), Max( aLen[ 2 ], aLen[ 3 ] ) );
|
|
||||||
double aMinLen = Min( Min( aLen[ 0 ], aLen[ 1 ] ), Min( aLen[ 2 ], aLen[ 3 ] ) );
|
|
||||||
|
|
||||||
return aMinLen != 0 ? aMaxLen / aMinLen : 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SMDSAbs_ElementType AspectRatio::GetType() const
|
|
||||||
{
|
|
||||||
return SMDSAbs_Face;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : Warping
|
|
||||||
Description : Functor for calculating warping
|
|
||||||
*/
|
|
||||||
double Warping::GetValue( long theId )
|
|
||||||
{
|
|
||||||
TColgp_SequenceOfXYZ P;
|
|
||||||
if ( !getPoints( theId, P ) || P.Length() != 4 )
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
gp_XYZ G = ( P( 1 ) + P( 2 ) + P( 3 ) + P( 4 ) ) / 4;
|
|
||||||
|
|
||||||
double A1 = ComputeA( P( 1 ), P( 2 ), P( 3 ), G );
|
|
||||||
double A2 = ComputeA( P( 2 ), P( 3 ), P( 4 ), G );
|
|
||||||
double A3 = ComputeA( P( 3 ), P( 4 ), P( 1 ), G );
|
|
||||||
double A4 = ComputeA( P( 4 ), P( 1 ), P( 2 ), G );
|
|
||||||
|
|
||||||
return Max( Max( A1, A2 ), Max( A3, A4 ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
double Warping::ComputeA( const gp_XYZ& thePnt1,
|
|
||||||
const gp_XYZ& thePnt2,
|
|
||||||
const gp_XYZ& thePnt3,
|
|
||||||
const gp_XYZ& theG ) const
|
|
||||||
{
|
|
||||||
double aLen1 = gp_Pnt( thePnt1 ).Distance( gp_Pnt( thePnt2 ) );
|
|
||||||
double aLen2 = gp_Pnt( thePnt2 ).Distance( gp_Pnt( thePnt3 ) );
|
|
||||||
double L = Min( aLen1, aLen2 ) * 0.5;
|
|
||||||
|
|
||||||
gp_XYZ GI = ( thePnt2 - thePnt1 ) / 2. - theG;
|
|
||||||
gp_XYZ GJ = ( thePnt3 - thePnt2 ) / 2. - theG;
|
|
||||||
gp_XYZ N = GI.Crossed( GJ );
|
|
||||||
N.Normalize();
|
|
||||||
|
|
||||||
double H = gp_Vec( thePnt2 - theG ).Dot( gp_Vec( N ) );
|
|
||||||
return asin( fabs( H / L ) ) * 180 / PI;
|
|
||||||
}
|
|
||||||
|
|
||||||
SMDSAbs_ElementType Warping::GetType() const
|
|
||||||
{
|
|
||||||
return SMDSAbs_Face;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : Taper
|
|
||||||
Description : Functor for calculating taper
|
|
||||||
*/
|
|
||||||
double Taper::GetValue( long theId )
|
|
||||||
{
|
|
||||||
TColgp_SequenceOfXYZ P;
|
|
||||||
if ( !getPoints( theId, P ) || P.Length() != 4 )
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
// Compute taper
|
|
||||||
double J1 = getArea( P( 4 ), P( 1 ), P( 2 ) ) / 2;
|
|
||||||
double J2 = getArea( P( 3 ), P( 1 ), P( 2 ) ) / 2;
|
|
||||||
double J3 = getArea( P( 2 ), P( 3 ), P( 4 ) ) / 2;
|
|
||||||
double J4 = getArea( P( 3 ), P( 4 ), P( 1 ) ) / 2;
|
|
||||||
|
|
||||||
double JA = 0.25 * ( J1 + J2 + J3 + J4 );
|
|
||||||
|
|
||||||
double T1 = fabs( ( J1 - JA ) / JA );
|
|
||||||
double T2 = fabs( ( J2 - JA ) / JA );
|
|
||||||
double T3 = fabs( ( J3 - JA ) / JA );
|
|
||||||
double T4 = fabs( ( J4 - JA ) / JA );
|
|
||||||
|
|
||||||
return Max( Max( T1, T2 ), Max( T3, T4 ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
SMDSAbs_ElementType Taper::GetType() const
|
|
||||||
{
|
|
||||||
return SMDSAbs_Face;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : Skew
|
|
||||||
Description : Functor for calculating skew in degrees
|
|
||||||
*/
|
|
||||||
static inline double skewAngle( const gp_XYZ& p1, const gp_XYZ& p2, const gp_XYZ& p3 )
|
|
||||||
{
|
|
||||||
gp_XYZ p12 = ( p2 + p1 ) / 2;
|
|
||||||
gp_XYZ p23 = ( p3 + p2 ) / 2;
|
|
||||||
gp_XYZ p31 = ( p3 + p1 ) / 2;
|
|
||||||
|
|
||||||
return gp_Vec( p31 - p2 ).Angle( p12 - p23 );
|
|
||||||
}
|
|
||||||
|
|
||||||
double Skew::GetValue( long theId )
|
|
||||||
{
|
|
||||||
TColgp_SequenceOfXYZ P;
|
|
||||||
if ( !getPoints( theId, P ) || P.Length() != 3 && P.Length() != 4 )
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
// Compute skew
|
|
||||||
static double PI2 = PI / 2;
|
|
||||||
if ( P.Length() == 3 )
|
|
||||||
{
|
|
||||||
double A0 = fabs( PI2 - skewAngle( P( 3 ), P( 1 ), P( 2 ) ) );
|
|
||||||
double A1 = fabs( PI2 - skewAngle( P( 1 ), P( 2 ), P( 3 ) ) );
|
|
||||||
double A2 = fabs( PI2 - skewAngle( P( 2 ), P( 3 ), P( 1 ) ) );
|
|
||||||
|
|
||||||
return Max( A0, Max( A1, A2 ) ) * 180 / PI;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
gp_XYZ p12 = ( P( 1 ) + P( 2 ) ) / 2;
|
|
||||||
gp_XYZ p23 = ( P( 2 ) + P( 3 ) ) / 2;
|
|
||||||
gp_XYZ p34 = ( P( 3 ) + P( 4 ) ) / 2;
|
|
||||||
gp_XYZ p41 = ( P( 4 ) + P( 1 ) ) / 2;
|
|
||||||
|
|
||||||
double A = fabs( PI2 - gp_Vec( p34 - p12 ).Angle( p23 - p41 ) );
|
|
||||||
|
|
||||||
return A * 180 / PI;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SMDSAbs_ElementType Skew::GetType() const
|
|
||||||
{
|
|
||||||
return SMDSAbs_Face;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : Area
|
|
||||||
Description : Functor for calculating area
|
|
||||||
*/
|
|
||||||
double Area::GetValue( long theId )
|
|
||||||
{
|
|
||||||
TColgp_SequenceOfXYZ P;
|
|
||||||
if ( !getPoints( theId, P ) || P.Length() != 3 && P.Length() != 4 )
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if ( P.Length() == 3 )
|
|
||||||
return getArea( P( 1 ), P( 2 ), P( 3 ) );
|
|
||||||
else
|
|
||||||
return getArea( P( 1 ), P( 2 ), P( 3 ) ) + getArea( P( 1 ), P( 3 ), P( 4 ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
SMDSAbs_ElementType Area::GetType() const
|
|
||||||
{
|
|
||||||
return SMDSAbs_Face;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : Length
|
|
||||||
Description : Functor for calculating length off edge
|
|
||||||
*/
|
|
||||||
double Length::GetValue( long theId )
|
|
||||||
{
|
|
||||||
TColgp_SequenceOfXYZ P;
|
|
||||||
return getPoints( theId, P ) && P.Length() == 2 ? getDistance( P( 1 ), P( 2 ) ) : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
SMDSAbs_ElementType Length::GetType() const
|
|
||||||
{
|
|
||||||
return SMDSAbs_Edge;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : MultiConnection
|
|
||||||
Description : Functor for calculating number of faces conneted to the edge
|
|
||||||
*/
|
|
||||||
double MultiConnection::GetValue( long theId )
|
|
||||||
{
|
|
||||||
return getNbMultiConnection( myMesh, theId );
|
|
||||||
}
|
|
||||||
|
|
||||||
SMDSAbs_ElementType MultiConnection::GetType() const
|
|
||||||
{
|
|
||||||
return SMDSAbs_Edge;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
PREDICATES
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : FreeBorders
|
|
||||||
Description : Predicate for free borders
|
|
||||||
*/
|
|
||||||
|
|
||||||
FreeBorders::FreeBorders()
|
|
||||||
{
|
|
||||||
myMesh = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FreeBorders::SetMesh( SMDS_Mesh* theMesh )
|
|
||||||
{
|
|
||||||
myMesh = theMesh;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FreeBorders::IsSatisfy( long theId )
|
|
||||||
{
|
|
||||||
return getNbMultiConnection( myMesh, theId ) == 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
SMDSAbs_ElementType FreeBorders::GetType() const
|
|
||||||
{
|
|
||||||
return SMDSAbs_Edge;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : FreeEdges
|
|
||||||
Description : Predicate for free Edges
|
|
||||||
*/
|
|
||||||
FreeEdges::FreeEdges()
|
|
||||||
{
|
|
||||||
myMesh = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FreeEdges::SetMesh( SMDS_Mesh* theMesh )
|
|
||||||
{
|
|
||||||
myMesh = theMesh;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FreeEdges::IsSatisfy( long theId )
|
|
||||||
{
|
|
||||||
return getNbMultiConnection( myMesh, theId ) == 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
SMDSAbs_ElementType FreeEdges::GetType() const
|
|
||||||
{
|
|
||||||
return SMDSAbs_Face;
|
|
||||||
}
|
|
||||||
|
|
||||||
FreeEdges::Border::Border(long thePntId1, long thePntId2){
|
|
||||||
PntId[0] = thePntId1; PntId[1] = thePntId2;
|
|
||||||
if(thePntId1 > thePntId2){
|
|
||||||
PntId[1] = thePntId1; PntId[0] = thePntId2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//bool operator<(const FreeEdges::Border& x, const FreeEdges::Border& y){
|
|
||||||
// if(x.PntId[0] < y.PntId[0]) return true;
|
|
||||||
// if(x.PntId[0] == y.PntId[0])
|
|
||||||
// if(x.PntId[1] < y.PntId[1]) return true;
|
|
||||||
// return false;
|
|
||||||
//}
|
|
||||||
|
|
||||||
namespace SMESH{
|
|
||||||
namespace Controls{
|
|
||||||
struct EdgeBorder: public FreeEdges::Border{
|
|
||||||
long ElemId;
|
|
||||||
EdgeBorder(long theElemId, long thePntId1, long thePntId2):
|
|
||||||
FreeEdges::Border(thePntId1,thePntId2),
|
|
||||||
ElemId(theElemId)
|
|
||||||
{}
|
|
||||||
};
|
|
||||||
|
|
||||||
bool operator<(const FreeEdges::Border& x, const FreeEdges::Border& y){
|
|
||||||
if(x.PntId[0] < y.PntId[0]) return true;
|
|
||||||
if(x.PntId[0] == y.PntId[0])
|
|
||||||
if(x.PntId[1] < y.PntId[1]) return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef std::set<EdgeBorder> EdgeBorderS;
|
|
||||||
|
|
||||||
inline void UpdateBorders(const EdgeBorder& theBorder,
|
|
||||||
EdgeBorderS& theRegistry,
|
|
||||||
EdgeBorderS& theContainer)
|
|
||||||
{
|
|
||||||
if(theRegistry.find(theBorder) == theRegistry.end()){
|
|
||||||
theRegistry.insert(theBorder);
|
|
||||||
theContainer.insert(theBorder);
|
|
||||||
}else{
|
|
||||||
theContainer.erase(theBorder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void FreeEdges::GetBoreders(Borders& theBorders)
|
|
||||||
{
|
|
||||||
EdgeBorderS aRegistry;
|
|
||||||
EdgeBorderS aContainer;
|
|
||||||
SMDS_FaceIteratorPtr anIter = myMesh->facesIterator();
|
|
||||||
for(; anIter->more(); ){
|
|
||||||
const SMDS_MeshFace* anElem = anIter->next();
|
|
||||||
long anElemId = anElem->GetID();
|
|
||||||
SMDS_ElemIteratorPtr aNodesIter = anElem->nodesIterator();
|
|
||||||
long aNodeId[2];
|
|
||||||
const SMDS_MeshElement* aNode;
|
|
||||||
if(aNodesIter->more()){
|
|
||||||
aNode = aNodesIter->next();
|
|
||||||
aNodeId[0] = aNodeId[1] = aNode->GetID();
|
|
||||||
}
|
|
||||||
for(; aNodesIter->more(); ){
|
|
||||||
aNode = aNodesIter->next();
|
|
||||||
EdgeBorder aBorder(anElemId,aNodeId[1],aNode->GetID());
|
|
||||||
aNodeId[1] = aNode->GetID();
|
|
||||||
//std::cout<<aBorder.PntId[0]<<"; "<<aBorder.PntId[1]<<"; "<<aBorder.ElemId<<"\n";
|
|
||||||
UpdateBorders(aBorder,aRegistry,aContainer);
|
|
||||||
}
|
|
||||||
EdgeBorder aBorder(anElemId,aNodeId[0],aNodeId[1]);
|
|
||||||
UpdateBorders(aBorder,aRegistry,aContainer);
|
|
||||||
}
|
|
||||||
//std::cout<<"aContainer.size() = "<<aContainer.size()<<"\n";
|
|
||||||
if(aContainer.size()){
|
|
||||||
EdgeBorderS::const_iterator anIter = aContainer.begin();
|
|
||||||
for(; anIter != aContainer.end(); anIter++){
|
|
||||||
const EdgeBorder& aBorder = *anIter;
|
|
||||||
//std::cout<<aBorder.PntId[0]<<"; "<<aBorder.PntId[1]<<"; "<<aBorder.ElemId<<"\n";
|
|
||||||
theBorders.insert(Borders::value_type(aBorder.ElemId,aBorder));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : Comparator
|
|
||||||
Description : Base class for comparators
|
|
||||||
*/
|
|
||||||
Comparator::Comparator():
|
|
||||||
myMargin(0)
|
|
||||||
{}
|
|
||||||
|
|
||||||
Comparator::~Comparator()
|
|
||||||
{}
|
|
||||||
|
|
||||||
void Comparator::SetMesh( SMDS_Mesh* theMesh )
|
|
||||||
{
|
|
||||||
if ( myFunctor )
|
|
||||||
myFunctor->SetMesh( theMesh );
|
|
||||||
}
|
|
||||||
|
|
||||||
void Comparator::SetMargin( double theValue )
|
|
||||||
{
|
|
||||||
myMargin = theValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Comparator::SetNumFunctor( NumericalFunctorPtr theFunct )
|
|
||||||
{
|
|
||||||
myFunctor = theFunct;
|
|
||||||
}
|
|
||||||
|
|
||||||
SMDSAbs_ElementType Comparator::GetType() const
|
|
||||||
{
|
|
||||||
return myFunctor ? myFunctor->GetType() : SMDSAbs_All;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : LessThan
|
|
||||||
Description : Comparator "<"
|
|
||||||
*/
|
|
||||||
bool LessThan::IsSatisfy( long theId )
|
|
||||||
{
|
|
||||||
return myFunctor && myFunctor->GetValue( theId ) < myMargin;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : MoreThan
|
|
||||||
Description : Comparator ">"
|
|
||||||
*/
|
|
||||||
bool MoreThan::IsSatisfy( long theId )
|
|
||||||
{
|
|
||||||
return myFunctor && myFunctor->GetValue( theId ) > myMargin;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : EqualTo
|
|
||||||
Description : Comparator "="
|
|
||||||
*/
|
|
||||||
EqualTo::EqualTo():
|
|
||||||
myToler(Precision::Confusion())
|
|
||||||
{}
|
|
||||||
|
|
||||||
bool EqualTo::IsSatisfy( long theId )
|
|
||||||
{
|
|
||||||
return myFunctor && fabs( myFunctor->GetValue( theId ) - myMargin ) < myToler;
|
|
||||||
}
|
|
||||||
|
|
||||||
void EqualTo::SetTolerance( double theToler )
|
|
||||||
{
|
|
||||||
myToler = theToler;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : LogicalNOT
|
|
||||||
Description : Logical NOT predicate
|
|
||||||
*/
|
|
||||||
LogicalNOT::LogicalNOT()
|
|
||||||
{}
|
|
||||||
|
|
||||||
LogicalNOT::~LogicalNOT()
|
|
||||||
{}
|
|
||||||
|
|
||||||
bool LogicalNOT::IsSatisfy( long theId )
|
|
||||||
{
|
|
||||||
return myPredicate && !myPredicate->IsSatisfy( theId );
|
|
||||||
}
|
|
||||||
|
|
||||||
void LogicalNOT::SetMesh( SMDS_Mesh* theMesh )
|
|
||||||
{
|
|
||||||
if ( myPredicate )
|
|
||||||
myPredicate->SetMesh( theMesh );
|
|
||||||
}
|
|
||||||
|
|
||||||
void LogicalNOT::SetPredicate( PredicatePtr thePred )
|
|
||||||
{
|
|
||||||
myPredicate = thePred;
|
|
||||||
}
|
|
||||||
|
|
||||||
SMDSAbs_ElementType LogicalNOT::GetType() const
|
|
||||||
{
|
|
||||||
return myPredicate ? myPredicate->GetType() : SMDSAbs_All;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : LogicalBinary
|
|
||||||
Description : Base class for binary logical predicate
|
|
||||||
*/
|
|
||||||
LogicalBinary::LogicalBinary()
|
|
||||||
{}
|
|
||||||
|
|
||||||
LogicalBinary::~LogicalBinary()
|
|
||||||
{}
|
|
||||||
|
|
||||||
void LogicalBinary::SetMesh( SMDS_Mesh* theMesh )
|
|
||||||
{
|
|
||||||
if ( myPredicate1 )
|
|
||||||
myPredicate1->SetMesh( theMesh );
|
|
||||||
|
|
||||||
if ( myPredicate2 )
|
|
||||||
myPredicate2->SetMesh( theMesh );
|
|
||||||
}
|
|
||||||
|
|
||||||
void LogicalBinary::SetPredicate1( PredicatePtr thePredicate )
|
|
||||||
{
|
|
||||||
myPredicate1 = thePredicate;
|
|
||||||
}
|
|
||||||
|
|
||||||
void LogicalBinary::SetPredicate2( PredicatePtr thePredicate )
|
|
||||||
{
|
|
||||||
myPredicate2 = thePredicate;
|
|
||||||
}
|
|
||||||
|
|
||||||
SMDSAbs_ElementType LogicalBinary::GetType() const
|
|
||||||
{
|
|
||||||
if ( !myPredicate1 || !myPredicate2 )
|
|
||||||
return SMDSAbs_All;
|
|
||||||
|
|
||||||
SMDSAbs_ElementType aType1 = myPredicate1->GetType();
|
|
||||||
SMDSAbs_ElementType aType2 = myPredicate2->GetType();
|
|
||||||
|
|
||||||
return aType1 == aType2 ? aType1 : SMDSAbs_All;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : LogicalAND
|
|
||||||
Description : Logical AND
|
|
||||||
*/
|
|
||||||
bool LogicalAND::IsSatisfy( long theId )
|
|
||||||
{
|
|
||||||
return
|
|
||||||
myPredicate1 &&
|
|
||||||
myPredicate2 &&
|
|
||||||
myPredicate1->IsSatisfy( theId ) &&
|
|
||||||
myPredicate2->IsSatisfy( theId );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : LogicalOR
|
|
||||||
Description : Logical OR
|
|
||||||
*/
|
|
||||||
bool LogicalOR::IsSatisfy( long theId )
|
|
||||||
{
|
|
||||||
return
|
|
||||||
myPredicate1 &&
|
|
||||||
myPredicate2 &&
|
|
||||||
myPredicate1->IsSatisfy( theId ) ||
|
|
||||||
myPredicate2->IsSatisfy( theId );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
FILTER
|
|
||||||
*/
|
|
||||||
|
|
||||||
Filter::Filter()
|
|
||||||
{}
|
|
||||||
|
|
||||||
Filter::~Filter()
|
|
||||||
{}
|
|
||||||
|
|
||||||
void Filter::SetPredicate( PredicatePtr thePredicate )
|
|
||||||
{
|
|
||||||
myPredicate = thePredicate;
|
|
||||||
}
|
|
||||||
|
|
||||||
Filter::TIdSequence
|
|
||||||
Filter::GetElementsId( SMDS_Mesh* theMesh )
|
|
||||||
{
|
|
||||||
TIdSequence aSequence;
|
|
||||||
if ( !theMesh || !myPredicate ) return aSequence;
|
|
||||||
|
|
||||||
myPredicate->SetMesh( theMesh );
|
|
||||||
|
|
||||||
SMDSAbs_ElementType aType = myPredicate->GetType();
|
|
||||||
switch(aType){
|
|
||||||
case SMDSAbs_Edge:{
|
|
||||||
SMDS_EdgeIteratorPtr anIter = theMesh->edgesIterator();
|
|
||||||
if ( anIter != 0 ) {
|
|
||||||
while( anIter->more() ) {
|
|
||||||
const SMDS_MeshElement* anElem = anIter->next();
|
|
||||||
long anId = anElem->GetID();
|
|
||||||
if ( myPredicate->IsSatisfy( anId ) )
|
|
||||||
aSequence.push_back( anId );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case SMDSAbs_Face:{
|
|
||||||
SMDS_FaceIteratorPtr anIter = theMesh->facesIterator();
|
|
||||||
if ( anIter != 0 ) {
|
|
||||||
while( anIter->more() ) {
|
|
||||||
const SMDS_MeshElement* anElem = anIter->next();
|
|
||||||
long anId = anElem->GetID();
|
|
||||||
if ( myPredicate->IsSatisfy( anId ) )
|
|
||||||
aSequence.push_back( anId );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return aSequence;
|
|
||||||
}
|
|
@ -1,340 +0,0 @@
|
|||||||
// Copyright (C) 2003 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
|
||||||
|
|
||||||
#ifndef _SMESH_CONTROLS_HXX_
|
|
||||||
#define _SMESH_CONTROLS_HXX_
|
|
||||||
|
|
||||||
#include <map>
|
|
||||||
#include <vector>
|
|
||||||
#include <boost/shared_ptr.hpp>
|
|
||||||
#include "SMDSAbs_ElementType.hxx"
|
|
||||||
|
|
||||||
class SMDS_Mesh;
|
|
||||||
class gp_Pnt;
|
|
||||||
class gp_XYZ;
|
|
||||||
class TColgp_SequenceOfXYZ;
|
|
||||||
|
|
||||||
namespace SMESH{
|
|
||||||
namespace Controls{
|
|
||||||
class Functor{
|
|
||||||
public:
|
|
||||||
~Functor(){}
|
|
||||||
virtual void SetMesh( SMDS_Mesh* theMesh ) = 0;
|
|
||||||
};
|
|
||||||
typedef boost::shared_ptr<Functor> FunctorPtr;
|
|
||||||
|
|
||||||
class NumericalFunctor: public virtual Functor{
|
|
||||||
public:
|
|
||||||
NumericalFunctor();
|
|
||||||
virtual void SetMesh( SMDS_Mesh* theMesh );
|
|
||||||
virtual double GetValue( long theElementId ) = 0;
|
|
||||||
virtual SMDSAbs_ElementType GetType() const = 0;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
bool getPoints( const int theId,
|
|
||||||
TColgp_SequenceOfXYZ& theRes ) const;
|
|
||||||
protected:
|
|
||||||
SMDS_Mesh* myMesh;
|
|
||||||
};
|
|
||||||
typedef boost::shared_ptr<NumericalFunctor> NumericalFunctorPtr;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : SMESH_MinimumAngle
|
|
||||||
Description : Functor for calculation of minimum angle
|
|
||||||
*/
|
|
||||||
class MinimumAngle: public virtual NumericalFunctor{
|
|
||||||
public:
|
|
||||||
virtual double GetValue( long theElementId );
|
|
||||||
virtual SMDSAbs_ElementType GetType() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : AspectRatio
|
|
||||||
Description : Functor for calculating aspect ratio
|
|
||||||
*/
|
|
||||||
class AspectRatio: public virtual NumericalFunctor{
|
|
||||||
public:
|
|
||||||
virtual double GetValue( long theElementId );
|
|
||||||
virtual SMDSAbs_ElementType GetType() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : Warping
|
|
||||||
Description : Functor for calculating warping
|
|
||||||
*/
|
|
||||||
class Warping: public virtual NumericalFunctor{
|
|
||||||
public:
|
|
||||||
virtual double GetValue( long theElementId );
|
|
||||||
virtual SMDSAbs_ElementType GetType() const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
double ComputeA( const gp_XYZ&, const gp_XYZ&,
|
|
||||||
const gp_XYZ&, const gp_XYZ& ) const;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : Taper
|
|
||||||
Description : Functor for calculating taper
|
|
||||||
*/
|
|
||||||
class Taper: public virtual NumericalFunctor{
|
|
||||||
public:
|
|
||||||
virtual double GetValue( long theElementId );
|
|
||||||
virtual SMDSAbs_ElementType GetType() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : Skew
|
|
||||||
Description : Functor for calculating skew in degrees
|
|
||||||
*/
|
|
||||||
class Skew: public virtual NumericalFunctor{
|
|
||||||
public:
|
|
||||||
virtual double GetValue( long theElementId );
|
|
||||||
virtual SMDSAbs_ElementType GetType() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : Area
|
|
||||||
Description : Functor for calculating area
|
|
||||||
*/
|
|
||||||
class Area: public virtual NumericalFunctor{
|
|
||||||
public:
|
|
||||||
virtual double GetValue( long theElementId );
|
|
||||||
virtual SMDSAbs_ElementType GetType() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : Length
|
|
||||||
Description : Functor for calculating length of edge
|
|
||||||
*/
|
|
||||||
class Length: public virtual NumericalFunctor{
|
|
||||||
public:
|
|
||||||
virtual double GetValue( long theElementId );
|
|
||||||
virtual SMDSAbs_ElementType GetType() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : MultiConnection
|
|
||||||
Description : Functor for calculating number of faces conneted to the edge
|
|
||||||
*/
|
|
||||||
class MultiConnection: public virtual NumericalFunctor{
|
|
||||||
public:
|
|
||||||
virtual double GetValue( long theElementId );
|
|
||||||
virtual SMDSAbs_ElementType GetType() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
PREDICATES
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
Class : Predicate
|
|
||||||
Description : Base class for all predicates
|
|
||||||
*/
|
|
||||||
class Predicate: public virtual Functor{
|
|
||||||
public:
|
|
||||||
virtual bool IsSatisfy( long theElementId ) = 0;
|
|
||||||
virtual SMDSAbs_ElementType GetType() const = 0;
|
|
||||||
};
|
|
||||||
typedef boost::shared_ptr<Predicate> PredicatePtr;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : FreeBorders
|
|
||||||
Description : Predicate for free borders
|
|
||||||
*/
|
|
||||||
class FreeBorders: public virtual Predicate{
|
|
||||||
public:
|
|
||||||
FreeBorders();
|
|
||||||
virtual void SetMesh( SMDS_Mesh* theMesh );
|
|
||||||
virtual bool IsSatisfy( long theElementId );
|
|
||||||
virtual SMDSAbs_ElementType GetType() const;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
SMDS_Mesh* myMesh;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : FreeEdges
|
|
||||||
Description : Predicate for free Edges
|
|
||||||
*/
|
|
||||||
class FreeEdges: public virtual Predicate{
|
|
||||||
public:
|
|
||||||
FreeEdges();
|
|
||||||
virtual void SetMesh( SMDS_Mesh* theMesh );
|
|
||||||
virtual bool IsSatisfy( long theElementId );
|
|
||||||
virtual SMDSAbs_ElementType GetType() const;
|
|
||||||
struct Border{
|
|
||||||
long PntId[2];
|
|
||||||
Border(long thePntId1, long thePntId2);
|
|
||||||
};
|
|
||||||
typedef long TElemId;
|
|
||||||
typedef std::map<TElemId,Border> Borders;
|
|
||||||
void GetBoreders(Borders& theBorders);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
SMDS_Mesh* myMesh;
|
|
||||||
};
|
|
||||||
typedef boost::shared_ptr<FreeEdges> FreeEdgesPtr;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : Comparator
|
|
||||||
Description : Base class for comparators
|
|
||||||
*/
|
|
||||||
class Comparator: public virtual Predicate{
|
|
||||||
public:
|
|
||||||
Comparator();
|
|
||||||
virtual ~Comparator();
|
|
||||||
virtual void SetMesh( SMDS_Mesh* theMesh );
|
|
||||||
virtual void SetMargin(double theValue);
|
|
||||||
virtual void SetNumFunctor(NumericalFunctorPtr theFunct);
|
|
||||||
virtual bool IsSatisfy( long theElementId ) = 0;
|
|
||||||
virtual SMDSAbs_ElementType GetType() const;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
double myMargin;
|
|
||||||
NumericalFunctorPtr myFunctor;
|
|
||||||
};
|
|
||||||
typedef boost::shared_ptr<Comparator> ComparatorPtr;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : LessThan
|
|
||||||
Description : Comparator "<"
|
|
||||||
*/
|
|
||||||
class LessThan: public virtual Comparator{
|
|
||||||
public:
|
|
||||||
virtual bool IsSatisfy( long theElementId );
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : MoreThan
|
|
||||||
Description : Comparator ">"
|
|
||||||
*/
|
|
||||||
class MoreThan: public virtual Comparator{
|
|
||||||
public:
|
|
||||||
virtual bool IsSatisfy( long theElementId );
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : EqualTo
|
|
||||||
Description : Comparator "="
|
|
||||||
*/
|
|
||||||
class EqualTo: public virtual Comparator{
|
|
||||||
public:
|
|
||||||
EqualTo();
|
|
||||||
virtual bool IsSatisfy( long theElementId );
|
|
||||||
virtual void SetTolerance( double theTol );
|
|
||||||
|
|
||||||
private:
|
|
||||||
double myToler;
|
|
||||||
};
|
|
||||||
typedef boost::shared_ptr<EqualTo> EqualToPtr;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : LogicalNOT
|
|
||||||
Description : Logical NOT predicate
|
|
||||||
*/
|
|
||||||
class LogicalNOT: public virtual Predicate{
|
|
||||||
public:
|
|
||||||
LogicalNOT();
|
|
||||||
virtual ~LogicalNOT();
|
|
||||||
virtual bool IsSatisfy( long theElementId );
|
|
||||||
virtual void SetMesh( SMDS_Mesh* theMesh );
|
|
||||||
virtual void SetPredicate(PredicatePtr thePred);
|
|
||||||
virtual SMDSAbs_ElementType GetType() const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
PredicatePtr myPredicate;
|
|
||||||
};
|
|
||||||
typedef boost::shared_ptr<LogicalNOT> LogicalNOTPtr;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : LogicalBinary
|
|
||||||
Description : Base class for binary logical predicate
|
|
||||||
*/
|
|
||||||
class LogicalBinary: public virtual Predicate{
|
|
||||||
public:
|
|
||||||
LogicalBinary();
|
|
||||||
virtual ~LogicalBinary();
|
|
||||||
virtual void SetMesh( SMDS_Mesh* theMesh );
|
|
||||||
virtual void SetPredicate1(PredicatePtr thePred);
|
|
||||||
virtual void SetPredicate2(PredicatePtr thePred);
|
|
||||||
virtual SMDSAbs_ElementType GetType() const;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
PredicatePtr myPredicate1;
|
|
||||||
PredicatePtr myPredicate2;
|
|
||||||
};
|
|
||||||
typedef boost::shared_ptr<LogicalBinary> LogicalBinaryPtr;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : LogicalAND
|
|
||||||
Description : Logical AND
|
|
||||||
*/
|
|
||||||
class LogicalAND: public virtual LogicalBinary{
|
|
||||||
public:
|
|
||||||
virtual bool IsSatisfy( long theElementId );
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Class : LogicalOR
|
|
||||||
Description : Logical OR
|
|
||||||
*/
|
|
||||||
class LogicalOR: public virtual LogicalBinary{
|
|
||||||
public:
|
|
||||||
virtual bool IsSatisfy( long theElementId );
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
FILTER
|
|
||||||
*/
|
|
||||||
class Filter{
|
|
||||||
public:
|
|
||||||
Filter();
|
|
||||||
virtual ~Filter();
|
|
||||||
virtual void SetPredicate(PredicatePtr thePred);
|
|
||||||
typedef std::vector<long> TIdSequence;
|
|
||||||
virtual TIdSequence GetElementsId( SMDS_Mesh* theMesh );
|
|
||||||
|
|
||||||
protected:
|
|
||||||
PredicatePtr myPredicate;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|