diff --git a/src/Reactor/RoomHoleReactor.ts b/src/Reactor/RoomHoleReactor.ts index 91fdca0d7..54ca95479 100644 --- a/src/Reactor/RoomHoleReactor.ts +++ b/src/Reactor/RoomHoleReactor.ts @@ -1,8 +1,10 @@ import { MathUtils } from "three"; +import { Arc } from "../api"; import { arrayLast } from "../Common/ArrayExt"; import { CADObject } from "../DatabaseServices/CADObject"; import { Curve } from "../DatabaseServices/Entity/Curve"; import { RoomHolePolyline } from "../DatabaseServices/Room/Entity/Wall/Hole/RoomHolePolyline"; +import { RoomWallArc } from "../DatabaseServices/Room/Entity/Wall/RoomWallArc"; import { RoomWallBase } from "../DatabaseServices/Room/Entity/Wall/RoomWallBase"; import { CreateGetCurveParam } from "../DatabaseServices/Room/ParseService/GetCurveParam"; import { FindBestRange, ParseWallRange } from "../DatabaseServices/Room/ParseService/Hole/RoomWallPlaceIHoleHelper"; @@ -152,6 +154,9 @@ export function UpdateHoleFakerWallsAndUpdateDraw(hole: RoomHolePolyline) { wall.StartPoint = p1; wall.EndPoint = p2; + + if (wall instanceof RoomWallArc && p1Param > p2Param) + (wall as unknown as Arc).IsClockWise = !wall.IsClockWise; } else { @@ -169,6 +174,9 @@ export function UpdateHoleFakerWallsAndUpdateDraw(hole: RoomHolePolyline) wall.StartPoint = paramGet.GetPointAtParam(p1Param); wall.EndPoint = paramGet.GetPointAtParam(p2Param); + + if (wall instanceof RoomWallArc && p1Param > p2Param) + (wall as unknown as Arc).IsClockWise = !wall.IsClockWise; } } else @@ -206,6 +214,9 @@ export function UpdateHoleFakerWallsAndUpdateDraw(hole: RoomHolePolyline) wall.StartPoint = paramGet.GetPointAtParam(p1Param); wall.EndPoint = paramGet.GetPointAtParam(p2Param); + + if (wall instanceof RoomWallArc && p1Param > p2Param) + (wall as unknown as Arc).IsClockWise = !wall.IsClockWise; } new RoomWallParse(false, undefined, false).Parse(fakerWalls);