// 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;// };