diff --git a/src/DatabaseServices/Entity/Polyline.ts b/src/DatabaseServices/Entity/Polyline.ts index cd0414a93..64a4dcd87 100644 --- a/src/DatabaseServices/Entity/Polyline.ts +++ b/src/DatabaseServices/Entity/Polyline.ts @@ -859,7 +859,14 @@ export class Polyline extends Curve } else if (cu instanceof Arc) { - this._LineData.push({ pt: cuSp2, bul: cu.Bul }); + let x = new Vector3().setFromMatrixColumn(cu.OCSNoClone, 0); + let y = new Vector3().setFromMatrixColumn(cu.OCSNoClone, 1); + let cuZ = x.cross(y); + + let dir = equalv3(this.Normal, cuZ, 1e-4) ? 1 : -1; + let bul = cu.Bul * dir; + + this._LineData.push({ pt: cuSp2, bul: bul }); this._LineData.push({ pt: cuEp2, bul: 0 }); } else if (cu instanceof Polyline) @@ -935,7 +942,11 @@ export class Polyline extends Curve } else if (cu instanceof Arc) { - let dir = equalv3(this.Normal, cu.Normal.negate()) ? -1 : 1; + let x = new Vector3().setFromMatrixColumn(cu.OCSNoClone, 0); + let y = new Vector3().setFromMatrixColumn(cu.OCSNoClone, 1); + let cuZ = x.cross(y); + + let dir = equalv3(this.Normal, cuZ, 1e-4) ? 1 : -1; let bul = cu.Bul * dir; if (linkType === LinkType.SpSp) {