X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH_SWIG%2FSMESH_fixation.py;h=8a327def58d6f03946eaa12a63b9488446731a87;hp=2864e93b204dff039a22d033c4b6c6a157cedc44;hb=88068fce89e10cb32b60ea51cae3440240d42e9f;hpb=bef9beee88cac57394b8dc3bc914381c1a2fff83 diff --git a/src/SMESH_SWIG/SMESH_fixation.py b/src/SMESH_SWIG/SMESH_fixation.py index 2864e93b2..8a327def5 100644 --- a/src/SMESH_SWIG/SMESH_fixation.py +++ b/src/SMESH_SWIG/SMESH_fixation.py @@ -1,27 +1,36 @@ -#============================================================================== -# File : SMESH_fix_volute.py -# Created : mer sep 4 09:58:49 CEST 2002 -# Author : Paul RASCLE, EDF -# Project : SALOME -# Copyright : EDF 2002 -# $Header$ -#============================================================================== - +# -*- coding: iso-8859-1 -*- +# Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # -# les numeros d'edge dans les explode sont parfois decales de 1 entre -# le script et le gui -# piece1 --> piece : memes numeros -# ellipse : il faut decrementer de 1 dans le script +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +# File : SMESH_fix_volute.py +# Author : Paul RASCLE, EDF +# Module : SMESH +# $Header$ +# import salome -from salome import sg - -import geompy - -##import SMESH -##import smeshpy -##import SMESH_BasicHypothesis_idl +salome.salome_init() +import GEOM +from salome.geom import geomBuilder +geompy = geomBuilder.New(salome.myStudy) import math @@ -29,48 +38,14 @@ import math def MakeFace(lstEdges) : """ - Creates a face from 4 edges + Creates a planar face from 4 edges """ - lstWire = [] - for edge in lstEdges : - lstWire.append(edge._get_Name()) - wire = geompy.MakeWire(lstWire) + wire = geompy.MakeWire(lstEdges) face = geompy.MakeFace(wire, 1) return face -def MakeShell(lstFaces) : - """ - Creates a shell from 6 faces - """ - lstShell = [] - for face in lstFaces : - lstShell.append(face._get_Name()) - shell = geompy.MakeSewing(lstShell, 0.00001) - return shell - -def MakeCompound(lstShells) : - """ - Creates a compound from several shells - """ - lstCompound = [] - for shell in lstShells : - lstCompound.append(shell._get_Name()) - compound = geompy.MakeCompound(lstCompound) - return compound - # ----------------------------------------------------------------------------- -geom = salome.lcc.FindOrLoadComponent("FactoryServer", "Geometry") -myBuilder = salome.myStudy.NewBuilder() - -ShapeTypeCompSolid = 1 -ShapeTypeSolid = 2 -ShapeTypeShell = 3 -ShapeTypeFace = 4 -ShapeTypeWire = 5 -ShapeTypeEdge = 6 -ShapeTypeVertex = 7 - # ---- dimensions ##longueurPlq = 0.686 @@ -97,186 +72,41 @@ rayonConge = 150 - epaisseurFlanc epaisseurFond = 162 rayonTrou = 75 -posAxeTrou = hauteurFlanc -(180 + rayonTrou) +posAxeTrou = hauteurFlanc - (180 + rayonTrou) marge = 10 tol3d = 1.e-3 # ---- points, directions de base -p0 = geom.MakePointStruct(0., 0., 0.) -px = geom.MakePointStruct(100., 0., 0.) -vx = geom.MakeDirection(px) -py = geom.MakePointStruct(0., 100., 0.) -vy = geom.MakeDirection(py) -pz = geom.MakePointStruct(0., 0., 100.) -vz = geom.MakeDirection(pz) - -# ---- volumes de controle - -volglob = geom.MakeBox( 0., 0., 0., - longueurPlq, - largeurPlq, - hauteurFlanc + epaisseurPlq +marge) -idvolglob = geompy.addToStudy(volglob, "volglob") -volhaut = geom.MakeBox(-marge, - 0.5*(largeurPlq - epaisseurFond), - hauteurFlanc + epaisseurPlq, - longueurPlq+marge, - largeurPlq+marge, - hauteurFlanc + epaisseurPlq +2*marge) -idvolhaut = geompy.addToStudy(volhaut, "volhaut") - -# ---- base - -#plaque = geom.MakeBox( 0., 0., 0., longueurPlq, largeurPlq, epaisseurPlq ) -plaque = geom.MakeBox( -marge, -marge/2, 0., - longueurPlq +2*marge, largeurPlq, epaisseurPlq ) -# ---- fond - -fond = geom.MakeBox( rayonConge, - largeurPlq - epaisseurFond, - epaisseurPlq, - longueurPlq - rayonConge, - largeurPlq, - epaisseurPlq + hauteurFlanc +marge/2) - -# ---- trou du fond - -pAxe1 = geom.MakePointStruct( 0.5*longueurPlq, - 0., - epaisseurPlq + posAxeTrou) -cylFond = geom.MakeCylinder(pAxe1, vy, rayonTrou, 1.1*largeurPlq) -fondTroue = geom.MakeBoolean(fond, cylFond, 2) - -piece = geom.MakeBoolean(plaque, fondTroue, 3) -idPiece = geompy.addToStudy(piece, "piece") - -# ---- cotes - -cote1 = geom.MakeBox(rayonConge, - -marge/2, - epaisseurPlq, - epaisseurFlanc + rayonConge, - largeurPlq - epaisseurFond, - hauteurFlanc + epaisseurPlq +marge/2) -piece = geom.MakeBoolean(piece, cote1, 3) - -cote2 = geom.MakeBox(longueurPlq -epaisseurFlanc -rayonConge, - -marge/2, - epaisseurPlq, - longueurPlq -rayonConge, - largeurPlq - epaisseurFond, - hauteurFlanc + epaisseurPlq +marge/2) -piece = geom.MakeBoolean(piece, cote2, 3) -idPiece = geompy.addToStudy(piece, "piece1") +p0 = geompy.MakeVertex(0., 0., 0.) + +vx = geompy.MakeVectorDXDYDZ(100., 0., 0.) +vy = geompy.MakeVectorDXDYDZ(0., 100., 0.) +vz = geompy.MakeVectorDXDYDZ(0., 0., 100.) # ---- ellipse du flanc -he = hauteurFlanc -2*rayonConge +he = hauteurFlanc - 2*rayonConge re = 0.5*(largeurPlq - epaisseurFond) - rayonConge sine = re/he -cose = math.sqrt(1.-sine*sine) -pe = geom.MakePointStruct(sine, 0., cose) -ve = geom.MakeDirection(pe) -cyl0 = geom.MakeCylinder(p0, ve, re, 2*he) -axecy = geom.MakeAxisStruct(0., 0., 0.,sine, 0., cose) -cyl1 = geom.MakeRotation(cyl0, axecy, 0.5) -cyle = geom.MakeTranslation(cyl1, - -marge*sine, 0., -marge*cose) -boxe = geom.MakeBox(0., 0., 0., 3*he, -2*re, 3*he) -#idcyle = geompy.addToStudy(cyle, "cyle") -#idboxe = geompy.addToStudy(boxe, "boxe") -cylcoup = geom.MakeBoolean(cyle, boxe, 2) -idcylcoup = geompy.addToStudy(cylcoup, "cylcoup") +cose = math.sqrt(1. - sine*sine) + +ve = geompy.MakeVectorDXDYDZ(sine, 0., cose) +cyl0 = geompy.MakeCylinder(p0, ve, re, 2*he) +cyl1 = geompy.MakeRotation(cyl0, ve, 0.5) +cyle = geompy.MakeTranslation(cyl1, -marge*sine, 0., -marge*cose) + +pbe = geompy.MakeVertex(3*he, -2*re, 3*he) +boxe = geompy.MakeBoxTwoPnt(p0, pbe) + +cylcoup = geompy.MakeBoolean(cyle, boxe, 2) + aretes = [] -aretes = geompy.SubShapeAll(cylcoup, ShapeTypeEdge) -# OCC3.1 : aretes[3], OCC4.0 aretes[5] -shape = geom.MakeCopy(aretes[5]) -aShape = geom.MakeTranslation(shape, - 0., rayonConge +re, epaisseurPlq +2*rayonConge) - -# ---- segments face objet decoupe des flancs - -pf1 = geom.MakePointStruct(0., - -marge, - hauteurFlanc + epaisseurPlq +marge) -pf2 = geom.MakePointStruct(0., - 0.5*(largeurPlq - epaisseurFond), - hauteurFlanc + epaisseurPlq +marge) -pf3 = geom.MakePointStruct(0., - 0.5*(largeurPlq - epaisseurFond), - hauteurFlanc + epaisseurPlq) -pf4 = geom.MakePointStruct(0., - rayonConge, - epaisseurPlq +2*rayonConge) -pf5 = geom.MakePointStruct(0., - rayonConge, - epaisseurPlq) -pf6 = geom.MakePointStruct(0., - -marge, - epaisseurPlq) - -vf1 = geom.MakeEdge(pf1,pf2) -vf2 = geom.MakeEdge(pf2,pf3) -vf4 = geom.MakeEdge(pf4,pf5) -vf5 = geom.MakeEdge(pf5,pf6) -vf6 = geom.MakeEdge(pf6,pf1) - -id1 = geompy.addToStudy(vf1,"vf1") -id2 = geompy.addToStudy(vf2,"vf2") -ids = geompy.addToStudy(aShape,"aShape") -id4 = geompy.addToStudy(vf4,"vf4") -id5 = geompy.addToStudy(vf5,"vf5") -id6 = geompy.addToStudy(vf6,"vf6") - -faceDec = MakeFace([vf1,vf2,aShape,vf4,vf5,vf6]) -idf = geompy.addToStudy(faceDec,"faceDec") - -# forme de decoupe par extrusion - -pfe = geom.MakePointStruct(longueurPlq+4*marge, 0., 0.) -decoupe = geom.MakePrism(faceDec, p0, pfe) -decoupe = geom.MakeTranslation(decoupe, -2*marge, 0., 0.) -idec = geompy.addToStudy(decoupe, "decoupe") - -# decoupe piece1 par decoupe - -piece2 = geom.MakeBoolean(piece, decoupe, 2) -idpiece = geompy.addToStudy(piece2, "piece2") - -# conges -conges = [] -conges = geompy.SubShapeAllSorted(piece2, ShapeTypeEdge) - - -# boucle pour trouver les bons indices -#ind = 0 -#for ff in conges: -# print ind, ff._get_Index() -# name = "edge%d"%(ind) -# geompy.addToStudy(ff, name) -# ind = ind + 1 - - -index1 = conges[7]._get_Index() -index2 = conges[11]._get_Index() -index3 = conges[36]._get_Index() -index4 = conges[43]._get_Index() - -#piece3 = geompy.MakeFillet (piece2, rayonConge, ShapeTypeEdge, [3,4,8,9]) -piece3 = geompy.MakeFillet (piece2, rayonConge, ShapeTypeEdge, [index1[0],index2[0],index3[0],index4[0]]) - -idPiece = geompy.addToStudy(piece3, "piece3") - -# partie incluse dans le volume de controle (devient non valide) - -piece4 = geom.MakeBoolean(piece3, volglob, 1) -idPiece = geompy.addToStudy(piece4, "piece4") - -# enlever volume haut - -piece = geom.MakeBoolean(piece4, volhaut, 2) -idpiece = geompy.addToStudy(piece, "piece") +aretes = geompy.SubShapeAllSorted(cylcoup, geompy.ShapeType["EDGE"]) + +shape = geompy.MakeCopy(aretes[0]) +aShape = geompy.MakeTranslation(shape, 0., rayonConge + re, epaisseurPlq + 2*rayonConge) + # ----------------------------------------------------------------------------- # ---- decoupage de la piece en volumes a 6 faces de 4 cotes @@ -284,74 +114,73 @@ idpiece = geompy.addToStudy(piece, "piece") # ---- cotes x -x0 = 0. +x0 = 0. x0h = rayonConge -x1 = rayonConge + epaisseurFlanc -xc = longueurPlq/2 -x2 = longueurPlq - rayonConge - epaisseurFlanc +x1 = rayonConge + epaisseurFlanc +xc = longueurPlq/2 +x2 = longueurPlq - rayonConge - epaisseurFlanc x3h = longueurPlq - rayonConge -x3 = longueurPlq +x3 = longueurPlq # ---- cotes y -y0 = 0. +y0 = 0. y0h = rayonConge -y1 = largeurPlq - epaisseurFond -y1m = y1 -marge -y2 = largeurPlq +y1 = largeurPlq - epaisseurFond +y1m = y1 - marge +y2 = largeurPlq y2p = largeurPlq + marge # ---- cotes z -z0 = 0. -z1m = epaisseurPlq -marge -z1 = epaisseurPlq -z2 = epaisseurPlq + rayonConge -z3 = epaisseurPlq + 2*rayonConge -z4 = epaisseurPlq + hauteurFlanc +z0 = 0. +z1m = epaisseurPlq - marge +z1 = epaisseurPlq +z2 = epaisseurPlq + rayonConge +z3 = epaisseurPlq + 2*rayonConge +z4 = epaisseurPlq + hauteurFlanc z4p = epaisseurPlq + hauteurFlanc + marge -zc = epaisseurPlq + posAxeTrou -zc2 = epaisseurPlq + (posAxeTrou -rayonTrou)/3 -zc3 = epaisseurPlq + 2*(posAxeTrou -rayonTrou)/3 +zc = epaisseurPlq + posAxeTrou +zc2 = epaisseurPlq + (posAxeTrou - rayonTrou)/3 +zc3 = epaisseurPlq + 2*(posAxeTrou - rayonTrou)/3 # ---- decoupe du fond -p11 = geom.MakePointStruct(x1, y1m, z1) -p12 = geom.MakePointStruct(x1, y1m, z2) -p13 = geom.MakePointStruct(x1, y1m, z3) -p14 = geom.MakePointStruct(x1, y1m, z4) -pc1 = geom.MakePointStruct(xc, y1m, z1) -pc2 = geom.MakePointStruct(xc, y1m, zc2) -pc3 = geom.MakePointStruct(xc, y1m, zc3) -pcc = geom.MakePointStruct(xc, y1m, zc) -pc4 = geom.MakePointStruct(xc, y1m, z4) -p21 = geom.MakePointStruct(x2, y1m, z1) -p22 = geom.MakePointStruct(x2, y1m, z2) -p23 = geom.MakePointStruct(x2, y1m, z3) -p24 = geom.MakePointStruct(x2, y1m, z4) -pcf = geom.MakePointStruct(xc, y2p, zc) - -arc2 = geom.MakeArc(p12,pc2,p22) -arc3 = geom.MakeArc(p13,pc3,p23) - -segz1 = geom.MakeVector(p11,p21) -#segz4 = geom.MakeVector(p14,p24) -segz41 = geom.MakeVector(p14,pc4) -segz42 = geom.MakeVector(pc4,p24) -segx11 = geom.MakeVector(p11,p12) -segx12 = geom.MakeVector(p12,p13) -segx13 = geom.MakeVector(p13,p14) -segxc2 = geom.MakeVector(pc1,pc2) -segxc3 = geom.MakeVector(pc2,pc3) -segxc4 = geom.MakeVector(pcc,pc4) -segx21 = geom.MakeVector(p21,p22) -segx22 = geom.MakeVector(p22,p23) -segx23 = geom.MakeVector(p23,p24) -segx1c1 = geom.MakeVector(p13,pcc) -segx1c2 = geom.MakeVector(p14,pcc) -segx2c1 = geom.MakeVector(p23,pcc) -segx2c2 = geom.MakeVector(p24,pcc) +p11 = geompy.MakeVertex(x1, y1m, z1) +p12 = geompy.MakeVertex(x1, y1m, z2) +p13 = geompy.MakeVertex(x1, y1m, z3) +p14 = geompy.MakeVertex(x1, y1m, z4) +pc1 = geompy.MakeVertex(xc, y1m, z1) +pc2 = geompy.MakeVertex(xc, y1m, zc2) +pc3 = geompy.MakeVertex(xc, y1m, zc3) +pcc = geompy.MakeVertex(xc, y1m, zc) +pc4 = geompy.MakeVertex(xc, y1m, z4) +p21 = geompy.MakeVertex(x2, y1m, z1) +p22 = geompy.MakeVertex(x2, y1m, z2) +p23 = geompy.MakeVertex(x2, y1m, z3) +p24 = geompy.MakeVertex(x2, y1m, z4) +pcf = geompy.MakeVertex(xc, y2p, zc) + +arc2 = geompy.MakeArc(p12,pc2,p22) +arc3 = geompy.MakeArc(p13,pc3,p23) + +segz1 = geompy.MakeVector(p11,p21) +segz41 = geompy.MakeVector(p14,pc4) +segz42 = geompy.MakeVector(pc4,p24) +segx11 = geompy.MakeVector(p11,p12) +segx12 = geompy.MakeVector(p12,p13) +segx13 = geompy.MakeVector(p13,p14) +segxc2 = geompy.MakeVector(pc1,pc2) +segxc3 = geompy.MakeVector(pc2,pc3) +segxc4 = geompy.MakeVector(pcc,pc4) +segx21 = geompy.MakeVector(p21,p22) +segx22 = geompy.MakeVector(p22,p23) +segx23 = geompy.MakeVector(p23,p24) +segx1c1 = geompy.MakeVector(p13,pcc) +segx1c2 = geompy.MakeVector(p14,pcc) +segx2c1 = geompy.MakeVector(p23,pcc) +segx2c2 = geompy.MakeVector(p24,pcc) facef = [] facef.append(MakeFace([segx13,segx1c2,segx1c1])) @@ -362,103 +191,110 @@ facef.append(MakeFace([segx1c1,arc3,segx2c1])) facef.append(MakeFace([segx12,arc2,segx22,arc3])) facef.append(MakeFace([segx11,segz1,segx21,arc2])) -decf =[] +vcccf = geompy.MakeVector(pcc, pcf) +hcccf = y2p - y1m +decf = [] for face in facef: - decf.append(geom.MakePrism(face,pcc,pcf)) - -axeCyl = geom.MakeAxisStruct( 0.5*longueurPlq, - 0., - epaisseurPlq + posAxeTrou, - 0., - largeurPlq, - 0.) -cylFond2 = geom.MakeRotation(geom.MakeCopy(cylFond),axeCyl,math.pi) -idcylfond2 = geompy.addToStudy(cylFond2,"cylFond2") - -fondec =[] + decf.append(geompy.MakePrismVecH(face,vcccf,hcccf)) + +pc = geompy.MakeVertex(xc, 0., zc) +py2 = geompy.MakeVertex(xc, y2, zc) +axeCyl = geompy.MakeVector(pc, py2) + +cylFond = geompy.MakeCylinder(pc, vy, rayonTrou, 1.1*largeurPlq) +cylFond2 = geompy.MakeRotation(cylFond, axeCyl, math.pi) + +fondec = [] for id in (0,1,2,3): - fondec.append(geom.MakeBoolean(decf[id],cylFond2,2)) -fondec.append(geom.MakeBoolean(decf[4],cylFond,2)) + fondec.append(geompy.MakeBoolean(decf[id], cylFond2, 2)) +fondec.append(geompy.MakeBoolean(decf[4], cylFond, 2)) for id in (5,6): fondec.append(decf[id]) -iff=0 -for ff in fondec: - idfo = geompy.addToStudy(ff, "ff%d"%(iff)) - iff = iff +1 +p_xcy2pz4p = geompy.MakeVertex(xc,y2p,z4p) +p_x3y2pz4p = geompy.MakeVertex(x3,y2p,z4p) +pxc = geompy.MakeVertex(xc,y0,z0) +bcut1 = geompy.MakeBoxTwoPnt(p0, p_xcy2pz4p) +bcut2 = geompy.MakeBoxTwoPnt(pxc, p_x3y2pz4p) + +fondec2 = [] +for id in (0,1,2,3): + fondec2.append(fondec[id]) +for id in (4,5,6): + fondec2.append(geompy.MakeBoolean(fondec[id], bcut1, 1)) + fondec2.append(geompy.MakeBoolean(fondec[id], bcut2, 1)) # ----- autres blocs de decoupe -bcong1=geom.MakeBox(x0,y0,z1, x1,y1,z2) -bcong2=geom.MakeBox(x0,y1,z1, x1,y2,z2) -bcong3=geom.MakeBox(x2,y0,z1, x3,y1,z2) -bcong4=geom.MakeBox(x2,y1,z1, x3,y2,z2) - -pcylx0 = geom.MakePointStruct(0., -marge, z2) -cylcongx0 = geom.MakeCylinder(pcylx0, vy, rayonConge, largeurPlq +2*marge) -idcylcongx0 = geompy.addToStudy(cylcongx0,"cylcongx0") -pcylx3 = geom.MakePointStruct(longueurPlq, -marge, z2) -cylcongx3 = geom.MakeCylinder(pcylx3, vy, rayonConge, largeurPlq +2*marge) -idcylcongx3 = geompy.addToStudy(cylcongx3,"cylcongx3") -pcyly0 = geom.MakePointStruct(-marge, 0., z2) -cylcongy0 = geom.MakeCylinder(pcyly0, vx, rayonConge, longueurPlq +2*marge) -idcylcongy0 = geompy.addToStudy(cylcongy0,"cylcongy0") - -bcong1=geom.MakeBoolean(bcong1,cylcongx0,2) -bcong2=geom.MakeBoolean(bcong2,cylcongx0,2) -bcong1=geom.MakeBoolean(bcong1,cylcongy0,2) -bcong3=geom.MakeBoolean(bcong3,cylcongx3,2) -bcong4=geom.MakeBoolean(bcong4,cylcongx3,2) -bcong3=geom.MakeBoolean(bcong3,cylcongy0,2) - -pf1 = geom.MakePointStruct(0., y0h, z3) -pf2 = geom.MakePointStruct(0., y1, z3) -pf3 = geom.MakePointStruct(0., y1, z4) -pf4 = geom.MakePointStruct(0.,0.5*(largeurPlq - epaisseurFond) , z4) -vf1 = geom.MakeEdge(pf1,pf2) -vf2 = geom.MakeEdge(pf2,pf3) -vf3 = geom.MakeEdge(pf3,pf4) +bcong1 = geompy.MakeBox(x0,y0,z1, x1,y1,z2) +bcong2 = geompy.MakeBox(x0,y1,z1, x1,y2,z2) +bcong3 = geompy.MakeBox(x2,y0,z1, x3,y1,z2) +bcong4 = geompy.MakeBox(x2,y1,z1, x3,y2,z2) + +pcylx0 = geompy.MakeVertex(0., -marge, z2) +pcylx3 = geompy.MakeVertex(longueurPlq, -marge, z2) +pcyly0 = geompy.MakeVertex(-marge, 0., z2) + +cylcongx0 = geompy.MakeCylinder(pcylx0, vy, rayonConge, largeurPlq + 2*marge) +cylcongx3 = geompy.MakeCylinder(pcylx3, vy, rayonConge, largeurPlq + 2*marge) +cylcongy0 = geompy.MakeCylinder(pcyly0, vx, rayonConge, longueurPlq + 2*marge) + +bcong1 = geompy.MakeBoolean(bcong1,cylcongx0,2) +bcong2 = geompy.MakeBoolean(bcong2,cylcongx0,2) +bcong1 = geompy.MakeBoolean(bcong1,cylcongy0,2) +#NRI : inverse order of BOP +bcong3 = geompy.MakeBoolean(bcong3,cylcongy0,2) +bcong3 = geompy.MakeBoolean(bcong3,cylcongx3,2) +bcong4 = geompy.MakeBoolean(bcong4,cylcongx3,2) + +pf1 = geompy.MakeVertex(0., y0h, z3) +pf2 = geompy.MakeVertex(0., y1, z3) +pf3 = geompy.MakeVertex(0., y1, z4) +pf4 = geompy.MakeVertex(0., 0.5*(largeurPlq - epaisseurFond) , z4) + +vf1 = geompy.MakeEdge(pf1, pf2) +vf2 = geompy.MakeEdge(pf2, pf3) +vf3 = geompy.MakeEdge(pf3, pf4) + faceFlanc = MakeFace([vf1,vf2,vf3,aShape]) -idfaceFlanc = geompy.addToStudy(faceFlanc,"faceFlanc") -pfe = geom.MakePointStruct(epaisseurFlanc, 0., 0.) -flanc1 = geom.MakePrism(faceFlanc, p0, pfe) -flanc2 = geom.MakeCopy(flanc1) -flanc1 = geom.MakeTranslation(flanc1, - rayonConge,0.,0.) -flanc2 = geom.MakeTranslation(flanc2, - longueurPlq-rayonConge-epaisseurFlanc,0.,0.) + +flanc1 = geompy.MakePrismVecH(faceFlanc, vx, epaisseurFlanc) +flanc2 = geompy.MakeCopy(flanc1) +flanc1 = geompy.MakeTranslation(flanc1, rayonConge, 0., 0.) +flanc2 = geompy.MakeTranslation(flanc2, longueurPlq - rayonConge - epaisseurFlanc, 0., 0.) # ---- constitution et decoupe des blocs -boxfond2 = geom.MakeBox(x0, y1, z0, x3, y2, z4p) -idboxfond2 = geompy.addToStudy(boxfond2,"boxfond2") +boxfond2 = geompy.MakeBox(x0, y1, z0, x3, y2, z4p) blocs = [] -for dec in fondec: - blocs.append(geom.MakeBoolean(boxfond2, dec, 1)) -blocs.append(geom.MakeBox(x0,y1,z0, x1,y2,z1)) -blocs.append(geom.MakeBox(x1,y1,z0, x2,y2,z1)) -blocs.append(geom.MakeBox(x2,y1,z0, x3,y2,z1)) -blocs.append(geom.MakeBox(x0,y0,z0, x1,y1,z1)) -blocs.append(geom.MakeBox(x1,y0,z0, x2,y1,z1)) -blocs.append(geom.MakeBox(x2,y0,z0, x3,y1,z1)) +for dec in fondec2: + blocs.append(geompy.MakeBoolean(boxfond2, dec, 1)) + +blocs.append(geompy.MakeBox(x0,y1,z0, x1,y2,z1)) +blocs.append(geompy.MakeBox(x1,y1,z0, xc,y2,z1)) +blocs.append(geompy.MakeBox(xc,y1,z0, x2,y2,z1)) +blocs.append(geompy.MakeBox(x2,y1,z0, x3,y2,z1)) +blocs.append(geompy.MakeBox(x0,y0,z0, x1,y1,z1)) +blocs.append(geompy.MakeBox(x1,y0,z0, xc,y1,z1)) +blocs.append(geompy.MakeBox(xc,y0,z0, x2,y1,z1)) +blocs.append(geompy.MakeBox(x2,y0,z0, x3,y1,z1)) blocs.append(bcong2) blocs.append(bcong4) blocs.append(bcong1) blocs.append(bcong3) -blocs.append(geom.MakeBox(x0h,y1, z2, x1, y2, z3)) -blocs.append(geom.MakeBox(x2, y1, z2, x3h,y2, z3)) -blocs.append(geom.MakeBox(x0h,y0h,z2, x1, y1, z3)) -blocs.append(geom.MakeBox(x2, y0h,z2, x3h,y1, z3)) -blocs.append(geom.MakeBox(x0h,y1, z3, x1, y2, z4)) -blocs.append(geom.MakeBox(x2, y1, z3, x3h,y2, z4)) +blocs.append(geompy.MakeBox(x0h,y1, z2, x1, y2, z3)) +blocs.append(geompy.MakeBox(x2, y1, z2, x3h,y2, z3)) +blocs.append(geompy.MakeBox(x0h,y0h,z2, x1, y1, z3)) +blocs.append(geompy.MakeBox(x2, y0h,z2, x3h,y1, z3)) +blocs.append(geompy.MakeBox(x0h,y1, z3, x1, y2, z4)) +blocs.append(geompy.MakeBox(x2, y1, z3, x3h,y2, z4)) blocs.append(flanc1) blocs.append(flanc2) - -compbloc = MakeCompound(blocs) -idcomp = geompy.addToStudy(compbloc,"compbloc") -# ---- eliminer les faces en double, solid-->shell +compbloc = geompy.MakeCompound(blocs) +idcomp = geompy.addToStudy(compbloc, "compbloc") -compshell = geom.MakeGlueFaces(compbloc,tol3d) -idcomp = geompy.addToStudy(compshell,"compshell") +# ---- eliminer les faces en double, solid-->shell +compshell = geompy.MakeGlueFaces(compbloc,tol3d) +idcomp = geompy.addToStudy(compshell, "compshell")