import os
-def getTmpFileName(ext):
- import tempfile
- tempdir = tempfile.gettempdir()
- tmp_file = tempfile.NamedTemporaryFile(suffix=".%s"%ext, prefix='shaper_', dir=tempdir, delete=False)
- tmp_filename = tmp_file.name
- if os.name == "nt":
- tmp_filename.replace("\\", "/")
- return tmp_filename
-
## @ingroup Plugins
# Feature to export all shapes and groups into the GEOM module
class ExportFeature(ModelAPI.ModelAPI_Feature):
if not aResult.shape() or aResult.shape().isNull():
continue
- tmpXAOFile = getTmpFileName("xao")
+ tmpXAOFile = model.getTmpFileName("shaper_", ".xao")
self.tmpXAOFile = tmpXAOFile
#print "Export to %s"%tmpXAOFile
exportXAO = ExchangeAPI.exportToXAO(self.Part, tmpXAOFile, model.selection(aResult), "automatic_shaper_export_to_XAO")
typedef std::map<std::string, std::map<std::string, ModelHighAPI_FeatureStore> > Storage;
static bool dumpToPython(SessionPtr theSession,
- const char* theFilename,
+ const std::string& theFilename,
const checkDumpType theSelectionType,
const std::string& theErrorMsgContext)
{
}
static bool checkDump(SessionPtr theSession,
- char* theFilename,
+ const char* theFilename,
Storage& theStorage,
const std::string& theErrorMsgContext)
{
return true;
}
-bool checkPythonDump(const checkDumpType theCheckType)
+bool checkPyDump(const std::string& theFilenameNaming,
+ const std::string& theFilenameGeo,
+ const std::string& theFilenameWeak,
+ const checkDumpType theCheckType)
{
static const std::string anErrorByNaming("checkPythonDump by naming");
static const std::string anErrorByGeometry("checkPythonDump by geometry");
static const std::string anErrorByWeak("checkPythonDump by weak naming");
- static char aFileForNamingDump[] = "./check_dump.py";
- static char aFileForGeometryDump[] = "./check_dump_geo.py";
- static char aFileForWeakDump[] = "./check_dump_weak.py";
+#ifdef _DEBUG
+ std::string aFileForNamingDump("./check_dump.py");
+ std::string aFileForGeometryDump("./check_dump_geo.py");
+ std::string aFileForWeakDump("./check_dump_weak.py");
+#else
+ std::string aFileForNamingDump = theFilenameNaming;
+ std::string aFileForGeometryDump = theFilenameGeo;
+ std::string aFileForWeakDump = theFilenameWeak;
+#endif
SessionPtr aSession = ModelAPI_Session::get();
// dump with the specified types
- char* aFileName = theCheckType == CHECK_GEOMETRICAL ? aFileForGeometryDump :
- (theCheckType == CHECK_WEAK ? aFileForWeakDump : aFileForNamingDump);
+ std::string aFileName = theCheckType == CHECK_GEOMETRICAL ? aFileForGeometryDump :
+ (theCheckType == CHECK_WEAK ? aFileForWeakDump : aFileForNamingDump);
if (!dumpToPython(aSession, aFileName, theCheckType, anErrorByNaming))
return false;
bool isOk = true;
if (theCheckType & CHECK_NAMING) {
// check dump with the selection by names
- isOk = checkDump(aSession, aFileForNamingDump, aStore, anErrorByNaming);
+ isOk = checkDump(aSession, aFileForNamingDump.c_str(), aStore, anErrorByNaming);
}
if (theCheckType & CHECK_GEOMETRICAL) {
// check dump with the selection by geometry
- isOk = isOk && checkDump(aSession, aFileForGeometryDump, aStore, anErrorByGeometry);
+ isOk = isOk && checkDump(aSession, aFileForGeometryDump.c_str(), aStore, anErrorByGeometry);
}
if (theCheckType & CHECK_WEAK) {
- isOk = isOk && checkDump(aSession, aFileForWeakDump, aStore, anErrorByWeak);
+ isOk = isOk && checkDump(aSession, aFileForWeakDump.c_str(), aStore, anErrorByWeak);
}
return isOk;
from ModelHighAPI import reset
from ModelHighAPI import addFolder, removeFolder
from ModelHighAPI import ModelHighAPI_Selection as selection
-from ModelHighAPI import checkPythonDump as checkPythonDump
from ModelAPI import findPartFeature
# a method used for the python dump of the SHAPER STUDY
if aRoot and aCurrent:
return str(findPartFeature(aRoot, aCurrent).data().featureId()) + ":" + str(theFeature.feature().data().featureId())
return ""
+
+
+import os
+
+def getTmpFileName(thePrefix, theSuffix):
+ import tempfile
+ tempdir = tempfile.gettempdir()
+ tmp_file = tempfile.NamedTemporaryFile(suffix=theSuffix, prefix=thePrefix, dir=tempdir, delete=False)
+ tmp_filename = tmp_file.name
+ if os.name == "nt":
+ tmp_filename.replace("\\", "/")
+ tmp_file.close()
+ return tmp_filename
+
+def removeTmpFile(theFilename):
+ try: os.remove(theFilename)
+ except OSError: pass
+
+# Verify the Python dump with generating the auxiliary filenames
+from ModelHighAPI import CHECK_NAMING_AND_GEOMETRICAL
+from ModelHighAPI import checkPyDump
+def checkPythonDump(theDumpMode = CHECK_NAMING_AND_GEOMETRICAL):
+ aPrefix = getTmpFileName("check_dump_", '')
+ aNaming = aPrefix + ".py"
+ aGeo = aPrefix + "_geo.py"
+ aWeak = aPrefix + "_weak.py"
+ isOk = checkPyDump(aNaming, aGeo, aWeak, theDumpMode)
+ removeTmpFile(aNaming)
+ removeTmpFile(aGeo)
+ removeTmpFile(aWeak)
+ return isOk