Salome HOME
Merge branch 'master' of salome:modules/shaper
[modules/shaper.git] / src / SketchPlugin / Test / TestSplit.py
1 import model
2
3 from ModelAPI import *
4
5 SketchPointId = 'SketchPoint'
6 SketchLineId = 'SketchLine'
7 SketchArcId = 'SketchArc'
8 SketchConstraintCoincidenceId = 'SketchConstraintCoincidence'
9 SketchConstraintParallelId = 'SketchConstraintParallel'
10 SketchConstraintTangentId = 'SketchConstraintTangent'
11 SketchConstraintEqualId = 'SketchConstraintEqual'
12
13 # Test split on line with one point
14 model.begin()
15 partSet = model.moduleDocument()
16 Part_1 = model.addPart(partSet)
17 Part_1_doc = Part_1.document()
18 Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
19 SketchLine_1 = Sketch_1.addLine(0, 50, 100, 50)
20 SketchPoint_1 = Sketch_1.addPoint(50, 50)
21 SketchConstraintCoincidence_1 = Sketch_1.setCoincident(SketchPoint_1.coordinates(), SketchLine_1.result()[0])
22 Sketch_1.addSplit(SketchLine_1, SketchPoint_1.coordinates(), SketchLine_1.endPoint())
23 model.do()
24
25 Sketch_1_feature = featureToCompositeFeature(Sketch_1.feature())
26 idList = []
27 for index in range(Sketch_1_feature.numberOfSubs()):
28   idList.append(Sketch_1_feature.subFeature(index).getKind())
29
30 assert(idList.count(SketchLineId) == 2)
31 assert(idList.count(SketchPointId) == 1)
32 assert(idList.count(SketchConstraintCoincidenceId) == 2)
33 assert(idList.count(SketchConstraintParallelId) == 1)
34 # Test end
35
36 # Test split on line with two points
37 Sketch_2 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
38 SketchLine_2_1 = Sketch_2.addLine(0, 50, 100, 50)
39 SketchPoint_2_1 = Sketch_2.addPoint(25, 50)
40 SketchPoint_2_2 = Sketch_2.addPoint(75, 50)
41 SketchConstraintCoincidence_2_1 = Sketch_2.setCoincident(SketchPoint_2_1.coordinates(), SketchLine_2_1.result()[0])
42 SketchConstraintCoincidence_2_2 = Sketch_2.setCoincident(SketchPoint_2_2.coordinates(), SketchLine_2_1.result()[0])
43 Sketch_2.addSplit(SketchLine_2_1, SketchPoint_2_1.coordinates(), SketchPoint_2_2.coordinates())
44 model.do()
45
46 Sketch_2_feature = featureToCompositeFeature(Sketch_2.feature())
47 idList = []
48 for index in range(Sketch_2_feature.numberOfSubs()):
49   idList.append(Sketch_2_feature.subFeature(index).getKind())
50
51 assert(idList.count(SketchLineId) == 3)
52 assert(idList.count(SketchPointId) == 2)
53 assert(idList.count(SketchConstraintCoincidenceId) == 4)
54 assert(idList.count(SketchConstraintParallelId) == 2)
55 # Test end
56
57 # Test split on circle with two points
58 Sketch_3 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
59 SketchCircle_3_1 = Sketch_3.addCircle(50, 50, 50)
60 SketchPoint_3_1 = Sketch_3.addPoint(50, 0)
61 SketchPoint_3_2 = Sketch_3.addPoint(50, 100)
62 SketchConstraintCoincidence_3_1 = Sketch_3.setCoincident(SketchPoint_3_1.coordinates(), SketchCircle_3_1.result()[1])
63 SketchConstraintCoincidence_3_2 = Sketch_3.setCoincident(SketchPoint_3_2.coordinates(), SketchCircle_3_1.result()[1])
64 Sketch_3.addSplit(SketchCircle_3_1, SketchPoint_3_1.coordinates(), SketchPoint_3_2.coordinates())
65 model.do()
66
67 Sketch_3_feature = featureToCompositeFeature(Sketch_3.feature())
68 idList = []
69 for index in range(Sketch_3_feature.numberOfSubs()):
70   idList.append(Sketch_3_feature.subFeature(index).getKind())
71
72 assert(idList.count(SketchArcId) == 2)
73 assert(idList.count(SketchPointId) == 2)
74 assert(idList.count(SketchConstraintCoincidenceId) == 2)
75 assert(idList.count(SketchConstraintTangentId) == 1)
76 # Test end
77
78 # Test split on arc with one point
79 Sketch_4 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
80 SketchArc_4_1 = Sketch_4.addArc(50, 50, 50, 0, 0, 50, False)
81 Sketch_4.setFixed(SketchArc_4_1.startPoint())
82 Sketch_4.setFixed(SketchArc_4_1.endPoint())
83 Sketch_4.setRadius(SketchArc_4_1, 50)
84 SketchPoint_4_1 = Sketch_4.addPoint(50, 100)
85 SketchConstraintCoincidence_4_1 = Sketch_4.setCoincident(SketchPoint_4_1.coordinates(), SketchArc_4_1.result()[1])
86 Sketch_4.addSplit(SketchArc_4_1, SketchPoint_4_1.coordinates(), SketchArc_4_1.endPoint())
87 model.do()
88
89 Sketch_4_feature = featureToCompositeFeature(Sketch_4.feature())
90 idList = []
91 for index in range(Sketch_4_feature.numberOfSubs()):
92   idList.append(Sketch_4_feature.subFeature(index).getKind())
93
94 assert(idList.count(SketchArcId) == 2)
95 assert(idList.count(SketchPointId) == 1)
96 assert(idList.count(SketchConstraintCoincidenceId) == 2)
97 assert(idList.count(SketchConstraintEqualId) == 1)
98 assert(idList.count(SketchConstraintTangentId) == 1)
99 # Test end
100
101 # Test split on arc with two points
102 Sketch_5 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
103 #SketchArc_5_1 = Sketch_5.addArc(50, 50, 6.69872981078, 75, 93.30127018922, 75, True)
104 SketchArc_5_1 = Sketch_5.addArc(50, 50, 0, 50, 93.30127018922, 75, True)
105 Sketch_5.setFixed(SketchArc_5_1.startPoint())
106 Sketch_5.setFixed(SketchArc_5_1.endPoint())
107 Sketch_5.setRadius(SketchArc_5_1, 50)
108 SketchLine_5_1 = Sketch_5.addLine(25, 93.301270189222, 75, 93.301270189222)
109 SketchConstraintCoincidence_5_1 = Sketch_5.setCoincident(SketchLine_5_1.startPoint(), SketchArc_5_1.result()[1])
110 SketchConstraintCoincidence_5_2 = Sketch_5.setCoincident(SketchLine_5_1.endPoint(), SketchArc_5_1.result()[1])
111 SketchConstraintHorizontal_5_1 = Sketch_5.setHorizontal(SketchLine_5_1.result()[0])
112 SketchConstraintLength_5_1 = Sketch_5.setLength(SketchLine_5_1.result()[0], 50)
113 Sketch_5.addSplit(SketchArc_5_1, SketchLine_5_1.startPoint(), SketchLine_5_1.endPoint())
114 model.do()
115
116 Sketch_5_feature = featureToCompositeFeature(Sketch_5.feature())
117 idList = []
118 for index in range(Sketch_5_feature.numberOfSubs()):
119   idList.append(Sketch_5_feature.subFeature(index).getKind())
120
121 assert(idList.count(SketchArcId) == 3)
122 assert(idList.count(SketchPointId) == 0)
123 assert(idList.count(SketchConstraintCoincidenceId) == 4)
124 assert(idList.count(SketchConstraintEqualId) == 2)
125 assert(idList.count(SketchConstraintTangentId) == 2)
126 # Test end
127
128 model.end()
129
130 #assert(model.checkPythonDump())