1 from salome.shaper import model
4 from ModelGeomAlgo import ModelGeomAlgo_Point2D
5 from salome.shaper import geom
7 SketchPointId = 'SketchPoint'
8 SketchLineId = 'SketchLine'
9 SketchArcId = 'SketchArc'
10 SketchConstraintCoincidenceId = 'SketchConstraintCoincidence'
11 SketchConstraintParallelId = 'SketchConstraintParallel'
12 SketchConstraintTangentId = 'SketchConstraintTangent'
13 SketchConstraintEqualId = 'SketchConstraintEqual'
15 # Test split on line with one point
17 partSet = model.moduleDocument()
18 Part_1 = model.addPart(partSet)
19 Part_1_doc = Part_1.document()
20 Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
21 SketchLine_1 = Sketch_1.addLine(0, 50, 100, 50)
22 SketchPoint_1 = Sketch_1.addPoint(50, 50)
23 SketchConstraintCoincidence_1 = Sketch_1.setCoincident(SketchPoint_1.coordinates(), SketchLine_1.result())
24 GeomPoint = geom.Pnt2d(20, 50)
25 Sketch_1.addSplit(SketchLine_1, GeomPoint)
28 Sketch_1_feature = featureToCompositeFeature(Sketch_1.feature())
30 for index in range(Sketch_1_feature.numberOfSubs()):
31 idList.append(Sketch_1_feature.subFeature(index).getKind())
33 assert(idList.count(SketchLineId) == 2)
34 assert(idList.count(SketchPointId) == 1)
35 assert(idList.count(SketchConstraintCoincidenceId) == 3)
36 assert(idList.count(SketchConstraintParallelId) == 0)
39 # Test split on line with two points
40 Sketch_2 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
41 SketchLine_2_1 = Sketch_2.addLine(0, 50, 100, 50)
42 SketchPoint_2_1 = Sketch_2.addPoint(25, 50)
43 SketchPoint_2_2 = Sketch_2.addPoint(75, 50)
44 SketchConstraintCoincidence_2_1 = Sketch_2.setCoincident(SketchPoint_2_1.coordinates(), SketchLine_2_1.result())
45 SketchConstraintCoincidence_2_2 = Sketch_2.setCoincident(SketchPoint_2_2.coordinates(), SketchLine_2_1.result())
46 GeomPoint = geom.Pnt2d(40, 50)
47 Sketch_2.addSplit(SketchLine_2_1, GeomPoint)
50 Sketch_2_feature = featureToCompositeFeature(Sketch_2.feature())
52 for index in range(Sketch_2_feature.numberOfSubs()):
53 idList.append(Sketch_2_feature.subFeature(index).getKind())
55 assert(idList.count(SketchLineId) == 3)
56 assert(idList.count(SketchPointId) == 2)
57 assert(idList.count(SketchConstraintCoincidenceId) == 6)
58 assert(idList.count(SketchConstraintParallelId) == 0)
61 # Test split on circle with two points
62 Sketch_3 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
63 SketchCircle_3_1 = Sketch_3.addCircle(50, 50, 50)
64 SketchPoint_3_1 = Sketch_3.addPoint(50, 0)
65 SketchPoint_3_2 = Sketch_3.addPoint(50, 100)
66 SketchConstraintCoincidence_3_1 = Sketch_3.setCoincident(SketchPoint_3_1.coordinates(), SketchCircle_3_1.results()[1])
67 SketchConstraintCoincidence_3_2 = Sketch_3.setCoincident(SketchPoint_3_2.coordinates(), SketchCircle_3_1.results()[1])
68 GeomPoint = geom.Pnt2d(0, 50)
69 Sketch_3.addSplit(SketchCircle_3_1, GeomPoint)
72 Sketch_3_feature = featureToCompositeFeature(Sketch_3.feature())
74 for index in range(Sketch_3_feature.numberOfSubs()):
75 idList.append(Sketch_3_feature.subFeature(index).getKind())
77 assert(idList.count(SketchArcId) == 2)
78 assert(idList.count(SketchPointId) == 2)
79 assert(idList.count(SketchConstraintCoincidenceId) == 6)
80 assert(idList.count(SketchConstraintTangentId) == 0)
83 # Test split on arc with one point
84 Sketch_4 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
85 SketchArc_4_1 = Sketch_4.addArc(50, 50, 50, 0, 0, 50, False)
86 Sketch_4.setFixed(SketchArc_4_1.startPoint())
87 Sketch_4.setFixed(SketchArc_4_1.endPoint())
88 Sketch_4.setRadius(SketchArc_4_1, 50)
89 SketchPoint_4_1 = Sketch_4.addPoint(50, 100)
90 SketchConstraintCoincidence_4_1 = Sketch_4.setCoincident(SketchPoint_4_1.coordinates(), SketchArc_4_1.results()[1])
91 # prepare point on circle
92 SketchLine_intersecting = Sketch_4.addLine(0, 100, 50, 50)
93 Intersection_Point = ModelGeomAlgo_Point2D.getSetOfPntIntersectedShape(SketchArc_4_1.feature(), FeatureList([SketchLine_intersecting.feature()]))
94 removeFeaturesAndReferences(FeatureSet([SketchLine_intersecting.feature()]))
95 Intersection_GeomPoint = Intersection_Point[0]
96 Sketch_4.addSplit(SketchArc_4_1, Sketch_1.to2D(Intersection_GeomPoint))
99 Sketch_4_feature = featureToCompositeFeature(Sketch_4.feature())
101 for index in range(Sketch_4_feature.numberOfSubs()):
102 idList.append(Sketch_4_feature.subFeature(index).getKind())
104 assert(idList.count(SketchArcId) == 2)
105 assert(idList.count(SketchPointId) == 1)
106 assert(idList.count(SketchConstraintCoincidenceId) == 3)
107 assert(idList.count(SketchConstraintEqualId) == 0)
108 assert(idList.count(SketchConstraintTangentId) == 0)
111 # Test split on arc with two points
112 Sketch_5 = model.addSketch(Part_1_doc, model.defaultPlane("XOY"))
113 SketchArc_5_1 = Sketch_5.addArc(50, 50, 93.30127018922, 75, 0, 50, False)
114 Sketch_5.setFixed(SketchArc_5_1.startPoint())
115 Sketch_5.setFixed(SketchArc_5_1.endPoint())
116 Sketch_5.setRadius(SketchArc_5_1, 50)
117 SketchLine_5_1 = Sketch_5.addLine(25, 93.301270189222, 75, 93.301270189222)
118 SketchConstraintCoincidence_5_1 = Sketch_5.setCoincident(SketchLine_5_1.startPoint(), SketchArc_5_1.results()[1])
119 SketchConstraintCoincidence_5_2 = Sketch_5.setCoincident(SketchLine_5_1.endPoint(), SketchArc_5_1.results()[1])
120 SketchConstraintHorizontal_5_1 = Sketch_5.setHorizontal(SketchLine_5_1.result())
121 SketchConstraintLength_5_1 = Sketch_5.setLength(SketchLine_5_1.result(), 50)
122 GeomPoint = geom.Pnt2d(50, 100)
123 Sketch_5.addSplit(SketchArc_5_1, GeomPoint)
126 Sketch_5_feature = featureToCompositeFeature(Sketch_5.feature())
128 for index in range(Sketch_5_feature.numberOfSubs()):
129 idList.append(Sketch_5_feature.subFeature(index).getKind())
131 assert(idList.count(SketchArcId) == 3)
132 assert(idList.count(SketchPointId) == 0)
133 assert(idList.count(SketchConstraintCoincidenceId) == 6)
134 assert(idList.count(SketchConstraintEqualId) == 0)
135 assert(idList.count(SketchConstraintTangentId) == 0)
140 assert(model.checkPythonDump())