diff --git a/src/DatabaseServices/Extrude.ts b/src/DatabaseServices/Extrude.ts index b1cc57f28..94c2a6ac0 100644 --- a/src/DatabaseServices/Extrude.ts +++ b/src/DatabaseServices/Extrude.ts @@ -514,8 +514,24 @@ export class ExtureSolid extends Entity let localVec = vec.clone().applyMatrix4(this.OCSInv.setPosition(cZeroVec)); - dragType === DragPointType.Grip ? - this.ContourCurve.MoveGripPoints(indexList, localVec) : + if (dragType === DragPointType.Grip) + { + if (this.ContourCurve instanceof Polyline + && indexList.length === 1 + && indexList[0] % 2 === 1) + { + let param = indexList[0] / 2; + if (this.ContourCurve.GetBuilgeAt(Math.floor(param)) === 0) + { + let der = this.ContourCurve.GetFistDeriv(param).normalize(); + [der.x, der.y] = [der.y, -der.x]; + let d = localVec.dot(der); + localVec.copy(der).multiplyScalar(d); + } + } + this.ContourCurve.MoveGripPoints(indexList, localVec); + } + else this.ContourCurve.MoveStretchPoints(indexList, localVec); }