TestFolder_Remove.py
TestFolder_Stability.py
TestFolder_CustomName.py
+ TestFolder_Empty.py
Test2358_1.py
Test2358_2.py
Test2396.py
model.end()
+assert(Folder_1.name() == "Box")
assert(model.checkPythonDump())
--- /dev/null
+## Copyright (C) 2018-20xx 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<mailto:webmaster.salome@opencascade.com>
+##
+
+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("XOY"))
+SketchLine_1 = Sketch_1.addLine(0, 0, 0, 50)
+SketchLine_2 = Sketch_1.addLine(0, 50, 50, 50)
+SketchConstraintCoincidence_1 = Sketch_1.setCoincident(SketchLine_1.endPoint(), SketchLine_2.startPoint())
+SketchLine_3 = Sketch_1.addLine(50, 50, 50, 0)
+SketchConstraintCoincidence_2 = Sketch_1.setCoincident(SketchLine_2.endPoint(), SketchLine_3.startPoint())
+SketchLine_4 = Sketch_1.addLine(50, 0, 0, 0)
+SketchConstraintCoincidence_3 = Sketch_1.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint())
+SketchConstraintCoincidence_4 = Sketch_1.setCoincident(SketchLine_4.endPoint(), SketchLine_1.startPoint())
+SketchConstraintRigid_1 = Sketch_1.setFixed(SketchLine_1.startPoint())
+SketchConstraintVertical_1 = Sketch_1.setVertical(SketchLine_1.result())
+SketchConstraintLength_1 = Sketch_1.setLength(SketchLine_4.result(), 50)
+SketchConstraintLength_2 = Sketch_1.setLength(SketchLine_1.result(), 50)
+SketchConstraintParallel_1 = Sketch_1.setParallel(SketchLine_1.result(), SketchLine_3.result())
+SketchConstraintParallel_2 = Sketch_1.setParallel(SketchLine_2.result(), SketchLine_4.result())
+SketchConstraintPerpendicular_1 = Sketch_1.setPerpendicular(SketchLine_1.result(), SketchLine_4.result())
+model.do()
+Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("FACE", "Sketch_1/Face-SketchLine_4r-SketchLine_3r-SketchLine_2r-SketchLine_1r")], model.selection(), 50, 0)
+Fillet_1 = model.addFillet(Part_1_doc, [model.selection("EDGE", "[Extrusion_1_1/Generated_Face&Sketch_1/SketchLine_4][Extrusion_1_1/To_Face]")], 2)
+model.do()
+
+Folder_1 = model.addFolder(Part_1_doc)
+
+model.end()
+
+# empty folder is not dumped
+assert(model.checkPythonDump(model.ModelHighAPI.CHECK_NAMING) == False)
TestRefAttr.py
TestReference.py
TestDeflectionDump.py
+ TestUndoRedo.py
Test2488.py
)
// standard header (encoding + imported modules)
aFile << "# -*- coding: utf-8 -*-" << std::endl << std::endl;
- for (ModulesMap::const_iterator aModIt = myModules.begin();
+ for (ModulesSet::const_iterator aModIt = myModules.begin();
aModIt != myModules.end(); ++aModIt) {
- aFile << "from " << aModIt->first << " import ";
- if (aModIt->second.empty() ||
- aModIt->second.find(std::string()) != aModIt->second.end())
- aFile << "*"; // import whole module
- else {
- // import specific features
- std::set<std::string>::const_iterator anObjIt = aModIt->second.begin();
- aFile << *anObjIt;
- for (++anObjIt; anObjIt != aModIt->second.end(); ++anObjIt)
- aFile << ", " << *anObjIt;
- }
- aFile << std::endl;
+ aFile << "from " << *aModIt << " import *" << std::endl;
}
if (!myModules.empty())
aFile << std::endl;
return true;
}
-void ModelHighAPI_Dumper::importModule(const std::string& theModuleName,
- const std::string& theObject)
+void ModelHighAPI_Dumper::importModule(const std::string& theModuleName)
{
- myModules[theModuleName].insert(theObject);
+ myModules.insert(theModuleName);
}
void ModelHighAPI_Dumper::dumpEntitySetName()
ModelHighAPI_Dumper& ModelHighAPI_Dumper::operator<<(const std::shared_ptr<GeomAPI_Pnt>& thePoint)
{
- importModule("GeomAPI", "GeomAPI_Pnt");
+ importModule("GeomAPI");
myDumpBuffer << "GeomAPI_Pnt(" << thePoint->x() << ", "
<< thePoint->y() << ", " << thePoint->z() << ")";
return *this;
ModelHighAPI_Dumper& ModelHighAPI_Dumper::operator<<(const std::shared_ptr<GeomAPI_Dir>& theDir)
{
- importModule("GeomAPI", "GeomAPI_Dir");
+ importModule("GeomAPI");
myDumpBuffer << "GeomAPI_Dir(" << theDir->x() << ", "
<< theDir->y() << ", " << theDir->z() << ")";
return *this;
/// Add module to list of imported modules
/// \param theModuleName name of the module to be imported
- /// \param theObject name of the entity to be imported
- /// from the module (if empty, while module will be imported)
MODELHIGHAPI_EXPORT
- void importModule(const std::string& theModuleName,
- const std::string& theObject = std::string());
+ void importModule(const std::string& theModuleName);
/// Returns name of specified entity
/// \param theEntity [in] named entity
};
typedef std::map<EntityPtr, EntityName> EntityNameMap;
- typedef std::map<std::string, std::set<std::string> > ModulesMap;
+ typedef std::set<std::string> ModulesSet;
typedef std::map<DocumentPtr, std::map<std::string, std::pair<int, int> > > NbFeaturesMap;
struct LastDumpedEntity {
std::ostringstream myDumpBuffer; ///< intermediate buffer to store dumping data
std::ostringstream myFullDump; ///< full buffer of dumped data
- ModulesMap myModules; ///< modules and entities to be imported
+ ModulesSet myModules; ///< modules and entities to be imported
EntityNameMap myNames; ///< names of the entities
DumpStack myEntitiesStack; ///< stack of dumped entities
{
const std::string& aDocName = theDumper.name(myFolder->document());
- AttributeReferencePtr aStartRef = myFolder->reference(ModelAPI_Folder::FIRST_FEATURE_ID());
- AttributeReferencePtr aEndRef = myFolder->reference(ModelAPI_Folder::LAST_FEATURE_ID());
+ AttributeReferencePtr aStartRef = firstFeature();
+ AttributeReferencePtr aEndRef = lastFeature();
// do not dump empty folders
if (!aEndRef->value())
aDeflectionAttr->setValue(theValue);
}
+// LCOV_EXCL_START
void ModelHighAPI_Selection::setTransparency(double theValue)
{
if (myVariantType != VT_ResultSubShapePair)
aTransparencyAttr->setValue(theValue);
}
+// LCOV_EXCL_STOP
int ModelHighAPI_Selection::numberOfSubs() const
{
--- /dev/null
+## Copyright (C) 2018-20xx 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<mailto:webmaster.salome@opencascade.com>
+##
+
+from salome.shaper import model
+
+model.begin()
+partSet = model.moduleDocument()
+Part_1 = model.addPart(partSet)
+Part_1_doc = model.activeDocument()
+model.do()
+
+Point_2 = model.addPoint(Part_1_doc, 0, 0, 0)
+model.end()
+assert(Part_1_doc.size("Construction") == 1)
+
+model.undo()
+assert(Part_1_doc.size("Construction") == 0)
+
+model.redo()
+assert(Part_1_doc.size("Construction") == 1)