BIMHome v1.0.0
BIMHome接口文档说明
IDocument.h
浏览该文件的文档.
1/************************************************************************
2* @file IDocument.h
3*
4* @brief 文档类
5*
6* @details 文档类
7*
8* @author dixu
9*
10* @version 1.0
11*
12* @date 2014-9-8
13*
14* @license 北京华科软科技有限公司
15*
16*************************************************************************/
17
18#ifndef BIMHOMEAPP_APP_IDOCUMENT_H
19#define BIMHOMEAPP_APP_IDOCUMENT_H
20
21#include "BHGlobal.h"
22#include <iostream>
23#include <string>
24#include <vector>
25#include <set>
26#include <map>
27#include "boost/any.hpp"
28#include "IDocumentType.h"
29#include "Base/Placement.h"
30
31namespace App
32{
33 class IDocumentObject;
34 class AppDocObserverDelegate;
35 class IPropertyAccessor;
36
42 class AppExport IDocument
43 {
44 public:
57 const char* pName,
58 IDocument *pProduct = nullptr,
59 const char* pUserName = nullptr,
60 bool createView = true,
61 bool tempDoc = false,
62 DocType type = DocType::Component);
63
77 const char* pName,
78 IDocument* pProduct = nullptr,
79 const char* pAppDocDelegateName = nullptr,
80 const char* pUserName = nullptr,
81 DocType type = DocType::Component,
82 bool createView = true,
83 bool tempDoc = false);
84
97 const char* pPath,
98 IDocument* pProduct = nullptr,
99 const char* pAppDocDelegateName = nullptr,
100 DocType type = DocType::Component,
101 bool createView = true,
102 bool tempDoc = false);
103
104 virtual ~IDocument();
105
112 virtual const char* getFileName() const = 0;
113
119 virtual const char* getName() const = 0;
120
121
127 virtual const char* getProgramVersion() const = 0;
128
135
142 virtual App::IDocument* getParentDocumentByType(const std::string& parentClassTypeId) = 0;
143
150
156 virtual void getSubDocument(std::set<App::IDocument*>& docSet) = 0;
157
163 virtual void getAllDocument(std::set<App::IDocument*>& docSet) = 0;
164
171 virtual App::IDocument* getDocumentById(std::string uuid) = 0;
172
179 virtual App::IDocument* getDocumentByName(std::string name) = 0;
180
187 virtual std::string getTemplateDirName(const std::string& uuid) = 0;
188
196 virtual std::string getTransientDirectoryName(const std::string& uuid, const std::string& filename) const = 0;
197
203 virtual std::vector<std::string> getAvailableRedoNames() const = 0;
204
211 virtual int getAvailableRedos(int id = 0) const = 0;
212
219 virtual int getAvailableUndos(int id = 0) const = 0;
220
226 virtual int getRefCount() = 0;
227
235 virtual int getTransactionID(bool undo, unsigned pos = 0) const = 0;
236
242 virtual void setDocumentLabel(const std::string& labelName) = 0;
243
249 virtual void setDocumentName(const char* name) = 0;
250
256 virtual void setUndoMode(int iMode) = 0;
257
264 virtual const char* getErrorDescription(const App::IDocumentObject* pIObject) const = 0;
265
271 virtual bool hasPendingTransaction() const = 0;
272
278 virtual bool isClosable() const = 0;
279
284 virtual bool isPerformingTransaction() const = 0;
285
291 virtual bool isSaved() const = 0;
292
298 virtual bool isTransactionEmpty() const = 0;
299
306 virtual bool afterRestore(bool checkPartial = false) = 0;
307
313 virtual void exportGraphviz(std::ostream& os) const = 0;
314
319 virtual void purgeTouched() = 0;
320
326 virtual void deleteSubPartOrProduct(App::IDocument* pDocument) = 0;
327
332 virtual void abortTransaction() = 0;
333
338 virtual void commitTransaction() = 0;
339
345 virtual void openTransaction(const char* name = nullptr) = 0;
346
352 virtual void topologicalSort(std::vector<App::IDocumentObject*>& docVec) const = 0;
353
361 virtual bool afterRestore(const std::vector<App::IDocumentObject*>& docVec, bool checkPartial = false) = 0;
362
370 virtual IDocumentObject* moveObject(IDocumentObject* obj, bool recursive = false) = 0;
371
378 virtual std::vector<App::IDocumentObject*> importLinks(const std::vector<App::IDocumentObject*>& objs = {}) = 0;
379
389 virtual void getLinksTo(std::set<IDocumentObject*>& links, const IDocumentObject* obj, int options, int maxCount = 0, const std::vector<IDocumentObject*>& objs = {}) const = 0;
390
396 virtual void getRootObjects(std::vector<App::IDocumentObject*>& iObjVec) const = 0;
397
403 virtual void setRootIDocument(App::IDocument* doc) = 0;
404
410 virtual void getDocumentType(DocType& type) = 0;
411
418 virtual void getDependentDocuments(std::vector<App::IDocument*>&, bool sort = true) = 0;
419
427 virtual IDocumentObject* getObjectById(long id, bool findInLinkedPart = false) const = 0;
428
436 virtual IDocumentObject* getObject(const char* Name, bool findInLinkedPart = false) const = 0;
437
444 virtual void exportObjects(const std::vector<App::IDocumentObject*>& iObjVec, std::ostream& os) = 0;
445
452 virtual void addObject(IDocumentObject* pIObj, const char* pObjectName = nullptr) = 0;
453
465 virtual App::IDocumentObject* addObject(const char* sType, const char* pObjectName = nullptr,
466 bool isNew = true, const char* viewType = nullptr, bool isPartial = false, long id = 0,
467 void* pDocObjDelegate = nullptr, void* pViewProviderDelegate = nullptr) = 0;
468
474 virtual void _removeObject(IDocumentObject* pcObject) = 0;
475
481 virtual void removeObject(const char* sName) = 0;
482
487 virtual void removeAllObjects() = 0;
488
489
495 virtual Base::Placement getPlacement() const = 0;
496
502 virtual void setPlacement(Base::Placement placement) = 0;
503
510
516 virtual void setLocalPlacement(Base::Placement placement) = 0;
517
523 virtual std::string getId() = 0;
524
530 virtual void setId(std::string id) = 0;
531
537 virtual void setFileName(std::string filename) = 0;
538
543 virtual void locateObjs() = 0;
544
550 virtual void removeChildDocument(IDocument* pChildDoc) = 0;
551
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;
566
572 virtual void setDocCategory(std::string category) = 0;
573
579 virtual std::string getDocCategory() = 0;
586 virtual void getDocumentByDocCategory(std::vector<App::IDocument*>& iDocVec, std::string category) = 0;
587
593 virtual std::string getUniqueObjectName(const char* Name) const = 0;
594
600 virtual std::vector<IDocument*> getPartMaps() = 0;
601
607 virtual void getDocumentObjects(std::vector<IDocumentObject*>& iObjVec) const = 0;
608
615 virtual void getDocumentObjectsHasName(std::vector<App::IDocumentObject*>& iObjVec, const std::string& name) const = 0;
616
623 virtual void importFile(const char* partFileName, bool dofinishRestore = true) = 0;
624
631
638 virtual void deleteIDocument(App::IDocument* doc);
639
645 virtual void paramterNewObject(const std::map<std::string, boost::any>& data);
646
652 virtual std::string getDocumentId() = 0;
653
660
667 virtual bool save(bool saveSub = true) = 0;
668
676 virtual bool saveAs(const char* file, bool saveSub = true) = 0;
677
683 virtual void setObserverDelegate(AppDocObserverDelegate* pObsDelegate) = 0;
684
691
701 virtual int recomputeDocument(const std::vector<App::IDocumentObject*>& objs = {},
702 bool force = false, bool* hasError = nullptr, int options = 0) = 0;
703
704 };
705}
706
707#endif // BIMHOMEAPP_APP_ANNOTATION_H
应用文档观察者代理基类
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 ~IDocument()
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