You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

218 lines
6.0 KiB
C

1 month ago
#ifndef XJOBJECT_H //Ԥ<><D4A4><EFBFBD><EFBFBD><EBA3AC>ֹͷ<D6B9>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
#define XJOBJECT_H
#include "OMCommon.h"
#include "OMExport.h"
#include "XJPoint3D.h"
#include <iostream> //<2F><>׼<EFBFBD><D7BC>ͷ<EFBFBD>ļ<EFBFBD>
#include <windows.h>
#include <fstream>
#include <iomanip> //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>Ʒ<EFBFBD>
#include <string>
static int objectBase;
using namespace std;
#define NAME_LEN 128
class XJ_OM_EXPORT CXJObjectProperty
{
public:
CXJObjectProperty();
CXJObjectProperty(CXJObjectProperty* pobj);
virtual ~CXJObjectProperty();
public:
//************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>******************
char m_strName[NAME_LEN]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/****<2A><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*****/
bool m_wireframe; //<2F><>Ⱦģʽ<C4A3><CABD><EFBFBD>߿<EFBFBD><DFBF><EFBFBD>
EDisplayModel m_displayModel; //<2F><>Ⱦģʽ<C4A3><CABD><EFBFBD><EFBFBD>ߡ<EFBFBD><DFA1>
COLORREF m_Color; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
COLORREF m_frontColor;
COLORREF m_backColor;
bool m_bVisible; //<2F><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>
bool m_bTransparent; //<2F>Ƿ<EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD>
float m_nTransparent; //͸<><CDB8><EFBFBD><EFBFBD> 0 - 1
bool m_bDepthTest; //<2F><><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>
bool m_useBackFrontColor; //<2F>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>˫<EFBFBD><CBAB><EFBFBD><EFBFBD>Ⱦ
Point3D m_LocalCoordinate_X; //<2F><><EFBFBD><EFBFBD><EFBFBD>ľֲ<C4BE><D6B2><EFBFBD><EFBFBD><EFBFBD>ϵX<CFB5><58>
Point3D m_LocalCoordinate_Y; //Y<><59>
Point3D m_LocalCoordinate_Z; //Z<><5A>
Point3D m_ScreenCoordinate_X; //<2F><>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>ϵX<CFB5><58>
Point3D m_ScreenCoordinate_Y; //<2F><>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>ϵY<CFB5><59>
Point3D m_ScreenCoordinate_Z; //<2F><>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>ϵZ<CFB5><5A>
};
//<2F><EFBFBD>壬CXJObject<63><74>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0B6BC>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD>
#define MACRO_OBJECT(library, name)\
virtual const char* GetLibraryName() const {return #library;} \
virtual const char* GetClassName() const {return #name;} \
class XJ_OM_EXPORT CXJObject : protected CXJObjectProperty
{
public:
friend class CXJObjectManager;
friend class CXJObjectGroup;
friend class CXJObjectManagerLog;
//*************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9BAAF>************************
//<2F><><EFBFBD><EFBFBD>ƽ<EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE>
virtual void Translate(double dx, double dy, double dz) {;}
//ƽ<>ƶ<EFBFBD><C6B6><EFBFBD>λ<EFBFBD><CEBB>
virtual void TranslateByDir(Point3D dir, double distance);
//<2F><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
virtual void Rotate(Point3D basePt, Point3D axis, double angle) {;}
//<2F><><EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD>е<EFBFBD><D0B5><EFBFBD>ʾģʽ
//virtual void Update(CXJObject* pobject, EXJObjectUpdateType updateType);
//**************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD>************************
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EXJObjectType GetType() const;
//<2F><><EFBFBD>õڼ<C3B5><DABC><EFBFBD>Manager
void SetManagerIndex(int index){m_managerIndex = index;}
//<2F><>ȡ<EFBFBD>ڼ<EFBFBD><DABC><EFBFBD>Manager
int GetManagerIndex() const{return m_managerIndex;}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>OmKey
int GetOmKey() const;
//<2F><><EFBFBD>ذ<EFBFBD><D8B0><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual const char* GetLibraryName() const {return "CXJObject";}
//<2F><><EFBFBD>ص<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual const char* GetClassName() const {return "CXJObject";}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
const char* GetName() const;
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void SetName(const char* name);
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ׺
const char* GetNameInternal() const;
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ׺
void SetNameInternal(const char* namePrefix);
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
COLORREF GetColor() const;
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>ɫ
void SetColor(COLORREF color, bool useFrontBackColor = false);
void SetFrontColor(COLORREF color);
COLORREF GetFrontColor() const;
void SetBackColor(COLORREF color);
COLORREF GetBackColor() const;
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>
bool GetVisibility() const;
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ɼ<EFBFBD>
virtual void SetVisibility(bool visibile);
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD>ʶ
bool GetTransparent() const;
void SetTransparent(bool transparent);
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>͸<EFBFBD><CDB8><EFBFBD>ȵȼ<C8B5>
float GetTransparentDegree() const;
void SetTransparentDegree(float fTransparent);
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>
bool GetDepthTest() const;
void SetDepthTest(bool val);
bool GetWireframe() const {return m_wireframe;}
void SetWireframe(bool wf) {m_wireframe = wf;}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>ʾģʽ<C4A3><CABD><EFBFBD><EFBFBD>ߡ<EFBFBD><DFA1>
EDisplayModel GetDisplayModel() const {return m_displayModel;}
void SetDisplayModel(EDisplayModel eModel) {m_displayModel = eModel;}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2>ܱ<EFBFBD><DCB1><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
bool GetIsTempObject() const{return m_isTempObject;}
void SetIsTempObject(bool isTempObject) {m_isTempObject = isTempObject;}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ƿ<EFBFBD>ΪGroup<75><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void SetReference(bool reference){m_reference = reference;}
bool GetReference() const{return m_reference;}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>group<75>ڲ<EFBFBD><DAB2>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>úͻ<C3BA><CDBB><EFBFBD>groupid<69><64>groupidĬ<64><C4AC>Ϊ-1
void SetGroupID(int groupID){m_groupID = groupID;}
int GetGroupID() const {return m_groupID;}
//**************************<2A><><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>ϵ******************
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>ϵX<CFB5><58>
Point3D GetLocalCoorX() const {return m_LocalCoordinate_X;}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>ϵX<CFB5><58>
void SetLocalCoorX(Point3D xdir);
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>ϵY<CFB5><59>
Point3D GetLocalCoorY() const {return m_LocalCoordinate_Y;}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>ϵY<CFB5><59>
void SetLocalCoorY(Point3D ydir) ;
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>ϵZ<CFB5><5A>
Point3D GetLocalCoorZ() const {return m_LocalCoordinate_Z;}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>ϵZ<CFB5><5A>
void SetLocalCoorZ(Point3D zdir) ;
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>˫<EFBFBD><CBAB><EFBFBD><EFBFBD>Ⱦ
void SetUseFrontBackColor(bool same) {m_useBackFrontColor = same;}
bool GetUseFrontBackColor() const {return m_useBackFrontColor;}
//<2F><EFBFBD><EEBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CXJObjectProperty* CopyObjectProperty();
void CopyObjectProperty(CXJObjectProperty* pobjProp);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void SetClipPlaneFlag(bool clip) {m_bStartClipPlanes = clip;}
bool GetClipPlaneFlag() const {return m_bStartClipPlanes;}
virtual void CopyProperty(const CXJObject* pObj);
public:
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void SetType(EXJObjectType type) ;
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>Ψһ<CEA8><D2BB>ʶ<EFBFBD><CAB6>
void SetOmKey(int ID);
protected:
CXJObject(void);
CXJObject(const CXJObject* pobj);
virtual ~CXJObject();
//This method creates a copy of itself
virtual CXJObject* Copy() {return NULL;}
//This method copy all attributes of the object
void CopyGenericObjectProperties(const CXJObject* pobj);
protected:
int m_nOmKey; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ψһ<CEA8><D2BB>ʶ
EXJObjectType m_ObjectType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int m_managerIndex; //<2F><>Ӧ<EFBFBD>ڼ<EFBFBD><DABC><EFBFBD>ObjectManger
bool m_reference; //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Group<75>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
char m_strNameInternal[NAME_LEN]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ר<EFBFBD><D7A8><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>ڲ<EFBFBD>ʶ<EFBFBD><CAB6>ʹ<EFBFBD><CAB9>
int m_groupID; //<2F><><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>ڵ<EFBFBD>Group<75><70>ID<49>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>Group<75><70><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ-1
bool m_isTempObject; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD>󲻱<EFBFBD><F3B2BBB1><EFBFBD>ļ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB5BD><EFBFBD><EFBFBD> Ĭ<><C4AC>Ϊfalse
bool m_bStartClipPlanes; //<2F><><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD>־
};
#endif