📄 snap.h
字号:
// Snap.h: interface for the CSnap class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SNAP_H__723A8F92_B4BD_42EE_B39E_3E59264FCBC3__INCLUDED_)
#define AFX_SNAP_H__723A8F92_B4BD_42EE_B39E_3E59264FCBC3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Relation.h"
#include "NodeList.h"
//#include "RelationList.h"
#include "Queue.h"
#include "Base\as_position.hxx"
class CEvent;
class CSnap : public CObject
{
public:
CSnap(CEvent *pEvent);
virtual ~CSnap();
private:
BOOL m_bStartSnap,m_bStopSnap;//开始捕捉、停止捕捉标志
CNodeList *m_CurRelations,*m_OldRelations;
BOOL m_bClearQueue,m_bClearRelations;//清除几何元素队列,关系链标志
CQueue *m_pSelElements;
BOOL GetPositionFun1(CRelation *rela1,CRelation *rela2,position &pe);
BOOL GetPositionFun2(CRelation *rela1,CRelation *rela2,position &pe);
BOOL GetPositionFun3(CRelation *rela1,CRelation *rela2,position &pe);
BOOL GetPositionFun4(CRelation *rela1,CRelation *rela2,position &pe);
public:
//将当前所选择到的几何元素入队
void SelectElement(position &pos);
CEvent *GetEvent(){return m_pEvent;};
void ClearQueue(BOOL bFlag);
BOOL ClearQueue();
void ClearRelations(BOOL bFlag);
BOOL ClearRelations();
void StartSnap(BOOL bFlag){m_bStartSnap=bFlag;};
BOOL StartSnap(){return m_bStartSnap;};
void StopSnap(BOOL bFlag){m_bStopSnap=bFlag;};
BOOL StopSnap(){return m_bStopSnap;};
//开始捕捉
void BeginSnap(CPoint point,position &pos);
//结束捕捉
void EndSnap(position &pos);
void Highlight(BOOL bFlag);//高亮关系链
//得到最终的几何点位置
virtual position GetPosition();
CNodeList *GetRelationList(){return m_CurRelations;};
CQueue *GetSelElements(){return m_pSelElements;};
public:
//CEvent对象的鼠标移动事件中调用该函数,进行捕捉工作
virtual void OnMouseMove(int nFlags,CPoint point);
//CEvent对象的鼠标单击事件中调用该函数,添加捕捉图元
virtual void OnLButtonDown(int nFlags,CPoint point);
//捕捉函数,在OnMouseMove函数中调用
virtual void OnSnap(CPoint point);
protected:
CEvent *m_pEvent;
//得到最终的几何点位置
virtual BOOL GetPosition(position &pos);
BOOL ValidaRelation(CRelation *Rela);
//以下为线形的捕捉函数
//在下列函数中创建关系,并把关系加入到关系链表中
BOOL SnapEnd(position &pick);//捕捉几何边端点、孤立点
BOOL SnapMiddle(position &pick);//中点
BOOL SnapAngle(position &pick);//角分线
BOOL SnapCenter(position &pick);//中心点
BOOL SnapIntersect(position &pick);//交点
BOOL SnapOnLine(position &pick);//点在线上
BOOL SnapPhv(position &pick);//水平
BOOL SnapPvh(position &pick);//竖直
BOOL SnapExtline(position &pick);//延长线
};
#endif // !defined(AFX_SNAP_H__723A8F92_B4BD_42EE_B39E_3E59264FCBC3__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -