⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbutilities.h

📁 能在MDT5/6环境下对已经存在地曲面进行全部和局部区域展开
💻 H
字号:
#ifndef DB_UTILITIES_H
#define DB_UTILITIES_H


//////////////////////////////////////////////////////////////////////////
//
// 与DataBase Table处理相关的函数
//
// Note:
//
//////////////////////////////////////////////////////////////////////////


#ifdef _DBXEXP_
#define DLLIMPEXP __declspec(dllexport)
#else
#define DLLIMPEXP 
#endif


/*
 *	Purpose:
 *		替换字符串中的字符
 *	Argument:
 *		pStr	[in], 字符串
 *		search	[in], 字符串中原来的字符
 *		replace	[in], 要替换成的字符
 */
extern DLLIMPEXP void 
replaceChars(char *pStr, const char search, const char replace);



/*
 *	Purpose:
 *		将Db实体加入到数据库的MODEL_SPACE Table中
 *	Argument:
 *		pDb		[in], 数据库指针, NULL时为当前数据库
 *		pEnt	[in], Db实体指针
 *		idObj	[out], 返回的实体Id
 *	Return:
 *		return eOk if success, if not success, idObj set to NULL.
 */
extern DLLIMPEXP Acad::ErrorStatus 
postToDb (AcDbDatabase *pDb, AcDbEntity *pEnt, AcDbObjectId &idObj);


/*
 *	Purpose:
 *		将Db实体加入到数据库的MODEL_SPACE Table中, 默认为当前数据库
 *	Argument:
 *		pEnt	[in], Db实体指针
 *		idObj	[out], 返回的实体Id
 *	Return:
 *		return eOk if success, if not success, idObj set to NULL.
 */
extern DLLIMPEXP Acad::ErrorStatus 
postToDb(AcDbEntity *pEnt, AcDbObjectId &idObj);



/*
 *	Purpose:
 *		将Db实体加入到数据库的MODEL_SPACE Table中, 默认为当前数据库
 *	Argument:
 *		pEnt	[in], Db实体指针
 *	Return:
 *		return eOk if success.
 */
extern DLLIMPEXP Acad::ErrorStatus 
postToDb(AcDbEntity *pEnt);



/*
 *	Purpose:
 *		获取数据库中命名对象字典NOD(Named Object Dictionary)的子字典Id
 *	Argument:
 *		pDb					[in], Db指针, NULL时为当前数据库
 *		key					[in], NOD子字典名称
 *		bCreateIfNotPresent	[in], 如果不存在,是否创建,默认为false
 *	Return:
 *		返回Id,如果错误时返回NULL.
 */
extern DLLIMPEXP AcDbObjectId 
getNODCompanyDictionaryId (AcDbDatabase *pDb, 
						   const char *key, 
						   bool bCreateIfNotPresent=false);



/*
 *	Purpose:
 *		打开数据库中命名对象字典NOD(Named Object Dictionary)的子字典
 *	Argument:
 *		pDb					[in], Db指针,NULL时为当前数据库
 *		key					[in], NOD子字典名称
 *		pDict				[out], 返回的NOD子字典指针
 *		mode				[in], 打开模式,默认为read
 *		bCreateIfNotPresent	[in], 如果不存在,是否创建,默认为false
 *	Return:
 *		Acad::eOk, 找到并打开
 *		Acad::eCreateInvalidName, 未找到但创建
 *		Acad::eKeyNotFound, 未找到
 */
extern DLLIMPEXP Acad::ErrorStatus 
getNODCompanyDictionary (AcDbDatabase *pDb, 
						 const char *key, 
						 AcDbDictionary *&pDict, 
						 AcDb::OpenMode mode=AcDb::kForRead, 
						 bool bCreateIfNotPresent=false);




/*
 *	Purpose:
 *		打开数据库中命名对象字典NOD(Named Object Dictionary)的子字典
 *		默认未当前数据库
 *	Argument:
 *		key					[in], NOD子字典名称
 *		pDict				[out], 返回的NOD子字典指针
 *		mode				[in], 打开模式,默认为read
 *		bCreateIfNotPresent	[in], 如果不存在,是否创建,默认为false
 *	Return:
 *		Acad::eOk, 找到并打开
 *		Acad::eCreateInvalidName, 未找到但创建
 *		Acad::eKeyNotFound, 未找到
 */
extern DLLIMPEXP Acad::ErrorStatus 
getNODCompanyDictionary (const char *key, 
						 AcDbDictionary *&pDict, 
						 AcDb::OpenMode mode=AcDb::kForRead, 
						 bool bCreateIfNotPresent=false);



/*
 *	Purpose:
 *		打开数据库中命名对象字典NOD(Named Object Dictionary)的entry
 *	Argument:
 *		pDb		[in], Db指针,NULL时为当前数据库
 *		key		[in], entry名称
 *		pObj	[out], 返回的entry对象指针
 *		mode	[in], 打开模式,默认为read
 *	Return:
 *		Acad::eOk, 找到并打开
 */
extern DLLIMPEXP Acad::ErrorStatus 
getInNOD (AcDbDatabase *pDb, const char *key, AcDbObject *&pObj, AcDb::OpenMode mode=AcDb::kForWrite);



/*
 *	Purpose:
 *		打开数据库中命名对象字典NOD(Named Object Dictionary)的entry
 *		默认为当前数据库。
 *	Argument:
 *		key		[in], entry名称
 *		pObj	[out], 返回的entry对象指针
 *		mode	[in], 打开模式,默认为read
 *	Return:
 *		Acad::eOk, 找到并打开
 */
extern DLLIMPEXP Acad::ErrorStatus 
getInNOD (const char *key, AcDbObject *&pObj, AcDb::OpenMode mode);



extern DLLIMPEXP Acad::ErrorStatus 
/*
 *	Purpose:
 *		返回字典中对象的entry名称
 *	Argument:
 *		pDict		[in], 字典指针
 *		pObj		[in], 对象指针
 *		entryname	[out], 返回的entry名称, 使用完后要注意释放空间
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eKeyNotFound, 未找到
 */
getInDictionary (const AcDbDictionary *pDict, 
				 const AcDbObject *pObj, 
				 char *&entryname);




/*
 *	Purpose:
 *		打开对象伴随的扩展字典
 *	Argument:
 *		pObj				[in], 对象指针
 *		key					[in], 字典名称
 *		pDict				[out], 字典指针
 *		mode				[in], 打开模式,默认为read
 *		bCreateIfNotPresent	[in], 如果不存在,是否创建,默认为false
 *	Return:
 *		Acad::eOk, 找到并打开
 *		Acad::eCreateInvalidName, 未找到但创建
 *		Acad::eKeyNotFound, 未找到
 */
extern DLLIMPEXP Acad::ErrorStatus 
getObjectExtCompanyDictionary (AcDbObject *pObj, 
							   const char *key, 
							   AcDbDictionary *&pDict, 
							   AcDb::OpenMode mode=AcDb::kForRead, 
							   bool bCreateIfNotPresent=true);



/*
 *	Purpose:
 *		获取对象伴随的扩展字典Id
 *	Argument:
 *		pObj				[in], 对象指针
 *		key					[in], 字典名称
 *		bCreateIfNotPresent	[in], 如果不存在,是否创建,默认为false
 *	Return:
 *		对象Id,如果失败返回NULL
 */
extern DLLIMPEXP AcDbObjectId 
getObjectExtCompanyDictionaryId (AcDbObject *pObj, 
								 const char *key,
								 bool bCreateIfNotPresent);




/*
 *	Purpose:
 *		加入对象到命名对象字典NOD(Named Object Dictionary)的子字典中
 *	Argument:
 *		pTargetDb			[in], Db指针, NULL时为当前数据库
 *		pObj				[in], 对象指针
 *		entryname			[in], 对象在子字典中entry名称
 *		whichDict			[in], NOD子字典名称
 *		bOverideIfnameExists[in], 如果存在是否覆盖,默认为false
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eAlreadyInDb, 如果存在但不覆盖
 */
extern DLLIMPEXP Acad::ErrorStatus 
postToNODCompanyDictionary(AcDbDatabase *pTargetDb,
						   AcDbObject *pObj, 
						   const char *entryname,
						   const char *whichDict,
						   bool bOverideIfnameExists=false);



/*
 *	Purpose:
 *		加入对象到命名对象字典NOD(Named Object Dictionary)的子字典中
 *		默认为当前数据库
 *	Argument:
 *		pObj				[in], 对象指针
 *		entryname			[in], 对象在子字典中entry名称
 *		whichDict			[in], NOD子字典名称
 *		bOverideIfnameExists[in], 如果存在是否覆盖,默认为false
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eAlreadyInDb, 如果存在但不覆盖
 */
extern DLLIMPEXP Acad::ErrorStatus 
postToNODCompanyDictionary(AcDbObject *pObj, 
						   const char *entryname,
						   const char *whichDict,
						   bool bOverideIfnameExists=false);


/*
 *	Purpose:
 *		加入对象到字典中
 *	Argument:
 *		pObj				[in], 对象指针
 *		entryname			[in], 对象在字典中entry名称
 *		pDict				[in], 字典指针
 *		bOverideIfnameExists[in], 如果存在是否覆盖,默认为false
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eAlreadyInDb, 如果存在但不覆盖
 */
extern DLLIMPEXP Acad::ErrorStatus 
postToDictionary(AcDbObject *pObj, 
				 const char *entryname,
				 AcDbDictionary *pDict,
				 bool bOverideIfnameExists=false);




/*
 *	Purpose:
 *		加入对象到命名对象字典NOD(Named Object Dictionary)中
 *	Argument:
 *		pTargetDb			[in], 数据库指针,NULL时为当前数据库
 *		pObj				[in], 对象指针
 *		entryname			[in], 对象在子字典中entry名称
 *		bOverideIfnameExists[in], 如果存在是否覆盖,默认为false
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eAlreadyInDb, 如果存在但不覆盖
 */
extern DLLIMPEXP Acad::ErrorStatus 
postToNOD(AcDbDatabase *pTargetDb,
		  AcDbObject *pObj, 
		  const char *entryname,
		  bool bOverideIfnameExists=false);




/*
 *	Purpose:
 *		加入对象到命名对象字典NOD(Named Object Dictionary)中
 *		默认为当前数据库
 *	Argument:
 *		pObj				[in], 对象指针
 *		entryname			[in], 对象在子字典中entry名称
 *		bOverideIfnameExists[in], 如果存在是否覆盖,默认为false
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eAlreadyInDb, 如果存在但不覆盖
 */
extern DLLIMPEXP Acad::ErrorStatus 
postToNOD(AcDbObject *pObj, 
		  const char *entryname,
		  bool bOverideIfnameExists=false);



/*
 *	Purpose:
 *		删除命名对象字典NOD(Named Object Dictionary)子字典中对象entry
 *	Argument:
 *		pTargetDb			[in], 数据库指针,NULL时为当前数据库
 *		entryname			[in], 对象在子字典中entry名称
 *		whichDict			[in], 子字典名称
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eInvalidInput, 输入的名称为空
 *		Acad::eKeyNotFound, 子字典或对象未找到
 */
extern DLLIMPEXP Acad::ErrorStatus 
deleteInNODCompanyDictionary(AcDbDatabase *pTargetDb, 
							 const char *entryname,
							 const char *whichDict);



/*
 *	Purpose:
 *		删除命名对象字典NOD(Named Object Dictionary)子字典中对象entry
 *		默认为当前数据库
 *	Argument:
 *		entryname			[in], 对象在子字典中entry名称
 *		whichDict			[in], 子字典名称
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eInvalidInput, 输入的名称为空
 *		Acad::eKeyNotFound, 子字典或对象未找到
 */
extern DLLIMPEXP Acad::ErrorStatus 
deleteInNODCompanyDictionary(const char *entryname,
							 const char *whichDict);



/*
 *	Purpose:
 *		删除命名对象字典NOD(Named Object Dictionary)中对象entry
 *	Argument:
 *		pTargetDb			[in], 数据库指针,NULL时为当前数据库
 *		entryname			[in], 对象在字典中entry名称
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eCannotBeErasedByCaller, entry为字典,且不为空
 *		Acad::eKeyNotFound, 子字典或对象未找到
 */
extern DLLIMPEXP Acad::ErrorStatus
deleteInNOD(AcDbDatabase *pTargetDb, const char *entryname);



/*
 *	Purpose:
 *		删除命名对象字典NOD(Named Object Dictionary)中对象entry
 *		默认为当前数据库
 *	Argument:
 *		entryname			[in], 对象在字典中entry名称
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eCannotBeErasedByCaller, entry为字典,且不为空
 *		Acad::eKeyNotFound, 子字典或对象未找到
 */
extern DLLIMPEXP Acad::ErrorStatus deleteInNOD(const char *entryname);




/*
 *	Purpose:
 *		删除命名对象字典NOD(Named Object Dictionary)中对象
 *	Argument:
 *		pTargetDb	[in], 数据库指针,NULL时为当前数据库
 *		eId			[in], 对象Id
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eCannotBeErasedByCaller, entry为字典,且不为空
 *		Acad::eKeyNotFound, 子字典或对象未找到
 */
extern DLLIMPEXP Acad::ErrorStatus 
deleteInNOD(AcDbDatabase *pTargetDb, const AcDbObjectId eId);



/*
 *	Purpose:
 *		删除命名对象字典NOD(Named Object Dictionary)中对象
 *		默认为当前数据库
 *	Argument:
 *		eId			[in], 对象Id
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eCannotBeErasedByCaller, entry为字典,且不为空
 *		Acad::eKeyNotFound, 子字典或对象未找到
 */
extern DLLIMPEXP Acad::ErrorStatus deleteInNOD(const AcDbObjectId eId);



/*
 *	Purpose:
 *		删除命名对象字典NOD(Named Object Dictionary)中对象
 *	Argument:
 *		pTargetDb	[in], 数据库指针,NULL时为当前数据库
 *		pObj		[in], 对象指针
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eCannotBeErasedByCaller, entry为字典,且不为空
 *		Acad::eKeyNotFound, 子字典或对象未找到
 */
extern DLLIMPEXP Acad::ErrorStatus 
deleteInNOD(AcDbDatabase *pTargetDb, AcDbObject *pObj);



/*
 *	Purpose:
 *		删除命名对象字典NOD(Named Object Dictionary)中对象
 *		默认为当前数据库
 *	Argument:
 *		pObj		[in], 对象指针
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eCannotBeErasedByCaller, entry为字典,且不为空
 *		Acad::eKeyNotFound, 子字典或对象未找到
 */
extern DLLIMPEXP Acad::ErrorStatus deleteInNOD(AcDbObject *pObj);



/*
 *	Purpose:
 *		删除字典中对象
 *	Argument:
 *		entryname	[in], 对象entry名称
 *		pDict		[in], 字典指针
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eCannotBeErasedByCaller, entry为字典,且不为空
 *		Acad::eKeyNotFound, 子字典或对象未找到
 */
extern DLLIMPEXP Acad::ErrorStatus 
deleteInDictionary(const char *entryname, AcDbDictionary *pDict);




/*
 *	Purpose:
 *		删除字典中对象
 *	Argument:
 *		eId			[in], 对象Id
 *		pDict		[in], 字典指针
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eCannotBeErasedByCaller, entry为字典,且不为空
 *		Acad::eKeyNotFound, 子字典或对象未找到
 */
extern DLLIMPEXP Acad::ErrorStatus 
deleteInDictionary(const AcDbObjectId eId, AcDbDictionary *pDict);



/*
 *	Purpose:
 *		删除字典中对象
 *	Argument:
 *		pObj		[in], 对象指针
 *		pDict		[in], 字典指针
 *	Return:
 *		Acad::eOk, 成功
 *		Acad::eCannotBeErasedByCaller, entry为字典,且不为空
 *		Acad::eKeyNotFound, 子字典或对象未找到
 */
extern DLLIMPEXP Acad::ErrorStatus 
deleteInDictionary(AcDbObject *pObj, AcDbDictionary *pDict);

#endif // DB_UTILITIES_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -