except :
MESSAGE += "\nImpossible d'utiliser "+TEXTE
ERROR += 1
-# On arrete tout en cas de problème car les suivants en dépendent
+# On arrete tout en cas de probleme car les suivants en dependent
break
else :
if ComputeMeshes :
if ERROR :
raise Exception("\n\nNombre d'erreurs : %d" % ERROR + MESSAGE + "\n")
else :
- print("\nAucun problème\n")
+ print("\nAucun probleme\n")
std::cout << "******************" << std::endl;
std::stringstream buffer;
buffer << "Degre U : " << surf_adap.UDegree();
- //conversion nécessaire pour affichage
+ //conversion necessaire pour affichage
std::cout << buffer.str() << std::endl;
std::cout << " Degre V : " << surf_adap.VDegree() << std::endl;
std::cout << " Nb Poles U : " << surf_adap.NbUPoles() << std::endl;
</message>
<message>
<source>CGNS_EXPORT_ELEMS_BY_TYPE</source>
- <translation>Groupe les éléments par type</translation>
+ <translation>Groupe les elements par type</translation>
</message>
<message>
<source>GMF_ASCII_FILES_FILTER</source>
</message>
<message>
<source>FREE_NODES</source>
- <translation>Nœuds isolés</translation>
+ <translation>Noeuds isoles</translation>
</message>
<message>
<source>NODE_CONNECTIVITY_NB</source>
- <translation>Nombre de connectivité par nœud</translation>
+ <translation>Nombre de connectivite par noeud</translation>
</message>
<message>
<source>FREE_EDGES</source>
- <translation>Arêtes libres</translation>
+ <translation>Aretes libres</translation>
</message>
<message>
<source>FREE_FACES</source>
</message>
<message>
<source>BARE_BORDER_FACE</source>
- <translation>Faces avec éléments de peau 1D manquants</translation>
+ <translation>Faces avec elements de peau 1D manquants</translation>
</message>
<message>
<source>OVER_CONSTRAINED_FACE</source>
</message>
<message>
<source>BARE_BORDER_VOLUME</source>
- <translation>Volumes avec éléments de peau 2D manquants</translation>
+ <translation>Volumes avec elements de peau 2D manquants</translation>
</message>
<message>
<source>OVER_CONSTRAINED_VOLUME</source>
</message>
<message>
<source>MIN_ELEM_EDGE</source>
- <translation>Longueur arête Minimum</translation>
+ <translation>Longueur arete Minimum</translation>
</message>
<message>
<source>ASPECTRATIO_3D_ELEMENTS</source>
</message>
<message>
<source>COMPERR_ALGO_FAILED</source>
- <translation>L'algorithme n'a pas abouti</translation>
+ <translation>L algorithme n a pas abouti</translation>
</message>
<message>
<source>COMPERR_BAD_INPUT_MESH</source>
- <translation>Le maillage d'entrée est invalide</translation>
+ <translation>Le maillage d entree est invalide</translation>
</message>
<message>
<source>COMPERR_BAD_SHAPE</source>
- <translation>Géométrie inattendue</translation>
+ <translation>Geometrie inattendue</translation>
</message>
<message>
<source>COMPERR_EXCEPTION</source>
</message>
<message>
<source>COMPERR_MEMORY_PB</source>
- <translation>Problème d'affectation de la mémoire</translation>
+ <translation>Probleme d affectation de la memoire</translation>
</message>
<message>
<source>COMPERR_OCC_EXCEPTION</source>
</message>
<message>
<source>COMPERR_OK</source>
- <translation>Pas d'erreur</translation>
+ <translation>Pas d erreur</translation>
</message>
<message>
<source>COMPERR_SLM_EXCEPTION</source>
</message>
<message>
<source>COMPERR_CANCELED</source>
- <translation>Calcul annulé</translation>
+ <translation>Calcul annule</translation>
</message>
<message>
<source>COMPERR_NO_MESH_ON_SHAPE</source>
- <translation>Aucun élément n'est associé à une sous-shape</translation>
+ <translation>Aucun element n est associe a une sous-shape</translation>
</message>
<message>
<source>COMPERR_BAD_PARMETERS</source>
- <translation>Paramètres d'entrée invalides</translation>
+ <translation>Parametres d entree invalides</translation>
</message>
<message>
<source>EDITERR_NO_MEDIUM_ON_GEOM</source>
- <translation>Certain noeuds milieux (affichés en magenta) ne sont pas placés
- sur la géométrie pour éviter d'obtenir des élements distordus.</translation>
+ <translation>Certain noeuds milieux (affiches en magenta) ne sont pas places
+ sur la geometrie pour eviter d obtenir des elements distordus.</translation>
</message>
<message>
<source>SMESH_GEOM</source>
- <translation>Géométrie</translation>
+ <translation>Geometrie</translation>
</message>
<message>
<source>DIRECT_GEOM_SELECTION</source>
- <translation>Sélection directe de la géométrie</translation>
+ <translation>Selection directe de la geometrie</translation>
</message>
<message>
<source>ELEMENT_ID</source>
- <translation>ID de l'élément</translation>
+ <translation>ID de l element</translation>
</message>
<message>
<source>ELEMENT_IDS</source>
- <translation>IDs de l'élément</translation>
+ <translation>IDs de l element</translation>
</message>
<message>
<source>FREE_BORDERS</source>
- <translation>Frontières libres</translation>
+ <translation>Frontieres libres</translation>
</message>
<message>
<source>GEOMETRY_NAME</source>
- <translation>Nom de la géométrie</translation>
+ <translation>Nom de la geometrie</translation>
</message>
<message>
<source>GEOM_BY_MESH_ELEM_SELECTION</source>
- <translation>Trouver la géométrie en choisissant l'élément de maillage</translation>
+ <translation>Trouver la geometrie en choisissant l element de maillage</translation>
</message>
<message>
<source>GLOBAL_ALGO</source>
</message>
<message>
<source>MAX_ELEMENT_LENGTH_2D</source>
- <translation>Diamètre d'éléments 2D</translation>
+ <translation>Diametre d elements 2D</translation>
</message>
<message>
<source>MAX_ELEMENT_LENGTH_3D</source>
- <translation>Diamètre Element 3D</translation>
+ <translation>Diametre Element 3D</translation>
</message>
<message>
<source>DEFLECTION_2D</source>
</message>
<message>
<source>MEN_AUTO_UPD</source>
- <translation>Mise à jour automatique</translation>
+ <translation>Mise a jour automatique</translation>
</message>
<message>
<source>MEN_BUILD_COMPOUND</source>
</message>
<message>
<source>MEN_COLORS</source>
- <translation>Paramètres d'affichage</translation>
+ <translation>Parametres d affichage</translation>
</message>
<message>
<source>MEN_COMPUTE</source>
</message>
<message>
<source>MEN_PRECOMPUTE</source>
- <translation>Prévisualiser</translation>
+ <translation>Previsualiser</translation>
</message>
<message>
<source>MEN_EVALUATE</source>
</message>
<message>
<source>MEN_CONNECTION</source>
- <translation>Frontières sur connexions multiples</translation>
+ <translation>Frontieres sur connexions multiples</translation>
</message>
<message>
<source>MEN_CONNECTION_2D</source>
- <translation>Frontières sur connexions multiples 2D</translation>
+ <translation>Frontieres sur connexions multiples 2D</translation>
</message>
<message>
<source>MEN_CONSTRUCT_GROUP</source>
</message>
<message>
<source>MEN_2D_FROM_3D</source>
- <translation>Créer les éléments de frontière</translation>
+ <translation>Creer les elements de frontiere</translation>
</message>
<message>
<source>MEN_MESH_ORDER</source>
- <translation>Changer la priorité des sous-maillages</translation>
+ <translation>Changer la priorite des sous-maillages</translation>
</message>
<message>
<source>MEN_CREATE_GROUP</source>
- <translation>Créer un groupe</translation>
+ <translation>Creer un groupe</translation>
</message>
<message>
<source>MEN_CREATE_GEO_GROUP</source>
- <translation>Créer des groupes à partir de la géométrie</translation>
+ <translation>Creer des groupes a partir de la geometrie</translation>
</message>
<message>
<source>MEN_CREATE_MESH</source>
- <translation>Créer un maillage</translation>
+ <translation>Creer un maillage</translation>
</message>
<message>
<source>MEN_CREATE_SUBMESH</source>
- <translation>Créer un sous-maillage</translation>
+ <translation>Creer un sous-maillage</translation>
</message>
<message>
<source>MEN_CTRL</source>
- <translation>Contrôles</translation>
+ <translation>Controles</translation>
</message>
<message>
<source>MEN_NODE_CTRL</source>
- <translation>Contrôles des nœuds</translation>
+ <translation>Controles des noeuds</translation>
</message>
<message>
<source>MEN_EDGE_CTRL</source>
- <translation>Contrôles des arêtes</translation>
+ <translation>Controles des aretes</translation>
</message>
<message>
<source>MEN_FACE_CTRL</source>
- <translation>Contrôles des faces</translation>
+ <translation>Controles des faces</translation>
</message>
<message>
<source>MEN_VOLUME_CTRL</source>
- <translation>Contrôles des volumes</translation>
+ <translation>Controles des volumes</translation>
</message>
<message>
<source>MEN_CUT</source>
- <translation>Découpe des quadrangles</translation>
+ <translation>Decoupe des quadrangles</translation>
</message>
<message>
<source>MEN_CUT_GROUP</source>
- <translation>Découpe des groupes</translation>
+ <translation>Decoupe des groupes</translation>
</message>
<message>
<source>MEN_IMPORT_DAT</source>
</message>
<message>
<source>STB_ADD_TO_GROUP</source>
- <translation>Ajoute dans le groupe les éléments sélectionnés</translation>
+ <translation>Ajoute dans le groupe les elements selectionnes</translation>
</message>
<message>
<source>STB_REMOVE_FROM_GROUP</source>
- <translation>Supprime du groupe les éléments sélectionnés</translation>
+ <translation>Supprime du groupe les elements selectionnes</translation>
</message>
<message>
<source>MEN_FACE_ORIENTATION</source>
</message>
<message>
<source>MEN_DISABLE_AUTO_COLOR</source>
- <translation>Désactiver la couleur automatique</translation>
+ <translation>Desactiver la couleur automatique</translation>
</message>
<message>
<source>MEN_DISPLAY_ONLY</source>
</message>
<message>
<source>MEN_DISP_ENT</source>
- <translation>Montrer l'entité</translation>
+ <translation>Montrer l entite</translation>
</message>
<message>
<source>MEN_ELEM0D</source>
- <translation>Elément 0D</translation>
+ <translation>Element 0D</translation>
</message>
<message>
<source>MEN_ELEMS0D</source>
- <translation>Eléments 0D </translation>
+ <translation>Elements 0D </translation>
</message>
<message>
<source>MEN_0D_ON_ALL_NODES</source>
- <translation>Eléments 0D sur des noeuds</translation>
+ <translation>Elements 0D sur des noeuds</translation>
</message>
<message>
<source>MEN_BALL</source>
</message>
<message>
<source>MEN_EDGE</source>
- <translation>Arête</translation>
+ <translation>Arete</translation>
</message>
<message>
<source>MEN_EDGES</source>
- <translation>Arêtes</translation>
+ <translation>Aretes</translation>
</message>
<message>
<source>MEN_CHOOSE</source>
</message>
<message>
<source>MEN_EDIT_GEOMGROUP_AS_GROUP</source>
- <translation>Editer un groupe en tant qu'autonome</translation>
+ <translation>Editer un groupe en tant qu autonome</translation>
</message>
<message>
<source>MEN_EDIT_HYPO</source>
- <translation>Editer une hypothèse</translation>
+ <translation>Editer une hypothese</translation>
</message>
<message>
<source>MEN_EDIT_MESHSUBMESH</source>
</message>
<message>
<source>MEN_FIND_ELEM</source>
- <translation>Trouver un élément par un point</translation>
+ <translation>Trouver un element par un point</translation>
</message>
<message>
<source>TOP_REORIENT_2D</source>
- <translation>Réorienter des faces selon un vecteur</translation>
+ <translation>Reorienter des faces selon un vecteur</translation>
</message>
<message>
<source>MEN_REORIENT_2D</source>
- <translation>Réorienter des faces selon un vecteur</translation>
+ <translation>Reorienter des faces selon un vecteur</translation>
</message>
<message>
<source>STB_REORIENT_2D</source>
- <translation>Réorienter des faces selon un vecteur</translation>
+ <translation>Reorienter des faces selon un vecteur</translation>
</message>
<message>
<source>TOP_FIND_ELEM</source>
- <translation>Trouver un élément par un point</translation>
+ <translation>Trouver un element par un point</translation>
</message>
<message>
<source>STB_FIND_ELEM</source>
- <translation>Trouver un élément par un point</translation>
+ <translation>Trouver un element par un point</translation>
</message>
<message>
<source>EQUAL_NODE</source>
- <translation>Nœuds en double</translation>
+ <translation>Noeuds en double</translation>
</message>
<message>
<source>MEN_EQUAL_NODE</source>
- <translation>Nœuds en double</translation>
+ <translation>Noeuds en double</translation>
</message>
<message>
<source>STB_EQUAL_NODE</source>
- <translation>Nœuds en double</translation>
+ <translation>Noeuds en double</translation>
</message>
<message>
<source>TOP_EQUAL_NODE</source>
- <translation>Nœuds en double</translation>
+ <translation>Noeuds en double</translation>
</message>
<message>
<source>EQUAL_EDGE</source>
- <translation>Arêtes en double</translation>
+ <translation>Aretes en double</translation>
</message>
<message>
<source>MEN_EQUAL_EDGE</source>
- <translation>Arêtes en double</translation>
+ <translation>Aretes en double</translation>
</message>
<message>
<source>STB_EQUAL_EDGE</source>
- <translation>Arêtes en double</translation>
+ <translation>Aretes en double</translation>
</message>
<message>
<source>TOP_EQUAL_EDGE</source>
- <translation>Arêtes en double</translation>
+ <translation>Aretes en double</translation>
</message>
<message>
<source>EQUAL_FACE</source>
</message>
<message>
<source>MEN_BARE_BORDER_VOLUME</source>
- <translation>Volumes avec éléments de peau 2D manquants</translation>
+ <translation>Volumes avec elements de peau 2D manquants</translation>
</message>
<message>
<source>MEN_BARE_BORDER_FACE</source>
- <translation>Faces avec éléments de peau 1D manquants</translation>
+ <translation>Faces avec elements de peau 1D manquants</translation>
</message>
<message>
<source>MEN_OVER_CONSTRAINED_VOLUME</source>
</message>
<message>
<source>MEN_FREE_BORDER</source>
- <translation>Frontières libres</translation>
+ <translation>Frontieres libres</translation>
</message>
<message>
<source>MEN_FREE_EDGE</source>
- <translation>Arêtes libres</translation>
+ <translation>Aretes libres</translation>
</message>
<message>
<source>MEN_FREE_NODE</source>
- <translation>Nœuds libres</translation>
+ <translation>Noeuds libres</translation>
</message>
<message>
<source>MEN_NODE_CONNECTIVITY_NB</source>
- <translation>Nombre de connectivité par nœud</translation>
+ <translation>Nombre de connectivite par noeud</translation>
</message>
<message>
<source>MEN_FREE_FACES</source>
</message>
<message>
<source>MEN_GLOBAL_HYPO</source>
- <translation>Hypothèse globale</translation>
+ <translation>Hypothese globale</translation>
</message>
<message>
<source>MEN_HEXA</source>
- <translation>Hexaèdre</translation>
+ <translation>Hexaedre</translation>
</message>
<message>
<source>MEN_HIDE</source>
</message>
<message>
<source>MEN_HYPO</source>
- <translation>Hypothèses</translation>
+ <translation>Hypotheses</translation>
</message>
<message>
<source>MEN_IMPORT</source>
</message>
<message>
<source>MEN_MAX_ELEMENT_LENGTH_2D</source>
- <translation>Diamètre des éléments 2D</translation>
+ <translation>Diametre des elements 2D</translation>
</message>
<message>
<source>MEN_MAX_ELEMENT_LENGTH_3D</source>
- <translation>Diamètre des éléments 3D</translation>
+ <translation>Diametre des elements 3D</translation>
</message>
<message>
<source>MEN_IMPORT_MED</source>
</message>
<message>
<source>MEN_MERGE</source>
- <translation>Fusionner les nœuds</translation>
+ <translation>Fusionner les noeuds</translation>
</message>
<message>
<source>MEN_MERGE_ELEMENTS</source>
- <translation>Fusionner les éléments</translation>
+ <translation>Fusionner les elements</translation>
</message>
<message>
<source>MEN_MESH</source>
</message>
<message>
<source>MEN_MESH_THROU_POINT</source>
- <translation>Déplacer un nœud</translation>
+ <translation>Deplacer un noeud</translation>
</message>
<message>
<source>MEN_MIN_ANG</source>
</message>
<message>
<source>MEN_MEASURE_BND_BOX</source>
- <translation>Boîte englobante</translation>
+ <translation>Boite englobante</translation>
</message>
<message>
<source>STB_MEASURE_BND_BOX</source>
- <translation>Calcule la boîte englobante pour le(s) objet(s) sélectionné(s)</translation>
+ <translation>Calcule la boite englobante pour le(s) objet(s) selectionne(s)</translation>
</message>
<message>
<source>TOP_MEASURE_BND_BOX</source>
- <translation>Boîte englobante</translation>
+ <translation>Boite englobante</translation>
</message>
<message>
<source>MEN_BASIC_PROPERTIES</source>
- <translation>Propriétés basiques</translation>
+ <translation>Proprietes basiques</translation>
</message>
<message>
<source>MEN_MEASURE_LENGTH</source>
</message>
<message>
<source>STB_MEASURE_LENGTH</source>
- <translation>Calcul de la somme des longueurs de tous les éléments 1D des objets sélectionnés</translation>
+ <translation>Calcul de la somme des longueurs de tous les elements 1D des objets selectionnes</translation>
</message>
<message>
<source>TOP_MEASURE_LENGTH</source>
</message>
<message>
<source>STB_MEASURE_AREA</source>
- <translation>Calcul de la somme des surfaces de tous les éléments 2D des objets sélectionnés</translation>
+ <translation>Calcul de la somme des surfaces de tous les elements 2D des objets selectionnes</translation>
</message>
<message>
<source>TOP_MEASURE_AREA</source>
</message>
<message>
<source>STB_MEASURE_VOLUME</source>
- <translation>Calcul de la somme des volumes de tous les éléments 3D des objets sélectionnés</translation>
+ <translation>Calcul de la somme des volumes de tous les elements 3D des objets selectionnes</translation>
</message>
<message>
<source>TOP_MEASURE_VOLUME</source>
</message>
<message>
<source>MEN_MOVE</source>
- <translation>Déplacer un nœud</translation>
+ <translation>Deplacer un noeud</translation>
</message>
<message>
<source>MEN_NODE</source>
- <translation>Nœud</translation>
+ <translation>Noeud</translation>
</message>
<message>
<source>MEN_NODES</source>
- <translation>Nœuds</translation>
+ <translation>Noeuds</translation>
</message>
<message>
<source>MEN_NUM</source>
- <translation>Numérotation</translation>
+ <translation>Numerotation</translation>
</message>
<message>
<source>MEN_NUM_ELEMENTS</source>
- <translation>Montrer les n° des éléments</translation>
+ <translation>Montrer les numeros des elements</translation>
</message>
<message>
<source>MEN_NUM_NODES</source>
- <translation>Montrer les n° des nœuds</translation>
+ <translation>Montrer les numeros des noeuds</translation>
</message>
<message>
<source>MEN_ORIENT</source>
</message>
<message>
<source>MEN_POLYHEDRON</source>
- <translation>Polyèdre</translation>
+ <translation>Polyedre</translation>
</message>
<message>
<source>MEN_PRECISION</source>
- <translation>Précision</translation>
+ <translation>Precision</translation>
</message>
<message>
<source>MEN_PREF</source>
- <translation>Préférences</translation>
+ <translation>Preferences</translation>
</message>
<message>
<source>MEN_QUAD</source>
</message>
<message>
<source>MEN_QUADRATIC_EDGE</source>
- <translation>Arête quadratique</translation>
+ <translation>Arete quadratique</translation>
</message>
<message>
<source>MEN_QUADRATIC_HEXAHEDRON</source>
- <translation>Hexaèdre quadratique</translation>
+ <translation>Hexaedre quadratique</translation>
</message>
<message>
<source>MEN_QUADRATIC_PENTAHEDRON</source>
- <translation>Pentaèdre quadratique</translation>
+ <translation>Pentaedre quadratique</translation>
</message>
<message>
<source>MEN_BIQUADRATIC_PENTAHEDRON</source>
- <translation>Pentaèdre biquadratique</translation>
+ <translation>Pentaedre biquadratique</translation>
</message>
<message>
<source>MEN_QUADRATIC_PYRAMID</source>
</message>
<message>
<source>MEN_QUADRATIC_TETRAHEDRON</source>
- <translation>Tétraèdre quadratique</translation>
+ <translation>Tetraedre quadratique</translation>
</message>
<message>
<source>MEN_QUADRATIC_TRIANGLE</source>
</message>
<message>
<source>MEN_QUALITY</source>
- <translation>Contrôles de qualité</translation>
+ <translation>Controles de qualite</translation>
</message>
<message>
<source>MEN_REMOVE</source>
</message>
<message>
<source>MEN_REMOVE_ELEMENTS</source>
- <translation>Eléments</translation>
+ <translation>Elements</translation>
</message>
<message>
<source>MEN_REMOVE_NODES</source>
- <translation>Nœuds</translation>
+ <translation>Noeuds</translation>
</message>
<message>
<source>MEN_REMOVE_ORPHAN_NODES</source>
- <translation>Nœuds orphelins</translation>
+ <translation>Noeuds orphelins</translation>
</message>
<message>
<source>MEN_RENAME</source>
</message>
<message>
<source>MEN_RENUM</source>
- <translation>Renuméroter</translation>
+ <translation>Renumeroter</translation>
</message>
<message>
<source>MEN_RENUM_ELEMENTS</source>
- <translation>Eléments</translation>
+ <translation>Elements</translation>
</message>
<message>
<source>MEN_RENUM_NODES</source>
- <translation>Nœuds</translation>
+ <translation>Noeuds</translation>
</message>
<message>
<source>MEN_RESET</source>
</message>
<message>
<source>MEN_OVERALL_MESH_QUALITY</source>
- <translation>Qualité du maillage global</translation>
+ <translation>Qualite du maillage global</translation>
</message>
<message>
<source>MEN_DISTRIBUTION_CTRL</source>
</message>
<message>
<source>MEN_REVOLUTION</source>
- <translation>Révolution</translation>
+ <translation>Revolution</translation>
</message>
<message>
<source>MEN_ROT</source>
</message>
<message>
<source>MEN_SCALAR_BAR_PROP</source>
- <translation>Propriétés de la barre scalaire</translation>
+ <translation>Proprietes de la barre scalaire</translation>
</message>
<message>
<source>MEN_SELECTION</source>
- <translation>Sélection</translation>
+ <translation>Selection</translation>
</message>
<message>
<source>MEN_SEL_FILTER_LIB</source>
- <translation>Librairie des filtres de sélection</translation>
+ <translation>Librairie des filtres de selection</translation>
</message>
<message>
<source>MEN_SEW</source>
</message>
<message>
<source>MEN_SHOW_SCALAR_BAR</source>
- <translation>Afficher la barre d'échelle</translation>
+ <translation>Afficher la barre d'echelle</translation>
</message>
<message>
<source>MEN_QUADRATIC_REPRESENT</source>
</message>
<message>
<source>MEN_SKEW</source>
- <translation>Inclinaison d'angle</translation>
+ <translation>Inclinaison d angle</translation>
</message>
<message>
<source>MEN_SMOOTH</source>
</message>
<message>
<source>MEN_SYM</source>
- <translation>Symétrie</translation>
+ <translation>Symetrie</translation>
</message>
<message>
<source>MEN_TAPER</source>
- <translation>Cône</translation>
+ <translation>Cone</translation>
</message>
<message>
<source>MEN_TETRA</source>
- <translation>Tétraèdre</translation>
+ <translation>Tetraedre</translation>
</message>
<message>
<source>MEN_TOOLS</source>
</message>
<message>
<source>MEN_SCALE</source>
- <translation>Changement d'échelle</translation>
+ <translation>Changement d'echelle</translation>
</message>
<message>
<source>MEN_OFFSET</source>
</message>
<message>
<source>MEN_DUPLICATE_NODES</source>
- <translation>Dupliquer les nœuds</translation>
+ <translation>Dupliquer les noeuds</translation>
</message>
<message>
<source>MEN_TRANSF</source>
</message>
<message>
<source>MEN_UNASSIGN</source>
- <translation>Désassocier</translation>
+ <translation>Desassocier</translation>
</message>
<message>
<source>MEN_UNION</source>
</message>
<message>
<source>MEN_UNDERLYING_ELEMS</source>
- <translation>Groupe des entités sous-jacentes</translation>
+ <translation>Groupe des entites sous-jacentes</translation>
</message>
<message>
<source>MEN_UPDATE</source>
- <translation>Mettre à jour</translation>
+ <translation>Mettre a jour</translation>
</message>
<message>
<source>MEN_VIEW</source>
</message>
<message>
<source>MEN_WARP</source>
- <translation>Angle de déformation</translation>
+ <translation>Angle de deformation</translation>
</message>
<message>
<source>MEN_WHAT_IS</source>
- <translation>Information sur un élément de maillage</translation>
+ <translation>Information sur un element de maillage</translation>
</message>
<message>
<source>MEN_WIRE</source>
</message>
<message>
<source>MEN_SPLIT_TO_TETRA</source>
- <translation>Explosion en tétraèdres</translation>
+ <translation>Explosion en tetraedres</translation>
</message>
<message>
<source>TOP_SPLIT_TO_TETRA</source>
- <translation>Eclater en tétraèdres</translation>
+ <translation>Eclater en tetraedres</translation>
</message>
<message>
<source>STB_OVERALL_MESH_QUALITY</source>
- <translation>Qualité du maillage global</translation>
+ <translation>Qualite du maillage global</translation>
</message>
<message>
<source>STB_SPLIT_TO_TETRA</source>
- <translation>Eclater en tétraèdres</translation>
+ <translation>Eclater en tetraedres</translation>
</message>
<message>
<source>MEN_SPLIT_BIQUAD</source>
- <translation>Eclater les éléments bi-quadratiques en éléments linéaires</translation>
+ <translation>Eclater les elements bi-quadratiques en elements lineaires</translation>
</message>
<message>
<source>TOP_SPLIT_BIQUAD</source>
- <translation>Eclater les éléments bi-quadratiques en éléments linéaires</translation>
+ <translation>Eclater les elements bi-quadratiques en elements lineaires</translation>
</message>
<message>
<source>STB_SPLIT_BIQUAD</source>
- <translation>Eclater les éléments bi-quadratiques en éléments linéaire</translation>
+ <translation>Eclater les elements bi-quadratiques en elements lineaire</translation>
</message>
<message>
<source>MESHERS_FILE_CANT_OPEN</source>
- <translation>Impossible d'ouvrir le fichier de ressource</translation>
+ <translation>Impossible d ouvrir le fichier de ressource</translation>
</message>
<message>
<source>MESHERS_FILE_CHECK_VARIABLE</source>
- <translation>Vérifier la variable d'environnement SMESH_MeshersList</translation>
+ <translation>Verifier la variable d environnement SMESH_MeshersList</translation>
</message>
<message>
<source>MESHERS_FILE_NO_VARIABLE</source>
- <translation>La variable d'environnement SMESH_MeshersList n'est pas définie</translation>
+ <translation>La variable d environnement SMESH_MeshersList n est pas definie</translation>
</message>
<message>
<source>MESH_IS_NOT_SELECTED</source>
- <translation>Il n'y a pas de maillage sélectionné.
+ <translation>Il n y a pas de maillage selectionne.
Choisissez un maillage et essayez de nouveau</translation>
</message>
<message>
<source>MESH_NODE</source>
- <translation>Nœud</translation>
+ <translation>Noeud</translation>
</message>
<message>
<source>MESH_NODE_TITLE</source>
- <translation>Ajouter un nœud</translation>
+ <translation>Ajouter un noeud</translation>
</message>
<message>
<source>MINIMUMANGLE_ELEMENTS</source>
</message>
<message>
<source>MULTI2D_BORDERS</source>
- <translation>Frontières sur multi-connexions 2D</translation>
+ <translation>Frontieres sur multi-connexions 2D</translation>
</message>
<message>
<source>MULTI_BORDERS</source>
- <translation>Frontières sur multi-connexions</translation>
+ <translation>Frontieres sur multi-connexions</translation>
</message>
<message>
<source>GROUP_NAME_IS_EMPTY</source>
- <translation>Le nom du groupe n'est pas indiqué.
-Indiquez le nom d'un nouveau groupe à créer ou choisissez un groupe existant.</translation>
+ <translation>Le nom du groupe n est pas indique.
+Indiquez le nom d un nouveau groupe a creer ou choisissez un groupe existant.</translation>
</message>
<message>
<source>MESH_GEOM_GRP_CHOSEN</source>
- <translation>Un groupe lié à la géométrie est choisi: %1.
+ <translation>Un groupe lie a la geometrie est choisi: %1.
Voulez-vous le convertir en un groupe autonome ?</translation>
</message>
<message>
<source>MESH_FILTER_GRP_CHOSEN</source>
- <translation>Un groupe lié à un filtre est choisi: %1.
+ <translation>Un groupe lie a un filtre est choisi: %1.
Voulez-vous le convertir en un groupe autonome ?</translation>
</message>
<message>
<source>NODE_ID</source>
- <translation>ID du nœud</translation>
+ <translation>ID du noeud</translation>
</message>
<message>
<source>NODE_IDS</source>
- <translation>IDs du nœud</translation>
+ <translation>IDs du noeud</translation>
</message>
<message>
<source>NON_SMESH_OBJECTS_SELECTED</source>
- <translation>Certains objets sélectionnés n'appartiennent pas au composant %1.</translation>
+ <translation>Certains objets selectionnes n appartiennent pas au composant %1.</translation>
</message>
<message>
<source>PREVIEW</source>
- <translation>Prévisualiser</translation>
+ <translation>Previsualiser</translation>
</message>
<message>
<source>SKEW_ELEMENTS</source>
- <translation>Inclinaison d'angle</translation>
+ <translation>Inclinaison d angle</translation>
</message>
<message>
<source>SMESHGUI_INVALID_PARAMETERS</source>
- <translation>Les paramètres spécifiés ne sont pas corrects.
+ <translation>Les parametres specifies ne sont pas corrects.
Merci de les corriger, puis essayez de nouveau</translation>
</message>
<message>
</message>
<message>
<source>SMESH_ADD_ELEM0D</source>
- <translation>Ajouter un élément 0D</translation>
+ <translation>Ajouter un element 0D</translation>
</message>
<message>
<source>SMESH_ADD_ELEM0D_TITLE</source>
- <translation>Ajouter un élément 0D</translation>
+ <translation>Ajouter un element 0D</translation>
</message>
<message>
<source>SMESH_DUPLICATE_0D</source>
- <translation>Autorise la duplication d'éléments</translation>
+ <translation>Autorise la duplication d'elements</translation>
</message>
<message>
<source>SMESH_ADD_BALL</source>
- <translation>Ajouter un élément particulaire</translation>
+ <translation>Ajouter un element particulaire</translation>
</message>
<message>
<source>SMESH_ADD_BALL_TITLE</source>
- <translation>Ajouter un élément particulaire</translation>
+ <translation>Ajouter un element particulaire</translation>
</message>
<message>
<source>SMESH_ADD_EDGE</source>
- <translation>Ajouter une arête</translation>
+ <translation>Ajouter une arete</translation>
</message>
<message>
<source>SMESH_ADD_EDGE_TITLE</source>
- <translation>Ajouter une arête</translation>
+ <translation>Ajouter une arete</translation>
</message>
<message>
<source>SMESH_ADD_HEXAS</source>
- <translation>Ajouter un hexaèdre</translation>
+ <translation>Ajouter un hexaedre</translation>
</message>
<message>
<source>SMESH_ADD_HEXAS_TITLE</source>
- <translation>Ajouter un hexaèdre</translation>
+ <translation>Ajouter un hexaedre</translation>
</message>
<message>
<source>SMESH_ADD_HYPOTHESIS</source>
- <translation>Hypothèse</translation>
+ <translation>Hypothese</translation>
</message>
<message>
<source>SMESH_ADD_HYPOTHESIS_TITLE</source>
- <translation>Attribution d'une hypothèse</translation>
+ <translation>Attribution d une hypothese</translation>
</message>
<message>
<source>SMESH_ADD_HYP_WRN</source>
- <translation>"%1" est attribué, mais:
+ <translation>"%1" est attribue, mais:
</translation>
</message>
<message>
</message>
<message>
<source>SMESH_ADD_PENTA</source>
- <translation>Ajouter un pentaèdre</translation>
+ <translation>Ajouter un pentaedre</translation>
</message>
<message>
<source>SMESH_ADD_PENTA_TITLE</source>
- <translation>Ajouter un pentaèdre</translation>
+ <translation>Ajouter un pentaedre</translation>
</message>
<message>
<source>SMESH_ADD_PYRAMID</source>
</message>
<message>
<source>SMESH_ADD_QUADRATIC_EDGE_TITLE</source>
- <translation>Ajouter une arête quadratique</translation>
+ <translation>Ajouter une arete quadratique</translation>
</message>
<message>
<source>SMESH_ADD_QUADRATIC_HEXAHEDRON_TITLE</source>
- <translation>Ajouter un hexaèdre quadratique</translation>
+ <translation>Ajouter un hexaedre quadratique</translation>
</message>
<message>
<source>SMESH_ADD_TRIQUADRATIC_HEXAHEDRON_TITLE</source>
- <translation>Ajouter un hexaèdre triquadratique</translation>
+ <translation>Ajouter un hexaedre triquadratique</translation>
</message>
<message>
<source>SMESH_ADD_QUADRATIC_PENTAHEDRON_TITLE</source>
- <translation>Ajouter un pentaèdre quadratique</translation>
+ <translation>Ajouter un pentaedre quadratique</translation>
</message>
<message>
<source>SMESH_ADD_BIQUADRATIC_PENTAHEDRON_TITLE</source>
- <translation>Ajouter un pentaèdre biquadratique</translation>
+ <translation>Ajouter un pentaedre biquadratique</translation>
</message>
<message>
<source>SMESH_ADD_QUADRATIC_PYRAMID_TITLE</source>
</message>
<message>
<source>SMESH_ADD_QUADRATIC_TETRAHEDRON_TITLE</source>
- <translation>Ajouter un tétraèdre quadratique</translation>
+ <translation>Ajouter un tetraedre quadratique</translation>
</message>
<message>
<source>SMESH_ADD_QUADRATIC_TRIANGLE_TITLE</source>
</message>
<message>
<source>SMESH_ADD_SUBMESH</source>
- <translation>Construction d'un sous-maillage</translation>
+ <translation>Construction d un sous-maillage</translation>
</message>
<message>
<source>SMESH_ADD_TETRAS</source>
- <translation>Ajouter un tétraèdre</translation>
+ <translation>Ajouter un tetraedre</translation>
</message>
<message>
<source>SMESH_ADD_TETRAS_TITLE</source>
- <translation>Ajouter un tétraèdre</translation>
+ <translation>Ajouter un tetraedre</translation>
</message>
<message>
<source>SMESH_ADD_TO_GROUP</source>
- <translation>Ajouter à un groupe</translation>
+ <translation>Ajouter a un groupe</translation>
</message>
<message>
<source>SMESH_ADD_TRIANGLE</source>
</message>
<message>
<source>SMESH_AUTO_GROUPS</source>
- <translation>Créer les groupes automatiquement</translation>
+ <translation>Creer les groupes automatiquement</translation>
</message>
<message>
<source>SMESH_AUTO_DIM</source>
- <translation>Définition automatique des dimensions spatiales</translation>
+ <translation>Definition automatique des dimensions spatiales</translation>
</message>
<message>
<source>SMESH_REQUIRED_GROUPS</source>
- <translation>Créer les groupes des types nécessaires</translation>
+ <translation>Creer les groupes des types necessaires</translation>
</message>
<message>
<source>SMESH_AVAILABLE</source>
</message>
<message>
<source>SMESH_AVAILABLE_HYPOTHESES</source>
- <translation>Hypothèses disponibles</translation>
+ <translation>Hypotheses disponibles</translation>
</message>
<message>
<source>SMESH_AXIS</source>
</message>
<message>
<source>SMESH_BAD_SELECTION</source>
- <translation>Pas de sélection valide</translation>
+ <translation>Pas de selection valide</translation>
</message>
<message>
<source>SMESH_BAD_MESH_SELECTION</source>
- <translation>La sélection du maillage n'est pas valide</translation>
+ <translation>La selection du maillage n est pas valide</translation>
</message>
<message>
<source>SMESH_BOUNDARYEDGES</source>
- <translation>Arêtes frontières</translation>
+ <translation>Aretes frontieres</translation>
</message>
<message>
<source>SMESH_BUILD_COMPOUND_TITLE</source>
- <translation>Créer un assemblage</translation>
+ <translation>Creer un assemblage</translation>
</message>
<message>
<source>SMESH_COPY_MESH_TITLE</source>
</message>
<message>
<source>SMESH_KEEP_IDS</source>
- <translation>Conserver les IDs des éléments</translation>
+ <translation>Conserver les IDs des elements</translation>
</message>
<message>
<source>SMESH_BUT_ADD</source>
</message>
<message>
<source>SMESH_BUT_CREATE</source>
- <translation>&Créer</translation>
+ <translation>&Creer</translation>
</message>
<message>
<source>SMESH_BUT_DELETE</source>
</message>
<message>
<source>SMESH_BUT_FILTER</source>
- <translation>Définir les fil&tres</translation>
+ <translation>Definir les fil&tres</translation>
</message>
<message>
<source>SMESH_BUT_HELP</source>
</message>
<message>
<source>SMESH_BUT_OVERWRITE</source>
- <translation>Réécr&ire</translation>
+ <translation>Reecr&ire</translation>
</message>
<message>
<source>SMESH_BUT_APPLY_AND_CLOSE</source>
</message>
<message>
<source>SMESH_CANT_ADD_HYP</source>
- <translation>Impossible d'attribuer "%1":
+ <translation>Impossible d attribuer "%1":
</translation>
</message>
<message>
<source>SMESH_CANT_RM_HYP</source>
- <translation>Impossible de désassigner "%1":
+ <translation>Impossible de desassigner "%1":
</translation>
</message>
<message>
</message>
<message>
<source>SMESH_COMPUTE_SUCCEED</source>
- <translation>Le calcul du maillage a réussi</translation>
+ <translation>Le calcul du maillage a reussi</translation>
</message>
<message>
<source>SMESH_EVALUATE_SUCCEED</source>
- <translation>L'évaluation du maillage a réussi</translation>
+ <translation>L evaluation du maillage a reussi</translation>
</message>
<message>
<source>SMESH_CONTENT</source>
</message>
<message>
<source>SMESH_CONTINUE_MESH_VISUALIZATION</source>
- <translation>La système semble manquer de mémoire pour visualiser le maillage,
-ce qui peut faire planter l'application. Voulez-vous continuer la visualisation ?</translation>
+ <translation>La systeme semble manquer de memoire pour visualiser le maillage,
+ce qui peut faire planter l application. Voulez-vous continuer la visualisation ?</translation>
</message>
<message>
<source>SMESH_COORDINATES</source>
- <translation>Coordonnées</translation>
+ <translation>Coordonnees</translation>
</message>
<message>
<source>SMESH_COPY_ELEMENTS</source>
- <translation>Copier les éléments</translation>
+ <translation>Copier les elements</translation>
</message>
<message>
<source>SMESH_COPY_GROUPS</source>
</message>
<message>
<source>SMESH_CREATE_ALGORITHMS</source>
- <translation>Créer les algorithmes</translation>
+ <translation>Creer les algorithmes</translation>
</message>
<message>
<source>SMESH_CREATE_COPY</source>
- <translation>Créer une copie</translation>
+ <translation>Creer une copie</translation>
</message>
<message>
<source>SMESH_CREATE_GROUP_TITLE</source>
- <translation>Créer un groupe</translation>
+ <translation>Creer un groupe</translation>
</message>
<message>
<source>SMESH_CREATE_GEO_GROUP</source>
- <translation>Créer des groupes liés à la géométrie</translation>
+ <translation>Creer des groupes lies a la geometrie</translation>
</message>
<message>
<source>SMESH_CREATE_HYPOTHESES</source>
- <translation>Créer une hypothèse</translation>
+ <translation>Creer une hypothese</translation>
</message>
<message>
<source>SMESH_CREATE_MESH</source>
- <translation>Créer un nouveau maillage</translation>
+ <translation>Creer un nouveau maillage</translation>
</message>
<message>
<source>SMESH_CREATE_POLYHEDRAL_VOLUME_TITLE</source>
- <translation>Créer un volume polyèdrique</translation>
+ <translation>Creer un volume polyedrique</translation>
</message>
<message>
<source>SMESH_DIAGONAL</source>
</message>
<message>
<source>SMESH_DRS_2</source>
- <translation>Le fichier MED contient des rangées de nombre d'éléments superposées, donc les nombres de ce fichier ne sont pas pris en compte</translation>
+ <translation>Le fichier MED contient des rangees de nombre d elements superposees, donc les nombres de ce fichier ne sont pas pris en compte</translation>
</message>
<message>
<source>SMESH_DRS_3</source>
- <translation>Quelques éléments ont été omis à cause du fichier de données incorrect</translation>
+ <translation>Quelques elements ont ete omis a cause du fichier de donnees incorrect</translation>
</message>
<message>
<source>SMESH_DRS_4</source>
- <translation>Le fichier MED contient des éléments en connectivité descendante. Ils n'ont pas été lu.</translation>
+ <translation>Le fichier MED contient des elements en connectivite descendante. Ils n ont pas ete lu.</translation>
</message>
<message>
<source>SMESH_DRS_5</source>
- <translation>Le fichier n'est pas correct, des données sont manquantes</translation>
+ <translation>Le fichier n est pas correct, des donnees sont manquantes</translation>
</message>
<message>
<source>SMESH_DRS_EMPTY</source>
- <translation>Le fichier est vide, il n'y a rien à publier</translation>
+ <translation>Le fichier est vide, il n y a rien a publier</translation>
</message>
<message>
<source>SMESH_DX</source>
</message>
<message>
<source>SMESH_ELEM0D</source>
- <translation>Elément 0D</translation>
+ <translation>Element 0D</translation>
</message>
<message>
<source>SMESH_ELEMS0D</source>
- <translation>Eléments 0D</translation>
+ <translation>Elements 0D</translation>
</message>
<message>
<source>SMESH_BALL_ELEM</source>
</message>
<message>
<source>SMESH_EDGE</source>
- <translation>Arête</translation>
+ <translation>Arete</translation>
</message>
<message>
<source>SMESH_EDGES</source>
- <translation>Arêtes</translation>
+ <translation>Aretes</translation>
</message>
<message>
<source>SMESH_EDGES_CONNECTIVITY_TITLE</source>
- <translation>Connectivité des arêtes</translation>
+ <translation>Connectivite des aretes</translation>
</message>
<message>
<source>SMESH_EDIT_GROUP_TITLE</source>
</message>
<message>
<source>SMESH_EDIT_GEOMGROUP_AS_GROUP_TITLE</source>
- <translation>Editer un groupe en tant qu'autonome</translation>
+ <translation>Editer un groupe en tant qu autonome</translation>
</message>
<message>
<source>SMESH_EDIT_HYPOTHESES</source>
- <translation>Attribuer les hypothèses</translation>
+ <translation>Attribuer les hypotheses</translation>
</message>
<message>
<source>SMESH_EDIT_USED</source>
- <translation>Utilisé</translation>
+ <translation>Utilise</translation>
</message>
<message>
<source>SMESH_ELEMENTS</source>
- <translation>Eléments</translation>
+ <translation>Elements</translation>
</message>
<message>
<source>SMESH_ELEMENTS_COLOR</source>
- <translation>Couleur des éléments du maillage</translation>
+ <translation>Couleur des elements du maillage</translation>
</message>
<message>
<source>SMESH_ELEMENTS_TYPE</source>
- <translation>Type des éléments</translation>
+ <translation>Type des elements</translation>
</message>
<message>
<source>SMESH_ELEMENT_TYPE</source>
- <translation>Type de l'élément</translation>
+ <translation>Type de l element</translation>
</message>
<message>
<source>SMESH_ERROR</source>
</message>
<message>
<source>SMESH_ERR_SCALARBAR_PARAMS</source>
- <translation>Avertissement! Les paramètres ne sont pas corrects</translation>
+ <translation>Avertissement! Les parametres ne sont pas corrects</translation>
</message>
<message>
<source>SMESH_EXPORT_FAILED</source>
- <translation>Impossible d'exporter le maillage.
-Vérifiez l'espace disponible sur le disque.</translation>
+ <translation>Impossible d exporter le maillage.
+Verifiez l espace disponible sur le disque.</translation>
</message>
<message>
<source>SMESH_EXPORT_MED_DUPLICATED_GRP</source>
- <translation>Il y a des noms de groupes dupliqués dans le maillage "%1".
-Vous pouvez annuler l'exportation et les renommer,
-si non des noms de groupes au fichier MED résultant
-ne correspondront pas aux noms de l'étude.
+ <translation>Il y a des noms de groupes dupliques dans le maillage "%1".
+Vous pouvez annuler l exportation et les renommer,
+si non des noms de groupes au fichier MED resultant
+ne correspondront pas aux noms de l etude.
Voulez-vous continuer ?</translation>
</message>
<message>
<source>SMESH_EXPORT_MED_DUPLICATED_MESH_NAMES</source>
- <translation>Il y a des maillages avec les mêmes noms dans la sélection.
-Il est possible que le fichier résultant soit incorrect.
+ <translation>Il y a des maillages avec les memes noms dans la selection.
+Il est possible que le fichier resultant soit incorrect.
Voulez-vous continuer ?</translation>
</message>
<message>
</message>
<message>
<source>SMESH_EXPORT_MED_VERSION_COLLISION</source>
- <translation>La version MED du fichier "%1" n'est pas connue
-ou ne correspond pas à la version choisie.
+ <translation>La version MED du fichier "%1" n est pas connue
+ou ne correspond pas a la version choisie.
Ecraser le fichier ?</translation>
</message>
<message>
<source>SMESH_EXPORT_MED_MESH_NAMES_COLLISION</source>
- <translation>Le fichier sélectionné contient déjà
+ <translation>Le fichier selectionne contient deja
des maillages avec les noms suivants: %1
-Le fichier obtenu pourrait être incorrect.
+Le fichier obtenu pourrait etre incorrect.
Ecraser le fichier ?</translation>
</message>
<message>
<source>EXPORT_NOT_SUPPORTED</source>
- <translation>A l'export du maillage avec le nom "%1" vers %2
-%3 sera ignoré.
+ <translation>A l export du maillage avec le nom "%1" vers %2
+%3 sera ignore.
Voulez-vous continuer ?</translation>
</message>
<message>
</message>
<message>
<source>SMESH_EXTRUSION_TO_DISTANCE</source>
- <translation>Distance de l'extrusion</translation>
+ <translation>Distance de l extrusion</translation>
</message>
<message>
<source>SMESH_EXTRUSION_ALONG_VECTOR</source>
</message>
<message>
<source>SMESH_FEATUREANGLE</source>
- <translation>Montrer l'angle</translation>
+ <translation>Montrer l angle</translation>
</message>
<message>
<source>SMESH_FEATUREEDGES</source>
- <translation>Montrer les arêtes</translation>
+ <translation>Montrer les aretes</translation>
</message>
<message>
<source>SMESH_FILE_EXISTS</source>
- <translation>Le fichier "%1" existe déjà.
-Voulez-vous le réécrire ou y ajouter
-les données exportées ?</translation>
+ <translation>Le fichier "%1" existe deja.
+Voulez-vous le reecrire ou y ajouter
+les donnees exportees ?</translation>
</message>
<message>
<source>SMESH_FONT_ARIAL</source>
</message>
<message>
<source>SMESH_GEOM_GROUP</source>
- <translation>Groupe géométrique</translation>
+ <translation>Groupe geometrique</translation>
</message>
<message>
<source>SMESH_GROUP</source>
</message>
<message>
<source>SMESH_GROUP_GEOMETRY</source>
- <translation>Groupe lié à une géométrie</translation>
+ <translation>Groupe lie a une geometrie</translation>
</message>
<message>
<source>SMESH_GROUP_FILTER</source>
- <translation>Groupe lié à un filtre</translation>
+ <translation>Groupe lie a un filtre</translation>
</message>
<message>
<source>SMESH_GROUP_SELECTED</source>
</message>
<message>
<source>SMESH_HEXAS</source>
- <translation>Hexaèdre</translation>
+ <translation>Hexaedre</translation>
</message>
<message>
<source>SMESH_HEXAHEDRA</source>
- <translation>Hexaèdres</translation>
+ <translation>Hexaedres</translation>
</message>
<message>
<source>SMESH_HIGHLIGHT_COLOR</source>
- <translation>Couleur de sélection</translation>
+ <translation>Couleur de selection</translation>
</message>
<message>
<source>SMESH_HORIZONTAL</source>
</message>
<message>
<source>SMESH_HYPOTHESES</source>
- <translation>Hypothèses</translation>
+ <translation>Hypotheses</translation>
</message>
<message>
<source>SMESH_HYPOTHESIS</source>
</message>
<message>
<source>SMESH_HYP_1</source>
- <translation>Il manque une hypothèse à l'algorithme</translation>
+ <translation>Il manque une hypothese a l algorithme</translation>
</message>
<message>
<source>SMESH_HYP_10</source>
- <translation>L'hypothèse ne correspond pas aux dimensions du sous-maillage</translation>
+ <translation>L hypothese ne correspond pas aux dimensions du sous-maillage</translation>
</message>
<message>
<source>SMESH_HYP_11</source>
- <translation>La géométrie n'est ni la géométrie principale, ni un de ses sous-objets, ni un groupe valide</translation>
+ <translation>La geometrie n est ni la geometrie principale, ni un de ses sous-objets, ni un groupe valide</translation>
</message>
<message>
<source>SMESH_HYP_12</source>
- <translation>La géométrie ne correspond pas à l'algorithme
-Référez-vous à la documentation sur l'algorithme et la géométrie supportée</translation>
+ <translation>La geometrie ne correspond pas a l algorithme
+Referez-vous a la documentation sur l algorithme et la geometrie supportee</translation>
</message>
<message>
<source>SMESH_HYP_13</source>
- <translation>L'algorithme ne peut pas opérer sans géométrie</translation>
+ <translation>L algorithme ne peut pas operer sans geometrie</translation>
</message>
<message>
<source>SMESH_HYP_2</source>
- <translation>Il y a des hypothèses concurrentes sur la géométrie</translation>
+ <translation>Il y a des hypotheses concurrentes sur la geometrie</translation>
</message>
<message>
<source>SMESH_HYP_3</source>
- <translation>L'hypothèse contient une valeur de paramètre incorrecte</translation>
+ <translation>L hypothese contient une valeur de parametre incorrecte</translation>
</message>
<message>
<source>SMESH_HYP_4</source>
- <translation>Le sous-maillage n'est pas pris en compte parce qu'il y a un algorithme de dimension supérieure pour générer les éléments %1D</translation>
+ <translation>Le sous-maillage n est pas pris en compte parce qu il y a un algorithme de dimension superieure pour generer les elements %1D</translation>
</message>
<message>
<source>SMESH_HYP_5</source>
- <translation>L'algorithme l'emporte sur les algorithme(s) de dimensions inférieures en générant les éléments de toutes les dimensions</translation>
+ <translation>L algorithme l emporte sur les algorithme(s) de dimensions inferieures en generant les elements de toutes les dimensions</translation>
</message>
<message>
<source>SMESH_HYP_6</source>
- <translation>Erreur critique inconnue lors de la définition de l'hypothèse</translation>
+ <translation>Erreur critique inconnue lors de la definition de l hypothese</translation>
</message>
<message>
<source>SMESH_HYP_7</source>
- <translation>L'hypothèse ne correspond pas à la situation actuelle</translation>
+ <translation>L hypothese ne correspond pas a la situation actuelle</translation>
</message>
<message>
<source>SMESH_HYP_8</source>
- <translation>Un maillage non-conforme a été produit avec les hypothèses appliquées</translation>
+ <translation>Un maillage non-conforme a ete produit avec les hypotheses appliquees</translation>
</message>
<message>
<source>SMESH_HYP_9</source>
- <translation>L'hypothèse d'une telle dimension est déjà attribuée à la géométrie</translation>
+ <translation>L hypothese d une telle dimension est deja attribuee a la geometrie</translation>
</message>
<message>
<source>SMESH_ID_DIAGONAL</source>
- <translation>IDs des arêtes</translation>
+ <translation>IDs des aretes</translation>
</message>
<message>
<source>SMESH_ID_EDGES</source>
- <translation>IDs des arêtes</translation>
+ <translation>IDs des aretes</translation>
</message>
<message>
<source>SMESH_ID_ELEMENTS</source>
- <translation>IDs des éléments</translation>
+ <translation>IDs des elements</translation>
</message>
<message>
<source>SMESH_ID_FACES</source>
</message>
<message>
<source>SMESH_ID_NODES</source>
- <translation>IDs des nœuds</translation>
+ <translation>IDs des noeuds</translation>
</message>
<message>
<source>SMESH_INCORRECT_INPUT</source>
- <translation>Les données d'entrée ne sont pas correctes</translation>
+ <translation>Les donnees d entree ne sont pas correctes</translation>
</message>
<message>
<source>SMESH_INFORMATION</source>
</message>
<message>
<source>SMESH_INSUFFICIENT_DATA</source>
- <translation>La valeur d'entrée n'est pas suffisante</translation>
+ <translation>La valeur d entree n est pas suffisante</translation>
</message>
<message>
<source>SMESH_LABELS</source>
</message>
<message>
<source>SMESH_LABELS_COLORS_SCALARBAR</source>
- <translation>Couleurs && étiquettes</translation>
+ <translation>Couleurs && etiquettes</translation>
</message>
<message>
<source>SMESH_LENGTH</source>
</message>
<message>
<source>SMESH_MAKE_GROUPS</source>
- <translation>Générer les groupes</translation>
+ <translation>Generer les groupes</translation>
</message>
<message>
<source>SMESH_MANIFOLDEDGES</source>
- <translation>Arêtes partagées</translation>
+ <translation>Aretes partagees</translation>
</message>
<message>
<source>SMESH_MAX</source>
</message>
<message>
<source>SMESH_MEN_APPLIED_ALGORIHTMS</source>
- <translation>Algorithmes appliqués</translation>
+ <translation>Algorithmes appliques</translation>
</message>
<message>
<source>SMESH_MEN_APPLIED_HYPOTHESIS</source>
- <translation>Hypothèses appliquées</translation>
+ <translation>Hypotheses appliquees</translation>
</message>
<message>
<source>SMESH_MEN_COMPONENT</source>
</message>
<message>
<source>SMESH_MEN_HYPOTHESIS</source>
- <translation>Hypothèses</translation>
+ <translation>Hypotheses</translation>
</message>
<message>
<source>SMESH_MEN_SubMeshesOnCompound</source>
</message>
<message>
<source>SMESH_MEN_SubMeshesOnEdge</source>
- <translation>Sous-maillages sur une arête</translation>
+ <translation>Sous-maillages sur une arete</translation>
</message>
<message>
<source>SMESH_MEN_SubMeshesOnFace</source>
</message>
<message>
<source>SMESH_MERGE_ELEMENTS</source>
- <translation>Fusionner les éléments</translation>
+ <translation>Fusionner les elements</translation>
</message>
<message>
<source>SMESH_MODE</source>
</message>
<message>
<source>SMESH_MERGED_ELEMENTS</source>
- <translation>%1 éléments fusionnés avec succès</translation>
+ <translation>%1 elements fusionnes avec succes</translation>
</message>
<message>
<source>SMESH_MERGED_NODES</source>
- <translation>%1 nœuds fusionnés avec succès</translation>
+ <translation>%1 noeuds fusionnes avec succes</translation>
</message>
<message>
<source>SMESH_NO_ELEMENTS_DETECTED</source>
- <translation>Il n'y a aucun élément à fusionner.</translation>
+ <translation>Il n y a aucun element a fusionner.</translation>
</message>
<message>
<source>SMESH_NO_NODES_DETECTED</source>
- <translation>Il n'y a aucun nœud à fusionner</translation>
+ <translation>Il n y a aucun noeud a fusionner</translation>
</message>
<message>
<source>SMESH_MERGE_NODES</source>
- <translation>Fusionner les nœuds</translation>
+ <translation>Fusionner les noeuds</translation>
</message>
<message>
<source>SMESH_MESH</source>
</message>
<message>
<source>SMESH_MESHINFO_0DELEMS</source>
- <translation>Eléments 0D</translation>
+ <translation>Elements 0D</translation>
</message>
<message>
<source>SMESH_MESHINFO_BALLS</source>
</message>
<message>
<source>SMESH_MESHINFO_ALL_TYPES</source>
- <translation>Hétérogène</translation>
+ <translation>Heterogene</translation>
</message>
<message>
<source>SMESH_MESHINFO_EDGES</source>
- <translation>Arêtes</translation>
+ <translation>Aretes</translation>
</message>
<message>
<source>SMESH_MESHINFO_ELEMENTS</source>
- <translation>Eléments</translation>
+ <translation>Elements</translation>
</message>
<message>
<source>SMESH_MESHINFO_ENTITIES</source>
- <translation>Entités</translation>
+ <translation>Entites</translation>
</message>
<message>
<source>SMESH_MESHINFO_FACES</source>
</message>
<message>
<source>SMESH_MESHINFO_HEXAS</source>
- <translation>Hexaèdres</translation>
+ <translation>Hexaedres</translation>
</message>
<message>
<source>SMESH_MESHINFO_NAME</source>
</message>
<message>
<source>SMESH_MESHINFO_NODES</source>
- <translation>Nœuds</translation>
+ <translation>Noeuds</translation>
</message>
<message>
<source>SMESH_MESHINFO_ORDER0</source>
</message>
<message>
<source>SMESH_MESHINFO_ORDER1</source>
- <translation>Linéaire</translation>
+ <translation>Lineaire</translation>
</message>
<message>
<source>SMESH_MESHINFO_ORDER2</source>
</message>
<message>
<source>SMESH_MESHINFO_POLYEDRES</source>
- <translation>Polyèdres</translation>
+ <translation>Polyedres</translation>
</message>
<message>
<source>SMESH_MESHINFO_POLYGONES</source>
</message>
<message>
<source>SMESH_MESHINFO_TETRAS</source>
- <translation>Tétraèdres</translation>
+ <translation>Tetraedres</translation>
</message>
<message>
<source>SMESH_MESHINFO_TITLE</source>
</message>
<message>
<source>SMESH_MOVE</source>
- <translation>Déplacer</translation>
+ <translation>Deplacer</translation>
</message>
<message>
<source>SMESH_MOVE_ELEMENTS</source>
- <translation>Déplacer les éléments</translation>
+ <translation>Deplacer les elements</translation>
</message>
<message>
<source>SMESH_MOVE_NODES_TITLE</source>
- <translation>Déplacer un nœud</translation>
+ <translation>Deplacer un noeud</translation>
</message>
<message>
<source>SMESH_NAME</source>
</message>
<message>
<source>SMESH_NODES</source>
- <translation>Nœuds</translation>
+ <translation>Noeuds</translation>
</message>
<message>
<source>SMESH_NONMANIFOLDEDGES</source>
- <translation>Arêtes non-partagées</translation>
+ <translation>Aretes non-partagees</translation>
</message>
<message>
<source>SMESH_NORMAL</source>
</message>
<message>
<source>SMESH_NO_MESH_VISUALIZATION</source>
- <translation>Il n'y a pas assez de mémoire pour visualiser le maillage</translation>
+ <translation>Il n y a pas assez de memoire pour visualiser le maillage</translation>
</message>
<message>
<source>SMESH_NUMBEROFCOLORS</source>
</message>
<message>
<source>SMESH_NUMBEROFLABELS</source>
- <translation>Nombre d'étiquettes :</translation>
+ <translation>Nombre d etiquettes :</translation>
</message>
<message>
<source>SMESH_NUMBEROFSTEPS</source>
</message>
<message>
<source>SMESH_OBJECT_GEOM</source>
- <translation>Objet géométrique</translation>
+ <translation>Objet geometrique</translation>
</message>
<message>
<source>SMESH_OBJECT_HYPOTHESIS</source>
- <translation>Hypothèse</translation>
+ <translation>Hypothese</translation>
</message>
<message>
<source>SMESH_OBJECT_MESH</source>
</message>
<message>
<source>SMESH_OPERATION_FAILED</source>
- <translation>L'opération n'a pas abouti</translation>
+ <translation>L operation n a pas abouti</translation>
</message>
<message>
<source>SMESH_OCTA</source>
</message>
<message>
<source>SMESH_ORIENTATION_ELEMENTS_TITLE</source>
- <translation>Changer l'orientation</translation>
+ <translation>Changer l orientation</translation>
</message>
<message>
<source>SMESH_OUTLINE_COLOR</source>
- <translation>Couleur de l'objet maillage</translation>
+ <translation>Couleur de l objet maillage</translation>
</message>
<message>
<source>SMESH_PARAMETERS</source>
- <translation>Paramètres</translation>
+ <translation>Parametres</translation>
</message>
<message>
<source>SMESH_PENTA</source>
- <translation>Pentaèdre</translation>
+ <translation>Pentaedre</translation>
</message>
<message>
<source>SMESH_PENTAHEDRA</source>
- <translation>Pentaèdres</translation>
+ <translation>Pentaedres</translation>
</message>
<message>
<source>TOP_PENTA</source>
- <translation>Pentaèdre</translation>
+ <translation>Pentaedre</translation>
</message>
<message>
<source>MEN_PENTA</source>
- <translation>Pentaèdre</translation>
+ <translation>Pentaedre</translation>
</message>
<message>
<source>STB_PENTA</source>
- <translation>Pentaèdre</translation>
+ <translation>Pentaedre</translation>
</message>
<message>
<source>SMESH_PLANE</source>
</message>
<message>
<source>SMESH_POLYEDRE_CREATE_ERROR</source>
- <translation>Erreur de création du polyèdre</translation>
+ <translation>Erreur de creation du polyedre</translation>
</message>
<message>
<source>SMESH_POLYEDRON</source>
- <translation>Polyèdre</translation>
+ <translation>Polyedre</translation>
</message>
<message>
<source>SMESH_POLYEDRONS</source>
- <translation>Polyèdres</translation>
+ <translation>Polyedres</translation>
</message>
<message>
<source>SMESH_QUADRATIC_POLYEDRON</source>
- <translation>Polyèdre quadratique</translation>
+ <translation>Polyedre quadratique</translation>
</message>
<message>
<source>SMESH_QUADRATIC_POLYEDRONS</source>
- <translation>Polyèdres quadratiques</translation>
+ <translation>Polyedres quadratiques</translation>
</message>
<message>
<source>SMESH_POLYGON</source>
</message>
<message>
<source>SMESH_PRECISION</source>
- <translation>Précision</translation>
+ <translation>Precision</translation>
</message>
<message>
<source>PREF_GROUP_NUMBERING</source>
- <translation>Numérotation</translation>
+ <translation>Numerotation</translation>
</message>
<message>
<source>PREF_NUMBERING_NODE</source>
- <translation>Nœuds: couleur</translation>
+ <translation>Noeuds: couleur</translation>
</message>
<message>
<source>PREF_NUMBERING_ELEM</source>
- <translation>Éléments: couleur</translation>
+ <translation>elements: couleur</translation>
</message>
<message>
<source>PREF_NUMBERING_FONT</source>
</message>
<message>
<source>SMESH_PREFERENCES_SCALARBAR</source>
- <translation>Préférences de la barre d'échelle</translation>
+ <translation>Preferences de la barre d echelle</translation>
</message>
<message>
<source>SMESH_PREF_SELECTION</source>
- <translation>Préférences - Sélection</translation>
+ <translation>Preferences - Selection</translation>
</message>
<message>
<source>SMESH_PRESELECTION</source>
- <translation>Présélection</translation>
+ <translation>Preselection</translation>
</message>
<message>
<source>SMESH_PRISM</source>
</message>
<message>
<source>SMESH_PROPERTIES_SCALARBAR</source>
- <translation>Propriétés de la barre d'échelle</translation>
+ <translation>Proprietes de la barre d echelle</translation>
</message>
<message>
<source>SMESH_PYRAMID</source>
</message>
<message>
<source>SMESH_QUADRATIC_EDGE</source>
- <translation>Arête quadratique</translation>
+ <translation>Arete quadratique</translation>
</message>
<message>
<source>SMESH_QUADRATIC_EDGES</source>
- <translation>Arêtes quadratiques</translation>
+ <translation>Aretes quadratiques</translation>
</message>
<message>
<source>SMESH_QUADRATIC_HEXAHEDRON</source>
- <translation>Hexaèdre quadratique</translation>
+ <translation>Hexaedre quadratique</translation>
</message>
<message>
<source>SMESH_QUADRATIC_HEXAHEDRONS</source>
- <translation>Hexaèdres quadratiques</translation>
+ <translation>Hexaedres quadratiques</translation>
</message>
<message>
<source>SMESH_TRIQUADRATIC_HEXAHEDRON</source>
- <translation>Hexaèdre triquadratique</translation>
+ <translation>Hexaedre triquadratique</translation>
</message>
<message>
<source>SMESH_TRIQUADRATIC_HEXAHEDRONS</source>
- <translation>Hexaèdres triquadratiques</translation>
+ <translation>Hexaedres triquadratiques</translation>
</message>
<message>
<source>TOP_TRIQUADRATIC_HEXAHEDRON</source>
- <translation>Hexaèdre triquadratique</translation>
+ <translation>Hexaedre triquadratique</translation>
</message>
<message>
<source>MEN_TRIQUADRATIC_HEXAHEDRON</source>
- <translation>Hexaèdre triquadratique</translation>
+ <translation>Hexaedre triquadratique</translation>
</message>
<message>
<source>STB_TRIQUADRATIC_HEXAHEDRON</source>
- <translation>Hexaèdre triquadratique</translation>
+ <translation>Hexaedre triquadratique</translation>
</message>
<message>
<source>SMESH_QUADRATIC_PENTAHEDRON</source>
- <translation>Pentaèdre quadratique</translation>
+ <translation>Pentaedre quadratique</translation>
</message>
<message>
<source>SMESH_BIQUADRATIC_PENTAHEDRON</source>
- <translation>Pentaèdre biquadratique</translation>
+ <translation>Pentaedre biquadratique</translation>
</message>
<message>
<source>SMESH_QUADRATIC_PENTAHEDRONS</source>
- <translation>Pentaèdres quadratiques</translation>
+ <translation>Pentaedres quadratiques</translation>
</message>
<message>
<source>SMESH_BIQUADRATIC_PENTAHEDRONS</source>
- <translation>Pentaèdres biquadratiques</translation>
+ <translation>Pentaedres biquadratiques</translation>
</message>
<message>
<source>SMESH_QUADRATIC_PYRAMID</source>
</message>
<message>
<source>SMESH_QUADRATIC_TETRAHEDRON</source>
- <translation>Tétraèdre quadratique</translation>
+ <translation>Tetraedre quadratique</translation>
</message>
<message>
<source>SMESH_QUADRATIC_TETRAHEDRONS</source>
- <translation>Tétraèdres quadratiques</translation>
+ <translation>Tetraedres quadratiques</translation>
</message>
<message>
<source>SMESH_QUADRATIC_TRIANGLE</source>
</message>
<message>
<source>SMESH_REMOVE_ELEMENTS_TITLE</source>
- <translation>Supprimer les éléments</translation>
+ <translation>Supprimer les elements</translation>
</message>
<message>
<source>SMESH_REMOVE_NODES_TITLE</source>
- <translation>Supprimer les nœuds</translation>
+ <translation>Supprimer les noeuds</translation>
</message>
<message>
<source>SMESH_RENUMBERING</source>
- <translation>Renuméroter</translation>
+ <translation>Renumeroter</translation>
</message>
<message>
<source>SMESH_RENUMBERING_ELEMENTS_TITLE</source>
- <translation>Renuméroter les éléments</translation>
+ <translation>Renumeroter les elements</translation>
</message>
<message>
<source>SMESH_RENUMBERING_NODES_TITLE</source>
- <translation>Renuméroter les nœuds</translation>
+ <translation>Renumeroter les noeuds</translation>
</message>
<message>
<source>SMESH_REVERSE</source>
</message>
<message>
<source>SMESH_REVOLUTION</source>
- <translation>Révolution</translation>
+ <translation>Revolution</translation>
</message>
<message>
<source>SMESH_RM_HYP_WRN</source>
- <translation>"%1" n'est pas attribué, mais:
+ <translation>"%1" n est pas attribue, mais:
</translation>
</message>
<message>
</message>
<message>
<source>SMESH_ROTATION_TITLE</source>
- <translation>Rotation autour d'un axe</translation>
+ <translation>Rotation autour d un axe</translation>
</message>
<message>
<source>SMESH_SCALARBAR</source>
- <translation>Barre d'échelle</translation>
+ <translation>Barre d echelle</translation>
</message>
<message>
<source>SMESH_SEGMENTS</source>
</message>
<message>
<source>SMESH_SELECTION</source>
- <translation>Sélection</translation>
+ <translation>Selection</translation>
</message>
<message>
<source>SMESH_SELECT_FROM</source>
- <translation>Sélectionner à partir de</translation>
+ <translation>Selectionner a partir de</translation>
</message>
<message>
<source>SMESH_SELECT_WHOLE_MESH</source>
</message>
<message>
<source>SMESH_SHOW_SCALAR_BAR</source>
- <translation>Afficher la barre d'échelle</translation>
+ <translation>Afficher la barre d'echelle</translation>
</message>
<message>
<source>SMESH_SMOOTHING</source>
</message>
<message>
<source>SMESH_SYMMETRY</source>
- <translation>Symétrie</translation>
+ <translation>Symetrie</translation>
</message>
<message>
<source>SMESH_TETRAS</source>
- <translation>Tétraèdre</translation>
+ <translation>Tetraedre</translation>
</message>
<message>
<source>SMESH_TETRAHEDRA</source>
- <translation>Tétraèdres</translation>
+ <translation>Tetraedres</translation>
</message>
<message>
<source>SMESH_TITLE</source>
</message>
<message>
<source>SMESH_TOLERANCE</source>
- <translation>Tolérance</translation>
+ <translation>Tolerance</translation>
</message>
<message>
<source>SMESH_TRANSLATION</source>
</message>
<message>
<source>SMESH_SCALE_TITLE</source>
- <translation>Transformation d'échelle</translation>
+ <translation>Transformation d echelle</translation>
</message>
<message>
<source>SMESH_DUPLICATE_TITLE</source>
- <translation>Dupliquer les nœuds</translation>
+ <translation>Dupliquer les noeuds</translation>
</message>
<message>
<source>SMESH_SCALE</source>
</message>
<message>
<source>SMESH_SCALE_FACTOR</source>
- <translation>Facteur d'échelle :</translation>
+ <translation>Facteur d echelle :</translation>
</message>
<message>
<source>SMESH_SCALE_FACTOR_X</source>
- <translation>Facteur d'échelle X :</translation>
+ <translation>Facteur d echelle X :</translation>
</message>
<message>
<source>SMESH_SCALE_FACTOR_Y</source>
- <translation>Facteur d'échelle Y :</translation>
+ <translation>Facteur d echelle Y :</translation>
</message>
<message>
<source>SMESH_SCALE_FACTOR_Z</source>
- <translation>Facteur d'échelle Z :</translation>
+ <translation>Facteur d echelle Z :</translation>
</message>
<message>
<source>SMESH_TRANSPARENCY_OPAQUE</source>
</message>
<message>
<source>SMESH_UPDATEVIEW</source>
- <translation>Mettre à jour la vue</translation>
+ <translation>Mettre a jour la vue</translation>
</message>
<message>
<source>SMESH_VALUE</source>
</message>
<message>
<source>SMESH_VISU_PROBLEM</source>
- <translation>Impossible de visualiser le maillage, probablement à cause d'un manque de mémoire</translation>
+ <translation>Impossible de visualiser le maillage, probablement a cause d un manque de memoire</translation>
</message>
<message>
<source>SMESH_VISU_PROBLEM_MEMORY</source>
- <translation>L'affichage du maillage a échoué, probablement à cause d'un manque de mémoire</translation>
+ <translation>L affichage du maillage a echoue, probablement a cause d un manque de memoire</translation>
</message>
<message>
<source>SMESH_VISU_PROBLEM_CLEAR</source>
- <translation>Impossible de visualiser le maillage, pas assez de la mémoire pour montrer le message,
-donc toutes les données visuelles ont été supprimées pour ne pas planter l'application.
-Enregistrez votre travail avant que l'application se plante</translation>
+ <translation>Impossible de visualiser le maillage, pas assez de la memoire pour montrer le message,
+donc toutes les donnees visuelles ont ete supprimees pour ne pas planter l application.
+Enregistrez votre travail avant que l application se plante</translation>
</message>
<message>
<source>SMESH_VOLUME</source>
</message>
<message>
<source>SMESH_WHAT_IS_TITLE</source>
- <translation>Information sur un élément de maillage</translation>
+ <translation>Information sur un element de maillage</translation>
</message>
<message>
<source>SMESH_WIDTH</source>
</message>
<message>
<source>SMESH_WRN_ALGORITHM_ALREADYEXIST</source>
- <translation>L'algorithme existe déjà</translation>
+ <translation>L algorithme existe deja</translation>
</message>
<message>
<source>SMESH_WRN_COMPUTE_FAILED</source>
</message>
<message>
<source>SMESH_WRN_EVALUATE_FAILED</source>
- <translation>Impossible d'évaluer le maillage</translation>
+ <translation>Impossible d evaluer le maillage</translation>
</message>
<message>
<source>SMESH_WRN_EMPTY_NAME</source>
- <translation>Un nom vide n'est pas valide</translation>
+ <translation>Un nom vide n est pas valide</translation>
</message>
<message>
<source>SMESH_WRN_HYPOTHESIS_ALREADYEXIST</source>
- <translation>L'hypothèse existe déjà</translation>
+ <translation>L hypothese existe deja</translation>
</message>
<message>
<source>SMESH_WRN_HYPOTHESIS_NOTEXIST</source>
- <translation>L'hypothèse ou l'algorithme n'existent pas</translation>
+ <translation>L hypothese ou l algorithme n existent pas</translation>
</message>
<message>
<source>SMESH_WRN_MISSING_PARAMETERS</source>
- <translation>Paramètres manquants</translation>
+ <translation>Parametres manquants</translation>
</message>
<message>
<source>SMESH_WRN_NO_AVAILABLE_DATA</source>
- <translation>Pas de données disponibles dans la sélection</translation>
+ <translation>Pas de donnees disponibles dans la selection</translation>
</message>
<message>
<source>SMESH_WRN_SELECTIONMODE_DIAGONAL</source>
- <translation>Activer le mode de sélection des références</translation>
+ <translation>Activer le mode de selection des references</translation>
</message>
<message>
<source>SMESH_WRN_SELECTIONMODE_ELEMENTS</source>
- <translation>Activer le mode de sélection des éléments</translation>
+ <translation>Activer le mode de selection des elements</translation>
</message>
<message>
<source>SMESH_WRN_SELECTIONMODE_NODES</source>
- <translation>Activer le mode de sélection des nœuds</translation>
+ <translation>Activer le mode de selection des noeuds</translation>
</message>
<message>
<source>SMESH_WRN_VIEWER_VTK</source>
- <translation>Il faut ouvrir la scène dans le visualisateur VTK</translation>
+ <translation>Il faut ouvrir la scene dans le visualisateur VTK</translation>
</message>
<message>
<source>SMESH_WRN_SIZE_LIMIT_EXCEEDED</source>
- <translation>La présentation n'a pas été mise à jour automatiquement:
-la nouvelle taille du maillage (%1 éléments) dépasse la limite de taille actuelle (%2 éléments).
-Vérifiez la limite dans les préférences du module Mesh.
+ <translation>La presentation n a pas ete mise a jour automatiquement:
+la nouvelle taille du maillage (%1 elements) depasse la limite de taille actuelle (%2 elements).
+Verifiez la limite dans les preferences du module Mesh.
</translation>
</message>
<message>
<source>SMESH_WRN_SIZE_INC_LIMIT_EXCEEDED</source>
- <translation>La nouvelle taille de maillage (%1 éléments) dépasse l'actuelle taille limite de la mise à jour automatique (%2 éléments).
-Les éléments suivants ne sont pas affichés: %3.
-Utilisez le menu "Visualiser une entité" pour les afficher.
+ <translation>La nouvelle taille de maillage (%1 elements) depasse l actuelle taille limite de la mise a jour automatique (%2 elements).
+Les elements suivants ne sont pas affiches: %3.
+Utilisez le menu "Visualiser une entite" pour les afficher.
</translation>
</message>
<message>
</message>
<message>
<source>STATE_ALGO_MISSING</source>
- <translation>Il manque l'algorithme %3 %2D</translation>
+ <translation>Il manque l algorithme %3 %2D</translation>
</message>
<message>
<source>STATE_HYP_BAD_GEOMETRY</source>
- <translation>L'algorithme %3 %2D "%1" est attribué à une géométrie qui ne convient pas</translation>
+ <translation>L algorithme %3 %2D "%1" est attribue a une geometrie qui ne convient pas</translation>
</message>
<message>
<source>STATE_HYP_BAD_PARAMETER</source>
- <translation>Il y a un paramètre incorrect dans l'hypothèse %3 %2D de l'algorithme "%1" </translation>
+ <translation>Il y a un parametre incorrect dans l hypothese %3 %2D de l algorithme "%1" </translation>
</message>
<message>
<source>STATE_HYP_MISSING</source>
- <translation>L'hypothèse %4D manque à l'algorithme %3 %2D "%1"</translation>
+ <translation>L hypothese %4D manque a l algorithme %3 %2D "%1"</translation>
</message>
<message>
<source>STATE_HYP_NOTCONFORM</source>
- <translation>L'algorithme %3 %2D "%1" produit un maillage non-conforme: l'hypothèse globale "Maillage non conforme autorisé" doit être cochée</translation>
+ <translation>L algorithme %3 %2D "%1" produit un maillage non-conforme: l hypothese globale "Maillage non conforme autorise" doit etre cochee</translation>
</message>
<message>
<source>STB_ADV_INFO</source>
- <translation>Monter l'information de base sur le maillage</translation>
+ <translation>Monter l information de base sur le maillage</translation>
</message>
<message>
<source>STB_ALL</source>
</message>
<message>
<source>STB_AUTO_UPD</source>
- <translation>Mise à jour automatique</translation>
+ <translation>Mise a jour automatique</translation>
</message>
<message>
<source>STB_BUILD_COMPOUND</source>
- <translation>Construire un maillage assemblé</translation>
+ <translation>Construire un maillage assemble</translation>
</message>
<message>
<source>STB_COPY_MESH</source>
</message>
<message>
<source>STB_COLORS</source>
- <translation>Paramètres d'affichage</translation>
+ <translation>Parametres d affichage</translation>
</message>
<message>
<source>STB_COMPUTE</source>
</message>
<message>
<source>STB_PRECOMPUTE</source>
- <translation>Prévisualiser</translation>
+ <translation>Previsualiser</translation>
</message>
<message>
<source>STB_EVALUATE</source>
</message>
<message>
<source>STB_CONNECTION</source>
- <translation>Frontières sur connexion multiples</translation>
+ <translation>Frontieres sur connexion multiples</translation>
</message>
<message>
<source>STB_CONNECTION_2D</source>
- <translation>Frontières sur connexion multiples 2D</translation>
+ <translation>Frontieres sur connexion multiples 2D</translation>
</message>
<message>
<source>STB_CONSTRUCT_GROUP</source>
</message>
<message>
<source>STB_2D_FROM_3D</source>
- <translation>Créer les éléments de frontière</translation>
+ <translation>Creer les elements de frontiere</translation>
</message>
<message>
<source>STB_MESH_ORDER</source>
- <translation>Changer la priorité des sous-maillages</translation>
+ <translation>Changer la priorite des sous-maillages</translation>
</message>
<message>
<source>STB_CREATE_GROUP</source>
- <translation>Créer un groupe</translation>
+ <translation>Creer un groupe</translation>
</message>
<message>
<source>STB_CREATE_GEO_GROUP</source>
- <translation>Créer des groupes à partir de la géométrie</translation>
+ <translation>Creer des groupes a partir de la geometrie</translation>
</message>
<message>
<source>STB_CREATE_MESH</source>
- <translation>Créer un maillage</translation>
+ <translation>Creer un maillage</translation>
</message>
<message>
<source>STB_CREATE_SUBMESH</source>
- <translation>Créer un sous-maillage</translation>
+ <translation>Creer un sous-maillage</translation>
</message>
<message>
<source>STB_CUT</source>
- <translation>Découpe des quadrangles</translation>
+ <translation>Decoupe des quadrangles</translation>
</message>
<message>
<source>STB_CUT_GROUP</source>
- <translation>Découper les groupes</translation>
+ <translation>Decouper les groupes</translation>
</message>
<message>
<source>STB_DAT</source>
</message>
<message>
<source>STB_DISABLE_AUTO_COLOR</source>
- <translation>Désactiver la couleur automatique</translation>
+ <translation>Desactiver la couleur automatique</translation>
</message>
<message>
<source>STB_DISPLAY_ONLY</source>
</message>
<message>
<source>STB_DISP_ENT</source>
- <translation>Visualiser une entité</translation>
+ <translation>Visualiser une entite</translation>
</message>
<message>
<source>STB_ELEM0D</source>
- <translation>Elément 0D</translation>
+ <translation>Element 0D</translation>
</message>
<message>
<source>STB_0D_ON_ALL_NODES</source>
- <translation>Créer des éléments 0D sur des noeuds</translation>
+ <translation>Creer des elements 0D sur des noeuds</translation>
</message>
<message>
<source>STB_ELEMS0D</source>
- <translation>Eléments 0D</translation>
+ <translation>Elements 0D</translation>
</message>
<message>
<source>STB_BALLS</source>
- <translation>Eléments particulaires</translation>
+ <translation>Elements particulaires</translation>
</message>
<message>
<source>STB_BALL</source>
- <translation>Elément particulaire</translation>
+ <translation>Element particulaire</translation>
</message>
<message>
<source>STB_EDGE</source>
- <translation>Arête</translation>
+ <translation>Arete</translation>
</message>
<message>
<source>STB_EDGES</source>
- <translation>Arêtes</translation>
+ <translation>Aretes</translation>
</message>
<message>
<source>STB_EDIT_GROUP</source>
</message>
<message>
<source>STB_EDIT_GEOMGROUP_AS_GROUP</source>
- <translation>Editer un groupe en tant qu'autonome</translation>
+ <translation>Editer un groupe en tant qu autonome</translation>
</message>
<message>
<source>STB_EDIT_HYPO</source>
- <translation>Editer une hypothèse</translation>
+ <translation>Editer une hypothese</translation>
</message>
<message>
<source>STB_EDIT_MESHSUBMESH</source>
</message>
<message>
<source>STB_BARE_BORDER_VOLUME</source>
- <translation>Volumes avec éléments de peau 2D manquants</translation>
+ <translation>Volumes avec elements de peau 2D manquants</translation>
</message>
<message>
<source>STB_BARE_BORDER_FACE</source>
- <translation>Faces avec éléments de peau 1D manquants</translation>
+ <translation>Faces avec elements de peau 1D manquants</translation>
</message>
<message>
<source>STB_OVER_CONSTRAINED_VOLUME</source>
</message>
<message>
<source>STB_FREE_BORDER</source>
- <translation>Frontières libres</translation>
+ <translation>Frontieres libres</translation>
</message>
<message>
<source>STB_FREE_EDGE</source>
- <translation>Arêtes libres</translation>
+ <translation>Aretes libres</translation>
</message>
<message>
<source>STB_FREE_NODE</source>
- <translation>Nœuds libres</translation>
+ <translation>Noeuds libres</translation>
</message>
<message>
<source>STB_NODE_CONNECTIVITY_NB</source>
- <translation>Nombre de connectivité par nœud</translation>
+ <translation>Nombre de connectivite par noeud</translation>
</message>
<message>
<source>STB_FREE_FACES</source>
</message>
<message>
<source>STB_GLOBAL_HYPO</source>
- <translation>Hypothèse globale</translation>
+ <translation>Hypothese globale</translation>
</message>
<message>
<source>STB_HEXA</source>
- <translation>Hexaèdre</translation>
+ <translation>Hexaedre</translation>
</message>
<message>
<source>STB_HIDE</source>
</message>
<message>
<source>STB_MAX_ELEMENT_LENGTH_2D</source>
- <translation>Diamètre de l'élément 2D</translation>
+ <translation>Diametre de l element 2D</translation>
</message>
<message>
<source>STB_MAX_ELEMENT_LENGTH_3D</source>
- <translation>Diamètre de l'élément 3D</translation>
+ <translation>Diametre de l element 3D</translation>
</message>
<message>
<source>STB_IMPORT_MED</source>
</message>
<message>
<source>STB_MERGE</source>
- <translation>Fusionner les nœuds</translation>
+ <translation>Fusionner les noeuds</translation>
</message>
<message>
<source>STB_MERGE_ELEMENTS</source>
- <translation>Fusionner les éléments</translation>
+ <translation>Fusionner les elements</translation>
</message>
<message>
<source>STB_MESH_THROU_POINT</source>
- <translation>Déplacer un nœud</translation>
+ <translation>Deplacer un noeud</translation>
</message>
<message>
<source>STB_MIN_ANG</source>
</message>
<message>
<source>STB_MOVE</source>
- <translation>Déplacer un nœud</translation>
+ <translation>Deplacer un noeud</translation>
</message>
<message>
<source>STB_NODE</source>
- <translation>Nœud</translation>
+ <translation>Noeud</translation>
</message>
<message>
<source>STB_NODES</source>
- <translation>Nœuds</translation>
+ <translation>Noeuds</translation>
</message>
<message>
<source>STB_NUM_ELEMENTS</source>
- <translation>Visualiser les éléments</translation>
+ <translation>Visualiser les elements</translation>
</message>
<message>
<source>STB_NUM_NODES</source>
- <translation>Visualiser les nœuds</translation>
+ <translation>Visualiser les noeuds</translation>
</message>
<message>
<source>STB_ORIENT</source>
</message>
<message>
<source>STB_POLYHEDRON</source>
- <translation>Polyèdre</translation>
+ <translation>Polyedre</translation>
</message>
<message>
<source>STB_PRECISION</source>
- <translation>Précision</translation>
+ <translation>Precision</translation>
</message>
<message>
<source>STB_QUAD</source>
</message>
<message>
<source>STB_QUADRATIC_EDGE</source>
- <translation>Arête quadratique</translation>
+ <translation>Arete quadratique</translation>
</message>
<message>
<source>STB_QUADRATIC_HEXAHEDRON</source>
- <translation>Hexaèdre quadratique</translation>
+ <translation>Hexaedre quadratique</translation>
</message>
<message>
<source>STB_QUADRATIC_PENTAHEDRON</source>
- <translation>Pentaèdre quadratique</translation>
+ <translation>Pentaedre quadratique</translation>
</message>
<message>
<source>STB_BIQUADRATIC_PENTAHEDRON</source>
- <translation>Pentaèdre biquadratique</translation>
+ <translation>Pentaedre biquadratique</translation>
</message>
<message>
<source>STB_QUADRATIC_PYRAMID</source>
</message>
<message>
<source>STB_QUADRATIC_TETRAHEDRON</source>
- <translation>Tétraèdre quadratique</translation>
+ <translation>Tetraedre quadratique</translation>
</message>
<message>
<source>STB_QUADRATIC_TRIANGLE</source>
</message>
<message>
<source>STB_REMOVE_ELEMENTS</source>
- <translation>Supprimer les éléments</translation>
+ <translation>Supprimer les elements</translation>
</message>
<message>
<source>STB_REMOVE_NODES</source>
- <translation>Supprimer les nœuds</translation>
+ <translation>Supprimer les noeuds</translation>
</message>
<message>
<source>STB_REMOVE_ORPHAN_NODES</source>
- <translation>Supprimer les nœuds orphelins</translation>
+ <translation>Supprimer les noeuds orphelins</translation>
</message>
<message>
<source>STB_RENAME</source>
</message>
<message>
<source>STB_RENUM_ELEMENTS</source>
- <translation>Renuméroter les éléments</translation>
+ <translation>Renumeroter les elements</translation>
</message>
<message>
<source>STB_RENUM_NODES</source>
- <translation>Renuméroter les nœuds</translation>
+ <translation>Renumeroter les noeuds</translation>
</message>
<message>
<source>STB_RESET</source>
</message>
<message>
<source>STB_SHOW_SCALAR_BAR</source>
- <translation>Afficher la barre d'échelle</translation>
+ <translation>Afficher la barre d'echelle</translation>
</message>
<message>
<source>STB_REVOLUTION</source>
- <translation>Révolution</translation>
+ <translation>Revolution</translation>
</message>
<message>
<source>STB_ROT</source>
</message>
<message>
<source>STB_SCALAR_BAR</source>
- <translation>Barre d'échelle</translation>
+ <translation>Barre d echelle</translation>
</message>
<message>
<source>STB_SCALAR_BAR_PROP</source>
- <translation>Propriétés de la barre d'échelle</translation>
+ <translation>Proprietes de la barre d echelle</translation>
</message>
<message>
<source>STB_SELECTION</source>
- <translation>Sélection</translation>
+ <translation>Selection</translation>
</message>
<message>
<source>STB_SEL_FILTER_LIB</source>
- <translation>Librairie des filtres de sélection</translation>
+ <translation>Librairie des filtres de selection</translation>
</message>
<message>
<source>STB_SEW</source>
</message>
<message>
<source>STB_SKEW</source>
- <translation>Inclinaison d'angle</translation>
+ <translation>Inclinaison d angle</translation>
</message>
<message>
<source>STB_SMOOTH</source>
</message>
<message>
<source>STB_SYM</source>
- <translation>Symétrie</translation>
+ <translation>Symetrie</translation>
</message>
<message>
<source>STB_TAPER</source>
- <translation>Cône</translation>
+ <translation>Cone</translation>
</message>
<message>
<source>STB_TETRA</source>
- <translation>Tétraèdre</translation>
+ <translation>Tetraedre</translation>
</message>
<message>
<source>STB_TRANS</source>
</message>
<message>
<source>STB_SCALE</source>
- <translation>Mise à l'échelle</translation>
+ <translation>Mise a l'echelle</translation>
</message>
<message>
<source>STB_OFFSET</source>
- <translation>Décalage</translation>
+ <translation>Decalage</translation>
</message>
<message>
<source>STB_DUPLICATE_NODES</source>
- <translation>Dupliquer les nœuds</translation>
+ <translation>Dupliquer les noeuds</translation>
</message>
<message>
<source>STB_TRANSP</source>
</message>
<message>
<source>STB_UNASSIGN</source>
- <translation>Désassocier</translation>
+ <translation>Desassocier</translation>
</message>
<message>
<source>STB_UNION</source>
</message>
<message>
<source>STB_UNDERLYING_ELEMS</source>
- <translation>Créer les groupes d'entités à partir des groupes existants de dimensions supérieures</translation>
+ <translation>Creer les groupes d entites a partir des groupes existants de dimensions superieures</translation>
</message>
<message>
<source>STB_UPDATE</source>
- <translation>Mettre à jour</translation>
+ <translation>Mettre a jour</translation>
</message>
<message>
<source>STB_VOLUMES</source>
</message>
<message>
<source>STB_WARP</source>
- <translation>Angle de déformation</translation>
+ <translation>Angle de deformation</translation>
</message>
<message>
<source>STB_WHAT_IS</source>
- <translation>Information sur un élément ou un nœud de maillage</translation>
+ <translation>Information sur un element ou un noeud de maillage</translation>
</message>
<message>
<source>STB_WIRE</source>
</message>
<message>
<source>TAPER_ELEMENTS</source>
- <translation>Cône</translation>
+ <translation>Cone</translation>
</message>
<message>
<source>TB_ADD</source>
- <translation>Barre d'ajout d'éléments</translation>
+ <translation>Barre d ajout d elements</translation>
</message>
<message>
<source>TB_ADDNON</source>
- <translation>Barre d'ajout d'éléments non linéaires</translation>
+ <translation>Barre d ajout d elements non lineaires</translation>
</message>
<message>
<source>TB_REM</source>
</message>
<message>
<source>TB_RENUMBER</source>
- <translation>Barre de renumérotation</translation>
+ <translation>Barre de renumerotation</translation>
</message>
<message>
<source>TB_TRANSFORM</source>
</message>
<message>
<source>TB_CTRL0D</source>
- <translation>Barre des contrôles des nœuds</translation>
+ <translation>Barre des controles des noeuds</translation>
</message>
<message>
<source>TB_CTRL1D</source>
- <translation>Barre des contrôles des arêtes</translation>
+ <translation>Barre des controles des aretes</translation>
</message>
<message>
<source>TB_CTRL2D</source>
- <translation>Barre des contrôles des faces</translation>
+ <translation>Barre des controles des faces</translation>
</message>
<message>
<source>TB_CTRL3D</source>
- <translation>Barre des contrôles des volumes</translation>
+ <translation>Barre des controles des volumes</translation>
</message>
<message>
<source>TB_MEASUREM</source>
</message>
<message>
<source>TB_HYPO</source>
- <translation>Barre d'hypothèses</translation>
+ <translation>Barre d hypotheses</translation>
</message>
<message>
<source>TB_MESH</source>
</message>
<message>
<source>TB_INFO</source>
- <translation>Barre d'information</translation>
+ <translation>Barre d information</translation>
</message>
<message>
<source>TB_ADD1D</source>
</message>
<message>
<source>TOP_AUTO_UPD</source>
- <translation>Mise à jour automatique</translation>
+ <translation>Mise a jour automatique</translation>
</message>
<message>
<source>TOP_BUILD_COMPOUND</source>
- <translation>Construire un maillage assemblé</translation>
+ <translation>Construire un maillage assemble</translation>
</message>
<message>
<source>TOP_COPY_MESH</source>
</message>
<message>
<source>TOP_COLORS</source>
- <translation>Paramètres d'affichage</translation>
+ <translation>Parametres d affichage</translation>
</message>
<message>
<source>TOP_COMPUTE</source>
</message>
<message>
<source>TOP_PRECOMPUTE</source>
- <translation>Prévisualiser</translation>
+ <translation>Previsualiser</translation>
</message>
<message>
<source>TOP_EVALUATE</source>
</message>
<message>
<source>TOP_CONNECTION</source>
- <translation>Frontières sur connexions multiples</translation>
+ <translation>Frontieres sur connexions multiples</translation>
</message>
<message>
<source>TOP_CONNECTION_2D</source>
- <translation>Frontières sur connexions multiples 2D</translation>
+ <translation>Frontieres sur connexions multiples 2D</translation>
</message>
<message>
<source>TOP_CONSTRUCT_GROUP</source>
</message>
<message>
<source>TOP_2D_FROM_3D</source>
- <translation>Créer les éléments de frontière</translation>
+ <translation>Creer les elements de frontiere</translation>
</message>
<message>
<source>TOP_MESH_ORDER</source>
- <translation>Changer la priorité des sous-maillages</translation>
+ <translation>Changer la priorite des sous-maillages</translation>
</message>
<message>
<source>TOP_CREATE_GROUP</source>
- <translation>Créer un groupe</translation>
+ <translation>Creer un groupe</translation>
</message>
<message>
<source>TOP_CREATE_GEO_GROUP</source>
- <translation>Créer des groupes liés à la géométrie</translation>
+ <translation>Creer des groupes lies a la geometrie</translation>
</message>
<message>
<source>TOP_CREATE_MESH</source>
- <translation>Créer un maillage</translation>
+ <translation>Creer un maillage</translation>
</message>
<message>
<source>TOP_CREATE_SUBMESH</source>
- <translation>Créer un sous-maillage</translation>
+ <translation>Creer un sous-maillage</translation>
</message>
<message>
<source>TOP_CUT</source>
- <translation>Découpe des quadrangles</translation>
+ <translation>Decoupe des quadrangles</translation>
</message>
<message>
<source>TOP_CUT_GROUP</source>
- <translation>Découper les groupes</translation>
+ <translation>Decouper les groupes</translation>
</message>
<message>
<source>TOP_IMPORT_DAT</source>
</message>
<message>
<source>TOP_DISABLE_AUTO_COLOR</source>
- <translation>Désactiver la couleur automatique</translation>
+ <translation>Desactiver la couleur automatique</translation>
</message>
<message>
<source>TOP_DISPLAY_ONLY</source>
</message>
<message>
<source>TOP_DISP_ENT</source>
- <translation>Visualiser une entité</translation>
+ <translation>Visualiser une entite</translation>
</message>
<message>
<source>TOP_0D_ON_ALL_NODES</source>
- <translation>Créer des éléments 0D sur des noeuds</translation>
+ <translation>Creer des elements 0D sur des noeuds</translation>
</message>
<message>
<source>TOP_ELEM0D</source>
- <translation>Elément 0D</translation>
+ <translation>Element 0D</translation>
</message>
<message>
<source>TOP_ELEMS0D</source>
- <translation>Eléments 0D</translation>
+ <translation>Elements 0D</translation>
</message>
<message>
<source>TOP_BALL</source>
</message>
<message>
<source>TOP_EDGE</source>
- <translation>Arête</translation>
+ <translation>Arete</translation>
</message>
<message>
<source>TOP_EDGES</source>
- <translation>Arêtes</translation>
+ <translation>Aretes</translation>
</message>
<message>
<source>TOP_EDIT_GROUP</source>
</message>
<message>
<source>TOP_EDIT_GEOMGROUP_AS_GROUP</source>
- <translation>Editer un groupe en tant qu'autonome</translation>
+ <translation>Editer un groupe en tant qu autonome</translation>
</message>
<message>
<source>TOP_EDIT_HYPO</source>
- <translation>Editer l'hypothèse</translation>
+ <translation>Editer l hypothese</translation>
</message>
<message>
<source>TOP_EDIT_MESHSUBMESH</source>
</message>
<message>
<source>TOP_BARE_BORDER_VOLUME</source>
- <translation>Volumes avec éléments de peau 2D manquants</translation>
+ <translation>Volumes avec elements de peau 2D manquants</translation>
</message>
<message>
<source>TOP_BARE_BORDER_FACE</source>
- <translation>Faces avec éléments de peau 1D manquants</translation>
+ <translation>Faces avec elements de peau 1D manquants</translation>
</message>
<message>
<source>TOP_OVER_CONSTRAINED_VOLUME</source>
</message>
<message>
<source>TOP_FREE_BORDER</source>
- <translation>Frontières libres</translation>
+ <translation>Frontieres libres</translation>
</message>
<message>
<source>TOP_FREE_EDGE</source>
- <translation>Arêtes libres</translation>
+ <translation>Aretes libres</translation>
</message>
<message>
<source>TOP_FREE_NODE</source>
- <translation>Nœuds libres</translation>
+ <translation>Noeuds libres</translation>
</message>
<message>
<source>TOP_NODE_CONNECTIVITY_NB</source>
- <translation>Nombre de connectivité par nœud</translation>
+ <translation>Nombre de connectivite par noeud</translation>
</message>
<message>
<source>TOP_FREE_FACES</source>
</message>
<message>
<source>TOP_GLOBAL_HYPO</source>
- <translation>Hypothèse globale</translation>
+ <translation>Hypothese globale</translation>
</message>
<message>
<source>TOP_HEXA</source>
- <translation>Hexaèdre</translation>
+ <translation>Hexaedre</translation>
</message>
<message>
<source>TOP_HIDE</source>
</message>
<message>
<source>TOP_MAX_ELEMENT_LENGTH_2D</source>
- <translation>Diamètre des éléments 2D</translation>
+ <translation>Diametre des elements 2D</translation>
</message>
<message>
<source>TOP_MAX_ELEMENT_LENGTH_3D</source>
- <translation>Diamètre des éléments 3D</translation>
+ <translation>Diametre des elements 3D</translation>
</message>
<message>
<source>TOP_IMPORT_MED</source>
</message>
<message>
<source>TOP_MERGE</source>
- <translation>Fusionner les nœuds</translation>
+ <translation>Fusionner les noeuds</translation>
</message>
<message>
<source>TOP_MERGE_ELEMENTS</source>
- <translation>Fusionner les éléments</translation>
+ <translation>Fusionner les elements</translation>
</message>
<message>
<source>TOP_MESH_THROU_POINT</source>
- <translation>Déplacer un nœud</translation>
+ <translation>Deplacer un noeud</translation>
</message>
<message>
<source>TOP_MIN_ANG</source>
</message>
<message>
<source>TOP_MOVE</source>
- <translation>Déplacer un nœud</translation>
+ <translation>Deplacer un noeud</translation>
</message>
<message>
<source>TOP_NODE</source>
- <translation>Nœud</translation>
+ <translation>Noeud</translation>
</message>
<message>
<source>TOP_NODES</source>
- <translation>Nœuds</translation>
+ <translation>Noeuds</translation>
</message>
<message>
<source>TOP_NUM_ELEMENTS</source>
- <translation>Visualiser les éléments</translation>
+ <translation>Visualiser les elements</translation>
</message>
<message>
<source>TOP_NUM_NODES</source>
- <translation>Visualiser les nœuds</translation>
+ <translation>Visualiser les noeuds</translation>
</message>
<message>
<source>TOP_ORIENT</source>
</message>
<message>
<source>TOP_POLYHEDRON</source>
- <translation>Polyèdre</translation>
+ <translation>Polyedre</translation>
</message>
<message>
<source>TOP_PRECISION</source>
- <translation>Précision</translation>
+ <translation>Precision</translation>
</message>
<message>
<source>TOP_QUAD</source>
</message>
<message>
<source>TOP_QUADRATIC_EDGE</source>
- <translation>Arête quadratique</translation>
+ <translation>Arete quadratique</translation>
</message>
<message>
<source>TOP_QUADRATIC_HEXAHEDRON</source>
- <translation>Hexaèdre quadratique</translation>
+ <translation>Hexaedre quadratique</translation>
</message>
<message>
<source>TOP_QUADRATIC_PENTAHEDRON</source>
- <translation>Pentaèdre quadratique</translation>
+ <translation>Pentaedre quadratique</translation>
</message>
<message>
<source>TOP_BIQUADRATIC_PENTAHEDRON</source>
- <translation>Pentaèdre biquadratique</translation>
+ <translation>Pentaedre biquadratique</translation>
</message>
<message>
<source>TOP_QUADRATIC_PYRAMID</source>
</message>
<message>
<source>TOP_QUADRATIC_TETRAHEDRON</source>
- <translation>Tétraèdre quadratique</translation>
+ <translation>Tetraedre quadratique</translation>
</message>
<message>
<source>TOP_QUADRATIC_TRIANGLE</source>
</message>
<message>
<source>TOP_REMOVE_ELEMENTS</source>
- <translation>Supprimer les éléments</translation>
+ <translation>Supprimer les elements</translation>
</message>
<message>
<source>TOP_REMOVE_NODES</source>
- <translation>Supprimer les nœuds</translation>
+ <translation>Supprimer les noeuds</translation>
</message>
<message>
<source>TOP_REMOVE_ORPHAN_NODES</source>
- <translation>Supprimer les nœuds orphelins</translation>
+ <translation>Supprimer les noeuds orphelins</translation>
</message>
<message>
<source>TOP_RENAME</source>
</message>
<message>
<source>TOP_RENUM_ELEMENTS</source>
- <translation>Renuméroter les éléments</translation>
+ <translation>Renumeroter les elements</translation>
</message>
<message>
<source>TOP_RENUM_NODES</source>
- <translation>Renuméroter les nœuds</translation>
+ <translation>Renumeroter les noeuds</translation>
</message>
<message>
<source>TOP_RESET</source>
</message>
<message>
<source>TOP_REVOLUTION</source>
- <translation>Révolution</translation>
+ <translation>Revolution</translation>
</message>
<message>
<source>TOP_ROT</source>
</message>
<message>
<source>TOP_SCALAR_BAR</source>
- <translation>Barre d'échelle</translation>
+ <translation>Barre d echelle</translation>
</message>
<message>
<source>TOP_SCALAR_BAR_PROP</source>
- <translation>Propriétés de la barre d'échelle</translation>
+ <translation>Proprietes de la barre d echelle</translation>
</message>
<message>
<source>TOP_SELECTION</source>
- <translation>Sélection</translation>
+ <translation>Selection</translation>
</message>
<message>
<source>TOP_SEL_FILTER_LIB</source>
- <translation>Librairie des filtres de sélection</translation>
+ <translation>Librairie des filtres de selection</translation>
</message>
<message>
<source>TOP_SEW</source>
</message>
<message>
<source>TOP_SKEW</source>
- <translation>Inclinaison d'angle</translation>
+ <translation>Inclinaison d angle</translation>
</message>
<message>
<source>TOP_SMOOTH</source>
</message>
<message>
<source>TOP_SYM</source>
- <translation>Symétrie</translation>
+ <translation>Symetrie</translation>
</message>
<message>
<source>TOP_TAPER</source>
- <translation>Cône</translation>
+ <translation>Cone</translation>
</message>
<message>
<source>TOP_TETRA</source>
- <translation>Tétraèdre</translation>
+ <translation>Tetraedre</translation>
</message>
<message>
<source>TOP_TRANS</source>
</message>
<message>
<source>TOP_SCALE</source>
- <translation>Mise à l'échelle</translation>
+ <translation>Mise a l'echelle</translation>
</message>
<message>
<source>TOP_OFFSET</source>
</message>
<message>
<source>TOP_DUPLICATE_NODES</source>
- <translation>Dupliquer les nœuds</translation>
+ <translation>Dupliquer les noeuds</translation>
</message>
<message>
<source>TOP_TRANSP</source>
</message>
<message>
<source>TOP_UNASSIGN</source>
- <translation>Désassocier</translation>
+ <translation>Desassocier</translation>
</message>
<message>
<source>TOP_UNION</source>
</message>
<message>
<source>TOP_UNDERLYING_ELEMS</source>
- <translation>Créer les groupes d'entités à partir des groupes existants de dimensions supérieures</translation>
+ <translation>Creer les groupes d entites a partir des groupes existants de dimensions superieures</translation>
</message>
<message>
<source>TOP_UPDATE</source>
- <translation>Mettre à jour</translation>
+ <translation>Mettre a jour</translation>
</message>
<message>
<source>TOP_VOLUMES</source>
</message>
<message>
<source>TOP_WARP</source>
- <translation>Angle de déformation</translation>
+ <translation>Angle de deformation</translation>
</message>
<message>
<source>TOP_WHAT_IS</source>
- <translation>Information sur l'élément de maillage</translation>
+ <translation>Information sur l element de maillage</translation>
</message>
<message>
<source>TOP_WIRE</source>
</message>
<message>
<source>UPDATE_DESTINATION</source>
- <translation>Mettre à jour la destination</translation>
+ <translation>Mettre a jour la destination</translation>
</message>
<message>
<source>VOLUME_3D_ELEMENTS</source>
</message>
<message>
<source>WARP_ELEMENTS</source>
- <translation>Déformation</translation>
+ <translation>Deformation</translation>
</message>
<message>
<source>MEN_FILE_INFO</source>
</message>
<message>
<source>SMESH_WRN_NO_APPROPRIATE_SELECTION</source>
- <translation>Aucun objet sélectionné ne convient</translation>
+ <translation>Aucun objet selectionne ne convient</translation>
</message>
<message>
<source>MEN_CLEAR_MESH</source>
- <translation>Effacer les données du maillage</translation>
+ <translation>Effacer les donnees du maillage</translation>
</message>
<message>
<source>TOP_CLEAR_MESH</source>
- <translation>Effacer les données du maillage</translation>
+ <translation>Effacer les donnees du maillage</translation>
</message>
<message>
<source>STB_CLEAR_MESH</source>
- <translation>Effacer les données du maillage</translation>
+ <translation>Effacer les donnees du maillage</translation>
</message>
<message>
<source>SMESH_IMPORT_MESH</source>
- <translation>Importer les donnés du maillage à partir des fichiers</translation>
+ <translation>Importer les donnes du maillage a partir des fichiers</translation>
</message>
<message>
<source>SMESH_ERR_NOT_SUPPORTED_FORMAT</source>
- <translation>Le format de fichier n'est pas supporté</translation>
+ <translation>Le format de fichier n est pas supporte</translation>
</message>
<message>
<source>SMESH_ERR_UNKNOWN_IMPORT_ERROR</source>
</message>
<message>
<source>SMESH_IMPORT_ERRORS</source>
- <translation>L'importation s'est terminée avec des erreurs</translation>
+ <translation>L importation s est terminee avec des erreurs</translation>
</message>
<message>
<source>SMESH_DRS_SOME_EMPTY</source>
- <translation>Un ou plusieurs fichiers de maillage sont vides, les données n'ont pas été publiées</translation>
+ <translation>Un ou plusieurs fichiers de maillage sont vides, les donnees n ont pas ete publiees</translation>
</message>
<message>
<source>NO_MESH_SELECTED</source>
- <translation>Aucun maillage sélectionné</translation>
+ <translation>Aucun maillage selectionne</translation>
</message>
<message>
<source>SMESH_PREF_def_precision</source>
- <translation>Précision par défaut</translation>
+ <translation>Precision par defaut</translation>
</message>
<message>
<source>SMESH_PREF_length_precision</source>
- <translation>Précision de la longueur</translation>
+ <translation>Precision de la longueur</translation>
</message>
<message>
<source>SMESH_PREF_angle_precision</source>
- <translation>Précision angulaire</translation>
+ <translation>Precision angulaire</translation>
</message>
<message>
<source>SMESH_PREF_len_tol_precision</source>
- <translation>Précision de tolérance de la longueur</translation>
+ <translation>Precision de tolerance de la longueur</translation>
</message>
<message>
<source>SMESH_PREF_parametric_precision</source>
- <translation>Précision paramétrique</translation>
+ <translation>Precision parametrique</translation>
</message>
<message>
<source>SMESH_PREF_area_precision</source>
- <translation>Précision de l'aire</translation>
+ <translation>Precision de l aire</translation>
</message>
<message>
<source>FULL_RECOMPUTE_QUESTION</source>
<translation>
-Le maillage a été édité après le dernier calcul complet,
-ceci peut empêcher un calcul correct.
+Le maillage a ete edite apres le dernier calcul complet,
+ceci peut empecher un calcul correct.
Voulez-vous recalculer le maillage entier pour rejeter les modifications ?
</translation>
</message>
<message>
<source>SMESH_PREF_vol_precision</source>
- <translation>Précision du volume</translation>
+ <translation>Precision du volume</translation>
</message>
<message>
<source>SMESH_PRECISION_HINT</source>
<translation>
-Il est possible de modifier la précision de la valeur d'entrée
-avec le paramètre '%1' des préférences du module Mesh.</translation>
+Il est possible de modifier la precision de la valeur d entree
+avec le parametre %1 des preferences du module Mesh.</translation>
</message>
<message>
<source>REMOVE_ORPHAN_NODES_QUESTION</source>
- <translation>Voulez-vous supprimer tous les nœuds orphelins ?</translation>
+ <translation>Voulez-vous supprimer tous les noeuds orphelins ?</translation>
</message>
<message>
<source>NB_NODES_REMOVED</source>
- <translation>%1 nœud(s) supprimés.</translation>
+ <translation>%1 noeud(s) supprimes.</translation>
</message>
<message>
<source>SMESH_SAVE_DISTRIBUTION</source>
</message>
<message>
<source>MESH_LOADING_MSG_FINISHED</source>
- <translation>Chargement du maillage %0 terminé</translation>
+ <translation>Chargement du maillage %0 termine</translation>
</message>
<message>
<source>BALL_DIAMETER</source>
- <translation>Diamètre</translation>
+ <translation>Diametre</translation>
</message>
<message>
<source>BALL_ELEMENT</source>
</message>
<message>
<source>DEP_OBJECT</source>
- <translation>L'objet sélectionné a été utilisé pour en créer un autre.
-Il ne peut pas être supprimé.</translation>
+ <translation>L objet selectionne a ete utilise pour en creer un autre.
+Il ne peut pas etre supprime.</translation>
</message>
<message>
<source>SMESH_FREERAM</source>
</message>
<message>
<source>SMESH_ADVANCED</source>
- <translation>Avancé</translation>
+ <translation>Avance</translation>
</message>
<message>
<source>SMESH_1D_ALGO_GROUP_BASIC</source>
</message>
<message>
<source>SMESH_1D_ALGO_GROUP_ADVANCED</source>
- <translation>Avancé</translation>
+ <translation>Avance</translation>
</message>
<message>
<source>SMESH_1D_HYP_GROUP_BASIC</source>
</message>
<message>
<source>SMESH_1D_HYP_GROUP_ADVANCED</source>
- <translation>Avancé</translation>
+ <translation>Avance</translation>
</message>
<message>
<source>SMESH_2D_ALGO_GROUP_REGULAR</source>
- <translation>Faces régulières</translation>
+ <translation>Faces regulieres</translation>
</message>
<message>
<source>SMESH_2D_ALGO_GROUP_FREE</source>
</message>
<message>
<source>SMESH_2D_ALGO_GROUP_ADVANCED</source>
- <translation>Avancé</translation>
+ <translation>Avance</translation>
</message>
<message>
<source>SMESH_3D_ALGO_GROUP_REGULAR</source>
- <translation>Volumes réguliers</translation>
+ <translation>Volumes reguliers</translation>
</message>
<message>
<source>SMESH_3D_ALGO_GROUP_FREE</source>
</message>
<message>
<source>SMESH_3D_ALGO_GROUP_ADVANCED</source>
- <translation>Avancé</translation>
+ <translation>Avance</translation>
</message>
</context>
<context>
<name>SMESHGUI_AddMeshElementDlg</name>
<message>
<source>NB_ADDED</source>
- <translation>%1 éléments ont été ajoutés car des éléments 0D
-étaient déjà présents sur les nœuds séléctionnés.</translation>
+ <translation>%1 elements ont ete ajoutes car des elements 0D
+etaient deja presents sur les noeuds selectionnes.</translation>
</message>
</context>
<context>
</message>
<message>
<source>DLG_HYPO</source>
- <translation>hypothèse(s)</translation>
+ <translation>hypothese(s)</translation>
</message>
<message>
<source>DLG_ALGO</source>
<name>SMESHGUI</name>
<message>
<source>NOT_A_VTK_VIEWER</source>
- <translation>Cette commande n'est disponible qu'à partir d'une fenêtre VTK.
-Ouvrez une fenêtre VTK et essayez de nouveau</translation>
+ <translation>Cette commande n est disponible qu a partir d une fenetre VTK.
+Ouvrez une fenetre VTK et essayez de nouveau</translation>
</message>
<message>
<source>PREF_AUTO_GROUPS</source>
- <translation>Créer les groupes automatiquement pour l'export MED</translation>
+ <translation>Creer les groupes automatiquement pour l export MED</translation>
</message>
<message>
<source>PREF_SHOW_WARN</source>
- <translation>Affiche un avertissement quand un groupe est exporté</translation>
+ <translation>Affiche un avertissement quand un groupe est exporte</translation>
</message>
<message>
<source>PREF_GROUP_SEGMENT_LENGTH</source>
- <translation>Paramètres automatiques</translation>
+ <translation>Parametres automatiques</translation>
</message>
<message>
<source>PREF_SEGMENT_LENGTH</source>
- <translation>Ratio de la diagonale de la boîte englobante / taille maximale</translation>
+ <translation>Ratio de la diagonale de la boite englobante / taille maximale</translation>
</message>
<message>
<source>PREF_NB_SEGMENTS</source>
- <translation>Nombre de segments par défaut</translation>
+ <translation>Nombre de segments par defaut</translation>
</message>
<message>
<source>SMESH_PREF_MESH_LOADING</source>
</message>
<message>
<source>PREF_FORGET_MESH_AT_HYP_MODIF</source>
- <translation>Ne pas charger le maillage du fichier d'étude à la modification d'une hypothèse</translation>
+ <translation>Ne pas charger le maillage du fichier d etude a la modification d une hypothese</translation>
</message>
<message>
<source>PREF_AUTO_UPDATE</source>
- <translation>Mettre à jour automatiquement</translation>
+ <translation>Mettre a jour automatiquement</translation>
</message>
<message>
<source>PREF_UPDATE_LIMIT</source>
- <translation>Limite de taille (nombre d'éléments)</translation>
+ <translation>Limite de taille (nombre d elements)</translation>
</message>
<message>
<source>PREF_UPDATE_LIMIT_NOLIMIT</source>
</message>
<message>
<source>PREF_INCREMENTAL_LIMIT</source>
- <translation>Vérification de la limite incrémentale</translation>
+ <translation>Verification de la limite incrementale</translation>
</message>
<message>
<source>PREF_BACKFACE</source>
- <translation>Couleur de face arrière</translation>
+ <translation>Couleur de face arriere</translation>
</message>
<message>
<source>PREF_VOLUME</source>
</message>
<message>
<source>PREF_REVERSEDVOLUME</source>
- <translation>Couleur de volume inversé</translation>
+ <translation>Couleur de volume inverse</translation>
</message>
<message>
<source>PREF_WIREFRAME</source>
</message>
<message>
<source>PREF_SELECTION</source>
- <translation>Couleur de sélection</translation>
+ <translation>Couleur de selection</translation>
</message>
<message>
<source>PREF_PRE_SELECTION</source>
- <translation>Couleur de pré-sélection</translation>
+ <translation>Couleur de pre-selection</translation>
</message>
<message>
<source>PREF_COLOR</source>
</message>
<message>
<source>PREF_DISPLAY_ENTITY</source>
- <translation>Eléments à visualiser</translation>
+ <translation>Elements a visualiser</translation>
</message>
<message>
<source>QUADRATIC_REPRESENT_MODE_GROUP</source>
- <translation>Mode des éléments quadratiques 2D par défaut</translation>
+ <translation>Mode des elements quadratiques 2D par defaut</translation>
</message>
<message>
<source>QUADRATIC_REPRESENT_MODE</source>
- <translation>Représentation des éléments quadratiques 2D</translation>
+ <translation>Representation des elements quadratiques 2D</translation>
</message>
<message>
<source>MAX_ARC_ANGLE</source>
</message>
<message>
<source>PREF_DISPLAY_MODE</source>
- <translation>Mode de visualisation par défaut</translation>
+ <translation>Mode de visualisation par defaut</translation>
</message>
<message>
<source>PREF_ELEMENTS</source>
- <translation>Eléments</translation>
+ <translation>Elements</translation>
</message>
<message>
<source>PREF_ELEMENT_COLOR</source>
- <translation>Couleur d'élément</translation>
+ <translation>Couleur d element</translation>
</message>
<message>
<source>PREF_FILL</source>
</message>
<message>
<source>PREF_PREVIEW_COLOR</source>
- <translation>Couleur de prévisualisation</translation>
+ <translation>Couleur de previsualisation</translation>
</message>
<message>
<source>PREF_NOTIFY_MODE</source>
- <translation>Montrer la notification sur le résultat de calcul</translation>
+ <translation>Montrer la notification sur le resultat de calcul</translation>
</message>
<message>
<source>PREF_NOTIFY_NEVER</source>
</message>
<message>
<source>PREF_ELEM_INFO</source>
- <translation>Information des éléments du maillage</translation>
+ <translation>Information des elements du maillage</translation>
</message>
<message>
<source>PREF_ELEM_INFO_SIMPLE</source>
</message>
<message>
<source>PREF_ELEM_INFO_GRP_DETAILS</source>
- <translation>Afficher les détails des groupes dans la page d'information de dl'élément</translation>
+ <translation>Afficher les details des groupes dans la page d information de dl element</translation>
</message>
<message>
<source>PREF_DUMP_BASE_INFO</source>
</message>
<message>
<source>PREF_DUMP_ELEM_INFO</source>
- <translation>Copier les informations de l'élément</translation>
+ <translation>Copier les informations de l element</translation>
</message>
<message>
<source>PREF_DUMP_ADD_INFO</source>
</message>
<message>
<source>PREF_DUMP_CTRL_INFO</source>
- <translation>Copier les informations des contrôles</translation>
+ <translation>Copier les informations des controles</translation>
</message>
<message>
<source>PREF_GPP_NODES_LIMIT</source>
- <translation>Calcul automatique du nombre de nœuds: limite</translation>
+ <translation>Calcul automatique du nombre de noeuds: limite</translation>
</message>
<message>
<source>PREF_CTRL_LIMIT</source>
- <translation>Contrôle automatique des limites du calcul</translation>
+ <translation>Controle automatique des limites du calcul</translation>
</message>
<message>
<source>SMESH_PREF_GROUP_PRECISION</source>
- <translation>Précision des champs d'entrée</translation>
+ <translation>Precision des champs d entree</translation>
</message>
<message>
<source>SMESH_PREF_GROUP_PREVIEW</source>
- <translation>Prévisualisation</translation>
+ <translation>Previsualisation</translation>
</message>
<message>
<source>PREF_GROUP_ELEMENTS</source>
- <translation>Eléments</translation>
+ <translation>Elements</translation>
</message>
<message>
<source>PREF_GROUP_EXPORT</source>
</message>
<message>
<source>PREF_GROUP_NODES</source>
- <translation>Nœuds</translation>
+ <translation>Noeuds</translation>
</message>
<message>
<source>PREF_GROUP_GROUPS</source>
</message>
<message>
<source>PREF_GRP_DEF_COLOR</source>
- <translation>Couleur par défaut</translation>
+ <translation>Couleur par defaut</translation>
</message>
<message>
<source>PREF_GROUP_PRECISION</source>
- <translation>Précision</translation>
+ <translation>Precision</translation>
</message>
<message>
<source>PREF_GROUP_PRESELECTION</source>
- <translation>Présélection</translation>
+ <translation>Preselection</translation>
</message>
<message>
<source>PREF_GROUP_QUALITY</source>
- <translation>Contrôles de qualité</translation>
+ <translation>Controles de qualite</translation>
</message>
<message>
<source>PREF_GROUP_SELECTION</source>
- <translation>Sélection</translation>
+ <translation>Selection</translation>
</message>
<message>
<source>PREF_GROUP_INFO</source>
</message>
<message>
<source>PREF_HIGHLIGHT_COLOR</source>
- <translation>Couleur de sélection</translation>
+ <translation>Couleur de selection</translation>
</message>
<message>
<source>PREF_LABELS_COLOR</source>
- <translation>Couleur des étiquettes</translation>
+ <translation>Couleur des etiquettes</translation>
</message>
<message>
<source>PREF_MARKER_SCALE</source>
</message>
<message>
<source>PREF_NODES</source>
- <translation>Nœuds</translation>
+ <translation>Noeuds</translation>
</message>
<message>
<source>PREF_OBJECTS</source>
</message>
<message>
<source>PREF_OBJECT_COLOR</source>
- <translation>Couleur d'objet</translation>
+ <translation>Couleur d objet</translation>
</message>
<message>
<source>PREF_OUTLINE</source>
</message>
<message>
<source>PREF_PRECISION_USE</source>
- <translation>Utiliser la précision</translation>
+ <translation>Utiliser la precision</translation>
</message>
<message>
<source>PREF_PRECISION_VALUE</source>
- <translation>Nombre de chiffres après la virgule</translation>
+ <translation>Nombre de chiffres apres la virgule</translation>
</message>
<message>
<source>PREF_EQUAL_NODES_TOL</source>
- <translation>Tolérance des nœuds doubles</translation>
+ <translation>Tolerance des noeuds doubles</translation>
</message>
<message>
<source>PREF_RENUMBER</source>
- <translation>Renuméroter automatiquement</translation>
+ <translation>Renumeroter automatiquement</translation>
</message>
<message>
<source>PREF_SHRINK_COEFF</source>
</message>
<message>
<source>PREF_TAB_GENERAL</source>
- <translation>Général</translation>
+ <translation>General</translation>
</message>
<message>
<source>PREF_TAB_MESH</source>
</message>
<message>
<source>PREF_TAB_SELECTION</source>
- <translation>Sélection</translation>
+ <translation>Selection</translation>
</message>
<message>
<source>PREF_TITLE_COLOR</source>
</message>
<message>
<source>PREF_COLOR_0D</source>
- <translation>Couleur d'elément 0D</translation>
+ <translation>Couleur d element 0D</translation>
</message>
<message>
<source>PREF_SIZE_0D</source>
- <translation>Taille des éléments 0D</translation>
+ <translation>Taille des elements 0D</translation>
</message>
<message>
<source>PREF_BALL_COLOR</source>
</message>
<message>
<source>PREF_BALL_DIAMETER</source>
- <translation>Diamètre par défaut des éléments particulaires</translation>
+ <translation>Diametre par defaut des elements particulaires</translation>
</message>
<message>
<source>PREF_BALL_SIZE</source>
- <translation>Taille des éléments particulaires</translation>
+ <translation>Taille des elements particulaires</translation>
</message>
<message>
<source>PREF_BALL_SCALE</source>
- <translation>Facteur d'échelle des éléments particulaires</translation>
+ <translation>Facteur d echelle des elements particulaires</translation>
</message>
<message>
<source>PREF_WIDTH</source>
</message>
<message>
<source>PREF_PREVIEW_CHUNK_SIZE</source>
- <translation>Taille des blocs pour la prévisualisation des sous-shapes</translation>
+ <translation>Taille des blocs pour la previsualisation des sous-shapes</translation>
</message>
</context>
<context>
</message>
<message>
<source>SELECT_ALL</source>
- <translation>Tout sélectionner</translation>
+ <translation>Tout selectionner</translation>
</message>
</context>
<context>
<name>SMESHGUI_Add0DElemsOnAllNodesDlg</name>
<message>
<source>CAPTION</source>
- <translation>Créer des éléments 0D sur des noeuds</translation>
+ <translation>Creer des elements 0D sur des noeuds</translation>
</message>
<message>
<source>OBJ_BTN</source>
</message>
<message>
<source>NB_NEW_0D</source>
- <translation>%1 éléments 0D créés</translation>
+ <translation>%1 elements 0D crees</translation>
</message>
</context>
<context>
<name>SMESHGUI_Add0DElemsOnAllNodesOp</name>
<message>
<source>NB_NEW_0D</source>
- <translation>%1 éléments 0D créés</translation>
+ <translation>%1 elements 0D crees</translation>
</message>
</context>
<context>
<name>SMESHGUI_AddQuadraticElementDlg</name>
<message>
<source>SMESH_ADD_QUADRATIC_EDGE</source>
- <translation>Ajouter une arête quadratique</translation>
+ <translation>Ajouter une arete quadratique</translation>
</message>
<message>
<source>SMESH_ADD_QUADRATIC_HEXAHEDRON</source>
- <translation>Ajouter un hexaèdre quadratique</translation>
+ <translation>Ajouter un hexaedre quadratique</translation>
</message>
<message>
<source>SMESH_ADD_TRIQUADRATIC_HEXAHEDRON</source>
- <translation>Ajouter un hexaèdre triquadratique</translation>
+ <translation>Ajouter un hexaedre triquadratique</translation>
</message>
<message>
<source>SMESH_ADD_QUADRATIC_PENTAHEDRON</source>
- <translation>Ajouter un pentaèdre quadratique</translation>
+ <translation>Ajouter un pentaedre quadratique</translation>
</message>
<message>
<source>SMESH_ADD_BIQUADRATIC_PENTAHEDRON</source>
- <translation>Ajouter un pentaèdre biquadratique</translation>
+ <translation>Ajouter un pentaedre biquadratique</translation>
</message>
<message>
<source>SMESH_ADD_QUADRATIC_PYRAMID</source>
</message>
<message>
<source>SMESH_ADD_QUADRATIC_TETRAHEDRON</source>
- <translation>Ajouter un tétraèdre quadratique</translation>
+ <translation>Ajouter un tetraedre quadratique</translation>
</message>
<message>
<source>SMESH_ADD_QUADRATIC_TRIANGLE</source>
</message>
<message>
<source>SMESH_CORNER_NODES</source>
- <translation>Nœuds angulaires:</translation>
+ <translation>Noeuds angulaires:</translation>
</message>
<message>
<source>SMESH_MIDFACE_NODES</source>
- <translation>Nœuds à mi-face :</translation>
+ <translation>Noeuds a mi-face :</translation>
</message>
<message>
<source>SMESH_CENTER_NODE</source>
- <translation>Nœud central:</translation>
+ <translation>Noeud central:</translation>
</message>
<message>
<source>SMESH_FIRST</source>
</message>
<message>
<source>COMPOUND_MESH</source>
- <translation>Maillage d'assemblage</translation>
+ <translation>Maillage d assemblage</translation>
</message>
<message>
<source>CREATE_COMMON_GROUPS</source>
- <translation>Créer des groupes communs pour les maillages initiaux</translation>
+ <translation>Creer des groupes communs pour les maillages initiaux</translation>
</message>
<message>
<source>MERGE_NODES_AND_ELEMENTS</source>
- <translation>Fusionner les nœuds et les éléments coïncidents</translation>
+ <translation>Fusionner les noeuds et les elements coincidents</translation>
</message>
<message>
<source>MESHES</source>
</message>
<message>
<source>RESULT_NAME</source>
- <translation>Nom du résultat</translation>
+ <translation>Nom du resultat</translation>
</message>
<message>
<source>UNITE</source>
- <translation>Réunir</translation>
+ <translation>Reunir</translation>
</message>
</context>
<context>
<name>SMESHGUI_ChangeOrientationDlg</name>
<message>
<source>CAPTION</source>
- <translation>Modifier l'orientation</translation>
+ <translation>Modifier l orientation</translation>
</message>
</context>
<context>
<name>SMESHGUI_ComputeDlg</name>
<message>
<source>CAPTION</source>
- <translation>Le calcul du maillage a échoué</translation>
+ <translation>Le calcul du maillage a echoue</translation>
</message>
<message>
<source>CONSTRUCTOR</source>
</message>
<message>
<source>MEMORY_LACK</source>
- <translation>Problème d'allocation de mémoire</translation>
+ <translation>Probleme d allocation de memoire</translation>
</message>
<message>
<source>COMPUTE_WARNING</source>
</message>
<message>
<source>GROUP_OF_BAD_MESH</source>
- <translation>Grouper les mauvais éléments</translation>
+ <translation>Grouper les mauvais elements</translation>
</message>
</context>
<context>
<name>SMESHGUI_PrecomputeDlg</name>
<message>
<source>CAPTION</source>
- <translation>Prévisualiser et calculer le maillage</translation>
+ <translation>Previsualiser et calculer le maillage</translation>
</message>
<message>
<source>PREVIEW</source>
- <translation>Prévisualiser</translation>
+ <translation>Previsualiser</translation>
</message>
<message>
<source>PREVIEW_1</source>
<name>SMESHGUI_PrecomputeOp</name>
<message>
<source>CLEAR_SUBMESH_QUESTION</source>
- <translation>Des sous-maillages temporaires ont été créés sur la géométrie sélectionnée
-au cours de l'opération de prévisualisation.
+ <translation>Des sous-maillages temporaires ont ete crees sur la geometrie selectionnee
+au cours de l operation de previsualisation.
Voulez-vous supprimer toutes ces sous-maillages ?</translation>
</message>
<message>
<source>SMESH_WRN_NOTHING_PREVIEW</source>
- <translation>La prévisualisation du maillage n'est pas disponible</translation>
+ <translation>La previsualisation du maillage n est pas disponible</translation>
</message>
<message>
<source>SMESH_REJECT_MESH_ORDER</source>
- <translation>La priorité des sous-maillages a été changée au cours de la prévisualisation.
-Voulez-vous restaurer la priorité initiale ?</translation>
+ <translation>La priorite des sous-maillages a ete changee au cours de la previsualisation.
+Voulez-vous restaurer la priorite initiale ?</translation>
</message>
</context>
<context>
<name>SMESHGUI_SplitBiQuadDlg</name>
<message>
<source>CAPTION</source>
- <translation>Eclater les éléments bi-quadratiques en éléments linéaires</translation>
+ <translation>Eclater les elements bi-quadratiques en elements lineaires</translation>
</message>
<message>
<source>MESH</source>
<name>SMESHGUI_SplitBiQuadOp</name>
<message>
<source>MESH_IS_NOT_SELECTED</source>
- <translation>Pas d'éléments à éclater.
-Sélectionner des éléments et essayer encore</translation>
+ <translation>Pas d'elements a eclater.
+Selectionner des elements et essayer encore</translation>
</message>
<message>
<source>REF_IS_NULL</source>
- <translation>Aucun maillage valide n'a été sélectionné</translation>
+ <translation>Aucun maillage valide n'a ete selectionne</translation>
</message>
<message>
<source>DIFFERENT_MESHES</source>
- <translation>Les éléments sélectionnés appartiennent à différents maillages</translation>
+ <translation>Les elements selectionnes appartiennent a differents maillages</translation>
</message>
</context>
<context>
</message>
<message>
<source>MEDIUMNDS</source>
- <translation>Nœuds milieux sur la géométrie</translation>
+ <translation>Noeuds milieux sur la geometrie</translation>
</message>
<message>
<source>MESH</source>
</message>
<message>
<source>RADIOBTN_1</source>
- <translation>Convertir en éléments linéaires</translation>
+ <translation>Convertir en elements lineaires</translation>
</message>
<message>
<source>RADIOBTN_2</source>
- <translation>Convertir en éléments quadratiques</translation>
+ <translation>Convertir en elements quadratiques</translation>
</message>
<message>
<source>RADIOBTN_3</source>
</message>
<message>
<source>NON_CONFORM_WARNING</source>
- <translation>Attention: le maillage généré sera a priori non-conforme</translation>
+ <translation>Attention: le maillage genere sera a priori non-conforme</translation>
</message>
</context>
<context>
<name>SMESHGUI_ConvToQuadOp</name>
<message>
<source>MESH_IS_NOT_SELECTED</source>
- <translation>Le maillage n'est pas sélectionné
+ <translation>Le maillage n est pas selectionne
Indiquez-le et essayez de nouveau</translation>
</message>
<message>
<source>REF_IS_NULL</source>
- <translation>Aucun maillage valide n'est sélectionné</translation>
+ <translation>Aucun maillage valide n est selectionne</translation>
</message>
</context>
<context>
</message>
<message>
<source>ERROR_OF_CREATION</source>
- <translation>Une erreur interne s'est produite au cours de la création du motif
-Vérifiez la validité des informations données</translation>
+ <translation>Une erreur interne s est produite au cours de la creation du motif
+Verifiez la validite des informations donnees</translation>
</message>
<message>
<source>ERROR_OF_SAVING</source>
- <translation>Une erreur interne s'est produite au cours de l'enregistrement du motif.
-Vérifiez l'espace de disque disponible et vos droits d'écriture dans ce fichier</translation>
+ <translation>Une erreur interne s est produite au cours de l enregistrement du motif.
+Verifiez l espace de disque disponible et vos droits d ecriture dans ce fichier</translation>
</message>
<message>
<source>ERR_LOADF_CANT_PROJECT</source>
- <translation>Impossible d'appliquer la projection des nœuds vers la face</translation>
+ <translation>Impossible d appliquer la projection des noeuds vers la face</translation>
</message>
<message>
<source>ERR_LOADF_CLOSED_FACE</source>
- <translation>Impossible de créer un motif à partir d'une face avec une arête de couture</translation>
+ <translation>Impossible de creer un motif a partir d une face avec une arete de couture</translation>
</message>
<message>
<source>ERR_LOADF_NARROW_FACE</source>
- <translation>Impossible de créer un motif à partir d'une face étroite</translation>
+ <translation>Impossible de creer un motif a partir d une face etroite</translation>
</message>
<message>
<source>ERR_LOADV_BAD_SHAPE</source>
- <translation>Il n'est possible de créer un motif que d'une coque fermée ou d'un solide avec 6 faces</translation>
+ <translation>Il n est possible de creer un motif que d une coque fermee ou d un solide avec 6 faces</translation>
</message>
<message>
<source>ERR_LOADV_COMPUTE_PARAMS</source>
- <translation>Il est impossible de calculer les paramètres du point</translation>
+ <translation>Il est impossible de calculer les parametres du point</translation>
</message>
<message>
<source>ERR_LOAD_EMPTY_SUBMESH</source>
- <translation>Il n'y a pas d'éléments pour créer de motif</translation>
+ <translation>Il n y a pas d elements pour creer de motif</translation>
</message>
<message>
<source>MESH_OR_SUBMESH</source>
</message>
<message>
<source>PROJECT</source>
- <translation>Projeter les nœuds sur la face</translation>
+ <translation>Projeter les noeuds sur la face</translation>
</message>
<message>
<source>SAVE</source>
<name>SMESHGUI_CreatePolyhedralVolumeDlg</name>
<message>
<source>FACES_BY_NODES</source>
- <translation>Faces par nœuds</translation>
+ <translation>Faces par noeuds</translation>
</message>
<message>
<source>SMESH_POLYEDRE_CREATE_ERROR</source>
- <translation>Erreur de création du polyèdre.</translation>
+ <translation>Erreur de creation du polyedre.</translation>
</message>
<message>
<source>SMESH_POLYEDRE_PREVIEW</source>
- <translation>Prévisualiser le polyèdre</translation>
+ <translation>Previsualiser le polyedre</translation>
</message>
</context>
<context>
<name>SMESHGUI_CuttingOfQuadsDlg</name>
<message>
<source>CAPTION</source>
- <translation>Découpe des quadrangles</translation>
+ <translation>Decoupe des quadrangles</translation>
</message>
<message>
<source>TO_4_TRIA</source>
- <translation>Découpe en 4 triangles</translation>
+ <translation>Decoupe en 4 triangles</translation>
</message>
</context>
<context>
</message>
<message>
<source>NO_SELECTED_GROUPS</source>
- <translation>Il n'y a aucun groupe sélectionné
+ <translation>Il n y a aucun groupe selectionne
Choisissez un groupe et essayez de nouveau</translation>
</message>
<message>
<source>SELECTED_GROUPS</source>
- <translation>Groupes sélectionnés</translation>
+ <translation>Groupes selectionnes</translation>
</message>
</context>
<context>
<name>SMESHGUI_MergeDlg</name>
<message>
<source>COINCIDENT_ELEMENTS</source>
- <translation>Eléments coïncidents</translation>
+ <translation>Elements coincidents</translation>
</message>
<message>
<source>COINCIDENT_NODES</source>
- <translation>Nœuds coïncidents</translation>
+ <translation>Noeuds coincidents</translation>
</message>
<message>
<source>DETECT</source>
- <translation>Détecter</translation>
+ <translation>Detecter</translation>
</message>
<message>
<source>EDIT_SELECTED_NODE_GROUP</source>
- <translation>Editer le groupe sélectionné de noeuds coïncidents</translation>
+ <translation>Editer le groupe selectionne de noeuds coincidents</translation>
</message>
<message>
<source>EDIT_SELECTED_ELEM_GROUP</source>
- <translation>Editer le groupe sélectionné d'éléments coïncidents</translation>
+ <translation>Editer le groupe selectionne d'elements coincidents</translation>
</message>
<message>
<source>SELECT_ALL</source>
- <translation>Tout sélectionner</translation>
+ <translation>Tout selectionner</translation>
</message>
<message>
<source>SHOW_NODES_IDS</source>
- <translation>Afficher les IDs des nœuds doubles</translation>
+ <translation>Afficher les IDs des noeuds doubles</translation>
</message>
<message>
<source>SHOW_ELEMS_IDS</source>
- <translation>Afficher les IDs des éléments doubles</translation>
+ <translation>Afficher les IDs des elements doubles</translation>
</message>
<message>
<source>EXCLUDE_GROUPS</source>
- <translation>Exclure les groupes de la détection</translation>
+ <translation>Exclure les groupes de la detection</translation>
</message>
<message>
<source>SEPARATE_CORNERS_AND_MEDIUM</source>
</message>
<message>
<source>AVOID_MAKING_HOLES</source>
- <translation>Evite de créer des trous</translation>
+ <translation>Evite de creer des trous</translation>
</message>
<message>
<source>KEEP_NODES</source>
- <translation>Les noeuds à conserver pendant la fusion</translation>
+ <translation>Les noeuds a conserver pendant la fusion</translation>
</message>
<message>
<source>GROUP_SUBMESH</source>
<name>SMESHGUI_ExtrusionAlongPathDlg</name>
<message>
<source>BAD_SHAPE_TYPE</source>
- <translation>La géométrie choisie en tant que chemin n'est pas une arête</translation>
+ <translation>La geometrie choisie en tant que chemin n est pas une arete</translation>
</message>
<message>
<source>CANT_GET_TANGENT</source>
- <translation>Impossible d'obtenir la tangente pour un des nœuds du chemin</translation>
+ <translation>Impossible d obtenir la tangente pour un des noeuds du chemin</translation>
</message>
<message>
<source>EXTRUSION_0D</source>
- <translation>Extrusion des éléments 0D</translation>
+ <translation>Extrusion des elements 0D</translation>
</message>
<message>
<source>EXTRUSION_1D</source>
- <translation>Extrusion des éléments 1D</translation>
+ <translation>Extrusion des elements 1D</translation>
</message>
<message>
<source>EXTRUSION_2D</source>
- <translation>Extrusion des éléments 2D</translation>
+ <translation>Extrusion des elements 2D</translation>
</message>
<message>
<source>EXTRUSION_ALONG_PATH</source>
</message>
<message>
<source>EXTR_BAD_STARTING_NODE</source>
- <translation>Nœud de départ du chemin incorrect</translation>
+ <translation>Noeud de depart du chemin incorrect</translation>
</message>
<message>
<source>LINEAR_ANGLES</source>
- <translation>Variation linéaire des angles</translation>
+ <translation>Variation lineaire des angles</translation>
</message>
<message>
<source>NO_ELEMENTS_SELECTED</source>
- <translation>Aucun élément de maillage n'est sélectionné pour l'extrusion</translation>
+ <translation>Aucun element de maillage n est selectionne pour l extrusion</translation>
</message>
<message>
<source>SELECTED_PATH_IS_NOT_EDGE</source>
- <translation>Le maillage du chemin doit être du type arête</translation>
+ <translation>Le maillage du chemin doit etre du type arete</translation>
</message>
<message>
<source>SMESH_ANGLES</source>
</message>
<message>
<source>SMESH_PATH_SHAPE</source>
- <translation>Géométrie (arête)</translation>
+ <translation>Geometrie (arete)</translation>
</message>
<message>
<source>SMESH_PATH_START</source>
- <translation>Nœud de début</translation>
+ <translation>Noeud de debut</translation>
</message>
<message>
<source>SMESH_USE_ANGLES</source>
</message>
<message>
<source>WRONG_ANGLES_NUMBER</source>
- <translation>Le nombre d'angles doit correspondre au nombre des nœuds du chemin</translation>
+ <translation>Le nombre d angles doit correspondre au nombre des noeuds du chemin</translation>
</message>
</context>
<context>
</message>
<message>
<source>EXTRUSION_1D</source>
- <translation>Extrusion des éléments 1D</translation>
+ <translation>Extrusion des elements 1D</translation>
</message>
<message>
<source>EXTRUSION_2D</source>
- <translation>Extrusion des éléments 2D</translation>
+ <translation>Extrusion des elements 2D</translation>
</message>
<message>
<source>EXTRUSION_ALONG_LINE</source>
</message>
<message>
<source>USE_INPUT_ELEMS_ONLY</source>
- <translation>Utilise seulement les éléments d'entrée</translation>
+ <translation>Utilise seulement les elements d'entree</translation>
</message>
<message>
<source>SMESH_SCALES</source>
- <translation>Facteurs d'échelle</translation>
+ <translation>Facteurs d'echelle</translation>
</message>
<message>
<source>LINEAR_SCALES</source>
- <translation>Variation linéaire des facteurs d'échelle</translation>
+ <translation>Variation lineaire des facteurs d'echelle</translation>
</message>
<message>
<source>BASE_POINT</source>
<name>SMESHGUI_FilterDlg</name>
<message>
<source>BAD_SHAPE_NAME</source>
- <translation>Il n'y a pas d'objet géométrique "%1" dans l'étude actuelle
-Sélectionnez un objet valide et essayez de nouveau</translation>
+ <translation>Il n y a pas d objet geometrique "%1" dans l etude actuelle
+Selectionnez un objet valide et essayez de nouveau</translation>
</message>
<message>
<source>CURRENT_DIALOG</source>
</message>
<message>
<source>EDGES_TLT</source>
- <translation>Filtre d'arêtes</translation>
+ <translation>Filtre d aretes</translation>
</message>
<message>
<source>FACES_TLT</source>
</message>
<message>
<source>NODES_TLT</source>
- <translation>Filtre de nœuds</translation>
+ <translation>Filtre de noeuds</translation>
</message>
<message>
<source>ELEM0D_TLT</source>
- <translation>Filtre d'éléments 0D</translation>
+ <translation>Filtre d elements 0D</translation>
</message>
<message>
<source>BALL_TLT</source>
- <translation>Filtre d'éléments particulaires</translation>
+ <translation>Filtre d elements particulaires</translation>
</message>
<message>
<source>SELECTION</source>
- <translation>Sélection initiale</translation>
+ <translation>Selection initiale</translation>
</message>
<message>
<source>SET_IN_VIEWER</source>
- <translation>Insérer le filtre dans la fenêtre 3D</translation>
+ <translation>Inserer le filtre dans la fenetre 3D</translation>
</message>
<message>
<source>SHAPE_IS_NOT_A_CYLINDER</source>
- <translation>"%1" n'est pas une face cylindrique
-Sélectionnez une face cylindrique et essayez de nouveau</translation>
+ <translation>"%1" n est pas une face cylindrique
+Selectionnez une face cylindrique et essayez de nouveau</translation>
</message>
<message>
<source>SHAPE_IS_NOT_A_FACE</source>
- <translation>"%1" n'est pas une face
-Sélectionnez une face et essayez de nouveau</translation>
+ <translation>"%1" n est pas une face
+Selectionnez une face et essayez de nouveau</translation>
</message>
<message>
<source>SHAPE_IS_NOT_A_PLANE</source>
- <translation>"%1" n'est pas un plan
-Sélectionnez un plan et essayez de nouveau</translation>
+ <translation>"%1" n est pas un plan
+Selectionnez un plan et essayez de nouveau</translation>
</message>
<message>
<source>FACE_ID_NOT_SELECTED</source>
- <translation>Aucune face de maillage n'est sélectionnée.
+ <translation>Aucune face de maillage n est selectionnee.
Indiquez-la et essayez de nouveau</translation>
</message>
<message>
<source>NOT_FACE_ID</source>
- <translation>"%1" ne correspond à aucun ID valide d'une face du maillage.
-Sélectionnez une face et essayez de nouveau</translation>
+ <translation>"%1" ne correspond a aucun ID valide d une face du maillage.
+Selectionnez une face et essayez de nouveau</translation>
</message>
<message>
<source>SOURCE</source>
</message>
<message>
<source>TLT</source>
- <translation>Filtre de sélection</translation>
+ <translation>Filtre de selection</translation>
</message>
<message>
<source>VOLUMES_TLT</source>
</message>
<message>
<source>ADD_TO_TLT</source>
- <translation>Ajouter le filtre de sélection à la librairie</translation>
+ <translation>Ajouter le filtre de selection a la librairie</translation>
</message>
<message>
<source>ALL_FILES_FILTER</source>
</message>
<message>
<source>ASSIGN_NEW_NAME</source>
- <translation>La librairie déjà contient un filtre avec le nom "%1"
-Le nouveau nom "%2" est attribué au filtre ajouté</translation>
+ <translation>La librairie deja contient un filtre avec le nom "%1"
+Le nouveau nom "%2" est attribue au filtre ajoute</translation>
</message>
<message>
<source>COPY_FROM_TLT</source>
- <translation>Copier le filtre de la sélection de la librairie</translation>
+ <translation>Copier le filtre de la selection de la librairie</translation>
</message>
<message>
<source>DELETE</source>
</message>
<message>
<source>EDGE</source>
- <translation>Arête</translation>
+ <translation>Arete</translation>
</message>
<message>
<source>EDIT_LIB_TLT</source>
- <translation>Librairie des filtres de sélection</translation>
+ <translation>Librairie des filtres de selection</translation>
</message>
<message>
<source>ELEMENT</source>
- <translation>Elément</translation>
+ <translation>Element</translation>
</message>
<message>
<source>EMPTY_FILTER_NAME</source>
</message>
<message>
<source>ERROR_FILTER_NAME</source>
- <translation>Le nom du filtre n'est pas unique
+ <translation>Le nom du filtre n est pas unique
Indiquez un autre nom</translation>
</message>
<message>
<source>ERROR_LOAD</source>
<translation>Il est impossible de charger la librairie
-Vérifiez le nom du fichier de la librairie et ses propriétés</translation>
+Verifiez le nom du fichier de la librairie et ses proprietes</translation>
</message>
<message>
<source>ERROR_OF_ADDING</source>
- <translation>Une erreur interne s'est produite à l'addition d'un nouveau filtre dans la librairie.
-Vérifiez la validité des informations données</translation>
+ <translation>Une erreur interne s est produite a l addition d un nouveau filtre dans la librairie.
+Verifiez la validite des informations donnees</translation>
</message>
<message>
<source>ERROR_OF_COPYING</source>
- <translation>Une erreur interne s'est produite à la copie d'un filtre depuis la librairie.
-Vérifiez la validité des informations données</translation>
+ <translation>Une erreur interne s est produite a la copie d un filtre depuis la librairie.
+Verifiez la validite des informations donnees</translation>
</message>
<message>
<source>ERROR_OF_DELETING</source>
- <translation>Une erreur interne s'est produite lors de la suppression d'un filtre depuis la librairie.
-Vérifiez la validité des informations données</translation>
+ <translation>Une erreur interne s est produite lors de la suppression d un filtre depuis la librairie.
+Verifiez la validite des informations donnees</translation>
</message>
<message>
<source>ERROR_OF_EDITING</source>
- <translation>Une erreur interne s'est produite à l'édition d'un filtre dans la librairie.
-Vérifiez la validité des informations données</translation>
+ <translation>Une erreur interne s est produite a l edition d un filtre dans la librairie.
+Verifiez la validite des informations donnees</translation>
</message>
<message>
<source>ERROR_OF_SAVING</source>
- <translation>Une erreur s'est produite à la sauvegarde de la librairie des filtres.
-Vérifiez la validité des informations données</translation>
+ <translation>Une erreur s est produite a la sauvegarde de la librairie des filtres.
+Verifiez la validite des informations donnees</translation>
</message>
<message>
<source>FACE</source>
</message>
<message>
<source>LIBRARY_IS_NOT_LOADED</source>
- <translation>La librairie n'est pas ouverte. Ouvrez la librairie et essayez de nouveau</translation>
+ <translation>La librairie n est pas ouverte. Ouvrez la librairie et essayez de nouveau</translation>
</message>
<message>
<source>LIB_NAME</source>
</message>
<message>
<source>NODE</source>
- <translation>Nœud</translation>
+ <translation>Noeud</translation>
</message>
<message>
<source>NO_PERMISSION</source>
- <translation>Vous n'avez pas la permission d'écrire dans ce fichier</translation>
+ <translation>Vous n avez pas la permission d ecrire dans ce fichier</translation>
</message>
<message>
<source>OPEN_LIBRARY</source>
</message>
<message>
<source>SELECTION</source>
- <translation>Sélection</translation>
+ <translation>Selection</translation>
</message>
<message>
<source>VOLUME</source>
</message>
<message>
<source>ADDITIONAL_PARAMETERS</source>
- <translation>Paramètres supplémentaires</translation>
+ <translation>Parametres supplementaires</translation>
</message>
<message>
<source>ADD_TO</source>
- <translation>Ajouter à...</translation>
+ <translation>Ajouter a...</translation>
</message>
<message>
<source>AND</source>
</message>
<message>
<source>BAD_ORIENTED_VOLUME</source>
- <translation>Volume mal orienté</translation>
+ <translation>Volume mal oriente</translation>
</message>
<message>
<source>BARE_BORDER_VOLUME</source>
- <translation>Volumes avec éléments de peau 2D manquants</translation>
+ <translation>Volumes avec elements de peau 2D manquants</translation>
</message>
<message>
<source>BARE_BORDER_FACE</source>
- <translation>Faces avec éléments de peau 1D manquants</translation>
+ <translation>Faces avec elements de peau 1D manquants</translation>
</message>
<message>
<source>OVER_CONSTRAINED_VOLUME</source>
</message>
<message>
<source>BELONG_TO_GENSURFACE</source>
- <translation>Appartient à la surface</translation>
+ <translation>Appartient a la surface</translation>
</message>
<message>
<source>BELONG_TO_GEOM</source>
- <translation>Appartient à la géométrie</translation>
+ <translation>Appartient a la geometrie</translation>
</message>
<message>
<source>BELONG_TO_PLANE</source>
</message>
<message>
<source>BINARY</source>
- <translation>Opérateur logique</translation>
+ <translation>Operateur logique</translation>
</message>
<message>
<source>CLEAR</source>
</message>
<message>
<source>CONNECTED_ELEMS</source>
- <translation>Eléments d'un domaine</translation>
+ <translation>Elements d un domaine</translation>
</message>
<message>
<source>NODE_CONN_NUMBER</source>
- <translation>Nombre de connectivité</translation>
+ <translation>Nombre de connectivite</translation>
</message>
<message>
<source>NUMBEROFNODESINELEMENT</source>
- <translation>Nombre de noeuds dans l'élément</translation>
+ <translation>Nombre de noeuds dans l element</translation>
</message>
<message>
<source>COPY_FROM</source>
</message>
<message>
<source>CRITERION</source>
- <translation>Critère</translation>
+ <translation>Critere</translation>
</message>
<message>
<source>BALLS</source>
</message>
<message>
<source>ELEM0D</source>
- <translation>Eléments 0D</translation>
+ <translation>Elements 0D</translation>
</message>
<message>
<source>EDGES</source>
- <translation>Arêtes</translation>
+ <translation>Aretes</translation>
</message>
<message>
<source>EQUAL_TO</source>
- <translation>Egal à</translation>
+ <translation>Egal a</translation>
</message>
<message>
<source>ERROR</source>
- <translation>La valeur du seuil n'est pas valide.
+ <translation>La valeur du seuil n est pas valide.
Entrez une valeur correcte et essayez de nouveau</translation>
</message>
<message>
</message>
<message>
<source>FREE_EDGES</source>
- <translation>Arêtes libres</translation>
+ <translation>Aretes libres</translation>
</message>
<message>
<source>FREE_NODES</source>
- <translation>Nœuds isolés</translation>
+ <translation>Noeuds isoles</translation>
</message>
<message>
<source>FREE_FACES</source>
</message>
<message>
<source>INSERT</source>
- <translation>Insérer</translation>
+ <translation>Inserer</translation>
</message>
<message>
<source>LENGTH</source>
</message>
<message>
<source>LESS_THAN</source>
- <translation>Inférieur à ...</translation>
+ <translation>Inferieur a ...</translation>
</message>
<message>
<source>LYING_ON_GEOM</source>
- <translation>Repose sur la géométrie</translation>
+ <translation>Repose sur la geometrie</translation>
</message>
<message>
<source>MAX_ELEMENT_LENGTH_2D</source>
- <translation>Diamètre d'éléments 2D</translation>
+ <translation>Diametre d elements 2D</translation>
</message>
<message>
<source>MAX_ELEMENT_LENGTH_3D</source>
- <translation>Diamètre d'éléments 3D</translation>
+ <translation>Diametre d elements 3D</translation>
</message>
<message>
<source>MINIMUM_ANGLE</source>
</message>
<message>
<source>MORE_THAN</source>
- <translation>Supérieur à ...</translation>
+ <translation>Superieur a ...</translation>
</message>
<message>
<source>MULTIEDGES_ERROR</source>
- <translation>La valeur de seuil des bords multi-connectés ne peut pas être égal à 1
+ <translation>La valeur de seuil des bords multi-connectes ne peut pas etre egal a 1
Entrez une valeur correcte et essayez de nouveau</translation>
</message>
<message>
<source>GROUPCOLOR_ERROR</source>
- <translation>Impossible d'identifier la couleur du groupe
+ <translation>Impossible d identifier la couleur du groupe
Entrez une valeur correcte et essayez de nouveau</translation>
</message>
<message>
<source>MULTI_BORDERS</source>
- <translation>Bords multi-connectés</translation>
+ <translation>Bords multi-connectes</translation>
</message>
<message>
<source>NODES</source>
- <translation>Nœuds</translation>
+ <translation>Noeuds</translation>
</message>
<message>
<source>NOT</source>
</message>
<message>
<source>RANGE_OF_IDS</source>
- <translation>Liste d'IDs</translation>
+ <translation>Liste d IDs</translation>
</message>
<message>
<source>REMOVE</source>
</message>
<message>
<source>TAPER</source>
- <translation>Cône</translation>
+ <translation>Cone</translation>
</message>
<message>
<source>THRESHOLD_VALUE</source>
</message>
<message>
<source>UNARY</source>
- <translation>Négation</translation>
+ <translation>Negation</translation>
</message>
<message>
<source>VOLUMES</source>
</message>
<message>
<source>WARPING</source>
- <translation>Déformation</translation>
+ <translation>Deformation</translation>
</message>
<message>
<source>LINEAR</source>
- <translation>Linéaire</translation>
+ <translation>Lineaire</translation>
</message>
<message>
<source>GROUP_COLOR</source>
</message>
<message>
<source>ELEMENTS</source>
- <translation>Eléments</translation>
+ <translation>Elements</translation>
</message>
<message>
<source>ENTITY_TYPE</source>
- <translation>Type de l'entité</translation>
+ <translation>Type de l entite</translation>
</message>
<message>
<source>ENTITY_TYPE_0</source>
</message>
<message>
<source>GEOM_TYPE</source>
- <translation>Type de géométrie</translation>
+ <translation>Type de geometrie</translation>
</message>
<message>
<source>GEOM_TYPE_0</source>
</message>
<message>
<source>GEOM_TYPE_1</source>
- <translation>Arête</translation>
+ <translation>Arete</translation>
</message>
<message>
<source>GEOM_TYPE_2</source>
</message>
<message>
<source>GEOM_TYPE_5</source>
- <translation>Tétraèdre</translation>
+ <translation>Tetraedre</translation>
</message>
<message>
<source>GEOM_TYPE_6</source>
</message>
<message>
<source>GEOM_TYPE_7</source>
- <translation>Hexaèdre</translation>
+ <translation>Hexaedre</translation>
</message>
<message>
<source>GEOM_TYPE_8</source>
- <translation>Pentaèdre</translation>
+ <translation>Pentaedre</translation>
</message>
<message>
<source>GEOM_TYPE_9</source>
</message>
<message>
<source>GEOM_TYPE_10</source>
- <translation>Polyèdre</translation>
+ <translation>Polyedre</translation>
</message>
<message>
<source>GEOM_TYPE_11</source>
</message>
<message>
<source>DIFF_MESHES</source>
- <translation>Les arguments de l'opération ne sont pas indiqués correctement
-Les groupes correspondent à des maillages différents
+ <translation>Les arguments de l operation ne sont pas indiques correctement
+Les groupes correspondent a des maillages differents
Donnez des arguments valides et essayez de nouveau</translation>
</message>
<message>
<source>DIFF_TYPES</source>
- <translation>Les arguments de l'opération ne sont pas indiqués correctement
-Les groupes contiennent des éléments de types différents
+ <translation>Les arguments de l operation ne sont pas indiques correctement
+Les groupes contiennent des elements de types differents
Donnez des arguments valides et essayez de nouveau</translation>
</message>
<message>
</message>
<message>
<source>INCORRECT_ARGUMENTS</source>
- <translation>Les arguments de l'opération ne sont pas indiqués
+ <translation>Les arguments de l operation ne sont pas indiques
Indiquez-les et essayez de nouveau</translation>
</message>
<message>
<source>RESULT</source>
- <translation>Résultat</translation>
+ <translation>Resultat</translation>
</message>
<message>
<source>OBJECT_1</source>
</message>
<message>
<source>RESULT_NAME</source>
- <translation>Nom du résultat</translation>
+ <translation>Nom du resultat</translation>
</message>
<message>
<source>TOOL_OBJECT</source>
<name>SMESHGUI_DimGroupDlg</name>
<message>
<source>CREATE_GROUP_OF_UNDERLYING_ELEMS</source>
- <translation>Créer un groupe d'entités sous-jacentes</translation>
+ <translation>Creer un groupe d entites sous-jacentes</translation>
</message>
<message>
<source>ELEMENTS_TYPE</source>
- <translation>Type d'éléments </translation>
+ <translation>Type d elements </translation>
</message>
<message>
<source>UNDERLYING_ENTITIES_ONLY</source>
- <translation>Inclure les entités sous-jacentes uniquement</translation>
+ <translation>Inclure les entites sous-jacentes uniquement</translation>
</message>
<message>
<source>NUMBER_OF_COMMON_NODES</source>
- <translation>Nombre de nœuds en commun</translation>
+ <translation>Nombre de noeuds en commun</translation>
</message>
<message>
<source>ALL</source>
</message>
<message>
<source>MAJORITY</source>
- <translation>La majorité</translation>
+ <translation>La majorite</translation>
</message>
</context>
<context>
<name>SMESHGUI_CutGroupsDlg</name>
<message>
<source>CUT_OF_GROUPS</source>
- <translation>Différence de groupes</translation>
+ <translation>Difference de groupes</translation>
</message>
<message>
<source>MAIN_OBJECT</source>
<name>SMESHGUI_MakeNodeAtPointDlg</name>
<message>
<source>AUTO_SEARCH</source>
- <translation>Trouver le nœud le plus proche de la destination</translation>
+ <translation>Trouver le noeud le plus proche de la destination</translation>
</message>
<message>
<source>CAPTION</source>
- <translation>Déplacer un nœud</translation>
+ <translation>Deplacer un noeud</translation>
</message>
<message>
<source>DESTINATION</source>
</message>
<message>
<source>MOVE_NODE</source>
- <translation>Déplacer un nœud</translation>
+ <translation>Deplacer un noeud</translation>
</message>
<message>
<source>METHOD</source>
- <translation>Méthode</translation>
+ <translation>Methode</translation>
</message>
<message>
<source>NODE_2MOVE</source>
- <translation>Nœud à déplacer</translation>
+ <translation>Noeud a deplacer</translation>
</message>
<message>
<source>NODE_2MOVE_ID</source>
<name>SMESHGUI_MakeNodeAtPointOp</name>
<message>
<source>INVALID_ID</source>
- <translation>L'ID du nœud est invalide</translation>
+ <translation>L ID du noeud est invalide</translation>
</message>
<message>
<source>INVALID_MESH</source>
- <translation>Le maillage à modifier n'est pas sélectionné</translation>
+ <translation>Le maillage a modifier n est pas selectionne</translation>
</message>
</context>
<context>
</message>
<message>
<source>CAPTION</source>
- <translation>Trouver un élément par un point</translation>
+ <translation>Trouver un element par un point</translation>
</message>
<message>
<source>CREATE_NEW_METHOD</source>
- <translation>Créer un nœud</translation>
+ <translation>Creer un noeud</translation>
</message>
<message>
<source>MESH_PASS_THROUGH_POINT</source>
- <translation>Créer un nœud au point</translation>
+ <translation>Creer un noeud au point</translation>
</message>
<message>
<source>METHOD</source>
- <translation>Méthode</translation>
+ <translation>Methode</translation>
</message>
<message>
<source>MOVE_EXISTING_METHOD</source>
- <translation>Déplacer un nœud</translation>
+ <translation>Deplacer un noeud</translation>
</message>
<message>
<source>NODE_2MOVE</source>
- <translation>Nœud à déplacer</translation>
+ <translation>Noeud a deplacer</translation>
</message>
<message>
<source>NODE_2MOVE_ID</source>
<name>SMESHGUI_MeshDlg</name>
<message>
<source>CREATE_MESH</source>
- <translation>Créer un maillage</translation>
+ <translation>Creer un maillage</translation>
</message>
<message>
<source>CREATE_SUBMESH</source>
- <translation>Créer un sous-maillage</translation>
+ <translation>Creer un sous-maillage</translation>
</message>
<message>
<source>DIM_0D</source>
</message>
<message>
<source>GEOMETRY</source>
- <translation>Géométrie</translation>
+ <translation>Geometrie</translation>
</message>
<message>
<source>HYPOTHESES_SETS</source>
- <translation>Attribuer un jeu d'hypothèses</translation>
+ <translation>Attribuer un jeu d hypotheses</translation>
</message>
<message>
<source>MESH</source>
<name>SMESHGUI_MeshOp</name>
<message>
<source>ALGORITHM_WITHOUT_HYPOTHESIS</source>
- <translation>L'algorithme pour la dimension %1 est défini mais l'hypothèse ne l'est pas</translation>
+ <translation>L algorithme pour la dimension %1 est defini mais l hypothese ne l est pas</translation>
</message>
<message>
<source>EDIT_SUBMESH_QUESTION</source>
- <translation>Un sous-maillage existe déjà sur la géométrie choisie
-Voulez-vous éditer ce sous-maillage?</translation>
+ <translation>Un sous-maillage existe deja sur la geometrie choisie
+Voulez-vous editer ce sous-maillage?</translation>
</message>
<message>
<source>SUBMESH_NOT_ALLOWED</source>
- <translation>Créer un sous-maillage ignoré par l'algorithme global n'a pas de sens "%1"</translation>
+ <translation>Creer un sous-maillage ignore par l algorithme global n a pas de sens "%1"</translation>
</message>
<message>
<source>GEOMETRY_OBJECT_IS_NOT_DEFINED_MESH</source>
- <translation>La géométrie n'est pas définie.
-Voulez-vous créer un maillage vide
-sans algorithme ni hypothèse ? </translation>
+ <translation>La geometrie n est pas definie.
+Voulez-vous creer un maillage vide
+sans algorithme ni hypothese ? </translation>
</message>
<message>
<source>GEOMETRY_OBJECT_IS_NOT_DEFINED_SUBMESH</source>
- <translation>L'objet géométrique n'est pas défini.
-Merci de le spécifier et essayer de nouveau</translation>
+ <translation>L objet geometrique n est pas defini.
+Merci de le specifier et essayer de nouveau</translation>
</message>
<message>
<source>GEOMETRY_OBJECT_IS_NULL</source>
- <translation>L'objet géométrique est nul</translation>
+ <translation>L objet geometrique est nul</translation>
</message>
<message>
<source>HYPOTHESES_AND_ALGORITHMS_ARE_NOT_DEFINED</source>
- <translation>Les hypothèses et les algorithmes ne sont pas définis</translation>
+ <translation>Les hypotheses et les algorithmes ne sont pas definis</translation>
</message>
<message>
<source>HYPOTHESIS_WITHOUT_ALGORITHM</source>
- <translation>L'hypothèse est définie pour la dimension %1 mais l'algorithme n'est pas défini</translation>
+ <translation>L hypothese est definie pour la dimension %1 mais l algorithme n est pas defini</translation>
</message>
<message>
<source>IMPORTED_MESH</source>
- <translation>Le maillage n'est pas construit sur une géométrie</translation>
+ <translation>Le maillage n est pas construit sur une geometrie</translation>
</message>
<message>
<source>INVALID_SUBSHAPE</source>
- <translation>L'objet géométrique n'est pas un sous-objet de l'objet maillé</translation>
+ <translation>L objet geometrique n est pas un sous-objet de l objet maille</translation>
</message>
<message>
<source>MESH_IS_NOT_DEFINED</source>
- <translation>Le maillage n'est pas défini
-Spécifiez-le et essayez de nouveau</translation>
+ <translation>Le maillage n est pas defini
+Specifiez-le et essayez de nouveau</translation>
</message>
<message>
<source>MESH_IS_NULL</source>
</message>
<message>
<source>MT_HEXAHEDRAL</source>
- <translation>Hexahèdre</translation>
+ <translation>Hexahedre</translation>
</message>
<message>
<source>MT_TETRAHEDRAL</source>
- <translation>Tetraèdre</translation>
+ <translation>Tetraedre</translation>
</message>
<message>
<source>MT_TRIANGULAR</source>
</message>
<message>
<source>MT_QUADRILATERAL</source>
- <translation>Quadrilatères</translation>
+ <translation>Quadrilateres</translation>
</message>
<message>
<source>NAME_OF_MESH_IS_EMPTY</source>
</message>
<message>
<source>THERE_IS_NO_OBJECT_FOR_EDITING</source>
- <translation>Il n'y a pas d'objet à éditer.
-Sélectionnez un maillage ou un sous-maillage et essayez de nouveau</translation>
+ <translation>Il n y a pas d objet a editer.
+Selectionnez un maillage ou un sous-maillage et essayez de nouveau</translation>
</message>
<message>
<source>CONCURRENT_SUBMESH_APPEARS</source>
<translation>
-L'algorithme assigné a la même priorité que celui assigné à un
-sous-maillage adjacent; ainsi l'algorithme à utiliser pour mailler la
-frontière partagée par les deux sous-maillages n'est pas défini.
-Voulez-vous définir l'ordre de calcul des sous-maillages ?</translation>
+L algorithme assigne a la meme priorite que celui assigne a un
+sous-maillage adjacent; ainsi l'algorithme a utiliser pour mailler la
+frontiere partagee par les deux sous-maillages n est pas defini.
+Voulez-vous definir l ordre de calcul des sous-maillages ?</translation>
</message>
</context>
<context>
</message>
<message>
<source>CREATE_POLYEDRS_NEAR_BOUNDARY</source>
- <translation>Créer des polyèdres près de la frontière</translation>
+ <translation>Creer des polyedres pres de la frontiere</translation>
</message>
<message>
<source>CREATE_POLYGONS_NEAR_BOUNDARY</source>
- <translation>Créer des polygones près de la frontière</translation>
+ <translation>Creer des polygones pres de la frontiere</translation>
</message>
<message>
<source>ERROR_OF_LOADING</source>
</message>
<message>
<source>ERROR_OF_OPENING</source>
- <translation>Il est impossible d'ouvrir le fichier.
-Vérifiez s'il existe et si vous avez l'autorisation</translation>
+ <translation>Il est impossible d ouvrir le fichier.
+Verifiez s il existe et si vous avez l autorisation</translation>
</message>
<message>
<source>ERROR_OF_READING</source>
<translation>Il est impossible de charger le motif
-Vérifiez le contenu du fichier</translation>
+Verifiez le contenu du fichier</translation>
</message>
<message>
<source>ERR_READ_3D_COORD</source>
<translation>Il est impossible de charger le motif
-Les coordonnées des points 3D sont en dehors de l'intervalle [0,1]</translation>
+Les coordonnees des points 3D sont en dehors de l intervalle [0,1]</translation>
</message>
<message>
<source>ERR_READ_BAD_INDEX</source>
<translation>Il est impossible de charger le motif
-Un index de point invalide a été detecté</translation>
+Un index de point invalide a ete detecte</translation>
</message>
<message>
<source>ERR_READ_BAD_KEY_POINT</source>
<translation>Il est impossible de charger le motif
-Le point-clef n'est pas situé sur la frontière</translation>
+Le point-clef n est pas situe sur la frontiere</translation>
</message>
<message>
<source>ERR_READ_ELEM_POINTS</source>
<translation>Il est impossible de charger le motif
-Le nombre de points de l'élément est invalide</translation>
+Le nombre de points de l element est invalide</translation>
</message>
<message>
<source>ERR_READ_NB_POINTS</source>
<message>
<source>ERR_READ_NO_ELEMS</source>
<translation>Il est impossible de charger le motif
-Il ne contient pas d'éléments</translation>
+Il ne contient pas d elements</translation>
</message>
<message>
<source>ERR_READ_NO_KEYPOINT</source>
<translation>Il est impossible de charger le motif
-Le motif 2D n'a pas de point-clef</translation>
+Le motif 2D n a pas de point-clef</translation>
</message>
<message>
<source>ERR_READ_POINT_COORDS</source>
<translation>Il est impossible de charger le motif
-Il est impossible de lire les coordonnées des points dans le fichier</translation>
+Il est impossible de lire les coordonnees des points dans le fichier</translation>
</message>
<message>
<source>ERR_READ_TOO_FEW_POINTS</source>
</message>
<message>
<source>NODE_1</source>
- <translation>Nœud 1</translation>
+ <translation>Noeud 1</translation>
</message>
<message>
<source>NODE_2</source>
- <translation>Nœud 2</translation>
+ <translation>Noeud 2</translation>
</message>
<message>
<source>PATTERN</source>
</message>
<message>
<source>PREVIEW</source>
- <translation>Prévisualiser</translation>
+ <translation>Previsualiser</translation>
</message>
<message>
<source>REFINE</source>
- <translation>Raffiner les éléments de maillage sélectionnés</translation>
+ <translation>Raffiner les elements de maillage selectionnes</translation>
</message>
<message>
<source>REVERSE</source>
- <translation>Inverser l'ordre des points-clefs</translation>
+ <translation>Inverser l ordre des points-clefs</translation>
</message>
<message>
<source>VERTEX</source>
<name>SMESHGUI_MeshTab</name>
<message>
<source>ADD_HYPOTHESIS</source>
- <translation>Ajouter l'hypothèse</translation>
+ <translation>Ajouter l hypothese</translation>
</message>
<message>
<source>ALGORITHM</source>
</message>
<message>
<source>HYPOTHESIS</source>
- <translation>Hypothèse</translation>
+ <translation>Hypothese</translation>
</message>
<message>
<source>NONE</source>
</message>
<message>
<source>DEFAULT</source>
- <translation><Défaut></translation>
+ <translation><Defaut></translation>
</message>
<message>
<source>SELECT</source>
- <translation><Sélectionner></translation>
+ <translation><Selectionner></translation>
</message>
</context>
<context>
</message>
<message>
<source>SELECT_FROM</source>
- <translation>Sélectionner à partir de</translation>
+ <translation>Selectionner a partir de</translation>
</message>
<message>
<source>SORT_LIST</source>
</message>
<message>
<source>SPLIT_JOIN_CRITERION</source>
- <translation>Critère</translation>
+ <translation>Critere</translation>
</message>
<message>
<source>TO_ALL</source>
- <translation>Appliquer à tous</translation>
+ <translation>Appliquer a tous</translation>
</message>
<message>
<source>USE_DIAGONAL_1_3</source>
</message>
<message>
<source>USE_NUMERIC_FUNC</source>
- <translation>Utiliser le facteur numérique</translation>
+ <translation>Utiliser le facteur numerique</translation>
</message>
</context>
<context>
<name>SMESHGUI_SplitVolumesDlg</name>
<message>
<source>CAPTION</source>
- <translation>Diviser les volumes en tétraèdres</translation>
+ <translation>Diviser les volumes en tetraedres</translation>
</message>
<message>
<source>SPLIT_METHOD</source>
- <translation>Diviser l'hexaèdre</translation>
+ <translation>Diviser l hexaedre</translation>
</message>
<message>
<source>SPLIT_HEX_TO_5_TETRA</source>
- <translation>En 5 tétraèdres</translation>
+ <translation>En 5 tetraedres</translation>
</message>
<message>
<source>SPLIT_HEX_TO_6_TETRA</source>
- <translation>En 6 tétraèdres</translation>
+ <translation>En 6 tetraedres</translation>
</message>
<message>
<source>SPLIT_HEX_TO_24_TETRA</source>
- <translation>En 24 tétraèdres</translation>
+ <translation>En 24 tetraedres</translation>
</message>
<message>
<source>SPLIT_HEX_TO_2_PRISMS</source>
</message>
<message>
<source>TARGET_ELEM_TYPE</source>
- <translation>Type des éléments ciblés</translation>
+ <translation>Type des elements cibles</translation>
</message>
<message>
<source>FACET_TO_SPLIT</source>
- <translation>Face à diviser</translation>
+ <translation>Face a diviser</translation>
</message>
<message>
<source>START_POINT</source>
</message>
<message>
<source>FACET_NORMAL</source>
- <translation>Normal à la face</translation>
+ <translation>Normal a la face</translation>
</message>
<message>
<source>ALL_DOMAINS</source>
<name>SMESHGUI_PrecisionDlg</name>
<message>
<source>CAPTION</source>
- <translation>Précision pour les contrôles de qualité du maillage</translation>
+ <translation>Precision pour les controles de qualite du maillage</translation>
</message>
<message>
<source>NOT_USE</source>
</message>
<message>
<source>PRECISION</source>
- <translation>Nombre de chiffres après la virgule</translation>
+ <translation>Nombre de chiffres apres la virgule</translation>
</message>
</context>
<context>
</message>
<message>
<source>PREVIEW</source>
- <translation>Prévisualiser</translation>
+ <translation>Previsualiser</translation>
</message>
<message>
<source>REVOLUTION</source>
- <translation>Révolution des éléments 1D</translation>
+ <translation>Revolution des elements 1D</translation>
</message>
<message>
<source>REVOLUTION_2D</source>
- <translation>Révolution des éléments 2D</translation>
+ <translation>Revolution des elements 2D</translation>
</message>
<message>
<source>REVOLUTION_AROUND_AXIS</source>
- <translation>Révolution autour d'un axe</translation>
+ <translation>Revolution autour d un axe</translation>
</message>
<message>
<source>TOTAL_ANGLE</source>
</message>
<message>
<source>MEN_POINT_SELECT</source>
- <translation>De l'origine au point sélectionner</translation>
+ <translation>De l origine au point selectionner</translation>
</message>
<message>
<source>MEN_FACE_SELECT</source>
- <translation>Normale de la face sélectionnée</translation>
+ <translation>Normale de la face selectionnee</translation>
</message>
</context>
<context>
<name>SMESHGUI_SewingDlg</name>
<message>
<source>BORDER</source>
- <translation>Frontière</translation>
+ <translation>Frontiere</translation>
</message>
<message>
<source>BORDER_1</source>
- <translation>Frontière 1</translation>
+ <translation>Frontiere 1</translation>
</message>
<message>
<source>BORDER_2</source>
- <translation>Frontière 2</translation>
+ <translation>Frontiere 2</translation>
</message>
<message>
<source>CREATE_POLYEDRS_NEAR_BOUNDARY</source>
- <translation>Remplacer les volumes concernés par des polyèdres</translation>
+ <translation>Remplacer les volumes concernes par des polyedres</translation>
</message>
<message>
<source>CREATE_POLYGONS_INSTEAD_SPLITTING</source>
- <translation>Créer des polygones au lieu de redécouper</translation>
+ <translation>Creer des polygones au lieu de redecouper</translation>
</message>
<message>
<source>ERROR_1</source>
- <translation>La frontière Libre1 n'est pas trouvée avec les nœuds sélectionnés</translation>
+ <translation>La frontiere Libre1 n est pas trouvee avec les noeuds selectionnes</translation>
</message>
<message>
<source>ERROR_2</source>
- <translation>La frontière Libre2 n'est pas trouvée avec les nœuds sélectionnés</translation>
+ <translation>La frontiere Libre2 n est pas trouvee avec les noeuds selectionnes</translation>
</message>
<message>
<source>ERROR_3</source>
- <translation>Les frontières Libres 1 et 2 n'ont pas été trouvées avec les nœuds sélectionnés</translation>
+ <translation>Les frontieres Libres 1 et 2 n ont pas ete trouvees avec les noeuds selectionnes</translation>
</message>
<message>
<source>ERROR_4</source>
- <translation>Aucun chemin du premier au dernier nœud de la frontière n'est trouvé</translation>
+ <translation>Aucun chemin du premier au dernier noeud de la frontiere n est trouve</translation>
</message>
<message>
<source>ERROR_5</source>
- <translation>Il n'est pas permis de découper les volumes de bord!</translation>
+ <translation>Il n est pas permis de decouper les volumes de bord!</translation>
</message>
<message>
<source>ERROR_6</source>
- <translation>Le nombre d'éléments sélectionnés est différent de chaque côté</translation>
+ <translation>Le nombre d elements selectionnes est different de chaque cote</translation>
</message>
<message>
<source>ERROR_7</source>
- <translation>Les jeux d'éléments sont topologiquement différents ou les nœuds ne conviennent pas</translation>
+ <translation>Les jeux d elements sont topologiquement differents ou les noeuds ne conviennent pas</translation>
</message>
<message>
<source>ERROR_8</source>
- <translation>Les nœuds du côté 1 soit ne sont pas connectés soit ne sont pas situés à la frontière du jeu d'éléments</translation>
+ <translation>Les noeuds du cote 1 soit ne sont pas connectes soit ne sont pas situes a la frontiere du jeu d elements</translation>
</message>
<message>
<source>ERROR_9</source>
- <translation>Les nœuds du côté 2 soit ne sont pas connectés soit ne sont pas situés à la frontière de l'élément</translation>
+ <translation>Les noeuds du cote 2 soit ne sont pas connectes soit ne sont pas situes a la frontiere de l element</translation>
</message>
<message>
<source>FIRST_NODE_ID</source>
- <translation>ID du premier nœud </translation>
+ <translation>ID du premier noeud </translation>
</message>
<message>
<source>LAST_NODE_ID</source>
- <translation>ID du dernier nœud</translation>
+ <translation>ID du dernier noeud</translation>
</message>
<message>
<source>MERGE_EQUAL_ELEMENTS</source>
- <translation>Fusionner les éléments égaux</translation>
+ <translation>Fusionner les elements egaux</translation>
</message>
<message>
<source>NODE1_TO_MERGE</source>
- <translation>Nœud 1 à fusionner</translation>
+ <translation>Noeud 1 a fusionner</translation>
</message>
<message>
<source>NODE2_TO_MERGE</source>
- <translation>Nœud 2 à fusionner</translation>
+ <translation>Noeud 2 a fusionner</translation>
</message>
<message>
<source>SECOND_NODE_ID</source>
- <translation>ID du deuxième nœud</translation>
+ <translation>ID du deuxieme noeud</translation>
</message>
<message>
<source>SEW_BORDER_TO_SIDE</source>
- <translation>Coudre la frontière au côté</translation>
+ <translation>Coudre la frontiere au cote</translation>
</message>
<message>
<source>SEW_CONFORM_FREE_BORDERS</source>
- <translation>Coudre les frontières libres conformes</translation>
+ <translation>Coudre les frontieres libres conformes</translation>
</message>
<message>
<source>SEW_FREE_BORDERS</source>
- <translation>Coudre les frontières libres</translation>
+ <translation>Coudre les frontieres libres</translation>
</message>
<message>
<source>SEW_SIDE_ELEMENTS</source>
- <translation>Coudre les éléments de bord</translation>
+ <translation>Coudre les elements de bord</translation>
</message>
<message>
<source>SIDE</source>
</message>
<message>
<source>COINCIDENT_FREE_BORDERS</source>
- <translation>Frontières libres coïncidentes</translation>
+ <translation>Frontieres libres coincidentes</translation>
</message>
<message>
<source>DETECT</source>
- <translation>Détecter</translation>
+ <translation>Detecter</translation>
</message>
<message>
<source>SELECT_ALL</source>
- <translation>Sélectionner tous</translation>
+ <translation>Selectionner tous</translation>
</message>
<message>
<source>EDIT_SELECTED_GROUP</source>
- <translation>Editer le groupe sélectionné</translation>
+ <translation>Editer le groupe selectionne</translation>
</message>
<message>
<source>STEP</source>
</message>
<message>
<source>NO_BORDERS_TO_SEW</source>
- <translation>Pas de frontière libre à coudre</translation>
+ <translation>Pas de frontiere libre a coudre</translation>
</message>
<message>
<source>NOT_ALL_BORDERS_SEWED</source>
- <translation>%1 groupes sur %2 de frontières cousus</translation>
+ <translation>%1 groupes sur %2 de frontieres cousus</translation>
</message>
<message>
<source>ALL_BORDERS_SEWED</source>
- <translation>%1 groupe(s) de frontières cousu(s)</translation>
+ <translation>%1 groupe(s) de frontieres cousu(s)</translation>
</message>
</context>
<context>
<name>SMESHGUI_ShapeByMeshDlg</name>
<message>
<source>CAPTION</source>
- <translation>Trouver la géométrie par le maillage</translation>
+ <translation>Trouver la geometrie par le maillage</translation>
</message>
</context>
<context>
<name>SMESHGUI_SingleEditDlg</name>
<message>
<source>EDGE_BETWEEN</source>
- <translation>Arête entre des triangles voisins</translation>
+ <translation>Arete entre des triangles voisins</translation>
</message>
</context>
<context>
<name>SMESHGUI_SmoothingDlg</name>
<message>
<source>CENTROIDAL</source>
- <translation>Centroïdal</translation>
+ <translation>Centroidal</translation>
</message>
<message>
<source>FIXED_NODES_IDS</source>
- <translation>IDs des nœuds fixes</translation>
+ <translation>IDs des noeuds fixes</translation>
</message>
<message>
<source>IS_PARAMETRIC</source>
- <translation>dans l'espace paramétrique</translation>
+ <translation>dans l espace parametrique</translation>
</message>
<message>
<source>ITERATION_LIMIT</source>
- <translation>Limite d'Itération </translation>
+ <translation>Limite d Iteration </translation>
</message>
<message>
<source>LAPLACIAN</source>
</message>
<message>
<source>METHOD</source>
- <translation>Méthode</translation>
+ <translation>Methode</translation>
</message>
</context>
<context>
<name>SMESHGUI_GroupOnShapeDlg</name>
<message>
<source>SMESH_CREATE_GROUP_FROM_GEOM</source>
- <translation>Créer des groupes à partir de la géométrie</translation>
+ <translation>Creer des groupes a partir de la geometrie</translation>
</message>
<message>
<source>ELEMENTS</source>
- <translation>Eléments</translation>
+ <translation>Elements</translation>
</message>
<message>
<source>ELEMENTS_TOOLTIP</source>
- <translation>Pas d'éléments 0D</translation>
+ <translation>Pas d'elements 0D</translation>
</message>
</context>
<context>
<name>SMESHGUI_MeshOrderDlg</name>
<message>
<source>SMESH_MESHORDER_TITLE</source>
- <translation>Ordre des sous-maillages dans la procédure de maillage</translation>
+ <translation>Ordre des sous-maillages dans la procedure de maillage</translation>
</message>
</context>
<context>
<name>SMESHGUI_MeshOrderOp</name>
<message>
<source>SMESH_NO_CONCURENT_MESH</source>
- <translation>Pas de sous-maillages concurrents détectés</translation>
+ <translation>Pas de sous-maillages concurrents detectes</translation>
</message>
</context>
<context>
<name>SMESHGUI_ClippingDlg</name>
<message>
<source>CLIP_PLANES</source>
- <translation>Plans de découpe</translation>
+ <translation>Plans de decoupe</translation>
</message>
<message>
<source>IS_OPENGL_CLIPPING</source>
- <translation>OpenGL découpage</translation>
+ <translation>OpenGL decoupage</translation>
</message>
<message>
<source>MESHES_SUBMESHES_GROUPS</source>
</message>
<message>
<source>SELECT_ALL</source>
- <translation>Tout sélectionner</translation>
+ <translation>Tout selectionner</translation>
</message>
<message>
<source>ROTATION_AROUND_X_Y2Z</source>
- <translation>Rotation autour de X (Y à Z):</translation>
+ <translation>Rotation autour de X (Y a Z):</translation>
</message>
<message>
<source>ROTATION_AROUND_Y_X2Z</source>
- <translation>Rotation autour de Y (X à Z):</translation>
+ <translation>Rotation autour de Y (X a Z):</translation>
</message>
<message>
<source>ROTATION_AROUND_Z_Y2X</source>
- <translation>Rotation autour de Z (Y à X):</translation>
+ <translation>Rotation autour de Z (Y a X):</translation>
</message>
<message>
<source>ROTATION_AROUND_X_Z2Y</source>
- <translation>Rotation autour de X (Z à Y):</translation>
+ <translation>Rotation autour de X (Z a Y):</translation>
</message>
<message>
<source>ROTATION_AROUND_Y_Z2X</source>
- <translation>Rotation autour de Y (Z à X):</translation>
+ <translation>Rotation autour de Y (Z a X):</translation>
</message>
<message>
<source>ROTATION_AROUND_Z_X2Y</source>
- <translation>Rotation autour de Z (X à Y):</translation>
+ <translation>Rotation autour de Z (X a Y):</translation>
</message>
<message>
<source>SHOW_PREVIEW</source>
- <translation>Prévisualiser</translation>
+ <translation>Previsualiser</translation>
</message>
<message>
<source>AUTO_APPLY</source>
</message>
<message>
<source>RESET</source>
- <translation>Réinitialiser</translation>
+ <translation>Reinitialiser</translation>
</message>
<message>
<source>INVERT</source>
</message>
<message>
<source>DUPLICATION_WITHOUT_ELEMS</source>
- <translation>Sans duplication des éléments de frontière</translation>
+ <translation>Sans duplication des elements de frontiere</translation>
</message>
<message>
<source>GROUP_NODES_TO_DUPLICATE</source>
- <translation>Groupe des nœuds à dupliquer</translation>
+ <translation>Groupe des noeuds a dupliquer</translation>
</message>
<message>
<source>GROUP_NODES_TO_REPLACE</source>
- <translation>Groupe des éléments dont les nœuds sont à remplacer</translation>
+ <translation>Groupe des elements dont les noeuds sont a remplacer</translation>
</message>
<message>
<source>DUPLICATION_WITH_ELEMS</source>
- <translation>Avec duplication des éléments de frontière</translation>
+ <translation>Avec duplication des elements de frontiere</translation>
</message>
<message>
<source>DUPLICATION_ONLY_ELEMS</source>
- <translation>Avec duplication des éléments de frontière seulement</translation>
+ <translation>Avec duplication des elements de frontiere seulement</translation>
</message>
<message>
<source>DUPLICATION_GROUP_BOUNDARY</source>
- <translation>Avec duplication des nœuds des groupes de frontière</translation>
+ <translation>Avec duplication des noeuds des groupes de frontiere</translation>
</message>
<message>
<source>GROUP_ELEMS_TO_DUPLICATE</source>
- <translation>Groupe des éléments à dupliquer</translation>
+ <translation>Groupe des elements a dupliquer</translation>
</message>
<message>
<source>GROUP_NODES_NOT_DUPLICATE</source>
- <translation>Groupe des nœuds à ne pas dupliquer</translation>
+ <translation>Groupe des noeuds a ne pas dupliquer</translation>
</message>
<message>
<source>GROUP_ELEMS_TO_REPLACE</source>
- <translation>Groupe des éléments dont les nœuds sont à remplacer</translation>
+ <translation>Groupe des elements dont les noeuds sont a remplacer</translation>
</message>
<message>
<source>GROUP_VOLUME_GROUPS</source>
</message>
<message>
<source>CONSTRUCT_NEW_GROUP_NODES</source>
- <translation>Construire un groupe avec les nœuds nouvellement créés</translation>
+ <translation>Construire un groupe avec les noeuds nouvellement crees</translation>
</message>
<message>
<source>CONSTRUCT_NEW_GROUP_ELEMENTS</source>
- <translation>Construire un groupe avec les éléments nouvellement créés</translation>
+ <translation>Construire un groupe avec les elements nouvellement crees</translation>
</message>
<message>
<source>CREATE_JOINT_ELEMENTS</source>
- <translation>Créer des éléments de joint</translation>
+ <translation>Creer des elements de joint</translation>
</message>
<message>
<source>ON_ALL_BOUNDARIES</source>
- <translation>sur toutes les frontières</translation>
+ <translation>sur toutes les frontieres</translation>
</message>
<message>
<source>GENERATE_GROUPS</source>
- <translation>Génerer</translation>
+ <translation>Generer</translation>
</message>
</context>
<context>
<name>SMESHGUI_Make2DFrom3DDlg</name>
<message>
<source>CAPTION</source>
- <translation>Créer les éléments de frontière</translation>
+ <translation>Creer les elements de frontiere</translation>
</message>
<message>
<source>Groups</source>
</message>
<message>
<source>2D_FROM_3D</source>
- <translation>2D à partir de 3D</translation>
+ <translation>2D a partir de 3D</translation>
</message>
<message>
<source>1D_FROM_3D</source>
- <translation>1D à partir de groupes 2D</translation>
+ <translation>1D a partir de groupes 2D</translation>
</message>
<message>
<source>1D_FROM_2D</source>
- <translation>1D à partir de 2D</translation>
+ <translation>1D a partir de 2D</translation>
</message>
<message>
<source>TARGET</source>
</message>
<message>
<source>MISSING_ONLY</source>
- <translation>Copier seulement les éléments manquants</translation>
+ <translation>Copier seulement les elements manquants</translation>
</message>
<message>
<source>CREATE_GROUP</source>
- <translation>Créer un groupe</translation>
+ <translation>Creer un groupe</translation>
</message>
</context>
<context>
<name>SMESHGUI_Make2DFrom3DOp</name>
<message>
<source>NB_ADDED</source>
- <translation>%1 éléments de bord ont été ajoutés</translation>
+ <translation>%1 elements de bord ont ete ajoutes</translation>
</message>
<message>
<source>WRONG_GROUPS</source>
- <translation>Les groupes suivants n'ont pas été traités
+ <translation>Les groupes suivants n ont pas ete traites
en raison de leurs types incompatibles:
%1</translation>
</message>
<message>
<source>SMESH_ERR_NO_INPUT_MESH</source>
- <translation>Aucun maillage, sous-maillage ou groupe source n'est indiqué</translation>
+ <translation>Aucun maillage, sous-maillage ou groupe source n est indique</translation>
</message>
<message>
<source>SMESH_TOO_MANY_MESHES</source>
- <translation>Un seul maillage à la fois peut être traité</translation>
+ <translation>Un seul maillage a la fois peut etre traite</translation>
</message>
<message>
<source>SMESH_NOT_ONLY_GROUPS</source>
- <translation>Impossible de traiter à la fois des maillages et des groupes</translation>
+ <translation>Impossible de traiter a la fois des maillages et des groupes</translation>
</message>
<message>
<source>SMESH_ERR_NO_3D_ELEMENTS</source>
- <translation>L'objet source ne contient pas d'éléments 3D</translation>
+ <translation>L objet source ne contient pas d elements 3D</translation>
</message>
<message>
<source>SMESH_ERR_NO_2D_ELEMENTS</source>
- <translation>L'objet source ne contient pas d'éléments 2D</translation>
+ <translation>L objet source ne contient pas d elements 2D</translation>
</message>
<message>
<source>SMESH_ERR_MESH_NAME_NOT_SPECIFIED</source>
- <translation>Le nom du nouveau maillage n'est pas indiqué</translation>
+ <translation>Le nom du nouveau maillage n est pas indique</translation>
</message>
<message>
<source>SMESH_ERR_GRP_NAME_NOT_SPECIFIED</source>
- <translation>Le nom du groupe n'est pas indiqué</translation>
+ <translation>Le nom du groupe n est pas indique</translation>
</message>
</context>
<context>
</message>
<message>
<source>NODES_LAB</source>
- <translation>Nœuds:</translation>
+ <translation>Noeuds:</translation>
</message>
<message>
<source>ELEMENTS_LAB</source>
- <translation>Eléments:</translation>
+ <translation>Elements:</translation>
</message>
<message>
<source>TOTAL_LAB</source>
</message>
<message>
<source>LINEAR_LAB</source>
- <translation>Linéaire</translation>
+ <translation>Lineaire</translation>
</message>
<message>
<source>QUADRATIC_LAB</source>
</message>
<message>
<source>1D_LAB</source>
- <translation>1D (arêtes):</translation>
+ <translation>1D (aretes):</translation>
</message>
<message>
<source>2D_LAB</source>
</message>
<message>
<source>TETRAHEDRONS_LAB</source>
- <translation>Tétraèdres:</translation>
+ <translation>Tetraedres:</translation>
</message>
<message>
<source>HEXAHEDONRS_LAB</source>
- <translation>Hexaèdres:</translation>
+ <translation>Hexaedres:</translation>
</message>
<message>
<source>PYRAMIDS_LAB</source>
</message>
<message>
<source>POLYHEDRONS_LAB</source>
- <translation>Polyèdres:</translation>
+ <translation>Polyedres:</translation>
</message>
<message>
<source>OBJECT_MESH</source>
</message>
<message>
<source>OBJECT_GROUP_NODES</source>
- <translation>Groupe de nœuds</translation>
+ <translation>Groupe de noeuds</translation>
</message>
<message>
<source>OBJECT_GROUP_EDGES</source>
- <translation>Groupe d'arêtes</translation>
+ <translation>Groupe d aretes</translation>
</message>
<message>
<source>OBJECT_GROUP_FACES</source>
</message>
<message>
<source>OBJECT_GROUP_0DELEMS</source>
- <translation>Groupe d'éléments 0D</translation>
+ <translation>Groupe d elements 0D</translation>
</message>
<message>
<source>OBJECT_GROUP_BALLS</source>
- <translation>Groupe d'éléments particulaires</translation>
+ <translation>Groupe d elements particulaires</translation>
</message>
<message>
<source>BUT_LOAD_MESH</source>
</message>
<message>
<source>ELEM_INFO</source>
- <translation>Informations sur les éléments</translation>
+ <translation>Informations sur les elements</translation>
</message>
<message>
<source>ADDITIONAL_INFO</source>
- <translation>Informations détaillées</translation>
+ <translation>Informations detaillees</translation>
</message>
<message>
<source>CTRL_INFO</source>
- <translation>Informations sur la qualité</translation>
+ <translation>Informations sur la qualite</translation>
</message>
<message>
<source>NODE_MODE</source>
- <translation>Nœud</translation>
+ <translation>Noeud</translation>
</message>
<message>
<source>ELEM_MODE</source>
- <translation>Elément</translation>
+ <translation>Element</translation>
</message>
<message>
<source>SHOW_IDS</source>
</message>
<message>
<source>SAVE_INFO</source>
- <translation>Sauver l'info</translation>
+ <translation>Sauver l info</translation>
</message>
<message>
<source>X_FROM_Y_ITEMS_SHOWN</source>
- <translation>%1-%2 sur %3 éléments affichés</translation>
+ <translation>%1-%2 sur %3 elements affiches</translation>
</message>
</context>
<context>
<name>SMESHGUI_ElemInfo</name>
<message>
<source>ELEM_INFO</source>
- <translation>Infos sur les éléments</translation>
+ <translation>Infos sur les elements</translation>
</message>
<message>
<source>COORDINATES</source>
- <translation>Coordonnées</translation>
+ <translation>Coordonnees</translation>
</message>
<message>
<source>CONNECTIVITY</source>
- <translation>Connectivité</translation>
+ <translation>Connectivite</translation>
</message>
<message>
<source>GRAVITY_CENTER</source>
- <translation>Centre de gravité</translation>
+ <translation>Centre de gravite</translation>
</message>
<message>
<source>NORMAL_VECTOR</source>
</message>
<message>
<source>NODE</source>
- <translation>Nœud</translation>
+ <translation>Noeud</translation>
</message>
<message>
<source>0D_ELEMENT</source>
- <translation>Eléments 0d</translation>
+ <translation>Elements 0d</translation>
</message>
<message>
<source>0D_ELEMENTS</source>
- <translation>Eléments 0d</translation>
+ <translation>Elements 0d</translation>
</message>
<message>
<source>BALL_ELEMENT</source>
- <translation>Elément particulaire</translation>
+ <translation>Element particulaire</translation>
</message>
<message>
<source>BALL_ELEMENTS</source>
- <translation>Eléments particulaires</translation>
+ <translation>Elements particulaires</translation>
</message>
<message>
<source>EDGE</source>
- <translation>Arête</translation>
+ <translation>Arete</translation>
</message>
<message>
<source>EDGES</source>
- <translation>Arêtes</translation>
+ <translation>Aretes</translation>
</message>
<message>
<source>FACE</source>
</message>
<message>
<source>FREE_NODE</source>
- <translation>Nœud libre (pas de connectivité)</translation>
+ <translation>Noeud libre (pas de connectivite)</translation>
</message>
<message>
<source>TYPE</source>
</message>
<message>
<source>TETRAHEDRON</source>
- <translation>Tétraèdre</translation>
+ <translation>Tetraedre</translation>
</message>
<message>
<source>HEXAHEDRON</source>
- <translation>Hexaèdre</translation>
+ <translation>Hexaedre</translation>
</message>
<message>
<source>PYRAMID</source>
</message>
<message>
<source>POLYHEDRON</source>
- <translation>Polyèdre</translation>
+ <translation>Polyedre</translation>
</message>
<message>
<source>QUADRATIC</source>
</message>
<message>
<source>BALL_DIAMETER</source>
- <translation>Diamètre</translation>
+ <translation>Diametre</translation>
</message>
<message>
<source>GEOM_VERTEX</source>
</message>
<message>
<source>GEOM_EDGE</source>
- <translation>Arête</translation>
+ <translation>Arete</translation>
</message>
<message>
<source>GEOM_FACE</source>
</message>
<message>
<source>PROPERTY</source>
- <translation>Propriété</translation>
+ <translation>Propriete</translation>
</message>
<message>
<source>VALUE</source>
<name>SMESHGUI_AddInfo</name>
<message>
<source>ADDITIONAL_INFO</source>
- <translation>Infos détaillées</translation>
+ <translation>Infos detaillees</translation>
</message>
<message>
<source>NAME</source>
</message>
<message>
<source>GROUPS_1</source>
- <translation>Nœuds</translation>
+ <translation>Noeuds</translation>
</message>
<message>
<source>GROUPS_2</source>
- <translation>Arêtes</translation>
+ <translation>Aretes</translation>
</message>
<message>
<source>GROUPS_3</source>
</message>
<message>
<source>GROUPS_5</source>
- <translation>Eléments 0D</translation>
+ <translation>Elements 0D</translation>
</message>
<message>
<source>GROUPS_6</source>
- <translation>Eléments particulaires</translation>
+ <translation>Elements particulaires</translation>
</message>
<message>
<source>PARENT_MESH</source>
</message>
<message>
<source>GROUP_ON_GEOMETRY</source>
- <translation>Groupe lié à une géométrie</translation>
+ <translation>Groupe lie a une geometrie</translation>
</message>
<message>
<source>GROUP_ON_FILTER</source>
- <translation>Groupe lié à un filtre</translation>
+ <translation>Groupe lie a un filtre</translation>
</message>
<message>
<source>GEOM_OBJECT</source>
</message>
<message>
<source>NODE</source>
- <translation>Nœud</translation>
+ <translation>Noeud</translation>
</message>
<message>
<source>EDGE</source>
- <translation>Arête</translation>
+ <translation>Arete</translation>
</message>
<message>
<source>FACE</source>
</message>
<message>
<source>0DELEM</source>
- <translation>Elément 0D</translation>
+ <translation>Element 0D</translation>
</message>
<message>
<source>BALL_ELEMENT</source>
- <translation>Elément particulaire</translation>
+ <translation>Element particulaire</translation>
</message>
<message>
<source>UNKNOWN</source>
</message>
<message>
<source>NB_NODES</source>
- <translation>Nœuds sous-jacents</translation>
+ <translation>Noeuds sous-jacents</translation>
</message>
<message>
<source>COMPUTE</source>
</message>
<message>
<source>MESH_ON_GEOMETRY</source>
- <translation>Lié à une géométrie</translation>
+ <translation>Lie a une geometrie</translation>
</message>
<message>
<source>MESH_FROM_FILE</source>
- <translation>Importé</translation>
+ <translation>Importe</translation>
</message>
<message>
<source>FILE_NAME</source>
</message>
<message>
<source>SUBMESHES_6</source>
- <translation>Arêtes</translation>
+ <translation>Aretes</translation>
</message>
<message>
<source>SUBMESHES_7</source>
<name>SMESHGUI_CtrlInfo</name>
<message>
<source>CTRL_INFO</source>
- <translation>Informations sur la qualité</translation>
+ <translation>Informations sur la qualite</translation>
</message>
<message>
<source>NAME_LAB</source>
</message>
<message>
<source>NODES_INFO</source>
- <translation>Informations des nœuds:</translation>
+ <translation>Informations des noeuds:</translation>
</message>
<message>
<source>NUMBER_OF_THE_FREE_NODES</source>
- <translation>Nombre de nœuds libres</translation>
+ <translation>Nombre de noeuds libres</translation>
</message>
<message>
<source>MAX_NODE_CONNECTIVITY</source>
- <translation>Nombre maximal d'élément connectés</translation>
+ <translation>Nombre maximal d'element connectes</translation>
</message>
<message>
<source>DOUBLE_NODES_TOLERANCE</source>
- <translation>Tolérance des nœuds doubles</translation>
+ <translation>Tolerance des noeuds doubles</translation>
</message>
<message>
<source>NUMBER_OF_THE_DOUBLE_NODES</source>
- <translation>Nombre de nœuds doubles</translation>
+ <translation>Nombre de noeuds doubles</translation>
</message>
<message>
<source>EDGES_INFO</source>
- <translation>Informations des arêtes:</translation>
+ <translation>Informations des aretes:</translation>
</message>
<message>
<source>NUMBER_OF_THE_DOUBLE_EDGES</source>
- <translation>Nombre d'arêtes doubles</translation>
+ <translation>Nombre d aretes doubles</translation>
</message>
<message>
<source>FACES_INFO</source>
<name>SMESHGUI_CtrlInfoDlg</name>
<message>
<source>CTRL_INFO</source>
- <translation>Informations sur la qualité</translation>
+ <translation>Informations sur la qualite</translation>
</message>
<message>
<source>BUT_DUMP_MESH</source>
<name>SMESHGUI_MinDistance</name>
<message>
<source>FIRST_TARGET</source>
- <translation>Premier élément</translation>
+ <translation>Premier element</translation>
</message>
<message>
<source>SECOND_TARGET</source>
- <translation>Deuxième élément</translation>
+ <translation>Deuxieme element</translation>
</message>
<message>
<source>NODE</source>
- <translation>Nœud</translation>
+ <translation>Noeud</translation>
</message>
<message>
<source>ELEMENT</source>
- <translation>Elément</translation>
+ <translation>Element</translation>
</message>
<message>
<source>OBJECT</source>
</message>
<message>
<source>RESULT</source>
- <translation>Distance entre les éléments</translation>
+ <translation>Distance entre les elements</translation>
</message>
<message>
<source>DISTANCE</source>
<name>SMESHGUI_BasicProperties</name>
<message>
<source>PROPERTY</source>
- <translation>Propriété</translation>
+ <translation>Propriete</translation>
</message>
<message>
<source>LENGTH</source>
</message>
<message>
<source>ELEM_IDS</source>
- <translation>IDs des éléments sources</translation>
+ <translation>IDs des elements sources</translation>
</message>
<message>
<source>NEW_NAME</source>
</message>
<message>
<source>BND_BOX</source>
- <translation>Boîte englobante</translation>
+ <translation>Boite englobante</translation>
</message>
<message>
<source>BASIC_PROPERTIES</source>
- <translation>Propriétés basiques</translation>
+ <translation>Proprietes basiques</translation>
</message>
</context>
<context>
</message>
<message>
<source>NODES</source>
- <translation>Nœuds</translation>
+ <translation>Noeuds</translation>
</message>
<message>
<source>ELEMENTS</source>
- <translation>Eléments</translation>
+ <translation>Elements</translation>
</message>
<message>
<source>COMPUTE</source>
</message>
<message>
<source>RESULT</source>
- <translation>Boîte englobante</translation>
+ <translation>Boite englobante</translation>
</message>
<message>
<source>SELECTED_NB_OBJ</source>
- <translation>%1 %2 sélectionnés</translation>
+ <translation>%1 %2 selectionnes</translation>
</message>
<message>
<source>NB_NODES</source>
- <translation>nœuds</translation>
+ <translation>noeuds</translation>
</message>
<message>
<source>NB_ELEMENTS</source>
- <translation>éléments</translation>
+ <translation>elements</translation>
</message>
</context>
<context>
<name>StdMeshersGUI_SubShapeSelectorWdg</name>
<message>
<source>X_FROM_Y_ITEMS_SHOWN</source>
- <translation>%1-%2 sur %3 éléments affichés</translation>
+ <translation>%1-%2 sur %3 elements affiches</translation>
</message>
</context>
<context>
<name>SMESHGUI_ReorientFacesDlg</name>
<message>
<source>CAPTION</source>
- <translation>Réorienter des faces selon un vector</translation>
+ <translation>Reorienter des faces selon un vector</translation>
</message>
<message>
<source>REORIENT_FACES</source>
- <translation>Réorienter</translation>
+ <translation>Reorienter</translation>
</message>
<message>
<source>DIRECTION</source>
<name>SMESHGUI_ReorientFacesOp</name>
<message>
<source>NO_OBJECT_SELECTED</source>
- <translation>Aucun objet sélectionné</translation>
+ <translation>Aucun objet selectionne</translation>
</message>
<message>
<source>NO_VOLUME_OBJECT_SELECTED</source>
- <translation>Aucun objet de volume sélectionné</translation>
+ <translation>Aucun objet de volume selectionne</translation>
</message>
<message>
<source>NO_FACES</source>
- <translation>L'objet ne contient pas de faces</translation>
+ <translation>L objet ne contient pas de faces</translation>
</message>
<message>
<source>NO_VOLUMES</source>
- <translation>L'objet ne contient pas de volumes</translation>
+ <translation>L objet ne contient pas de volumes</translation>
</message>
<message>
<source>ZERO_SIZE_VECTOR</source>
</message>
<message>
<source>NB_REORIENTED</source>
- <translation>%1 face(s) inversée(s)</translation>
+ <translation>%1 face(s) inversee(s)</translation>
</message>
</context>
<context>
<name>SMESHGUI_PropertiesDlg</name>
<message>
<source>TITLE</source>
- <translation>Propriétés</translation>
+ <translation>Proprietes</translation>
</message>
<message>
<source>NODES</source>
</message>
<message>
<source>EDGES</source>
- <translation>Arêtes / Mode filaire</translation>
+ <translation>Aretes / Mode filaire</translation>
</message>
<message>
<source>FACES</source>
</message>
<message>
<source>0D_ELEMENTS</source>
- <translation>Eléments 0D</translation>
+ <translation>Elements 0D</translation>
</message>
<message>
<source>BALLS</source>
</message>
<message>
<source>ORIENTATIONS</source>
- <translation>Vecteurs d'orientation</translation>
+ <translation>Vecteurs d orientation</translation>
</message>
<message>
<source>COLOR</source>
</message>
<message>
<source>FACE_BACK</source>
- <translation>Arrière:</translation>
+ <translation>Arriere:</translation>
</message>
<message>
<source>VOLUME_NORMAL</source>
</message>
<message>
<source>VOLUME_REVERSED</source>
- <translation>Inversé:</translation>
+ <translation>Inverse:</translation>
</message>
<message>
<source>SIZE</source>
</message>
<message>
<source>SHRINK</source>
- <translation>Coef de réduction:</translation>
+ <translation>Coef de reduction:</translation>
</message>
</context>
<context>
<name>SMESHGUI_DisplayEntitiesDlg</name>
<message>
<source>WRN_AT_LEAST_ONE</source>
- <translation>Au moins une entité devrait être choisie!</translation>
+ <translation>Au moins une entite devrait etre choisie!</translation>
</message>
</context>
<context>
# test used in YACS, ForEachLoop
def geomesh(l0, r0, h0, d0, d1, my_container, direc):
- print("Géometrie et maillage barre : (l0, r0, h0, d0, d1)=", (l0, r0, h0, d0, d1))
+ print("Geometrie et maillage barre : (l0, r0, h0, d0, d1)=", (l0, r0, h0, d0, d1))
import sys
import salome
barre_1.ExportMED( direc + os.sep + nommed, auto_groups=0, minor=0, overwrite=1, meshPart=None, autoDimension=1 )
measure = smesh.CreateMeasurements()
meshvol = measure.Volume(barre_1.mesh)
- print("Maillage publié : ", direc + os.sep + nommed)
+ print("Maillage publie : ", direc + os.sep + nommed)
clearMesh(barre_1, salome.myStudy, nom)
deltag = abs(geomvol - volume)/volume
deltam = abs(meshvol - geomvol)/geomvol
if ( !quad->uv_grid.empty() )
return true;
- // Algorithme décrit dans "Génération automatique de maillages"
+ // Algorithme decrit dans "Generation automatique de maillages"
// P.L. GEORGE, MASSON, § 6.4.1 p. 84-85
- // traitement dans le domaine paramétrique 2d u,v
- // transport - projection sur le carré unité
+ // traitement dans le domaine parametrique 2d u,v
+ // transport - projection sur le carre unite
// max min 0 x1 1
// |<----north-2-------^ a3 -------------> a2
<name>StdMeshersGUI_StdHypothesisCreator</name>
<message>
<source>TO_IGNORE_EDGES</source>
- <translation>Arêtes sans couches limites (entrées / sorties)</translation>
+ <translation>Aretes sans couches limites (entrees / sorties)</translation>
</message>
<message>
<source>NOT_TO_IGNORE_EDGES</source>
- <translation>Arêtes avec couche limite (parois)</translation>
+ <translation>Aretes avec couche limite (parois)</translation>
</message>
<message>
<source>TO_IGNORE_EDGES_OR_NOT</source>
- <translation>Les arêtes sélectionnées sont</translation>
+ <translation>Les aretes selectionnees sont</translation>
</message>
<message>
<source>TO_IGNORE_FACES_OR_NOT</source>
- <translation>Les face sélectionnées sont</translation>
+ <translation>Les faces selectionnees sont</translation>
</message>
<message>
<source>NOT_TO_IGNORE_FACES</source>
</message>
<message>
<source>TO_IGNORE_FACES</source>
- <translation>Faces sans couche limite (entrées / sorties)</translation>
+ <translation>Faces sans couche limite (entrees / sorties)</translation>
</message>
<message>
<source>BAD_FACES_WARNING</source>
<translation>
-Les faces sélectionnées ne sont pas des sous-géométries de la pièce à mailler (ou de la pièce du sous-maillage). Veuillez plutôt créer une autre hypothèse à la place de celle-ci pour ce maillage/sous-maillage.</translation>
+Les faces selectionnees ne sont pas des sous-geometries de la piece a mailler (ou de la piece du sous-maillage). Veuillez plutot creer une autre hypothese a la place de celle-ci pour ce maillage/sous-maillage.</translation>
</message>
<message>
<source>BAD_EDGES_WARNING</source>
<translation>
-Les arêtes sélectionnées ne sont pas des sous-géométries de la pièce à mailler (ou de la pièce du sous-maillage). Veuillez plutôt créer une autre hypothèse à la place de celle-ci pour ce maillage/sous-maillage.</translation>
+Les aretes selectionnees ne sont pas des sous-geometries de la piece a mailler (ou de la piece du sous-maillage). Veuillez plutot creer une autre hypothese a la place de celle-ci pour ce maillage/sous-maillage.</translation>
</message>
<message>
<source>EXTMETH_SURF_OFFSET_SMOOTH</source>
- <translation>Décalage de la surface + lissage</translation>
+ <translation>Decalage de la surface + lissage</translation>
</message>
<message>
<source>EXTRUSION_METHOD</source>
- <translation>Méthode d'extrusion</translation>
+ <translation>Methode d extrusion</translation>
</message>
<message>
<source>EXTMETH_NODE_OFFSET</source>
- <translation>Décalage des Nœuds</translation>
+ <translation>Decalage des Noeuds</translation>
</message>
<message>
<source>EXTMETH_FACE_OFFSET</source>
- <translation>Décalage de la face</translation>
+ <translation>Decalage de la face</translation>
</message>
</context>
<context>
<name>@default</name>
<message>
<source>SMESH_ARITHMETIC_1D_HYPOTHESIS</source>
- <translation>Arithmétique 1D</translation>
+ <translation>Arithmetique 1D</translation>
</message>
<message>
<source>SMESH_ARITHMETIC_1D_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_GEOMETRIC_1D_HYPOTHESIS</source>
- <translation>Progression géométrique</translation>
+ <translation>Progression geometrique</translation>
</message>
<message>
<source>SMESH_GEOMETRIC_1D_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_COMMON_RATIO</source>
</message>
<message>
<source>SMESH_AUTOMATIC_LENGTH_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_CONV_MODE</source>
</message>
<message>
<source>SMESH_CUT_NEG_MODE</source>
- <translation>Section négative</translation>
+ <translation>Section negative</translation>
</message>
<message>
<source>SMESH_ADAPTIVE1D_HYPOTHESIS</source>
- <translation>Adaptation géométrique</translation>
+ <translation>Adaptation geometrique</translation>
</message>
<message>
<source>SMESH_MIN_SIZE</source>
</message>
<message>
<source>SMESH_ADAPTIVE1D_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_DEFLECTION1D_HYPOTHESIS</source>
- <translation>Déflection 1D</translation>
+ <translation>Deflection 1D</translation>
</message>
<message>
<source>SMESH_DEFLECTION1D_PARAM</source>
- <translation>Déflection</translation>
+ <translation>Deflection</translation>
</message>
<message>
<source>SMESH_DEFLECTION1D_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_DENSITY_FUNC</source>
- <translation>Fonction de densité </translation>
+ <translation>Fonction de densite </translation>
</message>
<message>
<source>SMESH_DISTR</source>
</message>
<message>
<source>SMESH_DISTR_EXPR</source>
- <translation>Distribution de densité analytique</translation>
+ <translation>Distribution de densite analytique</translation>
</message>
<message>
<source>SMESH_DISTR_REGULAR</source>
- <translation>Distribution équidistante</translation>
+ <translation>Distribution equidistante</translation>
</message>
<message>
<source>SMESH_DISTR_SCALE</source>
- <translation>Progression géométrique</translation>
+ <translation>Progression geometrique</translation>
</message>
<message>
<source>SMESH_DISTR_TAB</source>
- <translation>Table de densités</translation>
+ <translation>Table de densites</translation>
</message>
<message>
<source>SMESH_DISTR_TYPE</source>
</message>
<message>
<source>SMESH_EXPR_FUNC</source>
- <translation>Expression de la densité</translation>
+ <translation>Expression de la densite</translation>
</message>
<message>
<source>SMESH_EXP_MODE</source>
</message>
<message>
<source>SMESH_FUNC_DOMAIN</source>
- <translation>Avertissement: La fonction doit être définie sur le segment [0..1]</translation>
+ <translation>Avertissement: La fonction doit etre definie sur le segment [0..1]</translation>
</message>
<message>
<source>SMESH_INSERT_ROW</source>
- <translation>Insérer une ligne</translation>
+ <translation>Inserer une ligne</translation>
</message>
<message>
<source>SMESH_INVALID_FUNCTION</source>
- <translation>La fonction n'est pas valide</translation>
+ <translation>La fonction n est pas valide</translation>
</message>
<message>
<source>SMESH_LAYERS_DISTRIBUTION</source>
- <translation>Hypothèse 1D </translation>
+ <translation>Hypothese 1D </translation>
</message>
<message>
<source>SMESH_LAYER_DISTRIBUTION_HYPOTHESIS</source>
</message>
<message>
<source>SMESH_LAYER_DISTRIBUTION_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_LOCAL_LENGTH_HYPOTHESIS</source>
</message>
<message>
<source>SMESH_LOCAL_LENGTH_PRECISION</source>
- <translation>Précision</translation>
+ <translation>Precision</translation>
</message>
<message>
<source>SMESH_LOCAL_LENGTH_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_FIXED_POINTS_1D_HYPOTHESIS</source>
</message>
<message>
<source>SMESH_FIXED_POINTS_1D_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_MAX_LENGTH_HYPOTHESIS</source>
</message>
<message>
<source>SMESH_CARTESIAN_PARAMS_HYPOTHESIS</source>
- <translation>Paramètres de Body Fitting</translation>
+ <translation>Parametres de Body Fitting</translation>
</message>
<message>
<source>SMESH_USE_PREESTIMATED_LENGTH</source>
- <translation>Utiliser la longueur pré-estimée</translation>
+ <translation>Utiliser la longueur pre-estimee</translation>
</message>
<message>
<source>SMESH_VISCOUS_LAYERS_HYPOTHESIS</source>
</message>
<message>
<source>SMESH_VISCOUS_LAYERS_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_TOTAL_THICKNESS</source>
</message>
<message>
<source>SMESH_STRETCH_FACTOR</source>
- <translation>Facteur d'échelle</translation>
+ <translation>Facteur d echelle</translation>
</message>
<message>
<source>SMESH_FACES_WO_LAYERS</source>
<translation>Faces sans couche limite
-(entrées et sorties)</translation>
+(entrees et sorties)</translation>
</message>
<message>
<source>SMESH_EDGES_WO_LAYERS</source>
- <translation>Arêtes sans couche limite
-(entrées et sorties)</translation>
+ <translation>Aretes sans couche limite
+(entrees et sorties)</translation>
</message>
<message>
<source>SMESH_EDGES_WITH_LAYERS</source>
- <translation>Arêtes avec couche limite (parois)</translation>
+ <translation>Aretes avec couche limite (parois)</translation>
</message>
<message>
<source>SMESH_FACES_WITH_LAYERS</source>
</message>
<message>
<source>SMESH_MAX_LENGTH_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_CARTESIAN_PARAMS_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_MAX_ELEMENT_AREA_HYPOTHESIS</source>
- <translation>Aire maximale d'une maille</translation>
+ <translation>Aire maximale d une maille</translation>
</message>
<message>
<source>SMESH_MAX_ELEMENT_AREA_PARAM</source>
</message>
<message>
<source>SMESH_MAX_ELEMENT_AREA_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_MAX_ELEMENT_VOLUME_HYPOTHESIS</source>
- <translation>Volume maximal d'une maille</translation>
+ <translation>Volume maximal d une maille</translation>
</message>
<message>
<source>SMESH_MAX_ELEMENT_VOLUME_PARAM</source>
</message>
<message>
<source>SMESH_MAX_ELEMENT_VOLUME_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_NB_SEGMENTS_HYPOTHESIS</source>
</message>
<message>
<source>SMESH_NB_SEGMENTS_SCALE_PARAM</source>
- <translation>Facteur d'échelle</translation>
+ <translation>Facteur d echelle</translation>
</message>
<message>
<source>SMESH_NB_SEGMENTS_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_NO_CONV</source>
</message>
<message>
<source>SMESH_NUMBER_OF_LAYERS_HYPOTHESIS</source>
- <translation>Paramètre des prismes radiaux</translation>
+ <translation>Parametre des prismes radiaux</translation>
</message>
<message>
<source>SMESH_NUMBER_OF_LAYERS_2D_HYPOTHESIS</source>
- <translation>Paramètre des quadrangles radiaux</translation>
+ <translation>Parametre des quadrangles radiaux</translation>
</message>
<message>
<source>SMESH_NUMBER_OF_LAYERS_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_NUMBER_OF_LAYERS_2D_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_PROJECTION_SOURCE_1D_HYPOTHESIS</source>
</message>
<message>
<source>SMESH_PROJECTION_SOURCE_1D_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_PROJECTION_SOURCE_2D_HYPOTHESIS</source>
</message>
<message>
<source>SMESH_PROJECTION_SOURCE_2D_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_PROJECTION_SOURCE_3D_HYPOTHESIS</source>
</message>
<message>
<source>SMESH_PROJECTION_SOURCE_3D_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_IMPORT_SOURCE_1D_HYPOTHESIS</source>
- <translation>Arêtes source</translation>
+ <translation>Aretes source</translation>
</message>
<message>
<source>SMESH_IMPORT_SOURCE_1D_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_IMPORT_SOURCE_2D_HYPOTHESIS</source>
</message>
<message>
<source>SMESH_IMPORT_SOURCE_2D_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_REMOVE_ROW</source>
</message>
<message>
<source>SMESH_REVERSED_EDGES</source>
- <translation>Arêtes inversées</translation>
+ <translation>Aretes inversees</translation>
</message>
<message>
<source>SMESH_FIXED_POINTS</source>
- <translation>Points fixés</translation>
+ <translation>Points fixes</translation>
</message>
<message>
<source>SMESH_RANGE</source>
</message>
<message>
<source>SMESH_SAME_NB_SEGMENTS</source>
- <translation>Le même Nb. segments dans chaque intervalle</translation>
+ <translation>Le meme Nb. segments dans chaque intervalle</translation>
</message>
<message>
<source>SMESH_BASE_VERTEX</source>
</message>
<message>
<source>SMESH_SEGMENT_LENGTH_AROUND_VERTEX_HYPOTHESIS</source>
- <translation>Longueur des segments autour d'un point</translation>
+ <translation>Longueur des segments autour d un point</translation>
</message>
<message>
<source>SMESH_SEGMENT_LENGTH_AROUND_VERTEX_PARAM</source>
</message>
<message>
<source>SMESH_SEGMENT_LENGTH_AROUND_VERTEX_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_SOURCE_3DSHAPE</source>
</message>
<message>
<source>SMESH_SOURCE_EDGE</source>
- <translation>Arête</translation>
+ <translation>Arete</translation>
</message>
<message>
<source>SMESH_SOURCE_EDGES</source>
- <translation>Groupes d'arêtes</translation>
+ <translation>Groupes d aretes</translation>
</message>
<message>
<source>SMESH_SOURCE_FACE</source>
</message>
<message>
<source>SMESH_START_END_LENGTH_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_START_LENGTH_PARAM</source>
</message>
<message>
<source>SMESH_QUADRANGLE_PARAMS_HYPOTHESIS</source>
- <translation>Paramètres pour le maillage quadrangulaire</translation>
+ <translation>Parametres pour le maillage quadrangulaire</translation>
</message>
<message>
<source>SMESH_QUADRANGLE_PARAMS_TITLE</source>
- <translation>Construction de l'hypothèse</translation>
+ <translation>Construction de l hypothese</translation>
</message>
<message>
<source>SMESH_QUAD_TYPE</source>
</message>
<message>
<source>SMESH_QUAD_TYPE_1</source>
- <translation>Triangles privilégiés</translation>
+ <translation>Triangles privilegies</translation>
</message>
<message>
<source>SMESH_QUAD_TYPE_2</source>
- <translation>Quadrangles privilégiés</translation>
+ <translation>Quadrangles privilegies</translation>
</message>
<message>
<source>SMESH_QUAD_TYPE_3</source>
- <translation>Quadrangles privilégiés (inversé)</translation>
+ <translation>Quadrangles privilegies (inverse)</translation>
</message>
<message>
<source>SMESH_QUAD_TYPE_4</source>
- <translation>Réduction</translation>
+ <translation>Reduction</translation>
</message>
</context>
<context>
<name>StdMeshersGUI_QuadrangleParamCreator</name>
<message>
<source>POINTS</source>
- <translation>Coordonnées</translation>
+ <translation>Coordonnees</translation>
</message>
<message>
<source>SHAPES</source>
</message>
<message>
<source>ENF_NODES</source>
- <translation>Nœuds imposés</translation>
+ <translation>Noeuds imposes</translation>
</message>
</context>
<context>
</message>
<message>
<source>CREATE</source>
- <translation>Créer</translation>
+ <translation>Creer</translation>
</message>
<message>
<source>EDIT</source>
</message>
<message>
<source>ADD_EDGES</source>
- <translation>Ajouter des arêtes</translation>
+ <translation>Ajouter des aretes</translation>
</message>
<message>
<source>AXIS_X</source>
</message>
<message>
<source>RESET_AXES</source>
- <translation>Réinitialiser</translation>
+ <translation>Reinitialiser</translation>
</message>
</context>
<context>
<name>StdMeshersGUI::GridAxisTab</name>
<message>
<source>GRID_DEF_MODE</source>
- <translation>Mode de définition</translation>
+ <translation>Mode de definition</translation>
</message>
<message>
<source>SPACING</source>
</message>
<message>
<source>INSERT</source>
- <translation>Insérer</translation>
+ <translation>Inserer</translation>
</message>
<message>
<source>COORD_STEP</source>
</message>
<message>
<source>SHOW_GEOMETRY</source>
- <translation>Affiche toute la géométrie</translation>
+ <translation>Affiche toute la geometrie</translation>
</message>
<message>
<source>PROPAGATION_CHAINS</source>
- <translation>Chaînes de propagation</translation>
+ <translation>Chaines de propagation</translation>
</message>
<message>
<source>ADD</source>
</message>
<message>
<source>NO_CHAINS</source>
- <translation>(aucune chaîne)</translation>
+ <translation>(aucune chaine)</translation>
</message>
<message>
<source>CHAIN_NUM_NB_EDGES</source>
- <translation>Chaîne %1 (%2 arêtes)</translation>
+ <translation>Chaine %1 (%2 aretes)</translation>
</message>
</context>
</TS>
/*!
* Le cas 1 traduit le fait que deux des sommets du T4 initial sont dans le plan de coupe.
- * Le point d'intersection franc trouvé est sur l'arête opposée à ces deux points du T4.
+ * Le point d'intersection franc trouve est sur l'arete opposee a ces deux points du T4.
* Le T4 initial produit deux nouveaux T4.
*/
// cout << "Cas 1 - it4=" << it4 << ", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4]
// << " " << VN[5] << " " << endl;
- // Numéros des noeuds du TETRA4
+ // Numeros des noeuds du TETRA4
int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
if (VN[0] != -1)
{
- // Le sommet de T4new1 servant à la détermination du groupe est le noeud 1 du T4 d'origine
+ // Le sommet de T4new1 servant a la determination du groupe est le noeud 1 du T4 d'origine
// cout << "cas 1/0" << endl;
newCNX[TETRA4].push_back(VN[0]);
else if (VN[1] != -1)
{
- // Le sommet de T4new1 servant à la détermination du groupe est le noeud 0 du T4 d'origine
+ // Le sommet de T4new1 servant a la determination du groupe est le noeud 0 du T4 d'origine
// cout << "cas 1/1" << endl;
newCNX[TETRA4].push_back(ng0);
else if (VN[2] != -1)
{
- // Le sommet de T4new1 servant à la détermination du groupe est le noeud 0 du T4 d'origine
+ // Le sommet de T4new1 servant a la determination du groupe est le noeud 0 du T4 d'origine
// cout << "cas 1/2" << endl;
newCNX[TETRA4].push_back(ng0);
else if (VN[3] != -1)
{
- // Le sommet de T4new1 servant à la détermination du groupe est le noeud 1 du T4 d'origine
+ // Le sommet de T4new1 servant a la determination du groupe est le noeud 1 du T4 d'origine
// cout << "cas 1/3" << endl;
newCNX[TETRA4].push_back(ng0);
else if (VN[4] != -1)
{
- // Le sommet de T4new1 servant à la détermination du groupe est le noeud 1 du T4 d'origine
+ // Le sommet de T4new1 servant a la determination du groupe est le noeud 1 du T4 d'origine
// cout << "cas 1/4" << endl;
newCNX[TETRA4].push_back(ng0);
else if (VN[5] != -1)
{
- // Le sommet de T4new1 servant à la détermination du groupe est le noeud 3 du T4 d'origine
+ // Le sommet de T4new1 servant a la determination du groupe est le noeud 3 du T4 d'origine
// cout << "cas 1/5" << endl;
newCNX[TETRA4].push_back(ng0);
/*! Deux points d'intersection
* Le cas 2 traduit le fait qu'un des sommets du T4 est dans le plan de coupe.
- * Ce sommet est celui des quatre qui n'appartient à aucune des deux arêtes sur lesquelles
- * un point d'intersection non -1 a été calculé.
+ * Ce sommet est celui des quatre qui n'appartient a aucune des deux aretes sur lesquelles
+ * un point d'intersection non -1 a ete calcule.
*
- * Le T4 initial produit un nouveau T4 et un élément PYRAM5.
+ * Le T4 initial produit un nouveau T4 et un element PYRAM5.
*
*/
void MESHCUT::cas2(int VN[6], int it4)
// cout << "Cas 2 - it4=" << it4 << ", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4]
// << " " << VN[5] << " " << endl;
- // Numéros des noeuds du TETRA4
+ // Numeros des noeuds du TETRA4
int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
* N1 N2 N3 N4 N5 N6
*
* où N1 N2 N3 sont les sommets du haut et N4 N5 N6 les sommets du bas
- * (selon l'orientation donnée par le sens des triangles)
+ * (selon l'orientation donnee par le sens des triangles)
*/
void MESHCUT::cas3(int VN[6], int it4)
{
cutTetras.push_back(it4);
// cout << "Cas 3 - it4="<<it4<<", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4] << " " << VN[5] << " " << endl;
- // Numéros des noeuds du TETRA4
+ // Numeros des noeuds du TETRA4
int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
* N1 N2 N3 N4 N5 N6
*
* où N1 N2 N3 sont les sommets du haut et N4 N5 N6 les sommets du bas
- * (selon l'orientation donnée par le sens des triangles)
+ * (selon l'orientation donnee par le sens des triangles)
*/
void MESHCUT::cas4(int VN[6], int it4)
{
// cout << "Cas 4 - it4=" << it4 << ", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4]
// << " " << VN[5] << " " << endl;
- // Numéros des noeuds du TETRA4
+ // Numeros des noeuds du TETRA4
int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
int ng3 = MAILLAGE1->CNX[TETRA4][4 * it4 + 3];
- int i1, i2; // Numéros locaux dans le type des mailles créées
+ int i1, i2; // Numeros locaux dans le type des mailles creees
if (VN[0] == -1 && VN[5] == -1)
{
- // Les deux arêtes opposées sont [0,1] et [2,3]
+ // Les deux aretes opposees sont [0,1] et [2,3]
newCNX[PENTA6].push_back(ng0);
newCNX[PENTA6].push_back(VN[1]);
else if (VN[1] == -1 && VN[4] == -1)
{
- // Les deux arêtes opposées sont [0,2] et [1,3]
+ // Les deux aretes opposees sont [0,2] et [1,3]
newCNX[PENTA6].push_back(ng2);
newCNX[PENTA6].push_back(VN[3]);
else if (VN[2] == -1 && VN[3] == -1)
{
- // Les deux arêtes opposées sont [0,3] et [1,2]
+ // Les deux aretes opposees sont [0,3] et [1,2]
newCNX[PENTA6].push_back(ng0);
newCNX[PENTA6].push_back(VN[0]);
char *id_maillagenew = argv[3];
str_id_maillagenew = (string) id_maillagenew;
- // Groupes créés
+ // Groupes crees
char *id_GMplus = argv[4];
str_id_GMplus = (string) id_GMplus;
char *id_GMmoins = argv[5];
char *charzm = argv[11];
zm = char2float(charzm);
- // Tolérance : epsilon = tolérance * longueur arête moyenne - où epsilon est la tolérance absolue (distance)
+ // Tolerance : epsilon = tolerance * longueur arete moyenne - où epsilon est la tolerance absolue (distance)
char *chtolerance = argv[12];
tolerance = char2float(chtolerance);
}
pointPlan[1] = ym;
pointPlan[2] = zm;
- // Calcul du coefficient d de l'équation du plan xn x + yn y + zn n + d = 0
+ // Calcul du coefficient d de l'equation du plan xn x + yn y + zn n + d = 0
d = -normale[0] * xm - normale[1] * ym - normale[2] * zm;
intersections.clear();
cout << salome_chrono() << " - Finished!" << endl << endl;
exit(0);
}
- // A partir de cet instant le maillage contient forcément des TETRA4
+ // A partir de cet instant le maillage contient forcement des TETRA4
// Chargement des distances noeud-plan DNP
DNP[k] = distanceNoeudPlan(k + 1);
cout << salome_chrono() << " - End of computation of distances between nodes and plane" << endl;
- // Longueur d'arête moyenne des T4 intersectant le plan de coupe
+ // Longueur d'arete moyenne des T4 intersectant le plan de coupe
float LONGUEURS = 0.0;
int cptLONGUEURS = 0;
for (int it4 = 0; it4 < MAILLAGE1->EFFECTIFS_TYPES[TETRA4]; it4++)
}
if (plus && moins)
{
- // Ce tetra est à cheval sur le plan de coupe: on calcule ses longueurs d'arêtes
+ // Ce tetra est a cheval sur le plan de coupe: on calcule ses longueurs d'aretes
LONGUEURS += longueurSegment(*(offset + 0), *(offset + 1));
cptLONGUEURS++;
LONGUEURS += longueurSegment(*(offset + 0), *(offset + 2));
}
}
- // Aucun TETRA4 intercepté par le plan de coupe : on rend MAILLAGE1
+ // Aucun TETRA4 intercepte par le plan de coupe : on rend MAILLAGE1
if (cptLONGUEURS == 0)
{
cout
cout << salome_chrono() << " - Finished!" << endl << endl;
exit(0);
}
- // A partir de cet instant le maillage contient forcément des TETRA4 intersectant le plan de coupe
+ // A partir de cet instant le maillage contient forcement des TETRA4 intersectant le plan de coupe
float longueurMoyenne = LONGUEURS / cptLONGUEURS;
cout << "Tolerance = " << tolerance << endl;
cout << "Epsilon = " << epsilon << endl;
- // Détermination des positions de noeuds par rapport au plan de coupe - POSN
+ // Determination des positions de noeuds par rapport au plan de coupe - POSN
POSN = (int*) malloc(sizeof(int) * MAILLAGE1->nombreNoeudsMaillage);
for (int k = 0; k < MAILLAGE1->nombreNoeudsMaillage; k++)
{
GMmoins[TETRA4].push_back(it4);
else if (S[0] == -1 && S[1] == -1 && S[2] == -1 && S[3] == 1)
- { // Cas 3 - Arêtes 2 4 5
+ { // Cas 3 - Aretes 2 4 5
V[0] = -1;
V[1] = -1;
V[2] = intersectionSegmentPlan(it4, 2);
GMmoins[TETRA4].push_back(it4);
else if (S[0] == -1 && S[1] == -1 && S[2] == 0 && S[3] == 1)
- { // Cas 2, arêtes 2 4
+ { // Cas 2, aretes 2 4
V[0] = -1;
V[1] = -1;
V[2] = intersectionSegmentPlan(it4, 2);
// -------------------------------------------------------------------
else if (S[0] == -1 && S[1] == -1 && S[2] == 1 && S[3] == -1)
- { // Cas 3, arêtes 1 3 5
+ { // Cas 3, aretes 1 3 5
V[0] = -1;
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = -1;
}
else if (S[0] == -1 && S[1] == -1 && S[2] == 1 && S[3] == 0)
- { // Cas 2, arêtes 1 3
+ { // Cas 2, aretes 1 3
V[0] = -1;
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = -1;
}
else if (S[0] == -1 && S[1] == -1 && S[2] == 1 && S[3] == 1)
- { // Cas 4, arêtes 1 2 3 4
+ { // Cas 4, aretes 1 2 3 4
V[0] = -1;
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = intersectionSegmentPlan(it4, 2);
GMmoins[TETRA4].push_back(it4);
else if (S[0] == -1 && S[1] == 0 && S[2] == -1 && S[3] == 1)
- { // Cas 2, arêtes 2 5
+ { // Cas 2, aretes 2 5
V[0] = -1;
V[1] = -1;
V[2] = intersectionSegmentPlan(it4, 2);
GMmoins[TETRA4].push_back(it4);
else if (S[0] == -1 && S[1] == 0 && S[2] == 0 && S[3] == 1)
- { // Cas 1, arête 2
+ { // Cas 1, arete 2
V[0] = -1;
V[1] = -1;
V[2] = intersectionSegmentPlan(it4, 2);
// -------------------------------------------------------------------
else if (S[0] == -1 && S[1] == 0 && S[2] == 1 && S[3] == -1)
- { // Cas 2, arêtes 1 5
+ { // Cas 2, aretes 1 5
V[0] = -1;
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = -1;
}
else if (S[0] == -1 && S[1] == 0 && S[2] == 1 && S[3] == 0)
- { // Cas 1, arête 1
+ { // Cas 1, arete 1
V[0] = -1;
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = -1;
}
else if (S[0] == -1 && S[1] == 0 && S[2] == 1 && S[3] == 1)
- { // Cas 2, arêtes 1 2
+ { // Cas 2, aretes 1 2
V[0] = -1;
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = intersectionSegmentPlan(it4, 2);
// -------------------------------------------------------------------
else if (S[0] == -1 && S[1] == 1 && S[2] == -1 && S[3] == -1)
- { // Cas 3, arêtes 0 3 4
+ { // Cas 3, aretes 0 3 4
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = -1;
V[2] = -1;
}
else if (S[0] == -1 && S[1] == 1 && S[2] == -1 && S[3] == 0)
- { // Cas 2, arêtes 0 3
+ { // Cas 2, aretes 0 3
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = -1;
V[2] = -1;
}
else if (S[0] == -1 && S[1] == 1 && S[2] == -1 && S[3] == 1)
- { // Cas 4, arêtes 0 2 3 5
+ { // Cas 4, aretes 0 2 3 5
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = -1;
V[2] = intersectionSegmentPlan(it4, 2);
// -------------------------------------------------------------------
else if (S[0] == -1 && S[1] == 1 && S[2] == 0 && S[3] == -1)
- { // Cas 2, arêtes 0 4
+ { // Cas 2, aretes 0 4
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = -1;
V[2] = -1;
}
else if (S[0] == -1 && S[1] == 1 && S[2] == 0 && S[3] == 0)
- { // Cas 1, arête 0
+ { // Cas 1, arete 0
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = -1;
V[2] = -1;
}
else if (S[0] == -1 && S[1] == 1 && S[2] == 0 && S[3] == 1)
- { // Cas 2, arêtes 0 2
+ { // Cas 2, aretes 0 2
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = -1;
V[2] = intersectionSegmentPlan(it4, 2);
// -------------------------------------------------------------------
else if (S[0] == -1 && S[1] == 1 && S[2] == 1 && S[3] == -1)
- { // Cas 4, arêtes 0 1 4 5
+ { // Cas 4, aretes 0 1 4 5
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = -1;
}
else if (S[0] == -1 && S[1] == 1 && S[2] == 1 && S[3] == 0)
- { // Cas 2, arêtes 0 1
+ { // Cas 2, aretes 0 1
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = -1;
}
else if (S[0] == -1 && S[1] == 1 && S[2] == 1 && S[3] == 1)
- { // Cas 3, arêtes 0 1 2
+ { // Cas 3, aretes 0 1 2
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = intersectionSegmentPlan(it4, 2);
GMmoins[TETRA4].push_back(it4);
else if (S[0] == 0 && S[1] == -1 && S[2] == -1 && S[3] == 1)
- { // Cas 2, arêtes 4 5
+ { // Cas 2, aretes 4 5
V[0] = -1;
V[1] = -1;
V[2] = -1;
GMmoins[TETRA4].push_back(it4);
else if (S[0] == 0 && S[1] == -1 && S[2] == 0 && S[3] == 1)
- { // Cas 1, arête 4
+ { // Cas 1, arete 4
V[0] = -1;
V[1] = -1;
V[2] = -1;
// -------------------------------------------------------------------
else if (S[0] == 0 && S[1] == -1 && S[2] == 1 && S[3] == -1)
- { // Cas 2, arêtes 3 5
+ { // Cas 2, aretes 3 5
V[0] = -1;
V[1] = -1;
V[2] = -1;
}
else if (S[0] == 0 && S[1] == -1 && S[2] == 1 && S[3] == 0)
- { // Cas 1, arête 3
+ { // Cas 1, arete 3
V[0] = -1;
V[1] = -1;
V[2] = -1;
}
else if (S[0] == 0 && S[1] == -1 && S[2] == 1 && S[3] == 1)
- { // Cas 2, arêtes 3 4
+ { // Cas 2, aretes 3 4
V[0] = -1;
V[1] = -1;
V[2] = -1;
GMmoins[TETRA4].push_back(it4);
else if (S[0] == 0 && S[1] == 0 && S[2] == -1 && S[3] == 1)
- { // Cas 1, arête 5
+ { // Cas 1, arete 5
V[0] = -1;
V[1] = -1;
V[2] = -1;
// -------------------------------------------------------------------
else if (S[0] == 0 && S[1] == 0 && S[2] == 1 && S[3] == -1)
- { // Cas 1, arête 5
+ { // Cas 1, arete 5
V[0] = -1;
V[1] = -1;
V[2] = -1;
// -------------------------------------------------------------------
else if (S[0] == 0 && S[1] == 1 && S[2] == -1 && S[3] == -1)
- { // Cas 2, arêtes 3 4
+ { // Cas 2, aretes 3 4
V[0] = -1;
V[1] = -1;
V[2] = -1;
}
else if (S[0] == 0 && S[1] == 1 && S[2] == -1 && S[3] == 0)
- { // Cas 1, arête 3
+ { // Cas 1, arete 3
V[0] = -1;
V[1] = -1;
V[2] = -1;
}
else if (S[0] == 0 && S[1] == 1 && S[2] == -1 && S[3] == 1)
- { // Cas 2, arêtes 3 5
+ { // Cas 2, aretes 3 5
V[0] = -1;
V[1] = -1;
V[2] = -1;
// -------------------------------------------------------------------
else if (S[0] == 0 && S[1] == 1 && S[2] == 0 && S[3] == -1)
- { // Cas 1, arête 4
+ { // Cas 1, arete 4
V[0] = -1;
V[1] = -1;
V[2] = -1;
// -------------------------------------------------------------------
else if (S[0] == 0 && S[1] == 1 && S[2] == 1 && S[3] == -1)
- { // Cas 2, arêtes 4 5
+ { // Cas 2, aretes 4 5
V[0] = -1;
V[1] = -1;
V[2] = -1;
// -------------------------------------------------------------------
else if (S[0] == 1 && S[1] == -1 && S[2] == -1 && S[3] == -1)
- { // Cas 3, arêtes 0 1 2
+ { // Cas 3, aretes 0 1 2
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = intersectionSegmentPlan(it4, 2);
}
else if (S[0] == 1 && S[1] == -1 && S[2] == -1 && S[3] == 0)
- { // Cas 2, arêtes 0 1
+ { // Cas 2, aretes 0 1
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = -1;
}
else if (S[0] == 1 && S[1] == -1 && S[2] == -1 && S[3] == 1)
- { // Cas 4, arêtes 0 1 4 5
+ { // Cas 4, aretes 0 1 4 5
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = -1;
// -------------------------------------------------------------------
else if (S[0] == 1 && S[1] == -1 && S[2] == 0 && S[3] == -1)
- { // Cas 2, arêtes 0 2
+ { // Cas 2, aretes 0 2
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = -1;
V[2] = intersectionSegmentPlan(it4, 2);
}
else if (S[0] == 1 && S[1] == -1 && S[2] == 0 && S[3] == 0)
- { // Cas 1, arête 0
+ { // Cas 1, arete 0
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = -1;
V[2] = -1;
}
else if (S[0] == 1 && S[1] == -1 && S[2] == 0 && S[3] == 1)
- { // Cas 2, arêtes 0 4
+ { // Cas 2, aretes 0 4
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = -1;
V[2] = -1;
// -------------------------------------------------------------------
else if (S[0] == 1 && S[1] == -1 && S[2] == 1 && S[3] == -1)
- { // Cas 4, arêtes 0 2 3 5
+ { // Cas 4, aretes 0 2 3 5
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = -1;
V[2] = intersectionSegmentPlan(it4, 2);
}
else if (S[0] == 1 && S[1] == -1 && S[2] == 1 && S[3] == 0)
- { // Cas 2, arêtes 0 3
+ { // Cas 2, aretes 0 3
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = -1;
V[2] = -1;
}
else if (S[0] == 1 && S[1] == -1 && S[2] == 1 && S[3] == 1)
- { // Cas 3, arêtes 0 3 4
+ { // Cas 3, aretes 0 3 4
V[0] = intersectionSegmentPlan(it4, 0);
V[1] = -1;
V[2] = -1;
// -------------------------------------------------------------------
else if (S[0] == 1 && S[1] == 0 && S[2] == -1 && S[3] == -1)
- { // Cas 2, arêtes 1 2
+ { // Cas 2, aretes 1 2
V[0] = -1;
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = intersectionSegmentPlan(it4, 2);
}
else if (S[0] == 1 && S[1] == 0 && S[2] == -1 && S[3] == 0)
- { // Cas 1, arête 1
+ { // Cas 1, arete 1
V[0] = -1;
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = -1;
}
else if (S[0] == 1 && S[1] == 0 && S[2] == -1 && S[3] == 1)
- { // Cas 2, arêtes 1 5
+ { // Cas 2, aretes 1 5
V[0] = -1;
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = -1;
// -------------------------------------------------------------------
else if (S[0] == 1 && S[1] == 0 && S[2] == 0 && S[3] == -1)
- { // Cas 1, arête 2
+ { // Cas 1, arete 2
V[0] = -1;
V[1] = -1;
V[2] = intersectionSegmentPlan(it4, 2);
// -------------------------------------------------------------------
else if (S[0] == 1 && S[1] == 0 && S[2] == 1 && S[3] == -1)
- { // Cas 2, arêtes 2 5
+ { // Cas 2, aretes 2 5
V[0] = -1;
V[1] = -1;
V[2] = intersectionSegmentPlan(it4, 2);
// -------------------------------------------------------------------
else if (S[0] == 1 && S[1] == 1 && S[2] == -1 && S[3] == -1)
- { // Cas 4, arêtes 1 2 3 4
+ { // Cas 4, aretes 1 2 3 4
V[0] = -1;
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = intersectionSegmentPlan(it4, 2);
}
else if (S[0] == 1 && S[1] == 1 && S[2] == -1 && S[3] == 0)
- { // Cas 2, arêtes 1 3
+ { // Cas 2, aretes 1 3
V[0] = -1;
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = -1;
}
else if (S[0] == 1 && S[1] == 1 && S[2] == -1 && S[3] == 1)
- { // Cas 3, arêtes 1 3 5
+ { // Cas 3, aretes 1 3 5
V[0] = -1;
V[1] = intersectionSegmentPlan(it4, 1);
V[2] = -1;
// -------------------------------------------------------------------
else if (S[0] == 1 && S[1] == 1 && S[2] == 0 && S[3] == -1)
- { // Cas 2, arêtes 2 4
+ { // Cas 2, aretes 2 4
V[0] = -1;
V[1] = -1;
V[2] = intersectionSegmentPlan(it4, 2);
// -------------------------------------------------------------------
else if (S[0] == 1 && S[1] == 1 && S[2] == 1 && S[3] == -1)
- { // Cas 3, arêtes 2 4 5
+ { // Cas 3, aretes 2 4 5
V[0] = -1;
V[1] = -1;
V[2] = intersectionSegmentPlan(it4, 2);
MAILLAGE2->nombreMaillesMaillage = MAILLAGE1->nombreMaillesMaillage + cptNouvellesMailles[TETRA4]
+ cptNouvellesMailles[PYRAM5] + cptNouvellesMailles[PENTA6];
- // ---------- Coordonnées
- // Optimisation de la mémoire au détriment du temps
+ // ---------- Coordonnees
+ // Optimisation de la memoire au detriment du temps
- // Héritage des coordonnées MAILLAGE1
+ // Heritage des coordonnees MAILLAGE1
MAILLAGE2->XX = (float*) malloc(sizeof(float) * MAILLAGE2->nombreNoeudsMaillage);
for (int i = 0; i < MAILLAGE1->nombreNoeudsMaillage; i++)
*(MAILLAGE2->XX + i) = *(MAILLAGE1->XX + i);
*(MAILLAGE2->ZZ + i) = *(MAILLAGE1->ZZ + i);
free(MAILLAGE1->ZZ);
- // Coordonnées des noeuds créés
+ // Coordonnees des noeuds crees
for (int i = 0; i < MAILLAGE2->nombreNoeudsMaillage - MAILLAGE1->nombreNoeudsMaillage; i++)
{
*(MAILLAGE2->XX + MAILLAGE1->nombreNoeudsMaillage + i) = newXX[i];
}
else
{
- // Pour les types TETRA4 PYRAM5 PENTA6 on recopie CNX1 et on ajoute à la suite les newCNX
+ // Pour les types TETRA4 PYRAM5 PENTA6 on recopie CNX1 et on ajoute a la suite les newCNX
// cout << "Legacy " << tm << " effectif " << MAILLAGE1->EFFECTIFS_TYPES[tm] << endl;
int tailleType = Nnoeuds(tm);
}
/*!
- * Equation paramétrique de la droite AB: OP = OA + lambda AB
+ * Equation parametrique de la droite AB: OP = OA + lambda AB
*
- * Fonction caractéristique du plan : PI(X,Y,Z) = nx X + ny Y + nz Z + d
+ * Fonction caracteristique du plan : PI(X,Y,Z) = nx X + ny Y + nz Z + d
*
* Pour un point P de la droite: PI(OP) = PI(OA) + lambda n.AB avec n=(nx,ny,nz),
- * L'intersection AB/plan est donnée par le point P tel que PI(OP)=0.
+ * L'intersection AB/plan est donnee par le point P tel que PI(OP)=0.
*
- * Il lui correspond la coordonnée lambda = - PI(OA) / n.AB.
+ * Il lui correspond la coordonnee lambda = - PI(OA) / n.AB.
*
* Cette intersection est dans le segment si lambda est dans [0,1]
*/
int MESHCUT::intersectionSegmentPlan(int it4, int na)
{
- int ngA = -1, ngB = -1; // Numéros des noeuds extrémités AB
+ int ngA = -1, ngB = -1; // Numeros des noeuds extremites AB
float lambda, ps; //, ab; // ab = longueur AB
float A[3], B[3];
- // Détermination des ng des extrémités de l'arête passée en argument na
+ // Determination des ng des extremites de l'arete passee en argument na
int * offset = MAILLAGE1->CNX[TETRA4] + 4 * it4;
if (na == 0)
{
// // Longueur AB
// float lx = B[0] - A[0], ly = B[1] - A[1], lz = B[2] - A[2];
// ab = sqrt(lx * lx + ly * ly + lz * lz);
- // // La longueur maximale théorique est 2 epsilon
+ // // La longueur maximale theorique est 2 epsilon
// if (ab < 2 * epsilon * 0.9)
- // ERREUR("Arête de longueur inférieure au minimum théorique 2 epsilon");
+ // ERREUR("Arete de longueur inferieure au minimum theorique 2 epsilon");
// Calcul du produit scalaire AB.n
ps = 0.0;
if (debug)
{
- cout << "Routine ISP : arête " << na << " - ngA=" << ngA << " ngB=" << ngB << endl;
+ cout << "Routine ISP : arete " << na << " - ngA=" << ngA << " ngB=" << ngB << endl;
cout << "A : " << A[0] << ' ' << A[1] << ' ' << A[2] << endl;
cout << "B : " << B[0] << ' ' << B[1] << ' ' << B[2] << endl;
cout << "N : " << normale[0] << ' ' << normale[1] << ' ' << normale[2] << endl;
intersections[cle1] = indexNouveauxNoeuds;
intersections[cle2] = indexNouveauxNoeuds;
- // cout << "création noeud " << indexNouveauxNoeuds << " : " << inter[0] << " " << inter[1] << " " << inter[2]
+ // cout << "creation noeud " << indexNouveauxNoeuds << " : " << inter[0] << " " << inter[1] << " " << inter[2]
// << endl;
if (debug)
cout << " sortie nouveau noeud, lambda = " << lambda << " , noeud = " << indexNouveauxNoeuds << endl;
namespace MESHCUT
{
- /*! Table des points d'intersection calculés.
- * Si on a calculé une intersection entre le plan et un segment reliant N1 et N2
- * de numéros globaux n1 et n2, on stocke dans ce tableau, sous les libellés "n1_n2" et "n2_n1",
- * le numéro global du point d'intersection (noeud créé).
- * On évite ainsi de calculer deux fois l'intersection d'une même arête de T4 avec le plan
+ /*! Table des points d'intersection calcules.
+ * Si on a calcule une intersection entre le plan et un segment reliant N1 et N2
+ * de numeros globaux n1 et n2, on stocke dans ce tableau, sous les libelles "n1_n2" et "n2_n1",
+ * le numero global du point d'intersection (noeud cree).
+ * On evite ainsi de calculer deux fois l'intersection d'une meme arete de T4 avec le plan
*/
extern std::map<std::string, int> intersections;
extern std::vector<int> cutTetras;
extern float *DNP; //!< Distance Noeud Plan
- extern int *POSN; //!< Version -1/0/+1 du précédent, selon epsilon
+ extern int *POSN; //!< Version -1/0/+1 du precedent, selon epsilon
extern std::string str_id_maillagenew;
- extern float normale[3], pointPlan[3]; //!< Définition du plan de coupe
- extern float d; //!< coefficient constant de l'équation du plan de coupe
- extern float epsilon; //!< distance en dessous de laquelle un point est considéré comme appartenant au plan de coupe
+ extern float normale[3], pointPlan[3]; //!< Definition du plan de coupe
+ extern float d; //!< coefficient constant de l'equation du plan de coupe
+ extern float epsilon; //!< distance en dessous de laquelle un point est considere comme appartenant au plan de coupe
extern bool debug;
extern int Naretes;
cout << "Affichage des mailles du type " << TM2string(tm) << " (effectif " << EFFECTIFS_TYPES[tm] << "): " << endl;
if (EFFECTIFS_TYPES[tm])
{
- // Boucle sur les connectivités d'un type tm
+ // Boucle sur les connectivites d'un type tm
int nnoeuds = Nnoeuds(tm);
for (int i = 0; i < EFFECTIFS_TYPES[tm]; i++)
{
cout << "\tMaille " << i << " :" << endl;
- //Boucle sur les noeuds de la maille de numéro local i dans le type tm
+ //Boucle sur les noeuds de la maille de numero local i dans le type tm
int * offset = CNX[tm] + nnoeuds * i;
for (int j = 0; j < nnoeuds; j++)
{
void Maillage::listeMaillesType(TYPE_MAILLE tm)
{
- cout << "La fonction \"Restitution des mailles par type\" est obsolète " << endl;
+ cout << "La fonction \"Restitution des mailles par type\" est obsolete " << endl;
// cout << "Restitution des mailles du type " << TM2string(tm) << " (effectif " << EFFECTIFS_TYPES[tm] << "): " << endl;
// if (EFFECTIFS_TYPES[tm])
//void Maillage::listeMaillesGMordonne(std::string nomGM)
//{
-// cout << "Liste ordonnée des mailles du groupe " << nomGM << " (" << GM[nomGM].size() << " mailles) : ";
+// cout << "Liste ordonnee des mailles du groupe " << nomGM << " (" << GM[nomGM].size() << " mailles) : ";
// sort(GM[nomGM].begin(), GM[nomGM].end());
// for (int j = 0; j < GM[nomGM].size(); j++)
// cout << GM[nomGM][j] << " ";
void Maillage::listeNoeudsGNordonne(std::string nomGN)
{
- cout << "Liste ordonnée des noeuds du groupe " << nomGN << " (" << GN[nomGN].size() << " noeuds) : ";
+ cout << "Liste ordonnee des noeuds du groupe " << nomGN << " (" << GN[nomGN].size() << " noeuds) : ";
sort(GN[nomGN].begin(), GN[nomGN].end());
for (unsigned int j = 0; j < GN[nomGN].size(); j++)
cout << GN[nomGN][j] << " ";
// int nnoeuds = Nnoeuds(tm);
// for (int i = 0; i < CON[tm].size() / nnoeuds; i++)
// {
-// //Boucle sur les noeuds de la maille de numéro local i dans le type tm
+// //Boucle sur les noeuds de la maille de numero local i dans le type tm
// for (int j = 0; j < nnoeuds; j++)
// {
// //..... CON[tm][nnoeuds*i+j];
// }
// }
// }
-// // Boucle sur les connectivités d'un type tm
+// // Boucle sur les connectivites d'un type tm
//}
void Maillage::inputMED(std::string fichierMED)
{
- //cout << endl << "Début procédure inputMED, fichier "<< fichierMED << endl;
+ //cout << endl << "Debut procedure inputMED, fichier "<< fichierMED << endl;
// int i, j, k, ichamp, igauss, ipt, ival;
int j;
FAMILLES_NOEUDS.clear();
GROUPES_MAILLES.clear();
GROUPES_NOEUDS.clear();
- RESIDU.clear(); // Sera initialisé à 1 par la routine acquisitionTYPE_inputMED
+ RESIDU.clear(); // Sera initialise a 1 par la routine acquisitionTYPE_inputMED
tailleFAMILLES.clear();
tailleGROUPES.clear();
// nGauss = MEDnGauss(fid);
// if (debug > 0)
- // cout << "Nombre d'éléments portant des points de Gauss: " << (int) nGauss << endl;
+ // cout << "Nombre d'elements portant des points de Gauss: " << (int) nGauss << endl;
// map<string, int> REFGAUSS;
// map<string, int>::iterator iterGAUSS;
// for (igauss = 1; igauss <= nGauss; igauss++)
// pflval = (med_int*) malloc(sizeof(med_int) * nvalprofil);
// if (MEDprofilLire(fid, pflval, nomprofil) < 0)
// ERREUR("ERREUR MEDprofilLire");
- // //cout << " Affichage des 100 premières valeurs:" << endl;
+ // //cout << " Affichage des 100 premieres valeurs:" << endl;
// //for (ival=0;ival<min(100,nvalprofil);ival++) cout << " " << *(pflval+ival) ;
// free(pflval);
// }
// cout << " Nom: " << (string) nomChamp << endl;
// cout << " Type: " << typeChamp << endl;
// cout << " Noms des composantes: " << (string) compChamp << endl;
- // cout << " Unités des composantes: " << (string) unitChamp << endl;
+ // cout << " Unites des composantes: " << (string) unitChamp << endl;
//
// infoChamps((string) "NOEUDS", MED_NODE, MED_NONE, fid, maa, nomChamp, typeChamp, nCompChamp, REFGAUSS);
// infoChamps((string) "POI1", MED_CELL, MED_POINT1, fid, maa, nomChamp, typeChamp, nCompChamp, REFGAUSS);
//
// }
//
- // cout << endl << "Rappel des codes de géométries: " << endl;
+ // cout << endl << "Rappel des codes de geometries: " << endl;
// cout << " TETRA4 = " << MED_TETRA4 << endl;
// cout << " PENTA6 = " << MED_PENTA6 << endl;
// cout << " HEXA8 = " << MED_HEXA8 << endl;
string line, IDnoeud;
float x0, x1, y0, y1, z0, z1;
- vector<int> RESIDU_NOEUDS; // Table de vérité du résidu des noeuds
+ vector<int> RESIDU_NOEUDS; // Table de verite du residu des noeuds
ostringstream OSCOORD;
med_int nnoe = 0; // Nbre de noeuds
- med_float *coo1 = 0; // Table des coordonnées
- // char nomcoo[mdim * MED_SNAME_SIZE + 1]; // Table des noms des coordonnées
- // char unicoo[mdim * MED_SNAME_SIZE + 1]; // Table des unités des coordonnées
+ med_float *coo1 = 0; // Table des coordonnees
+ // char nomcoo[mdim * MED_SNAME_SIZE + 1]; // Table des noms des coordonnees
+ // char unicoo[mdim * MED_SNAME_SIZE + 1]; // Table des unites des coordonnees
char *nomnoe = 0;
med_int *numnoe = 0;
if (MEDmeshNodeCoordinateRd(fid, maa, MED_NO_DT, MED_NO_IT, MED_FULL_INTERLACE, coo1) < 0)
ERREUR("Error while reading nodes coordinates");
- // // Les noeuds ont-ils un nom? un numéro?
+ // // Les noeuds ont-ils un nom? un numero?
// if (nnoe > 0)
// {
// if (MEDnomLire(fid, maa, nomnoe, nnoe, MED_NODE, (med_geometry_type) 0) < 0)
// }
//
// if (inonoe)
- // cout << "WARNING input MED : les noms des noeuds sont ignorés" << endl;
+ // cout << "WARNING input MED : les noms des noeuds sont ignores" << endl;
// if (inunoe)
- // cout << "WARNING input MED : les numéros des noeuds sont ignorés" << endl;
+ // cout << "WARNING input MED : les numeros des noeuds sont ignores" << endl;
//
// if (inonoe)
// {
z1 = 0.0;
}
- // Allocation mémoire pour les coordonnées XX YY ZZ
+ // Allocation memoire pour les coordonnees XX YY ZZ
XX = (float*) malloc(sizeof(float) * nombreNoeudsMaillage);
if (mdim > 1)
YY = (float*) malloc(sizeof(float) * nombreNoeudsMaillage);
for (int i = 0; i < nnoe; i++)
{
- // Chargement des coordonnées X, Y et Z
+ // Chargement des coordonnees X, Y et Z
// Calcul de l'enveloppe du maillage
- FAMILLES_NOEUDS[*(famNoeuds + i)].push_back(i + 1); // ATTENTION! Les num. de noeuds commencent à 1
+ FAMILLES_NOEUDS[*(famNoeuds + i)].push_back(i + 1); // ATTENTION! Les num. de noeuds commencent a 1
tailleFAMILLES[*(famNoeuds + i)]++;
// IDnoeud = "N"+int2string(i+1);
x1 = *XXi;
}
- // Chargement des numéros de noeuds
+ // Chargement des numeros de noeuds
// if (inunoe)
// NUM_NOEUDS.push_back(*(numnoe + i));
// else
// Enveloppe du maillage
enveloppeMaillage = new Cube(x0, x1, y0, y1, z0, z1);
- // Libération mémoire
+ // Liberation memoire
if (nnoe > 0)
{
free(coo1);
for (unsigned int i = 0; i < vfam.size(); i++)
{
int numf = vfam[i];
- // Parcours simultané des vecteurs FAMILLES[numf] et FAM_TYPES[numfam] pour obtention du num local
+ // Parcours simultane des vecteurs FAMILLES[numf] et FAM_TYPES[numfam] pour obtention du num local
// et du type des mailles de la famille numf
for (unsigned int imaille = 0; imaille < FAMILLES[numf].size(); imaille++)
{
}
MEDfileClose(fid);
- // cout << "Fin procédure inputMED" << endl << endl;
+ // cout << "Fin procedure inputMED" << endl << endl;
}
void Maillage::acquisitionTYPE_inputMED(TYPE_MAILLE TYPE, int nTYPE, med_idt fid, char maa[MED_NAME_SIZE + 1],
tailleFAMILLES[numeroFamille]++;
FAM_TYPES[numeroFamille].push_back(TYPE);
- // Chargement des numéros de mailles
+ // Chargement des numeros de mailles
// if (inumTYPE)
// NUM_MAILLES[TYPE].push_back(*(numTYPE + i));
// else
string line, s, stype, nomnoeud;
// med_err ret = 0; // Code retour
// int ig, jg;
- // cout << endl << endl << "Début procédure outputMED, fichier " << fichierMED << endl;
+ // cout << endl << endl << "Debut procedure outputMED, fichier " << fichierMED << endl;
// Sortie sur erreur en cas de maillage sans noeuds
if (nombreNoeudsMaillage <= 0)
}
// ########################################################################
- // Ouverture du fichier MED et création du maillage
+ // Ouverture du fichier MED et creation du maillage
// ########################################################################
- // Ouverture du fichier MED en création
+ // Ouverture du fichier MED en creation
med_idt fid = MEDfileOpen(string2char(fichierMED), MED_ACC_CREAT);
if (fid < 0)
{
cout << "Error MEDfileOpen" << endl;
}
- // Création du maillage
+ // Creation du maillage
char maa[MED_NAME_SIZE + 1]; // Nom du maillage de longueur maxi MED_NAME_SIZE
strcpy(maa, string2char(ID));
if (dimensionMaillage == 0)
{
mdim = 3;
- cout << "ATTENTION, dimension 3 attribuée par défaut!" << endl;
+ cout << "ATTENTION, dimension 3 attribuee par defaut!" << endl;
}
else
mdim = dimensionMaillage;
vector<string> NOMSFAM;
vector<vector<int> > ETIQFAM;
int cptNOMFAM = 0;
- map<string, int> NUMFAMETIQ; // clé = étiquette - valeur = numéros de familles
+ map<string, int> NUMFAMETIQ; // cle = etiquette - valeur = numeros de familles
if (nGroupesNoeuds)
{
- // Pérennisation d'un ordre sur les GM dans le vecteur NOMS_GROUPES_MAILLES
+ // Perennisation d'un ordre sur les GM dans le vecteur NOMS_GROUPES_MAILLES
vector<string> NOMS_GROUPES_NOEUDS;
for (map<string, vector<int> >::iterator ITGN = GN.begin(); ITGN != GN.end(); ITGN++)
{
for (unsigned int ig = 0; ig < NOMS_GROUPES_NOEUDS.size(); ig++)
sort(GN[NOMS_GROUPES_NOEUDS[ig]].begin(), GN[NOMS_GROUPES_NOEUDS[ig]].end());
- // Construction des étiquettes (familles)
+ // Construction des etiquettes (familles)
// Initialisation des index de groupes
for (unsigned int ig = 0; ig < NOMS_GROUPES_NOEUDS.size(); ig++)
if (k == GN[nomgroupe][INDEX_N[ig]])
{
// Attention: l'indice 0 dans le vecteur ETIQUETTES correspond
- // à l'élément (noeud ou maille) de num. global 1
- // Par ailleurs, le numéro de groupe dans l'étiquette commence à 0
+ // a l'element (noeud ou maille) de num. global 1
+ // Par ailleurs, le numero de groupe dans l'etiquette commence a 0
ETIQUETTES_N[k - 1].push_back(ig);
tailleEtiquette++;
etiq += int2string(ig);
}
}
ETIQUETTES_N[k - 1].resize(tailleEtiquette);
- // Stockage de l'étiquette dans NOMSFAM ETIQFAM, si pas déjà stockée
+ // Stockage de l'etiquette dans NOMSFAM ETIQFAM, si pas deja stockee
// bool trouve = false;
// for (int i = 0; i < NOMSFAM.size(); i++)
// if (NOMSFAM[i] == ((string) "ETIQUETTE_" + etiq))
NOMSFAM.resize(cptNOMFAM);
ETIQFAM.resize(cptNOMFAM);
- // Création des familles de noeuds
+ // Creation des familles de noeuds
for (unsigned int ifam = 0; ifam < NOMSFAM.size(); ifam++)
{
strcpy(nomfam, string2char(NOMSFAM[ifam]));
- // Numéro de famille: ifam+1 (positif pour les noeuds + non nul)
+ // Numero de famille: ifam+1 (positif pour les noeuds + non nul)
numfam = ifam + 1;
ngro = ETIQFAM[ifam].size();
for (unsigned int ign = 0; ign < ETIQFAM[ifam].size(); ign++)
{
string nomGNcourant = NOMS_GROUPES_NOEUDS[ETIQFAM[ifam][ign]];
- // ATTENTION! Il faut mettre à la fin de chaque segment un \0 qui est ensuite écrasé
- // par le premier caractère du champ suivant dans le strcat !!!!
+ // ATTENTION! Il faut mettre a la fin de chaque segment un \0 qui est ensuite ecrase
+ // par le premier caractere du champ suivant dans le strcat !!!!
if (ign == 0)
{
// Premier groupe
cptGN++;
}
- // Création de la famille
+ // Creation de la famille
if (MEDfamilyCr(fid, maa, nomfam, numfam, 0, MED_NO_GROUP) < 0)
ERREUR("Error MEDfamilyCr");
delete gro;
// float x, y, z;
med_int nnoe = nombreNoeudsMaillage; // Nombre de noeuds
- med_float *coo = 0; // Table des coordonnées
+ med_float *coo = 0; // Table des coordonnees
- // Noms des coordonnées (variable nomcoo)
+ // Noms des coordonnees (variable nomcoo)
char* nomcoo = new char[mdim * MED_SNAME_SIZE + 1];
string strX = (string) "X";
while (strX.size() < MED_SNAME_SIZE)
strcpy(nomcoo, string2char(strX));
nomcoo[mdim * MED_SNAME_SIZE] = '\0';
- // Unités des coordonnées (variable unicoo)
+ // Unites des coordonnees (variable unicoo)
char* unicoo = new char[mdim * MED_SNAME_SIZE + 1];
string strmesure = (string) "SI";
while (strmesure.size() < MED_SNAME_SIZE)
// }
}
- // Chargement des coordonnées, numéros de familles et numéros de noeuds
+ // Chargement des coordonnees, numeros de familles et numeros de noeuds
if (dimensionMaillage == 3)
{
int i3 = 0;
coo[i3 + 2] = *(ZZ + i);
i3 = i3 + 3;
- // Numéros de familles - Le num. global de noeud est i+1
+ // Numeros de familles - Le num. global de noeud est i+1
if (nGroupesNoeuds)
{
vector<int> v = ETIQUETTES_N[i];
else
*(nufano + i) = (med_int) 0;
- // Numéros de noeuds
+ // Numeros de noeuds
// *(numnoe + i) = (med_int) NUM_NOEUDS[i];
}
}
coo[i2] = *(XX + i);
coo[i2 + 1] = *(YY + i);
i2 = i2 + 2;
- // Numéros de familles - Le num. global de noeud est i+1
+ // Numeros de familles - Le num. global de noeud est i+1
if (nGroupesNoeuds)
{
vector<int> v = ETIQUETTES_N[i];
}
else
*(nufano + i) = (med_int) 0;
- // Numéros de noeuds
+ // Numeros de noeuds
// *(numnoe + i) = (med_int) NUM_NOEUDS[i];
}
}
map<TYPE_MAILLE, vector<vector<int> > > ETIQUETTES_M; // [ tm => [ nl => [ig1, ig2, ... ] ] ]
// INDEX_M :
- // Clé : tm
+ // Cle : tm
// Valeur : vect. des compteurs par indice de GM dans NOMS_GROUPES_MAILLES
map<TYPE_MAILLE, vector<unsigned int> > INDEX_M;
NOMSFAM.clear();
ETIQFAM.clear();
- NUMFAMETIQ.clear(); // clé = étiquette - valeur = numéros de familles
+ NUMFAMETIQ.clear(); // cle = etiquette - valeur = numeros de familles
cptNOMFAM = 0;
if (nGroupesMailles)
{
- // Pérennisation d'un ordre sur les GM dans le vecteur NOMS_GROUPES_MAILLES
+ // Perennisation d'un ordre sur les GM dans le vecteur NOMS_GROUPES_MAILLES
vector<string> NOMS_GROUPES_MAILLES;
for (map<string, map<TYPE_MAILLE, vector<int> > >::iterator ITGM = GM.begin(); ITGM != GM.end(); ITGM++)
{
}
}
- // Construction des étiquettes (familles)
+ // Construction des etiquettes (familles)
// Initialisation 0 des index de groupes, et resize ETIQUETTES_M[tm]
for (int itm = (int) POI1; itm <= (int) HEXA20; itm++)
if (nl == GM[nomGM][tm][INDEX_M[tm][ig]])
{
// Attention: l'indice 0 dans le vecteur ETIQUETTES correspond
- // à l'élément (noeud ou maille) de num. global 1
- // Par ailleurs, le numéro de groupe dans l'étiquette commence à 0
+ // a l'element (noeud ou maille) de num. global 1
+ // Par ailleurs, le numero de groupe dans l'etiquette commence a 0
// cout << "\t\t\t" << "La maille est dans le groupe " << nomGM << endl;
ETIQUETTES_M[tm][nl].push_back(ig);
tailleEtiquette++;
}
ETIQUETTES_M[tm][nl].resize(tailleEtiquette);
- // Stockage de l'étiquette dans NOMSFAM ETIQFAM, si pas déjà stockée
+ // Stockage de l'etiquette dans NOMSFAM ETIQFAM, si pas deja stockee
// bool trouve = false;
// for (int i = 0; i < NOMSFAM.size(); i++)
// if (NOMSFAM[i] == ((string) "ETIQUETTE_" + etiq))
NOMSFAM.resize(cptNOMFAM);
ETIQFAM.resize(cptNOMFAM);
- // Création des familles de mailles
+ // Creation des familles de mailles
for (unsigned int ifam = 0; ifam < NOMSFAM.size(); ifam++)
{
strcpy(nomfam, string2char(NOMSFAM[ifam]));
- // Numéro de famille: -ifam-1 (négatif pour les mailles, et non nul)
+ // Numero de famille: -ifam-1 (negatif pour les mailles, et non nul)
numfam = -ifam - 1;
ngro = ETIQFAM[ifam].size();
for (unsigned int ign = 0; ign < ETIQFAM[ifam].size(); ign++)
{
string nomGMcourant = NOMS_GROUPES_MAILLES[ETIQFAM[ifam][ign]];
- // ATTENTION! Il faut mettre à la fin de chaque segment un \0 qui est ensuite écrasé
- // par le premier caractère du champ suivant dans le strcat !!!!
+ // ATTENTION! Il faut mettre a la fin de chaque segment un \0 qui est ensuite ecrase
+ // par le premier caractere du champ suivant dans le strcat !!!!
if (ign == 0)
{
// Premier groupe
cptGM++;
}
- // Création de la famille
+ // Creation de la famille
if (MEDfamilyCr(fid, maa, nomfam, numfam, 1, gro) < 0)
ERREUR("Error MEDfamilyCr");
// Boucle sur les mailles du type (indice = num. local)
for (int nl = 0; nl < nTYPE; nl++)
{
- // Construction de l'étiquette de la maille au format string
+ // Construction de l'etiquette de la maille au format string
vector<int> v = ETIQUETTES_M[tm][nl];
string sv = (string) "";
for (unsigned int j = 0; j < v.size(); j++)
sv += int2string(v[j]);
- // Accès au num. de la famille
+ // Acces au num. de la famille
*(famTYPE + nl) = (med_int) NUMFAMETIQ[sv];
} // Boucle sur les mailles du type
} // if (nGroupesMailles)
delete unicoo;
delete nomcoo;
- // cout << endl << endl << "Fin procédure outputMED" << endl;
+ // cout << endl << endl << "Fin procedure outputMED" << endl;
} // outputMED
int Maillage::NGLOBAL(TYPE_MAILLE typeMaille, int nlocal)
{
- // Attention, les num. globaux commencent à 1, les num. locaux à 0
+ // Attention, les num. globaux commencent a 1, les num. locaux a 0
int cpt = 1 + nlocal;
for (int itm = (int) POI1; itm < (int) typeMaille; itm++)
- { // Attention! inférieur strict!
+ { // Attention! inferieur strict!
TYPE_MAILLE tm = (TYPE_MAILLE) itm;
cpt += EFFECTIFS_TYPES[tm];
}
TYPE_MAILLE Maillage::TYPE(int nglobal)
{
- // Attention, les num. globaux commencent à 1, les num. locaux à 0
+ // Attention, les num. globaux commencent a 1, les num. locaux a 0
TYPE_MAILLE resultat = (TYPE_MAILLE)-1;
int cpt = 0;
for (int itm = (int) POI1; itm <= (int) HEXA20; itm++)
int Maillage::NLOCAL(int nglobal, TYPE_MAILLE tm)
{
- // Attention, les num. globaux commencent à 1, les num. locaux à 0
+ // Attention, les num. globaux commencent a 1, les num. locaux a 0
int nPOI1 = EFFECTIFS_TYPES[POI1];
int nSEG2 = EFFECTIFS_TYPES[SEG2];
int nSEG3 = EFFECTIFS_TYPES[SEG3];
/*!
* Suppression de mailles dans un type :
*
- * - Contraction de la connectivité concernée
- * - Réécriture des GM avec les nouveaux numéros locaux des éléments du type concerné
- * - Mise à jour nombreMaillesMaillage
+ * - Contraction de la connectivite concernee
+ * - Reecriture des GM avec les nouveaux numeros locaux des elements du type concerne
+ * - Mise a jour nombreMaillesMaillage
*
- * Les noeuds ne sont pas affectés.
+ * Les noeuds ne sont pas affectes.
*/
void Maillage::eliminationMailles(TYPE_MAILLE tm, vector<int> listeMaillesSuppr)
{
cout << "Method eliminationMailles, listeMaillesSuppr.size()=" << listeMaillesSuppr.size() << endl;
- // ************* Modification de la connectivité du type concerné
+ // ************* Modification de la connectivite du type concerne
int* CNX2;
int nNoeudsType = Nnoeuds(tm);
int tailleCNX2 = nNoeudsType * (EFFECTIFS_TYPES[tm] - listeMaillesSuppr.size());
CNX2 = (int*) malloc(sizeof(int) * tailleCNX2);
- // Recopie sélective des connectivités
+ // Recopie selective des connectivites
int isuppr = 0; // indice dans listeMaillesSuppr
- int ih2 = 0; // nouveau numéro local ( remarque: ih2 = ih1 - isuppr )
+ int ih2 = 0; // nouveau numero local ( remarque: ih2 = ih1 - isuppr )
for (int ih1 = 0; ih1 < EFFECTIFS_TYPES[tm]; ih1++)
{
if (listeMaillesSuppr[isuppr] != ih1)
free(CNX[tm]);
CNX[tm] = CNX2;
- // ************* Construction de la table de correspondance des NL dans le type concerné
+ // ************* Construction de la table de correspondance des NL dans le type concerne
unsigned int offset = 0;
for (int i = 0; i < EFFECTIFS_TYPES[tm]; i++)
{
TABLE_NL[i] = i - offset;
else if (i == listeMaillesSuppr[offset])
{
- TABLE_NL[i] = -1; // Element à supprimer
+ TABLE_NL[i] = -1; // Element a supprimer
offset++;
}
}
TABLE_NL[i] = i - offset;
}
- // Contrôle
+ // Contrle
if (offset != listeMaillesSuppr.size())
{
ERREUR("Incoherent offset, method eliminationMailles");
exit(0);
}
- // ************* Mise à jour du type concerné dans les GM
+ // ************* Mise a jour du type concerne dans les GM
for (map<string, map<TYPE_MAILLE, vector<int> > >::iterator I = GM.begin(); I != GM.end(); I++)
{
string nomGM = I->first;
}
}
- // ************* Mise à jour des effectifs
+ // ************* Mise a jour des effectifs
EFFECTIFS_TYPES[tm] = EFFECTIFS_TYPES[tm] - listeMaillesSuppr.size();
nombreMaillesMaillage = nombreMaillesMaillage - listeMaillesSuppr.size();
class Maillage
{
public:
- // Toutes ces variables doivent être placées au niveau du principal pour être connues de toutes les fonctions
+ // Toutes ces variables doivent etre placees au niveau du principal pour etre connues de toutes les fonctions
- // Vecteurs des familles d'éléments
+ // Vecteurs des familles d'elements
std::map<int, std::vector<int> > FAMILLES;
std::map<int, std::vector<TYPE_MAILLE> > FAM_TYPES;
std::map<std::string, std::vector<int> > GROUPES_NOEUDS;
// Commun noeuds et mailles
- std::map<int, int> tailleFAMILLES; // la clé est un num. de famille
- std::map<std::string, int> tailleGROUPES; // Tailles des vecteurs GROUPES_MAILLES et GROUPES_NOEUDS - la clé est un nom de groupe (de noeuds ou de mailles)
+ std::map<int, int> tailleFAMILLES; // la cle est un num. de famille
+ std::map<std::string, int> tailleGROUPES; // Tailles des vecteurs GROUPES_MAILLES et GROUPES_NOEUDS - la cle est un nom de groupe (de noeuds ou de mailles)
- // Résidus mailles
+ // Residus mailles
std::map<TYPE_MAILLE, std::vector<int> > RESIDU;
public:
float *YY;
float *ZZ; // ****** MED-OBLIGATOIRE ******
- // Effectifs des éléments par type
+ // Effectifs des elements par type
std::map<TYPE_MAILLE, int> EFFECTIFS_TYPES; // ****** MED-OBLIGATOIRE ******
- // Connectivités des types
- // Le numéro global du j-ième noeud de la maille de numéro global i est stocké à l'adresse
+ // Connectivites des types
+ // Le numero global du j-ieme noeud de la maille de numero global i est stocke a l'adresse
// CNX[tm]+t*(i-1)+(j-1)
- // (t = taille du type, i.e. nombre de noeuds de l'élément)
+ // (t = taille du type, i.e. nombre de noeuds de l'element)
std::map<TYPE_MAILLE, int*> CNX; // ****** MED-OBLIGATOIRE ******
// Enveloppes cubiques
TYPE_MAILLE TYPE(int nglobal);
void eliminationMailles(TYPE_MAILLE typeMaille, std::vector<int> listeMaillesSuppr);
- // acquisitionTYPE_inputMED appelée par inputMED
+ // acquisitionTYPE_inputMED appelee par inputMED
void
acquisitionTYPE_inputMED(TYPE_MAILLE TYPE, int nTYPE, med_idt fid, char maa[MED_NAME_SIZE + 1], med_int mdim);
char* MESHCUT::string2char(std::string str)
{
- // créer le buffer pour copier la chaîne
+ // creer le buffer pour copier la chaine
size_t size = str.size() + 1;
char* buffer = new char[size];
- // copier la chaîne
+ // copier la chaine
strncpy(buffer, str.c_str(), size);
- // libérer la mémoire
+ // liberer la memoire
//delete [] buffer;
return buffer;
}
/*!
- * Distance à laquelle doit se tenir l'observateur sur un axe
- * pour voir sous 90° un objet centré de dimensions a et b selon les deux autres axes.
+ * Distance a laquelle doit se tenir l'observateur sur un axe
+ * pour voir sous 90° un objet centre de dimensions a et b selon les deux autres axes.
* Si on ne tient pas compte de la dimension de l'objet selon l'axe choisi,
* la formule d_obs=max(a,b)/2 donne la cote
* qui permet de voir l'objet plat dans un angle de 90°.
* A cela il faut ajouter la dimension de l'objet selon l'axe d'observation = c.
*
- * @param a dimensions de l'objet selon un des axes normal à l'axe d'observation
- * @param b dimensions de l'objet selon l'autre axe normal à l'axe d'observation
+ * @param a dimensions de l'objet selon un des axes normal a l'axe d'observation
+ * @param b dimensions de l'objet selon l'autre axe normal a l'axe d'observation
* @param c est la dimension de l'objet selon l'axe d'observation
*/
float MESHCUT::dObservateur(float a, float b, float c)
{
case POI1:
typeBanaliseMED = MED_POINT1;
- break; // Attention, piège !
+ break; // Attention, piege !
case SEG2:
typeBanaliseMED = MED_SEG2;
break;
break;
case PYRAM5:
typeBanaliseMED = MED_PYRA5;
- break; // Attention, piège !
+ break; // Attention, piege !
case PYRAM13:
typeBanaliseMED = MED_PYRA13;
- break; // Attention, piège !
+ break; // Attention, piege !
case PENTA6:
typeBanaliseMED = MED_PENTA6;
break;
if (debug)
{
- cout << endl << " Liste des valeurs du champ brut aux 3 premiers éléments:" << endl;
+ cout << endl << " Liste des valeurs du champ brut aux 3 premiers elements:" << endl;
for (imaille = 0; imaille < std::min(nmailles, 3); imaille++)
{
cout << " Maille " << imaille << endl;
cout << "********************************************************************" << endl;
cout << endl;
cout << " Champ: " << (string) nomChampMoy << endl;
- cout << " Géométrie: " << MGE2string(MGE) << endl;
- cout << " Pas de temps " << ipt << " ignoré" << endl;
+ cout << " Geometrie: " << MGE2string(MGE) << endl;
+ cout << " Pas de temps " << ipt << " ignore" << endl;
cout << endl << endl;
continue;
}
if (debug)
cout << " Writing mean values in new field: OK " << endl;
- // Restitution du champ moyenné
+ // Restitution du champ moyenne
if (debug)
{
- cout << endl << " Liste des valeurs du champ moyenné aux 3 premiers éléments:" << endl;
+ cout << endl << " Liste des valeurs du champ moyenne aux 3 premiers elements:" << endl;
for (imaille = 0; imaille < min(nmailles, 3); imaille++)
{
cout << " Maille " << imaille << endl;
}
/*!
- * Conversion HL-MED d'une table de connectivités
+ * Conversion HL-MED d'une table de connectivites
*/
void MESHCUT::conversionCNX(int *CNXtm, TYPE_MAILLE tm, int N)
{
#
"""
Ce package contient les fonctionnalites necessaires
- pour l'acquisition des données
+ pour l'acquisition des donnees
"""
</STYLE>
</HEAD>
<BODY LANG="fr-FR" TEXT="#000000" DIR="LTR">
-<P ALIGN=CENTER STYLE="margin-bottom: 0cm; widows: 0; orphans: 0"><U><FONT FACE="Arial, sans-serif"><FONT SIZE=4 STYLE="font-size: 16pt"><B>Synthèse
-de l'exécution des scripts de test des mailleurs</B></U></FONT></FONT></P>
+<P ALIGN=CENTER STYLE="margin-bottom: 0cm; widows: 0; orphans: 0"><U><FONT FACE="Arial, sans-serif"><FONT SIZE=4 STYLE="font-size: 16pt"><B>Synthese
+de l'execution des scripts de test des mailleurs</B></U></FONT></FONT></P>
<P ALIGN=CENTER STYLE="margin-bottom: 0cm; widows: 0; orphans: 0"><BR>
</P>
<DIV ID="Cadre1" DIR="LTR" STYLE="float: left; width: 23.43cm; height: 1.74cm; border: none; padding: 0cm; background: #ffffff">
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0cm; border: none; padding: 0cm; widows: 0; orphans: 0">
<FONT FACE="Arial, sans-serif"><FONT SIZE=4 STYLE="font-size: 16pt"><B>Version
- de Salomé testée : %VERSIONTEST%</B></FONT></FONT></P>
+ de Salome testee : %VERSIONTEST%</B></FONT></FONT></P>
<P ALIGN=JUSTIFY STYLE="margin-bottom: 0cm; border: none; padding: 0cm; widows: 0; orphans: 0">
<FONT FACE="Arial, sans-serif"><FONT SIZE=4 STYLE="font-size: 16pt"><B>Machine
- d'exécution : %MACHINE%</B></FONT></FONT></P>
+ d'execution : %MACHINE%</B></FONT></FONT></P>
</DIV>
<P ALIGN=CENTER STYLE="margin-left: 4cm; margin-bottom: 0cm; widows: 0; orphans: 0">
<BR>
</P>
</BODY>
-</HTML>
\ No newline at end of file
+</HTML>
</P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Référence</FONT></FONT></P>
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Reference</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Version
courante</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Différence
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Difference
absolue</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Différence
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Difference
relative</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border: 1px solid #000000; padding: 0cm">
<TR VALIGN=TOP>
<TD WIDTH=17% STYLE="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
<P ALIGN=LEFT STYLE="widows: 0; orphans: 0"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Elt
- Médian</FONT></FONT></FONT></P>
+ Median</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
<P ALIGN=LEFT STYLE="widows: 0; orphans: 0"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>%RMEDREF%</FONT></FONT></FONT></P>
<BODY LANG="fr-FR" DIR="LTR">
<P LANG="en-US" ALIGN=LEFT STYLE="margin-bottom: 0cm; line-height: 200%; widows: 0; orphans: 0">
<FONT COLOR="#000000"><U><FONT FACE="Arial, sans-serif"><FONT SIZE=3><B>Longueur
-des arêtes des mailles </B></U></FONT></FONT></FONT>
+des aretes des mailles </B></U></FONT></FONT></FONT>
</P>
<TABLE WIDTH=100% CELLPADDING=0 CELLSPACING=0>
<COL WIDTH=43*>
</P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Référence</FONT></FONT></P>
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Reference</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Version
courante</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Différence
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Difference
absolue</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Différence
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Difference
relative</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border: 1px solid #000000; padding: 0cm">
<TR VALIGN=TOP>
<TD WIDTH=17% STYLE="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
<P ALIGN=LEFT STYLE="widows: 0; orphans: 0"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Elt
- Médian</FONT></FONT></FONT></P>
+ Median</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
<P ALIGN=LEFT STYLE="widows: 0; orphans: 0"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>%TMEDREF%</FONT></FONT></FONT></P>
</P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Référence</FONT></FONT></P>
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Reference</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Version
courante</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Différence
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Difference
absolue</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Différence
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Difference
relative</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border: 1px solid #000000; padding: 0cm">
<TR VALIGN=TOP>
<TD WIDTH=17% STYLE="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
<P ALIGN=LEFT STYLE="widows: 0; orphans: 0"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Elt
- Médian</FONT></FONT></FONT></P>
+ Median</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
<P ALIGN=LEFT STYLE="widows: 0; orphans: 0"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>%RMEDREF%</FONT></FONT></FONT></P>
</TABLE>
<P LANG="en-US" ALIGN=LEFT STYLE="margin-bottom: 0cm; line-height: 200%; widows: 0; orphans: 0">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><U><B>Longueur
-des arêtes des mailles </B></U></FONT></FONT></FONT>
+des aretes des mailles </B></U></FONT></FONT></FONT>
</P>
<TABLE WIDTH=100% CELLPADDING=0 CELLSPACING=0>
<COL WIDTH=43*>
</P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Référence</FONT></FONT></P>
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Reference</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Version
courante</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Différence
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Difference
absolue</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Différence
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Difference
relative</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border: 1px solid #000000; padding: 0cm">
<TR VALIGN=TOP>
<TD WIDTH=17% STYLE="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
<P ALIGN=LEFT STYLE="widows: 0; orphans: 0"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Elt
- Médian</FONT></FONT></FONT></P>
+ Median</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
<P ALIGN=LEFT STYLE="widows: 0; orphans: 0"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>%TMEDREF%</FONT></FONT></FONT></P>
<P ALIGN=LEFT STYLE="margin-bottom: 0cm; widows: 0; orphans: 0"><FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=4><U><B>Cas
Test : %MAILLAGE%</B></U></FONT></FONT></FONT></P>
<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><B>Mailleur
-testé : <META NAME="CHANGEDBY" CONTENT="CANO Valerie">%MAILLEUR%</B></FONT></FONT></P>
+teste : <META NAME="CHANGEDBY" CONTENT="CANO Valerie">%MAILLEUR%</B></FONT></FONT></P>
<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><B>Version
-de Réference %VERSIONREF%</B></FONT></FONT></P>
+de Reference %VERSIONREF%</B></FONT></FONT></P>
<P ALIGN=LEFT STYLE="margin-bottom: 0cm; line-height: 200%; widows: 0; orphans: 0">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=3><SPAN LANG="fr-FR"><U><B>Performance
CPU</B></U></SPAN></FONT></FONT></FONT><FONT COLOR="#000000"> </FONT>
</P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Référence</FONT></FONT></P>
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Reference</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Version
courante</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Différence
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Difference
absolue</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Différence
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Difference
relative</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border: 1px solid #000000; padding: 0cm">
</HEAD>
<BODY LANG="fr-FR" DIR="LTR">
<P STYLE="margin-bottom: 0cm"><U><FONT FACE="Arial, sans-serif"><B>Aucun
-groupe de référence connu pour ce maillage</B></U></FONT></P>
+groupe de reference connu pour ce maillage</B></U></FONT></P>
<P STYLE="margin-bottom: 0cm">
</P>
<P STYLE="margin-bottom: 0cm">
<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Type de Maille</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.1cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Référence</FONT></FONT></P>
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Reference</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.1cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Version
courante</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.1cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Différence
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Difference
absolue</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.1cm; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm">
- <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Différence
+ <P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Difference
relative</FONT></FONT></P>
</TD>
<TD WIDTH=17% STYLE="border: 1px solid #000000; padding: 0.1cm">
la base
========
-Schéma de la base
+Schema de la base
-----------------
.. image:: images/bd.png
Organisation des sources
------------------------
- Les sources sont organisées ainsi :
+ Les sources sont organisees ainsi :
- * La directory MaquetteMailleur contient les pythons nécessaires au passage des tests :
+ * La directory MaquetteMailleur contient les pythons necessaires au passage des tests :
- createDatabase.py
- ajoutEnreg.py
- compareVersions.py
- lance.py
- a priori, seuls les scripts passeJobs.py et compareVersions ne devront être passés à chaque version
+ a priori, seuls les scripts passeJobs.py et compareVersions ne devront etre passes a chaque version
- * Elle contient aussi la base de données (lorsque celle-ci a été créée)
+ * Elle contient aussi la base de donnees (lorsque celle-ci a ete creee)
- * Sous MaquetteMailleur, la directory Doc contient les fichiers nécessaires à l'élaboration de la doc.
- * Sous MaquetteMailleur, la directory Scripts contient les fichiers nécessaires à l'éléboration des maillages et référencés dans la database.
- * Sous MaquetteMailleur, la directory Gui contient les fichiers nécessaires à la partie graphique, y compris les .ui à partir desquels il faut générer les .py
- * Sous MaquetteMailleur, la directory CreeDocuments contient les fichiers nécessaires à la création du rapport html. les patrons sont contenus dans TemplatesHtm
+ * Sous MaquetteMailleur, la directory Doc contient les fichiers necessaires a l'elaboration de la doc.
+ * Sous MaquetteMailleur, la directory Scripts contient les fichiers necessaires a l'eleboration des maillages et references dans la database.
+ * Sous MaquetteMailleur, la directory Gui contient les fichiers necessaires a la partie graphique, y compris les .ui a partir desquels il faut generer les .py
+ * Sous MaquetteMailleur, la directory CreeDocuments contient les fichiers necessaires a la creation du rapport html. les patrons sont contenus dans TemplatesHtm
-La directory Base plus en détail
+La directory Base plus en detail
--------------------------------
* dataBase.py : definition de la class Base
- La méthode Structure (jamais appelée) rappelle la commande sqlite3 pour voir de façon interactive la structure de la base (sqlite3 madabase.db)
+ La methode Structure (jamais appelee) rappelle la commande sqlite3 pour voir de façon interactive la structure de la base (sqlite3 madabase.db)
* les tables
- - une classe générique contenue dans tableDeBase
+ - une classe generique contenue dans tableDeBase
- un fichier .py par table : tableGroupesRef.py, tableMaillages.py, tableMailleurs.py, tableRatios.py, tableVersions.py, tableGroupes.py, tableMachines.py, tableMailles.py, tablePerfs.py, tableTailles.py. toutes les tables heritent de tableDeBase
- - la methode "remplit" remplit le jeu de test et doit être modifiée (en particulier pour la définition de la version de reference)
+ - la methode "remplit" remplit le jeu de test et doit etre modifiee (en particulier pour la definition de la version de reference)
- * création éventuelle d'une nouvelle table il faut :
+ * creation eventuelle d'une nouvelle table il faut :
- creer un fichier tableNouvelle.py
- dans l'init appeler l init de TableDeBase avec le nom de la table en parametre
et initialiser le nom des colonnes avec la methode setFields
- - pour pouvoir éditer la nouvelle table il faut :
+ - pour pouvoir editer la nouvelle table il faut :
- ajouter un bouton par designer dans desFenetreChoix.ui
- creer un signal dans maFenetreChoix.py qui appelle une methode qui
ressemble a :
======================
Introduction
-------------
-Avant d'utiliser les différents scripts décrits ci-dessous, il faut préalablement taper dans un terminal la commande ./runSession dans le répertoire Salome où se situe le runSession. On peut trouver les différents scripts au niveau du répertoire : ./Salome-n°version/modules/SMESH_n°version/share/salome/plugins/smesh/Verima
+Avant d'utiliser les differents scripts decrits ci-dessous, il faut prealablement taper dans un terminal la commande ./runSession dans le repertoire Salome où se situe le runSession. On peut trouver les differents scripts au niveau du repertoire : ./Salome-n°version/modules/SMESH_n°version/share/salome/plugins/smesh/Verima
-Création de la base
+Creation de la base
--------------------
-La base de données ne doit, à priori, n'être créée qu'une unique fois. Cependant, relancer le script de création ne changera pas les informations contenues dans la base et n'a pas d'incidence sur la base ni sur son contenu.
+La base de donnees ne doit, a priori, n'etre creee qu'une unique fois. Cependant, relancer le script de creation ne changera pas les informations contenues dans la base et n'a pas d'incidence sur la base ni sur son contenu.
* createDatabase.py
- - Crée la structure de la base et le fichier myMeshDB.db
- - Si le fichier myMeshDB.db (c'est à dire si la base) existe déjà, le script ne modifie pas la structure des tables et n'affecte pas les enregistrements qu'elles contiennent déjà.
- - Le script a un unique paramètre optionnel : le nom de la database.
+ - Cree la structure de la base et le fichier myMeshDB.db
+ - Si le fichier myMeshDB.db (c'est a dire si la base) existe deja, le script ne modifie pas la structure des tables et n'affecte pas les enregistrements qu'elles contiennent deja.
+ - Le script a un unique parametre optionnel : le nom de la database.
.. code-block:: python
python createDatabase.py -d maBaseAMoi.db
-Initialisation d'un jeu de tests par défaut
+Initialisation d'un jeu de tests par defaut
-------------------------------------------
-Si on le souhaite, on peut initialiser un jeu de tests par défaut. Ce jeu de tests s'applique aux versions, aux mailleurs testés, aux scripts de maillage et enfin aux groupes de référence associés à ces maillages.
-Les quatres fichiers python se situent dans le répertoire Base.
+Si on le souhaite, on peut initialiser un jeu de tests par defaut. Ce jeu de tests s'applique aux versions, aux mailleurs testes, aux scripts de maillage et enfin aux groupes de reference associes a ces maillages.
+Les quatres fichiers python se situent dans le repertoire Base.
- * Pour les versions, il s'agit du fichier tableVersions. Dans la méthode "remplit", on renseigne :
+ * Pour les versions, il s'agit du fichier tableVersions. Dans la methode "remplit", on renseigne :
- Le nom de la version
- Un commentaire
- * Pour les mailleurs, il s'agit du fichier tableMailleurs. Dans la méthode remplit, on renseigne :
+ * Pour les mailleurs, il s'agit du fichier tableMailleurs. Dans la methode remplit, on renseigne :
- Le nom du mailleur
- * Pour les scripts, il s'agit du fichier tableMaillages. Dans la méthode remplit, on renseigne :
+ * Pour les scripts, il s'agit du fichier tableMaillages. Dans la methode remplit, on renseigne :
- Le nom du cas test
- Le nom du script python
- Le nom du fichier med
- - Le numéro de l'identifiant correspondant au mailleur testé
+ - Le numero de l'identifiant correspondant au mailleur teste
- La dimension maximale du maillage
- - Les quatres seuils correspondant aux quatres critères à savoir le temps CPU, l'aspect ratio, la longueur et enfin le nombre d'entités
+ - Les quatres seuils correspondant aux quatres criteres a savoir le temps CPU, l'aspect ratio, la longueur et enfin le nombre d'entites
- Un commentaire
- * Pour les groupes de référence, il s'agit du fichier tableGroupesRef. Dans la méthode remplit, on renseigne :
+ * Pour les groupes de reference, il s'agit du fichier tableGroupesRef. Dans la methode remplit, on renseigne :
- Le nom du groupe
- - Le numéro d'identifiant correspondant au maillage
+ - Le numero d'identifiant correspondant au maillage
-Remarque : actuellement, le jeu par défaut porte :
+Remarque : actuellement, le jeu par defaut porte :
* sur les versions
- n°id=1,'Salome7.2.0'
- n°id=2,'Salome7.3.0'
- n°id=4,'GHS3D+NETGEN1D2D'
- n°id=5,'NETGEN1D2D3D'
-Ajouter un enregistrement à une table
+Ajouter un enregistrement a une table
-------------------------------------
-Lors d'une nouvelle version de Salome, de l'arrivée d'un nouveau cas test ou d'un nouveau mailleur, il sera nécessaire d'enrichir la base de données. Aucun contrôle sur la cohérence des valeurs n'est effectué.
+Lors d'une nouvelle version de Salome, de l'arrivee d'un nouveau cas test ou d'un nouveau mailleur, il sera necessaire d'enrichir la base de donnees. Aucun contrle sur la coherence des valeurs n'est effectue.
* l'autoincrement
- Les identifiants ("id") des tables Maillages, Mailleurs et Versions sont crées de façon automatique lors de l'insertion d'un enregistrement dans la table. Il n'est ni possible ni nécessaire de les préciser lors de la création d'un enregistrement.
- Ainsi, pour ajouter un mailleur, il suffit de spécifier son nom.
+ Les identifiants ("id") des tables Maillages, Mailleurs et Versions sont crees de façon automatique lors de l'insertion d'un enregistrement dans la table. Il n'est ni possible ni necessaire de les preciser lors de la creation d'un enregistrement.
+ Ainsi, pour ajouter un mailleur, il suffit de specifier son nom.
* ajoutEnreg.py
- - Le script a deux paramètres : le nom de la database (optionnel) et le nom de la table qu'il faut enrichir.
- les valeurs des colonnes doivent être fournies dans l'ordre.
+ - Le script a deux parametres : le nom de la database (optionnel) et le nom de la table qu'il faut enrichir.
+ les valeurs des colonnes doivent etre fournies dans l'ordre.
.. code-block:: python
python ajoutEnreg -d maBaseAMoi.db -t TableMailleurs "monMailleur"
- - Les contrôles effectués sont minimaux : nombre de valeurs de l'enregistrement et identifiant. En revanche, la cohérence entre tables n'est pas vérifiée. Ainsi, par exemple, pour entrer un nouveau cas test, il faut ajouter un enregistrement à la table des maillages. Si l'identifiant du mailleur n'existe pas, aucune erreur ne sera détectée.
+ - Les contrles effectues sont minimaux : nombre de valeurs de l'enregistrement et identifiant. En revanche, la coherence entre tables n'est pas verifiee. Ainsi, par exemple, pour entrer un nouveau cas test, il faut ajouter un enregistrement a la table des maillages. Si l'identifiant du mailleur n'existe pas, aucune erreur ne sera detectee.
.. code-block:: python
python ajoutEnreg -d maBaseAMoi.db -t TableMaillages "monMaillage" "mesScripts/lanceMonMaillage" "/tmp/monFichierMed" 4 3 5 5 5 5 "essai pour mon Mailleur"
-Changement de la version de référence
+Changement de la version de reference
-------------------------------------
-A priori, cette fonction ne devrait pas être utilisée. mais ... Elle permet de changer la version de référence.
+A priori, cette fonction ne devrait pas etre utilisee. mais ... Elle permet de changer la version de reference.
* changeVersion.py
Consultation des tables
-----------------------
- * le script Gui/visualiseDatabase.py (qui peut également être lancé de l'outil générique lance.py) permet de visualiser les tables contenues dans la base. (Attention au path de la database)
+ * le script Gui/visualiseDatabase.py (qui peut egalement etre lance de l'outil generique lance.py) permet de visualiser les tables contenues dans la base. (Attention au path de la database)
.. code-block:: python
* le script passejob.py permet de passer l'ensemble des tests ou un cas particulier. il admet les options suivantes :
- - '-a' pour passer l ensemble des Tests (non activée par defaut)
+ - '-a' pour passer l ensemble des Tests (non activee par defaut)
- '-s' pour preciser le path du runAppli (par exemple ~/Appli). Permet au job de trouver le runAppli
- '-d' pour preciser le fichier dataBase
- - '-v' pour spécifier la version de Salome
- - si l'option -a n'est pas activée, il faut préciser l'identifiant du job à passer
+ - '-v' pour specifier la version de Salome
+ - si l'option -a n'est pas activee, il faut preciser l'identifiant du job a passer
.. code-block:: python
python passeJobs.py -d ../myMesh.db 1
-Modifier les scripts pour les intégrer dans le mécanisme de test
+Modifier les scripts pour les integrer dans le mecanisme de test
-------------------------------------------------------------------
- * ajout des lignes suivantes à la fin du script :
+ * ajout des lignes suivantes a la fin du script :
.. code-block:: python
-----------------------------------
* compareVersions.py
- '-s' pour preciser le path du runAppli (par exemple ~/Appli). permet au job de trouver le runAppli
- - '-r' pour spécifier les numéros de versions de référence pour chacun des scripts
+ - '-r' pour specifier les numeros de versions de reference pour chacun des scripts
- '-d' pour preciser le fichier dataBase
- - '-f' pour spécifier le nom du rapport html produit (/tmp/toto.html par défaut -) )
+ - '-f' pour specifier le nom du rapport html produit (/tmp/toto.html par defaut -) )
.. code-block:: python
python compareVersions.py -s ./runAppli -r 1,2,2 -d ./myMesh.db -f ./rapport.html
- Ici, pour les scripts n°1, 2 et 3, les versions de référence sont, respectivement "Salome7.2.0", "Salome7.3.0" et "Salome 7.3.0".
+ Ici, pour les scripts n°1, 2 et 3, les versions de reference sont, respectivement "Salome7.2.0", "Salome7.3.0" et "Salome 7.3.0".
export/import de la base
- parametre d 'entree obligatoire : la directory qui contient les fichiers a importer
- admet l option -p (pour partiel) qui n importe pas les tables a priori communes a tous
- - admet l option -f (pour force) qui pour les enregistrements qui existent déjà dans la base remplace
+ - admet l option -f (pour force) qui pour les enregistrements qui existent deja dans la base remplace
par les valeurs donnees dans le fichier
-Critères de vérification
+Criteres de verification
========================
Principe
--------
Le principe est simple.
-Pour chaque maillage, on définit des valeurs de référence associées au maillage. A chaque nouvelle version de Salome, on compare les résultats obtenus avec ces valeurs de référence pour le script étudié. On émet un warning à chaque fois que les écarts relatifs dépassent un certain seuil.
+Pour chaque maillage, on definit des valeurs de reference associees au maillage. A chaque nouvelle version de Salome, on compare les resultats obtenus avec ces valeurs de reference pour le script etudie. On emet un warning a chaque fois que les ecarts relatifs depassent un certain seuil.
-Critères
+Criteres
--------
-Les critères de vérification portent sur :
+Les criteres de verification portent sur :
* Le temps CPU
- * Le nombre d'entités du maillage classé par type
+ * Le nombre d'entites du maillage classe par type
- Le nombre de noeuds
- Le nombre de segments (maille 1D)
- Le nombre de triangles (maille 2D)
- Le nombre de quadrangles (maille 2D)
- - Le nombre de tétraèdres (maille 2D)
+ - Le nombre de tetraedres (maille 2D)
- * Le rapport de tailles de chaque élément du maillage (fonction GetAspectRatio)
+ * Le rapport de tailles de chaque element du maillage (fonction GetAspectRatio)
- Pour un maillage 3D, on calcul le ratio des mailles 3D
- Pour un maillage 2D, on calcul le ratio des mailles 2D
- * La longueur de chaque élément du maillage (fonction GetMaxElementLength)
+ * La longueur de chaque element du maillage (fonction GetMaxElementLength)
- Pour un maillage 3D, on calcul la longueur des mailles 3D
- Pour un maillage 2D, on calcul la longueur des mailles 2D
-Ces critères sont calculés sur tout le maillage et éventuellement sur des groupes de mailles de référence associés au maillage.
+Ces criteres sont calcules sur tout le maillage et eventuellement sur des groupes de mailles de reference associes au maillage.
-Pour chaque maillage, les valeurs de référence sont calculées sur la base d'une version spécifique de Salome (qui peut être différente d'un maillage à l'autre).
+Pour chaque maillage, les valeurs de reference sont calculees sur la base d'une version specifique de Salome (qui peut etre differente d'un maillage a l'autre).
-Pour le rapport de tailles et la longueur des mailles, on calcule systématiquement le maximun, le minimum, la moyenne, le 1er et 3ème quartile et enfin la médiane.
+Pour le rapport de tailles et la longueur des mailles, on calcule systematiquement le maximun, le minimum, la moyenne, le 1er et 3eme quartile et enfin la mediane.
-Pour ces quatres critères, on définit un seuil à ne pas dépasser (qui peut être différent d'un critère à l'autre). Actuellement, au sein d'un même critère, les seuils sont identiques.
+Pour ces quatres criteres, on definit un seuil a ne pas depasser (qui peut etre different d'un critere a l'autre). Actuellement, au sein d'un meme critere, les seuils sont identiques.
self.PBMaillage.setText(_translate("Choix", "Table Maillages"))
self.PBMachine.setText(_translate("Choix", "Table Machines"))
self.PBVersion.setText(_translate("Choix", "Table Versions"))
- self.PBGroupesRef.setText(_translate("Choix", "Table Groupes Référence"))
+ self.PBGroupesRef.setText(_translate("Choix", "Table Groupes Reference"))
if __name__ == "__main__":
<item>
<widget class="QPushButton" name="PBGroupesRef">
<property name="text">
- <string>Table Groupes Référence</string>
+ <string>Table Groupes Reference</string>
</property>
</widget>
</item>
</size>
</property>
<property name="text">
- <string><html><head/><body><p>à comparer</p></body></html></string>
+ <string><html><head/><body><p>a comparer</p></body></html></string>
</property>
</widget>
</item>
</rect>
</property>
<property name="text">
- <string><html><head/><body><p>en % de différence</p></body></html></string>
+ <string><html><head/><body><p>en % de difference</p></body></html></string>
</property>
</widget>
<widget class="QWidget" name="layoutWidget">
</rect>
</property>
<property name="text">
- <string><html><head/><body><p><span style=" font-weight:600;">Résultat</span></p></body></html></string>
+ <string><html><head/><body><p><span style=" font-weight:600;">Resultat</span></p></body></html></string>
</property>
</widget>
<widget class="QSplitter" name="splitter">
#
"""
Ce package contient les fonctionnalites necessaires
- pour l'acquisition des données
+ pour l'acquisition des donnees
"""
id="rect5901-0-2-7-3-4"
style="text-align:end;text-anchor:end" /></flowRegion><flowPara
style="font-size:12px;text-align:end;text-anchor:end;fill:#0000ff;fill-opacity:1"
- id="flowPara5903-8-9-8-0-7">Carré</flowPara></flowRoot> <rect
+ id="flowPara5903-8-9-8-0-7">Carre</flowPara></flowRoot> <rect
style="fill:#00f0ff;fill-opacity:1;stroke:#000000;stroke-opacity:1"
id="rect4267"
width="34"
id="rect4137-8"
style="text-align:start;text-anchor:start" /></flowRegion><flowPara
style="font-size:12px;text-align:start;text-anchor:start;fill:#0000ff;fill-opacity:1"
- id="flowPara4139-6">Rectangle tronqué</flowPara></flowRoot> <rect
+ id="flowPara4139-6">Rectangle tronque</flowPara></flowRoot> <rect
style="fill:#00f0ff;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-opacity:1"
id="rect4267-8-8"
width="34"
</rect>
</property>
<property name="toolTip">
- <string><html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Fissure de forme elliptique :</span></p><p><img src=":/newPrefix/images/schema_ellipse.png"/><br/></p><p><span style=" font-weight:600; text-decoration: underline;">Centre</span> : Coordonnées du centre de l'ellipse (ex: 0 0 1)</p><p><span style=" font-weight:600; text-decoration: underline;">Normale</span> : Coordonnées du vecteur normal à l'ellipse (ex: 1 0 0)</p><p><span style=" font-weight:600; text-decoration: underline;">Rayon</span> : Rayon de l'ellipse le long du vecteur direction (ex: 1.0e1)</p><p><span style=" text-decoration: underline;">Direction</span> : Coordonnées du vecteur direction de l'ellipse (ex: 0 1 0). Nécessaire pour une ellipse</p><p><span style=" text-decoration: underline;">Rayon 2</span> : Rayon de l'ellipse le long du vecteur orthogonal à normale et direction (ex: 1.0e1). Si vide égal à Rayon</p><p><span style=" text-decoration: underline;">Angle</span> : Angle en degrés pour une ellipse tronquée (ex: 180.). Si vide, l'ellipse n'est pas tronquée</p><p><span style=" text-decoration: underline;">Rayon entaille</span> : Rayon du fond d'entaille. (ex: 1.0e1). Si vide, la fissure est plane sans entaille</p><p><span style=" text-decoration: underline;">Extension</span> : Longueur d'extension de l'ellipse tronquée dans le long de la direction opposée à Direction (ex: 1.0)</p><p><span style=" font-weight:600; font-style:italic;">Gras : Informations obligatoires</span></p></body></html></string>
+ <string><html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Fissure de forme elliptique :</span></p><p><img src=":/newPrefix/images/schema_ellipse.png"/><br/></p><p><span style=" font-weight:600; text-decoration: underline;">Centre</span> : Coordonnees du centre de l'ellipse (ex: 0 0 1)</p><p><span style=" font-weight:600; text-decoration: underline;">Normale</span> : Coordonnees du vecteur normal a l'ellipse (ex: 1 0 0)</p><p><span style=" font-weight:600; text-decoration: underline;">Rayon</span> : Rayon de l'ellipse le long du vecteur direction (ex: 1.0e1)</p><p><span style=" text-decoration: underline;">Direction</span> : Coordonnees du vecteur direction de l'ellipse (ex: 0 1 0). Necessaire pour une ellipse</p><p><span style=" text-decoration: underline;">Rayon 2</span> : Rayon de l'ellipse le long du vecteur orthogonal a normale et direction (ex: 1.0e1). Si vide egal a Rayon</p><p><span style=" text-decoration: underline;">Angle</span> : Angle en degres pour une ellipse tronquee (ex: 180.). Si vide, l'ellipse n'est pas tronquee</p><p><span style=" text-decoration: underline;">Rayon entaille</span> : Rayon du fond d'entaille. (ex: 1.0e1). Si vide, la fissure est plane sans entaille</p><p><span style=" text-decoration: underline;">Extension</span> : Longueur d'extension de l'ellipse tronquee dans le long de la direction opposee a Direction (ex: 1.0)</p><p><span style=" font-weight:600; font-style:italic;">Gras : Informations obligatoires</span></p></body></html></string>
</property>
<property name="text">
<string>?</string>
</rect>
</property>
<property name="toolTip">
- <string><html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Fissure de forme rectangulaire :</span></p><p><img src=":/newPrefix/images/schema_rectangle.png"/><br/></p><p><span style=" font-weight:600; text-decoration: underline;">Centre</span> : Coordonnées du centre du rectangle (ex: 0 0 1)</p><p><span style=" font-weight:600; text-decoration: underline;">Normale</span> : Coordonnées du vecteur normal au rectangle (ex: 1 0 0)</p><p><span style=" font-weight:600; text-decoration: underline;">Longueur</span> : Demie longueur du rectangle le long du vecteur direction (ex: 1.0e1)</p><p><span style=" font-weight:600; text-decoration: underline;">Direction</span> : Coordonnées du vecteur direction du rectangle (ex: 0 1 0)</p><p><span style=" text-decoration: underline;">Largeur</span> : Demie largeur du rectangle le long du vecteur orthogonal à normale et direction (ex: 1.0e1). Si vide, égal à Longueur</p><p><span style=" text-decoration: underline;">Rayon </span>: Rayon du congé aux angles du rectangle (ex: 1.0e1). Si vide, pas de congé</p><p><span style=" text-decoration: underline;">Angle</span> : Angle en degrés pour un rectangle tronqué (ex: 180.). Si vide, le rectangle n'est pas tronquée</p><p><span style=" text-decoration: underline;">Rayon entaille</span> : Rayon du fond d'entaille. (ex: 1.0e1). Si vide, la fissure est plane sans entaille</p><p><span style=" font-weight:600; font-style:italic;">Gras : Informations obligatoires</span></p></body></html></string>
+ <string><html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Fissure de forme rectangulaire :</span></p><p><img src=":/newPrefix/images/schema_rectangle.png"/><br/></p><p><span style=" font-weight:600; text-decoration: underline;">Centre</span> : Coordonnees du centre du rectangle (ex: 0 0 1)</p><p><span style=" font-weight:600; text-decoration: underline;">Normale</span> : Coordonnees du vecteur normal au rectangle (ex: 1 0 0)</p><p><span style=" font-weight:600; text-decoration: underline;">Longueur</span> : Demie longueur du rectangle le long du vecteur direction (ex: 1.0e1)</p><p><span style=" font-weight:600; text-decoration: underline;">Direction</span> : Coordonnees du vecteur direction du rectangle (ex: 0 1 0)</p><p><span style=" text-decoration: underline;">Largeur</span> : Demie largeur du rectangle le long du vecteur orthogonal a normale et direction (ex: 1.0e1). Si vide, egal a Longueur</p><p><span style=" text-decoration: underline;">Rayon </span>: Rayon du conge aux angles du rectangle (ex: 1.0e1). Si vide, pas de conge</p><p><span style=" text-decoration: underline;">Angle</span> : Angle en degres pour un rectangle tronque (ex: 180.). Si vide, le rectangle n'est pas tronquee</p><p><span style=" text-decoration: underline;">Rayon entaille</span> : Rayon du fond d'entaille. (ex: 1.0e1). Si vide, la fissure est plane sans entaille</p><p><span style=" font-weight:600; font-style:italic;">Gras : Informations obligatoires</span></p></body></html></string>
</property>
<property name="text">
<string>?</string>
</rect>
</property>
<property name="toolTip">
- <string><html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Fissure de forme spherique :</span></p><p><img src=":/newPrefix/images/schema_shpere.png"/><br/></p><p><span style=" font-weight:600; text-decoration: underline;">Centre</span> : Coordonnées du centre de la sphere (ex: 0 0 1)</p><p><span style=" font-weight:600; text-decoration: underline;">Rayon</span> : Rayon de la sphere (ex: 1.0e1)</p><p><span style=" font-weight:600; font-style:italic;">Gras : Informations obligatoires</span></p></body></html></string>
+ <string><html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Fissure de forme spherique :</span></p><p><img src=":/newPrefix/images/schema_shpere.png"/><br/></p><p><span style=" font-weight:600; text-decoration: underline;">Centre</span> : Coordonnees du centre de la sphere (ex: 0 0 1)</p><p><span style=" font-weight:600; text-decoration: underline;">Rayon</span> : Rayon de la sphere (ex: 1.0e1)</p><p><span style=" font-weight:600; font-style:italic;">Gras : Informations obligatoires</span></p></body></html></string>
</property>
<property name="text">
<string>?</string>
</rect>
</property>
<property name="toolTip">
- <string><html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Fissure de forme personnalisée :</span></p><p><span style=" font-weight:600; text-decoration: underline;">Med file</span> : Adresse du maillage décrivant la fissure (ex: $HOME/PROJETX/fissure3.med)</p><p><span style=" font-style:italic;">Le maillage de la fissure doit être une surface composée de tétrahèdres linéaires uniquement.</span></p><p><span style=" font-weight:600; font-style:italic;">Gras : Informations obligatoires</span></p></body></html></string>
+ <string><html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Fissure de forme personnalisee :</span></p><p><span style=" font-weight:600; text-decoration: underline;">Med file</span> : Adresse du maillage decrivant la fissure (ex: $HOME/PROJETX/fissure3.med)</p><p><span style=" font-style:italic;">Le maillage de la fissure doit etre une surface composee de tetrahedres lineaires uniquement.</span></p><p><span style=" font-weight:600; font-style:italic;">Gras : Informations obligatoires</span></p></body></html></string>
</property>
<property name="text">
<string>?</string>
""" FissureLauncher:
Permet de lancer le script 'casStandard'
- en fonction des paramètres contenus dans 'dicoParams'. """
+ en fonction des parametres contenus dans 'dicoParams'. """
#import sys
import salome
""" FissureLauncher:
Permet de lancer le script 'casStandard'
- en fonction des paramètres contenus dans 'dicoParams'. """
+ en fonction des parametres contenus dans 'dicoParams'. """
#import sys
import salome
class cubeAngle(fissureGenerique):
"""
- problème de fissure plane coupant 2 faces (angle), débouches normaux, objet plan
+ probleme de fissure plane coupant 2 faces (angle), debouches normaux, objet plan
"""
nomProbleme = "cubeAngle"
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour méthode construitFissureGenerale
+ parametres de la fissure pour methode construitFissureGenerale
lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage)
- rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure
+ rayonPipe : le rayon du pile maille en hexa autour du fond de fissure
"""
logging.info("setParamShapeFissure %s", self.nomCas)
self.shapeFissureParams = dict(lgInfluence = 20,
class cubeAngle2(cubeAngle):
"""
- problème de fissure plane coupant 2 faces (angle), débouches normaux, objet plan
+ probleme de fissure plane coupant 2 faces (angle), debouches normaux, objet plan
detection d'un probleme de tolerance sur les edges de jonction pipe et face fissure externe
"""
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour méthode construitFissureGenerale
+ parametres de la fissure pour methode construitFissureGenerale
lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage)
- rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure
+ rayonPipe : le rayon du pile maille en hexa autour du fond de fissure
"""
self.shapeFissureParams = dict(lgInfluence = 20,
rayonPipe = 5)
class cylindre(fissureGenerique):
"""
- problème de fissure plane sur cylindre, grand fond de fissure en arc de cercle
+ probleme de fissure plane sur cylindre, grand fond de fissure en arc de cercle
"""
nomProbleme = "cylindre"
# ---------------------------------------------------------------------------
def genereMaillageSain(self, geometriesSaines, meshParams):
"""
- génère le maillage de l'objet sain, par chargement d'un fichier med
- ici, les paramètres de géométrie et de maillage ne sont pas utiles
+ genere le maillage de l'objet sain, par chargement d'un fichier med
+ ici, les parametres de geometrie et de maillage ne sont pas utiles
"""
logging.info("genereMaillageSain %s", self.nomCas)
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour méthode construitFissureGenerale
+ parametres de la fissure pour methode construitFissureGenerale
lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage)
- rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure
+ rayonPipe : le rayon du pile maille en hexa autour du fond de fissure
"""
logging.info("setParamShapeFissure %s", self.nomCas)
self.shapeFissureParams = dict(lgInfluence = 20,
class cylindre_2(cylindre):
"""
- problème de fissure plane sur cylindre hexa, fond de fissure complexe : polyline
+ probleme de fissure plane sur cylindre hexa, fond de fissure complexe : polyline
"""
nomProbleme = "cylindre2"
class ellipse_1(fissureGenerique):
"""
- problème de fissure non plane, débouchante non normale
+ probleme de fissure non plane, debouchante non normale
"""
nomProbleme = "ellipse1"
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour méthode construitFissureGenerale
+ parametres de la fissure pour methode construitFissureGenerale
lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage)
- rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure
+ rayonPipe : le rayon du pile maille en hexa autour du fond de fissure
convexe : optionnel, True : la face est convexe (vue de l'exterieur) sert si on ne donne pas de point interne
- pointIn_x : optionnel, coordonnée x d'un point dans le solide sain (pour orienter la face)
+ pointIn_x : optionnel, coordonnee x d'un point dans le solide sain (pour orienter la face)
"""
logging.info("setParamShapeFissure %s", self.nomCas)
self.shapeFissureParams = dict(lgInfluence = 50,
class ellipse_2(ellipse_1):
"""
- problème de fissure non plane, débouchante non normale
+ probleme de fissure non plane, debouchante non normale
"""
nomProbleme = "ellipse2"
class eprouvetteCourbe(fissureGenerique):
"""
- problème de fissure plane coupant 3 faces (éprouvette), faces au débouché non planes, incidence presque normale
+ probleme de fissure plane coupant 3 faces (eprouvette), faces au debouche non planes, incidence presque normale
"""
nomProbleme = "eprouvetteCourbe"
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour méthode construitFissureGenerale
+ parametres de la fissure pour methode construitFissureGenerale
lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage)
- rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure
+ rayonPipe : le rayon du pile maille en hexa autour du fond de fissure
convexe : optionnel True : la face est convexe (vue de l'exterieur) sert si on ne donne pas de point interne
- pointIn_x : optionnel coordonnée x d'un point dans le solide sain (pour orienter la face)
+ pointIn_x : optionnel coordonnee x d'un point dans le solide sain (pour orienter la face)
"""
logging.info("setParamShapeFissure %s", self.nomCas)
self.shapeFissureParams = dict(lgInfluence = 30,
class eprouvetteDroite(fissureGenerique):
"""
- problème de fissure plane coupant 3 faces (éprouvette), débouches normaux, objet plan
+ probleme de fissure plane coupant 3 faces (eprouvette), debouches normaux, objet plan
"""
nomProbleme = "eprouvetteDroite"
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour méthode construitFissureGenerale
+ parametres de la fissure pour methode construitFissureGenerale
lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage)
- rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure
+ rayonPipe : le rayon du pile maille en hexa autour du fond de fissure
convexe : optionnel True : la face est convexe (vue de l'exterieur) sert si on ne donne pas de point interne
- pointIn_x : optionnel coordonnée x d'un point dans le solide sain (pour orienter la face)
+ pointIn_x : optionnel coordonnee x d'un point dans le solide sain (pour orienter la face)
"""
logging.info("setParamShapeFissure %s", self.nomCas)
self.shapeFissureParams = dict(lgInfluence = 30,
class eprouvetteDroite_2(eprouvetteDroite):
"""
- problème de fissure plane coupant 3 faces (éprouvette), débouches non normaux, objet plan
+ probleme de fissure plane coupant 3 faces (eprouvette), debouches non normaux, objet plan
"""
nomProbleme = "eprouvetteDroite2"
#initLog.setRelease()
#initLog.setPerfTests()
-# ---tous les cas en sequence, ou les cas selectionnés ...
+# ---tous les cas en sequence, ou les cas selectionnes ...
runall = True
if runall:
torun = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,]
class faceGauche(fissureGenerique):
"""
- problème de fissure non plane, débouchante non normale
+ probleme de fissure non plane, debouchante non normale
"""
nomProbleme = "faceGauche"
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour méthode construitFissureGenerale
+ parametres de la fissure pour methode construitFissureGenerale
lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage)
- rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure
+ rayonPipe : le rayon du pile maille en hexa autour du fond de fissure
convexe : optionnel True : la face est convexe (vue de l'exterieur) sert si on ne donne pas de point interne
- pointIn_x : optionnel coordonnée x d'un point dans le solide sain (pour orienter la face)
+ pointIn_x : optionnel coordonnee x d'un point dans le solide sain (pour orienter la face)
"""
logging.info("setParamShapeFissure %s", self.nomCas)
self.shapeFissureParams = dict(lgInfluence = 300,
class faceGauche_2(fissureGenerique):
"""
- problème de fissure non plane, débouchante non normale
+ probleme de fissure non plane, debouchante non normale
"""
nomProbleme = "faceGauche2"
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour méthode construitFissureGenerale
+ parametres de la fissure pour methode construitFissureGenerale
lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage)
- rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure
+ rayonPipe : le rayon du pile maille en hexa autour du fond de fissure
convexe : optionnel True : la face est convexe (vue de l'exterieur) sert si on ne donne pas de point interne
- pointIn_x : optionnel coordonnée x d'un point dans le solide sain (pour orienter la face)
+ pointIn_x : optionnel coordonnee x d'un point dans le solide sain (pour orienter la face)
"""
logging.info("setParamShapeFissure %s", self.nomCas)
self.shapeFissureParams = dict(lgInfluence = 100,
class fissureCoude_1(fissureCoude):
"""
- problème de fissure du Coude :
+ probleme de fissure du Coude :
adaptation maillage
"""
# ---------------------------------------------------------------------------
def setParamGeometrieSaine(self):
"""
- Paramètres géométriques du tuyau coudé sain:
+ Parametres geometriques du tuyau coude sain:
angleCoude
r_cintr
l_tube_p1
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour le tuyau coude
- profondeur : 0 < profondeur <= épaisseur
+ parametres de la fissure pour le tuyau coude
+ profondeur : 0 < profondeur <= epaisseur
rayonPipe : rayon du pipe correspondant au maillage rayonnant
- lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par défaut)
+ lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par defaut)
azimut : entre 0 et 360°
alpha : 0 < alpha < angleCoude
longueur : <=2*profondeur ==> force une fissure elliptique (longueur/profondeur = grand axe/petit axe).
- orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
- lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris égal à profondeur. A ajuster selon le maillage)
- elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extrémites)
- pointIn_x : optionnel coordonnées x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
+ orientation : 0° : longitudinale, 90° : circonferentielle, autre : uniquement fissures elliptiques
+ lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris egal a profondeur. A ajuster selon le maillage)
+ elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extremites)
+ pointIn_x : optionnel coordonnees x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
externe : True : fissure face externe, False : fissure face interne
"""
self.shapeFissureParams = dict(profondeur = 10,
# ---------------------------------------------------------------------------
def setParamMaillageFissure(self):
"""
- Paramètres du maillage de la fissure pour le tuyau coudé
- Voir également setParamShapeFissure, paramètres rayonPipe et lenSegPipe.
+ Parametres du maillage de la fissure pour le tuyau coude
+ Voir egalement setParamShapeFissure, parametres rayonPipe et lenSegPipe.
nbSegRad = nombre de couronnes
nbSegCercle = nombre de secteurs
- areteFaceFissure = taille cible de l'arête des triangles en face de fissure.
+ areteFaceFissure = taille cible de l'arete des triangles en face de fissure.
"""
self.maillageFissureParams = dict(nomRep = '.',
nomFicSain = self.nomCas,
# ---------------------------------------------------------------------------
def setParamGeometrieSaine(self):
"""
- Paramètres géométriques du tuyau coudé sain:
+ Parametres geometriques du tuyau coude sain:
angleCoude
r_cintr
l_tube_p1
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour le tuyau coude
- profondeur : 0 < profondeur <= épaisseur
+ parametres de la fissure pour le tuyau coude
+ profondeur : 0 < profondeur <= epaisseur
rayonPipe : rayon du pipe correspondant au maillage rayonnant
- lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par défaut)
+ lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par defaut)
azimut : entre 0 et 360°
alpha : 0 < alpha < angleCoude
longueur : <=2*profondeur ==> force une fissure elliptique (longueur/profondeur = grand axe/petit axe).
- orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
- lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris égal à profondeur. A ajuster selon le maillage)
- elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extrémites)
- pointIn_x : optionnel coordonnées x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
+ orientation : 0° : longitudinale, 90° : circonferentielle, autre : uniquement fissures elliptiques
+ lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris egal a profondeur. A ajuster selon le maillage)
+ elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extremites)
+ pointIn_x : optionnel coordonnees x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
externe : True : fissure face externe, False : fissure face interne
"""
self.shapeFissureParams = dict(profondeur = 2.5,
def setParamMaillageFissure(self):
"""
- Paramètres du maillage de la fissure pour le tuyau coudé
- Voir également setParamShapeFissure, paramètres rayonPipe et lenSegPipe.
+ Parametres du maillage de la fissure pour le tuyau coude
+ Voir egalement setParamShapeFissure, parametres rayonPipe et lenSegPipe.
nbSegRad = nombre de couronnes
nbSegCercle = nombre de secteurs
- areteFaceFissure = taille cible de l'arête des triangles en face de fissure.
+ areteFaceFissure = taille cible de l'arete des triangles en face de fissure.
"""
self.maillageFissureParams = dict(nomRep = '.',
nomFicSain = self.nomCas,
class fissureCoude_2(fissureCoude):
"""
- problème de fissure du Coude :
+ probleme de fissure du Coude :
adaptation maillage
"""
# ---------------------------------------------------------------------------
def setParamGeometrieSaine(self):
"""
- Paramètres géométriques du tuyau coudé sain:
+ Parametres geometriques du tuyau coude sain:
angleCoude
r_cintr
l_tube_p1
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour le tuyau coude
- profondeur : 0 < profondeur <= épaisseur
+ parametres de la fissure pour le tuyau coude
+ profondeur : 0 < profondeur <= epaisseur
rayonPipe : rayon du pipe correspondant au maillage rayonnant
- lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par défaut)
+ lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par defaut)
azimut : entre 0 et 360°
alpha : 0 < alpha < angleCoude
longueur : <=2*profondeur ==> force une fissure elliptique (longueur/profondeur = grand axe/petit axe).
- orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
- lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris égal à profondeur. A ajuster selon le maillage)
- elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extrémites)
- pointIn_x : optionnel coordonnées x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
+ orientation : 0° : longitudinale, 90° : circonferentielle, autre : uniquement fissures elliptiques
+ lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris egal a profondeur. A ajuster selon le maillage)
+ elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extremites)
+ pointIn_x : optionnel coordonnees x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
externe : True : fissure face externe, False : fissure face interne
"""
self.shapeFissureParams = dict(profondeur = 10,
# ---------------------------------------------------------------------------
def setParamMaillageFissure(self):
"""
- Paramètres du maillage de la fissure pour le tuyau coudé
- Voir également setParamShapeFissure, paramètres rayonPipe et lenSegPipe.
+ Parametres du maillage de la fissure pour le tuyau coude
+ Voir egalement setParamShapeFissure, parametres rayonPipe et lenSegPipe.
nbSegRad = nombre de couronnes
nbSegCercle = nombre de secteurs
- areteFaceFissure = taille cible de l'arête des triangles en face de fissure.
+ areteFaceFissure = taille cible de l'arete des triangles en face de fissure.
"""
self.maillageFissureParams = dict(nomRep = '.',
nomFicSain = self.nomCas,
class fissureCoude_3(fissureCoude):
"""
- problème de fissure du Coude
+ probleme de fissure du Coude
adaptation maillage
"""
# ---------------------------------------------------------------------------
def setParamGeometrieSaine(self):
"""
- Paramètres géométriques du tuyau coudé sain:
+ Parametres geometriques du tuyau coude sain:
angleCoude
r_cintr
l_tube_p1
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour le tuyau coude
- profondeur : 0 < profondeur <= épaisseur
+ parametres de la fissure pour le tuyau coude
+ profondeur : 0 < profondeur <= epaisseur
rayonPipe : rayon du pipe correspondant au maillage rayonnant
- lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par défaut)
+ lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par defaut)
azimut : entre 0 et 360°
alpha : 0 < alpha < angleCoude
longueur : <=2*profondeur ==> force une fissure elliptique (longueur/profondeur = grand axe/petit axe).
- orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
- lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris égal à profondeur. A ajuster selon le maillage)
- elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extrémites)
- pointIn_x : optionnel coordonnées x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
+ orientation : 0° : longitudinale, 90° : circonferentielle, autre : uniquement fissures elliptiques
+ lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris egal a profondeur. A ajuster selon le maillage)
+ elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extremites)
+ pointIn_x : optionnel coordonnees x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
externe : True : fissure face externe, False : fissure face interne
"""
self.shapeFissureParams = dict(profondeur = 10,
# ---------------------------------------------------------------------------
def setParamMaillageFissure(self):
"""
- Paramètres du maillage de la fissure pour le tuyau coudé
- Voir également setParamShapeFissure, paramètres rayonPipe et lenSegPipe.
+ Parametres du maillage de la fissure pour le tuyau coude
+ Voir egalement setParamShapeFissure, parametres rayonPipe et lenSegPipe.
nbSegRad = nombre de couronnes
nbSegCercle = nombre de secteurs
- areteFaceFissure = taille cible de l'arête des triangles en face de fissure.
+ areteFaceFissure = taille cible de l'arete des triangles en face de fissure.
"""
self.maillageFissureParams = dict(nomRep = '.',
nomFicSain = self.nomCas,
class fissureCoude_4(fissureCoude):
"""
- problème de fissure du Coude : ASCOU09A
+ probleme de fissure du Coude : ASCOU09A
adaptation maillage
"""
# ---------------------------------------------------------------------------
def setParamGeometrieSaine(self):
"""
- Paramètres géométriques du tuyau coudé sain:
+ Parametres geometriques du tuyau coude sain:
angleCoude
r_cintr
l_tube_p1
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour le tuyau coude
- profondeur : 0 < profondeur <= épaisseur
+ parametres de la fissure pour le tuyau coude
+ profondeur : 0 < profondeur <= epaisseur
rayonPipe : rayon du pipe correspondant au maillage rayonnant
- lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par défaut)
+ lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par defaut)
azimut : entre 0 et 360°
alpha : 0 < alpha < angleCoude
longueur : <=2*profondeur ==> force une fissure elliptique (longueur/profondeur = grand axe/petit axe).
- orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
- lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris égal à profondeur. A ajuster selon le maillage)
- elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extrémites)
- pointIn_x : optionnel coordonnées x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
+ orientation : 0° : longitudinale, 90° : circonferentielle, autre : uniquement fissures elliptiques
+ lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris egal a profondeur. A ajuster selon le maillage)
+ elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extremites)
+ pointIn_x : optionnel coordonnees x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
externe : True : fissure face externe, False : fissure face interne
"""
self.shapeFissureParams = dict(profondeur = 10,
# ---------------------------------------------------------------------------
def setParamMaillageFissure(self):
"""
- Paramètres du maillage de la fissure pour le tuyau coudé
- Voir également setParamShapeFissure, paramètres rayonPipe et lenSegPipe.
+ Parametres du maillage de la fissure pour le tuyau coude
+ Voir egalement setParamShapeFissure, parametres rayonPipe et lenSegPipe.
nbSegRad = nombre de couronnes
nbSegCercle = nombre de secteurs
- areteFaceFissure = taille cible de l'arête des triangles en face de fissure.
+ areteFaceFissure = taille cible de l'arete des triangles en face de fissure.
"""
self.maillageFissureParams = dict(nomRep = '.',
nomFicSain = self.nomCas,
class fissureCoude_5(fissureCoude):
"""
- problème de fissure du Coude :
+ probleme de fissure du Coude :
adaptation maillage
"""
# ---------------------------------------------------------------------------
def setParamGeometrieSaine(self):
"""
- Paramètres géométriques du tuyau coudé sain:
+ Parametres geometriques du tuyau coude sain:
angleCoude
r_cintr
l_tube_p1
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour le tuyau coude
- profondeur : 0 < profondeur <= épaisseur
+ parametres de la fissure pour le tuyau coude
+ profondeur : 0 < profondeur <= epaisseur
rayonPipe : rayon du pipe correspondant au maillage rayonnant
- lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par défaut)
+ lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par defaut)
azimut : entre 0 et 360°
alpha : 0 < alpha < angleCoude
longueur : <=2*profondeur ==> force une fissure elliptique (longueur/profondeur = grand axe/petit axe).
- orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
- lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris égal à profondeur. A ajuster selon le maillage)
- elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extrémites)
- pointIn_x : optionnel coordonnées x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
+ orientation : 0° : longitudinale, 90° : circonferentielle, autre : uniquement fissures elliptiques
+ lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris egal a profondeur. A ajuster selon le maillage)
+ elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extremites)
+ pointIn_x : optionnel coordonnees x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
externe : True : fissure face externe, False : fissure face interne
"""
self.shapeFissureParams = dict(profondeur = 10,
# ---------------------------------------------------------------------------
def setParamMaillageFissure(self):
"""
- Paramètres du maillage de la fissure pour le tuyau coudé
- Voir également setParamShapeFissure, paramètres rayonPipe et lenSegPipe.
+ Parametres du maillage de la fissure pour le tuyau coude
+ Voir egalement setParamShapeFissure, parametres rayonPipe et lenSegPipe.
nbSegRad = nombre de couronnes
nbSegCercle = nombre de secteurs
- areteFaceFissure = taille cible de l'arête des triangles en face de fissure.
+ areteFaceFissure = taille cible de l'arete des triangles en face de fissure.
"""
self.maillageFissureParams = dict(nomRep = '.',
nomFicSain = self.nomCas,
# ---------------------------------------------------------------------------
def setParamGeometrieSaine(self):
"""
- Paramètres géométriques du tuyau coudé sain:
+ Parametres geometriques du tuyau coude sain:
angleCoude
r_cintr
l_tube_p1
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour le tuyau coude
- profondeur : 0 < profondeur <= épaisseur
+ parametres de la fissure pour le tuyau coude
+ profondeur : 0 < profondeur <= epaisseur
rayonPipe : rayon du pipe correspondant au maillage rayonnant
- lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par défaut)
+ lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par defaut)
azimut : entre 0 et 360°
alpha : 0 < alpha < angleCoude
longueur : <=2*profondeur ==> force une fissure elliptique (longueur/profondeur = grand axe/petit axe).
- orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
- lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris égal à profondeur. A ajuster selon le maillage)
- elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extrémites)
- pointIn_x : optionnel coordonnées x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
+ orientation : 0° : longitudinale, 90° : circonferentielle, autre : uniquement fissures elliptiques
+ lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris egal a profondeur. A ajuster selon le maillage)
+ elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extremites)
+ pointIn_x : optionnel coordonnees x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
externe : True : fissure face externe, False : fissure face interne
"""
self.shapeFissureParams = dict(profondeur = 10,
def setParamMaillageFissure(self):
"""
- Paramètres du maillage de la fissure pour le tuyau coudé
- Voir également setParamShapeFissure, paramètres rayonPipe et lenSegPipe.
+ Parametres du maillage de la fissure pour le tuyau coude
+ Voir egalement setParamShapeFissure, parametres rayonPipe et lenSegPipe.
nbSegRad = nombre de couronnes
nbSegCercle = nombre de secteurs
- areteFaceFissure = taille cible de l'arête des triangles en face de fissure.
+ areteFaceFissure = taille cible de l'arete des triangles en face de fissure.
"""
self.maillageFissureParams = dict(nomRep = '.',
nomFicSain = self.nomCas,
# ---------------------------------------------------------------------------
def setParamGeometrieSaine(self):
"""
- Paramètres géométriques du tuyau coudé sain:
+ Parametres geometriques du tuyau coude sain:
angleCoude
r_cintr
l_tube_p1
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour le tuyau coude
- profondeur : 0 < profondeur <= épaisseur
+ parametres de la fissure pour le tuyau coude
+ profondeur : 0 < profondeur <= epaisseur
rayonPipe : rayon du pipe correspondant au maillage rayonnant
- lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par défaut)
+ lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par defaut)
azimut : entre 0 et 360°
alpha : 0 < alpha < angleCoude
longueur : <=2*profondeur ==> force une fissure elliptique (longueur/profondeur = grand axe/petit axe).
- orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
- lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris égal à profondeur. A ajuster selon le maillage)
- elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extrémites)
- pointIn_x : optionnel coordonnées x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
+ orientation : 0° : longitudinale, 90° : circonferentielle, autre : uniquement fissures elliptiques
+ lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris egal a profondeur. A ajuster selon le maillage)
+ elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extremites)
+ pointIn_x : optionnel coordonnees x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
externe : True : fissure face externe, False : fissure face interne
"""
self.shapeFissureParams = dict(profondeur = 10,
def setParamMaillageFissure(self):
"""
- Paramètres du maillage de la fissure pour le tuyau coudé
- Voir également setParamShapeFissure, paramètres rayonPipe et lenSegPipe.
+ Parametres du maillage de la fissure pour le tuyau coude
+ Voir egalement setParamShapeFissure, parametres rayonPipe et lenSegPipe.
nbSegRad = nombre de couronnes
nbSegCercle = nombre de secteurs
- areteFaceFissure = taille cible de l'arête des triangles en face de fissure.
+ areteFaceFissure = taille cible de l'arete des triangles en face de fissure.
"""
self.maillageFissureParams = dict(nomRep = '.',
nomFicSain = self.nomCas,
# ---------------------------------------------------------------------------
def setParamGeometrieSaine(self):
"""
- Paramètres géométriques du tuyau coudé sain:
+ Parametres geometriques du tuyau coude sain:
angleCoude
r_cintr
l_tube_p1
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour le tuyau coude
- profondeur : 0 < profondeur <= épaisseur
+ parametres de la fissure pour le tuyau coude
+ profondeur : 0 < profondeur <= epaisseur
rayonPipe : rayon du pipe correspondant au maillage rayonnant
- lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par défaut)
+ lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par defaut)
azimut : entre 0 et 360°
alpha : 0 < alpha < angleCoude
longueur : <=2*profondeur ==> force une fissure elliptique (longueur/profondeur = grand axe/petit axe).
- orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
- lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris égal à profondeur. A ajuster selon le maillage)
- elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extrémites)
- pointIn_x : optionnel coordonnées x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
+ orientation : 0° : longitudinale, 90° : circonferentielle, autre : uniquement fissures elliptiques
+ lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris egal a profondeur. A ajuster selon le maillage)
+ elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extremites)
+ pointIn_x : optionnel coordonnees x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
externe : True : fissure face externe, False : fissure face interne
"""
self.shapeFissureParams = dict(profondeur = 8,
def setParamMaillageFissure(self):
"""
- Paramètres du maillage de la fissure pour le tuyau coudé
- Voir également setParamShapeFissure, paramètres rayonPipe et lenSegPipe.
+ Parametres du maillage de la fissure pour le tuyau coude
+ Voir egalement setParamShapeFissure, parametres rayonPipe et lenSegPipe.
nbSegRad = nombre de couronnes
nbSegCercle = nombre de secteurs
- areteFaceFissure = taille cible de l'arête des triangles en face de fissure.
+ areteFaceFissure = taille cible de l'arete des triangles en face de fissure.
"""
self.maillageFissureParams = dict(nomRep = '.',
nomFicSain = self.nomCas,
# ---------------------------------------------------------------------------
def setParamGeometrieSaine(self):
"""
- Paramètres géométriques du tuyau coudé sain:
+ Parametres geometriques du tuyau coude sain:
angleCoude
r_cintr
l_tube_p1
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour le tuyau coude
- profondeur : 0 < profondeur <= épaisseur
+ parametres de la fissure pour le tuyau coude
+ profondeur : 0 < profondeur <= epaisseur
rayonPipe : rayon du pipe correspondant au maillage rayonnant
- lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par défaut)
+ lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par defaut)
azimut : entre 0 et 360°
alpha : 0 < alpha < angleCoude
longueur : <=2*profondeur ==> force une fissure elliptique (longueur/profondeur = grand axe/petit axe).
- orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
- lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris égal à profondeur. A ajuster selon le maillage)
- elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extrémites)
- pointIn_x : optionnel coordonnées x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
+ orientation : 0° : longitudinale, 90° : circonferentielle, autre : uniquement fissures elliptiques
+ lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris egal a profondeur. A ajuster selon le maillage)
+ elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extremites)
+ pointIn_x : optionnel coordonnees x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
externe : True : fissure face externe, False : fissure face interne
"""
self.shapeFissureParams = dict(profondeur = 10,
# ---------------------------------------------------------------------------
def setParamMaillageFissure(self):
"""
- Paramètres du maillage de la fissure pour le tuyau coudé
- Voir également setParamShapeFissure, paramètres rayonPipe et lenSegPipe.
+ Parametres du maillage de la fissure pour le tuyau coude
+ Voir egalement setParamShapeFissure, parametres rayonPipe et lenSegPipe.
nbSegRad = nombre de couronnes
nbSegCercle = nombre de secteurs
- areteFaceFissure = taille cible de l'arête des triangles en face de fissure.
+ areteFaceFissure = taille cible de l'arete des triangles en face de fissure.
"""
self.maillageFissureParams = dict(nomRep = '.',
nomFicSain = self.nomCas,
class fissure_Coude(fissureGenerique):
"""
- problème de fissure du Coude : version de base
+ probleme de fissure du Coude : version de base
maillage hexa
"""
# ---------------------------------------------------------------------------
def setParamGeometrieSaine(self):
"""
- Paramètres géométriques du tuyau coudé sain:
+ Parametres geometriques du tuyau coude sain:
angleCoude
r_cintr
l_tube_p1
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure
- profondeur : 0 < profondeur <= épaisseur
+ parametres de la fissure
+ profondeur : 0 < profondeur <= epaisseur
azimut : entre 0 et 360°
alpha : 0 < alpha < angleCoude
longueur : <=2*profondeur ==> ellipse, >2*profondeur = fissure longue
- lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris égal à profondeur. A ajuster selon le maillage)
- orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
+ lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris egal a profondeur. A ajuster selon le maillage)
+ orientation : 0° : longitudinale, 90° : circonferentielle, autre : uniquement fissures elliptiques
externe : True : fissure face externe, False : fissure face interne
"""
logging.info("setParamShapeFissure %s", self.nomCas)
# ---------------------------------------------------------------------------
def setParamGeometrieSaine(self):
"""
- Paramètres géométriques du tuyau coudé sain:
+ Parametres geometriques du tuyau coude sain:
angleCoude
r_cintr
l_tube_p1
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure
- profondeur : 0 < profondeur <= épaisseur
+ parametres de la fissure
+ profondeur : 0 < profondeur <= epaisseur
azimut : entre 0 et 360°
alpha : 0 < alpha < angleCoude
longueur : <=2*profondeur ==> ellipse, >2*profondeur = fissure longue
- orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
+ orientation : 0° : longitudinale, 90° : circonferentielle, autre : uniquement fissures elliptiques
externe : True : fissure face externe, False : fissure face interne
"""
print("setParamShapeFissure", self.nomCas)
class vis_1(fissureGenerique):
"""
- problème de fissure non plane, débouchante non normale
+ probleme de fissure non plane, debouchante non normale
"""
nomProbleme = "vis_1"
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour méthode construitFissureGenerale
+ parametres de la fissure pour methode construitFissureGenerale
lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage)
- rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure
+ rayonPipe : le rayon du pile maille en hexa autour du fond de fissure
convexe : optionnel True : la face est convexe (vue de l'exterieur) sert si on ne donne pas de point interne
- pointIn_x : optionnel coordonnée x d'un point dans le solide sain (pour orienter la face)
+ pointIn_x : optionnel coordonnee x d'un point dans le solide sain (pour orienter la face)
"""
logging.info("setParamShapeFissure %s", self.nomCas)
self.shapeFissureParams = dict(lgInfluence = 0.6,
-Exécution des exemples et cas tests :
+Execution des exemples et cas tests :
=====================================
- lancer salome
-- exécuter les instructions suivantes dans la console Python embarquée,
+- executer les instructions suivantes dans la console Python embarquee,
ou dans une console Python avec l'environnement SALOME (salome shell)
- # les shapes et fichiers med nécessaires aux tests sont créés dans
+ # les shapes et fichiers med necessaires aux tests sont crees dans
${SMESH_ROOT_DIR}/lib/python2.7/site-packages/salome/blocFissure/CasTests
- # les maillages fissurés sont écrits dans le répertoire d'exécution.
+ # les maillages fissures sont ecrits dans le repertoire d'execution.
-# préparation des shapes et fichiers MED
+# preparation des shapes et fichiers MED
----------------------------------------
from blocFissure.materielCasTests import genereMateriel
-# exécution exemple
+# execution exemple
-------------------
from blocFissure import exemple
-# exécution des cas tests (long: 1/2 heure)
+# execution des cas tests (long: 1/2 heure)
-------------------------------------------
from blocFissure.CasTests import execution_Cas
-# bug et problèmes des cas tests
+# bug et problemes des cas tests
--------------------------------
-Mauvaise détection d'arête vive avec GetInPlace : cas 7, 24
+Mauvaise detection d'arete vive avec GetInPlace : cas 7, 24
-Le maillage longitudinal du pipe peut creer des mailles de faible épaisseur
-à une des extrémités : le maillage en triangles des faces de fissure et de peau
-peut être moche au voisinage, de même que les tétraèdres qui s'appuient dessus.
+Le maillage longitudinal du pipe peut creer des mailles de faible epaisseur
+a une des extremites : le maillage en triangles des faces de fissure et de peau
+peut etre moche au voisinage, de meme que les tetraedres qui s'appuient dessus.
(2,3,16,26 ?)
| **repertoire de | *[string]* | Absolute address of the directory where files are |\r
| travail** | ex: /home/A123456 | saved |\r
+----------------------+-----------------------------------+-------------------------------------------------------+\r
-| **nom résultat** | *[string]* | Name of the resulting mesh |\r
+| **nom resultat** | *[string]* | Name of the resulting mesh |\r
| | ex: maillage_fissure | |\r
+----------------------+-----------------------------------+-------------------------------------------------------+\r
| **mode** | *[choice]* | Verbose mode for Salome messages |\r
\r
- **Reset**: clears all the parameters\r
\r
-- **Précédent**: loads the last set of parameters used\r
+- **Precedent**: loads the last set of parameters used\r
\r
- **Recharger**: loads a .dic file containing parameters\r
\r
+------------------------+---------------------------------------------------+\r
|**RAYON_TORE** | Tore radius |\r
+------------------------+---------------------------------------------------+\r
-|/**Arêtes face fissure**| Approximate size of elements on the external face |\r
+|/**Aretes face fissure**| Approximate size of elements on the external face |\r
| | of the Box mesh after crack insertion |\r
+------------------------+---------------------------------------------------+\r
|/**Distance influence** | Length that defines the criterion to include mesh |\r
\r
- **Reset**: clears all the parameters\r
\r
-- **Précédent**: loads the last set of parameters used\r
+- **Precedent**: loads the last set of parameters used\r
\r
- **Recharger**: loads a .dic file containing parameters\r
\r
""" FissureLauncher:
Permet de lancer le script 'casStandard'
- en fonction des paramètres contenus dans 'dicoParams'. """
+ en fonction des parametres contenus dans 'dicoParams'. """
#import sys
import salome
execInstance = casStandard(dicoParams)
if salome.sg.hasDesktop():
- salome.sg.updateObjBrowser()
\ No newline at end of file
+ salome.sg.updateObjBrowser()
logging.info('start')
edgesPFE = geompy.ExtractShapes(edgesPipeFissureExterneC, geompy.ShapeType["EDGE"], False)
- verticesPFE = findWireIntermediateVertices(wirePipeFissureExterne) # vertices intermédiaires (des points en trop dans ptsInWireFissExtPipe)
- idiskmin = idisklim[0] + 1 # on ne prend pas le disque sur la peau, déjà ajusté
- idiskmax = idisklim[1] # on ne prend pas le disque sur la peau, déjà ajusté
+ verticesPFE = findWireIntermediateVertices(wirePipeFissureExterne) # vertices intermediaires (des points en trop dans ptsInWireFissExtPipe)
+ idiskmin = idisklim[0] + 1 # on ne prend pas le disque sur la peau, deja ajuste
+ idiskmax = idisklim[1] # on ne prend pas le disque sur la peau, deja ajuste
idiskint = []
for vtx in verticesPFE:
distPtVt = []
break
logging.debug("ajustement point sur edgePipeFissureExterne: %s", idisk)
gptdsk = gptsdisks[idisk]
- pt = gptdsk[0][-1] # le point sur l'edge de la fissure externe au pipe
+ pt = gptdsk[0][-1] # le point sur l edge de la fissure externe au pipe
distPtEd = [(geompy.MinDistance(pt, edgePFE), k, edgePFE) for k, edgePFE in enumerate(edgesPFE)]
distPtEd.sort()
edgePFE = distPtEd[0][2]
ptproj = geompy.MakeVertexOnCurve(edgePFE, u)
gptsdisks[idisk][0][-1] = ptproj
- return gptsdisks
\ No newline at end of file
+ return gptsdisks
lenSegPipe, rayonPipe, nbsegCercle, nbsegRad):
"""
preparation maillage du pipe :
- - détections des points a respecter : jonction des edges/faces constituant
+ - detections des points a respecter : jonction des edges/faces constituant
la face de fissure externe au pipe
- points sur les edges de fond de fissure et edges pipe/face fissure,
- - vecteurs tangents au fond de fissure (normal au disque maillé)
+ - vecteurs tangents au fond de fissure (normal au disque maille)
"""
logging.info('start')
hypo1d = algo1d.Adaptive(lgmin, lgmax, deflexion) # a ajuster selon la profondeur de la fissure
isDone = meshFondExt.Compute()
- ptGSdic = {} # dictionnaire [paramètre sur la courbe] --> point géométrique
+ ptGSdic = {} # dictionnaire [parametre sur la courbe] --> point geometrique
allNodeIds = meshFondExt.GetNodesId()
for nodeId in allNodeIds:
xyz = meshFondExt.GetNodeXYZ(nodeId)
plan = geompy.MakePlane(vertcx, norm, 3*rayonPipe)
part = geompy.MakePartition([plan], [wirePipeFiss], [], [], geompy.ShapeType["VERTEX"], 0, [], 0)
liste = geompy.ExtractShapes(part, geompy.ShapeType["VERTEX"], True)
- if len(liste) == 5: # 4 coins du plan plus intersection recherchée
+ if len(liste) == 5: # 4 coins du plan plus intersection recherchee
for point in liste:
if geompy.MinDistance(point, vertcx) < 1.1*rayonPipe: # les quatre coins sont plus loin
vertpx = point
# name = "plan%d"%i
# geompy.addToStudyInFather(wireFondFiss, plan, name)
- # --- maillage du pipe étendu, sans tenir compte de l'intersection avec la face de peau
+ # --- maillage du pipe etendu, sans tenir compte de l'intersection avec la face de peau
logging.debug("nbsegCercle %s", nbsegCercle)
# -----------------------------------------------------------------------
- # --- points géométriques
+ # --- points geometriques
- gptsdisks = [] # vertices géométrie de tous les disques
+ gptsdisks = [] # vertices geometrie de tous les disques
raydisks = [[] for i in range(nbsegCercle)]
for i in range(len(centres)): # boucle sur les disques
- gptdsk = [] # vertices géométrie d'un disque
+ gptdsk = [] # vertices geometrie d'un disque
vertcx = centres[i]
vertpx = origins[i]
normal = normals[i]
vec1 = geompy.MakeVector(vertcx, vertpx)
- points = [vertcx] # les points du rayon de référence
+ points = [vertcx] # les points du rayon de reference
for j in range(nbsegRad):
pt = geompy.MakeTranslationVectorDistance(vertcx, vec1, (j+1)*float(rayonPipe)/nbsegRad)
points.append(pt)
class casStandard(fissureGenerique):
"""
- problème de fissure standard, défini par :
- - un maillage sain (hexaèdres),
- - une face géométrique de fissure, qui doit légèrement dépasser hors du volume maillé
- - les numéros d'arêtes (edges géométriques) correspondant au fond de fissure
- - les paramètres de maillage de la fissure
+ probleme de fissure standard, defini par :
+ - un maillage sain (hexaedres),
+ - une face geometrique de fissure, qui doit legerement depasser hors du volume maille
+ - les numeros d'arêtes (edges geometriques) correspondant au fond de fissure
+ - les parametres de maillage de la fissure
"""
# ---------------------------------------------------------------------------
if 'step' in self.dicoParams:
step = self.dicoParams['step']
else:
- step = -1 # exécuter toutes les étapes
+ step = -1 # executer toutes les etapes
if 'aretesVives' not in self.dicoParams:
self.dicoParams['aretesVives'] = 0
- if self.numeroCas == 0: # valeur par défaut : exécution immédiate, sinon execution différée dans le cas d'une liste de problèmes
+ if self.numeroCas == 0: # valeur par defaut : execution immediate, sinon execution differee dans le cas d'une liste de problemes
self.executeProbleme(step)
# ---------------------------------------------------------------------------
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour méthode insereFissureGenerale
+ parametres de la fissure pour methode insereFissureGenerale
lgInfluence : distance autour de la shape de fissure a remailler (A ajuster selon le maillage)
- rayonPipe : le rayon du pile maillé en hexa autour du fond de fissure
+ rayonPipe : le rayon du pile maille en hexa autour du fond de fissure
convexe : True : la face est convexe (vue de l'exterieur) sert si on ne donne pas de point interne
- pointIn_x : optionnel : coordonnée x d'un point dans le solide sain (pour orienter la face - idem avec y,z)
+ pointIn_x : optionnel : coordonnee x d'un point dans le solide sain (pour orienter la face - idem avec y,z)
"""
logging.info("setParamShapeFissure %s", self.nomCas)
if 'pointInterieur' in self.dicoParams:
from .geomsmesh import geompy
# -----------------------------------------------------------------------------
-# --- teste si l'opération de partition a produit une modification
+# --- teste si l'operation de partition a produit une modification
def checkDecoupePartition(shapes, part):
"""
- Teste si l'opération de partition a produit une découpe
+ Teste si l'operation de partition a produit une decoupe
(plus de shapes dans la partition).
- Résultat non garanti si recouvrement des shapes d'origine.
+ Resultat non garanti si recouvrement des shapes d'origine.
@param shapes : liste des shapes d'origine
- @param part : résultat de la partition
- @return True si la partition a découpé les shapes d'origine
+ @param part : resultat de la partition
+ @return True si la partition a decoupe les shapes d'origine
"""
logging.info('start')
- # TODO: ShapeInfo donne des résultats faux (deux faces au lieu de une)
+ # TODO: ShapeInfo donne des resultats faux (deux faces au lieu de une)
isPart = False
orig = {}
from .geomsmesh import geompy
# -----------------------------------------------------------------------------
-# --- subShapes communes à deux listes
+# --- subShapes communes a deux listes
def commonSubShapes(obj, sub1, sub2):
"""
def construitEdgesRadialesDebouchantes(idisklim, idiskout, gptsdisks, raydisks,
facesPipePeau, edgeRadFacePipePeau, nbsegCercle):
"""
- construction des listes d'edges radiales sur chaque extrémité débouchante
+ construction des listes d'edges radiales sur chaque extremite debouchante
"""
logging.info('start')
- # --- listes de nappes radiales en filling à chaque extrémité débouchante
+ # --- listes de nappes radiales en filling a chaque extremite debouchante
facesDebouchantes = [False, False]
- idFacesDebouchantes = [-1, -1] # contiendra les indices des faces disque débouchantes (facesPipePeau)
+ idFacesDebouchantes = [-1, -1] # contiendra les indices des faces disque debouchantes (facesPipePeau)
listNappes =[]
for i, idisk in enumerate(idisklim):
numout = idiskout[i]
- logging.debug("extremité %s, indices disques interne %s, externe %s",i, idisk, numout)
+ logging.debug("extremite %s, indices disques interne %s, externe %s",i, idisk, numout)
nappes = []
- if (idisk != 0) and (idisk != len(gptsdisks)-1): # si extrémité débouchante
+ if (idisk != 0) and (idisk != len(gptsdisks)-1): # si extremite debouchante
for k in range(nbsegCercle):
if i == 0:
iddeb = max(0, numout)
idfin = max(iddeb+3,idisk+1) # il faut 3 rayons pour faire un filling qui suive le fond de fissure
- #logging.debug("extremité %s, indices retenus interne %s, externe %s",i, idfin, iddeb)
+ #logging.debug("extremite %s, indices retenus interne %s, externe %s",i, idfin, iddeb)
comp = geompy.MakeCompound(raydisks[k][iddeb:idfin])
name='compoundRay%d'%k
geomPublish(initLog.debug, comp, name)
else:
idfin = min(len(gptsdisks), numout+1)
iddeb = min(idfin-3, idisk) # il faut 3 rayons pour faire un filling qui suive le fond de fissure
- #logging.debug("extremité %s, indices retenus interne %s, externe %s",i, idfin, iddeb)
+ #logging.debug("extremite %s, indices retenus interne %s, externe %s",i, idfin, iddeb)
comp = geompy.MakeCompound(raydisks[k][iddeb:idfin])
name='compoundRay%d'%k
geomPublish(initLog.debug, comp, name)
facesDebouchantes[i] = True
listNappes.append(nappes)
- # --- mise en correspondance avec les indices des faces disque débouchantes (facesPipePeau)
+ # --- mise en correspondance avec les indices des faces disque debouchantes (facesPipePeau)
for i, nappes in enumerate(listNappes):
if facesDebouchantes[i]:
for k, face in enumerate(facesPipePeau):
break
logging.debug("idFacesDebouchantes: %s", idFacesDebouchantes)
- # --- construction des listes d'edges radiales sur chaque extrémité débouchante
+ # --- construction des listes d'edges radiales sur chaque extremite debouchante
listEdges = []
for i, nappes in enumerate(listNappes):
- ifd = idFacesDebouchantes[i] # indice de face débouchante (facesPipePeau)
+ ifd = idFacesDebouchantes[i] # indice de face debouchante (facesPipePeau)
if ifd < 0:
listEdges.append([])
else:
edge = edsorted[-1]
else:
maxl = geompy.BasicProperties(edge)[0]
- if maxl < 0.01: # problème MakeSection
- logging.info("problème MakeSection recherche edge radiale %s, longueur trop faible: %s, utilisation partition", k, maxl)
+ if maxl < 0.01: # probleme MakeSection
+ logging.info("probleme MakeSection recherche edge radiale %s, longueur trop faible: %s, utilisation partition", k, maxl)
partNappeFace = geompy.MakePartition([face, nappes[k]], [] , [], [], geompy.ShapeType["FACE"], 0, [], 0)
edps= geompy.ExtractShapes(partNappeFace, geompy.ShapeType["EDGE"], False)
ednouv = []
for ii, ed in enumerate(ednouv):
geomPublish(initLog.debug, ed, "ednouv%d"%ii)
[edsorted, minl,maxl] = sortEdges(ednouv)
- logging.debug(" longueur edge trouvée: %s", maxl)
+ logging.debug(" longueur edge trouvee: %s", maxl)
edge = edsorted[-1]
else:
- logging.info("problème partition recherche edge radiale %s", k)
+ logging.info("probleme partition recherche edge radiale %s", k)
vxs = geompy.ExtractShapes(partNappeFace, geompy.ShapeType["VERTEX"], False)
vxnouv=[]
for ii,vx in enumerate(vxs):
edge = edsorted2[-1]
logging.debug("lg edge: %s", maxl)
else:
- logging.debug("problème recherche edge radiale %s non résolu", k)
+ logging.debug("probleme recherche edge radiale %s non resolu", k)
edges.append(edge)
name = 'edgeEndPipe%d'%k
geomPublish(initLog.debug, edge, name)
listEdges.append(edges)
- return (listEdges, idFacesDebouchantes)
\ No newline at end of file
+ return (listEdges, idFacesDebouchantes)
from .fissError import fissError
# -----------------------------------------------------------------------------
-# --- procédure complète fissure générale
+# --- procedure complete fissure generale
def construitFissureGenerale(maillagesSains,
shapesFissure, shapeFissureParams,
"""
logging.info('start')
- shapeDefaut = shapesFissure[0] # faces de fissure, débordant
+ shapeDefaut = shapesFissure[0] # faces de fissure, debordant
fondFiss = shapesFissure[4] # groupe d'edges de fond de fissure
rayonPipe = shapeFissureParams['rayonPipe']
O, OX, OY, OZ = triedreBase()
# --- restriction de la face de fissure au domaine solide :
- # partition face fissure étendue par fillings, on garde la face interne
+ # partition face fissure etendue par fillings, on garde la face interne
facesPortFissure = restreintFaceFissure(shapeDefaut, facesDefaut, pointInterne)
- # --- pipe de fond de fissure, prolongé, partition face fissure par pipe
+ # --- pipe de fond de fissure, prolonge, partition face fissure par pipe
# identification des edges communes pipe et face fissure
(fissPipe, edgesPipeFiss, edgesFondFiss, wirePipeFiss, wireFondFiss) = partitionneFissureParPipe(shapesFissure, elementsDefaut, rayonPipe)
# --- peau et face de fissure
#
- # --- partition peau défaut - face de fissure prolongée - wire de fond de fissure prolongée
- # il peut y avoir plusieurs faces externes, dont certaines sont découpées par la fissure
+ # --- partition peau defaut - face de fissure prolongee - wire de fond de fissure prolongee
+ # il peut y avoir plusieurs faces externes, dont certaines sont decoupees par la fissure
# liste de faces externes : facesDefaut
# liste de partitions face externe - fissure : partitionPeauFissFond (None quand pas d'intersection)
partitionsPeauFissFond = construitPartitionsPeauFissure(facesDefaut, fissPipe)
- # --- arêtes vives détectées (dans quadranglesToShapeNoCorner
+ # --- aretes vives detectees (dans quadranglesToShapeNoCorner
# et quadranglesToShapeWithCorner)
aretesVivesC = compoundFromList(bordsPartages, "areteVive")
- aretesVivesCoupees = [] # ensembles des arêtes vives identifiées sur les faces de peau dans l'itération sur partitionsPeauFissFond
+ aretesVivesCoupees = [] # ensembles des aretes vives identifiees sur les faces de peau dans l'iteration sur partitionsPeauFissFond
- # --- inventaire des faces de peau coupées par la fissure
- # pour chaque face de peau : 0, 1 ou 2 faces débouchante du fond de fissure
+ # --- inventaire des faces de peau coupees par la fissure
+ # pour chaque face de peau : 0, 1 ou 2 faces debouchante du fond de fissure
# 0, 1 ou plus edges de la face de fissure externe au pipe
nbFacesFilling = len(partitionsPeauFissFond)
- ptEdgeFond = [ [] for i in range(nbFacesFilling)] # pour chaque face [points edge fond de fissure aux débouchés du pipe]
- fsPipePeau = [ [] for i in range(nbFacesFilling)] # pour chaque face [faces du pipe débouchantes]
- edRadFPiPo = [ [] for i in range(nbFacesFilling)] # pour chaque face [edge radiale des faces du pipe débouchantes ]
+ ptEdgeFond = [ [] for i in range(nbFacesFilling)] # pour chaque face [points edge fond de fissure aux debouches du pipe]
+ fsPipePeau = [ [] for i in range(nbFacesFilling)] # pour chaque face [faces du pipe debouchantes]
+ edRadFPiPo = [ [] for i in range(nbFacesFilling)] # pour chaque face [edge radiale des faces du pipe debouchantes ]
fsFissuExt = [ [] for i in range(nbFacesFilling)] # pour chaque face [faces de fissure externes au pipe]
edFisExtPe = [ [] for i in range(nbFacesFilling)] # pour chaque face [edge en peau des faces de fissure externes (pas subshape facePeau)]
edFisExtPi = [ [] for i in range(nbFacesFilling)] # pour chaque face [edge commun au pipe des faces de fissure externes]
- facesPeaux = [None for i in range(nbFacesFilling)] # pour chaque face : la face de peau finale a mailler (percée des faces débouchantes)
- edCircPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe]
- ptCircPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape point sur edge circulaire aux débouchés du pipe]
- gpedgeBord = [None for i in range(nbFacesFilling)] # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine
- gpedgeVifs = [None for i in range(nbFacesFilling)] # pour chaque face de peau : groupes subshape des edges aux arêtes vives entre fillings
+ facesPeaux = [None for i in range(nbFacesFilling)] # pour chaque face : la face de peau finale a mailler (percee des faces debouchantes)
+ edCircPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge circulaire aux debouches du pipe]
+ ptCircPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape point sur edge circulaire aux debouches du pipe]
+ gpedgeBord = [None for i in range(nbFacesFilling)] # pour chaque face de peau : groupe subshape des edges aux bords lies a la partie saine
+ gpedgeVifs = [None for i in range(nbFacesFilling)] # pour chaque face de peau : groupes subshape des edges aux aretes vives entre fillings
edFissPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes]
ptFisExtPi = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [point commun edFissPeau edCircPeau]
edFisExtPi, edgesPipeFiss)
# --- preparation maillage du pipe :
- # - détections des points a respecter : jonction des edges/faces constituant la face de fissure externe au pipe
+ # - detections des points a respecter : jonction des edges/faces constituant la face de fissure externe au pipe
# - points sur les edges de fond de fissure et edges pipe/face fissure,
- # - vecteurs tangents au fond de fissure (normal au disque maillé)
+ # - vecteurs tangents au fond de fissure (normal au disque maille)
(centres, gptsdisks, raydisks) = calculePointsAxiauxPipe(edgesFondFiss, edgesIdByOrientation, facesDefaut,
centreFondFiss, wireFondFiss, wirePipeFiss,
lenSegPipe, rayonPipe, nbsegCercle, nbsegRad)
- # --- recherche des points en trop (externes au volume à remailler)
- # - on associe chaque extrémité du pipe à une face filling
- # - on part des disques aux extrémités du pipe
- # - pour chaque disque, on prend les vertices de géométrie,
- # on marque leur position relative à la face.
+ # --- recherche des points en trop (externes au volume a remailler)
+ # - on associe chaque extremite du pipe a une face filling
+ # - on part des disques aux extremites du pipe
+ # - pour chaque disque, on prend les vertices de geometrie,
+ # on marque leur position relative a la face.
# - on s'arrete quand tous les noeuds sont dedans
(idFillingFromBout, idisklim, idiskout) = elimineExtremitesPipe(ptEdgeFond, facesDefaut, centres, gptsdisks, nbsegCercle)
- # --- construction des listes d'edges radiales sur chaque extrémité débouchante
+ # --- construction des listes d'edges radiales sur chaque extremite debouchante
(listEdges, idFacesDebouchantes) = construitEdgesRadialesDebouchantes(idisklim, idiskout, gptsdisks, raydisks,
facesPipePeau, edgeRadFacePipePeau, nbsegCercle)
- # --- création des points du maillage du pipe sur la face de peau
+ # --- creation des points du maillage du pipe sur la face de peau
(gptsdisks, idisklim) = creePointsPipePeau(listEdges, idFacesDebouchantes, idFillingFromBout,
ptEdgeFond, ptFisExtPi, edCircPeau, gptsdisks, idisklim, nbsegRad)
(meshPipe, meshPipeGroups, edgesCircPipeGroup) = construitMaillagePipe(gptsdisks, idisklim, nbsegCercle, nbsegRad)
- # --- edges de bord, faces défaut à respecter
+ # --- edges de bord, faces defaut a respecter
(internalBoundary, bordsLibres, grpAretesVives) = mailleAretesEtJonction(internalBoundary, aretesVivesCoupees, lgAretesVives)
bordsLibres, grpEdgesPeauFissureExterne, grpAretesVives,
edgesCircPipeGroup, dmoyen, rayonPipe, nbsegRad)
- # --- regroupement des maillages du défaut
+ # --- regroupement des maillages du defaut
listMeshes = [internalBoundary.GetMesh(),
meshPipe.GetMesh(),
listMeshes.append(mp.GetMesh())
meshBoiteDefaut = smesh.Concatenate(listMeshes, 1, 1, 1e-05,False)
- # pour aider l'algo hexa-tetra à ne pas mettre de pyramides à l'exterieur des volumes repliés sur eux-mêmes
- # on désigne les faces de peau en quadrangles par le groupe "skinFaces"
+ # pour aider l'algo hexa-tetra a ne pas mettre de pyramides a l'exterieur des volumes replies sur eux-memes
+ # on designe les faces de peau en quadrangles par le groupe "skinFaces"
group_faceFissOutPipe = None
group_faceFissInPipe = None
groups = meshBoiteDefaut.GetGroups()
grps = [ grp for grp in groups if grp.GetName() == 'FONDFISS']
fond = maillageComplet.GetMesh().CreateDimGroup( grps, SMESH.NODE, 'FONDFISS' )
- logging.info("réorientation face de fissure FACE1")
+ logging.info("reorientation face de fissure FACE1")
grps = [ grp for grp in groups if grp.GetName() == 'FACE1']
nb = maillageComplet.Reorient2D( grps[0], normfiss, grps[0].GetID(1))
- logging.info("réorientation face de fissure FACE2")
+ logging.info("reorientation face de fissure FACE2")
plansim = geompy.MakePlane(O, normfiss, 10000)
fissnorm = geompy.MakeMirrorByPlane(normfiss, plansim)
grps = [ grp for grp in groups if grp.GetName() == 'FACE2']
# -----------------------------------------------------------------------------
# --- peau et face de fissure
#
- # --- partition peau défaut - face de fissure prolongée - wire de fond de fissure prolongée
- # il peut y avoir plusieurs faces externes, dont certaines sont découpées par la fissure
+ # --- partition peau defaut - face de fissure prolongee - wire de fond de fissure prolongee
+ # il peut y avoir plusieurs faces externes, dont certaines sont decoupees par la fissure
# liste de faces externes : facesDefaut
# liste de partitions face externe - fissure : partitionPeauFissFond (None quand pas d'intersection)
def construitPartitionsPeauFissure(facesDefaut, fissPipe):
"""
- partition peau défaut - face de fissure prolongée - wire de fond de fissure prolongée.
- Il peut y avoir plusieurs faces externes, dont certaines sont découpées par la fissure.
+ partition peau defaut - face de fissure prolongee - wire de fond de fissure prolongee.
+ Il peut y avoir plusieurs faces externes, dont certaines sont decoupees par la fissure.
@param facesDefaut liste de faces externes
- @param fissPipe partition face de fissure etendue par pipe prolongé
+ @param fissPipe partition face de fissure etendue par pipe prolonge
@return partitionsPeauFissFond : liste de partitions face externe - fissure (None quand pas d'intersection)
"""
for filling in facesDefaut:
part = geompy.MakePartition([fissPipe, filling], [], [], [], geompy.ShapeType["FACE"], 0, [], 0)
isPart = checkDecoupePartition([fissPipe, filling], part)
- if isPart: # on recrée la partition avec toutes les faces filling en outil pour avoir une face de fissure correcte
+ if isPart: # on recree la partition avec toutes les faces filling en outil pour avoir une face de fissure correcte
otherFD = [fd for fd in facesDefaut if fd != filling]
if len(otherFD) > 0:
fissPipePart = geompy.MakePartition([fissPipe], otherFD, [], [], geompy.ShapeType["FACE"], 0, [], 0)
partitionsPeauFissFond.append(None)
ipart = ipart +1
- return partitionsPeauFissFond
\ No newline at end of file
+ return partitionsPeauFissFond
def creePointsPipePeau(listEdges, idFacesDebouchantes, idFillingFromBout,
ptEdgeFond, ptFisExtPi, edCircPeau, gptsdisks, idisklim, nbsegRad):
"""
- création des points du maillage du pipe sur la face de peau
+ creation des points du maillage du pipe sur la face de peau
"""
logging.info('start')
for i, edges in enumerate(listEdges):
- idf = idFacesDebouchantes[i] # indice de face débouchante (facesPipePeau)
+ idf = idFacesDebouchantes[i] # indice de face debouchante (facesPipePeau)
if idf >= 0:
gptdsk = []
if idf > 0: # idf vaut 0 ou 1
- idf = -1 # si idf vaut 1, on prend le dernier élément de la liste (1 ou 2 extrémités débouchent sur la face)
+ idf = -1 # si idf vaut 1, on prend le dernier element de la liste (1 ou 2 extremites debouchent sur la face)
centre = ptEdgeFond[idFillingFromBout[i]][idf]
name = "centre%d"%idf
geomPublish(initLog.debug, centre, name)
bout = extrems[1]
else:
bout = extrems[0]
- # ajustement du point extrémité (bout) sur l'edge circulaire en face de peau
+ # ajustement du point extremite (bout) sur l'edge circulaire en face de peau
logging.debug("edgesCirc: %s", edgesCirc)
distEdgeCirc = [(geompy.MinDistance(bout, edgeCirc), k2, edgeCirc) for k2, edgeCirc in enumerate(edgesCirc)]
distEdgeCirc.sort()
logging.debug("distEdgeCirc: %s", distEdgeCirc)
u = projettePointSurCourbe(bout, distEdgeCirc[0][2])
- if (abs(u) < 0.02) or (abs(1-u) < 0.02): # les points très proches d'une extrémité doivent y être mis précisément.
+ if (abs(u) < 0.02) or (abs(1-u) < 0.02): # les points tres proches d'une extremite doivent y etre mis precisement.
extrCircs = geompy.ExtractShapes(distEdgeCirc[0][2], geompy.ShapeType["VERTEX"], True)
if geompy.MinDistance(bout, extrCircs[0]) < geompy.MinDistance(bout, extrCircs[1]):
bout = extrCircs[0]
gptsdisks[idisklim[1] +1] = gptdsk
idisklim[1] = idisklim[1] +1
- return (gptsdisks, idisklim)
\ No newline at end of file
+ return (gptsdisks, idisklim)
def creeZoneDefautDansObjetSain(geometriesSaines, maillagesSains, shapesFissure,
shapeFissureParams, maillageFissureParams):
"""
- #TODO: a compléter
+ #TODO: a completer
"""
logging.info('start')
edgeFondExt, centreFondFiss, tgtCentre = getCentreFondFiss(shapesFissure)
- # --- zone de défaut
+ # --- zone de defaut
nomZones = "zoneDefaut"
[origShapes, verticesShapes, dmoyen] = \
creeZoneDefautGeom( geometrieSaine, shapeDefaut, origShapes, verticesShapes, dmoyen, lgExtrusion)
bordsPartages = []
for face in facesDefaut:
- bordsPartages.append([None,None]) # TODO : traitement des arêtes vives ?
+ bordsPartages.append([None,None]) # TODO : traitement des aretes vives ?
fillconts = facesDefaut
idFilToCont = list(range(len(facesDefaut)))
from . import initLog
# -----------------------------------------------------------------------------
-# --- crée zone géométrique défaut a partir d'un filling
+# --- cree zone geometrique defaut a partir d'un filling
def creeZoneDefautFilling(filling, shapeDefaut, lgExtrusion=50):
"""
- Construction CAO de la zone à remailler, quand on utilise un filling,
- après appel creeZoneDefautMaillage et quadranglesToShapeNoCorner
- @param filling : la CAO de la peau du défaut reconstituée
- @param shapeDefaut : objet géométrique représentant la fissure
+ Construction CAO de la zone a remailler, quand on utilise un filling,
+ apres appel creeZoneDefautMaillage et quadranglesToShapeNoCorner
+ @param filling : la CAO de la peau du defaut reconstituee
+ @param shapeDefaut : objet geometrique representant la fissure
(selon les cas, un point central, ou une shape plus complexe,
dont on ne garde que les vertices)
@return (facesDefaut = filling, centreDefaut, normalDefaut, extrusionDefaut)
def creeZoneDefautGeom(objetSain, shapeDefaut, origShapes, verticesShapes, dmoyen, lgExtrusion=50):
"""
- Construction CAO de la zone à remailler, quand on utilise la CAO d'origine,
+ Construction CAO de la zone a remailler, quand on utilise la CAO d'origine,
apres appel creeZoneDefautMaillage
- @param objetSain : la géometrie de l'objet initial
- @param shapeDefaut : objet géometrique représentant la fissure
+ @param objetSain : la geometrie de l'objet initial
+ @param shapeDefaut : objet geometrique representant la fissure
(selon les cas, un point central, ou une shape plus complexe,
dont on ne garde que les vertices)
@param origShapes : liste id subShapes
def creeZoneDefautMaillage(maillagesSains, shapeDefaut, tailleDefaut,
nomZones, coordsNoeudsFissure):
"""
- Identification de la zone à remailler, opérations sur le maillage
+ Identification de la zone a remailler, operations sur le maillage
de l'objet sain.
- La zone à remailler est définie à partir d'un objet géométrique
- ou à partir d'un jeu de points et d'une distance d'influence.
+ La zone a remailler est definie a partir d'un objet geometrique
+ ou a partir d'un jeu de points et d'une distance d'influence.
@param maillagesSains : (le maillage de l'objet initial, booleen isHexa)
- @param shapeDefaut : objet géométrique représentant la fissure
+ @param shapeDefaut : objet geometrique representant la fissure
(selon les cas, un point central, ou une shape plus complexe,
dont on ne garde que les vertices)
- @param tailleDefaut : distance d'influence définissant la zone à remailler:
- tous les éléments du maillage initial qui pénètrent dans cette zone
- sont détectés
- @param nomZones : préfixe des noms de groupes créés dans le maillage initial. S'il y a un groupe de noeuds
- @coordsNoeudsFissure : jeu de points donné par une liste (x1,y1,z1, x2,y2,z2, ...)
+ @param tailleDefaut : distance d'influence definissant la zone a remailler:
+ tous les elements du maillage initial qui penetrent dans cette zone
+ sont detectes
+ @param nomZones : prefixe des noms de groupes crees dans le maillage initial. S'il y a un groupe de noeuds
+ @coordsNoeudsFissure : jeu de points donne par une liste (x1,y1,z1, x2,y2,z2, ...)
@return (origShapes, verticesShapes, dmoyen) liste id subShapes,
- listes noeuds de bord, longueur arête moyenne bord
+ listes noeuds de bord, longueur arete moyenne bord
"""
logging.info("start")
origShapes = []
verticesShapes = []
- cumul = 0 # somme des distances carrées entre point ordonnés (taille des arêtes)
- nb = 0 # nombre d'arêtes évaluées
+ cumul = 0 # somme des distances carrees entre point ordonnes (taille des aretes)
+ nb = 0 # nombre d'aretes evaluees
for aList in lists:
aShape = aList[0]
pass
if (nb == 0) :
- texte = "La zone à remailler n'est pas détectée correctement.<br>"
+ texte = "La zone a remailler n'est pas detectee correctement.<br>"
texte += "Cause possible :<ul>"
texte += "<li>La distance d'influence est trop petite. "
- texte += "L'ordre de grandeur minimal correspond à la taille des mailles du maillage sain dans la zone à remailler.</li></ul>"
+ texte += "L'ordre de grandeur minimal correspond a la taille des mailles du maillage sain dans la zone a remailler.</li></ul>"
raise fissError(traceback.extract_stack(),texte)
- dmoyen = math.sqrt(cumul/nb) # ~ taille de l'arête moyenne du maillage global
+ dmoyen = math.sqrt(cumul/nb) # ~ taille de l'arete moyenne du maillage global
return origShapes, verticesShapes, dmoyen
def distance2(xyz1, xyz2):
"""
- carré de la distance entre deux points donnés par des triplets [x,y,z]
+ carre de la distance entre deux points donnes par des triplets [x,y,z]
"""
#logging.info("start")
self.assertEqual(distance2(self.a, self.b), distance2(self.a, self.c))
self.assertEqual(distance2(self.b, self.b), 0)
self.assertEqual(distance2(self.a, self.b), 50)
-
\ No newline at end of file
+
from .geomsmesh import geompy
# -----------------------------------------------------------------------------
-# --- éliminer les doublons d'une liste de subshapes
+# --- eliminer les doublons d'une liste de subshapes
def eliminateDoubles(obj, subshapes):
"""
- éliminer les doublons d'une liste de subshapes
+ eliminer les doublons d'une liste de subshapes
"""
idsubs = {}
for sub in subshapes:
def elimineExtremitesPipe(ptEdgeFond, facesDefaut, centres, gptsdisks, nbsegCercle):
"""
- recherche des points en trop (externes au volume à remailler)
- - on associe chaque extrémité du pipe à une face filling
- - on part des disques aux extrémités du pipe
- - pour chaque disque, on prend les vertices de géométrie,
- on marque leur position relative à la face.
+ recherche des points en trop (externes au volume a remailler)
+ - on associe chaque extremite du pipe a une face filling
+ - on part des disques aux extremites du pipe
+ - pour chaque disque, on prend les vertices de geometrie,
+ on marque leur position relative a la face.
- on s'arrete quand tous les noeuds sont dedans
"""
pt0 = centres[0]
pt1 = centres[-1]
- idFillingFromBout = [None, None] # contiendra l'index du filling pour les extrémités 0 et 1
+ idFillingFromBout = [None, None] # contiendra l'index du filling pour les extremites 0 et 1
nbFacesFilling = len(ptEdgeFond)
for ifil in range(nbFacesFilling):
- for ipt, pt in enumerate(ptEdgeFond[ifil]): # il y a un ou deux points débouchant sur cette face
+ for ipt, pt in enumerate(ptEdgeFond[ifil]): # il y a un ou deux points debouchant sur cette face
if geompy.MinDistance(pt,pt0) < geompy.MinDistance(pt,pt1): # TODO: trouver plus fiable pour les cas tordus...
idFillingFromBout[0] = ifil
else:
idFillingFromBout[1] = ifil
logging.debug("association bouts du pipe - faces de filling: %s", idFillingFromBout)
- logging.debug("recherche des disques de noeuds complètement internes")
+ logging.debug("recherche des disques de noeuds completement internes")
idisklim = [] # indices des premier et dernier disques internes
idiskout = [] # indices des premier et dernier disques externes
for bout in range(2):
for j, pt in enumerate(points):
side = whichSideVertex(facesDefaut[idFillingFromBout[bout]], pt)
if side < 0:
- if outside: # premier point detecté dedans
+ if outside: # premier point detecte dedans
outside = False
- numout = idisk -inc # le disque précédent était dehors
+ numout = idisk -inc # le disque precedent etait dehors
else:
inside = False # ce point est dehors
if not inside and not outside:
idisklim.append(idisk) # premier et dernier disques internes
idiskout.append(numout) # premier et dernier disques externes
- return (idFillingFromBout, idisklim, idiskout)
\ No newline at end of file
+ return (idFillingFromBout, idisklim, idiskout)
from .whichSide import whichSide
# -----------------------------------------------------------------------------
-# --- renvoie l'extraction des shapes d'un objet selon leur position par rapport à la face.
+# --- renvoie l'extraction des shapes d'un objet selon leur position par rapport a la face.
def extractionOrientee(face, obj, ref, shapeType, tol, prefix=""):
"""
renvoie l'extraction des shapes d'un objet selon leur position
- par rapport à la face.
+ par rapport a la face.
shapeType in ["VERTEX", "EDGE", "FACE",...]
"""
logging.info('start')
from .whichSideMulti import whichSideMulti
# -----------------------------------------------------------------------------
-# --- renvoie l'extraction des shapes d'un objet selon leur position par rapport à la face.
+# --- renvoie l'extraction des shapes d'un objet selon leur position par rapport a la face.
def extractionOrienteeMulti(faces, ifil, obj, centre, shapeType, tol, prefix=""):
"""
def facesCirculaires(bloc, tore):
"""
- Extraction des faces demi circulaires à l'intersection du tore partitionné et de la paroi,
+ Extraction des faces demi circulaires a l'intersection du tore partitionne et de la paroi,
de leur centre, les edges de ces faces situees dans le plan de fissure et un booleen par edge,
indiquant son sens (normal / reversed).
@param bloc : bloc defaut
- @param tore : le tore partitionné et coupé
+ @param tore : le tore partitionne et coupe
@return (faces, centres, edges, reverses)
"""
logging.info("start")
from . import initLog
# -----------------------------------------------------------------------------
-# --- identification des faces tore et fissure dans le solide hors tore du bloc partitionné
+# --- identification des faces tore et fissure dans le solide hors tore du bloc partitionne
def facesToreInBloc(blocp, facefissoutore, facetore1, facetore2):
"""
- identification des faces tore et fissure dans le bloc partitionné : sous shapes du bloc
- @param blocp : bloc partitionné
+ identification des faces tore et fissure dans le bloc partitionne : sous shapes du bloc
+ @param blocp : bloc partitionne
@param facefissoutore : la face de fissure externe au tore
- @param facetore1 : face du tore selon la génératrice
- @param facetore2 : face du tore selon la génératrice
- @return (blocFaceFiss, blocFaceTore1, blocFaceTore2) sous shapes reperées
+ @param facetore1 : face du tore selon la generatrice
+ @param facetore2 : face du tore selon la generatrice
+ @return (blocFaceFiss, blocFaceTore1, blocFaceTore2) sous shapes reperees
"""
logging.info('start')
def facesVolumesToriques(tore, plan, facesDefaut):
"""
- Extraction des deux faces et volumes du tore partitionné, qui suivent la génératrice elliptique.
- @param tore : le tore partitionné et coupé.
+ Extraction des deux faces et volumes du tore partitionne, qui suivent la generatrice elliptique.
+ @param tore : le tore partitionne et coupe.
@param plan : le plan de coupe
- @return (facetore1,facetore2) les 2 faces selon la génératrice
+ @return (facetore1,facetore2) les 2 faces selon la generatrice
"""
logging.info("start")
def findWireEndVertices(aWire, getNormals=False):
"""
trouver les vertices extremites d'un wire
- calcul optionnel des tangentes. Attention à la tolérance qui peut être élevée (> 0.001)
+ calcul optionnel des tangentes. Attention a la tolerance qui peut etre elevee (> 0.001)
"""
logging.info("start")
if geompy.NumberOfEdges(aWire) > 1:
def findWireIntermediateVertices(aWire, getNormals=False):
"""
- trouver les vertices d'un wire qui ne sont pas aux extremités
- calcul optionnel des tangentes. Attention à la tolérance qui peut être élevée (> 0.001)
+ trouver les vertices d'un wire qui ne sont pas aux extremites
+ calcul optionnel des tangentes. Attention a la tolerance qui peut etre elevee (> 0.001)
"""
logging.info("start")
edges = geompy.ExtractShapes(aWire, geompy.ShapeType["EDGE"], False)
class fissureCoude(fissureGenerique):
"""
- problème de fissure du Coude : version de base
+ probleme de fissure du Coude : version de base
maillage hexa
"""
# ---------------------------------------------------------------------------
def setParamGeometrieSaine(self):
"""
- Paramètres géométriques du tuyau coudé sain:
+ Parametres geometriques du tuyau coude sain:
angleCoude
r_cintr
l_tube_p1
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour le tuyau coude
- profondeur : 0 < profondeur <= épaisseur
+ parametres de la fissure pour le tuyau coude
+ profondeur : 0 < profondeur <= epaisseur
rayonPipe : rayon du pipe correspondant au maillage rayonnant
- lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par défaut)
+ lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par defaut)
azimut : entre 0 et 360°
alpha : 0 < alpha < angleCoude
longueur : <=2*profondeur ==> force une fissure elliptique (longueur/profondeur = grand axe/petit axe).
- orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
- lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris égal à profondeur. A ajuster selon le maillage)
- elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extrémites)
- pointIn_x : optionnel coordonnées x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
+ orientation : 0° : longitudinale, 90° : circonferentielle, autre : uniquement fissures elliptiques
+ lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris egal a profondeur. A ajuster selon le maillage)
+ elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extremites)
+ pointIn_x : optionnel coordonnees x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
externe : True : fissure face externe, False : fissure face interne
"""
logging.info("setParamShapeFissure %s", self.nomCas)
xs = []
totx = 0
for i in range(nbp+2):
- x = math.sin(i*math.pi/(nbp+1)) # fonction de répartition des points : distance relative
+ x = math.sin(i*math.pi/(nbp+1)) # fonction de repartition des points : distance relative
x2 = x*x
totx += x2
xs.append(totx)
logging.debug("x2: %s, totx: %s", x2, totx)
for i in range(nbp+1):
- #posi = nbp -i # répartition équidistante des points sur la courbe
- posi = nbp*(1 -xs[i]/totx) # points plus resserrés aux extrémités de la courbe
+ #posi = nbp -i # repartition equidistante des points sur la courbe
+ posi = nbp*(1 -xs[i]/totx) # points plus resserres aux extremites de la courbe
angi = -dp*posi*(5.0*math.pi/8.0)/nbp
pt = geompy.MakeRotation(pil, axl, angi)
points.append(pt)
totx = 0
for i in range(nbp+1):
x = math.sin(i*math.pi/nbp)
- #x = 1.0 # répartition équidistante des points sur la courbe
- x2 = x*x # points plus resserrés aux extrémités de la courbe
+ #x = 1.0 # repartition equidistante des points sur la courbe
+ x2 = x*x # points plus resserres aux extremites de la courbe
totx += x2
xs.append(totx)
logging.debug("x2: %s, totx: %s", x2, totx)
xs.append(totx)
logging.debug("x2: %s, totx: %s", x2, totx)
for i in range(nbp+1):
- #posi = nbp -i # répartition équidistante des points sur la courbe
- posi = nbp*xs[i]/totx # points plus resserrés aux extrémités de la courbe
+ #posi = nbp -i # repartition equidistante des points sur la courbe
+ posi = nbp*xs[i]/totx # points plus resserres aux extremites de la courbe
angi = dp*posi*(5.0*math.pi/8.0)/nbp
pt = geompy.MakeRotation(pir, axr, angi)
points.append(pt)
edges = geompy.ExtractShapes(facefiss, geompy.ShapeType["EDGE"], True)
edgesTriees, minl, maxl = sortEdges(edges)
- edges = edgesTriees[:-1] # la plus grande correspond à arce, on l'elimine
+ edges = edgesTriees[:-1] # la plus grande correspond a arce, on l'elimine
wiretube = geompy.MakeWire(edges)
#wiretube = edgesTriees[-1]
geomPublish(initLog.debug, wiretube, 'wiretubePlace' )
geomPublish(initLog.debug, facefiss, 'facefissPlace' )
edges = geompy.ExtractShapes(facefiss, geompy.ShapeType["EDGE"], True)
edgesTriees, minl, maxl = sortEdges(edges)
- edgetube = edgesTriees[-1] # la plus grande correspond à arci
+ edgetube = edgesTriees[-1] # la plus grande correspond a arci
wiretube = edgetube
pc = geompy.MakeTranslation(pb, 0.5*prof*cosaz, 0.5*prof*sinaz, 0.)
# ---------------------------------------------------------------------------
def setParamMaillageFissure(self):
"""
- Paramètres du maillage de la fissure pour le tuyau coudé
- Voir également setParamShapeFissure, paramètres rayonPipe et lenSegPipe.
+ Parametres du maillage de la fissure pour le tuyau coude
+ Voir egalement setParamShapeFissure, parametres rayonPipe et lenSegPipe.
nbSegRad = nombre de couronnes
nbSegCercle = nombre de secteurs
- areteFaceFissure = taille cible de l'arête des triangles en face de fissure.
+ areteFaceFissure = taille cible de l'arete des triangles en face de fissure.
"""
self.maillageFissureParams = dict(nomRep = '.',
nomFicSain = self.nomCas,
class fissureGenerique():
"""
- classe générique problème fissure:
- génération géométrie et maillage sain
- définition et positionnement d'une fissure
- génération d'un bloc défaut inséré dans le maillage sain
+ classe generique probleme fissure:
+ generation geometrie et maillage sain
+ definition et positionnement d'une fissure
+ generation d'un bloc defaut insere dans le maillage sain
"""
nomProbleme = "generique"
from .listOfExtraFunctions import createLinesFromMesh
# -----------------------------------------------------------------------------
-# --- groupe de quadrangles de face transformé en face géométrique par filling
+# --- groupe de quadrangles de face transforme en face geometrique par filling
def fusionMaillageDefaut(maillageSain, maillageDefautCible, maillageInterneCible, zoneDefaut_skin, shapeDefaut, listOfCorners):
""" """
- # TODO: rédiger la docstring
+ # TODO: rediger la docstring
logging.info("start")
maillagesNonCoupes = []
maillagesCoupes = []
- # On crée une liste contenant le maillage de chaque face.
+ # On cree une liste contenant le maillage de chaque face.
listOfNewMeshes = createNewMeshesFromCorner(maillageDefautCible, listOfCorners)
i = 0
lines = createLinesFromMesh(listOfNewMeshes[i])
setOfLines = []
for line in lines:
- # On possède l'information 'ID' de chaque noeud composant chaque
- # ligne de la face. A partir de l'ID, on crée un vertex. Un
+ # On possede l'information 'ID' de chaque noeud composant chaque
+ # ligne de la face. A partir de l'ID, on cree un vertex. Un
# ensemble de vertices constitue une ligne. Un ensemble de lignes
# constitue la face.
tmpCoords = [maillageDefautCible.GetNodeXYZ(node) for node in line]
setOfLines.append(line)
# A partir des lignes de la face,
- # on recrée un objet GEOM temporaire par filling.
+ # on recree un objet GEOM temporaire par filling.
filling = geompy.MakeFilling(geompy.MakeCompound(setOfLines), 2, 5, 0.0001, 0.0001, 0, GEOM.FOM_Default, True)
#logging.debug("face de filling")
#geomPublish(initLog.debug, filling, 'filling_{0}'.format(i + 1))
smesh.SetName(newMaillageInterne, 'newInternalBoundary')
return newZoneDefaut_skin, newMaillageInterne
-
\ No newline at end of file
+
from .genereMeshCalculZoneDefaut import genereMeshCalculZoneDefaut
# -----------------------------------------------------------------------------
-# --- création élements géométriques fissure elliptique
+# --- creation elements geometriques fissure elliptique
def genereElemsFissureElliptique(shapeFissureParams):
"""
def genereMeshCalculZoneDefaut(facefiss, minSize, maxSize):
"""
- -Permet de générer un maillage sur l'objet géométrique 'facefiss' via
+ -Permet de generer un maillage sur l'objet geometrique 'facefiss' via
l'algorithme NETGEN_1D2D :
- -SetMaxSize = dimension max d'un élément (maxSize)
- -SetSecondOrder = élément quadratique (Y=1, N=0)
- -SetOptimize = élément régulier (Y=1, N=0)
+ -SetMaxSize = dimension max d'un element (maxSize)
+ -SetSecondOrder = element quadratique (Y=1, N=0)
+ -SetOptimize = element regulier (Y=1, N=0)
-SetFineness = finesse du maillage
[very_coarse, coarse, moderate, fine, very_fine, custom]
[0, 1, 2, 3, 4, 5 ]
- -SetMinSize = dimension min d'un élément (minSize)
+ -SetMinSize = dimension min d'un element (minSize)
-SetQuadAllowed = permission quadrangle dans maillage triangle
- -On récupère les coordonnées de chaque noeud de la fissure qu'on stocke
+ -On recupere les coordonnees de chaque noeud de la fissure qu'on stocke
dans une liste sous la forme : [X0, Y0, Z0, ..., Xn, Yn, Zn]"""
logging.info('start')
def getCentreFondFiss(shapesFissure):
"""
identification du centre de fond de fissure,
- transformation fond de fissure en edge unique (seulement pour la procédure construitFissureGenerale).
- On distingue le cas d'utilisation de la procédure insereFissureLongue par le nombre d'éléments de shapesFissure.
+ transformation fond de fissure en edge unique (seulement pour la procedure construitFissureGenerale).
+ On distingue le cas d'utilisation de la procedure insereFissureLongue par le nombre d'elements de shapesFissure.
"""
global publie
logging.debug("start")
fondFiss = shapesFissure[4] # groupe d'edges de fond de fissure
- if len(shapesFissure) == 6: # procédure construitFissureGenerale, et edge fond de fissure fournie explicitement
+ if len(shapesFissure) == 6: # procedure construitFissureGenerale, et edge fond de fissure fournie explicitement
edgeFondExt = shapesFissure[5]
else:
edgeFondExt = None
- if len(shapesFissure) > 6: # procédure insereFissureLongue (fissure plane, plusieurs edges sur le fond de fissure)
+ if len(shapesFissure) > 6: # procedure insereFissureLongue (fissure plane, plusieurs edges sur le fond de fissure)
centreFondFiss = shapesFissure[1]
tgtCentre = None
- else: # procédure construitFissureGenerale, détermination edge unique et milieu de l'edge
+ else: # procedure construitFissureGenerale, determination edge unique et milieu de l'edge
if geompy.NumberOfEdges(fondFiss) > 1:
if geompy.NbShapes(fondFiss, geompy.ShapeType["WIRE"]) > 0: # wire
aWire = fondFiss
logging.debug("lgsumEdges %s", lgSumEd)
logging.debug("id edge: %s, lgOnEdge: %s, lgEdge: %s",iedr, lgOnEdge, lgEdges[iedr])
if iedr > 0: # il y a une edge avant celle du milieu
- if geompy.MinDistance(edges[iedr-1], geompy.MakeVertexOnCurve(edges[iedr], 0.0 )) < 1.e-3: # edge orientée croissante
+ if geompy.MinDistance(edges[iedr-1], geompy.MakeVertexOnCurve(edges[iedr], 0.0 )) < 1.e-3: # edge orientee croissante
centreFondFiss = geompy.MakeVertexOnCurve(edges[iedr], lgOnEdge/lgEdges[iedr])
else:
centreFondFiss = geompy.MakeVertexOnCurve(edges[iedr], 1.0 - lgOnEdge/lgEdges[iedr])
- elif iedr < len(edges)-1: # il y a une edge après celle du milieu
- if geompy.MinDistance(edges[iedr+1], geompy.MakeVertexOnCurve(edges[iedr], 1.0 )) < 1.e-3: # edge orientée croissante
+ elif iedr < len(edges)-1: # il y a une edge apres celle du milieu
+ if geompy.MinDistance(edges[iedr+1], geompy.MakeVertexOnCurve(edges[iedr], 1.0 )) < 1.e-3: # edge orientee croissante
centreFondFiss = geompy.MakeVertexOnCurve(edges[iedr], lgOnEdge/lgEdges[iedr])
else:
centreFondFiss = geompy.MakeVertexOnCurve(edges[iedr], 1.0 - lgOnEdge/lgEdges[iedr])
- else: # on ne sait pas comment est orientée l'edge unique, mais ça n'a pas d'importance
+ else: # on ne sait pas comment est orientee l'edge unique, mais ça n'a pas d'importance
centreFondFiss = geompy.MakeVertexOnCurve(edges[iedr], lgOnEdge/lgEdges[iedr])
geomPublishInFather(initLog.debug,aWire, centreFondFiss, "centreFondFiss")
tgtCentre = geompy.MakeTangentOnCurve(edges[iedr], lgOnEdge/ lgEdges[iedr])
def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSorted,
edgesPeauFondIn, fillingFaceExterne, aretesVivesC, aretesVivesCoupees):
"""
- identification précise des edges et disques des faces de peau selon index extremité fissure
+ identification precise des edges et disques des faces de peau selon index extremite fissure
"""
logging.info('start')
edgesListees = []
edgesCircPeau = []
verticesCircPeau = []
- if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau
+ if len(verticesPipePeau) > 0: # --- au moins une extremite du pipe sur cette face de peau
- for face in facesPeauSorted[:-1]: # la ou les faces débouchantes, pas la grande face de peau
+ for face in facesPeauSorted[:-1]: # la ou les faces debouchantes, pas la grande face de peau
logging.debug("examen face debouchante circulaire")
for i,efep in enumerate(edgesFissExtPipe):
dist = geompy.MinDistance(face, efep)
name = "pointEdgeCirc%d"%i
geomPublishInFather(initLog.debug, facePeau, grpVertCircPeau, name)
pass
- pass # --- au moins une extrémité du pipe sur cette face de peau
+ pass # --- au moins une extremite du pipe sur cette face de peau
# --- edges de bord de la face de peau
logging.debug("aretesVivesCoupees %s",aretesVivesCoupees)
geomPublishInFather(initLog.debug, facePeau, groupEdgesBordPeau , "EdgesBords")
- # --- edges de la face de peau partagées avec la face de fissure
+ # --- edges de la face de peau partagees avec la face de fissure
edgesPeau = geompy.ExtractShapes(facePeau, geompy.ShapeType["EDGE"], False)
edges = substractSubShapes(facePeau, edgesPeau, edgesListees)
edgesFissurePeau = []
- if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau
- edgesFissurePeau = [None for i in range(len(verticesCircPeau))] # edges associés aux extrémités du pipe, en premier
+ if len(verticesPipePeau) > 0: # --- au moins une extremite du pipe sur cette face de peau
+ edgesFissurePeau = [None for i in range(len(verticesCircPeau))] # edges associes aux extremites du pipe, en premier
for edge in edges:
for i, grpVert in enumerate(verticesCircPeau):
if (geompy.MinDistance(grpVert, edge) < 1.e-3) and (edge not in edgesFissurePeau):
edgesFissurePeau[i] = edge
name = "edgeFissurePeau%d"%i
geomPublishInFather(initLog.debug, facePeau, edge, name)
- for edge in edges: # on ajoute après les edges manquantes
+ for edge in edges: # on ajoute apres les edges manquantes
if edge not in edgesFissurePeau:
edgesFissurePeau.append(edge)
else:
edgesPipeIn, verticesPipePeau, rayonPipe,
facesInside, facesOnside):
"""
- elements débouchants (intersection pipe et peau), indexés selon les edges du fond de fissure (edgesFondIn)
+ elements debouchants (intersection pipe et peau), indexes selon les edges du fond de fissure (edgesFondIn)
"""
logging.info('start')
- verticesEdgesFondIn = [] # les points du fond de fissure au débouché du pipe sur la peau (indice de edgesFondIn)
- pipexts = [] # les segments de pipe associés au points de fond de fissure débouchants (même indice)
- cercles = [] # les cercles de generation des pipes débouchant (même indice)
- facesFissExt = [] # les faces de la fissure externe associés au points de fond de fissure débouchants (même indice)
- edgesFissExtPeau = [] # edges des faces de fissure externe sur la peau (même indice)
- edgesFissExtPipe = [] # edges des faces de fissure externe sur le pipe (même indice)
+ verticesEdgesFondIn = [] # les points du fond de fissure au debouche du pipe sur la peau (indice de edgesFondIn)
+ pipexts = [] # les segments de pipe associes au points de fond de fissure debouchants (meme indice)
+ cercles = [] # les cercles de generation des pipes debouchant (meme indice)
+ facesFissExt = [] # les faces de la fissure externe associes au points de fond de fissure debouchants (meme indice)
+ edgesFissExtPeau = [] # edges des faces de fissure externe sur la peau (meme indice)
+ edgesFissExtPipe = [] # edges des faces de fissure externe sur le pipe (meme indice)
#logging.debug("edgesFondIn %s", edgesFondIn)
for iedf, edge in enumerate(edgesFondIn):
vec1 = geompy.MakeVector(centre, vertex)
vec2 = geompy.MakeVector(centre, ptPeau)
angle = geompy.GetAngleRadians(vec1, vec2)
- # cas général : on reconstitue une portion de pipe, avec l'arête de couture qui coincide
- # avec la face de fissure, au niveau du débouché sur la face externe
- # cas dégénéré : le pipe débouche perpendiculairement à une surface plane à l'origine.
- # La partition filling / pipe reconstruit échoue.
+ # cas general : on reconstitue une portion de pipe, avec l'arete de couture qui coincide
+ # avec la face de fissure, au niveau du debouche sur la face externe
+ # cas degenere : le pipe debouche perpendiculairement a une surface plane a l'origine.
+ # La partition filling / pipe reconstruit echoue.
# - Si on partitionne le filling avec un simple pipe obtenu par extrusion droite du cercle,
# cela donne un point en trop sur le cercle.
# - Si on prend une vraie surface plane (pas un filling), on peut faire la partition avec
#if abs(angle) > 1.e-7:
sommetAxe = geompy.MakeTranslationVector(centre, norm)
pm = produitMixte(centre, vertex, ptPeau, sommetAxe)
- if pm > 0: # ajout de pi a (-)angle pour éviter des points confondus (partition échoue) dans les cas dégénérés
+ if pm > 0: # ajout de pi a (-)angle pour eviter des points confondus (partition echoue) dans les cas degeneres
cercle = geompy.MakeRotation(cercle, norm, angle + math.pi)
else:
cercle = geompy.MakeRotation(cercle, norm, -angle + math.pi)
locPt1 = geompy.MakeVertexOnCurve(localEdgeInFondFiss, 1.0)
sidePt0 = whichSide(faceTestPeau, locPt0)
sidePt1 = whichSide(faceTestPeau, locPt1)
- logging.debug("position centre cercle: %s, extremité edge u0: %s, u1: %s", sideCentre, sidePt0, sidePt1)
+ logging.debug("position centre cercle: %s, extremite edge u0: %s, u1: %s", sideCentre, sidePt0, sidePt1)
normFace = geompy.GetNormal(faceTestPeau, ptPeau)
inclPipe = abs(geompy.GetAngleRadians(norm, normFace))
lgp = max(rayonPipe/2., abs(3*rayonPipe*math.tan(inclPipe)))
logging.debug("angle inclinaison Pipe en sortie: %s degres, lgp: %s", inclPipe*180/math.pi, lgp)
# --- position des points extremite du pipe sur l'edge debouchante
- # il faut la distance curviligne ofp du point central par rapport à une extrémité de l'edge débouchante
+ # il faut la distance curviligne ofp du point central par rapport a une extremite de l'edge debouchante
locEdgePart = geompy.MakePartition([localEdgeInFondFiss],[centre], [], [], geompy.ShapeType["EDGE"], 0, [], 0)
edgesLoc = geompy.ExtractShapes(locEdgePart, geompy.ShapeType["EDGE"], False)
edgesLocSorted =[(geompy.MinDistance(edge, locPt0), kk, edge) for kk, edge in enumerate(edgesLoc)]
try:
ofp = geompy.BasicProperties(edgesLocSorted[0][2])[0] # distance curviligne centre locPt0
except:
- texte = "Identification des éléments au débouché du pipe sur la face externe impossible. "
- texte += "Cause possible : la ligne de fond de fissure comprend un point géométrique coincidant avec la face externe. "
- texte += "La ligne de fond de fissure doit déboucher franchement de la face externe, et ne doit pas être coupée au niveau de la face."
+ texte = "Identification des elements au debouche du pipe sur la face externe impossible. "
+ texte += "Cause possible : la ligne de fond de fissure comprend un point geometrique coincidant avec la face externe. "
+ texte += "La ligne de fond de fissure doit deboucher franchement de la face externe, et ne doit pas etre coupee au niveau de la face."
raise fissError(traceback.extract_stack(),texte)
logging.debug("distance curviligne centre extremite0: %s", ofp)
p1 = geompy.MakeVertexOnCurveByLength(localEdgeInFondFiss, ofp +lgp, locPt0)
pipexts.append(pipext)
for ifa, face in enumerate(facesInside):
- logging.debug("recherche edges communes entre une face inside et (faces onside, edges pipe et fond débouchante)")
+ logging.debug("recherche edges communes entre une face inside et (faces onside, edges pipe et fond debouchante)")
edgesPeauFis = []
edgesPipeFis = []
edgesPipeFnd = []
pass
if (len(edgesPeauFis) > 0) and (len(edgesPipeFis) > 0) and (len(edgesPipeFnd) == 0):
dist = geompy.MinDistance(geompy.MakeCompound(edgesPeauFis), ptPeau)
- logging.debug(" test distance extrémité reference %s", dist)
- if dist < 1.e-3: # c'est la face de fissure externe associée
- logging.debug(" face %s inside ajoutée", ifa)
+ logging.debug(" test distance extremite reference %s", dist)
+ if dist < 1.e-3: # c'est la face de fissure externe associee
+ logging.debug(" face %s inside ajoutee", ifa)
facesFissExt.append(face)
name="faceFissExt%d"%iedf
geomPublishInFather(initLog.debug, partitionPeauFissFond, face, name)
if dist < 1.e-3:
break
- return (verticesEdgesFondIn, pipexts, cercles, facesFissExt, edgesFissExtPeau, edgesFissExtPipe)
\ No newline at end of file
+ return (verticesEdgesFondIn, pipexts, cercles, facesFissExt, edgesFissExtPeau, edgesFissExtPipe)
"""
# -----------------------------------------------------------------------
# --- identification edges fond de fissure, edges pipe sur la face de fissure,
- # edges prolongées
+ # edges prolongees
# edges internes communes pipe et fissure, points communs edges fissure peau et edges circulaires
"""
logging.debug("edgePipeIn%s ne coupe pas les faces OnSide", i)
edgesFondIn =[]
- if len(verticesPipePeau) > 0: # au moins une extrémité du pipe sur cette face de peau
+ if len(verticesPipePeau) > 0: # au moins une extremite du pipe sur cette face de peau
#tmp = geompy.GetSharedShapesMulti([edgesFondC, geompy.MakeCompound(edgesOutside)], geompy.ShapeType["EDGE"])
#edgesFondOut = [ ed for ed in tmp if geompy.MinDistance(ed, geompy.MakeCompound(facesOnside)) < 1.e-3]
tmp = geompy.GetSharedShapesMulti([edgesFondC, geompy.MakeCompound(edgesInside)], geompy.ShapeType["EDGE"])
edgesFondIn = [ ed for ed in tmp if geompy.MinDistance(ed, geompy.MakeCompound(facesOnside)) < 1.e-3]
- return (edgesPipeIn, verticesPipePeau, edgesFondIn, facesInside, facesOnside)
\ No newline at end of file
+ return (edgesPipeIn, verticesPipePeau, edgesFondIn, facesInside, facesOnside)
logging.debug("traitement partitionPeauFissFond %s", ifil)
- # --- identification edges fond de fissure, edges pipe sur la face de fissure, edges prolongées
+ # --- identification edges fond de fissure, edges pipe sur la face de fissure, edges prolongees
# edges internes communes pipe et fissure, points communs edges fissure peau et edges circulaires
(edgesPipeIn, verticesPipePeau, edgesFondIn, facesInside, facesOnside) = identifieElementsFissure(ifil, facesDefaut, partitionPeauFissFond,
edgesPipeFiss, edgesFondFiss, aretesVivesC,
fillingFaceExterne, centreFondFiss)
- # --- elements débouchants (intersection pipe et peau), indexés selon les edges du fond de fissure (edgesFondIn)
+ # --- elements debouchants (intersection pipe et peau), indexes selon les edges du fond de fissure (edgesFondIn)
(verticesEdgesFondIn, pipexts, cercles,
facesFissExt, edgesFissExtPeau, edgesFissExtPipe) = identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond,
edgesPipeIn, verticesPipePeau, rayonPipe,
facesInside, facesOnside)
- # --- pour les faces de peau sans extremité débouchante de fissure, il faut recenser les edges de fissure sur la face de peau
+ # --- pour les faces de peau sans extremite debouchante de fissure, il faut recenser les edges de fissure sur la face de peau
- if len(verticesPipePeau) == 0: # aucune extrémité du pipe sur cette face de peau
+ if len(verticesPipePeau) == 0: # aucune extremite du pipe sur cette face de peau
edgesFissExtPeau = trouveEdgesFissPeau(facesInside, facesOnside, edgesPipeIn, edgesFondIn, partitionPeauFissFond, edgesFissExtPeau)
- # --- inventaire des faces de peau : face de peau percée du pipe, extrémités du pipe
+ # --- inventaire des faces de peau : face de peau percee du pipe, extremites du pipe
(facePeau, facesPeauSorted, edgesPeauFondIn) = identifieFacesPeau(ifil, verticesPipePeau, facesOnside, wireFondFiss,
verticesEdgesFondIn, pipexts, cercles,
fillingFaceExterne, centreFondFiss)
- # --- identification précise des edges et disques des faces de peau selon index extremité fissure
+ # --- identification precise des edges et disques des faces de peau selon index extremite fissure
(endsEdgeFond, facesPipePeau, edgeRadFacePipePeau,
edgesCircPeau, verticesCircPeau, groupEdgesBordPeau,
bordsVifs, edgesFissurePeau, aretesVivesCoupees) = identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSorted,
edgesPeauFondIn, fillingFaceExterne, aretesVivesC, aretesVivesCoupees)
- dataPPFF = dict(endsEdgeFond = endsEdgeFond, # pour chaque face [points edge fond de fissure aux débouchés du pipe]
- facesPipePeau = facesPipePeau, # pour chaque face [faces du pipe débouchantes]
- edgeRadFacePipePeau = edgeRadFacePipePeau, # pour chaque face [edge radiale des faces du pipe débouchantes ]
+ dataPPFF = dict(endsEdgeFond = endsEdgeFond, # pour chaque face [points edge fond de fissure aux debouches du pipe]
+ facesPipePeau = facesPipePeau, # pour chaque face [faces du pipe debouchantes]
+ edgeRadFacePipePeau = edgeRadFacePipePeau, # pour chaque face [edge radiale des faces du pipe debouchantes ]
facesFissExt = facesFissExt, # pour chaque face [faces de fissure externes au pipe]
edgesFissExtPeau = edgesFissExtPeau, # pour chaque face [edge en peau des faces de fissure externes (pas subshape facePeau)]
edgesFissExtPipe = edgesFissExtPipe, # pour chaque face [edge commun au pipe des faces de fissure externes]
- facePeau = facePeau, # pour chaque face : la face de peau finale a mailler (percee des faces débouchantes)
- edgesCircPeau = edgesCircPeau, # pour chaque face de peau : [groupe subshapes edges circulaires aux débouchés du pipe]
- verticesCircPeau = verticesCircPeau, # pour chaque face de peau : [groupe subshapes points sur edges circulaires aux débouchés du pipe]
- groupEdgesBordPeau = groupEdgesBordPeau, # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine
- bordsVifs = bordsVifs, # pour chaque face de peau : groupe subshape des edges aux bords correspondant à des arêtes vives
+ facePeau = facePeau, # pour chaque face : la face de peau finale a mailler (percee des faces debouchantes)
+ edgesCircPeau = edgesCircPeau, # pour chaque face de peau : [groupe subshapes edges circulaires aux debouches du pipe]
+ verticesCircPeau = verticesCircPeau, # pour chaque face de peau : [groupe subshapes points sur edges circulaires aux debouches du pipe]
+ groupEdgesBordPeau = groupEdgesBordPeau, # pour chaque face de peau : groupe subshape des edges aux bords lies a la partie saine
+ bordsVifs = bordsVifs, # pour chaque face de peau : groupe subshape des edges aux bords correspondant a des arêtes vives
edgesFissurePeau = edgesFissurePeau, # pour chaque face de peau : [subshape edge en peau des faces de fissure externes]
verticesPipePeau = verticesPipePeau # pour chaque face de peau : [point commun edFissPeau edCircPeau]
)
facesFissExt = []
edgesFissExtPeau = []
edgesFissExtPipe = []
- for ifil in range(len(fsFissuExt)): # TODO: éliminer les doublons (comparer tous les vertices triés, avec mesure de distance ?)
+ for ifil in range(len(fsFissuExt)): # TODO: eliminer les doublons (comparer tous les vertices tries, avec mesure de distance ?)
facesFissExt += fsFissuExt[ifil]
edgesFissExtPeau += edFisExtPe[ifil]
edgesFissExtPipe += edFisExtPi[ifil]
geomPublishInFather(initLog.debug, faceFissureExterne, edgesPeauFissureExterneC, "edgesPeauFissureExterne")
geomPublishInFather(initLog.debug, faceFissureExterne, edgesPipeFissureExterneC, "edgesPipeFissureExterne")
- return (faceFissureExterne, edgesPipeFissureExterneC, wirePipeFissureExterne, edgesPeauFissureExterneC)
\ No newline at end of file
+ return (faceFissureExterne, edgesPipeFissureExterneC, wirePipeFissureExterne, edgesPeauFissureExterneC)
verticesEdgesFondIn, pipexts, cercles,
fillingFaceExterne, centreFondFiss):
"""
- inventaire des faces de peau : face de peau percée du pipe, extrémités du pipe
- La partition avec le pipe peut créer un vertex (et un edge) de trop sur le cercle projeté,
- quand le cercle est très proche de la face.
+ inventaire des faces de peau : face de peau percee du pipe, extremites du pipe
+ La partition avec le pipe peut creer un vertex (et un edge) de trop sur le cercle projete,
+ quand le cercle est tres proche de la face.
dans ce cas, la projection du cercle sur la face suivie d'une partition permet
- d'éviter le point en trop
+ d'eviter le point en trop
"""
logging.info('start')
sections.append(geompy.MakeSection(facesOnside[0], pipext))
partitionPeauByPipe = geompy.MakePartition(facesAndFond, sections, [], [], geompy.ShapeType["FACE"], 0, [], 1)
- # contrôle edge en trop sur edges circulaires
- if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau
+ # contrle edge en trop sur edges circulaires
+ if len(verticesPipePeau) > 0: # --- au moins une extremite du pipe sur cette face de peau
edgeEnTrop = []
outilPart = pipexts
facesPeau = geompy.ExtractShapes(partitionPeauByPipe, geompy.ShapeType["FACE"], False)
dc = [(geompy.MinDistance(verticesEdgesFondIn[0], fac), i) for i, fac in enumerate(facesPeauSorted[:-1])]
dc.sort()
logging.debug("dc sorted: %s", dc)
- i0 = dc[0][1] # indice de facesPeauSorted qui correspond à verticesEdgesFondIn[0], donc 0 pour cercles
+ i0 = dc[0][1] # indice de facesPeauSorted qui correspond a verticesEdgesFondIn[0], donc 0 pour cercles
direct = (i0 == 0)
for i, bad in enumerate(edgeEnTrop):
if direct:
[edgesPeauFondIn, edgesPeauFondOut, edgesPeauFondOn] = extractionOrientee(fillingFaceExterne, partitionPeauByPipe, centreFondFiss, "EDGE", 1.e-3)
[facesPeauFondIn, facesPeauFondOut, facesPeauFondOn] = extractionOrientee(fillingFaceExterne, partitionPeauByPipe, centreFondFiss, "FACE", 1.e-3)
- if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau
+ if len(verticesPipePeau) > 0: # --- au moins une extremite du pipe sur cette face de peau
facesPeauSorted, minsur, maxsurf = sortFaces(facesPeauFondOn)
facePeau = facesPeauSorted[-1] # la plus grande face
else:
name="facePeau%d"%ifil
geomPublish(initLog.debug, facePeau, name)
- return (facePeau, facesPeauSorted, edgesPeauFondIn)
\ No newline at end of file
+ return (facePeau, facesPeauSorted, edgesPeauFondIn)
#geomPublish(initLog.debug, plane1, 'plane1' )
#geomPublish(initLog.debug, ellipsoide1, 'ellipsoide1' )
- # --- partition du bloc défaut par génératrice, tore et plan fissure
+ # --- partition du bloc defaut par generatrice, tore et plan fissure
if step == 7:
return None
partitionBlocDefaut(extrusionDefaut, facesDefaut, gener1, pipe1,
facefis1, ellipsoide1)
if not isHexa:
- edgesBords = None # maillage sain hexa ==> filling, et maillage edges Bords imposés du maillage sain
+ edgesBords = None # maillage sain hexa ==> filling, et maillage edges Bords imposes du maillage sain
# --- TORE
# --- faces toriques du tore
[diams, circles, geners] = propagateTore(tore)
- # --- tri par longueur des 3 génératrices
+ # --- tri par longueur des 3 generatrices
if step == 11:
return None
[blocFaceFiss, blocFaceTore1, blocFaceTore2] = \
facesToreInBloc(ellipsoidep, facefissoutore, facetore1, facetore2)
- # --- identification des shapes modifiées par la duplication des noeuds de la face fissure (d'un coté de la face)
+ # --- identification des shapes modifiees par la duplication des noeuds de la face fissure (d'un cote de la face)
#shapesAModifier = self.shapesSurFissure(blocPartition, plane1 faceFissure, gencnt)
if step == 14:
#from getCentreFondFiss import getCentreFondFiss
# -----------------------------------------------------------------------------
-# --- procédure complète fissure générale
+# --- procedure complete fissure generale
def insereFissureGenerale(maillagesSains,
shapesFissure, shapeFissureParams,
"""
logging.info('start')
- shapeDefaut = shapesFissure[0] # faces de fissure, débordant
+ shapeDefaut = shapesFissure[0] # faces de fissure, debordant
fondFiss = shapesFissure[4] # groupe d'edges de fond de fissure
rayonPipe = shapeFissureParams['rayonPipe']
tgtCentre = elementsDefaut[16]
# --- restriction de la face de fissure au domaine solide :
- # partition face fissure étendue par fillings, on garde la plus grande face
+ # partition face fissure etendue par fillings, on garde la plus grande face
partShapeDefaut = geompy.MakePartition([shapeDefaut], facesDefaut, [], [], geompy.ShapeType["FACE"], 0, [], 0)
geomPublish(initLog.debug, partShapeDefaut, 'partShapeDefaut')
logging.debug("selection de la face la plus proche du point interne, distance=%s",distfaces[0][0])
facesPortFissure = distfaces[0][2]
else:
- facesPartShapeDefautSorted, minSurf, maxSurf = sortFaces(facesPartShapeDefaut) # la face de fissure dans le volume doit être la plus grande
- logging.debug("surfaces faces fissure étendue, min %s, max %s", minSurf, maxSurf)
+ facesPartShapeDefautSorted, minSurf, maxSurf = sortFaces(facesPartShapeDefaut) # la face de fissure dans le volume doit etre la plus grande
+ logging.debug("surfaces faces fissure etendue, min %s, max %s", minSurf, maxSurf)
facesPortFissure = facesPartShapeDefautSorted[-1] #= global
geomPublish(initLog.debug, facesPortFissure, "facesPortFissure")
O, OX, OY, OZ = triedreBase()
# -----------------------------------------------------------------------------
- # --- pipe de fond de fissure, prolongé, partition face fissure par pipe
+ # --- pipe de fond de fissure, prolonge, partition face fissure par pipe
# identification des edges communes pipe et face fissure
if geompy.NumberOfFaces(shapeDefaut) == 1:
extrem, norms = findWireEndVertices(fondFiss, True)
logging.debug("extrem: %s, norm: %s",extrem, norms)
cercle = geompy.MakeCircle(extrem[0], norms[0], rayonPipe)
- cercle = geompy.MakeRotation(cercle, norms[0], math.pi/3.0 ) # éviter d'avoir l'arête de couture du pipe presque confondue avec la face fissure
+ cercle = geompy.MakeRotation(cercle, norms[0], math.pi/3.0 ) # eviter d'avoir l'arete de couture du pipe presque confondue avec la face fissure
geomPublish(initLog.debug, cercle, 'cercle')
fondFissProlonge = prolongeWire(fondFiss, extrem, norms, 2*rayonPipe)
pipeFiss = geompy.MakePipe(cercle, fondFissProlonge)
# -----------------------------------------------------------------------------
# --- peau et face de fissure
#
- # --- partition peau défaut - face de fissure prolongée - wire de fond de fissure prolongée
- # il peut y avoir plusieurs faces externes, dont certaines sont découpées par la fissure
+ # --- partition peau defaut - face de fissure prolongee - wire de fond de fissure prolongee
+ # il peut y avoir plusieurs faces externes, dont certaines sont decoupees par la fissure
# liste de faces externes : facesDefaut
# liste de partitions face externe - fissure : partitionPeauFissFond (None quand pas d'intersection)
for filling in facesDefaut:
part = geompy.MakePartition([fissPipe, filling], [], [], [], geompy.ShapeType["FACE"], 0, [], 0)
isPart = checkDecoupePartition([fissPipe, filling], part)
- if isPart: # on recrée la partition avec toutes les faces filling en outil pour avoir une face de fissure correcte
+ if isPart: # on recree la partition avec toutes les faces filling en outil pour avoir une face de fissure correcte
otherFD = [fd for fd in facesDefaut if fd != filling]
if len(otherFD) > 0:
fissPipePart = geompy.MakePartition([fissPipe], otherFD, [], [], geompy.ShapeType["FACE"], 0, [], 0)
ipart = ipart +1
- # --- arêtes vives détectées (dans quadranglesToShapeNoCorner
+ # --- aretes vives detectees (dans quadranglesToShapeNoCorner
# et quadranglesToShapeWithCorner)
aretesVives = []
aretesVivesC =geompy.MakeCompound(aretesVives)
# -------------------------------------------------------
- # --- inventaire des faces de peau coupées par la fissure
- # pour chaque face de peau : 0, 1 ou 2 faces débouchante du fond de fissure
+ # --- inventaire des faces de peau coupees par la fissure
+ # pour chaque face de peau : 0, 1 ou 2 faces debouchante du fond de fissure
# 0, 1 ou plus edges de la face de fissure externe au pipe
nbFacesFilling = len(partitionsPeauFissFond)
- ptEdgeFond = [ [] for i in range(nbFacesFilling)] # pour chaque face [points edge fond de fissure aux débouchés du pipe]
- fsPipePeau = [ [] for i in range(nbFacesFilling)] # pour chaque face [faces du pipe débouchantes]
- edRadFPiPo = [ [] for i in range(nbFacesFilling)] # pour chaque face [edge radiale des faces du pipe débouchantes ]
+ ptEdgeFond = [ [] for i in range(nbFacesFilling)] # pour chaque face [points edge fond de fissure aux debouches du pipe]
+ fsPipePeau = [ [] for i in range(nbFacesFilling)] # pour chaque face [faces du pipe debouchantes]
+ edRadFPiPo = [ [] for i in range(nbFacesFilling)] # pour chaque face [edge radiale des faces du pipe debouchantes ]
fsFissuExt = [ [] for i in range(nbFacesFilling)] # pour chaque face [faces de fissure externes au pipe]
edFisExtPe = [ [] for i in range(nbFacesFilling)] # pour chaque face [edge en peau des faces de fissure externes (pas subshape facePeau)]
edFisExtPi = [ [] for i in range(nbFacesFilling)] # pour chaque face [edge commun au pipe des faces de fissure externes]
- facesPeaux = [None for i in range(nbFacesFilling)] # pour chaque face : la face de peau finale a mailler (percée des faces débouchantes)
- edCircPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe]
- ptCircPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape point sur edge circulaire aux débouchés du pipe]
- gpedgeBord = [None for i in range(nbFacesFilling)] # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine
- gpedgeVifs = [None for i in range(nbFacesFilling)] # pour chaque face de peau : groupes subshape des edges aux arêtes vives entre fillings
+ facesPeaux = [None for i in range(nbFacesFilling)] # pour chaque face : la face de peau finale a mailler (percee des faces debouchantes)
+ edCircPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge circulaire aux debouches du pipe]
+ ptCircPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape point sur edge circulaire aux debouches du pipe]
+ gpedgeBord = [None for i in range(nbFacesFilling)] # pour chaque face de peau : groupe subshape des edges aux bords lies a la partie saine
+ gpedgeVifs = [None for i in range(nbFacesFilling)] # pour chaque face de peau : groupes subshape des edges aux aretes vives entre fillings
edFissPeau = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes]
ptFisExtPi = [ [] for i in range(nbFacesFilling)] # pour chaque face de peau : [point commun edFissPeau edCircPeau]
logging.debug("traitement partitionPeauFissFond %s", ifil)
# -----------------------------------------------------------------------
# --- identification edges fond de fissure, edges pipe sur la face de fissure,
- # edges prolongées
+ # edges prolongees
edgesPipeC = geompy.GetInPlace(partitionPeauFissFond, geompy.MakeCompound(edgesPipeFiss)) #= local
geomPublishInFather(initLog.debug,partitionPeauFissFond, edgesPipeC, "edgesPipeFiss")
logging.debug("edgePipeIn%s ne coupe pas les faces OnSide", i)
#edgesFondOut = [] #= inutile
edgesFondIn =[] #= global
- if len(verticesPipePeau) > 0: # au moins une extrémité du pipe sur cette face de peau
+ if len(verticesPipePeau) > 0: # au moins une extremite du pipe sur cette face de peau
#tmp = geompy.GetSharedShapesMulti([edgesFondC, geompy.MakeCompound(edgesOutside)], geompy.ShapeType["EDGE"])
#edgesFondOut = [ ed for ed in tmp if geompy.MinDistance(ed, geompy.MakeCompound(facesOnside)) < 1.e-3]
tmp = geompy.GetSharedShapesMulti([edgesFondC, geompy.MakeCompound(edgesInside)], geompy.ShapeType["EDGE"])
edgesFondIn = [ ed for ed in tmp if geompy.MinDistance(ed, geompy.MakeCompound(facesOnside)) < 1.e-3]
- verticesEdgesFondIn = [] # les points du fond de fissure au débouché du pipe sur la peau (indice de edgesFondIn)
- pipexts = [] # les segments de pipe associés au points de fond de fissure débouchants (même indice)
- cercles = [] # les cercles de generation des pipes débouchant (même indice)
- facesFissExt = [] # les faces de la fissure externe associés au points de fond de fissure débouchants (même indice)
- edgesFissExtPeau = [] # edges des faces de fissure externe sur la peau (même indice)
- edgesFissExtPipe = [] # edges des faces de fissure externe sur le pipe (même indice)
+ verticesEdgesFondIn = [] # les points du fond de fissure au debouche du pipe sur la peau (indice de edgesFondIn)
+ pipexts = [] # les segments de pipe associes au points de fond de fissure debouchants (meme indice)
+ cercles = [] # les cercles de generation des pipes debouchant (meme indice)
+ facesFissExt = [] # les faces de la fissure externe associes au points de fond de fissure debouchants (meme indice)
+ edgesFissExtPeau = [] # edges des faces de fissure externe sur la peau (meme indice)
+ edgesFissExtPipe = [] # edges des faces de fissure externe sur le pipe (meme indice)
#logging.debug("edgesFondIn %s", edgesFondIn)
edgesFondFiss, edgesIdByOrientation = orderEdgesFromWire(wireFondFiss)
vec1 = geompy.MakeVector(centre, vertex)
vec2 = geompy.MakeVector(centre, ptPeau)
angle = geompy.GetAngleRadians(vec1, vec2)
- # cas général : on reconstitue une portion de pipe, avec l'arête de couture qui coincide
- # avec la face de fissure, au niveau du débouché sur la face externe
- # cas dégénéré : le pipe débouche perpendiculairement à une surface plane à l'origine.
- # La partition filling / pipe reconstruit échoue.
+ # cas general : on reconstitue une portion de pipe, avec l'arete de couture qui coincide
+ # avec la face de fissure, au niveau du debouche sur la face externe
+ # cas degenere : le pipe debouche perpendiculairement a une surface plane a l'origine.
+ # La partition filling / pipe reconstruit echoue.
# - Si on partitionne le filling avec un simple pipe obtenu par extrusion droite du cercle,
# cela donne un point en trop sur le cercle.
# - Si on prend une vraie surface plane (pas un filling), on peut faire la partition avec
#if abs(angle) > 1.e-7:
sommetAxe = geompy.MakeTranslationVector(centre, norm)
pm = produitMixte(centre, vertex, ptPeau, sommetAxe)
- if pm > 0: # ajout de pi a (-)angle pour éviter des points confondus (partition échoue) dans les cas dégénérés
+ if pm > 0: # ajout de pi a (-)angle pour eviter des points confondus (partition echoue) dans les cas degeneres
cercle = geompy.MakeRotation(cercle, norm, angle + math.pi)
else:
cercle = geompy.MakeRotation(cercle, norm, -angle + math.pi)
locPt1 = geompy.MakeVertexOnCurve(localEdgeInFondFiss, 1.0)
sidePt0 = whichSide(faceTestPeau, locPt0)
sidePt1 = whichSide(faceTestPeau, locPt1)
- logging.debug("position centre cercle: %s, extremité edge u0: %s, u1: %s", sideCentre, sidePt0, sidePt1)
+ logging.debug("position centre cercle: %s, extremite edge u0: %s, u1: %s", sideCentre, sidePt0, sidePt1)
normFace = geompy.GetNormal(faceTestPeau, ptPeau)
inclPipe = abs(geompy.GetAngleRadians(norm, normFace))
lgp = max(rayonPipe/2., abs(3*rayonPipe*math.tan(inclPipe)))
logging.debug("angle inclinaison Pipe en sortie: %s degres, lgp: %s", inclPipe*180/math.pi, lgp)
# --- position des points extremite du pipe sur l'edge debouchante
- # il faut la distance curviligne ofp du point central par rapport à une extrémité de l'edge débouchante
+ # il faut la distance curviligne ofp du point central par rapport a une extremite de l'edge debouchante
locEdgePart = geompy.MakePartition([localEdgeInFondFiss],[centre], [], [], geompy.ShapeType["EDGE"], 0, [], 0)
edgesLoc = geompy.ExtractShapes(locEdgePart, geompy.ShapeType["EDGE"], False)
edgesLocSorted =[(geompy.MinDistance(edge, locPt0), kk, edge) for kk, edge in enumerate(edgesLoc)]
pipexts.append(pipext)
for face in facesInside:
- logging.debug("recherche edges communes entre une face inside et (faces onside, edges pipe et fond débouchante)")
+ logging.debug("recherche edges communes entre une face inside et (faces onside, edges pipe et fond debouchante)")
edgesPeauFis = []
edgesPipeFis = []
edgesPipeFnd = []
pass
if (len(edgesPeauFis) > 0) and (len(edgesPipeFis) > 0) and (len(edgesPipeFnd) == 0):
dist = geompy.MinDistance(geompy.MakeCompound(edgesPeauFis), ptPeau)
- logging.debug(" test distance extrémité reference %s", dist)
- if dist < 1.e-3: # c'est la face de fissure externe associée
- logging.debug(" face %s inside ajoutée", i)
+ logging.debug(" test distance extremite reference %s", dist)
+ if dist < 1.e-3: # c'est la face de fissure externe associee
+ logging.debug(" face %s inside ajoutee", i)
facesFissExt.append(face)
name="faceFissExt%d"%iedf
geomPublishInFather(initLog.debug,partitionPeauFissFond, face, name)
if dist < 1.e-3:
break
- if len(verticesPipePeau) == 0: # aucune extrémité du pipe sur cette face de peau
+ if len(verticesPipePeau) == 0: # aucune extremite du pipe sur cette face de peau
# il faut recenser les edges de fissure sur la face de peau
j = 0
for face in facesInside:
j += 1
# -----------------------------------------------------------------------
- # --- identification faces de peau : face de peau percée du pipe, extrémités du pipe
- # La partition avec le pipe peut créer un vertex (et un edge) de trop sur le cercle projeté,
- # quand le cercle est très proche de la face.
+ # --- identification faces de peau : face de peau percee du pipe, extremites du pipe
+ # La partition avec le pipe peut creer un vertex (et un edge) de trop sur le cercle projete,
+ # quand le cercle est tres proche de la face.
# dans ce cas, la projection du cercle sur la face suivie d'une partition permet
- # d'éviter le point en trop
+ # d'eviter le point en trop
facesAndFond = facesOnside
facesAndFond.append(wireFondFiss)
sections.append(geompy.MakeSection(facesOnside[0], pipext))
partitionPeauByPipe = geompy.MakePartition(facesAndFond, sections, [], [], geompy.ShapeType["FACE"], 0, [], 1)
- # contrôle edge en trop sur edges circulaires
- if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau
+ # contrle edge en trop sur edges circulaires
+ if len(verticesPipePeau) > 0: # --- au moins une extremite du pipe sur cette face de peau
edgeEnTrop = []
outilPart = pipexts
facesPeau = geompy.ExtractShapes(partitionPeauByPipe, geompy.ShapeType["FACE"], False)
dc = [(geompy.MinDistance(verticesEdgesFondIn[0], fac), i) for i, fac in enumerate(facesPeauSorted[:-1])]
dc.sort()
logging.debug("dc sorted: %s", dc)
- i0 = dc[0][1] # indice de facesPeauSorted qui correspond à verticesEdgesFondIn[0], donc 0 pour cercles
+ i0 = dc[0][1] # indice de facesPeauSorted qui correspond a verticesEdgesFondIn[0], donc 0 pour cercles
direct = (i0 == 0)
for i, bad in enumerate(edgeEnTrop):
if direct:
[edgesPeauFondIn, edgesPeauFondOut, edgesPeauFondOn] = extractionOrientee(fillingFaceExterne, partitionPeauByPipe, centreFondFiss, "EDGE", 1.e-3)
[facesPeauFondIn, facesPeauFondOut, facesPeauFondOn] = extractionOrientee(fillingFaceExterne, partitionPeauByPipe, centreFondFiss, "FACE", 1.e-3)
- if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau
+ if len(verticesPipePeau) > 0: # --- au moins une extremite du pipe sur cette face de peau
facesPeauSorted, minsur, maxsurf = sortFaces(facesPeauFondOn)
facePeau = facesPeauSorted[-1] # la plus grande face
else:
edgesListees = []
edgesCircPeau = []
verticesCircPeau = []
- if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau
+ if len(verticesPipePeau) > 0: # --- au moins une extremite du pipe sur cette face de peau
- for face in facesPeauSorted[:-1]: # la ou les faces débouchantes, pas la grande face de peau
+ for face in facesPeauSorted[:-1]: # la ou les faces debouchantes, pas la grande face de peau
logging.debug("examen face debouchante circulaire")
for i,efep in enumerate(edgesFissExtPipe):
dist = geompy.MinDistance(face, efep)
name = "pointEdgeCirc%d"%i
geomPublishInFather(initLog.debug,facePeau, grpVertCircPeau, name)
pass
- pass # --- au moins une extrémité du pipe sur cette face de peau
+ pass # --- au moins une extremite du pipe sur cette face de peau
# --- edges de bord de la face de peau
logging.debug("aretesVivesCoupees %s",aretesVivesCoupees)
geomPublishInFather(initLog.debug,facePeau, groupEdgesBordPeau , "EdgesBords")
- # --- edges de la face de peau partagées avec la face de fissure
+ # --- edges de la face de peau partagees avec la face de fissure
edgesPeau = geompy.ExtractShapes(facePeau, geompy.ShapeType["EDGE"], False)
edges = substractSubShapes(facePeau, edgesPeau, edgesListees)
edgesFissurePeau = []
- if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau
- edgesFissurePeau = [None for i in range(len(verticesCircPeau))] # edges associés aux extrémités du pipe, en premier
+ if len(verticesPipePeau) > 0: # --- au moins une extremite du pipe sur cette face de peau
+ edgesFissurePeau = [None for i in range(len(verticesCircPeau))] # edges associes aux extremites du pipe, en premier
for edge in edges:
for i, grpVert in enumerate(verticesCircPeau):
if (geompy.MinDistance(grpVert, edge) < 1.e-3) and (edge not in edgesFissurePeau):
edgesFissurePeau[i] = edge
name = "edgeFissurePeau%d"%i
geomPublishInFather(initLog.debug,facePeau, edge, name)
- for edge in edges: # on ajoute après les edges manquantes
+ for edge in edges: # on ajoute apres les edges manquantes
if edge not in edgesFissurePeau:
edgesFissurePeau.append(edge)
else:
geomPublishInFather(initLog.debug,facePeau, edge, name)
- ptEdgeFond[ifil] = endsEdgeFond # pour chaque face [points edge fond de fissure aux débouchés du pipe]
- fsPipePeau[ifil] = facesPipePeau # pour chaque face [faces du pipe débouchantes]
- edRadFPiPo[ifil] = edgeRadFacePipePeau # pour chaque face [edge radiale des faces du pipe débouchantes ]
+ ptEdgeFond[ifil] = endsEdgeFond # pour chaque face [points edge fond de fissure aux debouches du pipe]
+ fsPipePeau[ifil] = facesPipePeau # pour chaque face [faces du pipe debouchantes]
+ edRadFPiPo[ifil] = edgeRadFacePipePeau # pour chaque face [edge radiale des faces du pipe debouchantes ]
fsFissuExt[ifil] = facesFissExt # pour chaque face [faces de fissure externes au pipe]
edFisExtPe[ifil] = edgesFissExtPeau # pour chaque face [edge en peau des faces de fissure externes (pas subshape facePeau)]
edFisExtPi[ifil] = edgesFissExtPipe # pour chaque face [edge commun au pipe des faces de fissure externes]
- facesPeaux[ifil] = facePeau # pour chaque face : la face de peau finale a mailler (percee des faces débouchantes)
- edCircPeau[ifil] = edgesCircPeau # pour chaque face de peau : [groupe subshapes edges circulaires aux débouchés du pipe]
- ptCircPeau[ifil] = verticesCircPeau # pour chaque face de peau : [groupe subshapes points sur edges circulaires aux débouchés du pipe]
- gpedgeBord[ifil] = groupEdgesBordPeau # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine
- gpedgeVifs[ifil] = bordsVifs # pour chaque face de peau : groupe subshape des edges aux bords correspondant à des arêtes vives
+ facesPeaux[ifil] = facePeau # pour chaque face : la face de peau finale a mailler (percee des faces debouchantes)
+ edCircPeau[ifil] = edgesCircPeau # pour chaque face de peau : [groupe subshapes edges circulaires aux debouches du pipe]
+ ptCircPeau[ifil] = verticesCircPeau # pour chaque face de peau : [groupe subshapes points sur edges circulaires aux debouches du pipe]
+ gpedgeBord[ifil] = groupEdgesBordPeau # pour chaque face de peau : groupe subshape des edges aux bords lies a la partie saine
+ gpedgeVifs[ifil] = bordsVifs # pour chaque face de peau : groupe subshape des edges aux bords correspondant a des aretes vives
edFissPeau[ifil] = edgesFissurePeau # pour chaque face de peau : [subshape edge en peau des faces de fissure externes]
ptFisExtPi[ifil] = verticesPipePeau # pour chaque face de peau : [point commun edFissPeau edCircPeau]
facesFissExt = []
edgesFissExtPeau = []
edgesFissExtPipe = []
- for ifil in range(nbFacesFilling): # TODO: éliminer les doublons (comparer tous les vertices triés, avec mesure de distance ?)
+ for ifil in range(nbFacesFilling): # TODO: eliminer les doublons (comparer tous les vertices tries, avec mesure de distance ?)
facesFissExt += fsFissuExt[ifil]
edgesFissExtPeau += edFisExtPe[ifil]
edgesFissExtPipe += edFisExtPi[ifil]
logging.debug("---------------------------- Preparation Maillage du Pipe --------------")
# -----------------------------------------------------------------------
# --- preparation maillage du pipe :
- # - détections des points a respecter : jonction des edges/faces constituant
+ # - detections des points a respecter : jonction des edges/faces constituant
# la face de fissure externe au pipe
# - points sur les edges de fond de fissure et edges pipe/face fissure,
- # - vecteurs tangents au fond de fissure (normal au disque maillé)
+ # - vecteurs tangents au fond de fissure (normal au disque maille)
# --- option de maillage selon le rayon de courbure du fond de fissure
lenEdgeFondExt = 0
hypo1d = algo1d.Adaptive(lgmin, lgmax, deflexion) # a ajuster selon la profondeur de la fissure
isDone = meshFondExt.Compute()
- ptGSdic = {} # dictionnaire [paramètre sur la courbe] --> point géométrique
+ ptGSdic = {} # dictionnaire [parametre sur la courbe] --> point geometrique
allNodeIds = meshFondExt.GetNodesId()
for nodeId in allNodeIds:
xyz = meshFondExt.GetNodeXYZ(nodeId)
plan = geompy.MakePlane(vertcx, norm, 3*rayonPipe)
part = geompy.MakePartition([plan], [wirePipeFiss], [], [], geompy.ShapeType["VERTEX"], 0, [], 0)
liste = geompy.ExtractShapes(part, geompy.ShapeType["VERTEX"], True)
- if len(liste) == 5: # 4 coins du plan plus intersection recherchée
+ if len(liste) == 5: # 4 coins du plan plus intersection recherchee
for point in liste:
if geompy.MinDistance(point, vertcx) < 1.1*rayonPipe: # les quatre coins sont plus loin
vertpx = point
# name = "plan%d"%i
# geomPublishInFather(initLog.debug,wireFondFiss, plan, name)
- # --- maillage du pipe étendu, sans tenir compte de l'intersection avec la face de peau
+ # --- maillage du pipe etendu, sans tenir compte de l'intersection avec la face de peau
logging.debug("nbsegCercle %s", nbsegCercle)
# -----------------------------------------------------------------------
- # --- points géométriques
+ # --- points geometriques
- gptsdisks = [] # vertices géométrie de tous les disques
+ gptsdisks = [] # vertices geometrie de tous les disques
raydisks = [[] for i in range(nbsegCercle)]
for i in range(len(centres)): # boucle sur les disques
- gptdsk = [] # vertices géométrie d'un disque
+ gptdsk = [] # vertices geometrie d'un disque
vertcx = centres[i]
vertpx = origins[i]
normal = normals[i]
vec1 = geompy.MakeVector(vertcx, vertpx)
- points = [vertcx] # les points du rayon de référence
+ points = [vertcx] # les points du rayon de reference
for j in range(nbsegRad):
pt = geompy.MakeTranslationVectorDistance(vertcx, vec1, (j+1)*float(rayonPipe)/nbsegRad)
points.append(pt)
gptsdisks.append(gptdsk)
# -----------------------------------------------------------------------
- # --- recherche des points en trop (externes au volume à remailler)
- # - on associe chaque extrémité du pipe à une face filling
- # - on part des disques aux extrémités du pipe
- # - pour chaque disque, on prend les vertices de géométrie,
- # on marque leur position relative à la face.
+ # --- recherche des points en trop (externes au volume a remailler)
+ # - on associe chaque extremite du pipe a une face filling
+ # - on part des disques aux extremites du pipe
+ # - pour chaque disque, on prend les vertices de geometrie,
+ # on marque leur position relative a la face.
# - on s'arrete quand tous les noeuds sont dedans
- logging.debug("---------------------------- recherche des points du pipe a éliminer --------------")
+ logging.debug("---------------------------- recherche des points du pipe a eliminer --------------")
pt0 = centres[0]
pt1 = centres[-1]
- idFillingFromBout = [None, None] # contiendra l'index du filling pour les extrémités 0 et 1
+ idFillingFromBout = [None, None] # contiendra l'index du filling pour les extremites 0 et 1
for ifil in range(nbFacesFilling):
- for ipt, pt in enumerate(ptEdgeFond[ifil]): # il y a un ou deux points débouchant sur cette face
+ for ipt, pt in enumerate(ptEdgeFond[ifil]): # il y a un ou deux points debouchant sur cette face
if geompy.MinDistance(pt,pt0) < geompy.MinDistance(pt,pt1): # TODO: trouver plus fiable pour les cas tordus...
idFillingFromBout[0] = ifil
else:
facesPipePeau += fsPipePeau[ifil]
edgeRadFacePipePeau += edRadFPiPo[ifil]
- logging.debug("recherche des disques de noeuds complètement internes")
+ logging.debug("recherche des disques de noeuds completement internes")
idisklim = [] # indices des premier et dernier disques internes
idiskout = [] # indices des premier et dernier disques externes
for bout in range(2):
for j, pt in enumerate(points):
side = whichSideVertex(facesDefaut[idFillingFromBout[bout]], pt)
if side < 0:
- if outside: # premier point detecté dedans
+ if outside: # premier point detecte dedans
outside = False
- numout = idisk -inc # le disque précédent était dehors
+ numout = idisk -inc # le disque precedent etait dehors
else:
inside = False # ce point est dehors
if not inside and not outside:
idisklim.append(idisk) # premier et dernier disques internes
idiskout.append(numout) # premier et dernier disques externes
- # --- listes de nappes radiales en filling à chaque extrémité débouchante
+ # --- listes de nappes radiales en filling a chaque extremite debouchante
facesDebouchantes = [False, False]
- idFacesDebouchantes = [-1, -1] # contiendra les indices des faces disque débouchantes (facesPipePeau)
+ idFacesDebouchantes = [-1, -1] # contiendra les indices des faces disque debouchantes (facesPipePeau)
listNappes =[]
for i, idisk in enumerate(idisklim):
numout = idiskout[i]
- logging.debug("extremité %s, indices disques interne %s, externe %s",i, idisk, numout)
+ logging.debug("extremite %s, indices disques interne %s, externe %s",i, idisk, numout)
nappes = []
- if (idisk != 0) and (idisk != len(gptsdisks)-1): # si extrémité débouchante
+ if (idisk != 0) and (idisk != len(gptsdisks)-1): # si extremite debouchante
for k in range(nbsegCercle):
if i == 0:
iddeb = max(0, numout)
idfin = max(iddeb+3,idisk+1) # il faut 3 rayons pour faire un filling qui suive le fond de fissure
- #logging.debug("extremité %s, indices retenus interne %s, externe %s",i, idfin, iddeb)
+ #logging.debug("extremite %s, indices retenus interne %s, externe %s",i, idfin, iddeb)
comp = geompy.MakeCompound(raydisks[k][iddeb:idfin])
name='compoundRay%d'%k
geomPublish(initLog.debug, comp, name)
else:
idfin = min(len(gptsdisks), numout+1)
iddeb = min(idfin-3, idisk) # il faut 3 rayons pour faire un filling qui suive le fond de fissure
- #logging.debug("extremité %s, indices retenus interne %s, externe %s",i, idfin, iddeb)
+ #logging.debug("extremite %s, indices retenus interne %s, externe %s",i, idfin, iddeb)
comp = geompy.MakeCompound(raydisks[k][iddeb:idfin])
name='compoundRay%d'%k
geomPublish(initLog.debug, comp, name)
facesDebouchantes[i] = True
listNappes.append(nappes)
- # --- mise en correspondance avec les indices des faces disque débouchantes (facesPipePeau)
+ # --- mise en correspondance avec les indices des faces disque debouchantes (facesPipePeau)
for i, nappes in enumerate(listNappes):
if facesDebouchantes[i]:
for k, face in enumerate(facesPipePeau):
break
logging.debug("idFacesDebouchantes: %s", idFacesDebouchantes)
- # --- construction des listes d'edges radiales sur chaque extrémité débouchante
+ # --- construction des listes d'edges radiales sur chaque extremite debouchante
listEdges = []
for i, nappes in enumerate(listNappes):
- id = idFacesDebouchantes[i] # indice de face débouchante (facesPipePeau)
+ id = idFacesDebouchantes[i] # indice de face debouchante (facesPipePeau)
if id < 0:
listEdges.append([])
else:
edge = edsorted[-1]
else:
maxl = geompy.BasicProperties(edge)[0]
- if maxl < 0.01: # problème MakeSection
- logging.debug("problème MakeSection recherche edge radiale %s, longueur trop faible: %s, utilisation partition", k, maxl)
+ if maxl < 0.01: # probleme MakeSection
+ logging.debug("probleme MakeSection recherche edge radiale %s, longueur trop faible: %s, utilisation partition", k, maxl)
partNappeFace = geompy.MakePartition([face, nappes[k]], [] , [], [], geompy.ShapeType["FACE"], 0, [], 0)
edps= geompy.ExtractShapes(partNappeFace, geompy.ShapeType["EDGE"], False)
ednouv = []
for ii, ed in enumerate(ednouv):
geomPublish(initLog.debug, ed, "ednouv%d"%ii)
[edsorted, minl,maxl] = sortEdges(ednouv)
- logging.debug(" longueur edge trouvée: %s", maxl)
+ logging.debug(" longueur edge trouvee: %s", maxl)
edge = edsorted[-1]
edges.append(edge)
name = 'edgeEndPipe%d'%k
geomPublish(initLog.debug, edge, name)
listEdges.append(edges)
- # --- création des points du maillage du pipe sur la face de peau
+ # --- creation des points du maillage du pipe sur la face de peau
for i, edges in enumerate(listEdges):
- id = idFacesDebouchantes[i] # indice de face débouchante (facesPipePeau)
+ id = idFacesDebouchantes[i] # indice de face debouchante (facesPipePeau)
if id >= 0:
gptdsk = []
if id > 0: # id vaut 0 ou 1
- id = -1 # si id vaut 1, on prend le dernier élément de la liste (1 ou 2 extrémités débouchent sur la face)
+ id = -1 # si id vaut 1, on prend le dernier element de la liste (1 ou 2 extremites debouchent sur la face)
centre = ptEdgeFond[idFillingFromBout[i]][id]
name = "centre%d"%id
geomPublish(initLog.debug, centre, name)
bout = extrems[1]
else:
bout = extrems[0]
- # ajustement du point extrémité (bout) sur l'edge circulaire en face de peau
+ # ajustement du point extremite (bout) sur l'edge circulaire en face de peau
logging.debug("edgesCirc: %s", edgesCirc)
distEdgeCirc = [(geompy.MinDistance(bout, edgeCirc), k2, edgeCirc) for k2, edgeCirc in enumerate(edgesCirc)]
distEdgeCirc.sort()
logging.debug("distEdgeCirc: %s", distEdgeCirc)
u = projettePointSurCourbe(bout, distEdgeCirc[0][2])
- if (abs(u) < 0.02) or (abs(1-u) < 0.02): # les points très proches d'une extrémité doivent y être mis précisément.
+ if (abs(u) < 0.02) or (abs(1-u) < 0.02): # les points tres proches d'une extremite doivent y etre mis precisement.
extrCircs = geompy.ExtractShapes(distEdgeCirc[0][2], geompy.ShapeType["VERTEX"], True)
if geompy.MinDistance(bout, extrCircs[0]) < geompy.MinDistance(bout, extrCircs[1]):
bout = extrCircs[0]
# --- ajustement precis des points sur edgesPipeFissureExterneC
edgesPFE = geompy.ExtractShapes(edgesPipeFissureExterneC, geompy.ShapeType["EDGE"], False)
- verticesPFE = findWireIntermediateVertices(wirePipeFissureExterne) # vertices intermédiaires (des points en trop dans ptsInWireFissExtPipe)
- idiskmin = idisklim[0] + 1 # on ne prend pas le disque sur la peau, déjà ajusté
- idiskmax = idisklim[1] # on ne prend pas le disque sur la peau, déjà ajusté
+ verticesPFE = findWireIntermediateVertices(wirePipeFissureExterne) # vertices intermediaires (des points en trop dans ptsInWireFissExtPipe)
+ idiskmin = idisklim[0] + 1 # on ne prend pas le disque sur la peau, deja ajuste
+ idiskmax = idisklim[1] # on ne prend pas le disque sur la peau, deja ajuste
idiskint = []
for vtx in verticesPFE:
distPtVt = []
# --- fin du maillage du pipe
# -----------------------------------------------------------------------
- # --- edges de bord, faces défaut à respecter
+ # --- edges de bord, faces defaut a respecter
aFilterManager = smesh.CreateFilterManager()
nbAdded, internalBoundary, _NoneGroup = internalBoundary.MakeBoundaryElements( SMESH.BND_1DFROM2D, '', '', 0, [ ])
bordsLibres = internalBoundary.MakeGroupByFilter( 'bords', filtre )
smesh.SetName(bordsLibres, 'bordsLibres')
- # --- pour aider l'algo hexa-tetra à ne pas mettre de pyramides à l'exterieur des volumes repliés sur eux-mêmes
- # on désigne les faces de peau en quadrangles par le groupe "skinFaces"
+ # --- pour aider l'algo hexa-tetra a ne pas mettre de pyramides a l'exterieur des volumes replies sur eux-memes
+ # on designe les faces de peau en quadrangles par le groupe "skinFaces"
skinFaces = internalBoundary.CreateEmptyGroup( SMESH.FACE, 'skinFaces' )
nbAdd = skinFaces.AddFrom( internalBoundary.GetMesh() )
- # --- maillage des éventuelles arêtes vives entre faces reconstruites
+ # --- maillage des eventuelles aretes vives entre faces reconstruites
if len(aretesVivesCoupees) > 0:
aretesVivesC = geompy.MakeCompound(aretesVivesCoupees)
# --- maillage faces de peau
boutFromIfil = [None for i in range(nbFacesFilling)]
- if idFillingFromBout[0] != idFillingFromBout[1]: # repérage des extremites du pipe quand elles débouchent sur des faces différentes
+ if idFillingFromBout[0] != idFillingFromBout[1]: # reperage des extremites du pipe quand elles debouchent sur des faces differentes
boutFromIfil[idFillingFromBout[0]] = 0
boutFromIfil[idFillingFromBout[1]] = 1
else:
- facePeau = facesPeaux[ifil] # pour chaque face : la face de peau finale a mailler (percée des faces débouchantes)
- edgesCircPeau = edCircPeau[ifil] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe]
- verticesCircPeau = ptCircPeau[ifil] # pour chaque face de peau : [subshape point sur edge circulaire aux débouchés du pipe]
- groupEdgesBordPeau = gpedgeBord[ifil] # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine
- bordsVifs = gpedgeVifs[ifil] # pour chaque face de peau : groupe subshape des edges aux bords correspondant à des arêtes vives
+ facePeau = facesPeaux[ifil] # pour chaque face : la face de peau finale a mailler (percee des faces debouchantes)
+ edgesCircPeau = edCircPeau[ifil] # pour chaque face de peau : [subshape edge circulaire aux debouches du pipe]
+ verticesCircPeau = ptCircPeau[ifil] # pour chaque face de peau : [subshape point sur edge circulaire aux debouches du pipe]
+ groupEdgesBordPeau = gpedgeBord[ifil] # pour chaque face de peau : groupe subshape des edges aux bords lies a la partie saine
+ bordsVifs = gpedgeVifs[ifil] # pour chaque face de peau : groupe subshape des edges aux bords correspondant a des aretes vives
edgesFissurePeau = edFissPeau[ifil] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes]
meshFacePeau = smesh.Mesh(facePeau)
nbAdd = GroupFaces.AddFrom( meshFacePeau.GetMesh() )
meshesFacesPeau.append(meshFacePeau)
- # --- regroupement des maillages du défaut
+ # --- regroupement des maillages du defaut
listMeshes = [internalBoundary.GetMesh(),
meshPipe.GetMesh(),
listMeshes.append(mp.GetMesh())
meshBoiteDefaut = smesh.Concatenate(listMeshes, 1, 1, 1e-05,False)
- # pour aider l'algo hexa-tetra à ne pas mettre de pyramides à l'exterieur des volumes repliés sur eux-mêmes
- # on désigne les faces de peau en quadrangles par le groupe "skinFaces"
+ # pour aider l'algo hexa-tetra a ne pas mettre de pyramides a l'exterieur des volumes replies sur eux-memes
+ # on designe les faces de peau en quadrangles par le groupe "skinFaces"
group_faceFissOutPipe = None
group_faceFissInPipe = None
groups = meshBoiteDefaut.GetGroups()
grps = [ grp for grp in groups if grp.GetName() == 'FONDFISS']
fond = maillageComplet.GetMesh().CreateDimGroup( grps, SMESH.NODE, 'FONDFISS' )
- logging.info("réorientation face de fissure FACE1")
+ logging.info("reorientation face de fissure FACE1")
grps = [ grp for grp in groups if grp.GetName() == 'FACE1']
nb = maillageComplet.Reorient2D( grps[0], normfiss, grps[0].GetID(1))
- logging.info("réorientation face de fissure FACE2")
+ logging.info("reorientation face de fissure FACE2")
plansim = geompy.MakePlane(O, normfiss, 10000)
fissnorm = geompy.MakeMirrorByPlane(normfiss, plansim)
grps = [ grp for grp in groups if grp.GetName() == 'FACE2']
# -----------------------------------------------------------------------------
# --- peau et face de fissure
- # --- partition peau defaut - face de fissure prolongee - wire de fond de fissure prolongée
+ # --- partition peau defaut - face de fissure prolongee - wire de fond de fissure prolongee
partitionPeauFissFond = geompy.MakePartition([facePorteFissure, WirePorteFondFissure, fillingFaceExterne], [], [], [], geompy.ShapeType["FACE"], 0, [], 0)
geomPublish(initLog.debug, partitionPeauFissFond, 'partitionPeauFissFond' )
[edgesInside, edgesOutside, edgesOnside] = extractionOrientee(fillingFaceExterne, partitionPeauFissFond, centreFondFiss, "EDGE", 1.e-3)
[facesInside, facesOutside, facesOnside] = extractionOrientee(fillingFaceExterne, partitionPeauFissFond, centreFondFiss, "FACE", 1.e-3)
- # --- partition peau -face fissure - pipe fond de fissure prolongé
+ # --- partition peau -face fissure - pipe fond de fissure prolonge
partitionPeauFissByPipe = geompy.MakePartition([facesInside[0], facesOnside[0]], [pipefiss], [], [], geompy.ShapeType["FACE"], 0, [], 0)
geomPublish(initLog.debug, partitionPeauFissByPipe, 'partitionPeauFissByPipe' )
name = "verticesOutCercles_%d"%i
geomPublishInFather(initLog.debug,facePeau, vertex, name)
- # --- demi cercles regroupés
+ # --- demi cercles regroupes
groupsDemiCerclesPeau = []
for i, vertex in enumerate(verticesEdgePeauFiss):
demis = []
geompy.UnionList(groupGenerFiss, generFiss)
geomPublishInFather(initLog.debug,pipeFondFiss, groupGenerFiss, "GenFiss")
- # --- demi cercles externes regroupés
+ # --- demi cercles externes regroupes
groupsDemiCerclesPipe = []
for i, vertex in enumerate(verticesEdgePeauFiss):
demis = []
# -------------------------------------------------------------------------
# --- maillage
- # --- edges de bord face defaut à respecter
+ # --- edges de bord face defaut a respecter
aFilterManager = smesh.CreateFilterManager()
nbAdded, internalBoundary, _NoneGroup = internalBoundary.MakeBoundaryElements( SMESH.BND_1DFROM2D, '', '', 0, [ ])
if salome.sg.hasDesktop():
salome.sg.updateObjBrowser()
- return maillageComplet
\ No newline at end of file
+ return maillageComplet
def lookForCorner(maillageAScanner):
""" Cette fonction permet de scanner la liste de noeuds qui composent le
- maillage passé en paramètre. On recherche un ou plusieurs coins, ce
- qui implique les caractéristiques suivantes:
- - le noeud doit appartenir au moins à trois éléments distincts
- - chaque élément doit appartenir à un ensemble distinct
- La fonction renvoie une liste de coins par l'intermédiaire de l'IDs
- chaque noeud. La liste contient en général au maximum deux coins.
+ maillage passe en parametre. On recherche un ou plusieurs coins, ce
+ qui implique les caracteristiques suivantes:
+ - le noeud doit appartenir au moins a trois elements distincts
+ - chaque element doit appartenir a un ensemble distinct
+ La fonction renvoie une liste de coins par l'intermediaire de l'IDs
+ chaque noeud. La liste contient en general au maximum deux coins.
"""
logging.info("start")
# On parcours la liste de noeuds
listOfElements = maillageAScanner.GetNodeInverseElements(ND)
if len(listOfElements) >=3:
- # On teste le nombre d'éléments qui partagent le même noeud
- # --- Filtre selon le critère 'coplanar' --- #
+ # On teste le nombre d'elements qui partagent le meme noeud
+ # --- Filtre selon le critere 'coplanar' --- #
listOfCriterion = [smesh.GetCriterion(SMESH.FACE, SMESH.FT_CoplanarFaces, \
SMESH.FT_Undefined, elem, SMESH.FT_Undefined, SMESH.FT_Undefined, 30) \
for elem in listOfElements]
listOfFilters = [smesh.GetFilterFromCriteria([criteria]) for criteria in listOfCriterion]
listOfSets = [maillageAScanner.GetIdsFromFilter(filter) for filter in listOfFilters]
if listOfSets.count(listOfSets[0]) == len(listOfSets):
- # Si toutes les listes d'éléments sont similaires, on retourne
- # au début pour éviter de travailler sur des éléments inutiles.
- # Exemple : un noeud appartenant à 4 éléments sur la même face.
+ # Si toutes les listes d'elements sont similaires, on retourne
+ # au debut pour eviter de travailler sur des elements inutiles.
+ # Exemple : un noeud appartenant a 4 elements sur la meme face.
continue
for s in listOfSets:
while listOfSets.count(s) > 1:
- # On supprime tant que la liste d'éléments n'est pas unique.
+ # On supprime tant que la liste d'elements n'est pas unique.
listOfSets.remove(s)
if len(listOfSets) >= 3:
- # Si on a au moins 3 listes d'élements différentes, on considère
- # qu'il y a présence d'un coin.
+ # Si on a au moins 3 listes d'elements differentes, on considere
+ # qu'il y a presence d'un coin.
listOfCorners.append(ND)
return listOfCorners
def createLinesFromMesh(maillageSupport):
- """ Cette fonction permet de générer une liste de lignes à partir du
- maillage support passé en paramètre. On démarre à partir d'un coin
+ """ Cette fonction permet de generer une liste de lignes a partir du
+ maillage support passe en parametre. On demarre a partir d'un coin
simple et on parcourt tout les noeuds pour former une ligne. Soit la
figure ci-dessous :
1_____4_____7 On part du coin N1, et on cherche les noeuds
| | | successifs tels que [1, 2, 3]. Lorsqu'on arrive
| 1 | 3 | arrive sur le noeud de fin de ligne N3, on repart
- | | | du noeud précédent du premier élément (E1), à
+ | | | du noeud precedent du premier element (E1), a
2_____5_____8 savoir le noeud N4. On suit les noeuds succesifs
- | | | [4, 5, 6] comme précédemment et ainsi de suite.
+ | | | [4, 5, 6] comme precedemment et ainsi de suite.
| 2 | 4 | Lorsqu'on arrive sur le dernier noeud de la
- | | | dernière ligne, à savoir le noeud N9, on considère
- 3_____6_____9 que toutes les lignes sont créées.
+ | | | derniere ligne, a savoir le noeud N9, on considere
+ 3_____6_____9 que toutes les lignes sont creees.
- La fonction retourne une liste de lignes utilisées par la suite.
+ La fonction retourne une liste de lignes utilisees par la suite.
"""
logging.info("start")
elem = elems[0]
break;
idStart = idNode # le noeud de coin
- elemStart = elem # l'élément quadrangle au coin
+ elemStart = elem # l'element quadrangle au coin
xyz = maillageSupport.GetNodeXYZ(idStart)
logging.debug("idStart %s, coords %s", idStart, str(xyz))
debutLigne = True
nodeline = []
elemline = []
- while ligneIncomplete: # compléter la ligne de points
+ while ligneIncomplete: # completer la ligne de points
nodeline.append(idNode)
allNodeIds.remove(idNode)
elemline.append(elem)
nodes = maillageSupport.GetElemNodes(elem)
- i = nodes.index(idNode) # repérer l'index du noeud courant (i) dans l'élément quadrangle (0 a 3)
- if agauche: # déterminer le noeud suivant (j) et celui opposé (k) dans le quadrangle
+ i = nodes.index(idNode) # reperer l'index du noeud courant (i) dans l'element quadrangle (0 a 3)
+ if agauche: # determiner le noeud suivant (j) et celui opposé (k) dans le quadrangle
if i < 3:
j = i+1
else:
else:
k = 3
isuiv = nodes[j] # noeud suivant
- iapres = nodes[k] # noeud opposé
+ iapres = nodes[k] # noeud oppose
if debutLigne:
debutLigne = False
- # précédent a trouver, dernière ligne : précédent au lieu de suivant
+ # precedent a trouver, derniere ligne : precedent au lieu de suivant
if agauche:
if i > 0:
iprec = nodes[i -1]
logging.debug("elemline %s", elemline)
nodelines.append(nodeline)
- # on a constitué une liste de lignes de points connexes
+ # on a constitue une liste de lignes de points connexes
logging.debug("dimensions [%s, %s]", len(nodelines), len(nodeline))
return nodelines
def createNewMeshesFromCorner(maillageSupport, listOfCorners):
- """ Cette fonction permet de générer un nouveau maillage plus facile à
- utiliser. On démarre d'un coin et on récupère les trois éléments
- auquel le noeud appartient. Grâce à un filtre 'coplanar' sur les trois
- éléments, on peut générer des faces distinctes.
+ """ Cette fonction permet de generer un nouveau maillage plus facile a
+ utiliser. On demarre d'un coin et on recupere les trois elements
+ auquel le noeud appartient. Grâce a un filtre 'coplanar' sur les trois
+ elements, on peut generer des faces distinctes.
"""
logging.info("start")
for corner in listOfCorners:
elems = maillageSupport.GetNodeInverseElements(corner)
for i, elem in enumerate(elems):
- # --- Filtre selon le critère 'coplanar' --- #
+ # --- Filtre selon le critere 'coplanar' --- #
critere = smesh.GetCriterion(SMESH.FACE, SMESH.FT_CoplanarFaces, \
SMESH.FT_Undefined, elem, SMESH.FT_Undefined, SMESH.FT_Undefined, 30)
filtre = smesh.GetFilterFromCriteria([critere])
# On copie le maillage en fonction du filtre
msh = smesh.CopyMesh(grp, 'new_{0}'.format(i + 1), False, True)
# On stocke l'ensemble des noeuds du maillage dans tmp
- # On ajoute le maillage à la liste des nouveaux maillages
- # seulement s'il n'y est pas déjà
+ # On ajoute le maillage a la liste des nouveaux maillages
+ # seulement s'il n'y est pas deja
tmp.append(msh.GetNodesId())
if tmp.count(msh.GetNodesId()) <= 1:
listOfNewMeshes.append(msh)
- return listOfNewMeshes
\ No newline at end of file
+ return listOfNewMeshes
def mailleAretesEtJonction(internalBoundary, aretesVivesCoupees, lgAretesVives):
"""
- edges de bord, faces défaut à respecter
+ edges de bord, faces defaut a respecter
"""
logging.info('start')
bordsLibres = internalBoundary.MakeGroupByFilter( 'bords', filtre )
smesh.SetName(bordsLibres, 'bordsLibres')
- # --- pour aider l'algo hexa-tetra à ne pas mettre de pyramides à l'exterieur des volumes repliés sur eux-mêmes
- # on désigne les faces de peau en quadrangles par le groupe "skinFaces"
+ # --- pour aider l'algo hexa-tetra a ne pas mettre de pyramides a l'exterieur des volumes replies sur eux-memes
+ # on designe les faces de peau en quadrangles par le groupe "skinFaces"
skinFaces = internalBoundary.CreateEmptyGroup( SMESH.FACE, 'skinFaces' )
nbAdd = skinFaces.AddFrom( internalBoundary.GetMesh() )
- # --- maillage des éventuelles arêtes vives entre faces reconstruites
+ # --- maillage des eventuelles aretes vives entre faces reconstruites
grpAretesVives = None
if len(aretesVivesCoupees) > 0:
grpAretesVives = meshAretesVives.CreateEmptyGroup( SMESH.EDGE, 'grpAretesVives' )
nbAdd = grpAretesVives.AddFrom( meshAretesVives.GetMesh() )
- return (internalBoundary, bordsLibres, grpAretesVives)
\ No newline at end of file
+ return (internalBoundary, bordsLibres, grpAretesVives)
logging.info('start')
nbFacesFilling = len(partitionsPeauFissFond)
boutFromIfil = [None for i in range(nbFacesFilling)]
- if idFillingFromBout[0] != idFillingFromBout[1]: # repérage des extremites du pipe quand elles débouchent sur des faces différentes
+ if idFillingFromBout[0] != idFillingFromBout[1]: # reperage des extremites du pipe quand elles debouchent sur des faces differentes
boutFromIfil[idFillingFromBout[0]] = 0
boutFromIfil[idFillingFromBout[1]] = 1
else:
- logging.debug("meshFacePeau %d coupée par la fissure", ifil)
- facePeau = facesPeaux[ifil] # pour chaque face : la face de peau finale a mailler (percée des faces débouchantes)
- edgesCircPeau = edCircPeau[ifil] # pour chaque face de peau : [subshape edge circulaire aux débouchés du pipe]
- verticesCircPeau = ptCircPeau[ifil] # pour chaque face de peau : [subshape point sur edge circulaire aux débouchés du pipe]
- groupEdgesBordPeau = gpedgeBord[ifil] # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine
- bordsVifs = gpedgeVifs[ifil] # pour chaque face de peau : groupe subshape des edges aux bords correspondant à des arêtes vives
+ logging.debug("meshFacePeau %d coupee par la fissure", ifil)
+ facePeau = facesPeaux[ifil] # pour chaque face : la face de peau finale a mailler (percee des faces debouchantes)
+ edgesCircPeau = edCircPeau[ifil] # pour chaque face de peau : [subshape edge circulaire aux debouches du pipe]
+ verticesCircPeau = ptCircPeau[ifil] # pour chaque face de peau : [subshape point sur edge circulaire aux debouches du pipe]
+ groupEdgesBordPeau = gpedgeBord[ifil] # pour chaque face de peau : groupe subshape des edges aux bords lies a la partie saine
+ bordsVifs = gpedgeVifs[ifil] # pour chaque face de peau : groupe subshape des edges aux bords correspondant a des arêtes vives
edgesFissurePeau = edFissPeau[ifil] # pour chaque face de peau : [subshape edge en peau des faces de fissure externes]
meshFacePeau = smesh.Mesh(facePeau)
nbAdd = GroupFaces.AddFrom( meshFacePeau.GetMesh() )
meshesFacesPeau.append(meshFacePeau)
- return meshesFacesPeau
\ No newline at end of file
+ return meshesFacesPeau
aretesInternes, internalBoundary, ellipsoidep, sharedFaces, sharedEdges, edgesBords,
nbsegExt, nbsegGen, nbsegRad, scaleRad, reverses, reverext, nbsegCercle, nbsegFis, dmoyen, lensegEllipsoide):
"""
- Maillage du bloc partitionné
+ Maillage du bloc partitionne
TODO: a completer
"""
logging.info('start')
- # --- edges de bord à respecter
+ # --- edges de bord a respecter
aFilterManager = smesh.CreateFilterManager()
nbAdded, internalBoundary, _NoneGroup = internalBoundary.MakeBoundaryElements( SMESH.BND_1DFROM2D, '', '', 0, [ ])
blocComplet = smesh.Concatenate([bloc1.GetMesh(), blocMesh.GetMesh()], 1, 1, 1e-05,False)
- return bloc1, blocComplet
\ No newline at end of file
+ return bloc1, blocComplet
def orderEdgesFromWire(aWire):
"""
- fournit les edges ordonnées d'un wire selon ExtractShapes(,,False),
+ fournit les edges ordonnees d'un wire selon ExtractShapes(,,False),
et l'ordre des edges selon le sens de parcours (ordre des indices de la liste d'edges)
"""
logging.info("start")
debut = -1
fin = -1
for k, kvs in idsubs.items():
- if len(kvs) == 1: # une extremité
+ if len(kvs) == 1: # une extremite
kv = kvs[0]
if kv[1] == 0:
debut = kv[0]
else:
fin = kv[0]
- logging.debug("nombre d'edges: %s, indice edge début: %s, fin: %s",len(edges), debut, fin)
+ logging.debug("nombre d'edges: %s, indice edge debut: %s, fin: %s",len(edges), debut, fin)
if debut < 0:
- logging.critical("les edges du wire ne sont pas orientées dans le même sens: pas de début trouvé")
+ logging.critical("les edges du wire ne sont pas orientees dans le meme sens: pas de debut trouve")
return edges, list(range(len(edges)))
orderedList = [debut]
orderedList.append(k[0])
break
else:
- logging.critical("les edges du wire ne sont pas orientées dans le même sens: une edge à l'envers")
+ logging.critical("les edges du wire ne sont pas orientees dans le meme sens: une edge a l'envers")
return edges, list(range(len(edges)))
- logging.debug("liste des edges ordonnées selon le sens de parcours: %s", orderedList)
+ logging.debug("liste des edges ordonnees selon le sens de parcours: %s", orderedList)
accessList = list(range(len(orderedList)))
for i,k in enumerate(orderedList):
accessList[k] = i
- logging.info("position ordonnée des edges selon le sens de parcours: %s", accessList)
+ logging.info("position ordonnee des edges selon le sens de parcours: %s", accessList)
return edges, accessList
Partition du bloc defaut par la generatrice de l'ellipse,
le tore elliptique, la face plane de fissure
@param volDefaut : le bloc defaut
- @param gener : la generatrice de l'ellipse, positionnée dans l'espace
- @param pipe : le tore partitionné par le plan de fissure, positionné
+ @param gener : la generatrice de l'ellipse, positionnee dans l'espace
+ @param pipe : le tore partitionne par le plan de fissure, positionne
dans l'espace
- @param facefis : la face plane de la fissure, positionnée dans l'espace
- @return (volDefautPart, blocp, tore, faceFissure), le bloc partitionné,
+ @param facefis : la face plane de la fissure, positionnee dans l'espace
+ @return (volDefautPart, blocp, tore, faceFissure), le bloc partitionne,
les sous shapes issues de la partition
(le bloc moins le tore, la generatrice, le tore, la face de fissure)
"""
facesExternes.append(facesExt[j])
facesExtBloc.append(facesExt[j])
- if len(facesExtBloc) < len(faces): # toutes les faces externes du bloc n'ont pas été trouvées. TODO eliminer les detections multiples
+ if len(facesExtBloc) < len(faces): # toutes les faces externes du bloc n'ont pas ete trouvees. TODO eliminer les detections multiples
logging.info(" recherche faces externes par aretes partagees avec faces externes ellipsoide")
facesBloc = geompy.ExtractShapes(blocp, geompy.ShapeType["FACE"], True)
for i in range(len(facesBloc)):
"""
Partition du volume complet sur lequel porte le calcul par le cube qui contiendra le defaut
@param volumeSain : volume complet (geomObject)
- @param boiteDefaut : cube qui contiendra le defaut, positionné dans l'espace (son centre doit être au voisinage
+ @param boiteDefaut : cube qui contiendra le defaut, positionne dans l'espace (son centre doit etre au voisinage
immediat de la peau de l'objet sain: le tore elliptique debouche de paroi)
- @return (volumeSainPart, partieSaine, volDefaut, faceBloc) : volume complet partionné par le cube, partie saine,
+ @return (volumeSainPart, partieSaine, volDefaut, faceBloc) : volume complet partionne par le cube, partie saine,
bloc du defaut (solide commun au cube et au volume complet), face du bloc defaut correspondant à la paroi.
"""
logging.info("start")
def partitionneFissureParPipe(shapesFissure, elementsDefaut, rayonPipe):
"""
- pipe de fond de fissure, prolongé, partition face fissure par pipe
+ pipe de fond de fissure, prolonge, partition face fissure par pipe
identification des edges communes pipe et face fissure
"""
logging.info('start')
- shapeDefaut = shapesFissure[0] # faces de fissure, débordant
+ shapeDefaut = shapesFissure[0] # faces de fissure, debordant
fondFiss = shapesFissure[4] # groupe d'edges de fond de fissure
centreFondFiss = elementsDefaut[15]
tgtCentre = elementsDefaut[16]
extrem, norms = findWireEndVertices(fondFiss, True)
logging.debug("extrem: %s, norm: %s",extrem, norms)
cercle = geompy.MakeCircle(extrem[0], norms[0], rayonPipe)
- cercle = geompy.MakeRotation(cercle, norms[0], math.pi/3.0 ) # éviter d'avoir l'arête de couture du pipe presque confondue avec la face fissure
+ cercle = geompy.MakeRotation(cercle, norms[0], math.pi/3.0 ) # eviter d'avoir l'arete de couture du pipe presque confondue avec la face fissure
geomPublish(initLog.debug, cercle, 'cercle')
fondFissProlonge = prolongeWire(fondFiss, extrem, norms, 2*rayonPipe)
try:
pipeFiss = geompy.MakePipe(cercle, fondFissProlonge)
except:
- texte = "génération du pipe le long de la ligne de fond de fissure prolongée impossible. "
+ texte = "generation du pipe le long de la ligne de fond de fissure prolongee impossible. "
texte += "Cause possible : la ligne s'autointersecte lorsqu'on la prolonge."
raise fissError(traceback.extract_stack(),texte)
geomPublish(initLog.debug, pipeFiss, 'pipeFiss')
wireFondFiss = geompy.MakeWire(edgesFondFiss)
geomPublish(initLog.debug, wireFondFiss,"wireFondFiss")
- return (fissPipe, edgesPipeFiss, edgesFondFiss, wirePipeFiss, wireFondFiss)
\ No newline at end of file
+ return (fissPipe, edgesPipeFiss, edgesFondFiss, wirePipeFiss, wireFondFiss)
def peauInterne(fichierMaillage, shapeDefaut, nomZones):
"""
- Retrouve les groupes de défaut dans le maillage sain modifié par CreateHoleSkin (CreeZoneDefautMaillage)
- On récupère le volume et la peau de la zone de défaut, les éventuelles faces et arêtes internes de cette zone.
+ Retrouve les groupes de defaut dans le maillage sain modifie par CreateHoleSkin (CreeZoneDefautMaillage)
+ On recupere le volume et la peau de la zone de defaut, les eventuelles faces et aretes internes de cette zone.
"""
logging.info("start")
([maillageSain], status) = smesh.CreateMeshesFromMED(fichierMaillage)
zoneDefaut_internalEdges = grp
break
- # --- Le groupe ZoneDefaut ne doit contenir que des Hexaèdres"
+ # --- Le groupe ZoneDefaut ne doit contenir que des Hexaedres"
info=maillageSain.GetMeshInfo(zoneDefaut)
keys = list(info.keys()); keys.sort()
if (nbelem == 0) or (nbhexa < nbelem) :
texte = "La zone a remailler est incorrecte.<br>"
texte += "Causes possibles :<ul>"
- texte += "<li>Les mailles à enlever dans le maillage sain n'ont pas été détectées.</li>"
- texte += "<li>Certaines faces du maillage sain sont à l'envers : les normales aux faces en paroi de volume doivent être sortantes.</li>"
- texte += "<li>Il n'y a pas que des Hexaèdres réglés linéaires dans la zone à remailler (notamment mailles quadratiques, tetraèdres non traités)</li></ul>"
+ texte += "<li>Les mailles a enlever dans le maillage sain n'ont pas ete detectees.</li>"
+ texte += "<li>Certaines faces du maillage sain sont a l'envers : les normales aux faces en paroi de volume doivent etre sortantes.</li>"
+ texte += "<li>Il n'y a pas que des Hexaedres regles lineaires dans la zone a remailler (notamment mailles quadratiques, tetraedres non traites)</li></ul>"
raise fissError(traceback.extract_stack(),texte)
nbAdded, maillageSain, DefautBoundary = maillageSain.MakeBoundaryElements( SMESH.BND_2DFROM3D, 'DefBound', '', 0, [ zoneDefaut ])
listOfCorner = lookForCorner(maillageDefautCible)
logging.debug("listOfCorner = %s", listOfCorner)
if len(listOfCorner) > 0:
- logging.info("présence de coins à la surface externe de la zone à reconstruire")
+ logging.info("presence de coins a la surface externe de la zone a reconstruire")
zoneDefaut_skin, internalBoundary = fusionMaillageDefaut(maillageSain, maillageDefautCible, internalBoundary, zoneDefaut_skin, shapeDefaut, listOfCorner)
return maillageSain, internalBoundary, zoneDefaut, zoneDefaut_skin, zoneDefaut_internalFaces, zoneDefaut_internalEdges
from .geomsmesh import geompy
# -----------------------------------------------------------------------------
-# --- prolongation des segments extremité des polylines, pour la découpe
+# --- prolongation des segments extremite des polylines, pour la decoupe
def prolongeVertices(vertices):
"""
- Prolongation des segments extremité d'une polyline définie par un vecteur de points.
- Chaque nouvelle extremité est obtenue par symétrie point du voisin de cette ancienne extrémité
- (symétrie de centre l'ancienne extrémite) : les segments extremes sont doublés.
- @param vertices : liste ordonnée des points (geomObject) de la polyline
- @return vertices : liste avec les deux extremités modifiées
+ Prolongation des segments extremite d'une polyline definie par un vecteur de points.
+ Chaque nouvelle extremite est obtenue par symetrie point du voisin de cette ancienne extremite
+ (symetrie de centre l'ancienne extremite) : les segments extremes sont doubles.
+ @param vertices : liste ordonnee des points (geomObject) de la polyline
+ @return vertices : liste avec les deux extremites modifiees
"""
logging.info("start")
if len(vertices) < 2:
def propagateTore(tore):
"""
Classement des edges du tore par une operation 'propagate'
- @param tore partionné et coupé
+ @param tore partionne et coupe
@return (diams, circles, geners) edges dans le plan de fissure, edges demi circulaires,
edges selon la generatrice (liste de compounds)
"""
from .geomsmesh import smesh
# -----------------------------------------------------------------------------
-# --- nommage des objets mesh (algorithme, hypothèse, subMesh)
+# --- nommage des objets mesh (algorithme, hypothese, subMesh)
def putName(objmesh,name, i=-1):
if i >= 0:
return np.dot(a,a)
# -----------------------------------------------------------------------------
-# --- groupe de quadrangles de face transformé en face géométrique par filling
+# --- groupe de quadrangles de face transforme en face geometrique par filling
def quadranglesToShape(meshQuad, shapeFissureParams, centreFondFiss):
"""
- groupe de quadrangles de face transformée en faces géométriques par filling
- on part de quadrangles définissant une zone a 4 cotés (convexe), et on reconstitue n lignes de p points.
- Ces n lignes de p points sont transformées en n courbes géométriques,
- à partir desquelles on reconstitue une surface géométrique.
- Il peut y avoir plusieurs faces géométriques reconstituées, si on fournit des groupes de quadrangles non connexes.
- On détecte les angles vifs, pour conserver des arêtes vives délimitant des faces connexes.
- @param meshQuad : maillages constitué de quadrangles constituant une ou plusieurs zones convexes
- @return (fillings, noeuds_Bords) : liste de geomObject, listes des bords (bord = liste ordonnée de noeuds (geomObject))
+ groupe de quadrangles de face transformee en faces geometriques par filling
+ on part de quadrangles definissant une zone a 4 cotes (convexe), et on reconstitue n lignes de p points.
+ Ces n lignes de p points sont transformees en n courbes geometriques,
+ a partir desquelles on reconstitue une surface geometrique.
+ Il peut y avoir plusieurs faces geometriques reconstituees, si on fournit des groupes de quadrangles non connexes.
+ On detecte les angles vifs, pour conserver des aretes vives delimitant des faces connexes.
+ @param meshQuad : maillages constitue de quadrangles constituant une ou plusieurs zones convexes
+ @return (fillings, noeuds_Bords) : liste de geomObject, listes des bords (bord = liste ordonnee de noeuds (geomObject))
"""
logging.info("start")
isVecteurDefaut = True
vecteurDefaut = shapeFissureParams['vecteurDefaut']
- fillings = [] # les faces reconstituées, découpées selon les arêtes vives
+ fillings = [] # les faces reconstituees, decoupees selon les aretes vives
noeuds_bords = [] #
- bords_Partages = [] # contient a la fin les courbes correspondant aux arêtes vives
- fillconts = [] # les faces reconstituées, sans découpage selon les arêtes vives
- idFilToCont = [] # index face découpée vers face sans découpe
- iface = 0 # index face découpée
+ bords_Partages = [] # contient a la fin les courbes correspondant aux aretes vives
+ fillconts = [] # les faces reconstituees, sans decoupage selon les aretes vives
+ idFilToCont = [] # index face decoupee vers face sans decoupe
+ iface = 0 # index face decoupee
icont = 0 # index face continue
allNodeIds = meshQuad.GetNodesId()
elem = elems[0]
break;
idStart = idNode # le noeud de coin
- elemStart = elem # l'élément quadrangle au coin
+ elemStart = elem # l'element quadrangle au coin
xyz = meshQuad.GetNodeXYZ(idStart)
logging.debug("idStart %s, coords %s", idStart, str(xyz))
debutLigne = True
nodeline = []
elemline = []
- while ligneIncomplete: # compléter la ligne de points
+ while ligneIncomplete: # completer la ligne de points
nodeline.append(idNode)
allNodeIds.remove(idNode)
elemline.append(elem)
nodes = meshQuad.GetElemNodes(elem)
- i = nodes.index(idNode) # repérer l'index du noeud courant (i) dans l'élément quadrangle (0 a 3)
- if agauche: # déterminer le noeud suivant (j) et celui opposé (k) dans le quadrangle
+ i = nodes.index(idNode) # reperer l'index du noeud courant (i) dans l'element quadrangle (0 a 3)
+ if agauche: # determiner le noeud suivant (j) et celui oppose (k) dans le quadrangle
if i < 3:
j = i+1
else:
else:
k = 3
isuiv = nodes[j] #noeud suivant
- iapres = nodes[k] #noeud opposé
+ iapres = nodes[k] #noeud oppose
if debutLigne:
debutLigne = False
- # précédent a trouver, dernière ligne : précédent au lieu de suivant
+ # precedent a trouver, derniere ligne : precedent au lieu de suivant
if agauche:
if i > 0:
iprec = nodes[i -1]
logging.debug("elemline %s", elemline)
nodelines.append(nodeline)
- # on a constitué une liste de lignes de points connexes
+ # on a constitue une liste de lignes de points connexes
logging.debug("dimensions [%s, %s]", len(nodelines), len(nodeline))
- # stockage des coordonnées dans un tableau numpy
+ # stockage des coordonnees dans un tableau numpy
mat = np.zeros((len(nodelines), len(nodeline), 3))
for i, ligne in enumerate(nodelines):
for j, nodeId in enumerate(ligne):
mat[i,j] = meshQuad.GetNodeXYZ(nodeId)
- logging.debug("matrice de coordonnées: \n%s",mat)
+ logging.debug("matrice de coordonnees: \n%s",mat)
logging.debug("dimensions %s", mat.shape)
- # recherche d'angles supérieurs a un seuil sur une ligne : angle entre deux vecteurs successifs
- cosmin = math.cos(math.pi/4.) # TODO: angle reference en paramètre
+ # recherche d'angles superieurs a un seuil sur une ligne : angle entre deux vecteurs successifs
+ cosmin = math.cos(math.pi/4.) # TODO: angle reference en parametre
vecx = mat[:, 1:, :] - mat[:, :-1, :] # vecteurs selon direction "x"
vx0 = vecx[:, :-1, :] # vecteurs amont
vx1 = vecx[:, 1:, :] # vecteurs aval
e = np.einsum('ijk,ijk->ij', vx0, vx1) # produit scalaire des vecteurs
- f = np.apply_along_axis(mydot, 2, vx0) # normes carrées vecteurs amont
- g = np.apply_along_axis(mydot, 2, vx1) # normes carrées vecteurs aval
+ f = np.apply_along_axis(mydot, 2, vx0) # normes carrees vecteurs amont
+ g = np.apply_along_axis(mydot, 2, vx1) # normes carrees vecteurs aval
h = e/(np.sqrt(f*g)) # cosinus
ruptureX = h < cosmin # True si angle > reference
logging.debug("matrice de rupture X: \n%s",ruptureX)
rupX = [x for x in range(len(nodeline)-2) if np.prod(ruptureX[:,x])]
logging.debug("colonnes de rupture: %s",rupX)
- # recherche d'angles supérieurs a un seuil sur une colonne : angle entre deux vecteurs successifs
+ # recherche d'angles superieurs a un seuil sur une colonne : angle entre deux vecteurs successifs
vecy = mat[ 1:, :, :] - mat[:-1, :, :] # vecteurs selon direction "y"
vy0 = vecy[:-1, :, :] # vecteurs amont
vy1 = vecy[ 1:, :, :] # vecteurs aval
e = np.einsum('ijk,ijk->ij', vy0, vy1) # produit scalaire des vecteurs
- f = np.apply_along_axis(mydot, 2, vy0) # normes carrées vecteurs amont
- g = np.apply_along_axis(mydot, 2, vy1) # normes carrées vecteurs aval
+ f = np.apply_along_axis(mydot, 2, vy0) # normes carrees vecteurs amont
+ g = np.apply_along_axis(mydot, 2, vy1) # normes carrees vecteurs aval
h = e/(np.sqrt(f*g)) # cosinus
ruptureY = h < cosmin # True si angle > reference
logging.debug("matrice de rupture Y: \n%s",ruptureY)
rupY = [x for x in range(len(nodelines)-2) if np.prod(ruptureY[x, :])]
logging.debug("lignes de rupture: %s",rupY)
if (len(rupX)*len(rupY)) > 0:
- logging.critical("""Cas non traité: présence d'angles vifs dans 2 directions,
- lors de la reconstitution des faces géométriques dans la zone remaillée""")
+ logging.critical("""Cas non traite: presence d'angles vifs dans 2 directions,
+ lors de la reconstitution des faces geometriques dans la zone remaillee""")
mats = []
bordsPartages = []
ifin = 0
else:
ifin = imax
- bordsPartages.append([imin,ifin]) # les indices différents de 0 correspondent à des bords partagés
+ bordsPartages.append([imin,ifin]) # les indices differents de 0 correspondent a des bords partages
elif (len(rupY)> 0):
rupY.append(mat.shape[0]-1)
for i, index in enumerate(rupY):
ifin = 0
else:
ifin = imax
- bordsPartages.append([imin,ifin]) # les indices différents de 0 correspondent à des bords partagés
+ bordsPartages.append([imin,ifin]) # les indices differents de 0 correspondent a des bords partages
else:
mats.append(mat)
- bordsPartages.append([0,0]) # les indices différents de 0 correspondent à des bords partagés
+ bordsPartages.append([0,0]) # les indices differents de 0 correspondent a des bords partages
curvconts = []
for nmat, amat in enumerate(mats):
curve = geompy.MakeInterpol(nodeList, False, False)
#name = "curve_%d"%i
#geomPublish(initLog.debug, curve, name )
- if len(curvconts) == 0 or len(curves) > 0: # éliminer les doublons de la surface sans découpe
+ if len(curvconts) == 0 or len(curves) > 0: # eliminer les doublons de la surface sans decoupe
curvconts.append(nodeList)
curves.append(curve)
if bordsPartages[nmat][0] :
- bordsPartages[nmat][0] = curves[0] # la première ligne est un bord partagé
+ bordsPartages[nmat][0] = curves[0] # la premiere ligne est un bord partage
else:
bordsPartages[nmat][0] = None
if bordsPartages[nmat][1] :
- bordsPartages[nmat][1] = curves[-1] # la dernière ligne est un bord partagé
+ bordsPartages[nmat][1] = curves[-1] # la derniere ligne est un bord partage
else:
bordsPartages[nmat][1] = None
filling = geompy.MakeFilling(geompy.MakeCompound(curves), 2, 5, 0.0001, 0.0001, 0, GEOM.FOM_Default, True)
pointIn_z = shapeFissureParams['pointIn_z']
if pointExplicite:
cdg = geompy.MakeVertex(pointIn_x, pointIn_y, pointIn_z)
- logging.debug("orientation filling par point intérieur %s", (pointIn_x, pointIn_y, pointIn_z))
+ logging.debug("orientation filling par point interieur %s", (pointIn_x, pointIn_y, pointIn_z))
vecteurDefaut = geompy.MakeVector(cdg, vertex)
if 'convexe' in shapeFissureParams:
isConvexe = shapeFissureParams['convexe']
- logging.debug("orientation filling par indication de convexité %s", isConvexe)
+ logging.debug("orientation filling par indication de convexite %s", isConvexe)
cdg = geompy.MakeCDG(filling)
if isConvexe:
vecteurDefaut = geompy.MakeVector(cdg, vertex)
idFilToCont.append(icont)
bords_Partages += bordsPartages
pass # --- loop on mats
- # --- reconstruction des faces continues à partir des listes de noeuds
- # les courbes doivent suivre la courbure pour éviter les oscillations
- if icont == iface - 1: # pas de découpe, on garde la même face
+ # --- reconstruction des faces continues a partir des listes de noeuds
+ # les courbes doivent suivre la courbure pour eviter les oscillations
+ if icont == iface - 1: # pas de decoupe, on garde la meme face
fillcont = fillings[-1]
else:
nbLignes = len(curvconts[0])
return np.dot(a,a)
# -----------------------------------------------------------------------------
-# --- groupe de quadrangles de face transformé en face géométrique par filling
+# --- groupe de quadrangles de face transforme en face geometrique par filling
def quadranglesToShapeNoCorner(meshQuad, shapeFissureParams, centreFondFiss):
"""
- groupe de quadrangles de face transformée en faces géométriques par filling
- on part de quadrangles définissant une zone a 4 cotés (convexe), et on reconstitue n lignes de p points.
- Ces n lignes de p points sont transformées en n courbes géométriques,
- à partir desquelles on reconstitue une surface géométrique.
- Il peut y avoir plusieurs faces géométriques reconstituées, si on fournit des groupes de quadrangles non connexes.
- On détecte les angles vifs, pour conserver des arêtes vives délimitant des faces connexes.
- @param meshQuad : maillages constitué de quadrangles constituant une ou plusieurs zones convexes
- @return (fillings, noeuds_Bords) : liste de geomObject, listes des bords (bord = liste ordonnée de noeuds (geomObject))
+ groupe de quadrangles de face transformee en faces geometriques par filling
+ on part de quadrangles definissant une zone a 4 cotes (convexe), et on reconstitue n lignes de p points.
+ Ces n lignes de p points sont transformees en n courbes geometriques,
+ a partir desquelles on reconstitue une surface geometrique.
+ Il peut y avoir plusieurs faces geometriques reconstituees, si on fournit des groupes de quadrangles non connexes.
+ On detecte les angles vifs, pour conserver des aretes vives delimitant des faces connexes.
+ @param meshQuad : maillages constitue de quadrangles constituant une ou plusieurs zones convexes
+ @return (fillings, noeuds_Bords) : liste de geomObject, listes des bords (bord = liste ordonnee de noeuds (geomObject))
"""
logging.info("start")
isVecteurDefaut = True
vecteurDefaut = shapeFissureParams['vecteurDefaut']
- fillings = [] # les faces reconstituées, découpées selon les arêtes vives
+ fillings = [] # les faces reconstituees, decoupees selon les aretes vives
noeuds_bords = [] #
- bords_Partages = [] # contient a la fin les courbes correspondant aux arêtes vives
- fillconts = [] # les faces reconstituées, sans découpage selon les arêtes vives
- idFilToCont = [] # index face découpée vers face sans découpe
- iface = 0 # index face découpée
+ bords_Partages = [] # contient a la fin les courbes correspondant aux aretes vives
+ fillconts = [] # les faces reconstituees, sans decoupage selon les aretes vives
+ idFilToCont = [] # index face decoupee vers face sans decoupe
+ iface = 0 # index face decoupee
icont = 0 # index face continue
allNodeIds = meshQuad.GetNodesId()
elem = elems[0]
break;
idStart = idNode # le noeud de coin
- elemStart = elem # l'élément quadrangle au coin
+ elemStart = elem # l'element quadrangle au coin
xyz = meshQuad.GetNodeXYZ(idStart)
logging.debug("idStart %s, coords %s", idStart, str(xyz))
debutLigne = True
nodeline = []
elemline = []
- while ligneIncomplete: # compléter la ligne de points
+ while ligneIncomplete: # completer la ligne de points
nodeline.append(idNode)
allNodeIds.remove(idNode)
elemline.append(elem)
nodes = meshQuad.GetElemNodes(elem)
- i = nodes.index(idNode) # repérer l'index du noeud courant (i) dans l'élément quadrangle (0 a 3)
- if agauche: # déterminer le noeud suivant (j) et celui opposé (k) dans le quadrangle
+ i = nodes.index(idNode) # reperer l'index du noeud courant (i) dans l'element quadrangle (0 a 3)
+ if agauche: # determiner le noeud suivant (j) et celui oppose (k) dans le quadrangle
if i < 3:
j = i+1
else:
else:
k = 3
isuiv = nodes[j] #noeud suivant
- iapres = nodes[k] #noeud opposé
+ iapres = nodes[k] #noeud oppose
if debutLigne:
debutLigne = False
- # précédent a trouver, dernière ligne : précédent au lieu de suivant
+ # precedent a trouver, derniere ligne : precedent au lieu de suivant
if agauche:
if i > 0:
iprec = nodes[i -1]
logging.debug("nodelines = %s", nodelines)
longueur = [len(val) for val in nodelines]
logging.debug("longueur = %s", longueur)
- # on a constitué une liste de lignes de points connexes
+ # on a constitue une liste de lignes de points connexes
logging.debug("dimensions [%s, %s]", len(nodelines), len(nodeline))
- # stockage des coordonnées dans un tableau numpy
+ # stockage des coordonnees dans un tableau numpy
mat = np.zeros((len(nodelines), len(nodeline), 3))
for i, ligne in enumerate(nodelines):
for j, nodeId in enumerate(ligne):
mat[i,j] = meshQuad.GetNodeXYZ(nodeId)
- logging.debug("matrice de coordonnées: \n%s",mat)
+ logging.debug("matrice de coordonnees: \n%s",mat)
logging.debug("dimensions %s", mat.shape)
- # recherche d'angles supérieurs a un seuil sur une ligne : angle entre deux vecteurs successifs
- cosmin = math.cos(math.pi/4.) # TODO: angle reference en paramètre
+ # recherche d'angles superieurs a un seuil sur une ligne : angle entre deux vecteurs successifs
+ cosmin = math.cos(math.pi/4.) # TODO: angle reference en parametre
vecx = mat[:, 1:, :] - mat[:, :-1, :] # vecteurs selon direction "x"
vx0 = vecx[:, :-1, :] # vecteurs amont
vx1 = vecx[:, 1:, :] # vecteurs aval
e = np.einsum('ijk,ijk->ij', vx0, vx1) # produit scalaire des vecteurs
- f = np.apply_along_axis(mydot, 2, vx0) # normes carrées vecteurs amont
- g = np.apply_along_axis(mydot, 2, vx1) # normes carrées vecteurs aval
+ f = np.apply_along_axis(mydot, 2, vx0) # normes carrees vecteurs amont
+ g = np.apply_along_axis(mydot, 2, vx1) # normes carrees vecteurs aval
h = e/(np.sqrt(f*g)) # cosinus
ruptureX = h < cosmin # True si angle > reference
logging.debug("matrice de rupture X: \n%s",ruptureX)
rupX = [x for x in range(len(nodeline)-2) if np.prod(ruptureX[:,x])]
logging.debug("colonnes de rupture: %s",rupX)
- # recherche d'angles supérieurs a un seuil sur une colonne : angle entre deux vecteurs successifs
+ # recherche d'angles superieurs a un seuil sur une colonne : angle entre deux vecteurs successifs
vecy = mat[ 1:, :, :] - mat[:-1, :, :] # vecteurs selon direction "y"
vy0 = vecy[:-1, :, :] # vecteurs amont
vy1 = vecy[ 1:, :, :] # vecteurs aval
e = np.einsum('ijk,ijk->ij', vy0, vy1) # produit scalaire des vecteurs
- f = np.apply_along_axis(mydot, 2, vy0) # normes carrées vecteurs amont
- g = np.apply_along_axis(mydot, 2, vy1) # normes carrées vecteurs aval
+ f = np.apply_along_axis(mydot, 2, vy0) # normes carrees vecteurs amont
+ g = np.apply_along_axis(mydot, 2, vy1) # normes carrees vecteurs aval
h = e/(np.sqrt(f*g)) # cosinus
ruptureY = h < cosmin # True si angle > reference
logging.debug("matrice de rupture Y: \n%s",ruptureY)
rupY = [x for x in range(len(nodelines)-2) if np.prod(ruptureY[x, :])]
logging.debug("lignes de rupture: %s",rupY)
if (len(rupX)*len(rupY)) > 0:
- logging.critical("""Cas non traité: présence d'angles vifs dans 2 directions,
- lors de la reconstitution des faces géométriques dans la zone remaillée""")
+ logging.critical("""Cas non traite: presence d'angles vifs dans 2 directions,
+ lors de la reconstitution des faces geometriques dans la zone remaillee""")
mats = []
bordsPartages = []
ifin = 0
else:
ifin = imax
- bordsPartages.append([imin,ifin]) # les indices différents de 0 correspondent à des bords partagés
+ bordsPartages.append([imin,ifin]) # les indices differents de 0 correspondent a des bords partages
elif (len(rupY)> 0):
rupY.append(mat.shape[0]-1)
for i, index in enumerate(rupY):
ifin = 0
else:
ifin = imax
- bordsPartages.append([imin,ifin]) # les indices différents de 0 correspondent à des bords partagés
+ bordsPartages.append([imin,ifin]) # les indices differents de 0 correspondent a des bords partages
else:
mats.append(mat)
- bordsPartages.append([0,0]) # les indices différents de 0 correspondent à des bords partagés
+ bordsPartages.append([0,0]) # les indices differents de 0 correspondent a des bords partages
curvconts = []
for nmat, amat in enumerate(mats):
curve = geompy.MakeInterpol(nodeList, False, False)
#name = "curve_%d"%i
#geomPublish(initLog.debug, curve, name )
- if len(curvconts) == 0 or len(curves) > 0: # éliminer les doublons de la surface sans découpe
+ if len(curvconts) == 0 or len(curves) > 0: # eliminer les doublons de la surface sans decoupe
curvconts.append(nodeList)
curves.append(curve)
if bordsPartages[nmat][0] :
- bordsPartages[nmat][0] = curves[0] # la première ligne est un bord partagé
+ bordsPartages[nmat][0] = curves[0] # la premiere ligne est un bord partage
else:
bordsPartages[nmat][0] = None
if bordsPartages[nmat][1] :
- bordsPartages[nmat][1] = curves[-1] # la dernière ligne est un bord partagé
+ bordsPartages[nmat][1] = curves[-1] # la derniere ligne est un bord partage
else:
bordsPartages[nmat][1] = None
filling = geompy.MakeFilling(geompy.MakeCompound(curves), 2, 5, 0.0001, 0.0001, 0, GEOM.FOM_Default, True)
pointIn_z = shapeFissureParams['pointIn_z']
if pointExplicite:
cdg = geompy.MakeVertex(pointIn_x, pointIn_y, pointIn_z)
- logging.debug("orientation filling par point intérieur %s", (pointIn_x, pointIn_y, pointIn_z))
+ logging.debug("orientation filling par point interieur %s", (pointIn_x, pointIn_y, pointIn_z))
vecteurDefaut = geompy.MakeVector(cdg, vertex)
if 'convexe' in shapeFissureParams:
isConvexe = shapeFissureParams['convexe']
- logging.debug("orientation filling par indication de convexité %s", isConvexe)
+ logging.debug("orientation filling par indication de convexite %s", isConvexe)
cdg = geompy.MakeCDG(filling)
if isConvexe:
vecteurDefaut = geompy.MakeVector(cdg, vertex)
bords_Partages += bordsPartages
logging.debug("bords_Partages = %s", bords_Partages)
pass # --- loop on mats
- # --- reconstruction des faces continues à partir des listes de noeuds
- # les courbes doivent suivre la courbure pour éviter les oscillations
- if icont == iface - 1: # pas de découpe, on garde la même face
+ # --- reconstruction des faces continues a partir des listes de noeuds
+ # les courbes doivent suivre la courbure pour eviter les oscillations
+ if icont == iface - 1: # pas de decoupe, on garde la meme face
fillcont = fillings[-1]
else:
nbLignes = len(curvconts[0])
from .listOfExtraFunctions import createLinesFromMesh
# -----------------------------------------------------------------------------
-# --- groupe de quadrangles de face transformé en face géométrique par filling
+# --- groupe de quadrangles de face transforme en face geometrique par filling
def quadranglesToShapeWithCorner(meshQuad, shapeDefaut, shapeFissureParams, centreFondFiss, listOfCorners):
""" """
- # TODO: rédiger la docstring
+ # TODO: rediger la docstring
logging.info("start")
setOfNodes = []
setOfLines = []
listOfEdges = []
- # On crée une liste contenant le maillage de chaque face.
+ # On cree une liste contenant le maillage de chaque face.
listOfNewMeshes = createNewMeshesFromCorner(meshQuad, listOfCorners)
for msh in listOfNewMeshes:
- # On crée une liste de noeuds correspondant aux faces suivant
- # le modèle liste[face][ligne][noeud].
+ # On cree une liste de noeuds correspondant aux faces suivant
+ # le modele liste[face][ligne][noeud].
lines = createLinesFromMesh(msh, listOfCorners[0])
setOfNodes.append(lines)
for face in setOfNodes:
tmpFace = []
for line in face:
- # On possède l'information 'ID' de chaque noeud composant chaque
- # ligne de chaque face. A partir de l'ID, on crée un vertex. Un
+ # On possede l'information 'ID' de chaque noeud composant chaque
+ # ligne de chaque face. A partir de l'ID, on cree un vertex. Un
# ensemble de vertices constitue une ligne. Un ensemble de lignes
# constitue une face.
tmpCoords = [meshQuad.GetNodeXYZ(node) for node in line]
for i, face in enumerate(setOfLines):
# A partir des lignes de chaque face,
- # on recrée un objet GEOM temporaire par filling.
+ # on recree un objet GEOM temporaire par filling.
filling = geompy.MakeFilling(geompy.MakeCompound(face), 2, 5, 0.0001, 0.0001, 0, GEOM.FOM_Default, True)
geomPublish(initLog.debug, filling, 'filling_{0}'.format(i + 1))
tmpFillings.append(filling)
for face in setOfNodes:
- # On prend la première ligne qui correspond aux bords partagés
+ # On prend la premiere ligne qui correspond aux bords partages
listOfEdges.append(face[0])
for edge in listOfEdges:
- # On utilise les points de bords pour créer des aretes vives
+ # On utilise les points de bords pour creer des aretes vives
tmpCoords = [meshQuad.GetNodeXYZ(node) for node in list(edge)]
tmpPoints = [geompy.MakeVertex(val[0], val[1], val[2]) for val in tmpCoords]
line = geompy.MakeInterpol(tmpPoints, False, False)
# geompy.addToStudyInFather(filling, line, 'line_{0}'.format(j + 1))
return fillings, noeuds_bords, bords_Partages, fillconts, idFilToCont
-
\ No newline at end of file
+
def restreintFaceFissure(shapeDefaut, facesDefaut, pointInterne):
"""
restriction de la face de fissure au domaine solide
- partition face fissure étendue par fillings
+ partition face fissure etendue par fillings
"""
logging.info('start')
partShapeDefaut = geompy.MakePartition([shapeDefaut], facesDefaut, [], [], geompy.ShapeType["FACE"], 0, [], 0)
facesPortFissure = distfaces[0][2]
else:
try:
- facesPartShapeDefautSorted, minSurf, maxSurf = sortFaces(facesPartShapeDefaut) # la face de fissure dans le volume doit être la plus grande
+ facesPartShapeDefautSorted, minSurf, maxSurf = sortFaces(facesPartShapeDefaut) # la face de fissure dans le volume doit etre la plus grande
except:
texte = "Restriction de la face de fissure au domaine solide impossible.<br>"
texte += "Causes possibles :<ul>"
- texte += "<li>La face de fissure est tangente à la paroi solide."
- texte += "Elle doit déboucher franchement, sans que la surface dehors ne devienne plus grande que la surface dans le solide.</li>"
- texte += "<li>le prémaillage de la face de fissure est trop grossier, les mailles à enlever dans le maillage sain "
- texte += "n'ont pas toutes été détectées.</li></ul>"
+ texte += "<li>La face de fissure est tangente a la paroi solide."
+ texte += "Elle doit deboucher franchement, sans que la surface dehors ne devienne plus grande que la surface dans le solide.</li>"
+ texte += "<li>le premaillage de la face de fissure est trop grossier, les mailles a enlever dans le maillage sain "
+ texte += "n'ont pas toutes ete detectees.</li></ul>"
raise fissError(traceback.extract_stack(),texte)
- logging.debug("surfaces faces fissure étendue, min %s, max %s", minSurf, maxSurf)
+ logging.debug("surfaces faces fissure etendue, min %s, max %s", minSurf, maxSurf)
facesPortFissure = facesPartShapeDefautSorted[-1]
geomPublish(initLog.debug, facesPortFissure, "facesPortFissure")
O, OX, OY, OZ = triedreBase()
# -----------------------------------------------------------------------------
-# --- operateur de rotation translation d'un objet centré à l'origine
+# --- operateur de rotation translation d'un objet centre a l'origine
def rotTrans(objet, orientation, point, normal, trace = False):
"""
- Déplacement par rotation translation d'un objet centré à l'origine, vers un point de la surface de la pièce saine
- dans laquelle on insère le défaut.
- @param objet : objet original centré à l'origine (geomObject)
- @param orientation : rotation selon OX de l'objet original (degrés)
- @param point : le point qui sera le centre de l'objet déplacé (geomObject), en général sur la surface de la pièce saine
- @param normal : la normale à la surface de la pièce saine au point central (geomObject)
- @return trans : objet transformé (geomObject)
+ Deplacement par rotation translation d'un objet centre a l'origine, vers un point de la surface de la piece saine
+ dans laquelle on insere le defaut.
+ @param objet : objet original centre a l'origine (geomObject)
+ @param orientation : rotation selon OX de l'objet original (degres)
+ @param point : le point qui sera le centre de l'objet deplace (geomObject), en general sur la surface de la piece saine
+ @param normal : la normale a la surface de la piece saine au point central (geomObject)
+ @return trans : objet transforme (geomObject)
"""
logging.info("start")
planXY = geompy.MakePlaneLCS(None, 2000, 1)
from . import initLog
# -----------------------------------------------------------------------------
-# --- construction d'une shape de dectection des éléments à modifier suite à la la duplication des noeuds de la face fissure (d'un coté de la face)
+# --- construction d'une shape de dectection des elements a modifier suite a la la duplication des noeuds de la face fissure (d'un cote de la face)
def shapeSurFissure(facesFissure):
"""
from .geomsmesh import geompy
# -----------------------------------------------------------------------------
-# --- identification des shapes modifiées par la duplication des noeuds de la face fissure (d'un coté de la face)
+# --- identification des shapes modifiees par la duplication des noeuds de la face fissure (d'un cote de la face)
def shapesSurFissure(blocPartition, plane1, faceFissure, gencnt):
"""
def sortGeneratrices(tore, geners):
"""
- tri des 3 edges 'génératrices' selon leur longueur.
+ tri des 3 edges 'generatrices' selon leur longueur.
@param tore
@param les edges 'generatrices'
- @return (genext, genint, gencnt) les 3 edges, de la plus grande à la plus petite
+ @return (genext, genint, gencnt) les 3 edges, de la plus grande a la plus petite
"""
logging.info("start")
@param allonge :rapport grand rayon / petit rayon
@param rayTore :rayon du tore construit autour de la generatrice de l'ellipse
@return (generatrice, FaceGenFiss, Pipe_1, FaceFissure, Plane_1, Pipe1Part) : ellipse, section du tore,
- tore plein, face plane de le fissure, plan de la fissure, tore partitioné par le plan de fissure.
+ tore plein, face plane de le fissure, plan de la fissure, tore partitione par le plan de fissure.
"""
logging.info("start ", minRad, allonge, rayTore)
def trouveEdgesFissPeau(facesInside, facesOnside, edgesPipeIn, edgesFondIn, partitionPeauFissFond, edgesFissExtPeau):
"""
- pour les faces de peau sans extremité débouchante de fissure, il faut recenser les edges de fissure sur la face de peau
+ pour les faces de peau sans extremite debouchante de fissure, il faut recenser les edges de fissure sur la face de peau
"""
logging.info('start')
name="edgesFissExtPeau%d"%j
geomPublishInFather(initLog.debug,partitionPeauFissFond, edgesPeauFis[0], name)
j += 1
- return edgesFissExtPeau
\ No newline at end of file
+ return edgesFissExtPeau
from .geomsmesh import geompy
# -----------------------------------------------------------------------------
-# --- calcul de la position d'une shape par rapport à une face (dessus, dessous, sur la surface même)
+# --- calcul de la position d'une shape par rapport a une face (dessus, dessous, sur la surface meme)
def whichSide(face, obj, tol = 1.e-3):
"""
- Position d'un objet par rapport a une face (non nécessairement plane).
- L'objet est supposé situé entierement d'un coté de la face,
+ Position d'un objet par rapport a une face (non necessairement plane).
+ L'objet est suppose situe entierement d'un cote de la face,
ou lui appartenant totalement (objets traversants non pris en compte)
- renvoie 1 si 'objet est du coté de la normale à la face,
- -1 de l'autre coté, 0 si il est sur la face
+ renvoie 1 si 'objet est du cote de la normale a la face,
+ -1 de l'autre cote, 0 si il est sur la face
"""
logging.debug('start')
side = 0
from .geomsmesh import geompy
# -----------------------------------------------------------------------------
-# --- calcul de la position d'une shape par rapport à une face (dessus, dessous, sur la surface même)
+# --- calcul de la position d'une shape par rapport a une face (dessus, dessous, sur la surface meme)
def whichSideMulti(facerefs, ifil, obj, centre, tol = 1.e-3):
"""
- Position d'un objet par rapport a un ensemble de faces (non nécessairement planes).
- Ces faces délimitent partiellement un volume, le point "centre" est supposé dans le volume
- L'objet est supposé situé entierement d'un coté des faces,
- ou appartenant totalement à une face (objets traversants non pris en compte)
+ Position d'un objet par rapport a un ensemble de faces (non necessairement planes).
+ Ces faces delimitent partiellement un volume, le point "centre" est suppose dans le volume
+ L'objet est suppose situe entierement d'un cote des faces,
+ ou appartenant totalement a une face (objets traversants non pris en compte)
renvoie 1 si 'objet est dedans (inside),
-1 dehors (outside), 0 si il est sur une face d'index ifil
"""
break
else:
nbMiss += 1
- pass # peut-être inside, tester les autres faces
+ pass # peut-etre inside, tester les autres faces
else:
if i == ifil:
- nbOnRef +=1 # le point est sur la face de référence, on continue avec les autres points
+ nbOnRef +=1 # le point est sur la face de reference, on continue avec les autres points
break
else:
- nbOnOther += 1 # le point est sur une autre face, mais il peut aussi être sur la face de référence...
+ nbOnOther += 1 # le point est sur une autre face, mais il peut aussi etre sur la face de reference...
pass # on peut tester les autres faces
if nbMiss == len(facerefs):
side = 1 # inside
from .geomsmesh import geompy
# -----------------------------------------------------------------------------
-# --- calcul de la position d'une shape par rapport à une face (dessus, dessous, sur la surface même)
+# --- calcul de la position d'une shape par rapport a une face (dessus, dessous, sur la surface meme)
def whichSideVertex(face, vertex, tol = 1.e-3):
"""
- Position d'un vertex par rapport a une face (non nécessairement plane).
- renvoie 1 si le vertex est du coté de la normale à la face,
- -1 de l'autre coté, 0 si il est sur la face
+ Position d'un vertex par rapport a une face (non necessairement plane).
+ renvoie 1 si le vertex est du cote de la normale a la face,
+ -1 de l'autre cote, 0 si il est sur la face
"""
#logging.info('start')
side = 0
</rect>
</property>
<property name="windowTitle">
- <string>Génération de coude avec fissure</string>
+ <string>Generation de coude avec fissure</string>
</property>
<layout class="QGridLayout" name="gridLayout_8">
<item row="0" column="0">
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
- <string>Géométrie</string>
+ <string>Geometrie</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="dsb_angle">
<property name="toolTip">
- <string>Valeur de l'angle du coude en degrés</string>
+ <string>Valeur de l'angle du coude en degres</string>
</property>
<property name="decimals">
<number>5</number>
<item row="4" column="1">
<widget class="QDoubleSpinBox" name="dsb_epais">
<property name="toolTip">
- <string>Valeur de l’épaisseur du coude et des embouts</string>
+ <string>Valeur de l’epaisseur du coude et des embouts</string>
</property>
<property name="decimals">
<number>5</number>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="dsb_lTubeP2">
<property name="toolTip">
- <string>Valeur de la longueur de l’embout P2 à l’extrémité duquel seront appliqués les chargements</string>
+ <string>Valeur de la longueur de l’embout P2 a l’extremite duquel seront appliques les chargements</string>
</property>
<property name="decimals">
<number>5</number>
<item row="5" column="1">
<widget class="QDoubleSpinBox" name="dsb_dext">
<property name="toolTip">
- <string>Valeur du diamètre externe du coude et des embouts droits</string>
+ <string>Valeur du diametre externe du coude et des embouts droits</string>
</property>
<property name="decimals">
<number>5</number>
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="dsb_lTubeP1">
<property name="toolTip">
- <string>Valeur de la longueur de l’embout P1 à l’extrémité duquel seront appliqués les chargements</string>
+ <string>Valeur de la longueur de l’embout P1 a l’extremite duquel seront appliques les chargements</string>
</property>
<property name="decimals">
<number>5</number>
<item>
<widget class="QCheckBox" name="cb_optDiscrSain">
<property name="toolTip">
- <string>Paramètres optionnels de discretisation</string>
+ <string>Parametres optionnels de discretisation</string>
</property>
<property name="text">
<string>Options de discretisation</string>
<item row="0" column="1">
<widget class="QSpinBox" name="sb_nbAxeTubeP1">
<property name="toolTip">
- <string>Nombre d’éléments le long de l’embout P1</string>
+ <string>Nombre d’elements le long de l’embout P1</string>
</property>
<property name="maximum">
<number>10000</number>
<item row="1" column="1">
<widget class="QSpinBox" name="sb_nbAxeTubeP2">
<property name="toolTip">
- <string>Nombre d’éléments le long de l’embout P2</string>
+ <string>Nombre d’elements le long de l’embout P2</string>
</property>
<property name="maximum">
<number>10000</number>
<item row="2" column="1">
<widget class="QSpinBox" name="sb_nbAxeCoude">
<property name="toolTip">
- <string>Nombre d’éléments le long de l’axe du coude</string>
+ <string>Nombre d’elements le long de l’axe du coude</string>
</property>
<property name="maximum">
<number>10000</number>
<item row="3" column="1">
<widget class="QSpinBox" name="sb_nbCirconf">
<property name="toolTip">
- <string><html><head/><body><p>Nombre d’éléments le long de la circonférence</p><p>(nombre pair)</p></body></html></string>
+ <string><html><head/><body><p>Nombre d’elements le long de la circonference</p><p>(nombre pair)</p></body></html></string>
</property>
<property name="maximum">
<number>10000</number>
<item row="4" column="1">
<widget class="QSpinBox" name="sb_nbEpaisseur">
<property name="toolTip">
- <string>Nombre d'éléments dans l'épaisseur</string>
+ <string>Nombre d'elements dans l'epaisseur</string>
</property>
<property name="maximum">
<number>10000</number>
<item>
<widget class="QGroupBox" name="groupBox_5">
<property name="title">
- <string>Géométrie fissure</string>
+ <string>Geometrie fissure</string>
</property>
<layout class="QGridLayout" name="gridLayout_12">
<item row="0" column="0">
<item>
<widget class="QRadioButton" name="rb_fissInt">
<property name="toolTip">
- <string><html><head/><body><p>Fissure positionnée sur la face interne</p></body></html></string>
+ <string><html><head/><body><p>Fissure positionnee sur la face interne</p></body></html></string>
</property>
<property name="text">
<string>fissure interne</string>
<item>
<widget class="QRadioButton" name="rb_fissExt">
<property name="toolTip">
- <string><html><head/><body><p>Fissure positionnée sur la face externe</p></body></html></string>
+ <string><html><head/><body><p>Fissure positionnee sur la face externe</p></body></html></string>
</property>
<property name="text">
<string>fissure externe</string>
<item row="1" column="0">
<widget class="QCheckBox" name="cb_forceEllipse">
<property name="toolTip">
- <string><html><head/><body><p>Forcer une fissure de forme elliptique, même si elle est longue</p></body></html></string>
+ <string><html><head/><body><p>Forcer une fissure de forme elliptique, meme si elle est longue</p></body></html></string>
</property>
<property name="accessibleDescription">
<string/>
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="dsb_azimut">
<property name="toolTip">
- <string>Valeur de la position circonférentielle du centre de la fissure comptée positivement en degrés à partir de l’extrados jusqu’à l’intrados en passant par le flanc gauche</string>
+ <string>Valeur de la position circonferentielle du centre de la fissure comptee positivement en degres a partir de l’extrados jusqu’a l’intrados en passant par le flanc gauche</string>
</property>
<property name="decimals">
<number>5</number>
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="dsb_profondeur">
<property name="toolTip">
- <string><html><head/><body><p>Profondeur de la fissure :</p><p>distance maximale entre le fond de fissure et la peau interne ou externe sur laquelle débouche la fissure</p></body></html></string>
+ <string><html><head/><body><p>Profondeur de la fissure :</p><p>distance maximale entre le fond de fissure et la peau interne ou externe sur laquelle debouche la fissure</p></body></html></string>
</property>
<property name="decimals">
<number>5</number>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="dsb_orientation">
<property name="toolTip">
- <string>Valeur de l’angle en degrés formé par le grand axe de la fissure et la génératrice du coude donnant ainsi l’orientation du défaut</string>
+ <string>Valeur de l’angle en degres forme par le grand axe de la fissure et la generatrice du coude donnant ainsi l’orientation du defaut</string>
</property>
<property name="decimals">
<number>5</number>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="dsb_longueur">
<property name="toolTip">
- <string>Longueur du grand axe de la fissure mesurée sur le coude en peau interne ou externe, suivant la peau sur laquelle se trouve la fissure</string>
+ <string>Longueur du grand axe de la fissure mesuree sur le coude en peau interne ou externe, suivant la peau sur laquelle se trouve la fissure</string>
</property>
<property name="decimals">
<number>5</number>
<item row="0" column="0">
<widget class="QRadioButton" name="rb_absCurv">
<property name="toolTip">
- <string>Définition de la position longitudinale par une abscisse curiviligne</string>
+ <string>Definition de la position longitudinale par une abscisse curiviligne</string>
</property>
<property name="text">
<string>ABS_CURV</string>
<item row="1" column="0">
<widget class="QRadioButton" name="rb_posiAngul">
<property name="toolTip">
- <string>Définition de la position longitudinale par un angle</string>
+ <string>Definition de la position longitudinale par un angle</string>
</property>
<property name="text">
<string>POSI_ANGUL</string>
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="dsb_absCurv">
<property name="toolTip">
- <string><html><head/><body><p>Valeur de la position longitudinale du centre de la fissure définie par rapport à l'interface de l'embout P1 :</p><p>Abcisse curviligne le long de l'axe du coude, sur la peau interne ou externe, selon la position de la fissure.</p><p><br/></p></body></html></string>
+ <string><html><head/><body><p>Valeur de la position longitudinale du centre de la fissure definie par rapport a l'interface de l'embout P1 :</p><p>Abcisse curviligne le long de l'axe du coude, sur la peau interne ou externe, selon la position de la fissure.</p><p><br/></p></body></html></string>
</property>
<property name="decimals">
<number>5</number>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="dsb_posiAngul">
<property name="toolTip">
- <string><html><head/><body><p>Valeur de la position longitudinale du centre de la fissure définie par rapport à l'interface de l'embout P1 :</p><p>Angle en degrés formé par la section contenant le centre de la fissure et l'interface de l'embout P1.</p><p><br/></p></body></html></string>
+ <string><html><head/><body><p>Valeur de la position longitudinale du centre de la fissure definie par rapport a l'interface de l'embout P1 :</p><p>Angle en degres forme par la section contenant le centre de la fissure et l'interface de l'embout P1.</p><p><br/></p></body></html></string>
</property>
<property name="decimals">
<number>5</number>
<item row="2" column="1">
<widget class="QSpinBox" name="sb_nbCouronne">
<property name="toolTip">
- <string><html><head/><body><p>Pipe rayonnant construit sur le fond de fissure :</p><p>nombre de couronnes du maillage rayonnant autour de la ligne de fond de fissure, y compris la couronne centrale formée de prismes.</p></body></html></string>
+ <string><html><head/><body><p>Pipe rayonnant construit sur le fond de fissure :</p><p>nombre de couronnes du maillage rayonnant autour de la ligne de fond de fissure, y compris la couronne centrale formee de prismes.</p></body></html></string>
</property>
<property name="minimum">
<number>1</number>
<item>
<widget class="QCheckBox" name="cb_optDiscrFiss">
<property name="toolTip">
- <string>Paramètres optionnels de discrétisation</string>
+ <string>Parametres optionnels de discretisation</string>
</property>
<property name="text">
<string>Options de discretisation</string>
<item>
<widget class="QDoubleSpinBox" name="dsb_aretesFaceFissure">
<property name="toolTip">
- <string><html><head/><body><p>Faces externes de la zone à remailler.</p><p>Mailage en triangles : valeur cible des arêtes.</p></body></html></string>
+ <string><html><head/><body><p>Faces externes de la zone a remailler.</p><p>Mailage en triangles : valeur cible des aretes.</p></body></html></string>
</property>
<property name="decimals">
<number>5</number>
<bool>true</bool>
</property>
<property name="title">
- <string>identification zone à remailler</string>
+ <string>identification zone a remailler</string>
</property>
<layout class="QGridLayout" name="gridLayout_16">
<item row="0" column="0">
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="dsb_influence">
<property name="toolTip">
- <string><html><head/><body><p>La zone remaillée contiendra toutes les mailles du maillage sain à une distance de la face de fissure inférieure à cette valeur.</p></body></html></string>
+ <string><html><head/><body><p>La zone remaillee contiendra toutes les mailles du maillage sain a une distance de la face de fissure inferieure a cette valeur.</p></body></html></string>
</property>
<property name="decimals">
<number>5</number>
<item>
<widget class="QPushButton" name="pb_reset">
<property name="toolTip">
- <string>réinitialisation de tous les paramètres à leur valeur par défaut</string>
+ <string>reinitialisation de tous les parametres a leur valeur par defaut</string>
</property>
<property name="text">
<string>Reset</string>
<item>
<widget class="QPushButton" name="pb_valPrec">
<property name="toolTip">
- <string>réinitialisation de tous les paramètres à leur valeur de la précédente éxécution</string>
+ <string>reinitialisation de tous les parametres a leur valeur de la precedente execution</string>
</property>
<property name="text">
- <string>Précédent</string>
+ <string>Precedent</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_recharger">
<property name="toolTip">
- <string>réinitialisation des paramètres à partir d'un fichier préalablement sauvegardé</string>
+ <string>reinitialisation des parametres a partir d'un fichier prealablement sauvegarde</string>
</property>
<property name="text">
<string>Recharger</string>
<item>
<widget class="QPushButton" name="pb_sauver">
<property name="toolTip">
- <string>sauvegarde des paramètres dans un fichier à choisir</string>
+ <string>sauvegarde des parametres dans un fichier a choisir</string>
</property>
<property name="text">
<string>Sauver</string>
class fissureCoude_ihm(fissureCoude):
"""
- problème de fissure du Coude :
+ probleme de fissure du Coude :
pour version IHM graphique
"""
# ---------------------------------------------------------------------------
def setParamGeometrieSaine(self):
"""
- Paramètres géométriques du tuyau coudé sain:
+ Parametres geometriques du tuyau coude sain:
angleCoude
r_cintr
l_tube_p1
# ---------------------------------------------------------------------------
def setParamShapeFissure(self):
"""
- paramètres de la fissure pour le tuyau coude
- profondeur : 0 < profondeur <= épaisseur
+ parametres de la fissure pour le tuyau coude
+ profondeur : 0 < profondeur <= epaisseur
rayonPipe : rayon du pipe correspondant au maillage rayonnant
- lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par défaut)
+ lenSegPipe : longueur des mailles rayonnantes le long du fond de fissure (= rayonPipe par defaut)
azimut : entre 0 et 360°
alpha : 0 < alpha < angleCoude
longueur : <=2*profondeur ==> force une fissure elliptique (longueur/profondeur = grand axe/petit axe).
- orientation : 0° : longitudinale, 90° : circonférentielle, autre : uniquement fissures elliptiques
- lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris égal à profondeur. A ajuster selon le maillage)
- elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extrémites)
- pointIn_x : optionnel coordonnées x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
+ orientation : 0° : longitudinale, 90° : circonferentielle, autre : uniquement fissures elliptiques
+ lgInfluence : distance autour de la shape de fissure a remailler (si 0, pris egal a profondeur. A ajuster selon le maillage)
+ elliptique : True : fissure elliptique (longueur/profondeur = grand axe/petit axe); False : fissure longue (fond de fissure de profondeur constante, demi-cercles aux extremites)
+ pointIn_x : optionnel coordonnees x d'un point dans le solide, pas trop loin du centre du fond de fissure (idem y,z)
externe : True : fissure face externe, False : fissure face interne
"""
print("setParamShapeFissure", self.nomCas)
# ---------------------------------------------------------------------------
def setParamMaillageFissure(self):
"""
- Paramètres du maillage de la fissure pour le tuyau coudé
- Voir également setParamShapeFissure, paramètres rayonPipe et lenSegPipe.
+ Parametres du maillage de la fissure pour le tuyau coude
+ Voir egalement setParamShapeFissure, parametres rayonPipe et lenSegPipe.
nbSegRad = nombre de couronnes
nbSegCercle = nombre de secteurs
- areteFaceFissure = taille cible de l'arête des triangles en face de fissure.
+ areteFaceFissure = taille cible de l'arete des triangles en face de fissure.
"""
self.maillageFissureParams = dict(nomRep = '.',
nomFicSain = self.nomCas,
<string>Insertion de fissure dans un maillage sain</string>
</property>
<property name="toolTip">
- <string><html><head/><body><p>Insertion d'un maillage de fissure dans un maillage hexaédrique sain.</p><p>Le maillage sain est fourni sous forme de fichier Med.</p><p>La face de fissure est décrite par une géométrie dans un fichier brep.</p><p>La ou les arêtes de fond de fissure sont données par leurs index dans la face de fissure.</p><p>La procédure identfie des mailles saines à enlever et remailler, construit un maillage régulier rayonnant autour de la ligne de fond de fissure, reconstitue les faces externes en triangles, complète la zone à remailler en tétraèdres.</p></body></html></string>
+ <string><html><head/><body><p>Insertion d'un maillage de fissure dans un maillage hexaedrique sain.</p><p>Le maillage sain est fourni sous forme de fichier Med.</p><p>La face de fissure est decrite par une geometrie dans un fichier brep.</p><p>La ou les aretes de fond de fissure sont donnees par leurs index dans la face de fissure.</p><p>La procedure identfie des mailles saines a enlever et remailler, construit un maillage regulier rayonnant autour de la ligne de fond de fissure, reconstitue les faces externes en triangles, complete la zone a remailler en tetraedres.</p></body></html></string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
- <string>maillage sain et géometries de fissure</string>
+ <string>maillage sain et geometries de fissure</string>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="1" column="0">
<item>
<widget class="QLineEdit" name="le_fondfiss">
<property name="toolTip">
- <string><html><head/><body><p>Index des edges décrivant le fond de fissure, dans la face de fissure.</p><p>Sous forme d'une liste Python.</p><p>Exemples : <span style=" font-weight:600; font-style:italic; color:#000080;">[5,9]</span> ou<span style=" font-weight:600;"/><span style=" font-weight:600; font-style:italic; color:#000080;">[3]</span></p><p>(on peut récupérer ces valeurs à l'aide du dialogue de création de groupes d'edges, dans GEOM)</p></body></html></string>
+ <string><html><head/><body><p>Index des edges decrivant le fond de fissure, dans la face de fissure.</p><p>Sous forme d'une liste Python.</p><p>Exemples : <span style=" font-weight:600; font-style:italic; color:#000080;">[5,9]</span> ou<span style=" font-weight:600;"/><span style=" font-weight:600; font-style:italic; color:#000080;">[3]</span></p><p>(on peut recuperer ces valeurs a l'aide du dialogue de creation de groupes d'edges, dans GEOM)</p></body></html></string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="le_maillage">
<property name="toolTip">
- <string><html><head/><body><p>fichier med du maillage sain (hexaèdres)</p></body></html></string>
+ <string><html><head/><body><p>fichier med du maillage sain (hexaedres)</p></body></html></string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="pb_facefiss">
<property name="toolTip">
- <string><html><head/><body><p>sélection du fichier brep (géométrie) décrivant la face de fissure.</p><p>Un champ rouge correspond à un fichier inexistant.</p></body></html></string>
+ <string><html><head/><body><p>selection du fichier brep (geometrie) decrivant la face de fissure.</p><p>Un champ rouge correspond a un fichier inexistant.</p></body></html></string>
</property>
<property name="text">
<string>face fissure</string>
<item row="1" column="1">
<widget class="QLineEdit" name="le_facefiss">
<property name="toolTip">
- <string><html><head/><body><p>fichier brep (géométrie) décrivant la face de fissure.</p></body></html></string>
+ <string><html><head/><body><p>fichier brep (geometrie) decrivant la face de fissure.</p></body></html></string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="pb_maillage">
<property name="toolTip">
- <string><html><head/><body><p>sélection du fichier med du maillage sain (hexaèdres)</p><p>Un champ rouge correspond à un fichier inexistant.</p></body></html></string>
+ <string><html><head/><body><p>selection du fichier med du maillage sain (hexaedres)</p><p>Un champ rouge correspond a un fichier inexistant.</p></body></html></string>
</property>
<property name="text">
<string>maillage sain</string>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
- <string>identification zone à remailler</string>
+ <string>identification zone a remailler</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<item>
<widget class="QDoubleSpinBox" name="dsb_influence">
<property name="toolTip">
- <string><html><head/><body><p>La zone remaillée contiendra toutes les mailles du maillage sain à une distance de la face de fissure inférieure à cette valeur.</p></body></html></string>
+ <string><html><head/><body><p>La zone remaillee contiendra toutes les mailles du maillage sain a une distance de la face de fissure inferieure a cette valeur.</p></body></html></string>
</property>
<property name="decimals">
<number>5</number>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
- <string>prémaillage face fissure</string>
+ <string>premaillage face fissure</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="dsb_meshBrepMin">
<property name="toolTip">
- <string><html><head/><body><p>Pour faciliter la détermination de la zone à remailler, il faut des points sur la face de fissure, suffisament resserrés, en relation avec la taille des mailles du maillage sain.</p><p>Ces points sont obtenus par pré maillage de la face de fissure, en triangles. On donne la taille min et max des triangles.</p></body></html></string>
+ <string><html><head/><body><p>Pour faciliter la determination de la zone a remailler, il faut des points sur la face de fissure, suffisament resserres, en relation avec la taille des mailles du maillage sain.</p><p>Ces points sont obtenus par pre maillage de la face de fissure, en triangles. On donne la taille min et max des triangles.</p></body></html></string>
</property>
<property name="decimals">
<number>5</number>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="dsb_meshBrepMax">
<property name="toolTip">
- <string><html><head/><body><p>Pour faciliter la détermination de la zone à remailler, il faut des points sur la face de fissure, suffisament resserrés, en relation avec la taille des mailles du maillage sain.</p><p>Ces points sont obtenus par pré maillage de la face de fissure, en triangles. On donne la taille min et max des triangles.</p></body></html></string>
+ <string><html><head/><body><p>Pour faciliter la determination de la zone a remailler, il faut des points sur la face de fissure, suffisament resserres, en relation avec la taille des mailles du maillage sain.</p><p>Ces points sont obtenus par pre maillage de la face de fissure, en triangles. On donne la taille min et max des triangles.</p></body></html></string>
</property>
<property name="decimals">
<number>5</number>
<item>
<widget class="QComboBox" name="cb_log">
<property name="toolTip">
- <string><html><head/><body><p>L'affichage de messages pendant le calcul peut aider à la mise au point du maillage. Les messages sont écrits dans un fichier de log, dans le répertoire d'exécution.</p><p>- Le mode <span style=" font-weight:600;">silencieux</span> donne très peu d'information,</p><p>- Le mode <span style=" font-weight:600;">verbeux</span> liste les principales étapes du calcul,</p><p>- Le mode <span style=" font-weight:600;">debug</span> donne un maximum de détail, et publie des objets intermédiaires dans l'étude.</p><p><br/></p></body></html></string>
+ <string><html><head/><body><p>L'affichage de messages pendant le calcul peut aider a la mise au point du maillage. Les messages sont ecrits dans un fichier de log, dans le repertoire d'execution.</p><p>- Le mode <span style=" font-weight:600;">silencieux</span> donne tres peu d'information,</p><p>- Le mode <span style=" font-weight:600;">verbeux</span> liste les principales etapes du calcul,</p><p>- Le mode <span style=" font-weight:600;">debug</span> donne un maximum de detail, et publie des objets intermediaires dans l'etude.</p><p><br/></p></body></html></string>
</property>
<item>
<property name="text">
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="dsb_areteFaceFissure">
<property name="toolTip">
- <string><html><head/><body><p>Faces externes de la zone à remailler.</p><p>Maillage en triangles : valeur cible des arêtes des triangles.</p></body></html></string>
+ <string><html><head/><body><p>Faces externes de la zone a remailler.</p><p>Maillage en triangles : valeur cible des aretes des triangles.</p></body></html></string>
</property>
<property name="decimals">
<number>5</number>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="dsb_aretesVives">
<property name="toolTip">
- <string><html><head/><body><p>Arêtes vives de la zone à remailler.</p><p>Longueur des segments sur ces arêtes.</p><p>Ce paramètre est <span style=" font-weight:600; font-style:italic; color:#2631c1;">optionnel</span> : laissé à 0,</p><p>il est est ajusté automatiquement.</p></body></html></string>
+ <string><html><head/><body><p>Aretes vives de la zone a remailler.</p><p>Longueur des segments sur ces aretes.</p><p>Ce parametre est <span style=" font-weight:600; font-style:italic; color:#2631c1;">optionnel</span> : laisse a 0,</p><p>il est est ajuste automatiquement.</p></body></html></string>
</property>
<property name="decimals">
<number>5</number>
<item row="0" column="0">
<widget class="QPushButton" name="pb_reptrav">
<property name="text">
- <string>répertoire de travail</string>
+ <string>repertoire de travail</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="le_reptrav">
<property name="toolTip">
- <string><html><head/><body><p>Répertoire dans lequel seront rangés le maillage final, les objets intermédiaires, la log d'exécution.</p></body></html></string>
+ <string><html><head/><body><p>Repertoire dans lequel seront ranges le maillage final, les objets intermediaires, la log d'execution.</p></body></html></string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="pb_nomres">
<property name="text">
- <string>nom résultat</string>
+ <string>nom resultat</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="le_nomres">
<property name="toolTip">
- <string><html><head/><body><p>Nom des résultats.</p><p>Le fichier maillage résultat sera rangé dans le répertoire de travail, sous le nom <span style=" font-weight:600; font-style:italic; color:#0055ff;">Nom</span>.med</p><p><br/></p></body></html></string>
+ <string><html><head/><body><p>Nom des resultats.</p><p>Le fichier maillage resultat sera range dans le repertoire de travail, sous le nom <span style=" font-weight:600; font-style:italic; color:#0055ff;">Nom</span>.med</p><p><br/></p></body></html></string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_exemple">
<property name="toolTip">
- <string><html><head/><body><p>génération de jeux de données exemple :</p><p>maillages sain et face de fissure.</p><p>(from blocFissure.materielCasTests import genereMateriel)</p></body></html></string>
+ <string><html><head/><body><p>generation de jeux de donnees exemple :</p><p>maillages sain et face de fissure.</p><p>(from blocFissure.materielCasTests import genereMateriel)</p></body></html></string>
</property>
<property name="text">
<string>Exemple</string>
<item>
<widget class="QPushButton" name="pb_reset">
<property name="toolTip">
- <string>réinitialisation de tous les paramètres à leur valeur par défaut</string>
+ <string>reinitialisation de tous les parametres a leur valeur par defaut</string>
</property>
<property name="text">
<string>Reset</string>
<item>
<widget class="QPushButton" name="pb_valPrec">
<property name="toolTip">
- <string>réinitialisation de tous les paramètres à leur valeur de la précédente éxécution</string>
+ <string>reinitialisation de tous les parametres a leur valeur de la precedente execution</string>
</property>
<property name="text">
- <string>Précédent</string>
+ <string>Precedent</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_recharger">
<property name="toolTip">
- <string>réinitialisation des paramètres à partir d'un fichier préalablement sauvegardé</string>
+ <string>reinitialisation des parametres a partir d'un fichier prealablement sauvegarde</string>
</property>
<property name="text">
<string>Recharger</string>
<item>
<widget class="QPushButton" name="pb_sauver">
<property name="toolTip">
- <string>sauvegarde des paramètres dans un fichier à choisir</string>
+ <string>sauvegarde des parametres dans un fichier a choisir</string>
</property>
<property name="text">
<string>Sauver</string>
<item>
<widget class="QDialogButtonBox" name="bb_OkCancel">
<property name="toolTip">
- <string><html><head/><body><p>OK : lancer le calcul, sans sauver les paramètres.</p><p>Close : fermer le dialogue sans exécution ni sauvegarde.</p><p><br/></p></body></html></string>
+ <string><html><head/><body><p>OK : lancer le calcul, sans sauver les parametres.</p><p>Close : fermer le dialogue sans execution ni sauvegarde.</p><p><br/></p></body></html></string>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
self.ui.lb_calcul.show()
logfile=os.path.join(dico['reptrav'], dico['nomres']+".log")
self.setLogVerbosity(logfile)
- from blocFissure.gmu import geomsmesh # après intialisation log dans setLogVerbosity
- from blocFissure.gmu.casStandard import casStandard # après intialisation log dans setLogVerbosity
+ from blocFissure.gmu import geomsmesh # apres intialisation log dans setLogVerbosity
+ from blocFissure.gmu.casStandard import casStandard # apres intialisation log dans setLogVerbosity
from blocFissure.gmu.fissError import fissError
try:
execInstance = casStandard(dico)
mbox.setText(str(texte))
mbox.exec_()
# except Exception as erreur:
-# print "exception non répertoriée"
+# print "exception non repertoriee"
self.NOK = NOK
self.ui.lb_calcul.hide()
#self.accept()
of the GNU General Public License.
Bibliography:
-- [1] J.-F.Jerier, V.Richefeu, D.Imbault, F.-V. Donzé, “Packing spherical discrete elements for large scale simulations”, Computer Methods in Applied Mechanics and Engineering 199 (2010) 1668–1676.
+- [1] J.-F.Jerier, V.Richefeu, D.Imbault, F.-V. Donze, “Packing spherical discrete elements for large scale simulations”, Computer Methods in Applied Mechanics and Engineering 199 (2010) 1668–1676.
- [2] CGAL, Computational Geometry Algorithms Library. https://gforge.inria.fr.
- [3] EUROPLEXUS: a computer program for the finite element simulation of fluid–structure systems under transient dynamic loading. http://europlexus.jrc.ec.europa.eu, (User’s Manual).
<item>
<widget class="QLabel" name="lblNumericalParameters">
<property name="text">
- <string>Paramètres numériques:</string>
+ <string>Parametres numeriques:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lblParamNbIter">
<property name="text">
- <string>Nb. Itérations</string>
+ <string>Nb. Iterations</string>
</property>
</widget>
</item>