]> SALOME platform Git repositories - modules/shaper.git/blob - src/ConstructionPlugin/Test/TestAxisCreation.py
Salome HOME
Issue #2209 : New option of creation of construction points
[modules/shaper.git] / src / ConstructionPlugin / Test / TestAxisCreation.py
1 ## Copyright (C) 2014-2017  CEA/DEN, EDF R&D
2 ##
3 ## This library is free software; you can redistribute it and/or
4 ## modify it under the terms of the GNU Lesser General Public
5 ## License as published by the Free Software Foundation; either
6 ## version 2.1 of the License, or (at your option) any later version.
7 ##
8 ## This library is distributed in the hope that it will be useful,
9 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
10 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 ## Lesser General Public License for more details.
12 ##
13 ## You should have received a copy of the GNU Lesser General Public
14 ## License along with this library; if not, write to the Free Software
15 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 ##
17 ## See http:##www.salome-platform.org/ or
18 ## email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
19 ##
20
21 #=========================================================================
22 # Initialization of the test
23 #=========================================================================
24 from ModelAPI import *
25 from GeomDataAPI import *
26 from GeomAlgoAPI import *
27 from GeomAPI import *
28 import math
29 from ModelAPI import *
30
31 from salome.shaper import model
32
33 aSession = ModelAPI_Session.get()
34 aDocument = aSession.moduleDocument()
35
36 # Create a part
37 aSession.startOperation()
38 aPartFeature = aDocument.addFeature("Part")
39 aSession.finishOperation()
40 assert (len(aPartFeature.results()) == 1)
41 aPartResult = modelAPI_ResultPart(aPartFeature.firstResult())
42 aPart = aPartResult.partDoc()
43
44 #=========================================================================
45 # Create a first point
46 #=========================================================================
47 aSession.startOperation()
48 aPointFeature = aPart.addFeature("Point")
49 aPointFeatureData = aPointFeature.data()
50 assert(aPointFeatureData is not None)
51 # aPointFeatureData.string("creation_method").setValue("by_xyz")
52 aPointFeatureData.real("x").setValue(0.)
53 aPointFeatureData.real("y").setValue(0.)
54 aPointFeatureData.real("z").setValue(0.)
55 aPointFeatureData.string("creation_method").setValue("by_xyz")
56 aPointFeature.execute()
57 aSession.finishOperation()
58 aPoint1Result = aPointFeature.firstResult();
59
60 #=========================================================================
61 # Create a second point
62 #=========================================================================
63 aSession.startOperation()
64 aPointFeature = aPart.addFeature("Point")
65 aPointFeatureData = aPointFeature.data()
66 assert(aPointFeatureData is not None)
67 # aPointFeatureData.string("creation_method").setValue("by_xyz")
68 aPointFeatureData.real("x").setValue(0.)
69 aPointFeatureData.real("y").setValue(0.)
70 aPointFeatureData.real("z").setValue(100.)
71 aPointFeatureData.string("creation_method").setValue("by_xyz")
72 aPointFeature.execute()
73 aSession.finishOperation()
74 aPoint2Result = aPointFeature.firstResult();
75
76 #=========================================================================
77 # Create axis by two points
78 #=========================================================================
79 aSession.startOperation()
80 anAxisFeature = aPart.addFeature("Axis")
81 anAxisFeatureData = anAxisFeature.data()
82 assert(anAxisFeatureData is not None)
83 anAxisFeatureData.string("CreationMethod").setValue("AxisByPointsCase")
84 anAxisFeatureData.selection("FirstPoint").setValue(aPoint1Result, aPoint1Result.shape())
85 anAxisFeatureData.selection("SecondPoint").setValue(aPoint2Result, aPoint2Result.shape())
86 anAxisFeature.execute()
87 aSession.finishOperation()
88
89 assert (len(anAxisFeature.results()) > 0)
90 anAxisResult = modelAPI_ResultConstruction(anAxisFeature.firstResult())
91 assert (anAxisResult is not None)
92
93 #=========================================================================
94 # Create a sketch circle to extrude
95 #=========================================================================
96 aSession.startOperation()
97 aCircleSketchFeature = featureToCompositeFeature(aPart.addFeature("Sketch"))
98 origin = geomDataAPI_Point(aCircleSketchFeature.attribute("Origin"))
99 origin.setValue(0, 0, 0)
100 dirx = geomDataAPI_Dir(aCircleSketchFeature.attribute("DirX"))
101 dirx.setValue(1, 0, 0)
102 norm = geomDataAPI_Dir(aCircleSketchFeature.attribute("Norm"))
103 norm.setValue(0, 0, 1)
104 # Create circle
105 aSketchCircle = aCircleSketchFeature.addFeature("SketchCircle")
106 anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("circle_center"))
107 aCircleRadius = aSketchCircle.real("circle_radius")
108 anCircleCentr.setValue(0, 0)
109 aCircleRadius.setValue(50)
110 aSession.finishOperation()
111
112 #=========================================================================
113 # Make extrusion on circle
114 #=========================================================================
115 # Build shape from sketcher results
116 aCircleSketchResult = aCircleSketchFeature.firstResult()
117 aCircleSketchEdges = modelAPI_ResultConstruction(aCircleSketchResult).shape()
118 origin = geomDataAPI_Point(aCircleSketchFeature.attribute("Origin")).pnt()
119 dirX = geomDataAPI_Dir(aCircleSketchFeature.attribute("DirX")).dir()
120 norm = geomDataAPI_Dir(aCircleSketchFeature.attribute("Norm")).dir()
121 aCircleSketchFaces = ShapeList()
122 GeomAlgoAPI_SketchBuilder.createFaces(origin, dirX, norm, aCircleSketchEdges, aCircleSketchFaces)
123 assert (len(aCircleSketchFaces) > 0)
124 assert (aCircleSketchFaces[0] is not None)
125
126 # Create extrusion
127 aSession.startOperation()
128 anExtrusionFt = aPart.addFeature("Extrusion")
129 assert (anExtrusionFt.getKind() == "Extrusion")
130 # selection type FACE=4
131 anExtrusionFt.selectionList("base").append(aCircleSketchResult, aCircleSketchFaces[0])
132 anExtrusionFt.string("CreationMethod").setValue("BySizes")
133 anExtrusionFt.real("to_size").setValue(100)
134 anExtrusionFt.real("from_size").setValue(0)
135 anExtrusionFt.real("to_offset").setValue(0) #TODO: remove
136 anExtrusionFt.real("from_offset").setValue(0) #TODO: remove
137 anExtrusionFt.execute()
138 aSession.finishOperation()
139 assert (anExtrusionFt.real("to_size").value() == 100.0)
140
141 # Check extrusion results
142 assert (len(anExtrusionFt.results()) > 0)
143 anExtrusionResult = modelAPI_ResultBody(anExtrusionFt.firstResult())
144 assert (anExtrusionResult is not None)
145
146 #=========================================================================
147 # Create axis by cylinder
148 #=========================================================================
149 aSession.startOperation()
150 anAxisFeature = aPart.addFeature("Axis")
151 anAxisFeatureData = anAxisFeature.data()
152 assert(anAxisFeatureData is not None)
153 anAxisFeatureData.string("CreationMethod").setValue("AxisByCylindricalFaceCase")
154 anAxisFeatureData.selection("CylindricalFace").selectSubShape("face", "Extrusion_1_1/Generated_Face_1")
155 anAxisFeature.execute()
156 aSession.finishOperation()
157
158 assert (len(anAxisFeature.results()) > 0)
159 anAxisResult = modelAPI_ResultConstruction(anAxisFeature.firstResult())
160 assert (anAxisResult is not None)
161
162 # Create a sketch with line
163 aSession.startOperation()
164 anOrigin = GeomAPI_Pnt(0, 0, 0)
165 aDirX = GeomAPI_Dir(1, 0, 0)
166 aNorm = GeomAPI_Dir(0, 0, 1)
167 aSketch = model.addSketch(aPart, GeomAPI_Ax3(anOrigin, aDirX, aNorm))
168 aSketchLine = aSketch.addLine(0, 0, 100, 100)
169 aSession.finishOperation()
170
171 # Test an axis by line
172 aSession.startOperation()
173 anAxis = model.addAxis(aPart, aSketchLine.result())
174 aSession.finishOperation()
175 assert (len(anAxis.results()) > 0)
176
177 # Create plane
178 aSession.startOperation()
179 aPlane1 = model.addPlane(aPart, 1, 1, 1, 0)
180 aSession.finishOperation()
181
182 # Create a sketch with point
183 aSession.startOperation()
184 anOrigin = GeomAPI_Pnt(0, 0, 0)
185 aDirX = GeomAPI_Dir(1, 0, 0)
186 aNorm = GeomAPI_Dir(0, 0, 1)
187 aSketch = model.addSketch(aPart, GeomAPI_Ax3(anOrigin, aDirX, aNorm))
188 aSketchPoint = aSketch.addPoint(50, 50)
189 aSession.finishOperation()
190
191 # Test an axis by plane and point
192 aSession.startOperation()
193 anAxis = model.addAxis(aPart, aPlane1.result(), aSketchPoint.result())
194 aSession.finishOperation()
195 assert (len(anAxis.results()) > 0)
196
197 # Create plane
198 aSession.startOperation()
199 aPlane2 = model.addPlane(aPart, 0, 1, 1, 0)
200 aSession.finishOperation()
201
202 # Test an axis by two planes
203 aSession.startOperation()
204 anAxis = model.addAxis(aPart, aPlane1.result(), aPlane2.result())
205 aSession.finishOperation()
206 assert (len(anAxis.results()) > 0)
207
208 # Test an axis by two planes and offsets
209 aSession.startOperation()
210 anAxis = model.addAxis(aPart, aPlane1.result(), 50, False, aPlane2.result(), 100, True)
211 aSession.finishOperation()
212 assert (len(anAxis.results()) > 0)
213
214 assert(model.checkPythonDump())