Salome HOME
Import of edges participating to the result of the sketch
[modules/shaper.git] / src / SketchPlugin / Test / TestProjectionIntoResult.py
1 from salome.shaper import model
2 from GeomAPI import *
3
4 #==============================================================================
5 # Auxiliary functions
6 #==============================================================================
7
8 # Project all features from 'theProjected' list.
9 # Argument 'theFailed' shows indices of projections which should fail because of validator
10 def testProjections(theDocument, theSketch, theProjected, theFailed):
11     # generate list of projected features
12     ind = 0
13     edgeProj = set()
14     for type, name in theProjected:
15         proj = theSketch.addProjection(model.selection(type, name), True)
16         assert(bool(proj.feature().error() != '') == bool(ind in theFailed))
17         if proj.feature().error() != '':
18             if proj.createdFeature() is not None:
19                 theDocument.removeFeature(proj.createdFeature().feature())
20             theDocument.removeFeature(proj.feature())
21             model.do()
22         elif type == "EDGE":
23             edgeProj.add(proj)
24         ind += 1
25     model.do()
26     model.testNbSubShapes(theSketch, GeomAPI_Shape.EDGE, [len(edgeProj)])
27
28     # exclude some edges from result
29     NB_TO_EXCLUDE = 2
30     num = 0
31     for proj in edgeProj:
32         proj.setIncludeToResult(False)
33         num += 1
34         if num >= NB_TO_EXCLUDE:
35             break
36     model.do()
37     model.testNbSubShapes(theSketch, GeomAPI_Shape.EDGE, [len(edgeProj) - num])
38
39
40 #==============================================================================
41 # Initial model
42 #==============================================================================
43 model.begin()
44 partSet = model.moduleDocument()
45 Part_1 = model.addPart(partSet)
46 Part_1_doc = Part_1.document()
47 Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
48 SketchCircle_1 = Sketch_1.addCircle(-187.9303398287678, -363.2915373234726, 182.2190183849013)
49 SketchArc_1 = Sketch_1.addArc(-229.9631763073051, -65.7360230979784, -105.4201011859997, -97.06956797196608, -326.3502666769664, 19.13032715412109, False)
50 SketchLine_1 = Sketch_1.addLine(-438.4308780225287, -71.00741660505224, 161.0737545348623, -582.1237015141244)
51 SketchPoint_1 = Sketch_1.addPoint(-446.0706301668712, -312.4620987423343)
52 model.do()
53 Sketch_2 = model.addSketch(Part_1_doc, model.defaultPlane("YOZ"))
54 SketchLine_2 = Sketch_2.addLine(27.19276215608871, 61.51157581079401, 72.96621462024476, 0)
55 SketchLine_3 = Sketch_2.addLine(model.selection("EDGE", "PartSet/OZ"))
56 SketchLine_4 = Sketch_2.addLine(model.selection("EDGE", "PartSet/OY"))
57 SketchConstraintCoincidence_1 = Sketch_2.setCoincident(SketchLine_2.endPoint(), SketchLine_4.result())
58 SketchLine_5 = Sketch_2.addLine(72.96621462024476, 0, 0, 0)
59 SketchConstraintCoincidence_2 = Sketch_2.setCoincident(SketchLine_2.endPoint(), SketchLine_5.startPoint())
60 SketchConstraintCoincidence_3 = Sketch_2.setCoincident(SketchLine_3.startPoint(), SketchLine_5.endPoint())
61 SketchLine_6 = Sketch_2.addLine(0, 0, 0, 61.51157581079401)
62 SketchConstraintCoincidence_4 = Sketch_2.setCoincident(SketchLine_3.startPoint(), SketchLine_6.startPoint())
63 SketchConstraintCoincidence_5 = Sketch_2.setCoincident(SketchLine_6.endPoint(), SketchLine_3.result())
64 SketchLine_7 = Sketch_2.addLine(0, 61.51157581079401, 27.19276215608871, 61.51157581079401)
65 SketchConstraintCoincidence_6 = Sketch_2.setCoincident(SketchLine_6.endPoint(), SketchLine_7.startPoint())
66 SketchConstraintCoincidence_7 = Sketch_2.setCoincident(SketchLine_2.startPoint(), SketchLine_7.endPoint())
67 SketchConstraintHorizontal_1 = Sketch_2.setHorizontal(SketchLine_7.result())
68 model.do()
69 Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("FACE", "Sketch_2/Face-SketchLine_2r-SketchLine_5r-SketchLine_6r-SketchLine_7r")], model.selection(), 100, 0)
70 model.do()
71
72 #==============================================================================
73 # Tests
74 #==============================================================================
75
76 aProjectedList = [("EDGE", "Sketch_1/Edge-SketchCircle_1_2"),
77                   ("EDGE", "Sketch_1/Edge-SketchArc_1_2"),
78                   ("EDGE", "Sketch_1/Edge-SketchLine_1"),
79                   ("VERTEX", "Sketch_1/Vertex-SketchPoint_1"),
80                   #
81                   ("VERTEX", "Sketch_1/Vertex-SketchCircle_1"),
82                   ("VERTEX", "Sketch_1/Vertex-SketchLine_1e"),
83                   ("VERTEX", "Sketch_1/Vertex-SketchLine_1s"),
84                   ("VERTEX", "Sketch_1/Vertex-SketchArc_1_2s"),
85                   ("VERTEX", "Sketch_1/Vertex-SketchArc_1_2e"),
86                   ("VERTEX", "Sketch_1/Vertex-SketchArc_1"),
87                   #
88                   ("VERTEX", "Extrusion_1_1/Generated_Face_2&Extrusion_1_1/Generated_Face_1&Extrusion_1_1/From_Face_1"),
89                   ("VERTEX", "Extrusion_1_1/Generated_Face_3&Extrusion_1_1/Generated_Face_2&Extrusion_1_1/From_Face_1"),
90                   ("VERTEX", "Extrusion_1_1/Generated_Face_4&Extrusion_1_1/Generated_Face_3&Extrusion_1_1/From_Face_1"),
91                   ("VERTEX", "Extrusion_1_1/Generated_Face_4&Extrusion_1_1/Generated_Face_1&Extrusion_1_1/From_Face_1"),
92                   ("VERTEX", "Extrusion_1_1/Generated_Face_2&Extrusion_1_1/Generated_Face_1&Extrusion_1_1/To_Face_1"),
93                   ("VERTEX", "Extrusion_1_1/Generated_Face_4&Extrusion_1_1/Generated_Face_1&Extrusion_1_1/To_Face_1"),
94                   ("VERTEX", "Extrusion_1_1/Generated_Face_4&Extrusion_1_1/Generated_Face_3&Extrusion_1_1/To_Face_1"),
95                   ("VERTEX", "Extrusion_1_1/Generated_Face_3&Extrusion_1_1/Generated_Face_2&Extrusion_1_1/To_Face_1"),
96                   #
97                   ("EDGE", "Extrusion_1_1/Generated_Face_2&Extrusion_1_1/From_Face_1"),
98                   ("EDGE", "Extrusion_1_1/Generated_Face_3&Extrusion_1_1/From_Face_1"),
99                   ("EDGE", "Extrusion_1_1/Generated_Face_4&Extrusion_1_1/From_Face_1"),
100                   ("EDGE", "Extrusion_1_1/Generated_Face_1&Extrusion_1_1/To_Face_1"),
101                   #
102                   ("EDGE", "Extrusion_1_1/Generated_Face_2&Extrusion_1_1/Generated_Face_1"),
103                   ("EDGE", "Extrusion_1_1/Generated_Face_3&Extrusion_1_1/Generated_Face_2"),
104                   ("EDGE", "Extrusion_1_1/Generated_Face_4&Extrusion_1_1/Generated_Face_3"),
105                   ("EDGE", "Extrusion_1_1/Generated_Face_4&Extrusion_1_1/Generated_Face_1"),
106                   #
107                   ("EDGE", "Extrusion_1_1/Generated_Face_2&Extrusion_1_1/To_Face_1"),
108                   ("EDGE", "Extrusion_1_1/Generated_Face_3&Extrusion_1_1/To_Face_1"),
109                   ("EDGE", "Extrusion_1_1/Generated_Face_4&Extrusion_1_1/To_Face_1"),
110                   ("EDGE", "Extrusion_1_1/Generated_Face_1&Extrusion_1_1/From_Face_1")
111                   ]
112
113 # Test projection to the same plane
114 Sketch_3 = model.addSketch(Part_1_doc, model.selection("FACE", "Extrusion_1_1/Generated_Face_2"))
115 aFailedIDs = set([21, 29])
116 testProjections(Part_1_doc, Sketch_3, aProjectedList, aFailedIDs)
117
118 # Test projection to parallel plane
119 Sketch_4 = model.addSketch(Part_1_doc, model.selection("FACE", "Extrusion_1_1/Generated_Face_4"))
120 testProjections(Part_1_doc, Sketch_4, aProjectedList, aFailedIDs)
121
122 # Test projection to lower base of the prism
123 Sketch_5 = model.addSketch(Part_1_doc, model.selection("FACE", "Extrusion_1_1/From_Face_1"))
124 aFailedIDs = set([0, 1, 22, 23, 24, 25])
125 testProjections(Part_1_doc, Sketch_5, aProjectedList, aFailedIDs)
126
127 # Test projection to upper base of the prism
128 Sketch_6 = model.addSketch(Part_1_doc, model.selection("FACE", "Extrusion_1_1/To_Face_1"))
129 testProjections(Part_1_doc, Sketch_6, aProjectedList, aFailedIDs)
130
131 # Test projection to orthogonal side face of the prism
132 Sketch_7 = model.addSketch(Part_1_doc, model.selection("FACE", "Extrusion_1_1/Generated_Face_1"))
133 aFailedIDs = set([0, 1, 18, 20, 26, 28])
134 testProjections(Part_1_doc, Sketch_7, aProjectedList, aFailedIDs)
135
136 # Test projection to slope side face of the prism
137 Sketch_8 = model.addSketch(Part_1_doc, model.selection("FACE", "Extrusion_1_1/Generated_Face_3"))
138 aFailedIDs = set([0, 1])
139 testProjections(Part_1_doc, Sketch_8, aProjectedList, aFailedIDs)
140
141 model.end()