|
@@ -47,7 +47,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
|
|
|
}
|
|
|
//检查楼层顺序号
|
|
|
IsRight = GetCheckResult();
|
|
|
- Results.ForEach(t=>t.IsRight=IsRight);
|
|
|
+ Results.ForEach(t => t.IsRight = IsRight);
|
|
|
RMessage = IsRight ? "" : "楼层平面图名称错误或缺失楼层,请检查";
|
|
|
return IsRight;
|
|
|
}
|
|
@@ -74,7 +74,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
|
|
|
{
|
|
|
var item0 = baseResults[i];
|
|
|
var item1 = baseResults[i + 1];
|
|
|
- if (item1.RFloorName == item0.RFloorName)
|
|
|
+ if (item1.RPlanName == item0.RPlanName)
|
|
|
{
|
|
|
sequenceResult = false;
|
|
|
break;
|
|
@@ -88,6 +88,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
RBase.Results.ForEach(t => Results.Add(new FloorMissCheckResult { RBase = t }));
|
|
|
|
|
@@ -127,7 +128,7 @@ namespace SAGA.MBI.ToolsData.ModeCheck
|
|
|
if (rbase == null)
|
|
|
continue;
|
|
|
|
|
|
- rowN.AddCell(0, rbase.RFloorName, style);
|
|
|
+ rowN.AddCell(0, rbase.RPlanName, style);
|
|
|
rowN.AddCell(1, rbase.RFileName, style);
|
|
|
rowN.AddCell(2, rbase.RPath, style);
|
|
|
rowN.AddCell(3, rbase.RPlanName, style);
|
|
@@ -154,11 +155,11 @@ namespace SAGA.MBI.ToolsData.ModeCheck
|
|
|
|
|
|
class SSCSComparerByFloorName : IComparer<SagaSignCheckResult>
|
|
|
{
|
|
|
- private static List<string> m_RuleFloorNames = new List<string> { "RF", "RFM", @"F\d*M?", @"B\d*M?" };
|
|
|
+ private static List<string> m_RuleFloorNames = new List<string> { RegexConstPattern.IsRF, RegexConstPattern.IsRFM, RegexConstPattern.IsOnground, RegexConstPattern.IsUnderground };
|
|
|
public int Compare(SagaSignCheckResult x, SagaSignCheckResult y)
|
|
|
{
|
|
|
- string floorName0 = x.RFloorName;
|
|
|
- string floorName1 = y.RFloorName;
|
|
|
+ string floorName0 = x.RPlanName;
|
|
|
+ string floorName1 = y.RPlanName;
|
|
|
int result = 0;
|
|
|
if (floorName0 == floorName1)
|
|
|
{
|
|
@@ -171,20 +172,10 @@ namespace SAGA.MBI.ToolsData.ModeCheck
|
|
|
//分组组号对比
|
|
|
if (item0 == item1)
|
|
|
{
|
|
|
- int i0 = GetFloorNameIndex(floorName0);
|
|
|
- int i1 = GetFloorNameIndex(floorName1);
|
|
|
+ double i0 = GetFloorNameIndex(floorName0);
|
|
|
+ double i1 = GetFloorNameIndex(floorName1);
|
|
|
//楼层序号对比
|
|
|
- if (i0 == i1)
|
|
|
- {
|
|
|
- int j0 = IsSamdwich(floorName0);
|
|
|
- int j1 = IsSamdwich(floorName1);
|
|
|
- result = j0.CompareTo(j1);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //数字大的,大于数字小的
|
|
|
- result = i0.CompareTo(i1);
|
|
|
- }
|
|
|
+ result = i0.CompareTo(i1);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -192,78 +183,73 @@ namespace SAGA.MBI.ToolsData.ModeCheck
|
|
|
result = item1.CompareTo(item0);
|
|
|
}
|
|
|
}
|
|
|
- return -1*result;
|
|
|
+ return -1 * result;
|
|
|
}
|
|
|
/// <summary>
|
|
|
- /// 获取楼层名中的序号
|
|
|
+ /// 获取楼层名中的序号,夹层转化为点F1M1--1.1
|
|
|
/// </summary>
|
|
|
/// <param name="name"></param>
|
|
|
/// <returns></returns>
|
|
|
- private static int GetFloorNameIndex(string name)
|
|
|
+ private static double GetFloorNameIndex(string name)
|
|
|
{
|
|
|
- var str = Regex.Replace(name, @"[^0-9]+", "");
|
|
|
- var i = str.ToInt();
|
|
|
+ var str = Regex.Replace(name.Replace('M', '.'), @"[^0-9|.]+", "");
|
|
|
+ var i = str.ToDouble();
|
|
|
+ if (Regex.IsMatch(name, RegexConstPattern.IsSandwich))
|
|
|
+ i = i + 0.001;
|
|
|
//如果是地下,序号为负
|
|
|
- if (Regex.IsMatch(name, @"^B\s*"))
|
|
|
+ if (IsUnderground(name))
|
|
|
i = i * -1;
|
|
|
- return i;
|
|
|
+ return i.Round(3);
|
|
|
}
|
|
|
- /// <summary>
|
|
|
- /// 是否为夹层 是返回1,否返回0
|
|
|
- /// </summary>
|
|
|
- /// <returns></returns>
|
|
|
- private static int IsSamdwich(string name)
|
|
|
+
|
|
|
+ private static bool IsRFoRFM(string name)
|
|
|
{
|
|
|
- return Regex.IsMatch(name, @"\s*M") ? 1 : 0;
|
|
|
+ return (Regex.IsMatch(name, $"{RegexConstPattern.IsRF}")) ||
|
|
|
+ (Regex.IsMatch(name, $"{RegexConstPattern.IsRFM}"));
|
|
|
+ }
|
|
|
+
|
|
|
+ private static bool IsUpground(string name)
|
|
|
+ {
|
|
|
+ return (Regex.IsMatch(name, $"{RegexConstPattern.IsOnground}"));
|
|
|
+ }
|
|
|
+
|
|
|
+ private static bool IsUnderground(string name)
|
|
|
+ {
|
|
|
+ return (Regex.IsMatch(name, $"{RegexConstPattern.IsUnderground}"));
|
|
|
}
|
|
|
/// <summary>
|
|
|
- /// 是否连续
|
|
|
+ /// 是否连续,x为上层,y为下层
|
|
|
/// </summary>
|
|
|
public static bool IsContinuous(SagaSignCheckResult x, SagaSignCheckResult y)
|
|
|
{
|
|
|
bool result = false;
|
|
|
- string floorName0 = x.RFloorName;
|
|
|
- string floorName1 = y.RFloorName;
|
|
|
- if (floorName0 == floorName1)
|
|
|
+ string floorName0 = x.RPlanName;
|
|
|
+ string floorName1 = y.RPlanName;
|
|
|
+ double i0 = GetFloorNameIndex(floorName0);
|
|
|
+ double i1 = GetFloorNameIndex(floorName1);
|
|
|
+ //有一个RF或RFM,判断为连续
|
|
|
+ if (IsRFoRFM(floorName0) || IsRFoRFM(floorName1))
|
|
|
{
|
|
|
result = true;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if (floorName0 == m_RuleFloorNames[0] || floorName0 == m_RuleFloorNames[1])
|
|
|
+ var diff = i0 - i1;
|
|
|
+ if ((diff).IsBetween(0, 2))
|
|
|
{
|
|
|
- result = true;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- int i0 = GetFloorNameIndex(floorName0);
|
|
|
- int i1 = GetFloorNameIndex(floorName1);
|
|
|
- int j0 = IsSamdwich(floorName0);
|
|
|
- int j1 = IsSamdwich(floorName1);
|
|
|
-
|
|
|
- if (j0 == 1)
|
|
|
- {
|
|
|
- //顶部为夹层
|
|
|
- //底部不能为夹层,且楼层序号应该相同
|
|
|
- result = j1!=1&&i0 == i1;
|
|
|
+ if (diff.IsThan(1))
|
|
|
+ {
|
|
|
+ result = IsUpground(floorName0) && IsUnderground(floorName1);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if (i0 > 0 && i1 < 0)
|
|
|
- {
|
|
|
- //地上和地下连续,序号为1和-1
|
|
|
- result = i0 == 1 && i1 == -1;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //其它情况连续为序号差为1
|
|
|
- result = i0 - i1 == 1;
|
|
|
- }
|
|
|
+ result = true;
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
|
|
+ }
|
|
|
+
|
|
|
return result;
|
|
|
}
|
|
|
}
|