From 62a183c7e3cd3036c3b9c1897508a4539264e58e Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Sun, 23 Apr 2023 23:19:37 +0300 Subject: [PATCH] =?UTF-8?q?fix=20#2843=20=D0=92=D0=B5=D1=80=D0=BD=D1=83?= =?UTF-8?q?=D0=BB=20=D1=89=D0=B0=D0=B7=D0=B0=D0=B4=20GetTransform=20=D0=B2?= =?UTF-8?q?=20Graph3D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/Lib/Graph3D.pas | 18 +++++++++--------- bin/Lib/PABCSystem.pas | 3 ++- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/bin/Lib/Graph3D.pas b/bin/Lib/Graph3D.pas index bc5f19d2b..3e46b57bb 100644 --- a/bin/Lib/Graph3D.pas +++ b/bin/Lib/Graph3D.pas @@ -565,18 +565,18 @@ type /// Локальная ось X в глобальных координатах property LocalAxisX: Vector3D - read Invoke&(()->model.Transform.Transform(new Vector3D(1,0,0))); + read Invoke&(()->model.GetTransform.Transform(new Vector3D(1,0,0))); /// Локальная ось X в глобальных координатах property LocalAxisY: Vector3D - read Invoke&(()->model.Transform.Transform(new Vector3D(0,1,0))); + read Invoke&(()->model.GetTransform.Transform(new Vector3D(0,1,0))); /// Локальная ось X в глобальных координатах property LocalAxisZ: Vector3D - read Invoke&(()->model.Transform.Transform(new Vector3D(0,0,1))); + read Invoke&(()->model.GetTransform.Transform(new Vector3D(0,0,1))); /// Перемещает 3D-объект к точке (x,y,z) в локальных координатах procedure MoveToLocal(x,y,z: real); begin - var p := Invoke&(()->model.Transform.Transform(new Point3D(x,y,z))); + var p := Invoke&(()->model.GetTransform.Transform(new Point3D(x,y,z))); MoveTo(p); end; /// Перемещает 3D-объект к точке p в локальных координатах @@ -585,9 +585,9 @@ type procedure MoveByLocal(dx,dy,dz: real); begin // x,y,z в локальных координатах всегда нули - MoveToLocal(dx, dy, dz); - //var v := LocalAxisX*dx + LocalAxisY*dy + LocalAxisZ*dz; - //MoveBy(v); + // MoveToLocal(dx, dy, dz); + var v := LocalAxisX*dx + LocalAxisY*dy + LocalAxisZ*dz; + MoveBy(v); end; /// Перемещает 3D-объект на вектор v в локальных координатах procedure MoveByLocal(v: Vector3D) := MoveByLocal(v.x,v.y,v.z); @@ -3324,7 +3324,7 @@ function BillboardText(p: Point3D; Text: string; Fontsize: real := 12): Billboar /// Возвращает координатную систему с длиной стрелок ArrowsLength и диаметром стрелок Diameter function CoordinateSystem(ArrowsLength, Diameter: real): CoordinateSystemT; /// Возвращает координатную систему с длиной стрелок ArrowsLength -function CoordinateSystem(ArrowsLength: real): CoordinateSystemT; +function CoordinateSystem(ArrowsLength: real := 2): CoordinateSystemT; /// Возвращает 3D-текст с центром в точке (x, y, z) с высотой Height, именем шрифта FontName заданного цвета function Text3D(x, y, z: real; Text: string; Height: real; FontName: string; c: Color): TextT; /// Возвращает 3D-текст с центром в точке (x, y, z) с высотой Height, именем шрифта FontName @@ -4263,7 +4263,7 @@ function BillboardText(p: Point3D; Text: string; Fontsize: real) := BillboardTex function CoordinateSystem(ArrowsLength, Diameter: real): CoordinateSystemT := Inv(()->CoordinateSystemT.Create(0, 0, 0, arrowslength, diameter)); -function CoordinateSystem(ArrowsLength: real) := CoordinateSystem(arrowslength, (arrowslength / 10).ClampTop(0.2)); +function CoordinateSystem(ArrowsLength: real) := CoordinateSystem(arrowslength, (arrowslength / 10).ClampTop(0.18)); function Text3D(x, y, z: real; Text: string; Height: real; fontname: string; c: Color): TextT := Inv(()->TextT.Create(x, y, z, text, height, fontname, c)); diff --git a/bin/Lib/PABCSystem.pas b/bin/Lib/PABCSystem.pas index 1d26f4711..c279776a2 100644 --- a/bin/Lib/PABCSystem.pas +++ b/bin/Lib/PABCSystem.pas @@ -8756,7 +8756,8 @@ end; procedure Sort(var a: array of T; keySelector: T->T1); begin - a := a.OrderBy(x->keySelector(x)).ToArray; + var keys := System.Array.ConvertAll(a,keySelector); + System.Array.Sort(keys, a); end; procedure Sort(l: List);