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

229 lines
5.0 KiB
C++

#if !defined(__KTADSENTITY_H__)
#define __KTADSENTITY_H__
// Description:
// 类CKTAdsEntity用于管理由ads_name表示的实体对象, 用于代替ads_name的使用,
// 它支持AcDbObjectId.
// 用法同ads_name做实体对象使用时相同
// Company: Kingtouch Software Corporation. Copyright 2002-2005
// Author: WangYongguang
// Date: 2002.05.01
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#if ARX > 20
#ifndef _WIN64
typedef int32_t* ADS_NAME;
#else
typedef int64_t* ADS_NAME;
#endif
#else
#ifndef _WIN64
typedef long* ADS_NAME;
#else
typedef __int64* ADS_NAME;
#endif
#endif
#ifdef EARTHWORM_EXPORT
#define DLLIMPEXP __declspec(dllexport)
#else
#define DLLIMPEXP __declspec(dllimport)
#endif
class DLLIMPEXP CKTAdsEntity
{
public:
// 默认构造函数
CKTAdsEntity();
// 构造函数,拷贝构造
CKTAdsEntity(const CKTAdsEntity& cEnt);
// 构造函数,传入ID
CKTAdsEntity(const AcDbObjectId& idEnt);
// 构造函数,传入handle
CKTAdsEntity(const AcDbHandle& handle);
// 构造函数,传入ads_name
CKTAdsEntity(const ads_name adsName);
// 析构函数
virtual ~CKTAdsEntity();
// 从旧的ID方式获得ads_name
#ifdef _WIN64
CKTAdsEntity& SetFromOldId(__int64 lOldId);
#else
CKTAdsEntity& SetFromOldId(long lOldId);
#endif
// 从Handle字符串方式获得ads_name
CKTAdsEntity& SetFromHandle(LPCTSTR pszHandle);
// 获取旧的ID值
Adesk::IntDbId AsOldId() const;
// 获取ads_name
ADS_NAME AsAdsName();
ADS_NAME AsAdsName() const;
// 取得ads_name
void GetAdsName(ads_name adsName) const;
// 取得AcDbObjectId
void GetObjectId(AcDbObjectId& idEnt) const;
// 获得与之关联的Handle
AcDbHandle Handle() const;
// 判断是否有效
bool IsValid() const;
// 判断是否被删除
bool IsErased() const;
// 设置高亮显示
void Highlight(BOOL bHighlight = TRUE, BOOL bUpdate = TRUE);
// 设置夹点显示
void Griplight(BOOL bGriplight = TRUE, BOOL bUpdate = TRUE);
// 重载运算符号=
CKTAdsEntity& operator=(const CKTAdsEntity& adsEnt);
CKTAdsEntity& operator=(const AcDbObjectId& idEnt);
CKTAdsEntity& operator=(const AcDbHandle& handle);
CKTAdsEntity& operator=(const ads_name adsName);
CKTAdsEntity& operator=(int iNull);
// 重载运算符号
operator AcDbObjectId();
operator AcDbHandle();
operator ADS_NAME();
// 重载运算符号&
ADS_NAME operator&();
ADS_NAME operator&() const;
// 重载运算符号bool
operator bool() const;
// 重载运算符号==
bool operator==(const CKTAdsEntity& adsEnt) const;
bool operator==(const AcDbObjectId& idEnt) const;
bool operator==(const AcDbHandle& handle) const;
bool operator==(const ads_name adsName) const;
bool operator==(int iNull) const;
// 重载运算符号!=
bool operator!=(const CKTAdsEntity& adsEnt) const;
bool operator!=(const AcDbObjectId& idEnt) const;
bool operator!=(const AcDbHandle& handle) const;
bool operator!=(const ads_name adsName) const;
bool operator!=(int iNull) const;
protected:
ads_name m_adsName;
// 放在m_adsName之后,符合CopyMemory内存顺序
BOOL m_bHighlight;
BOOL m_bGriplight;
};
// 重载运算符号==
inline bool operator==(const AcDbObjectId& idEnt, const CKTAdsEntity& adsEnt)
{
return (adsEnt == idEnt);
}
inline bool operator==(const AcDbHandle& handle, const CKTAdsEntity& adsEnt)
{
return (adsEnt == handle);
}
inline bool operator==(const ads_name adsName, const CKTAdsEntity& adsEnt)
{
return (adsEnt == adsName);
}
inline bool operator==(int iNull, const CKTAdsEntity& adsEnt)
{
return (adsEnt == iNull);
}
// 重载运算符号!=
inline bool operator!=(const AcDbObjectId& idEnt, const CKTAdsEntity& adsEnt)
{
return (adsEnt != idEnt);
}
inline bool operator!=(const AcDbHandle& handle, const CKTAdsEntity& adsEnt)
{
return (adsEnt != handle);
}
inline bool operator!=(const ads_name adsName, const CKTAdsEntity& adsEnt)
{
return (adsEnt != adsName);
}
inline bool operator!=(int iNull, const CKTAdsEntity& adsEnt)
{
return (adsEnt != iNull);
}
/////////////////////////////////////////////////////////
// 获取ads_name
inline ADS_NAME CKTAdsEntity::AsAdsName()
{
return m_adsName;
}
inline ADS_NAME CKTAdsEntity::AsAdsName() const
{
return (ADS_NAME)m_adsName;
}
inline CKTAdsEntity::operator ADS_NAME()
{
return m_adsName;
}
// 重载运算符号&
inline ADS_NAME CKTAdsEntity::operator&()
{
return m_adsName;
}
inline ADS_NAME CKTAdsEntity::operator&() const
{
return (ADS_NAME)m_adsName;
}
// 重载运算符号bool
inline CKTAdsEntity::operator bool() const
{
return IsValid();
}
// 重载运算符号!=
inline bool CKTAdsEntity::operator!=(const CKTAdsEntity& adsEnt) const
{
return !(operator==(adsEnt));
}
inline bool CKTAdsEntity::operator!=(const AcDbObjectId& idEnt) const
{
return !(operator==(idEnt));
}
inline bool CKTAdsEntity::operator!=(const AcDbHandle& handle) const
{
return !(operator==(handle));
}
inline bool CKTAdsEntity::operator!=(const ads_name adsName) const
{
return !(operator==(adsName));
}
inline bool CKTAdsEntity::operator!=(int iNull) const
{
return !(operator==(iNull));
}
#endif // __KTADSENTITY_H__