# Double nodes on groups boundaries
-# This example represents an iron cable (a thin cylinder) in a concrete bloc (a big cylinder).
+# This example represents an iron cable (a thin cylinder) in a concrete block (a big cylinder).
# The big cylinder is defined by two geometric volumes.
Some filtering criteria use the functionality of :ref:`mesh quality controls <quality_page>` to filter mesh nodes / elements by specific characteristic (Area, Length, etc).
-The functinality of mesh filters is available in both GUI and TUI modes:
+The functionality of mesh filters is available in both GUI and TUI modes:
* In GUI, filters are available in some dialog boxes via "Set Filters" button, clicking on which opens the :ref:`dialog box <filtering_elements>` allowing to specify the list of filter criteria to be applied to the current selection. See :ref:`selection_filter_library_page` page to learn more about selection filters and their usage in GUI.
* **Node:** single mesh node;
* **Element:** single mesh element (not available in this version);
* **Object:** mesh, sub-mesh or group object (not available in this version);
-* **Origin:** origin of the global co-ordinate system.
+* **Origin:** origin of the global coordinate system.
The result will be shown in the bottom area of the dialog. In addition, a simple preview will be shown in the 3D viewer.
If **Show IDs** is activated, IDs of selected nodes or elements are displayed in the 3D viewer.
.. note::
- The information about the groups, to which the node or element belongs, can be shown in a short or in a detailed form. By default, for performance rasons, this information is shown in a short form (group names only). The detailed information on groups can be switched on via :ref:`Show details on groups in element information tab <group_detail_info_pref>` option of :ref:`mesh_preferences_page`.
+ The information about the groups, to which the node or element belongs, can be shown in a short or in a detailed form. By default, for performance reasons, this information is shown in a short form (group names only). The detailed information on groups can be switched on via :ref:`Show details on groups in element information tab <group_detail_info_pref>` option of :ref:`mesh_preferences_page`.
.. _mesh_addition_info_anchor:
All the flat elements are gathered into the group named "joints3D" (or "joints2D" in 2D situation).
The flat element of the multiple junctions between the simple junction are stored in a group named "jointsMultiples".
-This example represents an iron cable (a thin cylinder) in a concrete bloc (a big cylinder).
+This example represents an iron cable (a thin cylinder) in a concrete block (a big cylinder).
The big cylinder is defined by two geometric volumes.
.. literalinclude:: ../../../examples/generate_flat_elements.py
*/
struct HypInitParams
{
- short way; // 0 - by mesh, 1 - by geometry size + prefered parameters, 2 - by averageLength
+ short way; // 0 - by mesh, 1 - by geometry size + preferred parameters, 2 - by averageLength
double averageLength;
boolean quadDominated;
};
<parameter name="name" value="Mesh"/>
<parameter name="icon" value="ModuleMesh.png"/>
<parameter name="version" value="@SALOMESMESH_VERSION@"/>
+ <parameter name="description" value="Generate mesh from CAD model or import mesh"/>
<!-- Other module preferences -->
<parameter name="use_precision" value="false" />
<parameter name="renumbering" value="false" />
</section>
<section name="windows_geometry">
- <parameter name="SMESH" value="#00 #00 #00 #FF #00 #00 #00 #00 #FD #00 #00 #00 #02 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #02 #49 #FC #02 #00 #00 #00 #02 #FC #00 #00 #00 #7B #00 #00 #02 #49 #00 #00 #00 #97 #01 #00 #00 #14 #FA #00 #00 #00 #00 #01 #00 #00 #00 #02 #FB #00 #00 #00 #22 #00 #6F #00 #62 #00 #6A #00 #65 #00 #63 #00 #74 #00 #42 #00 #72 #00 #6F #00 #77 #00 #73 #00 #65 #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #46 #00 #FF #FF #FF #FB #00 #00 #00 #18 #00 #6E #00 #6F #00 #74 #00 #65 #00 #42 #00 #6F #00 #6F #00 #6B #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #00 #C0 #00 #FF #FF #FF #FB #00 #00 #00 #36 #00 #67 #00 #65 #00 #6F #00 #6D #00 #43 #00 #72 #00 #65 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #49 #00 #6E #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #44 #00 #6F #00 #63 #00 #6B #00 #00 #00 #02 #1F #00 #00 #00 #A5 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #03 #00 #00 #05 #40 #00 #00 #00 #53 #FC #01 #00 #00 #00 #01 #FB #00 #00 #00 #22 #00 #70 #00 #79 #00 #74 #00 #68 #00 #6F #00 #6E #00 #43 #00 #6F #00 #6E #00 #73 #00 #6F #00 #6C #00 #65 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #00 #00 #00 #05 #40 #00 #00 #00 #46 #00 #FF #FF #FF #00 #00 #04 #38 #00 #00 #02 #49 #00 #00 #00 #04 #00 #00 #00 #04 #00 #00 #00 #08 #00 #00 #00 #08 #FC #00 #00 #00 #06 #00 #00 #00 #02 #00 #00 #00 #02 #00 #00 #00 #1C #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #1A #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #CE #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #02 #00 #00 #00 #07 #00 #00 #00 #12 #00 #47 #00 #45 #00 #4F #00 #4D #00 #42 #00 #61 #00 #73 #00 #69 #00 #63 #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #1C #00 #47 #00 #45 #00 #4F #00 #4D #00 #50 #00 #72 #00 #69 #00 #6D #00 #69 #00 #74 #00 #69 #00 #76 #00 #65 #00 #73 #00 #00 #00 #00 #0E #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #2A #00 #47 #00 #45 #00 #4F #00 #4D #00 #42 #00 #6F #00 #6F #00 #6C #00 #65 #00 #61 #00 #6E #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #00 #00 #00 #00 #1C #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #16 #00 #54 #00 #4F #00 #4F #00 #4C #00 #5F #00 #42 #00 #4C #00 #4F #00 #43 #00 #4B #00 #53 #00 #00 #00 #00 #2A #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #18 #00 #47 #00 #45 #00 #4F #00 #4D #00 #50 #00 #69 #00 #63 #00 #74 #00 #75 #00 #72 #00 #65 #00 #73 #00 #00 #00 #00 #38 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #1A #00 #54 #00 #4F #00 #4F #00 #4C #00 #5F #00 #41 #00 #44 #00 #56 #00 #41 #00 #4E #00 #43 #00 #45 #00 #44 #00 #00 #00 #00 #46 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #26 #00 #47 #00 #45 #00 #4F #00 #4D #00 #49 #00 #6D #00 #70 #00 #6F #00 #72 #00 #74 #00 #45 #00 #78 #00 #70 #00 #6F #00 #72 #00 #74 #00 #58 #00 #41 #00 #4F #00 #00 #00 #00 #54 #00 #00 #01 #69 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #02 #00 #00 #00 #05 #00 #00 #00 #24 #00 #47 #00 #45 #00 #4F #00 #4D #00 #54 #00 #72 #00 #61 #00 #6E #00 #73 #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #1C #00 #47 #00 #45 #00 #4F #00 #4D #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #00 #00 #00 #00 #0E #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #1C #00 #47 #00 #45 #00 #4F #00 #4D #00 #47 #00 #65 #00 #6E #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #00 #00 #00 #1C #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #12 #00 #47 #00 #45 #00 #4F #00 #4D #00 #42 #00 #75 #00 #69 #00 #6C #00 #64 #00 #00 #00 #00 #2A #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #20 #00 #47 #00 #45 #00 #4F #00 #4D #00 #4D #00 #6F #00 #64 #00 #69 #00 #66 #00 #69 #00 #63 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #00 #00 #00 #38 #00 #00 #01 #FB #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #02 #00 #00 #00 #05 #00 #00 #00 #18 #00 #47 #00 #45 #00 #4F #00 #4D #00 #4D #00 #65 #00 #61 #00 #73 #00 #75 #00 #72 #00 #65 #00 #73 #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #20 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4D #00 #65 #00 #73 #00 #68 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #2C #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #41 #00 #64 #00 #64 #00 #45 #00 #6C #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #01 #2B #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #2C #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #41 #00 #64 #00 #64 #00 #45 #00 #6C #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #02 #EB #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #24 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #52 #00 #65 #00 #6D #00 #6F #00 #76 #00 #65 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #04 #2F #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #02 #00 #00 #00 #07 #00 #00 #00 #2E #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #49 #00 #6E #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #22 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #47 #00 #72 #00 #6F #00 #75 #00 #70 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #4C #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #34 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #54 #00 #72 #00 #61 #00 #6E #00 #73 #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #D6 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4D #00 #6F #00 #64 #00 #69 #00 #66 #00 #69 #00 #63 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #01 #DC #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #2E #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #52 #00 #65 #00 #6E #00 #75 #00 #6D #00 #62 #00 #65 #00 #72 #00 #69 #00 #6E #00 #67 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #03 #BB #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4D #00 #65 #00 #61 #00 #73 #00 #75 #00 #72 #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #04 #07 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #2E #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #44 #00 #69 #00 #73 #00 #70 #00 #6C #00 #61 #00 #79 #00 #4D #00 #6F #00 #64 #00 #65 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #04 #34 #00 #00 #01 #58 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #02 #00 #00 #00 #04 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4E #00 #6F #00 #64 #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #45 #00 #64 #00 #67 #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #46 #00 #61 #00 #63 #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #34 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #56 #00 #6F #00 #6C #00 #75 #00 #6D #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #00 #00 #00 #02 #AA #00 #00 #00 #00 #00 #00 #00 #00"/>
+ <parameter name="SMESH" value="#00 #00 #00 #FF #00 #00 #00 #00 #FD #00 #00 #00 #03 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #02 #18 #FC #02 #00 #00 #00 #02 #FC #00 #00 #00 #B0 #00 #00 #02 #18 #00 #00 #00 #A3 #01 #00 #00 #1A #FA #00 #00 #00 #00 #01 #00 #00 #00 #02 #FB #00 #00 #00 #22 #00 #6F #00 #62 #00 #6A #00 #65 #00 #63 #00 #74 #00 #42 #00 #72 #00 #6F #00 #77 #00 #73 #00 #65 #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #46 #00 #FF #FF #FF #FB #00 #00 #00 #18 #00 #6E #00 #6F #00 #74 #00 #65 #00 #42 #00 #6F #00 #6F #00 #6B #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #00 #CA #00 #FF #FF #FF #FB #00 #00 #00 #36 #00 #67 #00 #65 #00 #6F #00 #6D #00 #43 #00 #72 #00 #65 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #49 #00 #6E #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #44 #00 #6F #00 #63 #00 #6B #00 #00 #00 #02 #1F #00 #00 #00 #A5 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #01 #00 #00 #01 #21 #00 #00 #02 #18 #FC #02 #00 #00 #00 #01 #FB #00 #00 #00 #1A #00 #69 #00 #6E #00 #66 #00 #6F #00 #50 #00 #61 #00 #6E #00 #65 #00 #6C #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #B0 #00 #00 #02 #18 #00 #00 #02 #18 #00 #FF #FF #FF #00 #00 #00 #03 #00 #00 #06 #40 #00 #00 #00 #59 #FC #01 #00 #00 #00 #01 #FB #00 #00 #00 #22 #00 #70 #00 #79 #00 #74 #00 #68 #00 #6F #00 #6E #00 #43 #00 #6F #00 #6E #00 #73 #00 #6F #00 #6C #00 #65 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #00 #00 #00 #06 #40 #00 #00 #00 #46 #00 #FF #FF #FF #00 #00 #04 #13 #00 #00 #02 #18 #00 #00 #00 #04 #00 #00 #00 #04 #00 #00 #00 #08 #00 #00 #00 #08 #FC #00 #00 #00 #06 #00 #00 #00 #02 #00 #00 #00 #02 #00 #00 #00 #1C #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #1A #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #BC #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #02 #00 #00 #00 #00 #00 #00 #00 #02 #00 #00 #00 #00 #00 #00 #00 #02 #00 #00 #00 #04 #00 #00 #00 #20 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4D #00 #65 #00 #73 #00 #68 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #2C #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #41 #00 #64 #00 #64 #00 #45 #00 #6C #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #01 #40 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #2C #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #41 #00 #64 #00 #64 #00 #45 #00 #6C #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #03 #1E #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #24 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #52 #00 #65 #00 #6D #00 #6F #00 #76 #00 #65 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #04 #BA #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #02 #00 #00 #00 #06 #00 #00 #00 #2E #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #49 #00 #6E #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #22 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #47 #00 #72 #00 #6F #00 #75 #00 #70 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #52 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #34 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #54 #00 #72 #00 #61 #00 #6E #00 #73 #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #E6 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4D #00 #6F #00 #64 #00 #69 #00 #66 #00 #69 #00 #63 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #02 #1F #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4D #00 #65 #00 #61 #00 #73 #00 #75 #00 #72 #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #04 #3F #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #2E #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #44 #00 #69 #00 #73 #00 #70 #00 #6C #00 #61 #00 #79 #00 #4D #00 #6F #00 #64 #00 #65 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #04 #70 #00 #00 #01 #58 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #02 #00 #00 #00 #06 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4E #00 #6F #00 #64 #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #45 #00 #64 #00 #67 #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #46 #00 #61 #00 #63 #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #34 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #56 #00 #6F #00 #6C #00 #75 #00 #6D #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #00 #00 #00 #02 #AA #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #0E #00 #50 #00 #6C #00 #75 #00 #67 #00 #69 #00 #6E #00 #73 #00 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #1A #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #20 #00 #70 #00 #6C #00 #75 #00 #67 #00 #69 #00 #6E #00 #73 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00"/>
</section>
<section name="windows_visibility">
- <parameter name="SMESH" value="#00 #00 #00 #00 #35 #FF #FF #FF #FF #00 #00 #00 #02 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #02 #44 #FC #02 #00 #00 #00 #01 #FC #00 #00 #00 #7B #00 #00 #02 #44 #00 #00 #00 #97 #01 #00 #00 #14 #FA #00 #00 #00 #00 #01 #00 #00 #00 #02 #FB #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #30 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #46 #00 #FF #FF #FF #FB #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #33 #01 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #00 #C0 #00 #FF #FF #FF #00 #00 #00 #03 #00 #00 #05 #40 #00 #00 #00 #53 #FC #01 #00 #00 #00 #01 #FB #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #31 #01 #00 #00 #00 #00 #00 #00 #05 #40 #00 #00 #00 #46 #00 #FF #FF #FF #00 #00 #04 #38 #00 #00 #02 #44 #00 #00 #00 #04 #00 #00 #00 #04 #00 #00 #00 #08 #00 #00 #00 #08 #FC #00 #00 #00 #05 #00 #00 #00 #02 #00 #00 #00 #02 #00 #00 #00 #10 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #0E #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #CE #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #02 #00 #00 #00 #07 #00 #00 #00 #2A #00 #4E #00 #6F #00 #64 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #02 #01 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #2A #00 #45 #00 #64 #00 #67 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #02 #4D #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #2A #00 #46 #00 #61 #00 #63 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #02 #F6 #00 #00 #02 #4A #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #18 #00 #4D #00 #65 #00 #73 #00 #68 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #00 #00 #26 #00 #41 #00 #64 #00 #64 #00 #20 #00 #45 #00 #6C #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #3C #00 #41 #00 #64 #00 #64 #00 #20 #00 #4E #00 #6F #00 #6E #00 #20 #00 #4C #00 #69 #00 #6E #00 #65 #00 #61 #00 #72 #00 #20 #00 #45 #00 #6C #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #28 #00 #44 #00 #69 #00 #73 #00 #70 #00 #6C #00 #61 #00 #79 #00 #20 #00 #4D #00 #6F #00 #64 #00 #65 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2A #00 #45 #00 #64 #00 #67 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #2A #00 #46 #00 #61 #00 #63 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #12 #00 #47 #00 #45 #00 #4F #00 #4D #00 #42 #00 #61 #00 #73 #00 #69 #00 #63 #01 #00 #00 #00 #2A #00 #47 #00 #45 #00 #4F #00 #4D #00 #42 #00 #6F #00 #6F #00 #6C #00 #65 #00 #61 #00 #6E #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #12 #00 #47 #00 #45 #00 #4F #00 #4D #00 #42 #00 #75 #00 #69 #00 #6C #00 #64 #01 #00 #00 #00 #1C #00 #47 #00 #45 #00 #4F #00 #4D #00 #47 #00 #65 #00 #6E #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #01 #00 #00 #00 #26 #00 #47 #00 #45 #00 #4F #00 #4D #00 #49 #00 #6D #00 #70 #00 #6F #00 #72 #00 #74 #00 #45 #00 #78 #00 #70 #00 #6F #00 #72 #00 #74 #00 #58 #00 #41 #00 #4F #01 #00 #00 #00 #18 #00 #47 #00 #45 #00 #4F #00 #4D #00 #4D #00 #65 #00 #61 #00 #73 #00 #75 #00 #72 #00 #65 #00 #73 #00 #00 #00 #00 #20 #00 #47 #00 #45 #00 #4F #00 #4D #00 #4D #00 #6F #00 #64 #00 #69 #00 #66 #00 #69 #00 #63 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #01 #00 #00 #00 #1C #00 #47 #00 #45 #00 #4F #00 #4D #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #18 #00 #47 #00 #45 #00 #4F #00 #4D #00 #50 #00 #69 #00 #63 #00 #74 #00 #75 #00 #72 #00 #65 #00 #73 #01 #00 #00 #00 #1C #00 #47 #00 #45 #00 #4F #00 #4D #00 #50 #00 #72 #00 #69 #00 #6D #00 #69 #00 #74 #00 #69 #00 #76 #00 #65 #00 #73 #01 #00 #00 #00 #24 #00 #47 #00 #45 #00 #4F #00 #4D #00 #54 #00 #72 #00 #61 #00 #6E #00 #73 #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #01 #00 #00 #00 #1A #00 #47 #00 #72 #00 #6F #00 #75 #00 #70 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #26 #00 #49 #00 #6E #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #28 #00 #4D #00 #65 #00 #61 #00 #73 #00 #75 #00 #72 #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #18 #00 #4D #00 #65 #00 #73 #00 #68 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #28 #00 #4D #00 #6F #00 #64 #00 #69 #00 #66 #00 #69 #00 #63 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #0E #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #2A #00 #4E #00 #6F #00 #64 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #32 #00 #4F #00 #43 #00 #43 #00 #56 #00 #69 #00 #65 #00 #77 #00 #65 #00 #72 #00 #33 #00 #44 #00 #56 #00 #69 #00 #65 #00 #77 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #28 #00 #52 #00 #65 #00 #63 #00 #6F #00 #72 #00 #64 #00 #69 #00 #6E #00 #67 #00 #20 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #1C #00 #52 #00 #65 #00 #6D #00 #6F #00 #76 #00 #65 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #26 #00 #52 #00 #65 #00 #6E #00 #75 #00 #6D #00 #62 #00 #65 #00 #72 #00 #69 #00 #6E #00 #67 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2C #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #41 #00 #64 #00 #64 #00 #45 #00 #6C #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2E #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #44 #00 #69 #00 #73 #00 #70 #00 #6C #00 #61 #00 #79 #00 #4D #00 #6F #00 #64 #00 #65 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #45 #00 #64 #00 #67 #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #46 #00 #61 #00 #63 #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #22 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #47 #00 #72 #00 #6F #00 #75 #00 #70 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2E #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #49 #00 #6E #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4D #00 #65 #00 #61 #00 #73 #00 #75 #00 #72 #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #20 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4D #00 #65 #00 #73 #00 #68 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4D #00 #6F #00 #64 #00 #69 #00 #66 #00 #69 #00 #63 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4E #00 #6F #00 #64 #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #24 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #52 #00 #65 #00 #6D #00 #6F #00 #76 #00 #65 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2E #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #52 #00 #65 #00 #6E #00 #75 #00 #6D #00 #62 #00 #65 #00 #72 #00 #69 #00 #6E #00 #67 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #34 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #54 #00 #72 #00 #61 #00 #6E #00 #73 #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #34 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #56 #00 #6F #00 #6C #00 #75 #00 #6D #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #1A #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #1C #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #10 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #1A #00 #54 #00 #4F #00 #4F #00 #4C #00 #5F #00 #41 #00 #44 #00 #56 #00 #41 #00 #4E #00 #43 #00 #45 #00 #44 #01 #00 #00 #00 #16 #00 #54 #00 #4F #00 #4F #00 #4C #00 #5F #00 #42 #00 #4C #00 #4F #00 #43 #00 #4B #00 #53 #01 #00 #00 #00 #2C #00 #54 #00 #72 #00 #61 #00 #6E #00 #73 #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2C #00 #56 #00 #54 #00 #4B #00 #52 #00 #65 #00 #63 #00 #6F #00 #72 #00 #64 #00 #69 #00 #6E #00 #67 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #2E #00 #56 #00 #54 #00 #4B #00 #56 #00 #69 #00 #65 #00 #77 #00 #65 #00 #72 #00 #56 #00 #69 #00 #65 #00 #77 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #1E #00 #56 #00 #69 #00 #65 #00 #77 #00 #20 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #2E #00 #56 #00 #6F #00 #6C #00 #75 #00 #6D #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #01 #00 #00 #00 #06 #00 #00 #00 #18 #00 #6E #00 #6F #00 #74 #00 #65 #00 #42 #00 #6F #00 #6F #00 #6B #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #22 #00 #6F #00 #62 #00 #6A #00 #65 #00 #63 #00 #74 #00 #42 #00 #72 #00 #6F #00 #77 #00 #73 #00 #65 #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #22 #00 #70 #00 #79 #00 #74 #00 #68 #00 #6F #00 #6E #00 #43 #00 #6F #00 #6E #00 #73 #00 #6F #00 #6C #00 #65 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #30 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #31 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #33 #01"/>
+ <parameter name="SMESH" value="#00 #00 #00 #00 #3A #FF #FF #FF #FF #00 #00 #00 #02 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #02 #44 #FC #02 #00 #00 #00 #01 #FC #00 #00 #00 #7B #00 #00 #02 #44 #00 #00 #00 #97 #01 #00 #00 #14 #FA #00 #00 #00 #00 #01 #00 #00 #00 #02 #FB #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #30 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #46 #00 #FF #FF #FF #FB #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #33 #01 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #00 #C0 #00 #FF #FF #FF #00 #00 #00 #03 #00 #00 #05 #40 #00 #00 #00 #53 #FC #01 #00 #00 #00 #01 #FB #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #31 #01 #00 #00 #00 #00 #00 #00 #05 #40 #00 #00 #00 #46 #00 #FF #FF #FF #00 #00 #04 #38 #00 #00 #02 #44 #00 #00 #00 #04 #00 #00 #00 #04 #00 #00 #00 #08 #00 #00 #00 #08 #FC #00 #00 #00 #05 #00 #00 #00 #02 #00 #00 #00 #02 #00 #00 #00 #10 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #0E #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #CE #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #02 #00 #00 #00 #07 #00 #00 #00 #2A #00 #4E #00 #6F #00 #64 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #02 #01 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #2A #00 #45 #00 #64 #00 #67 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #02 #4D #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #2A #00 #46 #00 #61 #00 #63 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #02 #F6 #00 #00 #02 #4A #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #18 #00 #4D #00 #65 #00 #73 #00 #68 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #00 #00 #26 #00 #41 #00 #64 #00 #64 #00 #20 #00 #45 #00 #6C #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #3C #00 #41 #00 #64 #00 #64 #00 #20 #00 #4E #00 #6F #00 #6E #00 #20 #00 #4C #00 #69 #00 #6E #00 #65 #00 #61 #00 #72 #00 #20 #00 #45 #00 #6C #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #10 #00 #41 #00 #64 #00 #76 #00 #61 #00 #6E #00 #63 #00 #65 #00 #64 #01 #00 #00 #00 #0C #00 #42 #00 #6C #00 #6F #00 #63 #00 #6B #00 #73 #01 #00 #00 #00 #28 #00 #44 #00 #69 #00 #73 #00 #70 #00 #6C #00 #61 #00 #79 #00 #20 #00 #4D #00 #6F #00 #64 #00 #65 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2A #00 #45 #00 #64 #00 #67 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #2A #00 #46 #00 #61 #00 #63 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #12 #00 #47 #00 #45 #00 #4F #00 #4D #00 #42 #00 #61 #00 #73 #00 #69 #00 #63 #00 #00 #00 #00 #2A #00 #47 #00 #45 #00 #4F #00 #4D #00 #42 #00 #6F #00 #6F #00 #6C #00 #65 #00 #61 #00 #6E #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #00 #00 #00 #00 #12 #00 #47 #00 #45 #00 #4F #00 #4D #00 #42 #00 #75 #00 #69 #00 #6C #00 #64 #00 #00 #00 #00 #1C #00 #47 #00 #45 #00 #4F #00 #4D #00 #47 #00 #65 #00 #6E #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #00 #00 #00 #26 #00 #47 #00 #45 #00 #4F #00 #4D #00 #49 #00 #6D #00 #70 #00 #6F #00 #72 #00 #74 #00 #45 #00 #78 #00 #70 #00 #6F #00 #72 #00 #74 #00 #58 #00 #41 #00 #4F #01 #00 #00 #00 #18 #00 #47 #00 #45 #00 #4F #00 #4D #00 #4D #00 #65 #00 #61 #00 #73 #00 #75 #00 #72 #00 #65 #00 #73 #00 #00 #00 #00 #20 #00 #47 #00 #45 #00 #4F #00 #4D #00 #4D #00 #6F #00 #64 #00 #69 #00 #66 #00 #69 #00 #63 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #00 #00 #00 #1C #00 #47 #00 #45 #00 #4F #00 #4D #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #00 #00 #00 #00 #18 #00 #47 #00 #45 #00 #4F #00 #4D #00 #50 #00 #69 #00 #63 #00 #74 #00 #75 #00 #72 #00 #65 #00 #73 #00 #00 #00 #00 #1C #00 #47 #00 #45 #00 #4F #00 #4D #00 #50 #00 #72 #00 #69 #00 #6D #00 #69 #00 #74 #00 #69 #00 #76 #00 #65 #00 #73 #00 #00 #00 #00 #24 #00 #47 #00 #45 #00 #4F #00 #4D #00 #54 #00 #72 #00 #61 #00 #6E #00 #73 #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #00 #00 #00 #1A #00 #47 #00 #72 #00 #6F #00 #75 #00 #70 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #26 #00 #49 #00 #6E #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #28 #00 #4D #00 #65 #00 #61 #00 #73 #00 #75 #00 #72 #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #18 #00 #4D #00 #65 #00 #73 #00 #68 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #28 #00 #4D #00 #6F #00 #64 #00 #69 #00 #66 #00 #69 #00 #63 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #0E #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #2A #00 #4E #00 #6F #00 #64 #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #32 #00 #4F #00 #43 #00 #43 #00 #56 #00 #69 #00 #65 #00 #77 #00 #65 #00 #72 #00 #33 #00 #44 #00 #56 #00 #69 #00 #65 #00 #77 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #0E #00 #50 #00 #6C #00 #75 #00 #67 #00 #69 #00 #6E #00 #73 #00 #00 #00 #00 #1C #00 #50 #00 #79 #00 #74 #00 #68 #00 #6F #00 #6E #00 #20 #00 #50 #00 #6C #00 #75 #00 #67 #00 #69 #00 #6E #00 #73 #00 #00 #00 #00 #28 #00 #52 #00 #65 #00 #63 #00 #6F #00 #72 #00 #64 #00 #69 #00 #6E #00 #67 #00 #20 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #1C #00 #52 #00 #65 #00 #6D #00 #6F #00 #76 #00 #65 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #26 #00 #52 #00 #65 #00 #6E #00 #75 #00 #6D #00 #62 #00 #65 #00 #72 #00 #69 #00 #6E #00 #67 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #1A #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #20 #00 #70 #00 #6C #00 #75 #00 #67 #00 #69 #00 #6E #00 #73 #01 #00 #00 #00 #2C #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #41 #00 #64 #00 #64 #00 #45 #00 #6C #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2E #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #44 #00 #69 #00 #73 #00 #70 #00 #6C #00 #61 #00 #79 #00 #4D #00 #6F #00 #64 #00 #65 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #45 #00 #64 #00 #67 #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #46 #00 #61 #00 #63 #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #22 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #47 #00 #72 #00 #6F #00 #75 #00 #70 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2E #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #49 #00 #6E #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4D #00 #65 #00 #61 #00 #73 #00 #75 #00 #72 #00 #65 #00 #6D #00 #65 #00 #6E #00 #74 #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #20 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4D #00 #65 #00 #73 #00 #68 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4D #00 #6F #00 #64 #00 #69 #00 #66 #00 #69 #00 #63 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #30 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #4E #00 #6F #00 #64 #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #24 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #52 #00 #65 #00 #6D #00 #6F #00 #76 #00 #65 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2E #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #52 #00 #65 #00 #6E #00 #75 #00 #6D #00 #62 #00 #65 #00 #72 #00 #69 #00 #6E #00 #67 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #34 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #54 #00 #72 #00 #61 #00 #6E #00 #73 #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #34 #00 #53 #00 #4D #00 #45 #00 #53 #00 #48 #00 #56 #00 #6F #00 #6C #00 #75 #00 #6D #00 #65 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #00 #00 #00 #1A #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #1C #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #10 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #1A #00 #54 #00 #4F #00 #4F #00 #4C #00 #5F #00 #41 #00 #44 #00 #56 #00 #41 #00 #4E #00 #43 #00 #45 #00 #44 #01 #00 #00 #00 #16 #00 #54 #00 #4F #00 #4F #00 #4C #00 #5F #00 #42 #00 #4C #00 #4F #00 #43 #00 #4B #00 #53 #01 #00 #00 #00 #2C #00 #54 #00 #72 #00 #61 #00 #6E #00 #73 #00 #66 #00 #6F #00 #72 #00 #6D #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #01 #00 #00 #00 #2C #00 #56 #00 #54 #00 #4B #00 #52 #00 #65 #00 #63 #00 #6F #00 #72 #00 #64 #00 #69 #00 #6E #00 #67 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #2E #00 #56 #00 #54 #00 #4B #00 #56 #00 #69 #00 #65 #00 #77 #00 #65 #00 #72 #00 #56 #00 #69 #00 #65 #00 #77 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #1E #00 #56 #00 #69 #00 #65 #00 #77 #00 #20 #00 #4F #00 #70 #00 #65 #00 #72 #00 #61 #00 #74 #00 #69 #00 #6F #00 #6E #00 #73 #01 #00 #00 #00 #2E #00 #56 #00 #6F #00 #6C #00 #75 #00 #6D #00 #65 #00 #20 #00 #43 #00 #6F #00 #6E #00 #74 #00 #72 #00 #6F #00 #6C #00 #73 #00 #20 #00 #54 #00 #6F #00 #6F #00 #6C #00 #62 #00 #61 #00 #72 #00 #01 #00 #00 #00 #07 #00 #00 #00 #1A #00 #69 #00 #6E #00 #66 #00 #6F #00 #50 #00 #61 #00 #6E #00 #65 #00 #6C #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #18 #00 #6E #00 #6F #00 #74 #00 #65 #00 #42 #00 #6F #00 #6F #00 #6B #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #22 #00 #6F #00 #62 #00 #6A #00 #65 #00 #63 #00 #74 #00 #42 #00 #72 #00 #6F #00 #77 #00 #73 #00 #65 #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #22 #00 #70 #00 #79 #00 #74 #00 #68 #00 #6F #00 #6E #00 #43 #00 #6F #00 #6E #00 #73 #00 #6F #00 #6C #00 #65 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #30 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #31 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #33 #01"/>
</section>
</document>
// how many bytes follow?
int len = 0;
- if (s[i] >> 5 == 0b110 ) len = 1; // todo: binary constants are a GCC extension
- else if (s[i] >> 4 == 0b1110 ) len = 2; // todo: binary constants are a GCC extension
- else if (s[i] >> 3 == 0b11110) len = 3; // todo: binary constants are a GCC extension
+ if (s[i] >> 5 == 0b110 ) len = 1; // WARNING: binary constants included in C++14
+ else if (s[i] >> 4 == 0b1110 ) len = 2;
+ else if (s[i] >> 3 == 0b11110) len = 3;
else
invalid = true;
// check the bytes
for ( int j = 0; j < len && !invalid; ++j )
- invalid = ( s[i+j+1] >> 6 != 0b10 ); // todo: binary constants are a GCC extension
+ invalid = ( s[i+j+1] >> 6 != 0b10 );
if ( invalid )
fixed[i] = '?';
int _beg[3], _end[3], _cur[3], _dir[3], _dim;
bool _more;
public:
- TPointRangeIterator( const cgsize_t* range, int dim ):_dim(dim)
+ TPointRangeIterator( const cgsize_t* range, int dim ):
+ _beg{0,0,0}, _end{0,0,0}, _cur{0,0,0}, _dir{0,0,0}, _dim(dim), _more(false)
{
- _more = false;
for ( int i = 0; i < dim; ++i )
{
_beg[i] = range[i];
if ( _end[i] - _beg[i] )
_more = true;
}
-// for ( int i = dim; i < 3; ++i )
-// _cur[i] = _beg[i] = _end[i] = _dir[i] = 0;
}
bool More() const
{
}
gp_XYZ Next()
{
- gp_XYZ res( _cur[0], _cur[1], _cur[2] ); // todo: _cur can be used uninitialized
+ gp_XYZ res( _cur[0], _cur[1], _cur[2] );
for ( int i = 0; i < _dim; ++i )
{
_cur[i] += _dir[i];
size *= _dir[i]*(_end[i]-_beg[i]);
return size;
}
- gp_XYZ Begin() const { return gp_XYZ( _beg[0], _beg[1], _beg[2] ); } // todo: _beg can be used uninitialized
+ gp_XYZ Begin() const { return gp_XYZ( _beg[0], _beg[1], _beg[2] ); }
//gp_XYZ End() const { return gp_XYZ( _end[0]-1, _end[1]-1, _end[2]-1 ); }
};
}
// fill nodeReplacementMap
- TPointRangeIterator rangeIt1( range, _meshDim ); // todo: rangeIt1: _end[i], _dir[i], _beg[i], _cur[i] may be used uninitialized
+ TPointRangeIterator rangeIt1( range, _meshDim );
TPointRangeIterator rangeIt2( donorRange, _meshDim );
gp_XYZ begin1 = rangeIt1.Begin(), begin2 = rangeIt2.Begin(), index1, index2;
if ( &zone2 == this )
{
for(i=0;i<kwd->SolSiz;i++)
if(kwd->fmt[i] == 'r')
- fprintf(msh->hdl, "%.15lg ", va_arg(VarArg, double)); /* todo: ISO C90 does not support the '%lg' gnu_printf format */
+ fprintf(msh->hdl, "%.15g ", va_arg(VarArg, double)); /* was "%.15lg and warning "ISO C90 does not support the '%lg' gnu_printf format"*/
else if(kwd->fmt[i] == 'n') {
nb_repeat = va_arg(VarArg, int);
fprintf(msh->hdl, "%d ", nb_repeat);
if(msh->typ & Asc)
for(j=0;j<kwd->SolSiz;j++)
- fprintf(msh->hdl, "%.15lg ", DblSolTab[j]); /* todo: ISO C90 does not support the '%lg' gnu_printf format */
+ fprintf(msh->hdl, "%.15g ", DblSolTab[j]); /* was " %.15lg " and warning "ISO C90 does not support the '%lg' gnu_printf format" */
else
RecBlk(msh, (unsigned char *)DblSolTab, kwd->NmbWrd);
}
if ( _nbElemsByGeom.size() == 1 )
_nbElemsByGeom.push_back( std::make_pair( SMDSEntity_0D, 0));
_nbElemsByGeom.push_back( std::make_pair( SMDSEntity_Node,
- nodes.size() + _nbElemsByGeom.back().second ));
+ nodes.size() + _nbElemsByGeom.back().second ));
}
}
static int MYDEBUG = 0;
static int MYVALUEDEBUG = 0;
#else
-static int MYDEBUG = 0; // todo: unused in release mode
-static int MYVALUEDEBUG = 0; // todo: unused in release mode
+// static int MYDEBUG = 0;
+// static int MYVALUEDEBUG = 0;
#endif
namespace MED
static int MYDEBUG = 0;
static int MYVALUEDEBUG = 0;
#else
-static int MYDEBUG = 0; // todo: unused in release mode
-static int MYVALUEDEBUG = 0; // todo: unused in release mode
+// static int MYDEBUG = 0; // unused in release mode
+// static int MYVALUEDEBUG = 0; // unused in release mode
#endif
namespace MED
TGaussInfo::TLess
::operator()(const TGaussInfo& theLeft, const TGaussInfo& theRight) const
{
- if(!&theLeft) // todo: address of reference can be assumed always non-null by compiler
+ if(!&theLeft) // address of reference can be assumed always non-null by compiler - OK
return true;
- if(!&theRight) // todo: address of reference can be assumed always non-null by compiler
+ if(!&theRight) //address of reference can be assumed always non-null by compiler - OK
return false;
if(theLeft.myGeom != theRight.myGeom)
#ifdef _DEBUG_
static int MYDEBUG = 0;
#else
-static int MYDEBUG = 0; // todo: unused in release mode
+//static int MYDEBUG = 0; // unused in release mode
#endif
int MED::PrefixPrinter::myCounter = 0;
static int MYDEBUG = 0;
static int MYVALUEDEBUG = 0;
#else
-static int MYDEBUG = 0; // todo: unused in release mode
-static int MYVALUEDEBUG = 0; // todo: unused in release mode
+// static int MYDEBUG = 0; // unused in release mode
+// static int MYVALUEDEBUG = 0; // unused in release mode
#endif
namespace MED
case QUAD_TETRA:
{
switch ( minInd ) {
- case 0: if( maxInd==4 || maxInd==6 || maxInd==7 ) return true; // fall through
- case 1: if( maxInd==4 || maxInd==5 || maxInd==8 ) return true; // fall through
- case 2: if( maxInd==5 || maxInd==6 || maxInd==9 ) return true; // fall through
- case 3: if( maxInd==7 || maxInd==8 || maxInd==9 ) return true; // fall through
+ case 0: return ( maxInd==4 || maxInd==6 || maxInd==7 );
+ case 1: return ( maxInd==4 || maxInd==5 || maxInd==8 );
+ case 2: return ( maxInd==5 || maxInd==6 || maxInd==9 );
+ case 3: return ( maxInd==7 || maxInd==8 || maxInd==9 );
default:;
}
break;
case QUAD_HEXA:
{
switch ( minInd ) {
- case 0: if( maxInd==8 || maxInd==11 || maxInd==16 ) return true; // fall through
- case 1: if( maxInd==8 || maxInd==9 || maxInd==17 ) return true; // fall through
- case 2: if( maxInd==9 || maxInd==10 || maxInd==18 ) return true; // fall through
- case 3: if( maxInd==10 || maxInd==11 || maxInd==19 ) return true; // fall through
- case 4: if( maxInd==12 || maxInd==15 || maxInd==16 ) return true; // fall through
- case 5: if( maxInd==12 || maxInd==13 || maxInd==17 ) return true; // fall through
- case 6: if( maxInd==13 || maxInd==14 || maxInd==18 ) return true; // fall through
- case 7: if( maxInd==14 || maxInd==15 || maxInd==19 ) return true; // fall through
+ case 0: return ( maxInd==8 || maxInd==11 || maxInd==16 );
+ case 1: return ( maxInd==8 || maxInd==9 || maxInd==17 );
+ case 2: return ( maxInd==9 || maxInd==10 || maxInd==18 );
+ case 3: return ( maxInd==10 || maxInd==11 || maxInd==19 );
+ case 4: return ( maxInd==12 || maxInd==15 || maxInd==16 );
+ case 5: return ( maxInd==12 || maxInd==13 || maxInd==17 );
+ case 6: return ( maxInd==13 || maxInd==14 || maxInd==18 );
+ case 7: return ( maxInd==14 || maxInd==15 || maxInd==19 );
default:;
}
break;
case QUAD_PYRAM:
{
switch ( minInd ) {
- case 0: if( maxInd==5 || maxInd==8 || maxInd==9 ) return true; // fall through
- case 1: if( maxInd==5 || maxInd==6 || maxInd==10 ) return true; // fall through
- case 2: if( maxInd==6 || maxInd==7 || maxInd==11 ) return true; // fall through
- case 3: if( maxInd==7 || maxInd==8 || maxInd==12 ) return true; // fall through
- case 4: if( maxInd==9 || maxInd==10 || maxInd==11 || maxInd==12 ) return true;
+ case 0: return ( maxInd==5 || maxInd==8 || maxInd==9 );
+ case 1: return ( maxInd==5 || maxInd==6 || maxInd==10 );
+ case 2: return ( maxInd==6 || maxInd==7 || maxInd==11 );
+ case 3: return ( maxInd==7 || maxInd==8 || maxInd==12 );
+ case 4: return ( maxInd==9 || maxInd==10 || maxInd==11 || maxInd==12 );
default:;
}
break;
case QUAD_PENTA:
{
switch ( minInd ) {
- case 0: if( maxInd==6 || maxInd==8 || maxInd==12 ) return true; // fall through
- case 1: if( maxInd==6 || maxInd==7 || maxInd==13 ) return true; // fall through
- case 2: if( maxInd==7 || maxInd==8 || maxInd==14 ) return true; // fall through
- case 3: if( maxInd==9 || maxInd==11 || maxInd==12 ) return true; // fall through
- case 4: if( maxInd==9 || maxInd==10 || maxInd==13 ) return true; // fall through
- case 5: if( maxInd==10 || maxInd==11 || maxInd==14 ) return true; // fall through
+ case 0: return ( maxInd==6 || maxInd==8 || maxInd==12 );
+ case 1: return ( maxInd==6 || maxInd==7 || maxInd==13 );
+ case 2: return ( maxInd==7 || maxInd==8 || maxInd==14 );
+ case 3: return ( maxInd==9 || maxInd==11 || maxInd==12 );
+ case 4: return ( maxInd==9 || maxInd==10 || maxInd==13 );
+ case 5: return ( maxInd==10 || maxInd==11 || maxInd==14 );
default:;
}
break;
std::vector< SMESH_subMesh* > smVec;
for ( aShapeDim = 0; aShapeDim < 4; ++aShapeDim )
+ smVec.insert( smVec.end(),
+ smWithAlgoSupportingSubmeshes[aShapeDim].begin(),
+ smWithAlgoSupportingSubmeshes[aShapeDim].end() );
{
// ------------------------------------------------
// sort list of sub-meshes according to mesh order
// ------------------------------------------------
- smVec.assign( smWithAlgoSupportingSubmeshes[ aShapeDim ].begin(),
- smWithAlgoSupportingSubmeshes[ aShapeDim ].end() );
aMesh.SortByMeshOrder( smVec );
// ------------------------------------------------------------
for ( size_t i = 0; i < smVec.size(); ++i )
{
sm = smVec[i];
+ if ( sm->GetComputeState() != SMESH_subMesh::READY_TO_COMPUTE)
+ continue;
+
+ const TopAbs_ShapeEnum shapeType = sm->GetSubShape().ShapeType();
// get a shape the algo is assigned to
if ( !GetAlgo( sm, & algoShape ))
continue; // strange...
// look for more local algos
- smIt = sm->getDependsOnIterator(!includeSelf, !complexShapeFirst);
+ if ( SMESH_subMesh* algoSM = aMesh.GetSubMesh( algoShape ))
+ smIt = algoSM->getDependsOnIterator(!includeSelf, !complexShapeFirst);
+ else
+ smIt = sm->getDependsOnIterator(!includeSelf, !complexShapeFirst);
+
while ( smIt->more() )
{
SMESH_subMesh* smToCompute = smIt->next();
const TopoDS_Shape& aSubShape = smToCompute->GetSubShape();
const int aShapeDim = GetShapeDim( aSubShape );
- if ( aShapeDim < 1 ) continue;
+ if ( aShapeDim < 1 || aSubShape.ShapeType() == shapeType )
+ continue;
// check for preview dimension limitations
if ( aShapesId && GetShapeDim( aSubShape.ShapeType() ) > (int)aDim )
Compute( aMesh, aSubShape, aFlags | SHAPE_ONLY_UPWARD, aDim, aShapesId, localAllowed );
}
}
- }
- // --------------------------------
- // apply the all-dimensional algos
- // --------------------------------
- for ( size_t i = 0; i < smVec.size(); ++i )
- {
- sm = smVec[i];
- if ( sm->GetComputeState() == SMESH_subMesh::READY_TO_COMPUTE)
+ // --------------------------------
+ // apply the all-dimensional algo
+ // --------------------------------
{
- const TopAbs_ShapeEnum shapeType = sm->GetSubShape().ShapeType();
+ if (_compute_canceled)
+ return false;
// check for preview dimension limitations
if ( aShapesId && GetShapeDim( shapeType ) > (int)aDim )
continue;
-
- if (_compute_canceled)
- return false;
sm->SetAllowedSubShapes( fillAllowed( shapeSM, aShapeOnly, allowedSubShapes ));
setCurrentSubMesh( sm );
sm->ComputeStateEngine( computeEvent );
aShapesId->insert( sm->GetId() );
}
}
- } // loop on shape dimensions
+ }
// -----------------------------------------------
// mesh the rest sub-shapes starting from vertices
xmlPath += sep + plugin + ".xml";
bool fileOK;
#ifdef WIN32
-#ifdef UNICODE
+ #ifdef UNICODE
const wchar_t* path = Kernel_Utils::decode_s(xmlPath);
-#else
+ #else
const char* path = xmlPath.c_str();
-#endif
+ #endif
+
fileOK = (GetFileAttributes(path) != INVALID_FILE_ATTRIBUTES);
-#ifdef UNICODE
+
+ #ifdef UNICODE
delete path;
-#endif
+ #endif
+
#else
fileOK = (access(xmlPath.c_str(), F_OK) == 0);
#endif
// algorithm parameter
if (algo)
{
- // look trough hypotheses used by algo
+ // look through hypotheses used by algo
const SMESH_HypoFilter* hypoKind;
if (( hypoKind = algo->GetCompatibleHypoFilter( !hyp->IsAuxiliary() ))) {
std::list <const SMESHDS_Hypothesis * > usedHyps;
smVec.push_back( sm );
if ( sm->GetSubMeshDS() && sm->GetSubMeshDS()->IsComplexSubmesh() )
{
+ smVec.reserve( smVec.size() + sm->GetSubMeshDS()->NbSubMeshes() );
SMESHDS_SubMeshIteratorPtr smdsIt = sm->GetSubMeshDS()->GetSubMeshIterator();
while ( smdsIt->more() )
{
}
for ( int variant = 0; variant < nbVariants && method._nbSplits == 0; ++variant )
{
- // check method compliancy with adjacent tetras,
+ // check method compliance with adjacent tetras,
// all found splits must be among facets of tetras described by this method
method = TSplitMethod( nbTet, connVariants[variant] );
if ( hasAdjacentSplits && method._nbSplits > 0 )
// there are adjacent prism
for ( int variant = 0; variant < nbVariants; ++variant )
{
- // check method compliancy with adjacent prisms,
+ // check method compliance with adjacent prisms,
// the found prism facets must be among facets of prisms described by current method
method._nbSplits = nbSplits;
method._nbCorners = 6;
{
projector.Perform( point );
if ( projector.IsDone() ) {
- double u, v, minVal = DBL_MAX;
+ double u = 0, v = 0, minVal = DBL_MAX;
for ( int i = projector.NbExt(); i > 0; i-- )
if ( projector.SquareDistance( i ) < minVal ) {
minVal = projector.SquareDistance( i );
}
else {
if ( isUPeriodic )
- newUV.SetX( ElCLib::InPeriod( newUV.X(), u1, u2 )); // todo: u may be used unitialized
+ newUV.SetX( ElCLib::InPeriod( newUV.X(), u1, u2 ));
if ( isVPeriodic )
- newUV.SetY( ElCLib::InPeriod( newUV.Y(), v1, v2 )); // todo: v may be used unitialized
+ newUV.SetY( ElCLib::InPeriod( newUV.Y(), v1, v2 ));
// check new UV
// if ( posType != SMDS_TOP_3DSPACE )
// dist2 = pNode.SquareDistance( surface->Value( newUV.X(), newUV.Y() ));
//int& GroupID() const { return const_cast< int& >( myGroupID ); }
ComparableElement( const ComparableElement& theSource ) // move copy
- : boost::container::flat_set< int >()
+ : int_set()
{
ComparableElement& src = const_cast< ComparableElement& >( theSource );
- (int_set&) (*this ) = boost::move( src );
+ (int_set&) (*this ) = std::move( src );
myElem = src.myElem;
mySumID = src.mySumID;
myGroupID = src.myGroupID;
if ( SMESH_MeshAlgos::FaceNormal( _elems[1], norm ))
avgNorm += norm;
- gp_XYZ bordDir( SMESH_NodeXYZ( _nodes[0] ) - SMESH_NodeXYZ( _nodes[1] )); // todo: compiler complains about zero-size array
+ gp_XYZ bordDir( SMESH_NodeXYZ( this->_nodes[0] ) - SMESH_NodeXYZ( this->_nodes[1] ));
norm = bordDir ^ avgNorm;
}
else
if ( !aSubMeshDSFace )
return isReversed;
- // find an element on a bounday of theFace
+ // find an element on a boundary of theFace
SMDS_ElemIteratorPtr iteratorElem = aSubMeshDSFace->GetElements();
const SMDS_MeshNode* nn[2];
while ( iteratorElem->more() ) // loop on elements on theFace
/*!
* \brief Dump QLink and QFace
*/
- ostream& operator << (ostream& out, const QLink& l) // todo: unused in release mode
+ ostream& operator << (ostream& out, const QLink& l)
{
out <<"QLink nodes: "
<< l.node1()->GetID() << " - "
<< l.node2()->GetID() << endl;
return out;
}
- ostream& operator << (ostream& out, const QFace& f) // todo: unused in release mode
+ ostream& operator << (ostream& out, const QFace& f)
{
out <<"QFace nodes: "/*<< &f << " "*/;
for ( TIDSortedNodeSet::const_iterator n = f.begin(); n != f.end(); ++n )
//================================================================================
/*!
- * \brief Construct QFace from QLinks
+ * \brief Construct QFace from QLinks
*/
//================================================================================
gp_Vec v1( XYZ( l1->node2()), XYZ( l1->node1()));
gp_Vec v2( XYZ( l2->node1()), XYZ( l2->node2()));
if ( l1->node1() != l2->node1() && l1->node2() != l2->node2() )
- v1.Reverse();
+ v1.Reverse();
_normal += v1 ^ v2;
}
double normSqSize = _normal.SquareMagnitude();
#ifdef _DEBUG_
_face = face;
-#endif
+#else
(void)face; // unused in release mode
+#endif
}
//================================================================================
/*!
*/
//================================================================================
- bool QFace::IsSpoiled(const QLink* bentLink ) const // todo: unused
- {
- // code is valid for convex faces only
- gp_XYZ gc(0,0,0);
- for ( TIDSortedNodeSet::const_iterator n = begin(); n != end(); ++n )
- gc += XYZ( *n ) / double( size() );
- for ( size_t i = 0; i < _sides.size(); ++i )
- {
- if ( _sides[i] == bentLink ) continue;
- gp_Vec linkNorm = _normal ^ gp_Vec( XYZ(_sides[i]->node1()), XYZ(_sides[i]->node2()));
- gp_Vec vecOut( gc, _sides[i]->MiddlePnt() );
- if ( linkNorm * vecOut < 0 )
- linkNorm.Reverse();
- double mag2 = linkNorm.SquareMagnitude();
- if ( mag2 > numeric_limits<double>::min() )
- linkNorm /= sqrt( mag2 );
- gp_Vec vecBent ( _sides[i]->MiddlePnt(), bentLink->MediumPnt());
- gp_Vec vecStraight( _sides[i]->MiddlePnt(), bentLink->MiddlePnt());
- if ( vecBent * linkNorm > -0.1*vecStraight.Magnitude() )
- return true;
- }
- return false;
+ // bool QFace::IsSpoiled(const QLink* bentLink ) const
+ // {
+ // // code is valid for convex faces only
+ // gp_XYZ gc(0,0,0);
+ // for ( TIDSortedNodeSet::const_iterator n = begin(); n != end(); ++n )
+ // gc += XYZ( *n ) / double( size() );
+ // for ( size_t i = 0; i < _sides.size(); ++i )
+ // {
+ // if ( _sides[i] == bentLink ) continue;
+ // gp_Vec linkNorm = _normal ^ gp_Vec( XYZ(_sides[i]->node1()), XYZ(_sides[i]->node2()));
+ // gp_Vec vecOut( gc, _sides[i]->MiddlePnt() );
+ // if ( linkNorm * vecOut < 0 )
+ // linkNorm.Reverse();
+ // double mag2 = linkNorm.SquareMagnitude();
+ // if ( mag2 > numeric_limits<double>::min() )
+ // linkNorm /= sqrt( mag2 );
+ // gp_Vec vecBent ( _sides[i]->MiddlePnt(), bentLink->MediumPnt());
+ // gp_Vec vecStraight( _sides[i]->MiddlePnt(), bentLink->MiddlePnt());
+ // if ( vecBent * linkNorm > -0.1*vecStraight.Magnitude() )
+ // return true;
+ // }
+ // return false;
- }
+ // }
//================================================================================
/*!
volExp.Set( *pentIt, /*ignoreCentralNodes=*/false );
}
}
-#ifdef _DEBUG_
- // avoid warning: defined but not used operator<<()
- SMESH_Comment() << *links.begin() << *faces.begin();
-#endif
+
+ if ( false )
+ // avoid warning: defined but not used operator<<()
+ SMESH_Comment() << *links.begin() << *faces.begin();
+
+ return;
}
//================================================================================
//=======================================================================
//function : ChangePolyhedronNodes
//=======================================================================
- inline void ChangePolyhedronNodes (SMDS_Mesh* /*theMesh*/,
- SMESH::log_array_var& /*theSeq*/,
- CORBA::Long /*theId*/)
+ inline void ChangePolyhedronNodes (SMDS_Mesh* theMesh,
+ SMESH::log_array_var& theSeq,
+ CORBA::Long theId)
{
- // const SMESH::long_array& anIndexes = theSeq[theId].indexes;
- // CORBA::Long iind = 0, aNbElems = theSeq[theId].number;
-
- // for (CORBA::Long anElemId = 0; anElemId < aNbElems; anElemId++)
- // {
- // // find element
- // const SMDS_MeshElement* elem = FindElement(theMesh, anIndexes[iind++]);
- // // nb nodes
- // int nbNodes = anIndexes[iind++];
- // // nodes
- // std::vector<const SMDS_MeshNode*> aNodes (nbNodes);
- // for (int iNode = 0; iNode < nbNodes; iNode++) {
- // aNodes[iNode] = FindNode(theMesh, anIndexes[iind++]);
- // }
- // // nb faces
- // int nbFaces = anIndexes[iind++];
- // // quantities
- // std::vector<int> quantities (nbFaces);
- // for (int iFace = 0; iFace < nbFaces; iFace++) {
- // quantities[iFace] = anIndexes[iind++];
- // }
- // // change
- // theMesh->ChangePolyhedronNodes(elem, aNodes, quantities);
- // }
+ const SMESH::long_array& anIndexes = theSeq[theId].indexes;
+ CORBA::Long iind = 0, aNbElems = theSeq[theId].number;
+
+ for (CORBA::Long anElemId = 0; anElemId < aNbElems; anElemId++)
+ {
+ // find element
+ const SMDS_MeshElement* elem = FindElement(theMesh, anIndexes[iind++]);
+ // nb nodes
+ int nbNodes = anIndexes[iind++];
+ // nodes
+ std::vector<const SMDS_MeshNode*> aNodes (nbNodes);
+ for (int iNode = 0; iNode < nbNodes; iNode++) {
+ aNodes[iNode] = FindNode(theMesh, anIndexes[iind++]);
+ }
+ // nb faces
+ int nbFaces = anIndexes[iind++];
+ // quantities
+ std::vector<int> quantities (nbFaces);
+ for (int iFace = 0; iFace < nbFaces; iFace++) {
+ quantities[iFace] = anIndexes[iind++];
+ }
+ // change
+ theMesh->ChangePolyhedronNodes(elem, aNodes, quantities);
+ }
}
}
#include <LightApp_UpdateFlags.h>
#include <QtxFontEdit.h>
#include <QtxPopupMgr.h>
+#include <QtxInfoPanel.h>
#include <SALOME_ListIO.hxx>
#include <SUIT_Desktop.h>
#include <SUIT_FileDlg.h>
case SMESHOp::OpMeshOrder:
case SMESHOp::OpCreateSubMesh:
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
// fall through
case SMESHOp::OpCreateMesh:
case SMESHOp::OpCompute:
if ( isStudyLocked() )
break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
/*Standard_Boolean aRes;
SMESH::SMESH_Mesh_var aMesh = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(IObject);
if ( isStudyLocked() )
break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
EmitSignalDeactivateDialog();
SMESHGUI_MultiEditDlg* aDlg = NULL;
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if( vtkwnd ) {
EmitSignalDeactivateDialog();
( new SMESHGUI_SmoothingDlg( this ) )->show();
{
if (isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if (vtkwnd) {
EmitSignalDeactivateDialog();
( new SMESHGUI_ExtrusionDlg ( this ) )->show();
{
if (isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if (vtkwnd) {
EmitSignalDeactivateDialog();
( new SMESHGUI_ExtrusionAlongPathDlg( this ) )->show();
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if( vtkwnd ) {
EmitSignalDeactivateDialog();
( new SMESHGUI_RevolutionDlg( this ) )->show();
if ( isStudyLocked() )
break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if ( vtkwnd )
{
EmitSignalDeactivateDialog();
case SMESHOp::OpCreateGeometryGroup:
{
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
startOperation( theCommandID );
break;
}
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
EmitSignalDeactivateDialog();
SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_nil();
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
EmitSignalDeactivateDialog();
LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr();
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
EmitSignalDeactivateDialog();
LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr();
if ( isStudyLocked() )
break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
EmitSignalDeactivateDialog();
if ( isStudyLocked() )
break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
EmitSignalDeactivateDialog();
SMESHGUI_GroupOpDlg* aDlg = new SMESHGUI_DimGroupDlg( this );
if ( isStudyLocked() )
break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
EmitSignalDeactivateDialog();
SMESHGUI_FaceGroupsSeparatedByEdgesDlg* aDlg = new SMESHGUI_FaceGroupsSeparatedByEdgesDlg( this );
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr();
SALOME_ListIO selected;
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
SUIT_OverrideCursor wc;
LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr();
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if ( vtkwnd ) {
EmitSignalDeactivateDialog();
SMDSAbs_EntityType type = SMDSEntity_Edge;
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if ( vtkwnd ) {
EmitSignalDeactivateDialog();
( new SMESHGUI_CreatePolyhedralVolumeDlg( this ) )->show();
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if ( vtkwnd ) {
EmitSignalDeactivateDialog();
SMDSAbs_EntityType type = SMDSEntity_Last;
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if ( vtkwnd ) {
EmitSignalDeactivateDialog();
( new SMESHGUI_RemoveNodesDlg( this ) )->show();
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if( vtkwnd ) {
EmitSignalDeactivateDialog();
( new SMESHGUI_RemoveElementsDlg( this ) )->show();
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
SALOME_ListIO selected;
if( LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr() )
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
SALOME_ListIO selected;
if( LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr() )
aSel->selectedObjects( selected );
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if( vtkwnd ) {
EmitSignalDeactivateDialog();
( new SMESHGUI_RenumberingDlg( this, 0 ) )->show();
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if ( vtkwnd ) {
EmitSignalDeactivateDialog();
( new SMESHGUI_RenumberingDlg( this, 1 ) )->show();
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if ( vtkwnd ) {
EmitSignalDeactivateDialog();
( new SMESHGUI_TranslationDlg( this ) )->show();
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if( vtkwnd ) {
EmitSignalDeactivateDialog();
( new SMESHGUI_RotationDlg( this ) )->show();
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if(vtkwnd) {
EmitSignalDeactivateDialog();
( new SMESHGUI_SymmetryDlg( this ) )->show();
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if ( vtkwnd ) {
EmitSignalDeactivateDialog();
( new SMESHGUI_ScaleDlg( this ) )->show();
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if ( vtkwnd ) {
EmitSignalDeactivateDialog();
( new SMESHGUI_OffsetDlg( this ) )->show();
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if(vtkwnd) {
EmitSignalDeactivateDialog();
( new SMESHGUI_SewingDlg( this ) )->show();
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if(vtkwnd) {
EmitSignalDeactivateDialog();
( new SMESHGUI_MergeDlg( this, 0 ) )->show();
{
if (isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if (vtkwnd) {
EmitSignalDeactivateDialog();
( new SMESHGUI_MergeDlg( this, 1 ) )->show();
case SMESHOp::OpMoveNode: // MAKE MESH PASS THROUGH POINT
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
startOperation( SMESHOp::OpMoveNode );
break;
{
if(isStudyLocked()) break;
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
if ( vtkwnd ) {
EmitSignalDeactivateDialog();
( new SMESHGUI_DuplicateNodesDlg( this ) )->show();
case SMESHOp::OpElem0DOnElemNodes: // 0D_ON_ALL_NODES
if ( warnOnGeomModif() )
- break; // action forbiden as geometry modified
+ break; // action forbidden as geometry modified
startOperation( SMESHOp::OpElem0DOnElemNodes );
break;
popupMgr()->insert( separator(), -1, 0 );
createPopupItem( SMESHOp::OpCompute, OB, mesh, "&& selcount=1 && hasAlgo && isComputable" );
- createPopupItem( SMESHOp::OpRecompute, OB, mesh, "&& selcount=1 && hasAlgo && " + isNotEmpty );
+ createPopupItem( SMESHOp::OpRecompute, OB, mesh, "&& selcount=1 && hasAlgo && (" + isNotEmpty + " || hasErrors )");
createPopupItem( SMESHOp::OpShowErrors, OB, mesh, "&& selcount=1 && hasErrors" );
createPopupItem( SMESHOp::OpComputeSubMesh, OB, subMesh, "&& selcount=1 && hasAlgo && isComputable" );
createPopupItem( SMESHOp::OpPreCompute, OB, mesh, "&& selcount=1 && hasAlgo && isPreComputable" );
return ( id == SMESHOp::OpCompute || id == SMESHOp::OpPreCompute || id == SMESHOp::OpEvaluate || id == SMESHOp::OpRecompute ) ? false : SalomeApp_Module::reusableOperation( id );
}
+namespace
+{
+ QString wrap(const QString& text, const QString& tag)
+ { return QString("<%1>%2</%3>").arg(tag).arg(text).arg(tag);}
+}
+
bool SMESHGUI::activateModule( SUIT_Study* study )
{
bool res = SalomeApp_Module::activateModule( study );
setMenuShown( true );
setToolShown( true );
+ // Fill in Help Panel
+ SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( application() );
+ app->infoPanel()->setTitle(tr("INFO_WELCOME_TO_SMESH"));
+
+ int gb = app->infoPanel()->addGroup(tr("INFO_GRP_CREATE_MESH"));
+ QString lab;
+ QStringList items;
+ lab = tr("INFO_DEFINE_ALGOS") + "<br/>";
+ lab = lab + tr("INFO_DEFINE_HYPOS") + "<br/>";
+ lab = lab + tr("INFO_COMPUTE") + "<br/>";
+ lab = lab + tr("INFO_REFINE") + ":";
+ items << wrap(tr("INFO_REFINE_LOCAL_SIZE"), "li")
+ << wrap(tr("INFO_REFINE_SUBMESH"), "li");
+ lab = lab + wrap(items.join(""), "ul");
+ items.clear();
+
+ app->infoPanel()->addLabel(lab, gb);
+
+ gb = app->infoPanel()->addGroup(tr("INFO_GRP_IMPORT_MESH"));
+ items << wrap("UNV", "li")
+ << wrap("MED", "li")
+ << wrap("STL", "li")
+ << wrap("CGNS", "li")
+ << wrap("SAUV", "li")
+ << wrap("GMF", "li");
+ lab = tr("INFO_AVAILABLE_FORMATS") + ":" + wrap(items.join(""), "ul");
+ items.clear();
+
+ app->infoPanel()->addLabel(lab, gb);
+
+ gb = app->infoPanel()->addGroup(tr("INFO_GRP_CHECK_MESH"));
+ lab = tr("INFO_DISPLAY") + "<br/>";
+ items << wrap(tr("INFO_QUALITY_AREA"), "li")
+ << wrap(tr("INFO_QUALITY_VOLUME"), "li")
+ << wrap(tr("INFO_QUALITY_ASPECT_RATION"), "li")
+ << wrap("...", "li");
+ lab = lab + tr("INFO_QUALITY_INFO") + ":" + wrap(items.join(""), "ul");
+ items.clear();
+ lab = lab + tr("INFO_CLIPPING");
+
+ app->infoPanel()->addLabel(lab, gb);
+ // << Help Panel
+
// import Python module that manages SMESH plugins (need to be here because SalomePyQt API uses active module)
PyGILState_STATE gstate = PyGILState_Ensure();
PyObject* pluginsmanager = PyImport_ImportModuleNoBlock((char*)"salome_pluginsmanager");
{
aMap.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::LeftDockWidgetArea );
aMap.insert( SalomeApp_Application::WT_NoteBook, Qt::LeftDockWidgetArea );
+ aMap.insert( SalomeApp_Application::WT_InfoPanel, Qt::RightDockWidgetArea);
#ifndef DISABLE_PYCONSOLE
aMap.insert( SalomeApp_Application::WT_PyConsole, Qt::BottomDockWidgetArea );
#endif
//=======================================================================
SMESH::Filter::Criterion SMESHGUI_FilterDlg::createCriterion()
{
- SMESH::Filter::Criterion aCriterion;
+ SMESH::Filter::Criterion aCriterion;
aCriterion.Type = SMESH::FT_Undefined;
aCriterion.Compare = SMESH::FT_Undefined;
void SMESHGUI_FilterDlg::onSelectionDone()
{
const SALOME_ListIO& aList = mySelector->StoredIObjects();
- if ( myMesh->_is_nil() && aList.Extent()>0 )
+ if ( myMesh->_is_nil() && aList.Extent() > 0 )
{
myMesh = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(aList.First());
if ( !(myMesh->_is_nil()) ) {
myTable->SetLibsEnabled(false);
myListBox->setMinimumHeight((int)(myTable->sizeHint().height() * 0.5));
- //myListBox->setRowMode(QListWidget::FitToWidth); //VSR : TODO ???
+ //myListBox->setRowMode(QListWidget::FitToWidth);
myListBox->setSelectionMode(QListWidget::SingleSelection);
myOpenBtn->setAutoDefault(false);
mySelector->AddOrRemoveIndex(myActor->getIO(), newIndices, false);
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
aViewWindow->highlight( myActor->getIO(), true, true );
-
+
if (send == LineEdit1)
myOk1 = true;
else if (send == LineEdit2)
QStringList aListId = theNewText.split(" ", QString::SkipEmptyParts);
- bool isEvenOneExists = false;
+ bool atLeastOneExists = false;
for (int i = 0; i < aListId.count(); i++) {
const SMDS_MeshElement * e = aMesh->FindElement(aListId[ i ].toInt());
- if (e)
+ if (e)
+ {
newIndices.Add(e->GetID());
-
- if (!isEvenOneExists)
- isEvenOneExists = true;
+ atLeastOneExists = true;
+ }
}
-
+
mySelector->AddOrRemoveIndex(myActor->getIO(), newIndices, false);
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
aViewWindow->highlight( myActor->getIO(), true, true );
-
- if (isEvenOneExists) {
+
+ if (atLeastOneExists) {
if (send == LineEdit1)
myOk1 = true;
else if(send == LineEdit4)
SMESHGUI_EXPORT
bool NoSmeshActors(SUIT_ViewWindow *theWnd=nullptr);
-};
+}
#endif // SMESHGUI_VTKUTILS_H
<source>PREF_PREVIEW_CHUNK_SIZE</source>
<translation>Sub-shapes preview chunk size</translation>
</message>
+ <message>
+ <source>INFO_WELCOME_TO_SMESH</source>
+ <translation>Welcome to Mesh</translation>
+ </message>
+ <message>
+ <source>INFO_GRP_CREATE_MESH</source>
+ <translation>Create mesh</translation>
+ </message>
+ <message>
+ <source>INFO_DEFINE_ALGOS</source>
+ <translation>Choose algorithms</translation>
+ </message>
+ <message>
+ <source>INFO_DEFINE_HYPOS</source>
+ <translation>Define hypotheses</translation>
+ </message>
+ <message>
+ <source>INFO_COMPUTE</source>
+ <translation>Compute</translation>
+ </message>
+ <message>
+ <source>INFO_REFINE</source>
+ <translation>Add refinements</translation>
+ </message>
+ <message>
+ <source>INFO_REFINE_LOCAL_SIZE</source>
+ <translation>via local sizes with some hypotheses</translation>
+ </message>
+ <message>
+ <source>INFO_REFINE_SUBMESH</source>
+ <translation>via sub-meshes</translation>
+ </message>
+ <message>
+ <source>INFO_GRP_IMPORT_MESH</source>
+ <translation>Import mesh</translation>
+ </message>
+ <message>
+ <source>INFO_AVAILABLE_FORMATS</source>
+ <translation>Available formats</translation>
+ </message>
+ <message>
+ <source>INFO_GRP_CHECK_MESH</source>
+ <translation> Check mesh quality</translation>
+ </message>
+ <message>
+ <source>INFO_DISPLAY</source>
+ <translation>Display mesh</translation>
+ </message>
+ <message>
+ <source>INFO_QUALITY_INFO</source>
+ <translation>Display some quality criteria</translation>
+ </message>
+ <message>
+ <source>INFO_QUALITY_AREA</source>
+ <translation>area</translation>
+ </message>
+ <message>
+ <source>INFO_QUALITY_VOLUME</source>
+ <translation>volume</translation>
+ </message>
+ <message>
+ <source>INFO_QUALITY_ASPECT_RATION</source>
+ <translation>aspect ration</translation>
+ </message>
+ <message>
+ <source>INFO_CLIPPING</source>
+ <translation>Add clipping planes</translation>
+ </message>
</context>
<context>
<name>SMESHGUI_GroupDlg</name>
<source>SMESH_HEX_PRISM</source>
<translation>Prisme hexagonal</translation>
</message>
+ <message>
+ <source>Generate mesh from CAD model or import mesh</source>
+ <translation type="unfinished">Generate mesh from CAD model or import mesh</translation>
+ </message>
</context>
<context>
<name>SMESHGUI_FieldSelectorWdg</name>
<source>PREF_PREVIEW_CHUNK_SIZE</source>
<translation>Taille des blocs pour la prévisualisation des sous-shapes</translation>
</message>
+ <message>
+ <source>INFO_WELCOME_TO_SMESH</source>
+ <translation type="unfinished">Welcome to Mesh</translation>
+ </message>
+ <message>
+ <source>INFO_GRP_CREATE_MESH</source>
+ <translation type="unfinished">Create mesh</translation>
+ </message>
+ <message>
+ <source>INFO_DEFINE_ALGOS</source>
+ <translation type="unfinished">Choose algorithms</translation>
+ </message>
+ <message>
+ <source>INFO_DEFINE_HYPOS</source>
+ <translation type="unfinished">Define hypotheses</translation>
+ </message>
+ <message>
+ <source>INFO_COMPUTE</source>
+ <translation type="unfinished">Compute</translation>
+ </message>
+ <message>
+ <source>INFO_REFINE</source>
+ <translation type="unfinished">Add refinements</translation>
+ </message>
+ <message>
+ <source>INFO_REFINE_LOCAL_SIZE</source>
+ <translation type="unfinished">via local sizes with some hypotheses</translation>
+ </message>
+ <message>
+ <source>INFO_REFINE_SUBMESH</source>
+ <translation type="unfinished">via sub-meshes</translation>
+ </message>
+ <message>
+ <source>INFO_GRP_IMPORT_MESH</source>
+ <translation type="unfinished">Import mesh</translation>
+ </message>
+ <message>
+ <source>INFO_AVAILABLE_FORMATS</source>
+ <translation type="unfinished">Available formats</translation>
+ </message>
+ <message>
+ <source>INFO_GRP_CHECK_MESH</source>
+ <translation type="unfinished"> Check mesh quality</translation>
+ </message>
+ <message>
+ <source>INFO_DISPLAY</source>
+ <translation type="unfinished">Display mesh</translation>
+ </message>
+ <message>
+ <source>INFO_QUALITY_INFO</source>
+ <translation type="unfinished">Display some quality criteria</translation>
+ </message>
+ <message>
+ <source>INFO_QUALITY_AREA</source>
+ <translation type="unfinished">area</translation>
+ </message>
+ <message>
+ <source>INFO_QUALITY_VOLUME</source>
+ <translation type="unfinished">volume</translation>
+ </message>
+ <message>
+ <source>INFO_QUALITY_ASPECT_RATION</source>
+ <translation type="unfinished">aspect ration</translation>
+ </message>
+ <message>
+ <source>INFO_CLIPPING</source>
+ <translation type="unfinished">Add clipping planes</translation>
+ </message>
</context>
<context>
<name>SMESHGUI_GroupDlg</name>
<source>SMESH_HEX_PRISM</source>
<translation>六角形プリズム</translation>
</message>
+ <message>
+ <source>Generate mesh from CAD model or import mesh</source>
+ <translation type="unfinished">Generate mesh from CAD model or import mesh</translation>
+ </message>
</context>
<context>
<name>SMESHGUI_FieldSelectorWdg</name>
<source>PREF_PREVIEW_CHUNK_SIZE</source>
<translation>Under-shapes のブロックのサイズ</translation>
</message>
+ <message>
+ <source>INFO_WELCOME_TO_SMESH</source>
+ <translation type="unfinished">Welcome to Mesh</translation>
+ </message>
+ <message>
+ <source>INFO_GRP_CREATE_MESH</source>
+ <translation type="unfinished">Create mesh</translation>
+ </message>
+ <message>
+ <source>INFO_DEFINE_ALGOS</source>
+ <translation type="unfinished">Choose algorithms</translation>
+ </message>
+ <message>
+ <source>INFO_DEFINE_HYPOS</source>
+ <translation type="unfinished">Define hypotheses</translation>
+ </message>
+ <message>
+ <source>INFO_COMPUTE</source>
+ <translation type="unfinished">Compute</translation>
+ </message>
+ <message>
+ <source>INFO_REFINE</source>
+ <translation type="unfinished">Add refinements</translation>
+ </message>
+ <message>
+ <source>INFO_REFINE_LOCAL_SIZE</source>
+ <translation type="unfinished">via local sizes with some hypotheses</translation>
+ </message>
+ <message>
+ <source>INFO_REFINE_SUBMESH</source>
+ <translation type="unfinished">via sub-meshes</translation>
+ </message>
+ <message>
+ <source>INFO_GRP_IMPORT_MESH</source>
+ <translation type="unfinished">Import mesh</translation>
+ </message>
+ <message>
+ <source>INFO_AVAILABLE_FORMATS</source>
+ <translation type="unfinished">Available formats</translation>
+ </message>
+ <message>
+ <source>INFO_GRP_CHECK_MESH</source>
+ <translation type="unfinished"> Check mesh quality</translation>
+ </message>
+ <message>
+ <source>INFO_DISPLAY</source>
+ <translation type="unfinished">Display mesh</translation>
+ </message>
+ <message>
+ <source>INFO_QUALITY_INFO</source>
+ <translation type="unfinished">Display some quality criteria</translation>
+ </message>
+ <message>
+ <source>INFO_QUALITY_AREA</source>
+ <translation type="unfinished">area</translation>
+ </message>
+ <message>
+ <source>INFO_QUALITY_VOLUME</source>
+ <translation type="unfinished">volume</translation>
+ </message>
+ <message>
+ <source>INFO_QUALITY_ASPECT_RATION</source>
+ <translation type="unfinished">aspect ration</translation>
+ </message>
+ <message>
+ <source>INFO_CLIPPING</source>
+ <translation type="unfinished">Add clipping planes</translation>
+ </message>
</context>
<context>
<name>SMESHGUI_GroupDlg</name>
//================================================================================
/*!
- * \brief Finds parameters corresponding to a given UV of a given face by searching
- * around the starting solution
+ * \brief Find parameters corresponding to a given UV of a given face by searching
+ * around the starting solution
* \param [in] theUV - the UV to locate
* \param [in] tface - the face
* \param [in,out] theParams - the starting parameters to improve
public:
enum OriFlags //!< transformation types
{
- REV_X = 1, REV_Y = 2, SWAP_XY = 4, MAX_ORI = REV_X|REV_Y|SWAP_XY
+ NO_TRSF = 0, REV_X = 1, REV_Y = 2, SWAP_XY = 4, MAX_ORI = REV_X|REV_Y|SWAP_XY
};
- SMESH_OrientedIndexer( const SMESH_Indexer& indexer, const int oriFlags ):
+ SMESH_OrientedIndexer( const SMESH_Indexer& indexer, const int oriFlags = NO_TRSF):
TFather( indexer._xSize, indexer._ySize ),
_xRevFun( (oriFlags & REV_X) ? & reverse : & lazy ),
_yRevFun( (oriFlags & REV_Y) ? & reverse : & lazy ),
*/
//================================================================================
- void bndSegsToMesh( const vector< vector< BndSeg > >& /*bndSegsPerEdge*/ )
+ void bndSegsToMesh( const vector< vector< BndSeg > >& bndSegsPerEdge )
{
+ if ( bndSegsPerEdge.empty() )
+ return;
#ifdef _MYDEBUG_
if ( !getenv("bndSegsToMesh")) return;
map< const TVDVertex *, int > v2Node;
#ifdef _DEBUG_
std::cerr << "BAD tria" << std::endl;
cf.Dump();
+#else
+ if ( i < 0 ) cf.Dump(); // avoid "CutFace::Dump() unused in release mode"
#endif
continue;
}
*/
//================================================================================
- void CutFace::Dump() const // todo: unused in release mode
+ void CutFace::Dump() const
{
std::cout << std::endl << "INI F " << myInitFace->GetID() << std::endl;
for ( size_t i = 0; i < myLinks.size(); ++i )
}
}
- if ( closestNode1 && closestNode2 ) {
- size_t i = myLinks.size();
- myLinks.resize( i + 2 );
- myLinks[ i ].Set( closestNode1, closestNode2 );
- myLinks[ i+1 ].Set( closestNode2, closestNode1 );
- }
+ size_t i = myLinks.size();
+ myLinks.resize( i + 2 );
+ myLinks[ i ].Set( closestNode1, closestNode2 );
+ myLinks[ i+1 ].Set( closestNode2, closestNode1 );
}
return true;
{
SMESH_MeshAlgos::PolySegment& polySeg = mySegments[ iSeg ];
- if ( ( polySeg.myXYZ[0] - polySeg.myXYZ[1] ).SquareModulus() == 0 )
+ if (( polySeg.myXYZ[0] - polySeg.myXYZ[1] ).SquareModulus() == 0 )
{
myPaths[ iSeg ].AddPoint( polySeg.myXYZ[0] );
myPaths[ iSeg ].AddPoint( polySeg.myXYZ[1] );
#include <SALOMEDS_wrap.hxx>
#include <utilities.h>
+#include <Basics_OCCTVersion.hxx>
#include <Resource_DataMapOfAsciiStringAsciiString.hxx>
+#if OCC_VERSION_LARGE < 0x07050000
#include <Resource_DataMapIteratorOfDataMapOfAsciiStringAsciiString.hxx>
+#endif
#include "SMESH_Gen_i.hxx"
/* SALOME headers that include CORBA headers that include windows.h
Threshold = SMESH + types[ iGeom ];
#ifdef _DEBUG_
// is types complete? (compilation failure means that enum GeometryType changed)
- int _asrt[( sizeof(types) / sizeof(const char*) == nbTypes ) ? 2 : -1 ]; _asrt[0]=_asrt[1]; // _asrt[1] may be used uninitialized => replace this with static_assert?
+ static_assert( sizeof(types) / sizeof(const char*) == nbTypes,
+ "Update names of GeometryType's!!!" );
#endif
}
if (Type == "SMESH.FT_EntityType")
Threshold = SMESH + types[ iGeom ];
#ifdef _DEBUG_
// is 'types' complete? (compilation failure means that enum EntityType changed)
- int _asrt[( sizeof(types) / sizeof(const char*) == nbTypes ) ? 2 : -1 ]; _asrt[0]=_asrt[1]; // _asrt[1] may be used uninitialized => replace this with static_assert?
+ static_assert( sizeof(types) / sizeof(const char*) == nbTypes,
+ "Update names of EntityType's!!!" );
#endif
}
}
std::list<Handle(_pyCommand)> myUnusedCommands;
std::list<Handle(_pyObject) > myReferredObjs;
// maps used to clear commands setting parameters if result of setting is
- // discared (e.g. by mesh.Clear())
+ // discarded (e.g. by mesh.Clear())
std::map<_AString, std::list<Handle(_pyCommand)> > myMeth2Commands;
std::map< _pyCommand::TAddr, std::list<Handle(_pyCommand) > > myComputeAddr2Cmds;
std::list<Handle(_pyCommand) > myComputeCmds;
std::string BelongToMeshGroup_i::GetGroupID()
{
if ( myGroup->_is_nil() )
- SMESH::SMESH_GroupBase_var( GetGroup() ); // todo: unnecessary parentheses?
+ SMESH::SMESH_GroupBase_var( GetGroup() ); // decref the returned pointer
if ( !myGroup->_is_nil() )
myID = SMESH_Gen_i::GetORB()->object_to_string( myGroup );
SMESH_TRY;
std::string aPlatformLibName;
- //typedef GenericHypothesisCreator_i* (*GetHypothesisCreator)(const char*);
GenericHypothesisCreator_i* aCreator =
getHypothesisCreator(theAlgoType, theLibName, aPlatformLibName);
if (aCreator)
}
//-----------------------------------------------------------------------------
-void unionLists(TListOfInt& theListOfId,
+bool unionLists(TListOfInt& theListOfId,
TListOfListOfInt& theListOfListOfId,
const int theIndx )
{
+ bool changed = false;
+ if ( theListOfId.empty() )
+ return changed;
TListOfListOfInt::iterator it = theListOfListOfId.begin();
for ( int i = 0; it != theListOfListOfId.end(); it++, i++ )
{
TListOfInt::iterator it2 = otherListOfId.begin();
for ( ; it2 != otherListOfId.end(); it2++ ) {
if ( find( theListOfId.begin(), theListOfId.end(), (*it2) ) == theListOfId.end() )
+ {
theListOfId.push_back(*it2);
+ changed = true;
+ }
}
// clear source list
otherListOfId.clear();
}
+ return changed;
}
//-----------------------------------------------------------------------------
TListOfListOfInt allConurrent = findConcurrentSubMeshes();
anOrder.splice( anOrder.end(), allConurrent );
- int listIndx = 0;
- TListOfListOfInt::iterator listIt = anOrder.begin();
- for(; listIt != anOrder.end(); listIt++, listIndx++ )
- unionLists( *listIt, anOrder, listIndx + 1 );
+ bool changed;
+ do {
+ changed = false;
+ TListOfListOfInt::iterator listIt = anOrder.begin();
+ for ( int listIndx = 1; listIt != anOrder.end(); listIt++, listIndx++ )
+ if ( unionLists( *listIt, anOrder, listIndx ))
+ changed = true;
+ }
+ while ( changed );
// convert submesh ids into interface instances
// and dump command into python
varIndex = atoi( varIndexPtr );
if ( 0 <= (int)varIndex && varIndex < vars.size() && !vars[varIndex].empty() )
{
- // replace '$VarIndex$' either by var name of var value
+ // replace '$VarIndex$' either by var name or var value
const char var0 = vars[varIndex][0];
const bool isValue = (( '0' <= var0 && var0 <= '9' ) || var0 == '-');
if ( isValue ) // remove TVar::Quote() as well
CORBA::Boolean SMESH_Pattern_i::LoadFromFile(const char* theFileContents)
{
- // remove some gabage from the end
+ // remove some garbage from the end
TCollection_AsciiString patternDescription = (char*) theFileContents;
int pos = patternDescription.Length();
while (! isdigit( patternDescription.Value( pos )))
#include "SMESH_MeshEditor_i.hxx"
#include <Basics_Utils.hxx>
+#include <Basics_OCCTVersion.hxx>
#include <SALOMEDS_wrap.hxx>
#include <LDOMParser.hxx>
-#include <Resource_DataMapIteratorOfDataMapOfAsciiStringAsciiString.hxx>
#include <TColStd_HSequenceOfInteger.hxx>
#include <TCollection_AsciiString.hxx>
+#if OCC_VERSION_LARGE < 0x07050000
+#include <Resource_DataMapIteratorOfDataMapOfAsciiStringAsciiString.hxx>
+#endif
+
#include <cstring>
#ifdef _DEBUG_
#ifdef _DEBUG_
std::cout << "Exception in SMESH_Gen_i::DumpPython(): " << text << std::endl;
#else
- (void)text; // todo: unused in release mode
+ (void)text; // unused in release mode
#endif
}
//=======================================================================
SMESH_ComputeErrorPtr StdMeshers_BlockRenumber::CheckHypothesis(SMESH_Mesh& aMesh,
- const TopoDS_Shape& aShape) const
+ const TopoDS_Shape& /*shape*/) const
{
SMESH_Comment errorTxt;
for ( size_t i = 0; i < _blockCS.size() && errorTxt.empty(); ++i )
//=======================================================================
template<class Archive>
- void serialize(Archive & ar, StdMeshers_BlockCS & blockCS, const unsigned int version)
+ void serialize(Archive & ar, StdMeshers_BlockCS & blockCS, const unsigned int /*version*/)
{
ar & blockCS._solid;
ar & blockCS._vertex000;
* \param theShape - the geometry of interest
* \retval bool - true if parameter values have been successfully defined
*/
- bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape) override
+ bool SetParametersByMesh(const SMESH_Mesh* /*mesh*/, const TopoDS_Shape& /*shape*/) override
{ return false; }
/*!
* \brief Initialize my parameter values by default parameters.
* \retval bool - true if parameter values have been successfully defined
*/
- bool SetParametersByDefaults(const TDefaults& dflts, const SMESH_Mesh* theMesh=0) override
+ bool SetParametersByDefaults(const TDefaults& /*dflts*/, const SMESH_Mesh* /*mesh*/=0) override
{ return false; }
public:
// Persistence: define both input and output at once
friend class boost::serialization::access;
- template<class Archive> void serialize( Archive & ar, const unsigned int version )
+ template<class Archive> void serialize( Archive & ar, const unsigned int /*version*/ )
{
ar & _blockCS;
}
case 3: // at a corner
{
_Node& node = _hexNodes[ subEntity - SMESH_Block::ID_FirstV ];
- if ( node.Node() != 0 )
+ if ( node.Node() )
{
if ( node._intPoint )
node._intPoint->Add( _eIntPoints[ iP ]->_faceIDs, _eIntPoints[ iP ]->_node );
continue;
// perform intersection
- E_IntersectPoint* eip, *vip = 0; // todo: vip must be explicitly initialized to avoid warning (see below)
+ E_IntersectPoint* eip, *vip = 0;
for ( int iDirZ = 0; iDirZ < 3; ++iDirZ )
{
GridPlanes& planes = pln[ iDirZ ];
vip = _grid->Add( ip );
if ( isInternal && !sameV )
vip->_faceIDs.push_back( _grid->PseudoIntExtFaceID() );
- if ( !addIntersection( vip, hexes, ijk, d000 ) && !sameV ) // todo: vip must be explicitly initialized to avoid warning (see above)
+ if ( !addIntersection( vip, hexes, ijk, d000 ) && !sameV )
_grid->Remove( vip );
ip._shapeID = edgeID;
}
#include <BRepAdaptor_Surface.hxx>
#include <BRep_Tool.hxx>
+#include <Bnd_B3d.hxx>
#include <Standard_ErrorHandler.hxx>
#include <Standard_Failure.hxx>
#include <TopExp_Explorer.hxx>
#include <gp_XYZ.hxx>
#include <list>
+#include <numeric>
#include <set>
#include <vector>
-#include <numeric>
-#include <Bnd_B3d.hxx>
using namespace std;
#include "Utils_ExceptHandlers.hxx"
#include <cstddef>
-
#include <numeric>
typedef SMESH_Comment TComm;
if ( removeImport )
{
- // treate removal of Import algo from subMesh
+ // treat removal of Import algo from subMesh
removeSubmesh( subMesh, (_ListenerData*) data );
}
else if ( modifHyp ||
( SMESH_subMesh::CLEAN == event &&
SMESH_subMesh::COMPUTE_EVENT == eventType))
{
- // treate modification of ImportSource hypothesis
+ // treat modification of ImportSource hypothesis
clearSubmesh( subMesh, (_ListenerData*) data, /*all=*/false );
}
else if ( SMESH_subMesh::CHECK_COMPUTE_STATE == event &&
d->_computedSubM.insert( *smIt);
}
}
- // Clear _ImportData::_n2n if it's no more useful, i.e. when
+ // Clear _ImportData::_n2n if it isn't useful anymore, i.e. when
// the event is not within mesh.Compute()
if ( SMESH_subMesh::ALGO_EVENT == eventType )
clearN2N( subMesh->GetFather() );
mesh->GetSubMesh( v )->ComputeStateEngine( SMESH_subMesh::COMPUTE );
const SMDS_MeshNode* n = SMESH_Algo::VertexNode( v, meshDS );
newNodes[ is2ndV ? newNodes.size()-1 : 0 ] = (SMDS_MeshNode*) n;
+ if ( !n )
+ return toSM( error( TCom("No node on vertex #") << meshDS->ShapeToIndex( v )));
}
// compute nodes on target EDGEs
bool storeShapeForDebug(const TopoDS_Shape& shape)
{
+ bool toShow;
#ifdef _DEBUG_
const char* type[] ={"COMPOUND","COMPSOLID","SOLID","SHELL","FACE","WIRE","EDGE","VERTEX"};
BRepTools::Write( shape, SMESH_Comment("/tmp/") << type[shape.ShapeType()] << "_"
<< shape.TShape().operator->() << ".brep");
- if ( !theMeshDS[0] ) {
- show_shape( TopoDS_Shape(), "avoid warning: show_shape() defined but not used");
- show_list( "avoid warning: show_list() defined but not used", list< TopoDS_Edge >() );
- }
+ toShow = !theMeshDS[0]; // no show
#else
- (void)shape; // unused in release mode
+ toShow = theMeshDS[0]; // no show
#endif
+ if ( toShow ) {
+ show_shape( shape, "avoid warning: show_shape() defined but not used");
+ show_list( "avoid warning: show_list() defined but not used", list< TopoDS_Edge >() );
+ }
return false;
}
// b) find association of a couple of vertices and recall self.
//
+#ifdef _DEBUG_
theMeshDS[0] = theMesh1->GetMeshDS(); // debug
theMeshDS[1] = theMesh2->GetMeshDS();
+#endif
// =================================================================================
// 1) Is it the case of associating a group member -> another group? (PAL16202, 16203)
*/
//================================================================================
-bool StdMeshersGUI_BlockRenumberCreator::checkParams( QString& msg ) const
+bool StdMeshersGUI_BlockRenumberCreator::checkParams( QString& /*msg*/ ) const
{
return true;
}
*/
//================================================================================
-bool StdMeshers_BlockRenumber_i::getObjectsDependOn( std::vector< std::string > & entryArray,
- std::vector< int > & subIDArray ) const
+bool
+StdMeshers_BlockRenumber_i::getObjectsDependOn( std::vector< std::string > & entryArray,
+ std::vector< int > & /*subIDArray*/ ) const
{
const std::vector< StdMeshers_BlockCS >& bcsVec =
const_cast<StdMeshers_BlockRenumber_i*>(this)->GetImpl()->GetBlocksOrientation();
//================================================================================
bool StdMeshers_BlockRenumber_i::setObjectsDependOn( std::vector< std::string > & entryArray,
- std::vector< int > & subIDArray )
+ std::vector< int > & /*subIDArray*/ )
{
std::vector< StdMeshers_BlockCS > bcsVec( entryArray.size() / 3 );
for ( size_t i = 0; i + 2 < entryArray.size(); i += 3 )
for slig in reversed(text.split(separator)):
lig=slig.strip()
#print "load ResumeData",lig
- if lig=="": continue #skip blanck lines
+ if lig=="": continue #skip blank lines
if lig[0]=="#": break
try:
tit,value=lig.split("=")
- **File**
- You can change the file used to store your favorite remeshing hypothesis. see paragraph :ref:`hypothesis-label` for further informations.
+ You can change the file used to store your favorite remeshing hypothesis. see paragraph :ref:`hypothesis-label` for further information.
.. image:: images/Generic.png
:align: center
for slig in reversed(text.split(separator)):
lig=slig.strip()
#print "load ResumeData",lig
- if lig=="": continue #skip blanck lines
+ if lig=="": continue #skip blank lines
if lig[0]=="#": break
try:
tit,value=lig.split("=")