diff --git a/src/DatabaseServices/Room/ParseService/Hole/RoomIHoleParseAndModify.ts b/src/DatabaseServices/Room/ParseService/Hole/RoomIHoleParseAndModify.ts index e2854b48d..54aaec5a5 100644 --- a/src/DatabaseServices/Room/ParseService/Hole/RoomIHoleParseAndModify.ts +++ b/src/DatabaseServices/Room/ParseService/Hole/RoomIHoleParseAndModify.ts @@ -7,7 +7,8 @@ import { RoomHolePolyline } from "../../Entity/Wall/Hole/RoomHolePolyline"; import { RoomWallBase } from "../../Entity/Wall/RoomWallBase"; import { RoomWallLine } from "../../Entity/Wall/RoomWallLine"; import { CreateGetCurveParam, GetCurveParam, GetLineParam } from "../GetCurveParam"; -import { FindBestRange, ParseWallRange } from "./RoomWallPlaceIHoleHelper"; +import { InsertSortedIndex } from "../RangeUtils"; +import { ParseWallRange } from "./RoomWallPlaceIHoleHelper"; /** * 用于解析和修改2点洞位置的类 @@ -38,7 +39,8 @@ export class RoomIHoleParseAndModify let sparam = getParam.GetParamAtPoint(hole.Points[0]); let eparam = getParam.GetParamAtPoint(hole.Points[1]); - let range = FindBestRange((sparam + eparam) / 2, ranges); //取中点 + let index = InsertSortedIndex(ranges, (sparam + eparam) / 2, (v, range) => v - range[0] + 1e-5); + let range = ranges[index - 1] ?? ranges[0] ?? [0, 1];//保证永远都有范围,保证不会出错 let length = wall instanceof RoomWallLine ? (getParam as GetLineParam).Length : wall.Length; this._WallLength = length;