Files
envi-code/SourceCode/Code2026/tg_shs/shs_public/DwgCompareDbMgr.h
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

61 lines
2.0 KiB
C++

#pragma once
//文件加载和文件相关信息的管理类
using namespace std;
const CString g_csLogFile = _T("C:\\DwgCompare_LogFile_图纸比对记录.txt");//比对记录文件路径
class CDwgCompareDbInfo
{
public:
CDwgCompareDbInfo(void);
virtual ~CDwgCompareDbInfo(void);
public:
//读取文件
BOOL LoadFile(const CString sName, const CString sPath);
//读取文件,只保留entPoly范围内的实体
BOOL LoadFile(const CString sName, const CString sPath, XPoly2D poly);
//从pDb导出ObjIds中的实体到m_pDb
BOOL LoadDb(CString& csFilePath, AcDbDatabase*& pDb, const AcDbObjectIdArray& ObjIds, AcGePoint3d& ptBase);
void InitLayerInfo(); //读取文件中的所有图层
void GetAllLayer(std::vector<CString>& vtLayer) const; //获取所有图层
CString GetFileName() const;
CString GetFilePath() const;
AcDbDatabase * GetDb() const;
int InitEntCount(); //模型空间实体个数
int GetEntCount() const;
protected:
int GetEntCountInBlock(AcDbObjectId& idBlock, std::map<AcDbObjectId, int>& mapBlock); //统计块内实体数量
protected:
CString m_sName; //文件名,包括扩展名
CString m_sPath; //文件路径
AcDbDatabase * m_pDb; //加载的文件
vector<CString> m_vtLayerAll; //所有图层
int m_iEntCount; //需要比对的实体数量
};
class CDwgCompareDbMgr : public CDwgCompareDbInfo
{
public:
CDwgCompareDbMgr(void);
~CDwgCompareDbMgr(void);
public:
void Init();
void GetCmpLayer(std::vector<CString>& vtLayer) const; //获取符合比对条件的图层,图层信息只在这个DB对象中有效
void SetCompareLayer(std::vector<CString>& vtLayer); //设置比对图层
public:
//满足条件,比对需要首先对图层进行打开,解冻,解锁操作
BOOL m_bAllLayer; //比对所有图层
BOOL m_bCmpClosedLayer; //比对关闭的图层
BOOL m_bCmpFrozenLayer; //比对冻结的图层
BOOL m_bCmpLockedlayer; //比对锁定的图层
protected:
vector<CString> m_vtLayerCmp; //比对的图层
};