* Create plane from array of points, (C) EMA 1997 LM:01.01.1997 INTERNAL INTEGER I,N,NC,NDEV,STK,TYP,END,ER REAL DEV FORMAT 8/3,DEV1,DEV2 FORMAT 8/3,XM(3) UNDEFLM ELM CHAR*70 STRING CHAR*32 CEMA INIT 'Plane from points, (C) Ema 1997' CHAR*38 MSG1 INIT 'MSEL PT // YES:END ' CHAR*38 MSG2 INIT 'PLN CREATED, IND PT // YES:CURRENT ' CHAR*38 ERR1 INIT 'EMPTY BATCH // YES:END ' CHAR*38 ERR2 INIT 'INVALID NUM OF POINTS // YES:END ' CHAR*38 ERR3 INIT 'MORE THEN 9999 POINTS // YES:END ' EXTERNAL PT PT(9999),PTX,PT1,PT2 LN LN PLN PLN,PLN1 PROC MSG MSG1//CEMA KEY,STRING,YES IF (KODE EQ YES) EXIT LOAD GUMKHN 3,STRING,70,STRING,N,ER LOAD GUMSEL 1,N,STRING,1,1,1,1,STK,ER IF (STK EQ 0) THEN ERROR LOAD GUSINF STK,I,N,ER BLOCKIF (N EQ 0) THEN LABEL ERROR BEEP MSG ERR1//CEMA YES EXIT ENDIF LET N=0 DO LOAD GUSPOP STK,ELM,END,ER LOAD GIRTPS 1,ELM,TYP,ER,ER,ER BLOCKIF ((TYP EQ 1)AND(END EQ 0)) THEN LET N=N+1 LET PT(N)=ELM ENDIF WHILE (END EQ 0) BLOCKIF (N GT 9999) THEN BEEP MSGCNTL 'PLANE NOT CREATED' MSG ERR3//CEMA YES EXIT ENDIF BLOCKIF (N LT 3) THEN LABEL ERROR1 BEEP MSG ERR2//CEMA YES EXIT ENDIF LOAD GSPAPT 1,N,PT,PLN,DEV,ER BLOCKIF (ER EQ 0) THEN HIGHLT PLN * LET I=0 * DO * LET I=I+1 * LOAD GSOIPP 1,PT(I),PLN,DEV1,PT1,PT2,ER * ERASE PT2 * BLOCKIF(DEV1 GT DEV2)THEN * LET DEV2=DEV1 * LET NDEV=I * ENDIF * IF(DEV1 GE 0.1) LOAD GICPIC 1,PT(I),0,ER * IF(DEV1 GT 0.05) HIGHLT PT(I) * WHILE(I LT N) * LET STRING='MAX DEV '//CHCONV(DEV2) * LOAD GUMKHN 3,STRING,70,STRING,NC,ER * LOAD GIRMAT 1,PT(NDEV),I,XM,ER * LOAD GIWTEX 1,PT(NDEV),NC,STRING,XM,1,0,ER * HIGHLT PT(NDEV) MSGCNTL 'MAX DEV '//CHCONV(DEV) SELECT MSG2//CEMA LN,YES * NOHIGHLT PLN,PT(NDEV) NOHIGHLT PLN BLOCKIF(KODE EQ IND) THEN LOAD GSOXLP 1,LN,PLN,PTX,I,ER ERASE LN IF (PTX EQ NULL) EXIT LOAD GSPOPO 1,PTX,PLN,PLN1,ER ERASE PLN,PTX ENDIF ELSE BRANCH ERROR1 ENDIF MSGCNTL 'EOE' END