18#ifndef BIMHOMEAPP_APP_IDOCUMENT_H
19#define BIMHOMEAPP_APP_IDOCUMENT_H
27#include "boost/any.hpp"
29#include "Base/Placement.h"
33 class IDocumentObject;
34 class AppDocObserverDelegate;
35 class IPropertyAccessor;
59 const char* pUserName =
nullptr,
60 bool createView =
true,
62 DocType type = DocType::Component);
79 const char* pAppDocDelegateName =
nullptr,
80 const char* pUserName =
nullptr,
81 DocType type = DocType::Component,
82 bool createView =
true,
83 bool tempDoc =
false);
99 const char* pAppDocDelegateName =
nullptr,
100 DocType type = DocType::Component,
101 bool createView =
true,
102 bool tempDoc =
false);
361 virtual bool afterRestore(
const std::vector<App::IDocumentObject*>& docVec,
bool checkPartial =
false) = 0;
378 virtual std::vector<App::IDocumentObject*>
importLinks(
const std::vector<App::IDocumentObject*>& objs = {}) = 0;
389 virtual void getLinksTo(std::set<IDocumentObject*>& links,
const IDocumentObject* obj,
int options,
int maxCount = 0,
const std::vector<IDocumentObject*>& objs = {})
const = 0;
396 virtual void getRootObjects(std::vector<App::IDocumentObject*>& iObjVec)
const = 0;
444 virtual void exportObjects(
const std::vector<App::IDocumentObject*>& iObjVec, std::ostream& os) = 0;
466 bool isNew =
true,
const char* viewType =
nullptr,
bool isPartial =
false,
long id = 0,
467 void* pDocObjDelegate =
nullptr,
void* pViewProviderDelegate =
nullptr) = 0;
530 virtual void setId(std::string
id) = 0;
565 virtual App::IDocument*
addChildDocument(std::string name,
DocType type, std::string path, std::string
id, std::string afterId,
bool usePartLink =
true,
bool doFinishRestore =
true,
void* pAppDocDelegate =
nullptr,
void* pGuiDocDelegate =
nullptr) = 0;
623 virtual void importFile(
const char* partFileName,
bool dofinishRestore =
true) = 0;
667 virtual bool save(
bool saveSub =
true) = 0;
676 virtual bool saveAs(
const char* file,
bool saveSub =
true) = 0;
702 bool force =
false,
bool* hasError =
nullptr,
int options = 0) = 0;
应用文档观察者代理基类
Definition AppDocObserverDelegate.h:38
virtual std::string getId()=0
获取文档id
virtual void paramterNewObject(const std::map< std::string, boost::any > &data)
通过参数列表创建新对象
virtual const char * getProgramVersion() const =0
获取创建文档时使用的程序版本
virtual int getRefCount()=0
返回引用计数
virtual void getDocumentObjects(std::vector< IDocumentObject * > &iObjVec) const =0
获取文档对象
virtual void locateObjs()=0
更新App::IDocument位置
virtual bool afterRestore(const std::vector< App::IDocumentObject * > &docVec, bool checkPartial=false)=0
在文档对象恢复之后执行一些清理或验证工作
virtual void setDocCategory(std::string category)=0
设置文档分类
virtual void setId(std::string id)=0
设置文档id
virtual std::string getDocumentId()=0
获取文档 ID
virtual void deleteIDocument(App::IDocument *doc)
彻底删除IDocument
virtual void removeObject(const char *sName)=0
删除对象
virtual void getLinksTo(std::set< IDocumentObject * > &links, const IDocumentObject *obj, int options, int maxCount=0, const std::vector< IDocumentObject * > &objs={}) const =0
返回所给对象的全部链接
virtual void importFile(const char *partFileName, bool dofinishRestore=true)=0
导入文档
virtual void setDocumentLabel(const std::string &labelName)=0
设置文档标签
virtual void setPlacement(Base::Placement placement)=0
文档位置设置
virtual const char * getName() const =0
返回文档的内部名称
virtual void setUndoMode(int iMode)=0
设置切换“撤消/重做”级别
virtual IDocumentObject * moveObject(IDocumentObject *obj, bool recursive=false)=0
负责移动一个文档对象,并返回移动后的对象
virtual std::vector< App::IDocumentObject * > importLinks(const std::vector< App::IDocumentObject * > &objs={})=0
导入链接
virtual App::IDocument * addChildDocument(std::string name, DocType type, std::string path, std::string id, std::string afterId, bool usePartLink=true, bool doFinishRestore=true, void *pAppDocDelegate=nullptr, void *pGuiDocDelegate=nullptr)=0
添加子文档
virtual App::IDocument * getDocumentById(std::string uuid)=0
根据id获取对应子孙文档
virtual void getDocumentType(DocType &type)=0
获取当前文档的类型,并将类型信息赋值给传入的 DocType 变量
virtual App::IDocument * getParentDocument()=0
返回文档的父文档
static IDocument * loadFile(const char *pPath, IDocument *pProduct=nullptr, const char *pAppDocDelegateName=nullptr, DocType type=DocType::Component, bool createView=true, bool tempDoc=false)
加载一个文档
virtual bool isClosable() const =0
检查文档是否可以关闭
virtual bool isTransactionEmpty() const =0
检查事务是否打开且其列表为空
static IDocument * create(const char *pName, IDocument *pProduct=nullptr, const char *pUserName=nullptr, bool createView=true, bool tempDoc=false, DocType type=DocType::Component)
创建一个新文档
virtual void getDependentDocuments(std::vector< App::IDocument * > &, bool sort=true)=0
获取当前文档的依赖文档,并将这些依赖文档存储在一个向量中
virtual void removeAllObjects()=0
删除所有对象
virtual App::IDocumentObject * addObject(const char *sType, const char *pObjectName=nullptr, bool isNew=true, const char *viewType=nullptr, bool isPartial=false, long id=0, void *pDocObjDelegate=nullptr, void *pViewProviderDelegate=nullptr)=0
添加对象
virtual void exportGraphviz(std::ostream &os) const =0
导出图
virtual std::string getTransientDirectoryName(const std::string &uuid, const std::string &filename) const =0
创建临时目录名称
virtual const char * getErrorDescription(const App::IDocumentObject *pIObject) const =0
获取一个文档对象的错误描述
virtual const char * getFileName() const =0
返回文档路径
virtual int getAvailableRedos(int id=0) const =0
返回存储的Redo数
virtual void getSubDocument(std::set< App::IDocument * > &docSet)=0
返回子文档列表
virtual bool saveAs(const char *file, bool saveSub=true)=0
另存为文档
virtual void setRootIDocument(App::IDocument *doc)=0
将一个给定的文档设置为当前文档的根文档
virtual void addObject(IDocumentObject *pIObj, const char *pObjectName=nullptr)=0
添加对象
virtual void exportObjects(const std::vector< App::IDocumentObject * > &iObjVec, std::ostream &os)=0
导出对象
virtual std::vector< std::string > getAvailableRedoNames() const =0
返回重做名称的列表
virtual void setDocumentName(const char *name)=0
设置文档名称
virtual Base::Placement getLocalPlacement() const =0
文档局部位置获取
virtual bool afterRestore(bool checkPartial=false)=0
恢复文档之后做的一些处理
virtual App::IDocument * getDocumentByName(std::string name)=0
根据名称获取对应子孙文档
virtual void setActiveIDocument(App::IDocument *pObj)
设置活动的零件
virtual int getTransactionID(bool undo, unsigned pos=0) const =0
返回从后面开始的撤消/重做事务ID
virtual void deleteSubPartOrProduct(App::IDocument *pDocument)=0
删除子零件活子装配
virtual std::string getUniqueObjectName(const char *Name) const =0
根据输入名字获取唯一的名称
virtual bool isPerformingTransaction() const =0
检查文档是否处于事务阶段
virtual void getAllDocument(std::set< App::IDocument * > &docSet)=0
返回所有子孙文档列表
virtual void removeChildDocument(IDocument *pChildDoc)=0
删除子文档
virtual IDocumentObject * getObjectById(long id, bool findInLinkedPart=false) const =0
根据id获取对象
virtual int recomputeDocument(const std::vector< App::IDocumentObject * > &objs={}, bool force=false, bool *hasError=nullptr, int options=0)=0
重新计算文档
virtual bool isSaved() const =0
文档是不是已经保存了
virtual void setFileName(std::string filename)=0
设置文档名称
virtual void purgeTouched()=0
删除所有修改。调用后,文档再次变为有效。
virtual void setObserverDelegate(AppDocObserverDelegate *pObsDelegate)=0
设置文档观察者代理
virtual const AppDocObserverDelegate * getObserverDelegate()=0
获取文档观察者代理
virtual int getAvailableUndos(int id=0) const =0
返回存储的Undo数
virtual App::IDocument * getRootDocument()=0
返回文档的父文档
virtual std::vector< IDocument * > getPartMaps()=0
获取子文档对象数组
virtual Base::Placement getPlacement() const =0
文档位置获取
virtual void abortTransaction()=0
中止实际运行的事务
virtual bool hasPendingTransaction() const =0
检查事务是否打开
virtual void topologicalSort(std::vector< App::IDocumentObject * > &docVec) const =0
对文档中的对象进行拓扑排序,并将排序后的对象存储在一个 std::vector 中
virtual std::string getTemplateDirName(const std::string &uuid)=0
创建目录名称
virtual void setLocalPlacement(Base::Placement placement)=0
文档局部位置设置
virtual void getRootObjects(std::vector< App::IDocumentObject * > &iObjVec) const =0
获取文档中的根对象并将它们存储在一个向量中
virtual std::string getDocCategory()=0
获取文档分类
virtual IDocumentObject * getObject(const char *Name, bool findInLinkedPart=false) const =0
根据名称得到对应的对象
virtual void getDocumentByDocCategory(std::vector< App::IDocument * > &iDocVec, std::string category)=0
根据分类返回子文档列表
virtual App::IDocument * getParentDocumentByType(const std::string &parentClassTypeId)=0
根据传入类型返回文档的父文档
virtual void _removeObject(IDocumentObject *pcObject)=0
删除对象
static IDocument * create(const char *pName, IDocument *pProduct=nullptr, const char *pAppDocDelegateName=nullptr, const char *pUserName=nullptr, DocType type=DocType::Component, bool createView=true, bool tempDoc=false)
创建一个新文档
virtual IPropertyAccessor * getPropertyAccessor()=0
获取属性访问器
virtual void openTransaction(const char *name=nullptr)=0
提交Command事务。
virtual void commitTransaction()=0
提交当前正在进行的事务
virtual void getDocumentObjectsHasName(std::vector< App::IDocumentObject * > &iObjVec, const std::string &name) const =0
获取具有特定名称的文档对象
virtual bool save(bool saveSub=true)=0
保存文档
文档接口类
Definition IDocument.h:43
Definition IDocumentObject.h:35
属性访问器接口类
Definition IPropertyAccessor.h:62
Placement 类,表示三维空间中的位置和旋转
Definition Placement.h:34
DocType
文档类型
Definition IDocumentType.h:30
Definition BaseFigureFactory.h:28