class ModelAPI_Document;
class ModelAPI_Entity;
class ModelAPI_Feature;
+class ModelAPI_Folder;
class ModelAPI_Object;
class ModelAPI_Result;
typedef std::shared_ptr<ModelAPI_Document> DocumentPtr;
typedef std::shared_ptr<ModelAPI_Entity> EntityPtr;
typedef std::shared_ptr<ModelAPI_Feature> FeaturePtr;
+typedef std::shared_ptr<ModelAPI_Folder> FolderPtr;
typedef std::shared_ptr<ModelAPI_Result> ResultPtr;
/**\class ModelHighAPI_Dumper
virtual void dumpParameter(const FeaturePtr& theFeature) = 0;
/// Dump given feature
virtual void dumpFeature(const FeaturePtr& theFeature, const bool theForce = false) = 0;
+ /// Dump folder
+ virtual void dumpFolder(const FolderPtr& theFolder) = 0;
+
+ /// Set feature postponed until all its dependencies are not dumped.
+ /// The name of the feature is stored anyway.
+ MODELHIGHAPI_EXPORT
+ void postpone(const EntityPtr& theEntity);
/// Set a feature that should not be dumped anyway
MODELHIGHAPI_EXPORT
MODELHIGHAPI_EXPORT
ModelHighAPI_Dumper& operator<<(const FeaturePtr& theEntity);
+ /// Dump folder
+ MODELHIGHAPI_EXPORT
+ ModelHighAPI_Dumper& operator<<(const FolderPtr& theFolder);
+
/// Dump result
MODELHIGHAPI_EXPORT
ModelHighAPI_Dumper& operator<<(const ResultPtr& theResult);
/// clear list of not dumped entities
MODELHIGHAPI_EXPORT void clearNotDumped();
+ /// Check the entity is already dumped
+ MODELHIGHAPI_EXPORT
+ bool isDumped(const EntityPtr& theEntity) const;
+ /// Check theRefAttr is already dumped
+ MODELHIGHAPI_EXPORT
+ bool isDumped(const std::shared_ptr<ModelAPI_AttributeRefAttr>& theRefAttr) const;
+ /// Check all objects in theRefList are already dumped
+ MODELHIGHAPI_EXPORT
+ bool isDumped(const std::shared_ptr<ModelAPI_AttributeRefList>& theRefList) const;
+
protected:
/// Dump "setName" command if last entity had user-defined name
MODELHIGHAPI_EXPORT void dumpEntitySetName();
bool processSubs(const std::shared_ptr<ModelAPI_CompositeFeature>& theComposite,
bool theDumpModelDo = false);
- /// Check the entity is already dumped
- bool isDumped(const EntityPtr& theEntity) const;
-
/// Stores names of results for the given feature
void saveResultNames(const FeaturePtr& theFeature);
/// Check the result feature has default deflection
bool isDefaultDeflection(const ResultPtr& theResult) const;
+ /// Check the result feature has default transparency
+ bool isDefaultTransparency(const ResultPtr& theResult) const;
+
+ /// Dump postponed entities
+ void dumpPostponed(bool theDumpFolders = false);
+
private:
struct EntityName {
std::string myCurrentName; ///< default name of current feature
std::list<ResultPtr> myResults;
LastDumpedEntity(EntityPtr theEntity, bool theUserName,
- const std::list<ResultPtr>& theResults)
+ const std::list<ResultPtr>& theResults = std::list<ResultPtr>())
: myEntity(theEntity), myUserName(theUserName), myResults(theResults)
{}
};
/// features which should not be dumped (like coincidence and tangency created by tangent arc)
std::set<FeaturePtr> myFeaturesToSkip;
+ std::list<EntityPtr> myPostponed; ///< list of postponed entities (sketch constraints or folders)
+ bool myDumpPostponedInProgress; ///< processing postponed is in progress
+
protected:
- /// list of entities, used by other features but not dumped yet
+ /// list of entities, used by other features but not dumped yet
std::set<EntityPtr> myNotDumpedEntities;
friend class SketchAPI_Sketch;
+ friend class ModelHighAPI_Folder;
};
#endif