Files
envi-code/SourceCode/Code2026/tg_shs/shs_siteplan/RoadFillterMgr.h
T

78 lines
2.4 KiB
C++
Raw Normal View History

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