Cloned SEACAS for EXODUS library with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

187 lines
5.7 KiB

C Copyright(C) 1999-2020 National Technology & Engineering Solutions
C of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
C NTESS, the U.S. Government retains certain rights in this software.
C
C See packages/seacas/LICENSE for details
SUBROUTINE REFRSH (MP, ML, MS, MR, MSNAP, N, COOR, ILINE, LTYPE,
& LCON, NLPS, IFLINE, ILLIST, NSPR, IFSIDE, ISLIST, LINKP, LINKL,
& LINKS, LINKR, TITLE, X1, X2, Y1, Y2, ALPHA, SNAP, SNAPDX,
& NSNAP, SNAPDR, TALL, X11, X22, Y11, Y22, AXIST)
C***********************************************************************
C SUBROUTINE REFRSH = REPAINTS THE DIGITIZING SCREEN WITH SNAP LINES
C***********************************************************************
C SUBROUTINE CALLED BY:
C DIGIT = A SUBROUTINE TO DIGITIZE GEOMETRY
C***********************************************************************
DIMENSION COOR(2, MP), ILINE(ML), LTYPE(ML), LCON(3, ML)
DIMENSION NLPS(MS), IFLINE(MS), ILLIST(MS*3)
DIMENSION NSPR(MR), IFSIDE(MR), ISLIST(MR*4)
DIMENSION LINKP(2, MP), LINKL(2, ML), LINKS(2, MS)
DIMENSION LINKR(2, MR)
DIMENSION XDUM(2), YDUM(2)
DIMENSION N(28), SNAPDX(2, MSNAP), NSNAP(2)
CHARACTER*72 TITLE
LOGICAL ALPHA, SNAP, SNAPDR, CPUIFC, AXIST
LOGICAL ADDLNK, GETMAX, NUMPLT, TEST
ADDLNK = .FALSE.
IF (.NOT.ALPHA)THEN
CALL PLTBGN
XDIMR = ABS (X2-X1)
YDIMR = ABS (Y2-Y1)
XDIMD = 1.
YDIMD = .75
CALL MPVIEW (0., XDIMD, 0., YDIMD)
XRAT = XDIMR/XDIMD
YRAT = YDIMR/YDIMD
IF (XRAT.LT.YRAT)THEN
XDIMR = XDIMD*YRAT
X11 = (X1+X2-XDIMR)*.5
X22 = (X1+X2+XDIMR)*.5
XDIMR = X22-X11
Y11 = Y1
Y22 = Y2
ELSE
YDIMR = YDIMD*XRAT
Y11 = (Y1+Y2-YDIMR)*.5
Y22 = (Y1+Y2+YDIMR)*.5
YDIMR = Y22-Y11
X11 = X1
X22 = X2
ENDIF
IF (AXIST) THEN
XDUM(1) = X11 - (XDIMR*.05)
XDUM(2) = X22 + (XDIMR*.05)
YDUM(1) = Y11 - (YDIMR*.05)
YDUM(2) = Y22 + (YDIMR*.05)
SHRINK=.2
ELSE
SHRINK=.1
ENDIF
X11 = X11 - (XDIMR*SHRINK)
X22 = X22 + (XDIMR*SHRINK)
Y11 = Y11 - (YDIMR*SHRINK)
Y22 = Y22 + (YDIMR*SHRINK)
CALL MPORT2 (X11, X22, Y11, Y22)
CALL PLTFRM (0)
C PLOT THE TITLE
CALL STRLNG (TITLE, LEN)
IF ((LEN.GT.1).OR. (TITLE (1:1).NE.' '))THEN
CALL PLTXHL (TITLE(1:LEN), XLEN)
XBEGIN = AMAX1 (0., (XDIMD*.5-XLEN*.5))
CALL PLTXTH (XBEGIN, YDIMD*.95, TITLE(1:LEN))
IF (CPUIFC (.TRUE.) )RETURN
ENDIF
CALL PLTFLU
C PLOT THE GRID LINES IF APPLICABLE
IF (SNAP)THEN
SNAPDR = .TRUE.
CALL PLTSTD (1, 4.)
C PLOT THE X GRID LINES
YBOT = SNAPDX(2, 1)
YTOP = SNAPDX(2, NSNAP(2))
DO 100 I = 1, NSNAP(1)
CALL D2GRID (SNAPDX(1, I), YBOT, SNAPDX(1, I), YTOP)
IF (CPUIFC (.TRUE.) )RETURN
100 CONTINUE
C PLOT THE Y GRID LINES
XLEFT = SNAPDX(1, 1)
XRIGHT = SNAPDX(1, NSNAP(1))
DO 110 I = 1, NSNAP(2)
CALL D2GRID (XLEFT, SNAPDX(2, I), XRIGHT, SNAPDX(2, I))
IF (CPUIFC(.TRUE.) )RETURN
110 CONTINUE
CALL PLTSTD (1, 7.)
ELSE
SNAPDR = .FALSE.
ENDIF
C PLOT THE AXIS IF APPLICABLE
IF (AXIST) CALL SETAXS(XDUM,YDUM)
IF (CPUIFC(.TRUE.) )RETURN
C PLOT POINTS ALREADY IN THE DATABASE
CALL PLTSTT (2, TALL*.5)
CALL PLTSTD (1, 3.)
DO 120 I = 1, N(18)
CALL LTSORT (MP, LINKP, I, II, ADDLNK)
IF (II.GT.0)THEN
#if NeedsDoubleEscape
CALL MPD2SY (1, COOR(1, II), COOR(2, II), '\\CX')
#else
CALL MPD2SY (1, COOR(1, II), COOR(2, II), '\CX')
#endif
ENDIF
IF (CPUIFC (.TRUE.) )RETURN
120 CONTINUE
C PLOT LINES ALREADY IN THE DATABASE
KNUM = 0
CALL PLTSTD (1, 7.)
COLOR = 7.
DO 130 I = 1, N(19)
CALL LTSORT (ML, LINKL, I, II, ADDLNK)
IF (II.GT.0)THEN
CALL PLTSTD (1, COLOR)
LT = LTYPE(II)
IP1 = LCON(1, II)
IP2 = LCON(2, II)
IP3 = LCON(3, II)
CALL LTSORT (MP, LINKP, IP1, IPNTR1, ADDLNK)
CALL LTSORT (MP, LINKP, IP2, IPNTR2, ADDLNK)
CALL LTSORT (MP, LINKP, IABS (IP3), IPNTR3, ADDLNK)
IF ((IPNTR1.GT.0).AND. (IPNTR2.GT.0).AND.
+ ((LT.EQ.1).OR. (IPNTR3.GT.0)))THEN
CALL DLINE (MP, ML, COOR, LINKP, KNUM, LT, IP1, IP2,
& IP3, NUMPLT, DUM1, DUM2, TEST, GETMAX, DUM1, DUM2,
& DUM3, DUM4)
IF (CPUIFC(.TRUE.) )RETURN
ENDIF
ENDIF
130 CONTINUE
C PLOT REGIONS ALREADY IN THE DATABASE
CALL PLTSTD (1, 3.)
DO 140 I = 1, N(22)
CALL LTSORT (MR, LINKR, I, II, ADDLNK)
IF (II.GT.0)THEN
CALL REGEXT (MP, ML, MS, MR, N, II, COOR, ILINE, LTYPE,
& LCON, NLPS, IFLINE, ILLIST, NSPR, IFSIDE, ISLIST,
& LINKP, LINKL, LINKS, LINKR, XMIN, XMAX, YMIN, YMAX)
XMID = (XMAX+XMIN)/2.
YMID = (YMAX+YMIN)/2.
#if NeedsDoubleEscape
CALL MPD2SY (1, XMID, YMID, '\\CDI')
#else
CALL MPD2SY (1, XMID, YMID, '\CDI')
#endif
IF (CPUIFC(.TRUE.) )RETURN
ENDIF
140 CONTINUE
ENDIF
RETURN
END