mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-11-12 00:29:17 +05:00
merge manuel developpements Olivier Hoareau
This commit is contained in:
parent
a95ff9b2ce
commit
6b00ce3326
36
src/Tools/blocFissure/AREextradosLauncher.py
Normal file
36
src/Tools/blocFissure/AREextradosLauncher.py
Normal file
@ -0,0 +1,36 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
""" FissureLauncher:
|
||||
Permet de lancer le script 'casStandard'
|
||||
en fonction des paramètres contenus dans 'dicoParams'. """
|
||||
|
||||
#import sys
|
||||
import salome
|
||||
|
||||
#import os
|
||||
#from blocFissure import gmu
|
||||
from blocFissure.gmu import initLog
|
||||
initLog.setDebug()
|
||||
#initLog.setVerbose()
|
||||
|
||||
from blocFissure.casStandard import casStandard
|
||||
|
||||
mesh = 'ARE_sain_lin_rotated.med'
|
||||
crack = 'fissureExtrados.brep'
|
||||
|
||||
dicoParams = dict(nomCas = 'fissTuyau',
|
||||
maillageSain = '/local00/home/I48174/Documents/soudure/essaiFissure/{0}'.format(mesh),
|
||||
brepFaceFissure = '/local00/home/I48174/Documents/soudure/essaiFissure/{0}'.format(crack),
|
||||
edgeFissIds = [4],
|
||||
lgInfluence = 12,
|
||||
meshBrep = (0.05, 2.0),
|
||||
rayonPipe = 1.0,
|
||||
lenSegPipe = 1, #9,
|
||||
nbSegRad = 8,
|
||||
nbSegCercle = 20,
|
||||
areteFaceFissure = 1.0)
|
||||
|
||||
execInstance = casStandard(dicoParams)
|
||||
|
||||
if salome.sg.hasDesktop():
|
||||
salome.sg.updateObjBrowser(1)
|
36
src/Tools/blocFissure/AREintradosLauncher.py
Normal file
36
src/Tools/blocFissure/AREintradosLauncher.py
Normal file
@ -0,0 +1,36 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
""" FissureLauncher:
|
||||
Permet de lancer le script 'casStandard'
|
||||
en fonction des paramètres contenus dans 'dicoParams'. """
|
||||
|
||||
#import sys
|
||||
import salome
|
||||
|
||||
#import os
|
||||
#from blocFissure import gmu
|
||||
from blocFissure.gmu import initLog
|
||||
initLog.setDebug()
|
||||
#initLog.setVerbose()
|
||||
|
||||
from blocFissure.casStandard import casStandard
|
||||
|
||||
mesh = 'ARE_sain_lin_rotated.med'
|
||||
crack = 'fissureIntrados.brep'
|
||||
|
||||
dicoParams = dict(nomCas = 'fissTuyau',
|
||||
maillageSain = '/local00/home/I48174/Documents/soudure/essaiFissure/{0}'.format(mesh),
|
||||
brepFaceFissure = '/local00/home/I48174/Documents/soudure/essaiFissure/{0}'.format(crack),
|
||||
edgeFissIds = [4],
|
||||
lgInfluence = 14,
|
||||
meshBrep = (0.05, 2.0),
|
||||
rayonPipe = 1.0,
|
||||
lenSegPipe = 1, #9,
|
||||
nbSegRad = 5,
|
||||
nbSegCercle = 16,
|
||||
areteFaceFissure = 1.0)
|
||||
|
||||
execInstance = casStandard(dicoParams)
|
||||
|
||||
if salome.sg.hasDesktop():
|
||||
salome.sg.updateObjBrowser(1)
|
@ -80,12 +80,13 @@ dicoParams = dict(nomCas = 'angleCube2',
|
||||
maillageSain = 'boite.med',
|
||||
brepFaceFissure = "disk.brep",
|
||||
edgeFissIds = [4],
|
||||
lgInfluence = 20,
|
||||
lgInfluence = 50,
|
||||
meshBrep = (5,10),
|
||||
rayonPipe = 10,
|
||||
rayonPipe = 15,
|
||||
lenSegPipe = 20,
|
||||
nbSegRad = 5,
|
||||
nbSegCercle = 8,
|
||||
areteFaceFissure = 10)
|
||||
nbSegCercle = 12,
|
||||
areteFaceFissure = 2)
|
||||
|
||||
execInstance = casStandard(dicoParams)
|
||||
|
||||
|
36
src/Tools/blocFissure/fissureLauncher.py
Normal file
36
src/Tools/blocFissure/fissureLauncher.py
Normal file
@ -0,0 +1,36 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
""" FissureLauncher:
|
||||
Permet de lancer le script 'casStandard'
|
||||
en fonction des paramètres contenus dans 'dicoParams'. """
|
||||
|
||||
#import sys
|
||||
import salome
|
||||
|
||||
#import os
|
||||
#from blocFissure import gmu
|
||||
from blocFissure.gmu import initLog
|
||||
initLog.setDebug()
|
||||
#initLog.setVerbose()
|
||||
|
||||
from blocFissure.casStandard import casStandard
|
||||
|
||||
mesh = 'maillageSainTuyauFEM.med'
|
||||
crack = 'fissureQuartEllipse.brep'
|
||||
|
||||
dicoParams = dict(nomCas = 'fissTuyau',
|
||||
maillageSain = '/local00/home/I48174/Bureau/supportMaillage/{0}'.format(mesh),
|
||||
brepFaceFissure = '/local00/home/I48174/Bureau/supportMaillage/{0}'.format(crack),
|
||||
edgeFissIds = [9],
|
||||
lgInfluence = 250,
|
||||
meshBrep = (10, 50),
|
||||
rayonPipe = 35,
|
||||
lenSegPipe = 7, #9,
|
||||
nbSegRad = 6,
|
||||
nbSegCercle = 30,
|
||||
areteFaceFissure = 20)
|
||||
|
||||
execInstance = casStandard(dicoParams)
|
||||
|
||||
if salome.sg.hasDesktop():
|
||||
salome.sg.updateObjBrowser(1)
|
@ -7,7 +7,7 @@ import SALOMEDS
|
||||
|
||||
from creeZoneDefautMaillage import creeZoneDefautMaillage
|
||||
from peauInterne import peauInterne
|
||||
from quadranglesToShape import quadranglesToShape
|
||||
from quadranglesToShapeNoCorner import quadranglesToShapeNoCorner
|
||||
from creeZoneDefautFilling import creeZoneDefautFilling
|
||||
from creeZoneDefautGeom import creeZoneDefautGeom
|
||||
from getCentreFondFiss import getCentreFondFiss
|
||||
@ -18,7 +18,7 @@ from getCentreFondFiss import getCentreFondFiss
|
||||
def creeZoneDefautDansObjetSain(geometriesSaines, maillagesSains, shapesFissure,
|
||||
shapeFissureParams, maillageFissureParams):
|
||||
"""
|
||||
TODO: a compléter
|
||||
#TODO: a compléter
|
||||
"""
|
||||
logging.info('start')
|
||||
|
||||
@ -62,7 +62,7 @@ def creeZoneDefautDansObjetSain(geometriesSaines, maillagesSains, shapesFissure,
|
||||
maillageSain.ExportMED( fichierMaillageSain, 0, SMESH.MED_V2_2, 1 )
|
||||
logging.debug("fichier maillage sain %s", fichierMaillageSain)
|
||||
[maillageSain, internalBoundary, zoneDefaut, zoneDefaut_skin, zoneDefaut_internalFaces, zoneDefaut_internalEdges] = \
|
||||
peauInterne(fichierMaillageSain, nomZones)
|
||||
peauInterne(fichierMaillageSain, shapeDefaut, nomZones)
|
||||
|
||||
facesDefaut = []
|
||||
centresDefaut = []
|
||||
@ -71,7 +71,9 @@ def creeZoneDefautDansObjetSain(geometriesSaines, maillagesSains, shapesFissure,
|
||||
isPlane = False
|
||||
if isHexa and not isPlane:
|
||||
meshQuad = smesh.CopyMesh( zoneDefaut_skin, 'meshQuad', 0, 0)
|
||||
fillings, noeuds_bords, bordsPartages, fillconts, idFilToCont = quadranglesToShape(meshQuad, shapeFissureParams, centreFondFiss)
|
||||
|
||||
fillings, noeuds_bords, bordsPartages, fillconts, idFilToCont = quadranglesToShapeNoCorner(meshQuad, shapeFissureParams, centreFondFiss)
|
||||
|
||||
for filling in fillings:
|
||||
[faceDefaut, centreDefaut, normalDefaut, extrusionDefaut] = \
|
||||
creeZoneDefautFilling(filling, shapeDefaut, lgExtrusion)
|
||||
|
@ -9,7 +9,7 @@ from geomsmesh import geompy
|
||||
def creeZoneDefautFilling(filling, shapeDefaut, lgExtrusion=50):
|
||||
"""
|
||||
Construction CAO de la zone à remailler, quand on utilise un filling,
|
||||
après appel creeZoneDefautMaillage et quadranglesToShape
|
||||
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
|
||||
(selon les cas, un point central, ou une shape plus complexe,
|
||||
|
85
src/Tools/blocFissure/gmu/fusionMaillageAttributionDefaut.py
Normal file
85
src/Tools/blocFissure/gmu/fusionMaillageAttributionDefaut.py
Normal file
@ -0,0 +1,85 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Tue Jun 24 09:14:13 2014
|
||||
|
||||
@author: I48174
|
||||
"""
|
||||
|
||||
import logging
|
||||
from geomsmesh import geompy
|
||||
from geomsmesh import smesh
|
||||
import GEOM
|
||||
import SMESH
|
||||
|
||||
from listOfExtraFunctions import createNewMeshesFromCorner
|
||||
from listOfExtraFunctions import createLinesFromMesh
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# --- groupe de quadrangles de face transformé en face géométrique par filling
|
||||
|
||||
def fusionMaillageDefaut(maillageSain, maillageDefautCible, maillageInterneCible, zoneDefaut_skin, shapeDefaut, listOfCorners):
|
||||
""" """
|
||||
# TODO: rédiger la docstring
|
||||
|
||||
logging.info("start")
|
||||
|
||||
facesNonCoupees = []
|
||||
facesCoupees = []
|
||||
maillagesNonCoupes = []
|
||||
maillagesCoupes = []
|
||||
|
||||
# On crée une liste contenant le maillage de chaque face.
|
||||
listOfNewMeshes = createNewMeshesFromCorner(maillageDefautCible, listOfCorners)
|
||||
|
||||
i = 0
|
||||
while i < len(listOfNewMeshes):
|
||||
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
|
||||
# ensemble de vertices constitue une ligne. Un ensemble de lignes
|
||||
# constitue la face.
|
||||
tmpCoords = [maillageDefautCible.GetNodeXYZ(node) for node in line]
|
||||
tmpPoints = [geompy.MakeVertex(val[0], val[1], val[2]) for val in tmpCoords]
|
||||
line = geompy.MakeInterpol(tmpPoints, False, False)
|
||||
setOfLines.append(line)
|
||||
|
||||
# A partir des lignes de la face,
|
||||
# on recrée un objet GEOM temporaire par filling.
|
||||
filling = geompy.MakeFilling(geompy.MakeCompound(setOfLines), 2, 5, 0.0001, 0.0001, 0, GEOM.FOM_Default, True)
|
||||
geompy.addToStudy(filling, 'filling_{0}'.format(i + 1))
|
||||
|
||||
tmpPartition = geompy.MakePartition([filling], [shapeDefaut], [], [], geompy.ShapeType["FACE"], 0, [], 0, True)
|
||||
tmpExplodeRef = geompy.ExtractShapes(filling, geompy.ShapeType["EDGE"], True)
|
||||
tmpExplodeNum = geompy.ExtractShapes(tmpPartition, geompy.ShapeType["EDGE"], True)
|
||||
if len(tmpExplodeRef) == len(tmpExplodeNum):
|
||||
geompy.addToStudy(filling, "faceNonCoupee_{0}".format(i + 1))
|
||||
facesNonCoupees.append(filling)
|
||||
maillagesNonCoupes.append(listOfNewMeshes[i])
|
||||
else:
|
||||
geompy.addToStudy(filling, "faceCoupee_{0}".format(i + 1))
|
||||
facesCoupees.append(filling)
|
||||
maillagesCoupes.append(listOfNewMeshes[i])
|
||||
|
||||
i += 1
|
||||
|
||||
listOfInternMeshes = [maillageInterneCible] + [msh.GetMesh() for msh in maillagesNonCoupes]
|
||||
|
||||
newMaillageInterne = smesh.Concatenate(listOfInternMeshes, 1, 1, 1e-05, False)
|
||||
|
||||
facesEnTrop = []
|
||||
|
||||
criteres = [smesh.GetCriterion(SMESH.FACE, SMESH.FT_BelongToGenSurface, SMESH.FT_Undefined, face) for face in facesNonCoupees]
|
||||
filtres = [smesh.GetFilterFromCriteria([critere]) for critere in criteres]
|
||||
for i, filtre in enumerate(filtres):
|
||||
filtre.SetMesh(maillageSain.GetMesh())
|
||||
faceEnTrop = maillageSain.GroupOnFilter(SMESH.FACE, 'faceEnTrop_{0}'.format(i + 1), filtre)
|
||||
facesEnTrop.append(faceEnTrop)
|
||||
|
||||
newZoneDefaut_skin = maillageSain.GetMesh().CutListOfGroups([zoneDefaut_skin], facesEnTrop, 'newZoneDefaut_skin')
|
||||
|
||||
smesh.SetName(newMaillageInterne, 'newInternalBoundary')
|
||||
|
||||
return newZoneDefaut_skin, newMaillageInterne
|
||||
|
@ -9,8 +9,19 @@ from salome.smesh import smeshBuilder
|
||||
|
||||
def genereMeshCalculZoneDefaut(facefiss, minSize, maxSize):
|
||||
"""
|
||||
TODO: a completer
|
||||
"""
|
||||
-Permet de générer un maillage sur l'objet géométrique '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)
|
||||
-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)
|
||||
-SetQuadAllowed = permission quadrangle dans maillage triangle
|
||||
-On récupère les coordonnées de chaque noeud de la fissure qu'on stocke
|
||||
dans une liste sous la forme : [X0, Y0, Z0, ..., Xn, Yn, Zn]"""
|
||||
|
||||
logging.info('start')
|
||||
|
||||
meshFissure = smesh.Mesh(facefiss)
|
||||
|
@ -82,7 +82,8 @@ def insereFissureGenerale(maillagesSains,
|
||||
#fichierMaillageSain = nomRep + '/' + nomFicSain + '.med'
|
||||
fichierMaillageFissure = nomRep + '/' + nomFicFissure + '.med'
|
||||
|
||||
facesDefaut = elementsDefaut[0] # fillings des faces en peau
|
||||
# fillings des faces en peau
|
||||
facesDefaut = elementsDefaut[0]
|
||||
#centresDefaut = elementsDefaut[1]
|
||||
#normalsDefaut = elementsDefaut[2]
|
||||
#extrusionsDefaut = elementsDefaut[3]
|
||||
@ -191,17 +192,26 @@ def insereFissureGenerale(maillagesSains,
|
||||
partitionsPeauFissFond.append(None)
|
||||
ipart = ipart +1
|
||||
|
||||
# --- arêtes vives détectées (dans quadranglesToShape)
|
||||
|
||||
# --- arêtes vives détectées (dans quadranglesToShapeNoCorner
|
||||
# et quadranglesToShapeWithCorner)
|
||||
|
||||
aretesVives = []
|
||||
aretesVivesCoupees = []
|
||||
ia = 0
|
||||
for a in bordsPartages:
|
||||
if not isinstance(a, list):
|
||||
aretesVives.append(a)
|
||||
name = "areteVive%d"%ia
|
||||
geompy.addToStudy(a, name)
|
||||
ia += 1
|
||||
else:
|
||||
if a[0] is not None:
|
||||
aretesVives.append(a[0])
|
||||
name = "areteVive%d"%ia
|
||||
geompy.addToStudy(a[0], name)
|
||||
ia += 1
|
||||
|
||||
aretesVivesC = None
|
||||
if len(aretesVives) > 0:
|
||||
aretesVivesC =geompy.MakeCompound(aretesVives)
|
||||
@ -228,7 +238,7 @@ def insereFissureGenerale(maillagesSains,
|
||||
|
||||
for ifil, partitionPeauFissFond in enumerate(partitionsPeauFissFond):
|
||||
fillingFaceExterne = facesDefaut[ifil]
|
||||
fillingSansDecoupe = fillconts[idFilToCont[ifil]]
|
||||
#fillingSansDecoupe = fillconts[idFilToCont[ifil]]
|
||||
if partitionPeauFissFond is not None:
|
||||
logging.debug("traitement partitionPeauFissFond %s", ifil)
|
||||
# -----------------------------------------------------------------------
|
||||
|
199
src/Tools/blocFissure/gmu/listOfExtraFunctions.py
Normal file
199
src/Tools/blocFissure/gmu/listOfExtraFunctions.py
Normal file
@ -0,0 +1,199 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Mon Jun 23 14:49:36 2014
|
||||
|
||||
@author: I48174
|
||||
"""
|
||||
|
||||
import logging
|
||||
import SMESH
|
||||
from geomsmesh import smesh
|
||||
|
||||
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 distinctes
|
||||
- chaque élément doit appartenir à un ensemble distincte
|
||||
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. """
|
||||
|
||||
logging.info("start")
|
||||
|
||||
allNodeIds = maillageAScanner.GetNodesId() # On stocke tout les noeuds
|
||||
listOfCorners = []
|
||||
for ND in allNodeIds:
|
||||
# On parcours la liste de noeuds
|
||||
listOfElements = maillageAScanner.GetNodeInverseElements(ND)
|
||||
if len(listOfElements) >=3:
|
||||
# On teste le nombre d'éléments qui partage le même noeud
|
||||
# --- Filtre selon le critère '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 inutils.
|
||||
# Exemple : un noeud appartenant à 4 éléments sur la même face.
|
||||
continue
|
||||
for s in listOfSets:
|
||||
while listOfSets.count(s) > 1:
|
||||
# On supprime tant que la liste d'éléments 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.
|
||||
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
|
||||
simple et on parcourt tout les noeuds pour former un 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), à
|
||||
2_____5_____8 savoir le noeud N4. On suit les noeuds succesifs
|
||||
| | | [4, 5, 6] comme précédemment 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.
|
||||
|
||||
La fonction retourne une liste de lignes utilisées par la suite. """
|
||||
|
||||
logging.info("start")
|
||||
|
||||
allNodeIds = maillageSupport.GetNodesId()
|
||||
while len(allNodeIds):
|
||||
nodeIds = allNodeIds
|
||||
for idNode in nodeIds: # rechercher un coin
|
||||
elems = maillageSupport.GetNodeInverseElements(idNode)
|
||||
if len(elems) == 1:
|
||||
# un coin: un noeud, un element quadrangle
|
||||
elem = elems[0]
|
||||
break;
|
||||
idStart = idNode # le noeud de coin
|
||||
elemStart = elem # l'élément quadrangle au coin
|
||||
xyz = maillageSupport.GetNodeXYZ(idStart)
|
||||
logging.debug("idStart %s, coords %s", idStart, str(xyz))
|
||||
|
||||
nodelines =[] # on va constituer une liste de lignes de points
|
||||
nextLine = True
|
||||
ligneFinale = False
|
||||
while nextLine:
|
||||
logging.debug("--- une ligne")
|
||||
idNode = idStart
|
||||
elem = elemStart
|
||||
if ligneFinale:
|
||||
agauche = False # sens de parcours des 4 noeuds d'un quadrangle
|
||||
nextLine = False
|
||||
else:
|
||||
agauche = True
|
||||
ligneIncomplete = True # on commence une ligne de points
|
||||
debutLigne = True
|
||||
nodeline = []
|
||||
elemline = []
|
||||
while ligneIncomplete: # compléter 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
|
||||
if i < 3:
|
||||
j = i+1
|
||||
else:
|
||||
j = 0
|
||||
if j < 3:
|
||||
k = j+1
|
||||
else:
|
||||
k = 0
|
||||
else:
|
||||
if i > 0:
|
||||
j = i -1
|
||||
else:
|
||||
j = 3
|
||||
if j > 0:
|
||||
k = j -1
|
||||
else:
|
||||
k = 3
|
||||
isuiv = nodes[j] # noeud suivant
|
||||
iapres = nodes[k] # noeud opposé
|
||||
if debutLigne:
|
||||
debutLigne = False
|
||||
# précédent a trouver, dernière ligne : précédent au lieu de suivant
|
||||
if agauche:
|
||||
if i > 0:
|
||||
iprec = nodes[i -1]
|
||||
else:
|
||||
iprec = nodes[3]
|
||||
idStart = iprec
|
||||
elems3 = maillageSupport.GetNodeInverseElements(iprec)
|
||||
if len(elems3) == 1: # autre coin
|
||||
ligneFinale = True
|
||||
else:
|
||||
for elem3 in elems3:
|
||||
if elem3 != elem:
|
||||
elemStart = elem3
|
||||
break
|
||||
#print nodes, idNode, isuiv, iapres
|
||||
elems1 = maillageSupport.GetNodeInverseElements(isuiv)
|
||||
elems2 = maillageSupport.GetNodeInverseElements(iapres)
|
||||
ligneIncomplete = False
|
||||
for elem2 in elems2:
|
||||
if elems1.count(elem2) and elem2 != elem:
|
||||
ligneIncomplete = True
|
||||
idNode = isuiv
|
||||
elem = elem2
|
||||
break
|
||||
if not ligneIncomplete:
|
||||
nodeline.append(isuiv)
|
||||
allNodeIds.remove(isuiv)
|
||||
logging.debug("nodeline %s", nodeline)
|
||||
logging.debug("elemline %s", elemline)
|
||||
nodelines.append(nodeline)
|
||||
|
||||
# on a constitué 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. """
|
||||
|
||||
logging.info("start")
|
||||
|
||||
tmp = []
|
||||
listOfNewMeshes = []
|
||||
for corner in listOfCorners:
|
||||
elems = maillageSupport.GetNodeInverseElements(corner)
|
||||
for i, elem in enumerate(elems):
|
||||
# --- Filtre selon le critère 'coplanar' --- #
|
||||
critere = smesh.GetCriterion(SMESH.FACE, SMESH.FT_CoplanarFaces, \
|
||||
SMESH.FT_Undefined, elem, SMESH.FT_Undefined, SMESH.FT_Undefined, 30)
|
||||
filtre = smesh.GetFilterFromCriteria([critere])
|
||||
# ------------------------------------------ #
|
||||
grp = maillageSupport.GroupOnFilter(SMESH.FACE, 'grp', filtre)
|
||||
# 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à
|
||||
tmp.append(msh.GetNodesId())
|
||||
if tmp.count(msh.GetNodesId()) <= 1:
|
||||
listOfNewMeshes.append(msh)
|
||||
return listOfNewMeshes
|
@ -4,10 +4,13 @@ import logging
|
||||
from geomsmesh import smesh
|
||||
import SMESH
|
||||
|
||||
from listOfExtraFunctions import lookForCorner
|
||||
from fusionMaillageAttributionDefaut import fusionMaillageDefaut
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# --- peau interne du defaut dans le maillage sain
|
||||
|
||||
def peauInterne(fichierMaillage, nomZones):
|
||||
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.
|
||||
@ -42,5 +45,12 @@ def peauInterne(fichierMaillage, nomZones):
|
||||
internal = maillageSain.GetMesh().CutListOfGroups( [ DefautBoundary ], [ zoneDefaut_skin ], 'internal' )
|
||||
internalBoundary = smesh.CopyMesh( internal, 'internalBoundary', 0, 0)
|
||||
|
||||
maillageDefautCible = smesh.CopyMesh(zoneDefaut_skin, 'maillageCible', 0, 0)
|
||||
listOfCorner = lookForCorner(maillageDefautCible)
|
||||
print "listOfCorner = ", listOfCorner
|
||||
if len(listOfCorner) > 0:
|
||||
print " /!\ SUITE DU SCRIPT EN CONSTRUCTION /!\\"
|
||||
zoneDefaut_skin, internalBoundary = fusionMaillageDefaut(maillageSain, maillageDefautCible, internalBoundary, zoneDefaut_skin, shapeDefaut, listOfCorner)
|
||||
|
||||
return maillageSain, internalBoundary, zoneDefaut, zoneDefaut_skin, zoneDefaut_internalFaces, zoneDefaut_internalEdges
|
||||
|
||||
|
327
src/Tools/blocFissure/gmu/quadranglesToShapeNoCorner.py
Normal file
327
src/Tools/blocFissure/gmu/quadranglesToShapeNoCorner.py
Normal file
@ -0,0 +1,327 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import logging
|
||||
from geomsmesh import geompy
|
||||
import GEOM
|
||||
import math
|
||||
import numpy as np
|
||||
|
||||
def mydot(a):
|
||||
return np.dot(a,a)
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# --- groupe de quadrangles de face transformé en face géométrique 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))
|
||||
"""
|
||||
logging.info("start")
|
||||
|
||||
isVecteurDefaut = False
|
||||
if shapeFissureParams.has_key('vecteurDefaut'):
|
||||
isVecteurDefaut = True
|
||||
vecteurDefaut = shapeFissureParams['vecteurDefaut']
|
||||
|
||||
fillings = [] # les faces reconstituées, découpées selon les arêtes 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
|
||||
icont = 0 # index face continue
|
||||
|
||||
allNodeIds = meshQuad.GetNodesId()
|
||||
while len(allNodeIds):
|
||||
nodeIds = allNodeIds
|
||||
for idNode in nodeIds: # rechercher un coin
|
||||
elems = meshQuad.GetNodeInverseElements(idNode)
|
||||
if len(elems) == 1:
|
||||
# un coin: un noeud, un element quadrangle
|
||||
elem = elems[0]
|
||||
break;
|
||||
idStart = idNode # le noeud de coin
|
||||
elemStart = elem # l'élément quadrangle au coin
|
||||
xyz = meshQuad.GetNodeXYZ(idStart)
|
||||
print "xyz = ", xyz
|
||||
logging.debug("idStart %s, coords %s", idStart, str(xyz))
|
||||
|
||||
nodelines =[] # on va constituer une liste de lignes de points
|
||||
nextLine = True
|
||||
ligneFinale = False
|
||||
while nextLine:
|
||||
logging.debug("--- une ligne")
|
||||
idNode = idStart
|
||||
elem = elemStart
|
||||
if ligneFinale:
|
||||
agauche = False # sens de parcours des 4 noeuds d'un quadrangle
|
||||
nextLine = False
|
||||
else:
|
||||
agauche = True
|
||||
ligneIncomplete = True # on commence une ligne de points
|
||||
debutLigne = True
|
||||
nodeline = []
|
||||
elemline = []
|
||||
while ligneIncomplete: # compléter 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
|
||||
if i < 3:
|
||||
j = i+1
|
||||
else:
|
||||
j = 0
|
||||
if j < 3:
|
||||
k = j+1
|
||||
else:
|
||||
k = 0
|
||||
else:
|
||||
if i > 0:
|
||||
j = i -1
|
||||
else:
|
||||
j = 3
|
||||
if j > 0:
|
||||
k = j -1
|
||||
else:
|
||||
k = 3
|
||||
isuiv = nodes[j] #noeud suivant
|
||||
iapres = nodes[k] #noeud opposé
|
||||
if debutLigne:
|
||||
debutLigne = False
|
||||
# précédent a trouver, dernière ligne : précédent au lieu de suivant
|
||||
if agauche:
|
||||
if i > 0:
|
||||
iprec = nodes[i -1]
|
||||
else:
|
||||
iprec = nodes[3]
|
||||
idStart = iprec
|
||||
elems3 = meshQuad.GetNodeInverseElements(iprec)
|
||||
if len(elems3) == 1: # autre coin
|
||||
ligneFinale = True
|
||||
else:
|
||||
for elem3 in elems3:
|
||||
if elem3 != elem:
|
||||
elemStart = elem3
|
||||
break
|
||||
#print nodes, idNode, isuiv, iapres
|
||||
elems1 = meshQuad.GetNodeInverseElements(isuiv)
|
||||
elems2 = meshQuad.GetNodeInverseElements(iapres)
|
||||
ligneIncomplete = False
|
||||
for elem2 in elems2:
|
||||
if elems1.count(elem2) and elem2 != elem:
|
||||
ligneIncomplete = True
|
||||
idNode = isuiv
|
||||
elem = elem2
|
||||
break
|
||||
if not ligneIncomplete:
|
||||
nodeline.append(isuiv)
|
||||
allNodeIds.remove(isuiv)
|
||||
logging.debug("nodeline %s", nodeline)
|
||||
logging.debug("elemline %s", elemline)
|
||||
nodelines.append(nodeline)
|
||||
print "nodelines = ", nodelines
|
||||
longueur = [len(val) for val in nodelines]
|
||||
print "longueur = ", longueur
|
||||
# on a constitué une liste de lignes de points connexes
|
||||
logging.debug("dimensions [%s, %s]", len(nodelines), len(nodeline))
|
||||
|
||||
# stockage des coordonnées 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("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
|
||||
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
|
||||
h = e/(np.sqrt(f*g)) # cosinus
|
||||
ruptureX = h < cosmin # True si angle > reference
|
||||
logging.debug("matrice de rupture X: \n%s",ruptureX)
|
||||
rupX = filter(lambda x: np.prod(ruptureX[:,x]), range(len(nodeline)-2))
|
||||
logging.debug("colonnes de rupture: %s",rupX)
|
||||
# recherche d'angles supérieurs 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
|
||||
h = e/(np.sqrt(f*g)) # cosinus
|
||||
ruptureY = h < cosmin # True si angle > reference
|
||||
logging.debug("matrice de rupture Y: \n%s",ruptureY)
|
||||
rupY = filter(lambda x: np.prod(ruptureY[x, :]), range(len(nodelines)-2))
|
||||
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""")
|
||||
|
||||
mats = []
|
||||
bordsPartages = []
|
||||
if (len(rupX)> 0):
|
||||
rupX.append(mat.shape[1]-1)
|
||||
for i, index in enumerate(rupX):
|
||||
imax = index+2
|
||||
imin = 0
|
||||
if i > 0:
|
||||
imin = rupX[i-1] + 1
|
||||
mats.append(mat[:, imin:imax, :])
|
||||
if imax == mat.shape[1] + 1:
|
||||
ifin = 0
|
||||
else:
|
||||
ifin = imax
|
||||
bordsPartages.append([imin,ifin]) # les indices différents de 0 correspondent à des bords partagés
|
||||
elif (len(rupY)> 0):
|
||||
rupY.append(mat.shape[0]-1)
|
||||
for i, index in enumerate(rupY):
|
||||
imax = index+2
|
||||
imin = 0
|
||||
if i > 0:
|
||||
imin = rupY[i-1] + 1
|
||||
mats.append(mat[imin:imax, :, :])
|
||||
if imax == mat.shape[0] + 1:
|
||||
ifin = 0
|
||||
else:
|
||||
ifin = imax
|
||||
bordsPartages.append([imin,ifin]) # les indices différents de 0 correspondent à des bords partagés
|
||||
else:
|
||||
mats.append(mat)
|
||||
bordsPartages.append([0,0]) # les indices différents de 0 correspondent à des bords partagés
|
||||
|
||||
curvconts = []
|
||||
for nmat, amat in enumerate(mats):
|
||||
logging.debug("dimensions matrice %s: %s", nmat, amat.shape)
|
||||
nbLignes = amat.shape[1] # pas de rupture, ou rupture selon des colonnes: on transpose
|
||||
nbCols = amat.shape[0]
|
||||
if len(rupY) > 0 : # rupture selon des lignes: pas de transposition
|
||||
nbLignes = amat.shape[0]
|
||||
nbCols = amat.shape[1]
|
||||
curves = []
|
||||
noeudsBords = []
|
||||
for i in range(4):
|
||||
noeudsBords.append([])
|
||||
k = 0
|
||||
for i in range(nbLignes):
|
||||
nodeList = []
|
||||
for j in range(nbCols):
|
||||
#logging.debug("point[%s,%s] = (%s, %s, %s)",i,j,amat[i,j,0], amat[i,j,1], amat[i,j,2])
|
||||
if len(rupY) > 0 : # pas de transposition
|
||||
node = geompy.MakeVertex(amat[i,j,0], amat[i,j,1], amat[i,j,2])
|
||||
else: # transposition
|
||||
node = geompy.MakeVertex(amat[j,i,0], amat[j,i,1], amat[j,i,2])
|
||||
nodeList.append(node)
|
||||
if i == 0:
|
||||
noeudsBords[0].append(node)
|
||||
#name = "bord0_%d"%k
|
||||
#geompy.addToStudy( node, name )
|
||||
if i == (nbLignes -1):
|
||||
noeudsBords[2].append(node)
|
||||
#name = "bord2_%d"%k
|
||||
#geompy.addToStudy( node, name )
|
||||
if j == 0:
|
||||
noeudsBords[1].append(node)
|
||||
#name = "bord1_%d"%k
|
||||
#geompy.addToStudy( node, name )
|
||||
if j == (nbCols -1):
|
||||
noeudsBords[3].append(node)
|
||||
#name = "bord3_%d"%k
|
||||
#geompy.addToStudy( node, name )
|
||||
k += 1
|
||||
curve = geompy.MakeInterpol(nodeList, False, False)
|
||||
#name = "curve_%d"%i
|
||||
#geompy.addToStudy( curve, name )
|
||||
if len(curvconts) == 0 or len(curves) > 0: # éliminer les doublons de la surface sans découpe
|
||||
curvconts.append(nodeList)
|
||||
curves.append(curve)
|
||||
if bordsPartages[nmat][0] :
|
||||
bordsPartages[nmat][0] = curves[0] # la première ligne est un bord partagé
|
||||
else:
|
||||
bordsPartages[nmat][0] = None
|
||||
if bordsPartages[nmat][1] :
|
||||
bordsPartages[nmat][1] = curves[-1] # la dernière ligne est un bord partagé
|
||||
else:
|
||||
bordsPartages[nmat][1] = None
|
||||
filling = geompy.MakeFilling(geompy.MakeCompound(curves), 2, 5, 0.0001, 0.0001, 0, GEOM.FOM_Default, True)
|
||||
# --- test orientation filling
|
||||
vertex = geompy.MakeVertexOnSurface(filling, 0.5, 0.5)
|
||||
normal = geompy.GetNormal(filling, vertex)
|
||||
|
||||
if centreFondFiss is not None:
|
||||
logging.debug("orientation filling a l'aide du centre de fond de fissure")
|
||||
vecteurDefaut = geompy.MakeVector(centreFondFiss, vertex)
|
||||
|
||||
if not isVecteurDefaut:
|
||||
pointIn_x = 0.0
|
||||
pointIn_y = 0.0
|
||||
pointIn_z = 0.0
|
||||
pointExplicite = False
|
||||
if shapeFissureParams.has_key('pointIn_x'):
|
||||
pointExplicite = True
|
||||
pointIn_x = shapeFissureParams['pointIn_x']
|
||||
if shapeFissureParams.has_key('pointIn_y'):
|
||||
pointExplicite = True
|
||||
pointIn_y = shapeFissureParams['pointIn_y']
|
||||
if shapeFissureParams.has_key('pointIn_z'):
|
||||
pointExplicite = 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))
|
||||
vecteurDefaut = geompy.MakeVector(cdg, vertex)
|
||||
|
||||
if shapeFissureParams.has_key('convexe'):
|
||||
isConvexe = shapeFissureParams['convexe']
|
||||
logging.debug("orientation filling par indication de convexité %s", isConvexe)
|
||||
cdg = geompy.MakeCDG(filling)
|
||||
if isConvexe:
|
||||
vecteurDefaut = geompy.MakeVector(cdg, vertex)
|
||||
else:
|
||||
vecteurDefaut = geompy.MakeVector(vertex, cdg)
|
||||
|
||||
if vecteurDefaut is not None:
|
||||
geompy.addToStudy(normal, "normFillOrig%d"%iface)
|
||||
geompy.addToStudy(vecteurDefaut, "fromInterieur%d"%iface)
|
||||
if geompy.GetAngleRadians(vecteurDefaut, normal) > math.pi/2.0:
|
||||
filling = geompy.ChangeOrientation(filling)
|
||||
geompy.addToStudy( filling, "filling%d"%iface )
|
||||
#geompy.ExportBREP(filling, "filling.brep")
|
||||
iface = iface+1
|
||||
fillings.append(filling)
|
||||
noeuds_bords.append(noeudsBords)
|
||||
idFilToCont.append(icont)
|
||||
bords_Partages += bordsPartages
|
||||
print "bords_Partages = ", 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
|
||||
fillcont = fillings[-1]
|
||||
else:
|
||||
nbLignes = len(curvconts[0])
|
||||
curves = []
|
||||
for i in range(nbLignes):
|
||||
nodes = [curvconts[j][i] for j in range(len(curvconts))]
|
||||
curve = geompy.MakeInterpol(nodes, False, False)
|
||||
curves.append(curve)
|
||||
fillcont = geompy.MakeFilling(geompy.MakeCompound(curves), 2, 5, 0.0001, 0.0001, 0, GEOM.FOM_Default, True)
|
||||
geompy.addToStudy( fillcont, "filcont%d"%icont )
|
||||
fillconts.append(fillcont)
|
||||
icont = icont+1
|
||||
pass # --- loop while there are remaining nodes
|
||||
|
||||
return fillings, noeuds_bords, bords_Partages, fillconts, idFilToCont
|
115
src/Tools/blocFissure/gmu/quadranglesToShapeWithCorner.py
Normal file
115
src/Tools/blocFissure/gmu/quadranglesToShapeWithCorner.py
Normal file
@ -0,0 +1,115 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Tue Jun 24 09:14:13 2014
|
||||
|
||||
@author: I48174
|
||||
"""
|
||||
|
||||
import logging
|
||||
from geomsmesh import geompy
|
||||
import GEOM
|
||||
|
||||
from listOfExtraFunctions import createNewMeshesFromCorner
|
||||
from listOfExtraFunctions import createLinesFromMesh
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# --- groupe de quadrangles de face transformé en face géométrique par filling
|
||||
|
||||
def quadranglesToShapeWithCorner(meshQuad, shapeDefaut, shapeFissureParams, centreFondFiss, listOfCorners):
|
||||
""" """
|
||||
# TODO: rédiger la docstring
|
||||
|
||||
logging.info("start")
|
||||
|
||||
#fillings = [[], []]
|
||||
tmpFillings = []
|
||||
noeuds_bords = []
|
||||
#bords_Partages = [[], []]
|
||||
tmpBords = []
|
||||
fillconts = []
|
||||
idFilToCont = []
|
||||
|
||||
facesNonCoupees = []
|
||||
facesCoupees = []
|
||||
aretesNonCoupees = []
|
||||
aretesCoupees = []
|
||||
|
||||
setOfNodes = []
|
||||
setOfLines = []
|
||||
listOfEdges = []
|
||||
# On crée 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].
|
||||
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
|
||||
# ensemble de vertices constitue une ligne. Un ensemble de lignes
|
||||
# constitue une face.
|
||||
tmpCoords = [meshQuad.GetNodeXYZ(node) for node in line]
|
||||
tmpPoints = [geompy.MakeVertex(val[0], val[1], val[2]) for val in tmpCoords]
|
||||
line = geompy.MakeInterpol(tmpPoints, False, False)
|
||||
tmpFace.append(line)
|
||||
setOfLines.append(tmpFace)
|
||||
|
||||
for i, face in enumerate(setOfLines):
|
||||
# A partir des lignes de chaque face,
|
||||
# on recrée un objet GEOM temporaire par filling.
|
||||
filling = geompy.MakeFilling(geompy.MakeCompound(face), 2, 5, 0.0001, 0.0001, 0, GEOM.FOM_Default, True)
|
||||
geompy.addToStudy(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
|
||||
listOfEdges.append(face[0])
|
||||
|
||||
for edge in listOfEdges:
|
||||
# On utilise les points de bords pour créer 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)
|
||||
tmpBords.append(line)
|
||||
|
||||
for i, filling in enumerate(tmpFillings):
|
||||
tmpPartition = geompy.MakePartition([filling], [shapeDefaut], [], [], geompy.ShapeType["FACE"], 0, [], 0, True)
|
||||
tmpExplodeRef = geompy.ExtractShapes(filling, geompy.ShapeType["EDGE"], True)
|
||||
tmpExplodeNum = geompy.ExtractShapes(tmpPartition, geompy.ShapeType["EDGE"], True)
|
||||
if len(tmpExplodeRef) == len(tmpExplodeNum):
|
||||
geompy.addToStudy(filling, "faceNonCoupee_{0}".format(i + 1))
|
||||
facesNonCoupees.append(filling)
|
||||
else:
|
||||
geompy.addToStudy(filling, "faceCoupee_{0}".format(i + 1))
|
||||
facesCoupees.append(filling)
|
||||
fillings = facesCoupees, facesNonCoupees
|
||||
|
||||
for i, filling in enumerate(tmpBords):
|
||||
tmpPartition = geompy.MakePartition([shapeDefaut], [filling], [], [], geompy.ShapeType["SHELL"], 0, [], 0, True)
|
||||
tmpExplodeRef = geompy.ExtractShapes(shapeDefaut, geompy.ShapeType["EDGE"], True) + geompy.ExtractShapes(shapeDefaut, geompy.ShapeType["VERTEX"], True)
|
||||
tmpExplodeNum = geompy.ExtractShapes(tmpPartition, geompy.ShapeType["EDGE"], True) + geompy.ExtractShapes(tmpPartition, geompy.ShapeType["VERTEX"], True)
|
||||
if len(tmpExplodeRef) == len(tmpExplodeNum):
|
||||
geompy.addToStudy(filling, "areteNonCoupee_{0}".format(i + 1))
|
||||
aretesNonCoupees.append(filling)
|
||||
else:
|
||||
geompy.addToStudy(filling, "areteCoupee_{0}".format(i + 1))
|
||||
aretesCoupees.append(filling)
|
||||
bords_Partages = aretesCoupees, aretesNonCoupees
|
||||
|
||||
# TODO: A enlever
|
||||
# for i, face in enumerate(setOfLines):
|
||||
# for j, line in enumerate(face):
|
||||
# geompy.addToStudy(line, 'face{0}_ligne{1}'.format(i + 1, j + 1))
|
||||
|
||||
#TODO: A enlever
|
||||
# for i, filling in enumerate(fillings[0]):
|
||||
# geompy.addToStudy(filling, 'filling_{0}'.format(i + 1))
|
||||
# for j, line in enumerate(setOfLines[i]):
|
||||
# geompy.addToStudyInFather(filling, line, 'line_{0}'.format(j + 1))
|
||||
|
||||
return fillings, noeuds_bords, bords_Partages, fillconts, idFilToCont
|
||||
|
@ -1,11 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright (C) 2006-2014 EDF R&D
|
||||
# Copyright (C) 2006-2013 EDF R&D
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2.1 of the License, or (at your option) any later version.
|
||||
# version 2.1 of the License.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
492
src/Tools/blocFissure/ihm/fissureCoude_ui.py
Normal file
492
src/Tools/blocFissure/ihm/fissureCoude_ui.py
Normal file
@ -0,0 +1,492 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file '/scratch/I27518/V7_3_build/V7_3_0/modules/src/SMESH_V7_3_0p2/src/Tools/blocFissure/ihm/fissureCoude.ui'
|
||||
#
|
||||
# Created: Wed Mar 5 09:49:21 2014
|
||||
# by: PyQt4 UI code generator 4.9.6
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
try:
|
||||
_fromUtf8 = QtCore.QString.fromUtf8
|
||||
except AttributeError:
|
||||
def _fromUtf8(s):
|
||||
return s
|
||||
|
||||
try:
|
||||
_encoding = QtGui.QApplication.UnicodeUTF8
|
||||
def _translate(context, text, disambig):
|
||||
return QtGui.QApplication.translate(context, text, disambig, _encoding)
|
||||
except AttributeError:
|
||||
def _translate(context, text, disambig):
|
||||
return QtGui.QApplication.translate(context, text, disambig)
|
||||
|
||||
class Ui_Dialog(object):
|
||||
def setupUi(self, Dialog):
|
||||
Dialog.setObjectName(_fromUtf8("Dialog"))
|
||||
Dialog.resize(826, 540)
|
||||
self.gridLayout_8 = QtGui.QGridLayout(Dialog)
|
||||
self.gridLayout_8.setObjectName(_fromUtf8("gridLayout_8"))
|
||||
self.horizontalLayout_5 = QtGui.QHBoxLayout()
|
||||
self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5"))
|
||||
self.verticalLayout_2 = QtGui.QVBoxLayout()
|
||||
self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
|
||||
self.groupBox = QtGui.QGroupBox(Dialog)
|
||||
self.groupBox.setObjectName(_fromUtf8("groupBox"))
|
||||
self.verticalLayout_3 = QtGui.QVBoxLayout(self.groupBox)
|
||||
self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3"))
|
||||
self.groupBox_3 = QtGui.QGroupBox(self.groupBox)
|
||||
self.groupBox_3.setObjectName(_fromUtf8("groupBox_3"))
|
||||
self.gridLayout_2 = QtGui.QGridLayout(self.groupBox_3)
|
||||
self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
|
||||
self.gridLayout = QtGui.QGridLayout()
|
||||
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
|
||||
self.label_3 = QtGui.QLabel(self.groupBox_3)
|
||||
self.label_3.setObjectName(_fromUtf8("label_3"))
|
||||
self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
|
||||
self.dsb_angle = QtGui.QDoubleSpinBox(self.groupBox_3)
|
||||
self.dsb_angle.setDecimals(5)
|
||||
self.dsb_angle.setMinimum(-181.0)
|
||||
self.dsb_angle.setMaximum(180.0)
|
||||
self.dsb_angle.setProperty("value", -181.0)
|
||||
self.dsb_angle.setObjectName(_fromUtf8("dsb_angle"))
|
||||
self.gridLayout.addWidget(self.dsb_angle, 0, 1, 1, 1)
|
||||
self.label_2 = QtGui.QLabel(self.groupBox_3)
|
||||
self.label_2.setObjectName(_fromUtf8("label_2"))
|
||||
self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
|
||||
self.label_5 = QtGui.QLabel(self.groupBox_3)
|
||||
self.label_5.setObjectName(_fromUtf8("label_5"))
|
||||
self.gridLayout.addWidget(self.label_5, 4, 0, 1, 1)
|
||||
self.dsb_epais = QtGui.QDoubleSpinBox(self.groupBox_3)
|
||||
self.dsb_epais.setDecimals(5)
|
||||
self.dsb_epais.setMaximum(1000000.0)
|
||||
self.dsb_epais.setObjectName(_fromUtf8("dsb_epais"))
|
||||
self.gridLayout.addWidget(self.dsb_epais, 4, 1, 1, 1)
|
||||
self.label_4 = QtGui.QLabel(self.groupBox_3)
|
||||
self.label_4.setObjectName(_fromUtf8("label_4"))
|
||||
self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1)
|
||||
self.dsb_lTubeP2 = QtGui.QDoubleSpinBox(self.groupBox_3)
|
||||
self.dsb_lTubeP2.setDecimals(5)
|
||||
self.dsb_lTubeP2.setMaximum(1000000.0)
|
||||
self.dsb_lTubeP2.setObjectName(_fromUtf8("dsb_lTubeP2"))
|
||||
self.gridLayout.addWidget(self.dsb_lTubeP2, 3, 1, 1, 1)
|
||||
self.label_6 = QtGui.QLabel(self.groupBox_3)
|
||||
self.label_6.setObjectName(_fromUtf8("label_6"))
|
||||
self.gridLayout.addWidget(self.label_6, 5, 0, 1, 1)
|
||||
self.label = QtGui.QLabel(self.groupBox_3)
|
||||
self.label.setObjectName(_fromUtf8("label"))
|
||||
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
|
||||
self.dsb_dext = QtGui.QDoubleSpinBox(self.groupBox_3)
|
||||
self.dsb_dext.setDecimals(5)
|
||||
self.dsb_dext.setMaximum(1000000.0)
|
||||
self.dsb_dext.setObjectName(_fromUtf8("dsb_dext"))
|
||||
self.gridLayout.addWidget(self.dsb_dext, 5, 1, 1, 1)
|
||||
self.dsb_lTubeP1 = QtGui.QDoubleSpinBox(self.groupBox_3)
|
||||
self.dsb_lTubeP1.setDecimals(5)
|
||||
self.dsb_lTubeP1.setMaximum(1000000.0)
|
||||
self.dsb_lTubeP1.setObjectName(_fromUtf8("dsb_lTubeP1"))
|
||||
self.gridLayout.addWidget(self.dsb_lTubeP1, 2, 1, 1, 1)
|
||||
self.dsb_rCintr = QtGui.QDoubleSpinBox(self.groupBox_3)
|
||||
self.dsb_rCintr.setDecimals(5)
|
||||
self.dsb_rCintr.setMaximum(1000000.0)
|
||||
self.dsb_rCintr.setObjectName(_fromUtf8("dsb_rCintr"))
|
||||
self.gridLayout.addWidget(self.dsb_rCintr, 1, 1, 1, 1)
|
||||
self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)
|
||||
self.verticalLayout_3.addWidget(self.groupBox_3)
|
||||
self.verticalLayout_2.addWidget(self.groupBox)
|
||||
self.cb_optDiscrSain = QtGui.QCheckBox(Dialog)
|
||||
self.cb_optDiscrSain.setObjectName(_fromUtf8("cb_optDiscrSain"))
|
||||
self.verticalLayout_2.addWidget(self.cb_optDiscrSain)
|
||||
self.gb_discrSain = QtGui.QGroupBox(Dialog)
|
||||
self.gb_discrSain.setObjectName(_fromUtf8("gb_discrSain"))
|
||||
self.gridLayout_4 = QtGui.QGridLayout(self.gb_discrSain)
|
||||
self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4"))
|
||||
self.verticalLayout = QtGui.QVBoxLayout()
|
||||
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
|
||||
self.label_7 = QtGui.QLabel(self.gb_discrSain)
|
||||
self.label_7.setObjectName(_fromUtf8("label_7"))
|
||||
self.verticalLayout.addWidget(self.label_7)
|
||||
self.gridLayout_3 = QtGui.QGridLayout()
|
||||
self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3"))
|
||||
self.label_8 = QtGui.QLabel(self.gb_discrSain)
|
||||
self.label_8.setObjectName(_fromUtf8("label_8"))
|
||||
self.gridLayout_3.addWidget(self.label_8, 0, 0, 1, 1)
|
||||
self.sb_nbAxeTubeP1 = QtGui.QSpinBox(self.gb_discrSain)
|
||||
self.sb_nbAxeTubeP1.setMaximum(10000)
|
||||
self.sb_nbAxeTubeP1.setProperty("value", 15)
|
||||
self.sb_nbAxeTubeP1.setObjectName(_fromUtf8("sb_nbAxeTubeP1"))
|
||||
self.gridLayout_3.addWidget(self.sb_nbAxeTubeP1, 0, 1, 1, 1)
|
||||
self.label_9 = QtGui.QLabel(self.gb_discrSain)
|
||||
self.label_9.setObjectName(_fromUtf8("label_9"))
|
||||
self.gridLayout_3.addWidget(self.label_9, 1, 0, 1, 1)
|
||||
self.sb_nbAxeTubeP2 = QtGui.QSpinBox(self.gb_discrSain)
|
||||
self.sb_nbAxeTubeP2.setMaximum(10000)
|
||||
self.sb_nbAxeTubeP2.setProperty("value", 15)
|
||||
self.sb_nbAxeTubeP2.setObjectName(_fromUtf8("sb_nbAxeTubeP2"))
|
||||
self.gridLayout_3.addWidget(self.sb_nbAxeTubeP2, 1, 1, 1, 1)
|
||||
self.label_10 = QtGui.QLabel(self.gb_discrSain)
|
||||
self.label_10.setObjectName(_fromUtf8("label_10"))
|
||||
self.gridLayout_3.addWidget(self.label_10, 2, 0, 1, 1)
|
||||
self.sb_nbAxeCoude = QtGui.QSpinBox(self.gb_discrSain)
|
||||
self.sb_nbAxeCoude.setMaximum(10000)
|
||||
self.sb_nbAxeCoude.setProperty("value", 10)
|
||||
self.sb_nbAxeCoude.setObjectName(_fromUtf8("sb_nbAxeCoude"))
|
||||
self.gridLayout_3.addWidget(self.sb_nbAxeCoude, 2, 1, 1, 1)
|
||||
self.label_11 = QtGui.QLabel(self.gb_discrSain)
|
||||
self.label_11.setObjectName(_fromUtf8("label_11"))
|
||||
self.gridLayout_3.addWidget(self.label_11, 3, 0, 1, 1)
|
||||
self.sb_nbCirconf = QtGui.QSpinBox(self.gb_discrSain)
|
||||
self.sb_nbCirconf.setMaximum(10000)
|
||||
self.sb_nbCirconf.setProperty("value", 20)
|
||||
self.sb_nbCirconf.setObjectName(_fromUtf8("sb_nbCirconf"))
|
||||
self.gridLayout_3.addWidget(self.sb_nbCirconf, 3, 1, 1, 1)
|
||||
self.label_13 = QtGui.QLabel(self.gb_discrSain)
|
||||
self.label_13.setObjectName(_fromUtf8("label_13"))
|
||||
self.gridLayout_3.addWidget(self.label_13, 4, 0, 1, 1)
|
||||
self.sb_nbEpaisseur = QtGui.QSpinBox(self.gb_discrSain)
|
||||
self.sb_nbEpaisseur.setMaximum(10000)
|
||||
self.sb_nbEpaisseur.setProperty("value", 3)
|
||||
self.sb_nbEpaisseur.setObjectName(_fromUtf8("sb_nbEpaisseur"))
|
||||
self.gridLayout_3.addWidget(self.sb_nbEpaisseur, 4, 1, 1, 1)
|
||||
self.verticalLayout.addLayout(self.gridLayout_3)
|
||||
self.gridLayout_4.addLayout(self.verticalLayout, 0, 0, 1, 1)
|
||||
self.verticalLayout_2.addWidget(self.gb_discrSain)
|
||||
spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
|
||||
self.verticalLayout_2.addItem(spacerItem)
|
||||
self.horizontalLayout_5.addLayout(self.verticalLayout_2)
|
||||
spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_5.addItem(spacerItem1)
|
||||
self.groupBox_2 = QtGui.QGroupBox(Dialog)
|
||||
self.groupBox_2.setObjectName(_fromUtf8("groupBox_2"))
|
||||
self.horizontalLayout_2 = QtGui.QHBoxLayout(self.groupBox_2)
|
||||
self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
|
||||
self.verticalLayout_4 = QtGui.QVBoxLayout()
|
||||
self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4"))
|
||||
self.groupBox_5 = QtGui.QGroupBox(self.groupBox_2)
|
||||
self.groupBox_5.setObjectName(_fromUtf8("groupBox_5"))
|
||||
self.gridLayout_12 = QtGui.QGridLayout(self.groupBox_5)
|
||||
self.gridLayout_12.setObjectName(_fromUtf8("gridLayout_12"))
|
||||
self.gridLayout_10 = QtGui.QGridLayout()
|
||||
self.gridLayout_10.setObjectName(_fromUtf8("gridLayout_10"))
|
||||
self.groupBox_4 = QtGui.QGroupBox(self.groupBox_5)
|
||||
self.groupBox_4.setObjectName(_fromUtf8("groupBox_4"))
|
||||
self.verticalLayout_7 = QtGui.QVBoxLayout(self.groupBox_4)
|
||||
self.verticalLayout_7.setObjectName(_fromUtf8("verticalLayout_7"))
|
||||
self.rb_fissInt = QtGui.QRadioButton(self.groupBox_4)
|
||||
self.rb_fissInt.setObjectName(_fromUtf8("rb_fissInt"))
|
||||
self.verticalLayout_7.addWidget(self.rb_fissInt)
|
||||
self.rb_fissExt = QtGui.QRadioButton(self.groupBox_4)
|
||||
self.rb_fissExt.setObjectName(_fromUtf8("rb_fissExt"))
|
||||
self.verticalLayout_7.addWidget(self.rb_fissExt)
|
||||
self.gridLayout_10.addWidget(self.groupBox_4, 0, 0, 1, 1)
|
||||
spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.gridLayout_10.addItem(spacerItem2, 0, 1, 1, 1)
|
||||
self.cb_forceEllipse = QtGui.QCheckBox(self.groupBox_5)
|
||||
self.cb_forceEllipse.setAccessibleDescription(_fromUtf8(""))
|
||||
self.cb_forceEllipse.setObjectName(_fromUtf8("cb_forceEllipse"))
|
||||
self.gridLayout_10.addWidget(self.cb_forceEllipse, 1, 0, 1, 1)
|
||||
spacerItem3 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.gridLayout_10.addItem(spacerItem3, 1, 1, 1, 1)
|
||||
self.gridLayout_12.addLayout(self.gridLayout_10, 0, 0, 1, 1)
|
||||
self.gridLayout_5 = QtGui.QGridLayout()
|
||||
self.gridLayout_5.setObjectName(_fromUtf8("gridLayout_5"))
|
||||
self.dsb_azimut = QtGui.QDoubleSpinBox(self.groupBox_5)
|
||||
self.dsb_azimut.setDecimals(5)
|
||||
self.dsb_azimut.setMinimum(-181.0)
|
||||
self.dsb_azimut.setMaximum(180.0)
|
||||
self.dsb_azimut.setProperty("value", -181.0)
|
||||
self.dsb_azimut.setObjectName(_fromUtf8("dsb_azimut"))
|
||||
self.gridLayout_5.addWidget(self.dsb_azimut, 2, 1, 1, 1)
|
||||
self.label_18 = QtGui.QLabel(self.groupBox_5)
|
||||
self.label_18.setObjectName(_fromUtf8("label_18"))
|
||||
self.gridLayout_5.addWidget(self.label_18, 0, 0, 1, 1)
|
||||
self.dsb_profondeur = QtGui.QDoubleSpinBox(self.groupBox_5)
|
||||
self.dsb_profondeur.setDecimals(5)
|
||||
self.dsb_profondeur.setMaximum(1000000.0)
|
||||
self.dsb_profondeur.setObjectName(_fromUtf8("dsb_profondeur"))
|
||||
self.gridLayout_5.addWidget(self.dsb_profondeur, 0, 1, 1, 1)
|
||||
self.label_19 = QtGui.QLabel(self.groupBox_5)
|
||||
self.label_19.setObjectName(_fromUtf8("label_19"))
|
||||
self.gridLayout_5.addWidget(self.label_19, 1, 0, 1, 1)
|
||||
self.label_14 = QtGui.QLabel(self.groupBox_5)
|
||||
self.label_14.setObjectName(_fromUtf8("label_14"))
|
||||
self.gridLayout_5.addWidget(self.label_14, 2, 0, 1, 1)
|
||||
self.label_15 = QtGui.QLabel(self.groupBox_5)
|
||||
self.label_15.setObjectName(_fromUtf8("label_15"))
|
||||
self.gridLayout_5.addWidget(self.label_15, 3, 0, 1, 1)
|
||||
self.dsb_orientation = QtGui.QDoubleSpinBox(self.groupBox_5)
|
||||
self.dsb_orientation.setDecimals(5)
|
||||
self.dsb_orientation.setMinimum(-1.0)
|
||||
self.dsb_orientation.setMaximum(90.0)
|
||||
self.dsb_orientation.setProperty("value", -1.0)
|
||||
self.dsb_orientation.setObjectName(_fromUtf8("dsb_orientation"))
|
||||
self.gridLayout_5.addWidget(self.dsb_orientation, 3, 1, 1, 1)
|
||||
self.dsb_longueur = QtGui.QDoubleSpinBox(self.groupBox_5)
|
||||
self.dsb_longueur.setDecimals(5)
|
||||
self.dsb_longueur.setMaximum(1000000.0)
|
||||
self.dsb_longueur.setObjectName(_fromUtf8("dsb_longueur"))
|
||||
self.gridLayout_5.addWidget(self.dsb_longueur, 1, 1, 1, 1)
|
||||
self.gridLayout_12.addLayout(self.gridLayout_5, 1, 0, 1, 1)
|
||||
self.groupBox_11 = QtGui.QGroupBox(self.groupBox_5)
|
||||
self.groupBox_11.setObjectName(_fromUtf8("groupBox_11"))
|
||||
self.gridLayout_11 = QtGui.QGridLayout(self.groupBox_11)
|
||||
self.gridLayout_11.setObjectName(_fromUtf8("gridLayout_11"))
|
||||
self.rb_absCurv = QtGui.QRadioButton(self.groupBox_11)
|
||||
self.rb_absCurv.setObjectName(_fromUtf8("rb_absCurv"))
|
||||
self.gridLayout_11.addWidget(self.rb_absCurv, 0, 0, 1, 1)
|
||||
self.rb_posiAngul = QtGui.QRadioButton(self.groupBox_11)
|
||||
self.rb_posiAngul.setObjectName(_fromUtf8("rb_posiAngul"))
|
||||
self.gridLayout_11.addWidget(self.rb_posiAngul, 1, 0, 1, 1)
|
||||
self.dsb_absCurv = QtGui.QDoubleSpinBox(self.groupBox_11)
|
||||
self.dsb_absCurv.setDecimals(5)
|
||||
self.dsb_absCurv.setMaximum(1000000.0)
|
||||
self.dsb_absCurv.setObjectName(_fromUtf8("dsb_absCurv"))
|
||||
self.gridLayout_11.addWidget(self.dsb_absCurv, 0, 1, 1, 1)
|
||||
self.dsb_posiAngul = QtGui.QDoubleSpinBox(self.groupBox_11)
|
||||
self.dsb_posiAngul.setDecimals(5)
|
||||
self.dsb_posiAngul.setMinimum(-181.0)
|
||||
self.dsb_posiAngul.setMaximum(180.0)
|
||||
self.dsb_posiAngul.setProperty("value", -181.0)
|
||||
self.dsb_posiAngul.setObjectName(_fromUtf8("dsb_posiAngul"))
|
||||
self.gridLayout_11.addWidget(self.dsb_posiAngul, 1, 1, 1, 1)
|
||||
self.gridLayout_12.addWidget(self.groupBox_11, 2, 0, 1, 1)
|
||||
self.verticalLayout_4.addWidget(self.groupBox_5)
|
||||
spacerItem4 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
|
||||
self.verticalLayout_4.addItem(spacerItem4)
|
||||
self.horizontalLayout_2.addLayout(self.verticalLayout_4)
|
||||
self.verticalLayout_6 = QtGui.QVBoxLayout()
|
||||
self.verticalLayout_6.setObjectName(_fromUtf8("verticalLayout_6"))
|
||||
self.groupBox_6 = QtGui.QGroupBox(self.groupBox_2)
|
||||
self.groupBox_6.setObjectName(_fromUtf8("groupBox_6"))
|
||||
self.gridLayout_7 = QtGui.QGridLayout(self.groupBox_6)
|
||||
self.gridLayout_7.setObjectName(_fromUtf8("gridLayout_7"))
|
||||
self.groupBox_8 = QtGui.QGroupBox(self.groupBox_6)
|
||||
self.groupBox_8.setObjectName(_fromUtf8("groupBox_8"))
|
||||
self.verticalLayout_5 = QtGui.QVBoxLayout(self.groupBox_8)
|
||||
self.verticalLayout_5.setObjectName(_fromUtf8("verticalLayout_5"))
|
||||
self.groupBox_9 = QtGui.QGroupBox(self.groupBox_8)
|
||||
self.groupBox_9.setObjectName(_fromUtf8("groupBox_9"))
|
||||
self.horizontalLayout_4 = QtGui.QHBoxLayout(self.groupBox_9)
|
||||
self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
|
||||
self.gridLayout_6 = QtGui.QGridLayout()
|
||||
self.gridLayout_6.setObjectName(_fromUtf8("gridLayout_6"))
|
||||
self.label_21 = QtGui.QLabel(self.groupBox_9)
|
||||
self.label_21.setObjectName(_fromUtf8("label_21"))
|
||||
self.gridLayout_6.addWidget(self.label_21, 1, 0, 1, 1)
|
||||
self.label_22 = QtGui.QLabel(self.groupBox_9)
|
||||
self.label_22.setObjectName(_fromUtf8("label_22"))
|
||||
self.gridLayout_6.addWidget(self.label_22, 2, 0, 1, 1)
|
||||
self.sb_nbCouronne = QtGui.QSpinBox(self.groupBox_9)
|
||||
self.sb_nbCouronne.setMinimum(1)
|
||||
self.sb_nbCouronne.setMaximum(10000)
|
||||
self.sb_nbCouronne.setProperty("value", 1)
|
||||
self.sb_nbCouronne.setObjectName(_fromUtf8("sb_nbCouronne"))
|
||||
self.gridLayout_6.addWidget(self.sb_nbCouronne, 2, 1, 1, 1)
|
||||
self.label_23 = QtGui.QLabel(self.groupBox_9)
|
||||
self.label_23.setObjectName(_fromUtf8("label_23"))
|
||||
self.gridLayout_6.addWidget(self.label_23, 3, 0, 1, 1)
|
||||
self.sb_nbSecteur = QtGui.QSpinBox(self.groupBox_9)
|
||||
self.sb_nbSecteur.setMinimum(3)
|
||||
self.sb_nbSecteur.setMaximum(10000)
|
||||
self.sb_nbSecteur.setProperty("value", 3)
|
||||
self.sb_nbSecteur.setObjectName(_fromUtf8("sb_nbSecteur"))
|
||||
self.gridLayout_6.addWidget(self.sb_nbSecteur, 3, 1, 1, 1)
|
||||
self.sb_nbTranches = QtGui.QSpinBox(self.groupBox_9)
|
||||
self.sb_nbTranches.setMinimum(7)
|
||||
self.sb_nbTranches.setMaximum(100000)
|
||||
self.sb_nbTranches.setProperty("value", 7)
|
||||
self.sb_nbTranches.setObjectName(_fromUtf8("sb_nbTranches"))
|
||||
self.gridLayout_6.addWidget(self.sb_nbTranches, 1, 1, 1, 1)
|
||||
self.label_20 = QtGui.QLabel(self.groupBox_9)
|
||||
self.label_20.setObjectName(_fromUtf8("label_20"))
|
||||
self.gridLayout_6.addWidget(self.label_20, 4, 0, 1, 1)
|
||||
self.dsb_rayonTore = QtGui.QDoubleSpinBox(self.groupBox_9)
|
||||
self.dsb_rayonTore.setEnabled(False)
|
||||
self.dsb_rayonTore.setDecimals(5)
|
||||
self.dsb_rayonTore.setMaximum(1000000.0)
|
||||
self.dsb_rayonTore.setProperty("value", 2.0)
|
||||
self.dsb_rayonTore.setObjectName(_fromUtf8("dsb_rayonTore"))
|
||||
self.gridLayout_6.addWidget(self.dsb_rayonTore, 4, 1, 1, 1)
|
||||
self.horizontalLayout_4.addLayout(self.gridLayout_6)
|
||||
spacerItem5 = QtGui.QSpacerItem(6, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_4.addItem(spacerItem5)
|
||||
self.verticalLayout_5.addWidget(self.groupBox_9)
|
||||
self.cb_optDiscrFiss = QtGui.QCheckBox(self.groupBox_8)
|
||||
self.cb_optDiscrFiss.setObjectName(_fromUtf8("cb_optDiscrFiss"))
|
||||
self.verticalLayout_5.addWidget(self.cb_optDiscrFiss)
|
||||
self.gb_discrFacesExternes = QtGui.QGroupBox(self.groupBox_8)
|
||||
self.gb_discrFacesExternes.setEnabled(True)
|
||||
self.gb_discrFacesExternes.setObjectName(_fromUtf8("gb_discrFacesExternes"))
|
||||
self.horizontalLayout_3 = QtGui.QHBoxLayout(self.gb_discrFacesExternes)
|
||||
self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
|
||||
self.label_24 = QtGui.QLabel(self.gb_discrFacesExternes)
|
||||
self.label_24.setObjectName(_fromUtf8("label_24"))
|
||||
self.horizontalLayout_3.addWidget(self.label_24)
|
||||
self.dsb_aretesFaceFissure = QtGui.QDoubleSpinBox(self.gb_discrFacesExternes)
|
||||
self.dsb_aretesFaceFissure.setDecimals(5)
|
||||
self.dsb_aretesFaceFissure.setMaximum(1000000.0)
|
||||
self.dsb_aretesFaceFissure.setObjectName(_fromUtf8("dsb_aretesFaceFissure"))
|
||||
self.horizontalLayout_3.addWidget(self.dsb_aretesFaceFissure)
|
||||
spacerItem6 = QtGui.QSpacerItem(1, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_3.addItem(spacerItem6)
|
||||
self.verticalLayout_5.addWidget(self.gb_discrFacesExternes)
|
||||
self.gridLayout_7.addWidget(self.groupBox_8, 1, 0, 1, 2)
|
||||
self.gb_zoneRemail = QtGui.QGroupBox(self.groupBox_6)
|
||||
self.gb_zoneRemail.setEnabled(True)
|
||||
self.gb_zoneRemail.setObjectName(_fromUtf8("gb_zoneRemail"))
|
||||
self.gridLayout_16 = QtGui.QGridLayout(self.gb_zoneRemail)
|
||||
self.gridLayout_16.setObjectName(_fromUtf8("gridLayout_16"))
|
||||
self.gridLayout_17 = QtGui.QGridLayout()
|
||||
self.gridLayout_17.setObjectName(_fromUtf8("gridLayout_17"))
|
||||
self.dsb_influence = QtGui.QDoubleSpinBox(self.gb_zoneRemail)
|
||||
self.dsb_influence.setDecimals(5)
|
||||
self.dsb_influence.setMaximum(1000000.0)
|
||||
self.dsb_influence.setObjectName(_fromUtf8("dsb_influence"))
|
||||
self.gridLayout_17.addWidget(self.dsb_influence, 1, 1, 1, 1)
|
||||
self.label_25 = QtGui.QLabel(self.gb_zoneRemail)
|
||||
self.label_25.setObjectName(_fromUtf8("label_25"))
|
||||
self.gridLayout_17.addWidget(self.label_25, 1, 0, 1, 1)
|
||||
self.gridLayout_16.addLayout(self.gridLayout_17, 0, 0, 1, 1)
|
||||
spacerItem7 = QtGui.QSpacerItem(47, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.gridLayout_16.addItem(spacerItem7, 0, 1, 1, 1)
|
||||
self.gridLayout_7.addWidget(self.gb_zoneRemail, 2, 0, 1, 1)
|
||||
self.verticalLayout_6.addWidget(self.groupBox_6)
|
||||
spacerItem8 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
|
||||
self.verticalLayout_6.addItem(spacerItem8)
|
||||
self.horizontalLayout_2.addLayout(self.verticalLayout_6)
|
||||
self.horizontalLayout_5.addWidget(self.groupBox_2)
|
||||
self.gridLayout_8.addLayout(self.horizontalLayout_5, 0, 0, 1, 1)
|
||||
self.horizontalLayout_6 = QtGui.QHBoxLayout()
|
||||
self.horizontalLayout_6.setObjectName(_fromUtf8("horizontalLayout_6"))
|
||||
spacerItem9 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_6.addItem(spacerItem9)
|
||||
self.lb_calcul = QtGui.QLabel(Dialog)
|
||||
font = QtGui.QFont()
|
||||
font.setPointSize(24)
|
||||
self.lb_calcul.setFont(font)
|
||||
self.lb_calcul.setObjectName(_fromUtf8("lb_calcul"))
|
||||
self.horizontalLayout_6.addWidget(self.lb_calcul)
|
||||
spacerItem10 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_6.addItem(spacerItem10)
|
||||
self.gridLayout_8.addLayout(self.horizontalLayout_6, 1, 0, 1, 1)
|
||||
spacerItem11 = QtGui.QSpacerItem(20, 4, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
|
||||
self.gridLayout_8.addItem(spacerItem11, 2, 0, 1, 1)
|
||||
self.horizontalLayout = QtGui.QHBoxLayout()
|
||||
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
|
||||
self.pb_reset = QtGui.QPushButton(Dialog)
|
||||
self.pb_reset.setObjectName(_fromUtf8("pb_reset"))
|
||||
self.horizontalLayout.addWidget(self.pb_reset)
|
||||
self.pb_valPrec = QtGui.QPushButton(Dialog)
|
||||
self.pb_valPrec.setObjectName(_fromUtf8("pb_valPrec"))
|
||||
self.horizontalLayout.addWidget(self.pb_valPrec)
|
||||
self.pb_recharger = QtGui.QPushButton(Dialog)
|
||||
self.pb_recharger.setObjectName(_fromUtf8("pb_recharger"))
|
||||
self.horizontalLayout.addWidget(self.pb_recharger)
|
||||
self.pb_sauver = QtGui.QPushButton(Dialog)
|
||||
self.pb_sauver.setObjectName(_fromUtf8("pb_sauver"))
|
||||
self.horizontalLayout.addWidget(self.pb_sauver)
|
||||
spacerItem12 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.horizontalLayout.addItem(spacerItem12)
|
||||
self.buttonBox = QtGui.QDialogButtonBox(Dialog)
|
||||
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
|
||||
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
|
||||
self.buttonBox.setObjectName(_fromUtf8("buttonBox"))
|
||||
self.horizontalLayout.addWidget(self.buttonBox)
|
||||
self.gridLayout_8.addLayout(self.horizontalLayout, 3, 0, 1, 1)
|
||||
|
||||
self.retranslateUi(Dialog)
|
||||
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), Dialog.accept)
|
||||
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), Dialog.reject)
|
||||
QtCore.QObject.connect(self.cb_optDiscrSain, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.gb_discrSain.setShown)
|
||||
QtCore.QObject.connect(self.cb_optDiscrFiss, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.gb_discrFacesExternes.setShown)
|
||||
QtCore.QObject.connect(self.cb_optDiscrFiss, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.gb_zoneRemail.setShown)
|
||||
QtCore.QObject.connect(self.cb_optDiscrFiss, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.dsb_rayonTore.setEnabled)
|
||||
QtCore.QObject.connect(self.rb_absCurv, QtCore.SIGNAL(_fromUtf8("toggled(bool)")), self.dsb_absCurv.setEnabled)
|
||||
QtCore.QObject.connect(self.rb_posiAngul, QtCore.SIGNAL(_fromUtf8("toggled(bool)")), self.dsb_posiAngul.setEnabled)
|
||||
QtCore.QMetaObject.connectSlotsByName(Dialog)
|
||||
|
||||
def retranslateUi(self, Dialog):
|
||||
Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
|
||||
self.groupBox.setTitle(_translate("Dialog", "Coude Sain", None))
|
||||
self.groupBox_3.setTitle(_translate("Dialog", "Géométrie", None))
|
||||
self.label_3.setText(_translate("Dialog", "L_TUBE_P1", None))
|
||||
self.dsb_angle.setToolTip(_translate("Dialog", "Valeur de l\'angle du coude en degrés", None))
|
||||
self.label_2.setText(_translate("Dialog", "R_CINTR", None))
|
||||
self.label_5.setText(_translate("Dialog", "EPAIS", None))
|
||||
self.dsb_epais.setToolTip(_translate("Dialog", "Valeur de l’épaisseur du coude et des embouts", None))
|
||||
self.label_4.setText(_translate("Dialog", "L_TUBE_P2", None))
|
||||
self.dsb_lTubeP2.setToolTip(_translate("Dialog", "Valeur de la longueur de l’embout P2 à l’extrémité duquel seront appliqués les chargements", None))
|
||||
self.label_6.setText(_translate("Dialog", "DEXT", None))
|
||||
self.label.setText(_translate("Dialog", "ANGLE", None))
|
||||
self.dsb_dext.setToolTip(_translate("Dialog", "Valeur du diamètre externe du coude et des embouts droits", None))
|
||||
self.dsb_lTubeP1.setToolTip(_translate("Dialog", "Valeur de la longueur de l’embout P1 à l’extrémité duquel seront appliqués les chargements", None))
|
||||
self.dsb_rCintr.setToolTip(_translate("Dialog", "Valeur du rayon de cintrage du coude", None))
|
||||
self.cb_optDiscrSain.setToolTip(_translate("Dialog", "Paramètres optionnels de discretisation", None))
|
||||
self.cb_optDiscrSain.setText(_translate("Dialog", "Options de discretisation", None))
|
||||
self.gb_discrSain.setTitle(_translate("Dialog", "Maillage", None))
|
||||
self.label_7.setText(_translate("Dialog", "Nombres de segments", None))
|
||||
self.label_8.setText(_translate("Dialog", "NB_AXE_TUBE_P1", None))
|
||||
self.sb_nbAxeTubeP1.setToolTip(_translate("Dialog", "Nombre d’éléments le long de l’embout P1", None))
|
||||
self.label_9.setText(_translate("Dialog", "NB_AXE_TUBE_P2", None))
|
||||
self.sb_nbAxeTubeP2.setToolTip(_translate("Dialog", "Nombre d’éléments le long de l’embout P2", None))
|
||||
self.label_10.setText(_translate("Dialog", "NB_AXE_COUDE", None))
|
||||
self.sb_nbAxeCoude.setToolTip(_translate("Dialog", "Nombre d’éléments le long de l’axe du coude", None))
|
||||
self.label_11.setText(_translate("Dialog", "NB_CIRCONF", None))
|
||||
self.sb_nbCirconf.setToolTip(_translate("Dialog", "<html><head/><body><p>Nombre d’éléments le long de la circonférence</p><p>(nombre pair)</p></body></html>", None))
|
||||
self.label_13.setText(_translate("Dialog", "NB_EPAISSEUR", None))
|
||||
self.sb_nbEpaisseur.setToolTip(_translate("Dialog", "Nombre d\'éléments dans l\'épaisseur", None))
|
||||
self.groupBox_2.setTitle(_translate("Dialog", "Fissure", None))
|
||||
self.groupBox_5.setTitle(_translate("Dialog", "Géométrie fissure", None))
|
||||
self.groupBox_4.setTitle(_translate("Dialog", "position", None))
|
||||
self.rb_fissInt.setToolTip(_translate("Dialog", "<html><head/><body><p>Fissure positionnée sur la face interne</p></body></html>", None))
|
||||
self.rb_fissInt.setText(_translate("Dialog", "fissure interne", None))
|
||||
self.rb_fissExt.setToolTip(_translate("Dialog", "<html><head/><body><p>Fissure positionnée sur la face externe</p></body></html>", None))
|
||||
self.rb_fissExt.setText(_translate("Dialog", "fissure externe", None))
|
||||
self.cb_forceEllipse.setToolTip(_translate("Dialog", "<html><head/><body><p>Forcer une fissure de forme elliptique, même si elle est longue</p></body></html>", None))
|
||||
self.cb_forceEllipse.setText(_translate("Dialog", "forcer elliptique", None))
|
||||
self.dsb_azimut.setToolTip(_translate("Dialog", "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", None))
|
||||
self.label_18.setText(_translate("Dialog", "PROFONDEUR", None))
|
||||
self.dsb_profondeur.setToolTip(_translate("Dialog", "<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>", None))
|
||||
self.label_19.setText(_translate("Dialog", "LONGUEUR", None))
|
||||
self.label_14.setText(_translate("Dialog", "AZIMUT", None))
|
||||
self.label_15.setText(_translate("Dialog", "ORIEN", None))
|
||||
self.dsb_orientation.setToolTip(_translate("Dialog", "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", None))
|
||||
self.dsb_longueur.setToolTip(_translate("Dialog", "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", None))
|
||||
self.groupBox_11.setTitle(_translate("Dialog", "position longitudinale", None))
|
||||
self.rb_absCurv.setToolTip(_translate("Dialog", "Définition de la position longitudinale par une abscisse curiviligne", None))
|
||||
self.rb_absCurv.setText(_translate("Dialog", "ABS_CURV", None))
|
||||
self.rb_posiAngul.setToolTip(_translate("Dialog", "Définition de la position longitudinale par un angle", None))
|
||||
self.rb_posiAngul.setText(_translate("Dialog", "POSI_ANGUL", None))
|
||||
self.dsb_absCurv.setToolTip(_translate("Dialog", "<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>", None))
|
||||
self.dsb_posiAngul.setToolTip(_translate("Dialog", "<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>", None))
|
||||
self.groupBox_6.setTitle(_translate("Dialog", "Maillage fissure", None))
|
||||
self.groupBox_8.setTitle(_translate("Dialog", "maillage zone de fissure", None))
|
||||
self.groupBox_9.setTitle(_translate("Dialog", "pipe rayonnant", None))
|
||||
self.label_21.setText(_translate("Dialog", "NB_TRANCHES", None))
|
||||
self.label_22.setText(_translate("Dialog", "NB_COURONNE", None))
|
||||
self.sb_nbCouronne.setToolTip(_translate("Dialog", "<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>", None))
|
||||
self.label_23.setText(_translate("Dialog", "NB_SECTEUR", None))
|
||||
self.sb_nbSecteur.setToolTip(_translate("Dialog", "<html><head/><body><p>Pipe rayonnant construit sur le fond de fissure :</p><p>nombre de secteurs selon un cercle normal au fond de fissure.</p></body></html>", None))
|
||||
self.sb_nbTranches.setToolTip(_translate("Dialog", "<html><head/><body><p>Pipe rayonnant construit sur le fond de fissure :</p><p>Nombre de mailles (approximatif) le long de la ligne de fond de fissure.</p></body></html>", None))
|
||||
self.label_20.setText(_translate("Dialog", "RAYON_TORE", None))
|
||||
self.dsb_rayonTore.setToolTip(_translate("Dialog", "<html><head/><body><p>Pipe rayonnant construit sur le fond de fissure :</p><p>Rayon du pipe.</p></body></html>", None))
|
||||
self.cb_optDiscrFiss.setToolTip(_translate("Dialog", "Paramètres optionnels de discrétisation", None))
|
||||
self.cb_optDiscrFiss.setText(_translate("Dialog", "Options de discretisation", None))
|
||||
self.gb_discrFacesExternes.setTitle(_translate("Dialog", "faces externes", None))
|
||||
self.label_24.setText(_translate("Dialog", "aretes face fissure", None))
|
||||
self.dsb_aretesFaceFissure.setToolTip(_translate("Dialog", "<html><head/><body><p>Faces externes de la zone à remailler.</p><p>Mailage en triangles : valeur cible des arêtes.</p></body></html>", None))
|
||||
self.gb_zoneRemail.setTitle(_translate("Dialog", "identification zone à remailler", None))
|
||||
self.dsb_influence.setToolTip(_translate("Dialog", "<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>", None))
|
||||
self.label_25.setText(_translate("Dialog", "distance influence", None))
|
||||
self.lb_calcul.setText(_translate("Dialog", "--- Calcul en cours ---", None))
|
||||
self.pb_reset.setToolTip(_translate("Dialog", "réinitialisation de tous les paramètres à leur valeur par défaut", None))
|
||||
self.pb_reset.setText(_translate("Dialog", "Reset", None))
|
||||
self.pb_valPrec.setToolTip(_translate("Dialog", "réinitialisation de tous les paramètres à leur valeur de la précédente éxécution", None))
|
||||
self.pb_valPrec.setText(_translate("Dialog", "Précédent", None))
|
||||
self.pb_recharger.setToolTip(_translate("Dialog", "réinitialisation des paramètres à partir d\'un fichier préalablement sauvegardé", None))
|
||||
self.pb_recharger.setText(_translate("Dialog", "Recharger", None))
|
||||
self.pb_sauver.setToolTip(_translate("Dialog", "sauvegarde des paramètres dans un fichier à choisir", None))
|
||||
self.pb_sauver.setText(_translate("Dialog", "Sauver", None))
|
||||
|
220
src/Tools/blocFissure/ihm/fissureGenerale_ui.py
Normal file
220
src/Tools/blocFissure/ihm/fissureGenerale_ui.py
Normal file
@ -0,0 +1,220 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file '/scratch/I27518/V7_3_build/V7_3_0/modules/src/SMESH_V7_3_0p2/src/Tools/blocFissure/ihm/fissureGenerale.ui'
|
||||
#
|
||||
# Created: Wed Mar 5 09:49:21 2014
|
||||
# by: PyQt4 UI code generator 4.9.6
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
try:
|
||||
_fromUtf8 = QtCore.QString.fromUtf8
|
||||
except AttributeError:
|
||||
def _fromUtf8(s):
|
||||
return s
|
||||
|
||||
try:
|
||||
_encoding = QtGui.QApplication.UnicodeUTF8
|
||||
def _translate(context, text, disambig):
|
||||
return QtGui.QApplication.translate(context, text, disambig, _encoding)
|
||||
except AttributeError:
|
||||
def _translate(context, text, disambig):
|
||||
return QtGui.QApplication.translate(context, text, disambig)
|
||||
|
||||
class Ui_Dialog(object):
|
||||
def setupUi(self, Dialog):
|
||||
Dialog.setObjectName(_fromUtf8("Dialog"))
|
||||
Dialog.resize(631, 490)
|
||||
self.gridLayout_11 = QtGui.QGridLayout(Dialog)
|
||||
self.gridLayout_11.setObjectName(_fromUtf8("gridLayout_11"))
|
||||
self.groupBox = QtGui.QGroupBox(Dialog)
|
||||
self.groupBox.setObjectName(_fromUtf8("groupBox"))
|
||||
self.gridLayout_4 = QtGui.QGridLayout(self.groupBox)
|
||||
self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4"))
|
||||
self.gridLayout = QtGui.QGridLayout()
|
||||
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
|
||||
self.pb_maillage = QtGui.QPushButton(self.groupBox)
|
||||
self.pb_maillage.setObjectName(_fromUtf8("pb_maillage"))
|
||||
self.gridLayout.addWidget(self.pb_maillage, 0, 0, 1, 1)
|
||||
self.le_maillage = QtGui.QLineEdit(self.groupBox)
|
||||
self.le_maillage.setObjectName(_fromUtf8("le_maillage"))
|
||||
self.gridLayout.addWidget(self.le_maillage, 0, 1, 1, 1)
|
||||
self.pb_facefiss = QtGui.QPushButton(self.groupBox)
|
||||
self.pb_facefiss.setObjectName(_fromUtf8("pb_facefiss"))
|
||||
self.gridLayout.addWidget(self.pb_facefiss, 1, 0, 1, 1)
|
||||
self.le_facefiss = QtGui.QLineEdit(self.groupBox)
|
||||
self.le_facefiss.setObjectName(_fromUtf8("le_facefiss"))
|
||||
self.gridLayout.addWidget(self.le_facefiss, 1, 1, 1, 1)
|
||||
self.gridLayout_4.addLayout(self.gridLayout, 0, 0, 1, 1)
|
||||
self.horizontalLayout = QtGui.QHBoxLayout()
|
||||
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
|
||||
self.label = QtGui.QLabel(self.groupBox)
|
||||
self.label.setObjectName(_fromUtf8("label"))
|
||||
self.horizontalLayout.addWidget(self.label)
|
||||
self.le_fondfiss = QtGui.QLineEdit(self.groupBox)
|
||||
self.le_fondfiss.setObjectName(_fromUtf8("le_fondfiss"))
|
||||
self.horizontalLayout.addWidget(self.le_fondfiss)
|
||||
spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.horizontalLayout.addItem(spacerItem)
|
||||
self.gridLayout_4.addLayout(self.horizontalLayout, 1, 0, 1, 1)
|
||||
self.gridLayout_11.addWidget(self.groupBox, 0, 0, 1, 2)
|
||||
self.gridLayout_10 = QtGui.QGridLayout()
|
||||
self.gridLayout_10.setObjectName(_fromUtf8("gridLayout_10"))
|
||||
self.groupBox_2 = QtGui.QGroupBox(Dialog)
|
||||
self.groupBox_2.setObjectName(_fromUtf8("groupBox_2"))
|
||||
self.gridLayout_12 = QtGui.QGridLayout(self.groupBox_2)
|
||||
self.gridLayout_12.setObjectName(_fromUtf8("gridLayout_12"))
|
||||
self.gridLayout_6 = QtGui.QGridLayout()
|
||||
self.gridLayout_6.setObjectName(_fromUtf8("gridLayout_6"))
|
||||
self.label_2 = QtGui.QLabel(self.groupBox_2)
|
||||
self.label_2.setObjectName(_fromUtf8("label_2"))
|
||||
self.gridLayout_6.addWidget(self.label_2, 0, 0, 1, 1)
|
||||
self.dsb_influence = QtGui.QDoubleSpinBox(self.groupBox_2)
|
||||
self.dsb_influence.setObjectName(_fromUtf8("dsb_influence"))
|
||||
self.gridLayout_6.addWidget(self.dsb_influence, 0, 1, 1, 1)
|
||||
self.gridLayout_12.addLayout(self.gridLayout_6, 0, 0, 1, 1)
|
||||
spacerItem1 = QtGui.QSpacerItem(0, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.gridLayout_12.addItem(spacerItem1, 0, 1, 1, 1)
|
||||
self.groupBox_3 = QtGui.QGroupBox(self.groupBox_2)
|
||||
self.groupBox_3.setObjectName(_fromUtf8("groupBox_3"))
|
||||
self.gridLayout_5 = QtGui.QGridLayout(self.groupBox_3)
|
||||
self.gridLayout_5.setObjectName(_fromUtf8("gridLayout_5"))
|
||||
self.gridLayout_2 = QtGui.QGridLayout()
|
||||
self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
|
||||
self.label_3 = QtGui.QLabel(self.groupBox_3)
|
||||
self.label_3.setObjectName(_fromUtf8("label_3"))
|
||||
self.gridLayout_2.addWidget(self.label_3, 0, 0, 1, 1)
|
||||
self.dsb_meshBrepMin = QtGui.QDoubleSpinBox(self.groupBox_3)
|
||||
self.dsb_meshBrepMin.setMaximum(1000000.0)
|
||||
self.dsb_meshBrepMin.setObjectName(_fromUtf8("dsb_meshBrepMin"))
|
||||
self.gridLayout_2.addWidget(self.dsb_meshBrepMin, 0, 1, 1, 1)
|
||||
self.label_4 = QtGui.QLabel(self.groupBox_3)
|
||||
self.label_4.setObjectName(_fromUtf8("label_4"))
|
||||
self.gridLayout_2.addWidget(self.label_4, 1, 0, 1, 1)
|
||||
self.dsb_meshBrepMax = QtGui.QDoubleSpinBox(self.groupBox_3)
|
||||
self.dsb_meshBrepMax.setMaximum(1000000.0)
|
||||
self.dsb_meshBrepMax.setObjectName(_fromUtf8("dsb_meshBrepMax"))
|
||||
self.gridLayout_2.addWidget(self.dsb_meshBrepMax, 1, 1, 1, 1)
|
||||
self.gridLayout_5.addLayout(self.gridLayout_2, 0, 0, 1, 1)
|
||||
spacerItem2 = QtGui.QSpacerItem(34, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.gridLayout_5.addItem(spacerItem2, 0, 1, 1, 1)
|
||||
self.gridLayout_12.addWidget(self.groupBox_3, 1, 0, 1, 2)
|
||||
self.gridLayout_10.addWidget(self.groupBox_2, 0, 0, 1, 1)
|
||||
self.groupBox_4 = QtGui.QGroupBox(Dialog)
|
||||
self.groupBox_4.setObjectName(_fromUtf8("groupBox_4"))
|
||||
self.gridLayout_9 = QtGui.QGridLayout(self.groupBox_4)
|
||||
self.gridLayout_9.setObjectName(_fromUtf8("gridLayout_9"))
|
||||
self.groupBox_5 = QtGui.QGroupBox(self.groupBox_4)
|
||||
self.groupBox_5.setObjectName(_fromUtf8("groupBox_5"))
|
||||
self.gridLayout_7 = QtGui.QGridLayout(self.groupBox_5)
|
||||
self.gridLayout_7.setObjectName(_fromUtf8("gridLayout_7"))
|
||||
self.gridLayout_3 = QtGui.QGridLayout()
|
||||
self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3"))
|
||||
self.label_5 = QtGui.QLabel(self.groupBox_5)
|
||||
self.label_5.setObjectName(_fromUtf8("label_5"))
|
||||
self.gridLayout_3.addWidget(self.label_5, 0, 0, 1, 1)
|
||||
self.dsb_rayonPipe = QtGui.QDoubleSpinBox(self.groupBox_5)
|
||||
self.dsb_rayonPipe.setMaximum(1000000.0)
|
||||
self.dsb_rayonPipe.setObjectName(_fromUtf8("dsb_rayonPipe"))
|
||||
self.gridLayout_3.addWidget(self.dsb_rayonPipe, 0, 1, 1, 1)
|
||||
self.label_6 = QtGui.QLabel(self.groupBox_5)
|
||||
self.label_6.setObjectName(_fromUtf8("label_6"))
|
||||
self.gridLayout_3.addWidget(self.label_6, 1, 0, 1, 1)
|
||||
self.dsb_lenSegPipe = QtGui.QDoubleSpinBox(self.groupBox_5)
|
||||
self.dsb_lenSegPipe.setMaximum(1000000.0)
|
||||
self.dsb_lenSegPipe.setObjectName(_fromUtf8("dsb_lenSegPipe"))
|
||||
self.gridLayout_3.addWidget(self.dsb_lenSegPipe, 1, 1, 1, 1)
|
||||
self.label_7 = QtGui.QLabel(self.groupBox_5)
|
||||
self.label_7.setObjectName(_fromUtf8("label_7"))
|
||||
self.gridLayout_3.addWidget(self.label_7, 2, 0, 1, 1)
|
||||
self.sb_couronnes = QtGui.QSpinBox(self.groupBox_5)
|
||||
self.sb_couronnes.setMinimum(2)
|
||||
self.sb_couronnes.setMaximum(10000)
|
||||
self.sb_couronnes.setProperty("value", 4)
|
||||
self.sb_couronnes.setObjectName(_fromUtf8("sb_couronnes"))
|
||||
self.gridLayout_3.addWidget(self.sb_couronnes, 2, 1, 1, 1)
|
||||
self.label_8 = QtGui.QLabel(self.groupBox_5)
|
||||
self.label_8.setObjectName(_fromUtf8("label_8"))
|
||||
self.gridLayout_3.addWidget(self.label_8, 3, 0, 1, 1)
|
||||
self.sb_secteurs = QtGui.QSpinBox(self.groupBox_5)
|
||||
self.sb_secteurs.setMinimum(4)
|
||||
self.sb_secteurs.setMaximum(10000)
|
||||
self.sb_secteurs.setProperty("value", 8)
|
||||
self.sb_secteurs.setObjectName(_fromUtf8("sb_secteurs"))
|
||||
self.gridLayout_3.addWidget(self.sb_secteurs, 3, 1, 1, 1)
|
||||
self.gridLayout_7.addLayout(self.gridLayout_3, 0, 0, 1, 1)
|
||||
spacerItem3 = QtGui.QSpacerItem(6, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.gridLayout_7.addItem(spacerItem3, 0, 1, 1, 1)
|
||||
self.gridLayout_9.addWidget(self.groupBox_5, 0, 0, 1, 1)
|
||||
self.groupBox_6 = QtGui.QGroupBox(self.groupBox_4)
|
||||
self.groupBox_6.setObjectName(_fromUtf8("groupBox_6"))
|
||||
self.gridLayout_8 = QtGui.QGridLayout(self.groupBox_6)
|
||||
self.gridLayout_8.setObjectName(_fromUtf8("gridLayout_8"))
|
||||
self.label_9 = QtGui.QLabel(self.groupBox_6)
|
||||
self.label_9.setObjectName(_fromUtf8("label_9"))
|
||||
self.gridLayout_8.addWidget(self.label_9, 0, 0, 1, 1)
|
||||
self.dsb_areteFaceFissure = QtGui.QDoubleSpinBox(self.groupBox_6)
|
||||
self.dsb_areteFaceFissure.setMaximum(1000000.0)
|
||||
self.dsb_areteFaceFissure.setObjectName(_fromUtf8("dsb_areteFaceFissure"))
|
||||
self.gridLayout_8.addWidget(self.dsb_areteFaceFissure, 0, 1, 1, 1)
|
||||
spacerItem4 = QtGui.QSpacerItem(1, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.gridLayout_8.addItem(spacerItem4, 0, 2, 1, 1)
|
||||
self.gridLayout_9.addWidget(self.groupBox_6, 1, 0, 1, 1)
|
||||
self.gridLayout_10.addWidget(self.groupBox_4, 0, 1, 2, 1)
|
||||
spacerItem5 = QtGui.QSpacerItem(20, 112, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
|
||||
self.gridLayout_10.addItem(spacerItem5, 1, 0, 1, 1)
|
||||
self.gridLayout_11.addLayout(self.gridLayout_10, 1, 0, 1, 2)
|
||||
spacerItem6 = QtGui.QSpacerItem(20, 13, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
|
||||
self.gridLayout_11.addItem(spacerItem6, 2, 1, 1, 1)
|
||||
self.horizontalLayout_5 = QtGui.QHBoxLayout()
|
||||
self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5"))
|
||||
spacerItem7 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.horizontalLayout_5.addItem(spacerItem7)
|
||||
self.bb_OkCancel = QtGui.QDialogButtonBox(Dialog)
|
||||
self.bb_OkCancel.setOrientation(QtCore.Qt.Horizontal)
|
||||
self.bb_OkCancel.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
|
||||
self.bb_OkCancel.setObjectName(_fromUtf8("bb_OkCancel"))
|
||||
self.horizontalLayout_5.addWidget(self.bb_OkCancel)
|
||||
self.gridLayout_11.addLayout(self.horizontalLayout_5, 3, 0, 1, 1)
|
||||
|
||||
self.retranslateUi(Dialog)
|
||||
QtCore.QObject.connect(self.bb_OkCancel, QtCore.SIGNAL(_fromUtf8("accepted()")), Dialog.accept)
|
||||
QtCore.QObject.connect(self.bb_OkCancel, QtCore.SIGNAL(_fromUtf8("rejected()")), Dialog.reject)
|
||||
QtCore.QMetaObject.connectSlotsByName(Dialog)
|
||||
|
||||
def retranslateUi(self, Dialog):
|
||||
Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
|
||||
Dialog.setToolTip(_translate("Dialog", "<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>", None))
|
||||
self.groupBox.setTitle(_translate("Dialog", "maillage sain et géometries de fissure", None))
|
||||
self.pb_maillage.setToolTip(_translate("Dialog", "<html><head/><body><p>sélection du fichier med du maillage sain (hexaèdres)</p></body></html>", None))
|
||||
self.pb_maillage.setText(_translate("Dialog", "maillage sain", None))
|
||||
self.le_maillage.setToolTip(_translate("Dialog", "<html><head/><body><p>fichier med du maillage sain (hexaèdres)</p></body></html>", None))
|
||||
self.pb_facefiss.setToolTip(_translate("Dialog", "<html><head/><body><p>sélection du fichier brep (géométrie) décrivant la face de fissure.</p></body></html>", None))
|
||||
self.pb_facefiss.setText(_translate("Dialog", "face fissure", None))
|
||||
self.le_facefiss.setToolTip(_translate("Dialog", "<html><head/><body><p>fichier brep (géométrie) décrivant la face de fissure.</p></body></html>", None))
|
||||
self.label.setText(_translate("Dialog", "index edges fond fissure", None))
|
||||
self.le_fondfiss.setToolTip(_translate("Dialog", "<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=\" color:#00ffff;\"/><span style=\" font-style:italic; color:#00ffff;\">[5,9]</span> ou <span style=\" font-style:italic; color:#00ffff;\">[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>", None))
|
||||
self.groupBox_2.setTitle(_translate("Dialog", "identification zone à remailler", None))
|
||||
self.label_2.setText(_translate("Dialog", "distance influence", None))
|
||||
self.dsb_influence.setToolTip(_translate("Dialog", "<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>", None))
|
||||
self.groupBox_3.setTitle(_translate("Dialog", "prémaillage face fissure", None))
|
||||
self.label_3.setText(_translate("Dialog", "min", None))
|
||||
self.dsb_meshBrepMin.setToolTip(_translate("Dialog", "<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>", None))
|
||||
self.label_4.setText(_translate("Dialog", "max", None))
|
||||
self.dsb_meshBrepMax.setToolTip(_translate("Dialog", "<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>", None))
|
||||
self.groupBox_4.setTitle(_translate("Dialog", "maillage zone de fissure", None))
|
||||
self.groupBox_5.setTitle(_translate("Dialog", "pipe rayonnant", None))
|
||||
self.label_5.setText(_translate("Dialog", "rayon pipe", None))
|
||||
self.dsb_rayonPipe.setToolTip(_translate("Dialog", "<html><head/><body><p>Pipe rayonnant construit sur le fond de fissure :</p><p>Rayon du pipe.</p></body></html>", None))
|
||||
self.label_6.setText(_translate("Dialog", "longueur mailles", None))
|
||||
self.dsb_lenSegPipe.setToolTip(_translate("Dialog", "<html><head/><body><p>Pipe rayonnant construit sur le fond de fissure :</p><p>Longueur des mailles le long de la ligne de fond de fissure.</p></body></html>", None))
|
||||
self.label_7.setText(_translate("Dialog", "couronnes", None))
|
||||
self.sb_couronnes.setToolTip(_translate("Dialog", "<html><head/><body><p>Pipe rayonnant construit sur le fond de fissure :</p><p>nombre de couronnes de mailles autour de la ligne de fond de fissure.</p></body></html>", None))
|
||||
self.label_8.setText(_translate("Dialog", "secteurs", None))
|
||||
self.sb_secteurs.setToolTip(_translate("Dialog", "<html><head/><body><p>Pipe rayonnant construit sur le fond de fissure :</p><p>nombre de secteurs selon un cercle normal au fond de fissure.</p></body></html>", None))
|
||||
self.groupBox_6.setTitle(_translate("Dialog", "faces externes", None))
|
||||
self.label_9.setText(_translate("Dialog", "aretes face fissure", None))
|
||||
self.dsb_areteFaceFissure.setToolTip(_translate("Dialog", "<html><head/><body><p>Faces externes de la zone à remailler.</p><p>Mailage en triangles : valeur cible des arêtes.</p></body></html>", None))
|
||||
|
29
src/Tools/blocFissure/lanceurCasTestCoinTriple.py
Normal file
29
src/Tools/blocFissure/lanceurCasTestCoinTriple.py
Normal file
@ -0,0 +1,29 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
import salome
|
||||
|
||||
import os
|
||||
from blocFissure import gmu
|
||||
from blocFissure.gmu import initLog
|
||||
#initLog.setDebug()
|
||||
initLog.setVerbose()
|
||||
|
||||
from blocFissure.casStandard import casStandard
|
||||
|
||||
dicoParams = dict(nomCas = 'casTestCoinTripleOlivier',
|
||||
maillageSain = '/local00/home/I48174/Documents/tubulure_simple/blocFissure/materielCoinSymetrie/cubeTestCoinTriple.med',
|
||||
brepFaceFissure = "/local00/home/I48174/Documents/tubulure_simple/blocFissure/materielCoinSymetrie/fissureTestCoinTriple.brep",
|
||||
edgeFissIds = [4],
|
||||
lgInfluence = 50,
|
||||
meshBrep = (5,10),
|
||||
rayonPipe = 10,
|
||||
lenSegPipe = 7,
|
||||
nbSegRad = 5,
|
||||
nbSegCercle = 10,
|
||||
areteFaceFissure = 10)
|
||||
|
||||
execInstance = casStandard(dicoParams)
|
||||
|
||||
if salome.sg.hasDesktop():
|
||||
salome.sg.updateObjBrowser(1)
|
29
src/Tools/blocFissure/lanceurCasTestCoinTripleMilieu.py
Normal file
29
src/Tools/blocFissure/lanceurCasTestCoinTripleMilieu.py
Normal file
@ -0,0 +1,29 @@
|
||||
# -*- coding: iso-8859-1 -*-
|
||||
|
||||
import sys
|
||||
import salome
|
||||
|
||||
import os
|
||||
from blocFissure import gmu
|
||||
from blocFissure.gmu import initLog
|
||||
#initLog.setDebug()
|
||||
initLog.setVerbose()
|
||||
|
||||
from blocFissure.casStandard import casStandard
|
||||
|
||||
dicoParams = dict(nomCas = 'casTestCoinTriple',
|
||||
maillageSain = '/local00/home/I48174/Documents/tubulure_simple/blocFissure/materielCoinSymetrie/cubeTestCoinTriple.med',
|
||||
brepFaceFissure = "/local00/home/I48174/Documents/tubulure_simple/blocFissure/materielCoinSymetrie/fissureMilieuTestCoinTriple.brep",
|
||||
edgeFissIds = [4],
|
||||
lgInfluence = 50,
|
||||
meshBrep = (5,10),
|
||||
rayonPipe = 10,
|
||||
lenSegPipe = 7,
|
||||
nbSegRad = 5,
|
||||
nbSegCercle = 10,
|
||||
areteFaceFissure = 10)
|
||||
|
||||
execInstance = casStandard(dicoParams)
|
||||
|
||||
if salome.sg.hasDesktop():
|
||||
salome.sg.updateObjBrowser(1)
|
29
src/Tools/blocFissure/lanceurCasTestCoinTripleTransverse.py
Normal file
29
src/Tools/blocFissure/lanceurCasTestCoinTripleTransverse.py
Normal file
@ -0,0 +1,29 @@
|
||||
# -*- coding: iso-8859-1 -*-
|
||||
|
||||
import sys
|
||||
import salome
|
||||
|
||||
import os
|
||||
from blocFissure import gmu
|
||||
from blocFissure.gmu import initLog
|
||||
#initLog.setDebug()
|
||||
initLog.setVerbose()
|
||||
|
||||
from blocFissure.casStandard import casStandard
|
||||
|
||||
dicoParams = dict(nomCas = 'casTestCoinTriple',
|
||||
maillageSain = '/local00/home/I48174/Documents/tubulure_simple/blocFissure/materielCoinSymetrie/cubeTestCoinTriple.med',
|
||||
brepFaceFissure = "/local00/home/I48174/Documents/tubulure_simple/blocFissure/materielCoinSymetrie/fissureTransverseTestCoinTriple.brep",
|
||||
edgeFissIds = [6],
|
||||
lgInfluence = 50,
|
||||
meshBrep = (5,10),
|
||||
rayonPipe = 10,
|
||||
lenSegPipe = 7,
|
||||
nbSegRad = 5,
|
||||
nbSegCercle = 10,
|
||||
areteFaceFissure = 10)
|
||||
|
||||
execInstance = casStandard(dicoParams)
|
||||
|
||||
if salome.sg.hasDesktop():
|
||||
salome.sg.updateObjBrowser(1)
|
32
src/Tools/blocFissure/lanceurSoudureArrondieTest.py
Normal file
32
src/Tools/blocFissure/lanceurSoudureArrondieTest.py
Normal file
@ -0,0 +1,32 @@
|
||||
# -*- coding: iso-8859-1 -*-
|
||||
|
||||
import sys
|
||||
import salome
|
||||
|
||||
import os
|
||||
from blocFissure import gmu
|
||||
from blocFissure.gmu import initLog
|
||||
#initLog.setDebug()
|
||||
initLog.setVerbose()
|
||||
|
||||
from blocFissure.casStandard import casStandard
|
||||
|
||||
mesh = 'areteArrondieSoudure.med'
|
||||
crack = 'fissureSoudureTest.brep'
|
||||
|
||||
dicoParams = dict(nomCas = 'casTestCoinTriple',
|
||||
maillageSain = '/local00/home/I48174/Documents/soudure/essaiFissure/{0}'.format(mesh),
|
||||
brepFaceFissure = '/local00/home/I48174/Documents/soudure/essaiFissure/{0}'.format(crack),
|
||||
edgeFissIds = [4],
|
||||
lgInfluence = 30,
|
||||
meshBrep = (5,10),
|
||||
rayonPipe = 5,
|
||||
lenSegPipe = 7,
|
||||
nbSegRad = 8,
|
||||
nbSegCercle = 20,
|
||||
areteFaceFissure = 8)
|
||||
|
||||
execInstance = casStandard(dicoParams)
|
||||
|
||||
if salome.sg.hasDesktop():
|
||||
salome.sg.updateObjBrowser(1)
|
32
src/Tools/blocFissure/lanceurSoudureViveTest.py
Normal file
32
src/Tools/blocFissure/lanceurSoudureViveTest.py
Normal file
@ -0,0 +1,32 @@
|
||||
# -*- coding: iso-8859-1 -*-
|
||||
|
||||
import sys
|
||||
import salome
|
||||
|
||||
import os
|
||||
from blocFissure import gmu
|
||||
from blocFissure.gmu import initLog
|
||||
#initLog.setDebug()
|
||||
initLog.setVerbose()
|
||||
|
||||
from blocFissure.casStandard import casStandard
|
||||
|
||||
mesh = 'areteViveSoudure.med'
|
||||
crack = 'fissureSoudureTest.brep'
|
||||
|
||||
dicoParams = dict(nomCas = 'casTestCoinTriple',
|
||||
maillageSain = '/local00/home/I48174/Documents/soudure/essaiFissure/{0}'.format(mesh),
|
||||
brepFaceFissure = '/local00/home/I48174/Documents/soudure/essaiFissure/{0}'.format(crack),
|
||||
edgeFissIds = [4],
|
||||
lgInfluence = 30,
|
||||
meshBrep = (5,10),
|
||||
rayonPipe = 10,
|
||||
lenSegPipe = 7,
|
||||
nbSegRad = 5,
|
||||
nbSegCercle = 10,
|
||||
areteFaceFissure = 10)
|
||||
|
||||
execInstance = casStandard(dicoParams)
|
||||
|
||||
if salome.sg.hasDesktop():
|
||||
salome.sg.updateObjBrowser(1)
|
32
src/Tools/blocFissure/lanceurTestAubry.py
Normal file
32
src/Tools/blocFissure/lanceurTestAubry.py
Normal file
@ -0,0 +1,32 @@
|
||||
# -*- coding: iso-8859-1 -*-
|
||||
|
||||
import sys
|
||||
import salome
|
||||
|
||||
import os
|
||||
from blocFissure import gmu
|
||||
from blocFissure.gmu import initLog
|
||||
#initLog.setDebug()
|
||||
initLog.setVerbose()
|
||||
|
||||
from blocFissure.casStandard import casStandard
|
||||
|
||||
mesh = 'huehue.med'
|
||||
crack = 'hue.brep'
|
||||
|
||||
dicoParams = dict(nomCas = 'testAubry',
|
||||
maillageSain = '/local00/home/I48174/Bureau/{0}'.format(mesh),
|
||||
brepFaceFissure = '/local00/home/I48174/Bureau/{0}'.format(crack),
|
||||
edgeFissIds = [8],
|
||||
lgInfluence = 0.01,
|
||||
meshBrep = (0.0002,0.003),
|
||||
rayonPipe = 0.005,
|
||||
lenSegPipe = 0.0015,
|
||||
nbSegRad = 8,
|
||||
nbSegCercle = 18,
|
||||
areteFaceFissure = 0.0015)
|
||||
|
||||
execInstance = casStandard(dicoParams)
|
||||
|
||||
if salome.sg.hasDesktop():
|
||||
salome.sg.updateObjBrowser(1)
|
Loading…
Reference in New Issue
Block a user