79 lines
2.3 KiB
C++
79 lines
2.3 KiB
C++
// Copyright (C), 1998-2007, Beijing Tangent Engineering Software Co. Ltd.
|
|
// = FileName: RoadFillterMgr.h
|
|
// = Version: 8.5
|
|
// = Author: lgh
|
|
// = Date: 2010-10-21 15:37:33
|
|
// = Description: 用来管理道路倒角的类型。
|
|
// = Maintainers:
|
|
#pragma once
|
|
|
|
#include "commonRoad.h"
|
|
#include "CADEnt.h" // for arEnt
|
|
#include "CADEntFilRoadAdapter.h" // for ArFilRoadAdapter
|
|
#include "FilroadConnect.h" // for ArFilroadConnect
|
|
#include "FilroadConnectGroup.h" // for ArFilroadConnectGroup
|
|
class CRoadFillterMgr
|
|
{
|
|
public:
|
|
CRoadFillterMgr(void);
|
|
~CRoadFillterMgr(void);
|
|
|
|
// 判断两个交点是否可以做同圆心倒角的限制。
|
|
double SameCenterTol() const{return m_dRadius*2.0;}
|
|
// 选择道路数据
|
|
BOOL SelectRoad();
|
|
// 生成filroadConnect实体
|
|
void MakeFilroadConnect();
|
|
// 编组
|
|
void GroupConnect();
|
|
// 执行生成
|
|
BOOL FilltRoad();
|
|
// 重新绘制。
|
|
void Draw();
|
|
|
|
BOOL IsSameCenter() const {return m_bSameCenter;}
|
|
|
|
static CString PromptSelectString(BOOL bSameCenter, double dRadiusMM);
|
|
static CString PromptRadiusString(double dRadiusSys);
|
|
|
|
void ReleaseMem();// 释放所分配的内存
|
|
|
|
private:
|
|
static void MakeFilroadConnect (ArLineFilroadAdapterPointer &arLineAdatper,
|
|
ArArcFilroadAdapterPointer &arArcAdapter,
|
|
ArFilroadConnectPointer &arConnect);
|
|
|
|
// 识别图面上已经倒角的道路边线,需要对他们做重新倒角的处理
|
|
static void IdentifyOldFilterConnect(ArLineFilroadAdapterPointer &arLineAdatper,
|
|
ArArcFilroadAdapterPointer &arArcAdapter,
|
|
ArFilroadConnectPointer &arConnect);
|
|
|
|
private:
|
|
// 原始线。
|
|
// 对CAD数组中元素的引用要密切的关注。
|
|
ArLineEntPointer m_arEdgeLine;
|
|
ArArcEntPointer m_arEdgeArc;
|
|
ArLineEntPointer m_arMidLine;
|
|
ArArcEntPointer m_arMidArc;
|
|
|
|
// 原始数据适配类。
|
|
ArLineFilroadAdapterPointer m_arEdgeLineAdapter;
|
|
ArArcFilroadAdapterPointer m_arEdgeArcAdapter;
|
|
ArLineFilroadAdapterPointer m_arMidLineAdapter;
|
|
ArArcFilroadAdapterPointer m_arMidArcAdapter;
|
|
|
|
// filRoadConnect;
|
|
ArFilroadConnectPointer m_arFilroadEdgeConnect;
|
|
ArFilroadConnectPointer m_arFilroadMidConnect;
|
|
|
|
// filRoadGroup;
|
|
ArFilroadGroupPointer m_arFilroadGroup;
|
|
ArFilroadGroupPointer m_arFilroadGroupMid; // 中线,仅仅用来绘制,同圆心时控制绘制。
|
|
|
|
AcAryCircArc2d m_arEdgeInterCircle; // 边线倒角
|
|
AcAryCircArc2d m_arMidInterCircle; // 中线倒角。
|
|
|
|
BOOL m_bSameCenter;// 是否要求同圆心处理
|
|
double m_dRadius;//
|
|
};
|