1 from salome.shaper import model
4 #==============================================================================
6 #==============================================================================
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
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())
26 model.testNbSubShapes(theSketch, GeomAPI_Shape.EDGE, [len(edgeProj)])
28 # exclude some edges from result
32 proj.setIncludeToResult(False)
34 if num >= NB_TO_EXCLUDE:
37 model.testNbSubShapes(theSketch, GeomAPI_Shape.EDGE, [len(edgeProj) - num])
40 #==============================================================================
42 #==============================================================================
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)
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())
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)
72 #==============================================================================
74 #==============================================================================
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"),
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"),
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"),
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"),
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"),
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")
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)
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)
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)
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)
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)
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)