/* AmiPCB script to measure the distance between two points      */
/* $VER: GetDistance.AmiPCB 1.00 (© A. Greve, 01-Jan-2002)       */
/* $VER: GetDistance.AmiPCB 1.01 (© A. Greve, 16-Jan-2002)       */
/*       Adaption to AmiPCB 1.05 (measuring exactness 1/1000 mm) */

OPTIONS RESULTS     /* Turn on the returning of values */

SIGNAL ON error     /* For error handling */
SIGNAL ON syntax

lf = '0a'x

fr = 'ARexx/InitVars.AmiPCB'()

IF ~SHOW('l', 'rexxmathlib.library') THEN DO
    IF ~ADDLIB('rexxmathlib.library',0,-30,0) THEN DO
        SELECT
            WHEN fr=1 THEN 'MESSAGE("Installez rexxmathlib.library'lf'dans votre répertoire libs: avant'lf'd''utiliser cette macro")'
            WHEN fr=2 THEN 'MESSAGE("Installieren Sie die rexxmathlib.library'lf'in Ihrem libs: Verzeichnis, bevor Sie'lf'dieses Skript aufrufen.")'
            OTHERWISE	   'MESSAGE("Install rexxmathlib.library'lf'in your libs: drawer before'lf'calling this script")'
        END
        EXIT
    END
END

SELECT
    WHEN fr=1 THEN msg = "Distance = "
    WHEN fr=2 THEN msg = "Abstand = "
    OTHERWISE	   msg = "Distance = "
END

'SNAPGRID(-1)'
grid = RESULT
'SNAPGRID(0)'

SELECT
    WHEN fr=1 THEN 'GETPOINT("Cliquez sur le premier point")'
    WHEN fr=2 THEN 'GETPOINT("Klicken Sie auf den ersten Punkt")'
    OTHERWISE	   'GETPOINT("Click on the first point")'
END
PARSE VAR result x1 ',' y1

SELECT
    WHEN fr=1 THEN 'GETPOINT("Cliquez sur le deuxième point")'
    WHEN fr=2 THEN 'GETPOINT("Klicken Sie auf den zweiten Punkt")'
    OTHERWISE	   'GETPOINT("Click on the second point")'
END
PARSE VAR result x2 ',' y2

x1 = x1/1000; y1 = y1/1000
x2 = x2/1000; y2 = y2/1000
xdist = FABS(x1-x2); ydist = FABS(y1-y2)
dist = SQRT(POWER(xdist,2) + POWER(ydist,2))

dist = TRUNC(dist,3)

'MESSAGE("x1 = 'x1' mm  ,  y1 = 'y1' mm'lf'x2 = 'x2' mm  ,  y2 = 'y2' mm'lf'dx = 'xdist' mm  ,  dy = 'ydist' mm'lf||lf||msg||dist' mm")'

IF grid = 1 THEN 'SNAPGRID(1)'

EXIT

/* Error handling  */
syntax:
erreur=RC
CALL 'ARexx/_Syntax.rexx'(fr,'GetDistance.AmiPCB',SIGL,erreur)
EXIT

error:
CALL 'ARexx/_Error.rexx'(fr,'GetDistance.AmiPCB',SIGL)
EXIT
