2 # -*- coding: iso-8859-1 -*-
3 # Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
5 # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
6 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
8 # This library is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU Lesser General Public
10 # License as published by the Free Software Foundation; either
11 # version 2.1 of the License.
13 # This library is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 # Lesser General Public License for more details.
18 # You should have received a copy of the GNU Lesser General Public
19 # License along with this library; if not, write to the Free Software
20 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
24 # GEOM GEOM_SWIG : binding of C++ omplementaion with Python
25 # File : GEOM_moteur.py
26 # Author : Damien COQUERET, Open CASCADE
34 geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM")
35 myBuilder = salome.myStudy.NewBuilder()
37 #Variables modifiables
38 PosX = 0 #Position du cylindre dans l'espace
39 PosY = 0 #Il est oriente suivant Z
42 HauteurT = 70 #Hauteur total du stator
45 Angle1 = 2 * math.pi / NbBranches
47 HauteurR = HauteurT / 3
49 DExtExt = HauteurT * 6 / 7
50 DExtInt = DExtExt - Ep
53 EpRot = DIntExt * math.sin(Angle2)
54 Pos1C = PosX + DIntExt * math.cos(Angle2)
55 Pos1S = PosY + DIntExt * math.sin(Angle2)
56 PosCour = PosZ + HauteurT * 4 / 7
57 PosRot = PosZ + 0.9 * HauteurT
60 BasicOp = geom.GetIBasicOperations(salome.myStudyId)
61 OO = BasicOp.MakePointXYZ(0, 0, 0)
62 P0 = BasicOp.MakePointXYZ(0, 0, 1)
63 P1 = BasicOp.MakePointXYZ(PosX, PosY, PosZ)
64 P2 = BasicOp.MakePointXYZ(PosX, PosY, PosZ + Ep)
65 P3 = BasicOp.MakePointXYZ(PosX, PosY, PosCour)
66 P4 = BasicOp.MakePointXYZ(PosX, PosY, PosCour + Ep)
67 P5 = BasicOp.MakePointXYZ(PosX, PosY, PosRot)
68 P6 = BasicOp.MakePointXYZ(Pos1C, Pos1S, PosZ)
69 P7 = BasicOp.MakePointXYZ(PosX + DExtExt, Pos1S, PosZ)
70 P8 = BasicOp.MakePointXYZ(Pos1C, Pos1S, PosZ + HauteurT)
73 V1 = BasicOp.MakeVectorTwoPnt(OO,P0)
74 V2 = BasicOp.MakeVectorTwoPnt(P1,P2)
75 V3 = BasicOp.MakeVectorTwoPnt(P6,P8)
78 C0 = geompy.MakeCylinder(P1, V1, DIntInt, PosCour + Ep - PosZ)
79 C01 = geompy.MakeCylinder(P1, V1, DIntExt, PosCour + Ep - PosZ)
80 Cylindre = geompy.MakeBoolean(C01, C0, 2)
81 #Id_Cyl = geompy.addToStudy(Cylindre, "Cylindre")
84 B1 = BasicOp.MakeVectorTwoPnt(P6, P7)
85 B2 = geompy.MakePrismVecH(B1, V1, HauteurT)
86 S0 = geompy.MakeRevolution(B2, V3, Angle1)
90 while Ind < NbBranches :
91 S = geompy.MakeRotation(S0, V2, Ind * Angle1)
94 Coupe1 = geompy.MakeCompound(CoupeList)
95 #Id_Coupe1 = geompy.addToStudy(Coupe1, "Coupe1")
98 C1 = geompy.MakeCylinder(P1, V1, DExtExt, HauteurT)
99 C2 = geompy.MakeCylinder(P2, V1, DExtInt, HauteurT)
100 C3 = geompy.MakeBoolean(C1, C2, 2)
101 C31 = geompy.MakeBoolean(C3, C0, 2)
102 Couronne1 = geompy.MakeBoolean(C31, Coupe1, 2)
103 #Id_Couronne1 = geompy.addToStudy(Couronne1, "Couronne1")
106 C4 = geompy.MakeCylinder(P3, V1, DExtExt, PosZ + HauteurT - PosCour)
107 C5 = geompy.MakeCylinder(P4, V1, DExtInt, HauteurT)
108 Coupe2 = geompy.MakeRotation(Coupe1, V2, Angle2)
109 C6 = geompy.MakeBoolean(C4, C5, 2)
110 C61 = geompy.MakeBoolean(C6, C0, 2)
111 Couronne2 = geompy.MakeBoolean(C61, Coupe2, 2)
112 #Id_Couronne2 = geompy.addToStudy(Couronne2, "Couronne2")
115 C9 = geompy.MakeCylinder(P5, V1, DIntExt, HauteurR)
116 C10 = geompy.MakeCylinder(P5, V1, DIntExt / 4, 2 * HauteurR)
118 Rotor1List.append(C9)
119 Rotor1List.append(C10)
120 Rotor1 = geompy.MakeCompound(Rotor1List)
121 Id_Rotor1 = geompy.addToStudy(Rotor1, "Rotor1")
124 D0 = geompy.MakeBox(2 * Pos1C - PosX, -Pos1S + 2 * PosY, PosRot, 2 * Pos1C + EpRot - PosX, Pos1S, PosRot + EpRot / 2)
126 Rotor2List.append(D0)
128 while Ind < NbBranches :
129 R = geompy.MakeRotation(D0, V2, Ind * Angle1)
132 Rotor2 = geompy.MakeCompound(Rotor2List)
133 Id_Rotor2 = geompy.addToStudy(Rotor2, "Rotor2")
136 Rotor3 = geompy.MakeRotation(Rotor2, V2, Angle2)
137 Id_Rotor3 = geompy.addToStudy(Rotor3, "Rotor3")
141 StatorList.append(Cylindre)
142 StatorList.append(Couronne1)
143 StatorList.append(Couronne2)
144 Stator = geompy.MakeCompound(StatorList)
145 Id_Stator = geompy.addToStudy(Stator, "Stator")