X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FFeaturesPlugin%2FTest%2FTestGroup.py;h=a2ca95ef1fe76a702c61531c304c3f75a00a2368;hb=ad65e8a81e0848a96a4124626a59a511655fb036;hp=62b98d473048470ceeb687e119a3d1f211c79268;hpb=7bf19255421b34594c7b0a76d0ce28166d0ce895;p=modules%2Fshaper.git diff --git a/src/FeaturesPlugin/Test/TestGroup.py b/src/FeaturesPlugin/Test/TestGroup.py index 62b98d473..a2ca95ef1 100644 --- a/src/FeaturesPlugin/Test/TestGroup.py +++ b/src/FeaturesPlugin/Test/TestGroup.py @@ -1,12 +1,12 @@ """ TestBoolean.py Unit test of FeaturesPlugin_Group class - + class FeaturesPlugin_Group static const std::string MY_GROUP_ID("Group"); static const std::string MY_GROUP_LIST_ID("group_list"); - - data()->addAttribute(FeaturesPlugin_Group::LIST_ID(), ModelAPI_AttributeSelectionList::type()); + + data()->addAttribute(FeaturesPlugin_Group::LIST_ID(), ModelAPI_AttributeSelectionList::typeId()); """ #========================================================================= # Initialization of the test @@ -22,19 +22,17 @@ aSession = ModelAPI_Session.get() # Create a part for extrusions & boolean aSession.startOperation() aPartFeature = aSession.moduleDocument().addFeature("Part") -aPart = aSession.activeDocument() aSession.finishOperation() +aPart = aSession.activeDocument() #========================================================================= # Create a sketch with triangle and extrude it #========================================================================= aSession.startOperation() -aTriangleSketchFeature = modelAPI_CompositeFeature(aPart.addFeature("Sketch")) +aTriangleSketchFeature = featureToCompositeFeature(aPart.addFeature("Sketch")) origin = geomDataAPI_Point(aTriangleSketchFeature.attribute("Origin")) origin.setValue(0, 0, 0) dirx = geomDataAPI_Dir(aTriangleSketchFeature.attribute("DirX")) dirx.setValue(1, 0, 0) -diry = geomDataAPI_Dir(aTriangleSketchFeature.attribute("DirY")) -diry.setValue(0, 1, 0) norm = geomDataAPI_Dir(aTriangleSketchFeature.attribute("Norm")) norm.setValue(0, 0, 1) aSketchLineA = aTriangleSketchFeature.addFeature("SketchLine") @@ -46,12 +44,12 @@ aLineBStartPoint = geomDataAPI_Point2D(aSketchLineB.attribute("StartPoint")) aLineBEndPoint = geomDataAPI_Point2D(aSketchLineB.attribute("EndPoint")) aLineCStartPoint = geomDataAPI_Point2D(aSketchLineC.attribute("StartPoint")) aLineCEndPoint = geomDataAPI_Point2D(aSketchLineC.attribute("EndPoint")) -aLineAStartPoint.setValue(25., 25.) -aLineAEndPoint.setValue(100., 25.) -aLineBStartPoint.setValue(100., 25.) -aLineBEndPoint.setValue(60., 75.) -aLineCStartPoint.setValue(60., 75.) -aLineCEndPoint.setValue(25., 25.) +aLineAStartPoint.setValue(-100., 0.) +aLineAEndPoint.setValue(100., 0.) +aLineBStartPoint.setValue(100., 0.) +aLineBEndPoint.setValue(0., 173.2) +aLineCStartPoint.setValue(0., 173.2) +aLineCEndPoint.setValue(-100., 0.) aSession.finishOperation() # Build sketch faces aSession.startOperation() @@ -59,43 +57,188 @@ aSketchResult = aTriangleSketchFeature.firstResult() aSketchEdges = modelAPI_ResultConstruction(aSketchResult).shape() origin = geomDataAPI_Point(aTriangleSketchFeature.attribute("Origin")).pnt() dirX = geomDataAPI_Dir(aTriangleSketchFeature.attribute("DirX")).dir() -dirY = geomDataAPI_Dir(aTriangleSketchFeature.attribute("DirY")).dir() norm = geomDataAPI_Dir(aTriangleSketchFeature.attribute("Norm")).dir() aSketchFaces = ShapeList() -GeomAlgoAPI_SketchBuilder.createFaces( - origin, dirX, dirY, norm, aSketchEdges, aSketchFaces) +GeomAlgoAPI_SketchBuilder.createFaces(origin, dirX, norm, aSketchEdges, aSketchFaces) # Create extrusion on them anExtrusionFt = aPart.addFeature("Extrusion") -anExtrusionFt.selection("extrusion_face").setValue( - aSketchResult, aSketchFaces[0]) -anExtrusionFt.real("extrusion_size").setValue(50) -anExtrusionFt.boolean("extrusion_reverse").setValue(False) +anExtrusionFt.selectionList("base").append(aSketchResult, aSketchFaces[0]) +anExtrusionFt.string("CreationMethod").setValue("BySizes") +anExtrusionFt.real("to_size").setValue(50) +anExtrusionFt.real("from_size").setValue(50) +anExtrusionFt.real("to_offset").setValue(0) #TODO: remove +anExtrusionFt.real("from_offset").setValue(0) #TODO: remove anExtrusionFt.execute() aSession.finishOperation() anExtrusionBody = modelAPI_ResultBody(anExtrusionFt.firstResult()) #========================================================================= +# Create group of vertex +#========================================================================= +aSession.startOperation() +aGroupFeature = aSession.activeDocument().addFeature("Group") +aSelectionListAttr = aGroupFeature.selectionList("group_list") +aSelectionListAttr.setSelectionType("vertex") +aSelectionListAttr.append("Extrusion_1_1/Generated_Face_3&Extrusion_1_1/Generated_Face_1&Extrusion_1_1/To_Face_1_1") +aSelectionListAttr.append("Extrusion_1_1/Generated_Face_3&Extrusion_1_1/Generated_Face_2&Extrusion_1_1/To_Face_1_1") +aSelectionListAttr.append("Extrusion_1_1/Generated_Face_2&Extrusion_1_1/Generated_Face_1&Extrusion_1_1/To_Face_1_1") +aSelectionListAttr.append("Extrusion_1_1/Generated_Face_3&Extrusion_1_1/Generated_Face_1&Extrusion_1_1/From_Face_1_1") +aSelectionListAttr.append("Extrusion_1_1/Generated_Face_3&Extrusion_1_1/Generated_Face_2&Extrusion_1_1/From_Face_1_1") +aSelectionListAttr.append("Extrusion_1_1/Generated_Face_2&Extrusion_1_1/Generated_Face_1&Extrusion_1_1/From_Face_1_1") +aSession.finishOperation() +#========================================================================= +# Check results +#========================================================================= +assert(aSelectionListAttr.size() == 6) +aGroupResult = aGroupFeature.firstResult() +assert(aGroupResult) +#========================================================================= # Create group of edges -# TODO: After implementation of selection from batch script -# update this test to have proper reslts in the group feature #========================================================================= aSession.startOperation() aGroupFeature = aSession.activeDocument().addFeature("Group") aSelectionListAttr = aGroupFeature.selectionList("group_list") -aSelectionListAttr.clear() -topAbs_EdgeType = 6 -aSelectionListAttr.setSelectionType(topAbs_EdgeType) +aSelectionListAttr.setSelectionType("edge") +aSelectionListAttr.append("Extrusion_1_1/Generated_Face_2&Extrusion_1_1/Generated_Face_1") +aSelectionListAttr.append("Extrusion_1_1/Generated_Face_3&Extrusion_1_1/Generated_Face_2") +aSelectionListAttr.append("Extrusion_1_1/Generated_Face_3&Extrusion_1_1/Generated_Face_1") +aSelectionListAttr.append("Extrusion_1_1/Generated_Face_3&Extrusion_1_1/From_Face_1_1") +aSelectionListAttr.append("Extrusion_1_1/Generated_Face_1&Extrusion_1_1/To_Face_1_1") +aSelectionListAttr.append("Extrusion_1_1/Generated_Face_1&Extrusion_1_1/From_Face_1_1") +aSelectionListAttr.append("Extrusion_1_1/Generated_Face_2&Extrusion_1_1/To_Face_1_1") +aSelectionListAttr.append("Extrusion_1_1/Generated_Face_2&Extrusion_1_1/From_Face_1_1") +aSelectionListAttr.append("Extrusion_1_1/Generated_Face_3&Extrusion_1_1/To_Face_1_1") +aSession.finishOperation() +#========================================================================= +# Check results +#========================================================================= +assert(aSelectionListAttr.size() == 9) +aGroupResult = aGroupFeature.firstResult() +assert(aGroupResult) +#========================================================================= +# Create group of faces +#========================================================================= +aSession.startOperation() +aGroupFeature = aSession.activeDocument().addFeature("Group") +aSelectionListAttr = aGroupFeature.selectionList("group_list") +aSelectionListAttr.setSelectionType("face") +aShapeExplorer = GeomAPI_ShapeExplorer(anExtrusionBody.shape(), GeomAPI_Shape.FACE) +while aShapeExplorer.more(): + aSelectionListAttr.append(anExtrusionBody, aShapeExplorer.current()) + aShapeExplorer.next(); +aSession.finishOperation() +#========================================================================= +# Check results +#========================================================================= +assert(aSelectionListAttr.size() == 5) +aGroupResult = aGroupFeature.firstResult() +assert(aGroupResult) +#========================================================================= +# Create group of solids +#========================================================================= +aSession.startOperation() +aGroupFeature = aSession.activeDocument().addFeature("Group") +aSelectionListAttr = aGroupFeature.selectionList("group_list") +aSelectionListAttr.setSelectionType("face") +aSelectionListAttr.append(anExtrusionBody, None) +aSession.finishOperation() +#========================================================================= +# Check results +#========================================================================= +assert(aSelectionListAttr.size() == 1) +aGroupResult = aGroupFeature.firstResult() +assert(aGroupResult) + +#========================================================================= +# Create group of face +#========================================================================= +aSession.startOperation() +aGroupFeature = aSession.activeDocument().addFeature("Group") +aSelectionListAttr = aGroupFeature.selectionList("group_list") +aSelectionListAttr.setSelectionType("face") +aSelectionListAttr.append("Extrusion_1_1/To_Face_1_1") +aSession.finishOperation() +#========================================================================= +# Check results +#========================================================================= +assert(aSelectionListAttr.size() == 1) +aGroupResult = aGroupFeature.firstResult() +assert(aGroupResult) + +#========================================================================= +# Create a sketch circle to extrude +#========================================================================= +aSession.startOperation() +aCircleSketchFeature = featureToCompositeFeature(aPart.addFeature("Sketch")) +origin = geomDataAPI_Point(aCircleSketchFeature.attribute("Origin")) +origin.setValue(0, 0, 0) +dirx = geomDataAPI_Dir(aCircleSketchFeature.attribute("DirX")) +dirx.setValue(1, 0, 0) +norm = geomDataAPI_Dir(aCircleSketchFeature.attribute("Norm")) +norm.setValue(0, 0, 1) +# Create circle +aSketchCircle = aCircleSketchFeature.addFeature("SketchCircle") +anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("CircleCenter")) +aCircleRadius = aSketchCircle.real("CircleRadius") +anCircleCentr.setValue(0., 57.74) +aCircleRadius.setValue(50.) +aSession.finishOperation() +#========================================================================= +# Make extrusion on circle +#========================================================================= +# Build shape from sketcher results +aCircleSketchResult = aCircleSketchFeature.firstResult() +aCircleSketchEdges = modelAPI_ResultConstruction(aCircleSketchResult).shape() +origin = geomDataAPI_Point(aCircleSketchFeature.attribute("Origin")).pnt() +dirX = geomDataAPI_Dir(aCircleSketchFeature.attribute("DirX")).dir() +norm = geomDataAPI_Dir(aCircleSketchFeature.attribute("Norm")).dir() +aCircleSketchFaces = ShapeList() +GeomAlgoAPI_SketchBuilder.createFaces(origin, dirX, norm, aCircleSketchEdges, aCircleSketchFaces) +assert(len(aCircleSketchFaces) > 0) +assert(aCircleSketchFaces[0] is not None) +# Create extrusion +aSession.startOperation() +anExtrusionFt = aPart.addFeature("Extrusion") +assert (anExtrusionFt.getKind() == "Extrusion") +# selection type FACE=4 +anExtrusionFt.selectionList("base").append(aCircleSketchResult, aCircleSketchFaces[0]) +anExtrusionFt.string("CreationMethod").setValue("BySizes") +anExtrusionFt.real("to_size").setValue(50) +anExtrusionFt.real("from_size").setValue(50) +anExtrusionFt.real("to_offset").setValue(0) #TODO: remove +anExtrusionFt.real("from_offset").setValue(0) #TODO: remove +anExtrusionFt.execute() +aSession.finishOperation() +aCylinderBody = modelAPI_ResultBody(anExtrusionFt.firstResult()) -for anEdge in [aSketchLineA, aSketchLineB, aSketchLineC]: - anEdgeResult = anEdge.firstResult() - assert(anEdgeResult) - assert(anEdgeResult.shape()) - aSelectionListAttr.append(anEdgeResult, anEdgeResult.shape()) +#========================================================================= +# Create a cut +#========================================================================= +aSession.startOperation() +aBooleanFt = aPart.addFeature("Boolean") +aBooleanFt.selectionList("main_objects").append(anExtrusionBody, None) +aBooleanFt.selectionList("tool_objects").append(aCylinderBody, None) +aBooleanTypeCut = 0 +aBooleanFt.integer("bool_type").setValue(aBooleanTypeCut) +aBooleanFt.execute() aSession.finishOperation() + +#========================================================================= +# Move group feature +#========================================================================= +aSession.startOperation() +aPart.moveFeature(aGroupFeature, aBooleanFt) +aSession.finishOperation() + #========================================================================= # Check results #========================================================================= +aFactory = ModelAPI_Session.get().validators() +assert(aFactory.validate(aGroupFeature)) +assert(aSelectionListAttr.size() == 1) +assert(len(aGroupFeature.results()) > 0) aGroupResult = aGroupFeature.firstResult() -# assert(aGroupResult) +assert(aGroupResult) +assert(aGroupResult.shape()) #========================================================================= # End of test #=========================================================================