]> SALOME platform Git repositories - modules/shaper.git/blob - src/SketchPlugin/Test/TestTrimArc.py
Salome HOME
24c24ed3a4f77c27ba3d9f114e6798d72b91236d
[modules/shaper.git] / src / SketchPlugin / Test / TestTrimArc.py
1 from salome.shaper import model
2
3 from ModelAPI import *
4 from GeomDataAPI import *
5 from salome.shaper import geom
6 import math
7
8 TOLERANCE = 1.e-7
9
10 SketchPointId = 'SketchPoint'
11 SketchLineId = 'SketchLine'
12 SketchArcId = 'SketchArc'
13 SketchCircleId = 'SketchCircle'
14 SketchConstraintCoincidenceId = 'SketchConstraintCoincidence'
15 SketchConstraintMirrorId = 'SketchConstraintMirror'
16 SketchConstraintTangentId = 'SketchConstraintTangent'
17 SketchConstraintEqualId = 'SketchConstraintEqual'
18
19 model.begin()
20 partSet = model.moduleDocument()
21 Part_1 = model.addPart(partSet)
22 Part_1_doc = Part_1.document()
23
24 # Test1:begin split on circle with coincident point and intersection line : smaller part
25 Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
26 SketchArc_1_1 = Sketch_1.addArc(50, 50, 55, 70, 30, 45, True)
27 SketchLine_1_1 = Sketch_1.addLine(50, 30, 100, 30)
28 SketchLine_1_2 = Sketch_1.addLine(60, 50, 100, 30)
29
30 SketchConstraintCoincidence_1_1 = Sketch_1.setCoincident(SketchLine_1_1.startPoint(), SketchArc_1_1.results()[1])
31 SketchConstraintCoincidence_1_2 = Sketch_1.setCoincident(SketchLine_1_1.endPoint(), SketchLine_1_2.endPoint())
32 GeomPoint_1_1 = geom.Pnt2d(60, 35)
33
34 #check number of features before trim
35 Sketch_1_feature = featureToCompositeFeature(Sketch_1.feature())
36 idList_before_1 = []
37 for index in range(Sketch_1_feature.numberOfSubs()):
38   idList_before_1.append(Sketch_1_feature.subFeature(index).getKind())
39 assert(idList_before_1.count(SketchArcId) == 1)
40 assert(idList_before_1.count(SketchLineId) == 2)
41 assert(idList_before_1.count(SketchConstraintCoincidenceId) == 2)
42 assert(idList_before_1.count(SketchConstraintEqualId) == 0)
43
44 #perform trim
45 SketchTrim_1_1 = Sketch_1.addTrim(SketchArc_1_1, GeomPoint_1_1)
46 SketchTrim_1_1.execute()
47 model.do()
48
49 #check number of features after trim
50 SketchFeatures = featureToCompositeFeature(Sketch_1.feature())
51 idList_after_1 = []
52 for SubIndex in range(SketchFeatures.numberOfSubs()):
53     SubFeature = SketchFeatures.subFeature(SubIndex)
54     idList_after_1.append(SubFeature.getKind())
55
56 assert(idList_after_1.count(SketchArcId) == 2)
57 assert(idList_after_1.count(SketchLineId) == 2)
58 aCount = idList_after_1.count(SketchConstraintCoincidenceId)
59
60 assert(idList_after_1.count(SketchConstraintCoincidenceId) == 4)
61 assert(idList_after_1.count(SketchConstraintEqualId) == 1)
62 # Test1:end
63
64 # Test2: split on circle with coincident point and intersection line : largest part
65 Sketch_2 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
66 move_test_delta_y = 100
67 move_test_delta_x = 0
68 SketchCircle_2_1 = Sketch_2.addCircle(50, 50 + move_test_delta_y, 20)
69 SketchLine_2_1 = Sketch_2.addLine(50, 30 + move_test_delta_y, 100, 30 + move_test_delta_y)
70 SketchLine_2_2 = Sketch_2.addLine(60, 50 + move_test_delta_y, 100, 30 + move_test_delta_y)
71
72 SketchConstraintCoincidence_2_1 = Sketch_2.setCoincident(SketchLine_2_1.startPoint(), SketchCircle_2_1.results()[1])
73 SketchConstraintCoincidence_2_2 = Sketch_2.setCoincident(SketchLine_2_1.endPoint(), SketchLine_2_2.endPoint())
74 GeomPoint_2_1 = geom.Pnt2d(50, 75 + move_test_delta_y)
75
76 #check number of features before trim
77 Sketch_2_feature = featureToCompositeFeature(Sketch_2.feature())
78 idList_before_2 = []
79 for index in range(Sketch_2_feature.numberOfSubs()):
80   idList_before_2.append(Sketch_2_feature.subFeature(index).getKind())
81 assert(idList_before_2.count(SketchCircleId) == 1)
82 assert(idList_before_2.count(SketchArcId) == 0)
83 assert(idList_before_2.count(SketchLineId) == 2)
84 assert(idList_before_2.count(SketchConstraintCoincidenceId) == 2)
85
86 #perform trim
87 SketchTrim_2_1 = Sketch_2.addTrim(SketchCircle_2_1, GeomPoint_2_1)
88 SketchTrim_2_1.execute()
89 model.do()
90
91 #check number of features after trim
92 SketchFeatures = featureToCompositeFeature(Sketch_2.feature())
93 idList_after_2 = []
94 for SubIndex in range(SketchFeatures.numberOfSubs()):
95     SubFeature = SketchFeatures.subFeature(SubIndex)
96     idList_after_2.append(SubFeature.getKind())
97     if SubFeature.getKind() == SketchArcId:
98       ArcFeature_2 = SubFeature
99
100
101 assert(idList_after_2.count(SketchCircleId) == 0)
102 assert(idList_after_2.count(SketchArcId) == 1)
103 assert(idList_after_2.count(SketchLineId) == 2)
104 assert(idList_after_2.count(SketchConstraintCoincidenceId) == 3)
105
106 #test created arc : it is not inversed, has coincidence to start line point
107 anInversed_2 = ArcFeature_2.boolean("InversedArc").value()
108 assert(anInversed_2 == False)
109 ArcPoint_2 = geomDataAPI_Point2D(ArcFeature_2.attribute("ArcStartPoint"))
110 LinePoint_2 = geomDataAPI_Point2D(SketchLine_2_1.startPoint())
111 aDistance_2 = math.hypot(LinePoint_2.x() - ArcPoint_2.x(), LinePoint_2.y() - ArcPoint_2.y())
112 #print "Distance " + repr(aDistance_2)
113 assert (math.fabs(aDistance_2) <= TOLERANCE)
114 # Test2:end
115
116
117 # Test3: constraints to circle
118 Sketch_3 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
119 SketchCircle_3_1 = Sketch_3.addCircle(150, 50, 25)
120 SketchLine_3_1 = Sketch_3.addLine(160, 30, 200, 30)
121 SketchLine_3_2 = Sketch_3.addLine(160, 50, 200, 30)
122 SketchLine_3_3 = Sketch_3.addLine(240, 120, 280, 100)
123 SketchCircle_3_2 = Sketch_3.addCircle(150, 120, 20)
124 aSketchPoint_3 = Sketch_3.addPoint(145, 70)
125 SketchLine_3_4 = Sketch_3.addLine(120, 25, 120, 70)
126
127 SketchConstraintCoincidence_3_1 = Sketch_3.setCoincident(SketchLine_3_1.startPoint(), SketchCircle_3_1.results()[1])
128 SketchConstraintCoincidence_3_2 = Sketch_3.setCoincident(SketchLine_3_1.endPoint(), SketchLine_3_2.endPoint())
129 GeomPoint_3_1 = geom.Pnt2d(165, 40)
130
131 #Constraints
132 aConstraint_3_1 = Sketch_3.setDistance(SketchLine_3_1.endPoint(), SketchCircle_3_1.center(), 50)
133 aConstraint_3_2 = Sketch_3.setEqual(SketchCircle_3_1.results()[1], SketchCircle_3_2.results()[1])
134 aConstraint_3_3 = Sketch_3.setRadius(SketchCircle_3_1.results()[1], 25)
135 aConstraint_3_4 = Sketch_3.setCoincident(SketchCircle_3_1.results()[1], aSketchPoint_3.results()[0])
136 aConstraint_3_4 = Sketch_3.setTangent(SketchCircle_3_1.results()[1], SketchLine_3_4.results()[0])
137
138 MirrorObjects_3 = [SketchCircle_3_1.results()[1], SketchCircle_3_2.results()[1]]
139 aConstraint_3_5 = Sketch_3.addMirror(SketchLine_3_3.result(), MirrorObjects_3)
140
141 #check number of features before trim
142 Sketch_3_feature = featureToCompositeFeature(Sketch_3.feature())
143 idList_before_3 = []
144 for index in range(Sketch_3_feature.numberOfSubs()):
145   idList_before_3.append(Sketch_3_feature.subFeature(index).getKind())
146
147 assert(idList_before_3.count(SketchCircleId) == 4)
148 assert(idList_before_3.count(SketchArcId) == 0)
149 assert(idList_before_3.count(SketchLineId) == 4)
150 assert(idList_before_3.count(SketchConstraintCoincidenceId) == 3)
151 assert(idList_before_3.count(SketchConstraintMirrorId) == 1)
152 assert(idList_before_3.count(SketchConstraintTangentId) == 1)
153 assert(idList_before_3.count(SketchConstraintEqualId) == 1)
154
155 #perform trim
156 SketchTrim_3_1 = Sketch_3.addTrim(SketchCircle_3_1, GeomPoint_3_1)
157 SketchTrim_3_1.execute()
158 model.do()
159
160 #check number of features after trim
161 SketchFeatures = featureToCompositeFeature(Sketch_3.feature())
162 idList_after_3 = []
163 for SubIndex in range(SketchFeatures.numberOfSubs()):
164     SubFeature = SketchFeatures.subFeature(SubIndex)
165     idList_after_3.append(SubFeature.getKind())
166
167
168 assert(idList_after_3.count(SketchCircleId) == 3)
169 assert(idList_after_3.count(SketchArcId) == 1)
170 assert(idList_after_3.count(SketchLineId) == 4)
171 assert(idList_after_3.count(SketchConstraintCoincidenceId) == 3)
172 assert(idList_after_3.count(SketchConstraintMirrorId) == 0)
173 assert(idList_after_3.count(SketchConstraintTangentId) == 1)
174 assert(idList_after_3.count(SketchConstraintEqualId) == 1)
175 # Test3:end
176
177
178 model.end()
179
180 #assert(model.checkPythonDump())