From: azv Date: Tue, 26 Feb 2019 12:38:17 +0000 (+0300) Subject: Merge remote-tracking branch 'remotes/origin/HigherLevelObjectsHistory' X-Git-Tag: HighLevelObjectsHierarchy~13 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=c4eab94a20a0d93100549a210582d46409fec1cc;p=modules%2Fshaper.git Merge remote-tracking branch 'remotes/origin/HigherLevelObjectsHistory' # Conflicts: # env.sh # src/FeaturesPlugin/CMakeLists.txt # src/SketchPlugin/Test/TestUpdateSketch.py --- c4eab94a20a0d93100549a210582d46409fec1cc diff --cc src/CollectionPlugin/Test/TestGroupMove01.py index 000000000,604989e39..fb3768c8c mode 000000,100644..100644 --- a/src/CollectionPlugin/Test/TestGroupMove01.py +++ b/src/CollectionPlugin/Test/TestGroupMove01.py @@@ -1,0 -1,50 +1,49 @@@ -## Copyright (C) 2014-2017 CEA/DEN, EDF R&D -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -## -## See http:##www.salome-platform.org/ or -## email : webmaster.salome@opencascade.com -## ++# Copyright (C) 2014-2019 CEA/DEN, EDF R&D ++# ++# This library is free software; you can redistribute it and/or ++# modify it under the terms of the GNU Lesser General Public ++# License as published by the Free Software Foundation; either ++# version 2.1 of the License, or (at your option) any later version. ++# ++# This library is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# Lesser General Public License for more details. ++# ++# You should have received a copy of the GNU Lesser General Public ++# License along with this library; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++# ++# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com ++# + + # Test that box partitioned is splitted: group with edge becomes 2 edges group, + # group with not-touched vertex keeps this vertex. + + from salome.shaper import model + from ModelAPI import * + + model.begin() + partSet = model.moduleDocument() + Part_1 = model.addPart(partSet) + Part_1_doc = Part_1.document() + Box_1 = model.addBox(Part_1_doc, 20, 10, 10) + Plane_4 = model.addPlane(Part_1_doc, model.selection("FACE", "Box_1_1/Back"), 10, True) + Group_1 = model.addGroup(Part_1_doc, [model.selection("EDGE", "[Box_1_1/Left][Box_1_1/Top]")]) + Group_2 = model.addGroup(Part_1_doc, [model.selection("VERTEX", "[Box_1_1/Back][Box_1_1/Left][Box_1_1/Top]")]) + Partition_1 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_1_1"), model.selection("FACE", "Plane_1")]) + model.do() + # move groups + Part_1_doc.moveFeature(Group_1.feature(), Partition_1.feature()) + Part_1_doc.moveFeature(Group_2.feature(), Group_1.feature()) + model.end() + + # Check groups + aFactory = ModelAPI_Session.get().validators() + selectionList = Group_1.feature().selectionList("group_list") + assert(selectionList.size() == 2) + assert(aFactory.validate(Group_1.feature())) + + selectionList = Group_2.feature().selectionList("group_list") + assert(selectionList.size() == 1) + assert(aFactory.validate(Group_2.feature())) diff --cc src/CollectionPlugin/Test/TestGroupMove02.py index 000000000,46f1be056..e764e5c4c mode 000000,100644..100644 --- a/src/CollectionPlugin/Test/TestGroupMove02.py +++ b/src/CollectionPlugin/Test/TestGroupMove02.py @@@ -1,0 -1,45 +1,44 @@@ -## Copyright (C) 2014-2017 CEA/DEN, EDF R&D -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -## -## See http:##www.salome-platform.org/ or -## email : webmaster.salome@opencascade.com -## ++# Copyright (C) 2014-2019 CEA/DEN, EDF R&D ++# ++# This library is free software; you can redistribute it and/or ++# modify it under the terms of the GNU Lesser General Public ++# License as published by the Free Software Foundation; either ++# version 2.1 of the License, or (at your option) any later version. ++# ++# This library is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# Lesser General Public License for more details. ++# ++# You should have received a copy of the GNU Lesser General Public ++# License along with this library; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++# ++# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com ++# + + # Test that removed vertex, selected in the group makes empty group => invalid one + + from salome.shaper import model + from ModelAPI import * + + model.begin() + partSet = model.moduleDocument() + Part_1 = model.addPart(partSet) + Part_1_doc = Part_1.document() + Box_1 = model.addBox(Part_1_doc, 10, 10, 20) + Plane_4 = model.addPlane(Part_1_doc, model.selection("VERTEX", "[Box_1_1/Back][Box_1_1/Right][Box_1_1/Top]"), model.selection("VERTEX", "[Box_1_1/Front][Box_1_1/Left][Box_1_1/Top]"), model.selection("VERTEX", "[Box_1_1/Back][Box_1_1/Left][Box_1_1/Bottom]")) + Group_1 = model.addGroup(Part_1_doc, [model.selection("VERTEX", "[Box_1_1/Back][Box_1_1/Left][Box_1_1/Top]")]) + Partition_1 = model.addPartition(Part_1_doc, [model.selection("SOLID", "Box_1_1"), model.selection("FACE", "Plane_1")]) + Remove_SubShapes_1 = model.addRemoveSubShapes(Part_1_doc, model.selection("COMPSOLID", "Partition_1_1")) + Remove_SubShapes_1.setSubShapesToKeep([model.selection("SOLID", "Partition_1_1_2")]) + model.do() + # move group + Part_1_doc.moveFeature(Group_1.feature(), Remove_SubShapes_1.feature()) + model.end() + + # Check group + aFactory = ModelAPI_Session.get().validators() + selectionList = Group_1.feature().selectionList("group_list") + assert(selectionList.size() == 0) + assert(aFactory.validate(Group_1.feature()) == False) diff --cc src/CollectionPlugin/Test/TestGroupMove03.py index 000000000,f3c2bda62..495bd4b07 mode 000000,100644..100644 --- a/src/CollectionPlugin/Test/TestGroupMove03.py +++ b/src/CollectionPlugin/Test/TestGroupMove03.py @@@ -1,0 -1,87 +1,86 @@@ -## Copyright (C) 2014-2017 CEA/DEN, EDF R&D -## -## This library is free software; you can redistribute it and/or -## modify it under the terms of the GNU Lesser General Public -## License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## -## This library is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## Lesser General Public License for more details. -## -## You should have received a copy of the GNU Lesser General Public -## License along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -## -## See http:##www.salome-platform.org/ or -## email : webmaster.salome@opencascade.com -## ++# Copyright (C) 2014-2019 CEA/DEN, EDF R&D ++# ++# This library is free software; you can redistribute it and/or ++# modify it under the terms of the GNU Lesser General Public ++# License as published by the Free Software Foundation; either ++# version 2.1 of the License, or (at your option) any later version. ++# ++# This library is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# Lesser General Public License for more details. ++# ++# You should have received a copy of the GNU Lesser General Public ++# License along with this library; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++# ++# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com ++# + + # Test that partition divides cylinder into 4 faces, there is no edges in a group moved to the end + # Based on the CEA report mail 04.12.2018, page 2 + + from SketchAPI import * + + from ModelAPI import * + from GeomAPI import * + from salome.shaper import model + + model.begin() + partSet = model.moduleDocument() + Part_1 = model.addPart(partSet) + Part_1_doc = Part_1.document() + Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOZ")) + SketchArc_1 = Sketch_1.addArc(-1.103476974288834e-12, 24.99999999999979, 24.49489742783218, 30, 0, 50, False) + SketchProjection_1 = Sketch_1.addProjection(model.selection("EDGE", "PartSet/OZ"), False) + SketchLine_1 = SketchProjection_1.createdFeature() + SketchConstraintCoincidence_1 = Sketch_1.setCoincident(SketchArc_1.endPoint(), SketchLine_1.result()) + SketchLine_2 = Sketch_1.addLine(0, 50, -10, 50) + SketchLine_2.setAuxiliary(True) + SketchConstraintCoincidence_2 = Sketch_1.setCoincident(SketchArc_1.endPoint(), SketchLine_2.startPoint()) + SketchConstraintHorizontal_1 = Sketch_1.setHorizontal(SketchLine_2.result()) + SketchConstraintTangent_1 = Sketch_1.setTangent(SketchArc_1.results()[1], SketchLine_2.result()) + SketchLine_3 = Sketch_1.addLine(24.49489742783218, 30, 24.49489742783218, 5) + SketchConstraintCoincidence_3 = Sketch_1.setCoincident(SketchArc_1.startPoint(), SketchLine_3.startPoint()) + SketchLine_4 = Sketch_1.addLine(24.49489742783218, 5, 34.49489742783218, 5) + SketchConstraintCoincidence_4 = Sketch_1.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint()) + SketchLine_5 = Sketch_1.addLine(34.49489742783218, 5, 34.49489742783218, 0) + SketchConstraintCoincidence_5 = Sketch_1.setCoincident(SketchLine_4.endPoint(), SketchLine_5.startPoint()) + SketchProjection_2 = Sketch_1.addProjection(model.selection("EDGE", "PartSet/OX"), False) + SketchLine_6 = SketchProjection_2.createdFeature() + SketchConstraintCoincidence_6 = Sketch_1.setCoincident(SketchLine_5.endPoint(), SketchLine_6.result()) + SketchLine_7 = Sketch_1.addLine(34.49489742783218, 0, 0, 0) + SketchConstraintCoincidence_7 = Sketch_1.setCoincident(SketchLine_5.endPoint(), SketchLine_7.startPoint()) + SketchConstraintCoincidence_8 = Sketch_1.setCoincident(SketchAPI_Line(SketchLine_1).startPoint(), SketchLine_7.endPoint()) + SketchLine_8 = Sketch_1.addLine(0, 50, 0, 0) + SketchConstraintCoincidence_9 = Sketch_1.setCoincident(SketchArc_1.endPoint(), SketchLine_8.startPoint()) + SketchConstraintCoincidence_10 = Sketch_1.setCoincident(SketchAPI_Line(SketchLine_1).startPoint(), SketchLine_8.endPoint()) + SketchConstraintHorizontal_2 = Sketch_1.setHorizontal(SketchLine_4.result()) + SketchConstraintVertical_1 = Sketch_1.setVertical(SketchLine_3.result()) + SketchConstraintVertical_2 = Sketch_1.setVertical(SketchLine_5.result()) + SketchConstraintLength_1 = Sketch_1.setLength(SketchLine_4.result(), 10) + SketchConstraintLength_2 = Sketch_1.setLength(SketchLine_5.result(), 5) + SketchConstraintLength_3 = Sketch_1.setLength(SketchLine_3.result(), 25) + SketchConstraintLength_4 = Sketch_1.setLength(SketchLine_8.result(), 50) + SketchConstraintLength_5 = Sketch_1.setLength(SketchLine_2.result(), 10) + SketchConstraintRadius_1 = Sketch_1.setRadius(SketchArc_1.results()[1], 25) + model.do() + Revolution_1 = model.addRevolution(Part_1_doc, [model.selection("FACE", "Sketch_1/Face-SketchArc_1_2r-SketchLine_8f-SketchLine_7r-SketchLine_5r-SketchLine_4r-SketchLine_3r")], model.selection("EDGE", "PartSet/OZ"), 360, 0) + Group_1 = model.addGroup(Part_1_doc, [model.selection("FACE", "Revolution_1_1/Generated_Face&Sketch_1/SketchLine_3")]) + Partition_1_objects = [model.selection("SOLID", "Revolution_1_1"), model.selection("FACE", "PartSet/XOZ"), model.selection("FACE", "PartSet/YOZ")] + Partition_1 = model.addPartition(Part_1_doc, Partition_1_objects) + model.do() + + # move group + Part_1_doc.moveFeature(Group_1.feature(), Partition_1.feature()) + model.end() + + # Check group: result must be four faces + aFactory = ModelAPI_Session.get().validators() + selectionList = Group_1.feature().selectionList("group_list") + assert(selectionList.size() == 4) + assert(aFactory.validate(Group_1.feature())) + for i in range(4): + assert(Group_1.groupList().value(i).value().shapeType() == GeomAPI_Shape.FACE) + + assert(model.checkPythonDump()) diff --cc src/FeaturesPlugin/CMakeLists.txt index 2c7b1e2bb,0a7813bcd..70a5a6fcd --- a/src/FeaturesPlugin/CMakeLists.txt +++ b/src/FeaturesPlugin/CMakeLists.txt @@@ -411,7 -415,7 +414,8 @@@ ADD_UNIT_TESTS(TestExtrusion.p TestPartitionSubCompsolidWithPlane3.py TestPartitionSubCompsolidWithPlane4.py TestPartitionSubCompsolidWithPlane5.py + TestPartitionArgsUpdate.py + TestPartition_SolidsHistory.py TestBooleanFuse_Vertex_Vertex.py TestBooleanFuse_VertexCompound_VertexCompound.py TestBooleanFuse_Edge_Edge.py @@@ -445,6 -453,7 +453,8 @@@ Test2692.py Test2617.py Test2729.py + Test2738.py Test2751.py + Test2826.py + Test2854.py ) diff --cc src/FeaturesPlugin/FeaturesPlugin_MultiRotation.h index 477d6b62f,96e9df094..f7dc3dc8d --- a/src/FeaturesPlugin/FeaturesPlugin_MultiRotation.h +++ b/src/FeaturesPlugin/FeaturesPlugin_MultiRotation.h @@@ -135,10 -118,6 +135,6 @@@ private std::shared_ptr theResultBody, std::shared_ptr theBaseShape, int nb); #endif - - void loadNamingDS(std::list > theListOfRotationAlgo, - std::shared_ptr theResultBody, - std::shared_ptr theBaseShape); }; -#endif // FEATURESPLUGIN_MULTIROTATION_H_ +#endif // FEATURESPLUGIN_MULTIROTATION_H_ diff --cc src/FeaturesPlugin/FeaturesPlugin_Partition.cpp index a97985ea4,8215f0293..f572664a2 mode 100644,100755..100644 --- a/src/FeaturesPlugin/FeaturesPlugin_Partition.cpp +++ b/src/FeaturesPlugin/FeaturesPlugin_Partition.cpp diff --cc src/FeaturesPlugin/FeaturesPlugin_Rotation.cpp index bfe4ad1a8,d0754a9dc..7ef1d86b8 mode 100644,100755..100644 --- a/src/FeaturesPlugin/FeaturesPlugin_Rotation.cpp +++ b/src/FeaturesPlugin/FeaturesPlugin_Rotation.cpp diff --cc src/Model/Model_AttributeString.h index 7b2dfb6f8,733cb88bd..2ab3b1cff --- a/src/Model/Model_AttributeString.h +++ b/src/Model/Model_AttributeString.h @@@ -45,11 -44,9 +45,11 @@@ class Model_AttributeString : public Mo /// Returns the std::string value MODEL_EXPORT virtual std::string value(); + /// Returns the std::wstring value + MODEL_EXPORT virtual std::wstring valueW(); protected: - /// Initializes attibutes + /// Initializes attributes Model_AttributeString(TDF_Label& theLabel); /// Reinitializes the internal state of the attribute (may be needed on undo/redo, abort, etc) virtual void reinit(); diff --cc src/Model/Model_BodyBuilder.cpp index 913a773ad,f65a38951..5c89b7cc3 mode 100644,100755..100644 --- a/src/Model/Model_BodyBuilder.cpp +++ b/src/Model/Model_BodyBuilder.cpp diff --cc src/Model/Model_BodyBuilder.h index 381914100,13c911517..08e79790b mode 100644,100755..100644 --- a/src/Model/Model_BodyBuilder.h +++ b/src/Model/Model_BodyBuilder.h diff --cc src/Model/Model_Update.cpp index 98d13b066,835683845..f86c3076b mode 100644,100755..100644 --- a/src/Model/Model_Update.cpp +++ b/src/Model/Model_Update.cpp diff --cc src/ModelAPI/ModelAPI_BodyBuilder.h index 3cbdf43e0,10803b8c7..ecf313733 mode 100644,100755..100644 --- a/src/ModelAPI/ModelAPI_BodyBuilder.h +++ b/src/ModelAPI/ModelAPI_BodyBuilder.h