From aaeeee583a3124d3564126dc4cbe5ab4a1ad179f Mon Sep 17 00:00:00 2001 From: IanKing Date: Sat, 4 Mar 2017 10:24:59 +1100 Subject: [PATCH] version833 adding 3d surfaces --- src/3dview.f90 | 311 ++++++++++++++ src/BLK3D.F90 | 7 + src/BLKMAT.F90 | 4 + src/CHVIEW.F90 | 588 +++++++++++++++++++++++++++ src/D.INC | 40 +- src/DUMPBIN.f90 | 84 ++++ src/EVENT.F90 | 6 +- src/IDM.rc | 121 ++++++ src/IDT.rc | 74 ++++ src/MAT.rc | 102 +++++ src/NEWRMGN.F90 | 3 - src/PLOTR1.F90 | 12 +- src/{RMAGENV83d.rc => RMAGENV83e.rc} | 187 ++++++++- src/RMAGENV83e.res | Bin 0 -> 81396 bytes src/SHOWEQ.FOR | 8 - src/SYMBL.F90 | 14 + src/deln2.f90 | 2 +- src/tbar1.bmp | Bin 0 -> 3126 bytes 18 files changed, 1545 insertions(+), 18 deletions(-) create mode 100644 src/3dview.f90 create mode 100644 src/BLK3D.F90 create mode 100644 src/BLKMAT.F90 create mode 100644 src/CHVIEW.F90 create mode 100644 src/DUMPBIN.f90 create mode 100644 src/IDM.rc create mode 100644 src/IDT.rc create mode 100644 src/MAT.rc rename src/{RMAGENV83d.rc => RMAGENV83e.rc} (94%) create mode 100644 src/RMAGENV83e.res delete mode 100644 src/SHOWEQ.FOR create mode 100644 src/tbar1.bmp diff --git a/src/3dview.f90 b/src/3dview.f90 new file mode 100644 index 0000000..79c93f1 --- /dev/null +++ b/src/3dview.f90 @@ -0,0 +1,311 @@ + SUBROUTINE BuildModel(NP,NE) + +! +! + USE WINTERACTER + USE BLK3D +! USE BLK1MOD + INCLUDE 'd.inc' + + REAL, DIMENSION(4,4) :: A + REAL, DIMENSION(700) :: XLIN,YLIN,BLVL + REAL :: ViewAngle = 0.0 + INTEGER :: ITYPIMAGE = 4 + INTEGER , DIMENSION(6) :: WIDSTAT + REAL, PARAMETER :: DEFDIST = 5.0 + REAL :: ROTH=0.0 + REAL :: ROTV=0.0 + REAL :: ROT=0.0 + REAL :: SHIFT=0.0 + REAL :: SHIFTV=0.0 + + INTEGER K,J,NCN,KK,mat,JHAND1 + CHARACTER(LEN=260) :: FILENAME = 'objects.w3d' + CHARACTER(LEN=65) :: STBAR1 + + DATA ITIME/0/ +! + IF(ITIME .EQ. 0) THEN + IROTSV=0 + ROTSV=0.0 + ROTHSV=0. + ROTVSV=0. + DISTSV=0. + VSCALESV=1.0 + ITIME=1 + ENDIF + +! CALL WindowOpenChild(JHAND1,HIDEWINDOW,WIDTH=1000,HEIGHT=600) + CALL WindowOpenChild(JHAND1,FLAGS =SysMenuOn+MinButton+MaxButton+StatusBar, & + MENUID=IDM_MENU1,TOOLID=(/0,IDT_TOOLBAR1,0,0/),& + TITLE ='View RMA 3D model files' ) + CALL WINDOWSELECT(JHAND1) +! +! Create a bitmap of same size as window and draw initial frame +! + WIDSTAT(1) = 1000 + WIDSTAT(2) = 2000 + WIDSTAT(3) = 1000 + WIDSTAT(4) = 1000 + WIDSTAT(5) = 1000 + WIDSTAT(6) = 2000 + CALL WindowStatusBarParts(6, WIDSTAT) + CALL WindowOutStatusBar(1, ' Rotations, Translations ') + CALL WindowOutStatusBar(3, ' Eye Distance') + CALL WindowOutStatusBar(5, ' Adjusted Eye Location') + WRITE(STBAR1,'(5F13.3)') ROTH,ROTV,ROT,SHIFT,SHIFTV + CALL WindowOutStatusBar(2,STBAR1) + CALL WBitmapCreate(JHAND1,WInfoWindow(WindowWidth), & + WInfoWindow(WindowHeight)) + +! +! Start a new model +! +! Estimate vertices and facets + MAXVERT=NP + MAXFACET=2*NE + CALL W3dNew(MAXVERT,MAXFACET,20) +! + CALL W3dGetMatrix(A) +! + CALL W3dMatrix(A) + CALL W3dTranslate(0.0,0.0,0.0) + CALL W3dScale(1.0,-VSCALESV,1.0) + + CALL TRPLAT(IQUAL) +! +! Define materials +! + DO K=1,9 + CALL W3dMaterial(K,WRGB(255,128,64)) + ENDDO + +!! +! +! Determine model extent +! + XMIN = WInfo3dReal(M3dXmin) + XMAX = WInfo3dReal(M3dXmax) + YMIN = WInfo3dReal(M3dYmin) + YMAX = WInfo3dReal(M3dYmax) + ZMIN = WInfo3dReal(M3dZmin) + ZMAX = WInfo3dReal(M3dZmax) +! CALL W3dGetMatrix(MODEL) + +! + XLEN = XMAX - XMIN + YLEN = YMAX - YMIN + ZLEN = ZMAX - ZMIN + DIST = DEFDIST*MAX(XLEN,YLEN,ZLEN) + WRITE(STBAR1,'(F13.3)') DIST + CALL WindowOutStatusBar(4,STBAR1) + DISTSTEP = DIST / 50. + + CALL W3dMatrix() + IF(IROTSV .EQ. 1) THEN + CALL W3dRotate(-45.+ROTVSV,1) + CALL W3dRotate(ROTHSV,2) + CALL W3dRotate(ROTSV,3) + ROTV=ROTVSV + ROTH=ROTHSV + ROT=ROTSV + DIST=DISTSV + ELSE + CALL W3dRotate(-45.,1) + CALL W3dRotate(0.,2) + CALL W3dRotate(0.,3) + ENDIF + CALL W3dGetMatrix(EYE) + EYE(1,4) = XMIN + XLEN/2.0 + EYE(2,4) = YMIN + YLEN/2.0 + EYE(3,4) = ZMIN + ZLEN/2.0 + + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) +! CALL WMessageBox(YesNo,QuestionIcon,CommonYes, & +! 'Do you wish to continue (YES) or quit (NO) this view ?', 'CONTINUE?') +! IF(WInfoDialog(4) .eq. 1) then +! GO TO 300 +! ELSE +! CALL WindowCloseChild(JHAND1) +! return +! ENDIF +300 continue + CALL CHVIEW(JHAND1,ITYPIMAGE) + CALL WindowCloseChild(JHAND1) + CALL WBitmapDestroy(JHAND1) + I3DPLT=0 + + + RETURN + END SUBROUTINE BuildModel + + SUBROUTINE TRPLAT(IQUAL) + use winteracter + USE BLK1MOD + +! +! Build a surface +! +! + REAL :: WM + REAL XSING,YSING,BLVL + allocatable XSING(:),YSING(:),BLVL(:) + INTEGER :: IVERT,IFACET,NCNS,K,KK,MAXNP + INTEGER :: IVERTICES(4) + INTEGER :: IFCORNER(3,1) = RESHAPE((/1,3,5/),(/3,1/)) +! INTEGER :: IFCORNER(3,4) = RESHAPE((/1,2,6,2,3,5,2,4,6,4,5,6/),(/3,4/)) +! INTEGER :: IFCORNERR(3,8) = RESHAPE((/1,2,9,1,9,8,2,3,4,2,4,9,8,9,6,8,6,7,9,4,5,9,5,6/),(/3,8/)) + INTEGER :: IFCORNERR(3,2) = RESHAPE((/1,3,5,1,5,7/),(/3,2/)) + IVERT = WInfo3dInteger(M3dVertices) + wdmax=-1.e10 + wdmin=1.e10 + MAXNP=NP + ALLOCATE (XSING(MAXNP),YSING(MAXNP),BLVL(MAXNP)) + XSING=5. + YSING=-5. + BLVL=-.5 + DO K=1,NP + IF(INSKP(K) .EQ. 1) CYCLE + IF(CORD(K,1) .LT. 0. .OR. CORD(K,1) .GT. HSIZE) CYCLE + IF(CORD(K,2) .LT. 0. .OR. CORD(K,2) .GT. 7.5) CYCLE + wdmax=max(WD(K),wdmax) + wdmin=min(WD(K),wdmin) + XSING(K)=CORD(K,1) + YSING(K)=-CORD(K,2) + ENDDO + wdmins=wdmin/((wdmax-wdmin)*2.) + DO K=1,NP + IF(INSKP(K) .EQ. 1) CYCLE + IF(CORD(K,1) .LT. 0. .OR. CORD(K,1) .GT. HSIZE) CYCLE + IF(CORD(K,2) .LT. 0. .OR. CORD(K,2) .GT. 7.5) CYCLE + blvl(k)=-(WD(K)-wdmin)/(wdmax-wdmin) + ENDDO +!! read(155,'(2i6,24f12.3)') j,ncn,(xlin(k),ylin(k),blvl(k),k=1,ncn) +!! blvl(k)=(blvl(k))*0.1 + CALL W3dVertices(xsing,blvl,ysing,MAXNP) + DO IFACET = 1,ne +! IF(IMAT(IFACET) .EQ. 999) CYCLE + if(ncorn(ifacet) .lt. 6 .or. (imat(ifacet) .eq. 0)) cycle + IF(IESKP(IFACET) .NE. 0) CYCLE + IF(CORD(nop(ifacet,1),1) .LT. 0. .OR. CORD(nop(ifacet,1),1) .GT. HSIZE) CYCLE + IF(CORD(nop(ifacet,3),1) .LT. 0. .OR. CORD(nop(ifacet,3),1) .GT. HSIZE) CYCLE + IF(CORD(nop(ifacet,5),1) .LT. 0. .OR. CORD(nop(ifacet,5),1) .GT. HSIZE) CYCLE + IF(CORD(nop(ifacet,1),2) .LT. 0. .OR. CORD(nop(ifacet,1),2) .GT. 7.5) CYCLE + IF(CORD(nop(ifacet,3),2) .LT. 0. .OR. CORD(nop(ifacet,3),2) .GT. 7.5) CYCLE + IF(CORD(nop(ifacet,5),2) .LT. 0. .OR. CORD(nop(ifacet,5),2) .GT. 7.5) CYCLE + if(ncorn(ifacet) .eq. 6) then + K=1 + i1=nop(ifacet,ifcorner(1,k)) + i2=nop(ifacet,ifcorner(2,k)) + i3=nop(ifacet,ifcorner(3,k)) + wm=(blvl(i1)+blvl(i2)+blvl(i3))/3. + mat=-wm*8.+1. + + CALL W3dMaterialN(MAT) + + IVERTICES(1) = i1 + IVERTICES(2) = i2 + IVERTICES(3) = i3 + ncns=3 + CALL W3dFacet(IVERTICES,ncns) +! WRITE(156,*) IFACET,I1,I2,I3,MAT +! enddo + else + IF(CORD(nop(ifacet,7),1) .LT. 0. .OR. CORD(nop(ifacet,7),1) .GT. HSIZE) CYCLE + IF(CORD(nop(ifacet,7),2) .LT. 0. .OR. CORD(nop(ifacet,7),2) .GT. 7.5) CYCLE + do k=1,2 + i1=nop(ifacet,ifcornerr(1,k)) + i2=nop(ifacet,ifcornerr(2,k)) + i3=nop(ifacet,ifcornerr(3,k)) + wm=(blvl(i1)+blvl(i2)+blvl(i3))/3. + mat=-wm*8.+1. + + CALL W3dMaterialN(MAT) + + IVERTICES(1) = i1 + IVERTICES(2) = i2 + IVERTICES(3) = i3 + ncns=3 + CALL W3dFacet(IVERTICES,ncns) +! WRITE(156,*) IFACET,I1,I2,I3,MAT + enddo + endif + END DO + DEALLOCATE (XSING,YSING,BLVL) + RETURN + END SUBROUTINE TRPLAT + + ! + SUBROUTINE ViewPos(Angle) + + USE BLK3D +! +! Set viewing position +! + IMPLICIT NONE +! + REAL, INTENT(IN) :: Angle + CHARACTER(LEN=50) :: STBAR1 + +! +! REAL, PARAMETER :: DIST = 20. ! Controls viewing distance + real xtmp,ytmp,ztmp,xpos,ypos,zpos,xup,yup,zup +! +! +! Calculate viewing position using EYE matrix calculated by 3D modelling routines. +! + XTMP = 0.0 + YTMP = 0.0 + ZTMP = DIST + XPOS = EYE(1,1)*XTMP + EYE(1,2)*YTMP + EYE(1,3)*ZTMP + EYE(1,4) + YPOS = EYE(2,1)*XTMP + EYE(2,2)*YTMP + EYE(2,3)*ZTMP + EYE(2,4) + ZPOS = EYE(3,1)*XTMP + EYE(3,2)*YTMP + EYE(3,3)*ZTMP + EYE(3,4) + WRITE(STBAR1,'(3F13.3)') XPOS,YPOS,ZPOS + CALL WindowOutStatusBar(6,STBAR1) +! +! Calculate up vector using EYE matrix calculated by 3D modelling routines. +! + XTMP = 0.0 + YTMP = 1.0 + ZTMP = 0.0 + XUP = EYE(1,1)*XTMP + EYE(1,2)*YTMP + EYE(1,3)*ZTMP + YUP = EYE(2,1)*XTMP + EYE(2,2)*YTMP + EYE(2,3)*ZTMP + ZUP = EYE(3,1)*XTMP + EYE(3,2)*YTMP + EYE(3,3)*ZTMP +! +! Set eye position +! + CALL W3dEye(XPOS,YPOS,ZPOS, & + EYE(1,4),EYE(2,4),EYE(3,4), & + XUP,YUP,ZUP) + + RETURN + END SUBROUTINE ViewPos +! + SUBROUTINE ShowModel(JHAND1,ITYPIMAGE) +! +! Display the model +! + USE WINTERACTER + + IMPLICIT NONE +! + INTEGER, INTENT(IN) :: JHAND1,ITYPIMAGE ! Memory bitmap handle +! +! Select the bitmap as the target drawable and draw the model +! + !CALL IGrSelect(DrawBitmap,JHAND1) + !CALL IGrAreaClear() + !CALL W3dShow(View3Flat) + CALL WglSelect(DrawBitmap,JHAND1) +! CALL IGrAreaClear() + CALL WglShow(ITYPIMAGE) +! +! Now select window as target drawable and copy bitmap to window +! +! CALL IGrSelect(DrawWin) + CALL WglSelect(DrawWin) + CALL WBitmapPut(JHAND1,0,0) + RETURN + END SUBROUTINE ShowModel +! diff --git a/src/BLK3D.F90 b/src/BLK3D.F90 new file mode 100644 index 0000000..7c00c38 --- /dev/null +++ b/src/BLK3D.F90 @@ -0,0 +1,7 @@ + MODULE BLK3D + + REAL XMAX,YMAX,ZMAX,XMIN,YMIN,ZMIN,XLEN,YLEN,ZLEN,DIST,DISTSTEP + REAL :: EYE(4,4) + REAL :: ROTSV,ROTHSV,ROTVSV,DISTSV,VSCALESV + INTEGER IROTSV + END MODULE \ No newline at end of file diff --git a/src/BLKMAT.F90 b/src/BLKMAT.F90 new file mode 100644 index 0000000..51210d6 --- /dev/null +++ b/src/BLKMAT.F90 @@ -0,0 +1,4 @@ + MODULE BLKMAT + INTEGER, ALLOCATABLE :: IMATN(:),IRGB(:) + REAL, ALLOCATABLE :: SHINE(:),GLOSS(:) + END MODULE \ No newline at end of file diff --git a/src/CHVIEW.F90 b/src/CHVIEW.F90 new file mode 100644 index 0000000..58e210a --- /dev/null +++ b/src/CHVIEW.F90 @@ -0,0 +1,588 @@ + SUBROUTINE CHVIEW(JHAND1,ITYPIMAGE) + +! + USE WINTERACTER + + USE BLK3D + SAVE + + INCLUDE 'd.inc' +! IMPLICIT NONE +! + REAL , PARAMETER :: PI = 3.1415926 +! REAL , PARAMETER :: AngleStep = PI/30. + REAL, PARAMETER :: DEFDIST = 5.0 +! + REAL :: ViewAngle = 0.0 + REAL :: SHIFT=0.0 + REAL :: SHIFTV=0.0 + REAL :: ROTH=0.0 + REAL :: ROTV=0.0 + REAL :: ROT=0.0 + REAL :: VSCALE=1.0 + INTEGER :: ITYPE,K,JRGB + INTEGER :: JHAND1,ITYPIMAGE,ITIME + TYPE(WIN_STYLE) :: WINDOW + TYPE(WIN_MESSAGE) :: MESSAGE + LOGICAL :: CHANGED,ONEC + CHARACTER(LEN=65) :: STBAR1 + CHARACTER(LEN=260) :: FILENAME = 'objects.w3d' +! Main Message loop, keep asking for and processing +! messages until the user selects the Exit option. +! + ONEC=.TRUE. + DO + CALL WMessage(ITYPE,MESSAGE) + SELECT CASE (ITYPE) + CASE (KeyDown) + IF (MESSAGE%VALUE1==KeyEscape) EXIT +! +! Window exposed - re-paint window from bitmap +! + CASE (Expose) + CALL WBitmapDestroy(JHAND1) + CALL WBitmapCreate(JHAND1,WInfoWindow(WindowWidth), & + WInfoWindow(WindowHeight)) + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) + CASE (Resize) ! Window resized + CALL WBitmapDestroy(JHAND1) + CALL WBitmapCreate(JHAND1,WInfoWindow(WindowWidth), & + WInfoWindow(WindowHeight)) + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) +! +! Close window request - exit program +! + CASE (MenuSelect) ! Menu item selected + SELECT CASE (MESSAGE%VALUE1) + CASE (ID_SAV3D) +! +! Save data +! + CALL WSelectFile(FILTERSTR='Winteracter 3D model files|*.w3d|', & + IFLAGS =SaveDialog+PromptOn+AppendExt, & + FILEDIR =FILENAME, & + TITLE ='Save 3D model file') + IF (WInfoDialog(ExitButtonCommon)==CommonOK) THEN + CALL W3dSave(FILENAME) + ENDIF +! + CASE (ID_CLOSE) + RETURN + CASE (ID_OPENNEW) + ITYPIMAGE=-1 + RETURN + CASE (ID_SAVEVIEW) + ROTSV=ROT + ROTHSV=ROTH + ROTVSV=ROTV + DISTSV=DIST + VSCALESV=VSCALE + IROTSV=1 + CASE (ID_WIRE) + ITYPIMAGE=0 + CALL ShowModel(JHAND1,ITYPIMAGE) + CASE (ID_HIDDEN) + ITYPIMAGE=1 + CALL ShowModel(JHAND1,ITYPIMAGE) + CASE (ID_UNLIT) + ITYPIMAGE=2 + CALL ShowModel(JHAND1,ITYPIMAGE) + CASE (ID_FLAT) + ITYPIMAGE=3 + CALL ShowModel(JHAND1,ITYPIMAGE) + CASE (ID_GOURAUD) + ITYPIMAGE=4 + CALL ShowModel(JHAND1,ITYPIMAGE) + CASE (ID_MULTCOL) + IF(ONEC) THEN + CALL W3dMaterial(9,WRGB(254,254,255)) + CALL W3dMaterial(8,WRGB(230,254,255)) + CALL W3dMaterial(7,WRGB(180,254,255)) + CALL W3dMaterial(6,WRGB(130,254,255)) + CALL W3dMaterial(5,WRGB(080,254,255)) + CALL W3dMaterial(4,WRGB(030,254,255)) + CALL W3dMaterial(3,WRGB(001,220,220)) + CALL W3dMaterial(2,WRGB(001,180,180)) + CALL W3dMaterial(1,WRGB(001,120,120)) + CALL V3Materials(JHAND1,ITYPIMAGE,VIEWANGLE) + CALL WindowSelect(JHAND1) + CALL ShowModel(JHAND1,ITYPIMAGE) + ENDIF + ONEC=.FALSE. + CASE (ID_ONECOL) + DO K=1,9 + CALL W3dMaterial(K,WRGB(255,255,100)) + ENDDO + CALL WSelectColour(JRGB,'Colour ') + IF (WInfoDialog(ExitButtonCommon)==CommonOK) THEN + DO K=1,9 + CALL W3dMaterial(K,JRGB) + ENDDO + CHANGED = .TRUE. + ENDIF + IF(CHANGED) CALL ShowModel(JHAND1,ITYPIMAGE) + ONEC=.TRUE. + CASE (ID_ZOOMIN) + DIST=DIST-DISTSTEP + WRITE(STBAR1,'(F13.3)') DIST + CALL WindowOutStatusBar(4,STBAR1) + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) +! + CASE (ID_ZOOMOUT) + DIST=DIST+DISTSTEP + WRITE(STBAR1,'(F13.3)') DIST + CALL WindowOutStatusBar(4,STBAR1) + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) + CASE (ID_FZOOM) + DIST=DIST-DISTSTEP*5. + WRITE(STBAR1,'(F13.3)') DIST + CALL WindowOutStatusBar(4,STBAR1) + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) +! + CASE (ID_PLEFT) + SHIFT=SHIFT+0.5 + EYE(1,4) = XMIN + XLEN/2.0+SHIFT + EYE(2,4) = YMIN + YLEN/2.0 + EYE(3,4) = ZMIN + ZLEN/2.0+SHIFTV + WRITE(STBAR1,'(5F13.3)') ROTH,ROTV,ROT,SHIFT,SHIFTV + CALL WindowOutStatusBar(2,STBAR1) + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) + CASE (ID_PRIGHT) + SHIFT=SHIFT-0.5 + EYE(1,4) = XMIN + XLEN/2.0+SHIFT + EYE(2,4) = YMIN + YLEN/2.0 + EYE(3,4) = ZMIN + ZLEN/2.0+SHIFTV + WRITE(STBAR1,'(5F13.3)') ROTH,ROTV,ROT,SHIFT,SHIFTV + CALL WindowOutStatusBar(2,STBAR1) + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) + CASE (ID_UPAR) + SHIFTV=SHIFTV+0.5 + EYE(1,4) = XMIN + XLEN/2.0+SHIFT + EYE(2,4) = YMIN + YLEN/2.0 + EYE(3,4) = ZMIN + ZLEN/2.0+SHIFTV + WRITE(STBAR1,'(5F13.3)') ROTH,ROTV,ROT,SHIFT,SHIFTV + CALL WindowOutStatusBar(2,STBAR1) + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) + CASE (ID_DWNAR) + SHIFTV=SHIFTV-0.5 + EYE(1,4) = XMIN + XLEN/2.0+SHIFT + EYE(2,4) = YMIN + YLEN/2.0 + EYE(3,4) = ZMIN + ZLEN/2.0+SHIFTV + WRITE(STBAR1,'(5F13.3)') ROTH,ROTV,ROT,SHIFT,SHIFTV + CALL WindowOutStatusBar(2,STBAR1) + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) + CASE (ID_ROTATAC) + ROT=ROT-5. + CALL W3dRotate(0.,1) + CALL W3dRotate(0.,2) + CALL W3dRotate(-5.,3) + !ROT=ROT+0.087266 + !EYE(1,4) = (XMIN + XLEN/2.0+SHIFT)*COS(ROT)+(YMIN + YLEN/2.0)*SIN(ROT) + !EYE(3,4) = ZMIN + ZLEN/2.0 + !EYE(2,4) =-(XMIN + XLEN/2.0+SHIFT)*SIN(ROT)+(YMIN + YLEN/2.0)*COS(ROT) + !CALL ViewPos(ViewAngle) + !CALL ShowModel(JHAND1,ITYPIMAGE) + + CALL W3dGetMatrix(EYE) + WRITE(STBAR1,'(5F13.3)') ROTH,ROTV,ROT,SHIFT,SHIFTV + CALL WindowOutStatusBar(2,STBAR1) + EYE(1,4) = XMIN + XLEN/2.0+SHIFT + EYE(2,4) = YMIN + YLEN/2.0 + EYE(3,4) = ZMIN + ZLEN/2.0+SHIFTV + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) + CASE (ID_ROTATC) + ROT=ROT+5. + CALL W3dRotate(0.,1) + CALL W3dRotate(0.,2) + CALL W3dRotate(5.,3) + !ROT=ROT+0.087266 + !EYE(1,4) = (XMIN + XLEN/2.0+SHIFT)*COS(ROT)+(YMIN + YLEN/2.0)*SIN(ROT) + !EYE(3,4) = ZMIN + ZLEN/2.0 + !EYE(2,4) =-(XMIN + XLEN/2.0+SHIFT)*SIN(ROT)+(YMIN + YLEN/2.0)*COS(ROT) + !CALL ViewPos(ViewAngle) + !CALL ShowModel(JHAND1,ITYPIMAGE) + + CALL W3dGetMatrix(EYE) + WRITE(STBAR1,'(5F13.3)') ROTH,ROTV,ROT,SHIFT,SHIFTV + CALL WindowOutStatusBar(2,STBAR1) + EYE(1,4) = XMIN + XLEN/2.0+SHIFT + EYE(2,4) = YMIN + YLEN/2.0 + EYE(3,4) = ZMIN + ZLEN/2.0+SHIFTV + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) +!! CASE (ID_VSCALEV) +! CALL GETVSCAL(VSCALESV) +!! CALL W3dScale(1.0,VSCALESV,1.0) +! CALL W3dGetMatrix(EYE) +! EYE(1,4) = XMIN + XLEN/2.0+SHIFT +! EYE(2,4) = YMIN + YLEN/2.0 +! EYE(3,4) = ZMIN + ZLEN/2.0+SHIFTV +! CALL ViewPos(ViewAngle) +! CALL ShowModel(JHAND1,ITYPIMAGE) + + CASE (ID_RSET) + DIST = DEFDIST*MAX(XLEN,YLEN,ZLEN) + WRITE(STBAR1,'(F13.3)') DIST + CALL WindowOutStatusBar(4,STBAR1) + SHIFT=0. + SHIFTV=0. + VIEWANGLE=0. + CALL W3dRotate(-ROTV,1) + CALL W3dRotate(-ROTH,2) + CALL W3dRotate(-ROT,3) + CALL W3dGetMatrix(EYE) + EYE(1,4) = XMIN + XLEN/2.0+SHIFT + EYE(2,4) = YMIN + YLEN/2.0 + EYE(3,4) = ZMIN + ZLEN/2.0+SHIFTV + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) + ROTH=0. + ROTV=0. + ROT=0. + WRITE(STBAR1,'(5F13.3)') ROTH,ROTV,ROT,SHIFT,SHIFTV + CALL WindowOutStatusBar(2,STBAR1) + CASE(ID_TOP) + CALL W3dRotate(-ROTV-45.,1) + CALL W3dGetMatrix(EYE) + EYE(1,4) = XMIN + XLEN/2.0+SHIFT + EYE(2,4) = YMIN + YLEN/2.0 + EYE(3,4) = ZMIN + ZLEN/2.0+SHIFTV + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) + ROTV=-45. + WRITE(STBAR1,'(5F13.3)') ROTH,ROTV,ROT,SHIFT,SHIFTV + CALL WindowOutStatusBar(2,STBAR1) + CASE(ID_SIDE) + CALL W3dRotate(-ROTV+45.,1) + CALL W3dGetMatrix(EYE) + EYE(1,4) = XMIN + XLEN/2.0+SHIFT + EYE(2,4) = YMIN + YLEN/2.0 + EYE(3,4) = ZMIN + ZLEN/2.0+SHIFTV + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) + ROTV= 45. + WRITE(STBAR1,'(5F13.3)') ROTH,ROTV,ROT,SHIFT,SHIFTV + CALL WindowOutStatusBar(2,STBAR1) + END SELECT + CASE (CloseRequest) + RETURN +! +! Mouse button pressed. Action depends on button: +! + CASE (MouseButDown) + SELECT CASE (MESSAGE%VALUE1) +! Left button. Start rotation. +! + CASE (LeftButton) + ROTH=ROTH+5. + CALL W3dRotate(0.,1) + CALL W3dRotate(5.,2) + CALL W3dRotate(0.,3) + CALL W3dGetMatrix(EYE) + WRITE(STBAR1,'(5F13.3)') ROTH,ROTV,ROT,SHIFT,SHIFTV + CALL WindowOutStatusBar(2,STBAR1) + EYE(1,4) = XMIN + XLEN/2.0+SHIFT + EYE(2,4) = YMIN + YLEN/2.0 + EYE(3,4) = ZMIN + ZLEN/2.0+SHIFTV + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) +! right button. Start rotation. +! + CASE (RightButton) + ROTH=ROTH-5. + CALL W3dRotate(0.,1) + CALL W3dRotate(-5.,2) + CALL W3dRotate(0.,3) + CALL W3dGetMatrix(EYE) + WRITE(STBAR1,'(5F13.3)') ROTH,ROTV,ROT,SHIFT,SHIFTV + CALL WindowOutStatusBar(2,STBAR1) + EYE(1,4) = XMIN + XLEN/2.0+SHIFT + EYE(2,4) = YMIN + YLEN/2.0 + EYE(3,4) = ZMIN + ZLEN/2.0+SHIFTV + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) + CASE (UpWheel) + ROTV=ROTV+5. + CALL W3dRotate(5.,1) + CALL W3dRotate(0.,2) + CALL W3dRotate(0.,3) + CALL W3dGetMatrix(EYE) + WRITE(STBAR1,'(5F13.3)') ROTH,ROTV,ROT,SHIFT,SHIFTV + CALL WindowOutStatusBar(2,STBAR1) + EYE(1,4) = XMIN + XLEN/2.0+SHIFT + EYE(2,4) = YMIN + YLEN/2.0 + EYE(3,4) = ZMIN + ZLEN/2.0+SHIFTV + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) + + CASE (DownWheel) + ROTV=ROTV-5. + CALL W3dRotate(-5.,1) + CALL W3dRotate(0.,2) + CALL W3dRotate(0.,3) + CALL W3dGetMatrix(EYE) + WRITE(STBAR1,'(5F13.3)') ROTH,ROTV,ROT,SHIFT,SHIFTV + CALL WindowOutStatusBar(2,STBAR1) + EYE(1,4) = XMIN + XLEN/2.0+SHIFT + EYE(2,4) = YMIN + YLEN/2.0 + EYE(3,4) = ZMIN + ZLEN/2.0+SHIFTV + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) + ENDSELECT + END SELECT + END DO + RETURN + END + + SUBROUTINE V3Materials(JHAND1,ITYPIMAGE,VIEWANGLE) +! +! Edit materials +! + USE WINTERACTER + USE BLKMAT + INCLUDE 'd.inc' + TYPE(WIN_STYLE) :: WINDOW + TYPE(WIN_MESSAGE) :: MESSAGE + CHARACTER(LEN=10) :: CMATNUM +! +! INTEGER, INTENT(IN) :: JHAND1,ITYPIMAGE ! Memory bitmap handle +! REAL, INTENT(IN) :: VIEWANGLE + INTEGER JHAND1,ITYPIMAGE ! Memory bitmap handle + REAL VIEWANGLE + INTEGER NMAT,MAXMAT,JMAT,IMAT,JRGB,I1,I2,IG,IR,IB,J2,JC1,JR1,ISHINE,IGLOSS,IC2,IR2,IR1,IC1 + LOGICAL CHANGED +! + CALL WMessageEnable(FieldChanged,Enabled) + + CALL WDialogLoad(IDD_MATERIALS) +! +! Operate on a copy of the material list, +! so model remains intact if user cancels +! + NMAT = WInfo3dInteger(M3dMaterials) + ALLOCATE(IMATN(NMAT)) + ALLOCATE(IRGB(NMAT)) + ALLOCATE(SHINE(NMAT)) + ALLOCATE(GLOSS(NMAT)) + MAXMAT = WInfo3dInteger(M3dMaxMaterials) + CALL WGridRows(IDF_GRID1,NMAT) +! +! Retrieve material list and set background colours of "Material" column to match +! + JMAT = 0 + DO IMAT = 1,MAXMAT + CALL W3dMaterialN(IMAT) + JRGB = WInfo3dInteger(M3dRGB) + IF (JRGB/=-1) THEN + JMAT = JMAT + 1 + IMATN(JMAT) = IMAT + IRGB(JMAT) = JRGB + SHINE(JMAT) = WInfo3dReal(M3dShine) + GLOSS(JMAT) = WInfo3dReal(M3dGloss) + CALL WGridColourCell(IDF_GRID1,1,JMAT,RGBBACK=JRGB) + END IF + END DO +! +! IMAT = Current material +! + IMAT = 1 +! +! Update "Current Material" group box +! + CALL V3ShowMaterial(IMAT) +! + CALL V3DialogShow() +! +! Move focus to "Modify" checkbox column +! (Note: Must do this AFTER displaying dialog. +! Linux version crashes if set before dialog is visible.) +! + CALL WGridSetCell(IDF_GRID1,2,IMAT) +! + DO + CALL WMessage(ITYPE,MESSAGE) + SELECT CASE (ITYPE) +! +! Button press +! + CASE (PushButton) + SELECT CASE (MESSAGE%VALUE1) + CASE (IDOK) + CALL WDialogHide() + DO JMAT = 1,NMAT + CALL W3dMaterial(IMATN(JMAT),IRGB(JMAT),SHINE(JMAT),GLOSS(JMAT)) + END DO +! CALL V3Display(.TRUE.) + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) + EXIT + CASE (IDCANCEL) + EXIT + CASE (IDF_APPLY) + DO JMAT = 1,NMAT + CALL W3dMaterial(IMATN(JMAT),IRGB(JMAT),SHINE(JMAT),GLOSS(JMAT)) + END DO +! CALL V3Display(.TRUE.) + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) + + CHANGED = .TRUE. + CALL WDialogFieldState(IDF_APPLY,Disabled) + CASE (IDF_COLOUR) + JRGB = IRGB(IMAT) + WRITE(CMATNUM,'(I10)') IMAT + CALL ILocateString(CMATNUM,I1,I2) + CALL WSelectColour(JRGB,'Material '//CMATNUM(I1:I2)) + IF (WInfoDialog(ExitButtonCommon)==CommonOK) THEN + IRGB(IMAT) = JRGB + CALL V3ShowMaterial(IMAT) + CHANGED = .TRUE. + CALL WDialogFieldState(IDF_APPLY,Enabled) + END IF +! CASE (IDHELP) +! CALL V3Help(5) + END SELECT +! +! Change material ? +! + CASE (FieldChanged) + IF (MESSAGE%VALUE2==IDF_GRID1) THEN + CALL WGridPos(MESSAGE%Y,IC2,IR2) + IF (IC2==1) THEN + CALL WGridSetCell(IDF_GRID1,2,IR2) + IF (IMAT==IR2) THEN + CALL WGridPutCellCheckbox(IDF_GRID1,2,IMAT,Enabled) + ELSE + CALL WGridPutCellCheckbox(IDF_GRID1,2,IMAT,Disabled) + IMAT = IR2 + CALL WGridPutCellCheckbox(IDF_GRID1,2,IMAT,Enabled) + CALL V3ShowMaterial(IMAT) + END IF + ELSE IF (MESSAGE%VALUE1==IDF_GRID1) THEN + CALL WGridPos(MESSAGE%X,IC1,IR1) + IF (IC1==2.AND.IC2==2.AND.IR1==IR2) THEN + IF (IMAT==IR2) THEN + CALL WGridPutCellCheckbox(IDF_GRID1,2,IMAT,Enabled) + ELSE + CALL WGridPutCellCheckbox(IDF_GRID1,2,IMAT,Disabled) + IMAT = IR2 + CALL V3ShowMaterial(IMAT) + END IF + END IF + END IF + ELSE IF (MESSAGE%VALUE1==IDF_SHINE.AND. & + MESSAGE%VALUE2==IDF_SHINE) THEN + CALL WDialogGetTrackbar(IDF_SHINE,ISHINE) + SHINE(IMAT) = ISHINE/100. + CALL WDialogPutReal(IDF_SHINE2,SHINE(IMAT),'(F4.2)') + CHANGED = .TRUE. + CALL WDialogFieldState(IDF_APPLY,Enabled) + ELSE IF (MESSAGE%VALUE1==IDF_GLOSS.AND. & + MESSAGE%VALUE2==IDF_GLOSS) THEN + CALL WDialogGetTrackbar(IDF_GLOSS,IGLOSS) + GLOSS(IMAT) = IGLOSS/100. + CALL WDialogPutReal(IDF_GLOSS2,GLOSS(IMAT),'(F4.2)') + CHANGED = .TRUE. + CALL WDialogFieldState(IDF_APPLY,Enabled) + END IF +! +! Maintain display +! + CASE (Expose) + CALL ViewPos(ViewAngle) + CALL ShowModel(JHAND1,ITYPIMAGE) +! CALL V3Display(.TRUE.) + END SELECT + END DO +! + CALL WDialogUnload() + DEALLOCATE(IMATN) + DEALLOCATE(IRGB) + DEALLOCATE(SHINE) + DEALLOCATE(GLOSS) + RETURN + END SUBROUTINE V3Materials + +! +!****************************************************************************** +! + SUBROUTINE V3ShowMaterial(IMAT) + + USE WINTERACTER +! USE RESID + USE BLKMAT + INCLUDE 'd.inc' +! + INTEGER, INTENT(IN) :: IMAT + INTEGER ISHINE,IGLOSS,IR,IG,IB +! + CALL WGridPutCellCheckbox(IDF_GRID1,2,IMAT,Enabled) + CALL WGridColourCell(IDF_GRID1,1,IMAT,RGBBACK=IRGB(IMAT)) + CALL WRGBsplit(IRGB(IMAT),IR,IG,IB) + CALL WDialogPutInteger(IDF_RED ,IR) + CALL WDialogPutInteger(IDF_GREEN,IG) + CALL WDialogPutInteger(IDF_BLUE ,IB) + CALL WDialogPutReal(IDF_SHINE2,SHINE(IMAT),'(F4.2)') + CALL WDialogPutReal(IDF_GLOSS2,GLOSS(IMAT),'(F4.2)') + ISHINE = INT(SHINE(IMAT)*100.) + CALL WDialogPutTrackbar(IDF_SHINE,ISHINE) + IGLOSS = INT(GLOSS(IMAT)*100.) + CALL WDialogPutTrackbar(IDF_GLOSS,IGLOSS) + RETURN + END SUBROUTINE V3ShowMaterial + +! +!****************************************************************************** +! + SUBROUTINE V3DialogShow() +! +! Display current dialog at top left corner of model view window +! + USE WINTERACTER + INCLUDE 'd.inc' + INTEGER IXWIN,IYWIN +! CALL WindowSelect(IHVIEWWIN) + IXWIN = WInfoWindow(ClientXPos) + IYWIN = WInfoWindow(ClientYPos) +! CALL WindowSelect(0) + CALL WDialogShow(IXWIN,IYWIN,ITYPE=SemiModeless) + RETURN + END SUBROUTINE V3DialogShow + + SUBROUTINE GETVSCAL(VSCALESV) + USE WINTERACTER + INCLUDE 'd.inc' + call wdialogload(IDD_VSCAL) + ierr=infoerror(1) + + CALL WDialogSelect(IDD_VSCAL) + ierr=infoerror(1) + + CALL WDialogPutReal(IDF_REAL1,VSCALESV) + + CALL WDialogShow(-1,-1,0,Modal) + ierr=infoerror(1) + do + + IF (WInfoDialog(ExitButton) .EQ. IDOK) THEN + + call wdialogGetReal(IDF_REAL1,VSCALESV) + RETURN + else + return + endif + enddo + + RETURN + END + diff --git a/src/D.INC b/src/D.INC index 70b1d42..d57a9ba 100644 --- a/src/D.INC +++ b/src/D.INC @@ -1,4 +1,4 @@ -! Winteracter resource identifiers. Created : 13/Feb/2017 12:04:28 +! Winteracter resource identifiers. Created : 03/Mar/2017 13:04:04 ! ! This file is generated by the Winteracter resource editor. ! It should not be edited manually. It is also not advisable to load this @@ -365,3 +365,41 @@ INTEGER, PARAMETER :: ID_UNDOGEN = 40147 INTEGER, PARAMETER :: IDD_GETFL = 168 INTEGER, PARAMETER :: ID_DDRAW = 40148 + INTEGER, PARAMETER :: ID_3DMODEL = 40149 + INTEGER, PARAMETER :: ID_View = 40033 + INTEGER, PARAMETER :: IDM_MENU1 = 30002 + INTEGER, PARAMETER :: ID_COLR = 40003 + INTEGER, PARAMETER :: ID_CLOSE = 40005 + INTEGER, PARAMETER :: ID_WIRE = 40139 + INTEGER, PARAMETER :: ID_HIDDEN = 40007 + INTEGER, PARAMETER :: ID_UNLIT = 40008 + INTEGER, PARAMETER :: ID_FLAT = 40140 + INTEGER, PARAMETER :: ID_GOURAUD = 40141 + INTEGER, PARAMETER :: ID_ONECOL = 40012 + INTEGER, PARAMETER :: ID_MULTCOL = 40013 + INTEGER, PARAMETER :: ID_TOP = 40014 + INTEGER, PARAMETER :: ID_SIDE = 40015 + INTEGER, PARAMETER :: ID_SAVEVIEW = 40132 + INTEGER, PARAMETER :: ID_SAV3D = 40133 + INTEGER, PARAMETER :: ID_OPENNEW = 40137 + INTEGER, PARAMETER :: ID_ITEM149 = 40138 + INTEGER, PARAMETER :: ID_FZOOM = 40142 + INTEGER, PARAMETER :: IDT_TOOLBAR1 = 30102 + INTEGER, PARAMETER :: ID_ZOOMIN = 20002 + INTEGER, PARAMETER :: ID_ZOOMOUT = 20003 + INTEGER, PARAMETER :: ID_ROTATC = 40107 + INTEGER, PARAMETER :: ID_ROTATAC = 20013 + INTEGER, PARAMETER :: ID_UPAR = 40135 + INTEGER, PARAMETER :: ID_DWNAR = 40136 + INTEGER, PARAMETER :: IDF_GROUP1 = 1016 + INTEGER, PARAMETER :: IDF_APPLY = 1039 + INTEGER, PARAMETER :: IDD_MATERIALS = 150 + INTEGER, PARAMETER :: IDF_COLOUR = 1005 + INTEGER, PARAMETER :: IDF_SHINE = 1087 + INTEGER, PARAMETER :: IDF_GLOSS = 1008 + INTEGER, PARAMETER :: IDF_SHINE2 = 1009 + INTEGER, PARAMETER :: IDF_GLOSS2 = 1010 + INTEGER, PARAMETER :: IDF_RED = 1035 + INTEGER, PARAMETER :: IDF_GREEN = 1036 + INTEGER, PARAMETER :: IDF_BLUE = 1038 + INTEGER, PARAMETER :: IDD_DIALOG002 = 169 diff --git a/src/DUMPBIN.f90 b/src/DUMPBIN.f90 new file mode 100644 index 0000000..71b6f59 --- /dev/null +++ b/src/DUMPBIN.f90 @@ -0,0 +1,84 @@ + SUBROUTINE DUMPBIN(KKK,KENT) + USE BLK1MOD + USE BLKMAP + CHARACTER*11 FNAME + ISLP=0 + IPRT=1 + IPNN=1 + IPEN=1 + IPO=1 + IRO=1 + IPP=0 + IRFN=0 + IGEN=0 + NXZL=0 + NITST=1 + ISCTXT=0 + IFILL=0 + IALTGM=1 + NLAYD=0 + HORIZ=10. + VERT=8. + XSALE=0. + YSALE=0. + XFACT=0. + YFACT=0. + AR=0. + ANG=0. + xadded=0. + yadded=0. + ntempin=0 + + WRITE(FNAME,6001) KKK +6001 FORMAT('DMP-',I3.3,'.RST') + OPEN(240,FILE=FNAME,STATUS='UNKNOWN',FORM='UNFORMATTED') + IF(KENT .EQ. 0) THEN + DO J=1,NELTS + DO K=1,3 + NOPSTO(J,2*K-1,1)=NOPEL(J,K) + NOPSTO(J,2*K,1)=0 + ENDDO + NOPSTO(J,7,1)=0 + NOPSTO(J,8,1)=0 + IMATSTO(J,1)=1 + THTASTO(J,1)=0. + ENDDO + ELSE + DO J=1,NE + DO K=1,6 + NOPSTO(J,K,1)=NOP(J,K) + ENDDO + NOPSTO(J,7,1)=0 + NOPSTO(J,8,1)=0 + if(nop(j,1) .gt. 0) then + IMATSTO(J,1)=1 + else + IMATSTO(J,1)=0 + endif + THTASTO(J,1)=0. + ENDDO + NELTS=NE + ENDIF + NPSTO(1)=NP + NESTO(1)=NELTS + NLST=0 + NENTRY=0 + NLAYD=0 + NCLM=0 + WRITE(240) TITLE,NP,NELTS + WRITE(240) ISLP,IPRT,IPNN,IPEN,IPO,IRO,IPP,IRFN & + & ,IGEN,NXZL,NITST,ISCTXT,IFILL,IALTGM,NLAYD,xadded,yadded,ntempin + WRITE(240) HORIZ,VERT,XSALE,YSALE,XFACT,YFACT,AR,ANG + WRITE(240) ((NOPSTO(J,K,1),K=1,8),IMATSTO(J,1),THTASTO(J,1),J=1,NELTS) + WRITE(240) & + & (XUSR(J),YUSR(J),WD(J),WIDTH(J),SS1(J),SS2(J),WIDS(J), & + & WIDBS(J),SSO(J),BS1(J),J=1,NP) +!IPK MAR02 add BS1 +!IPK JUL98 + (XUSR(J),YUSR(J),WD(J),WIDTH(J),SS1(J),SS2(J),WIDS(J) + WRITE(240) NLST +!IPK JAN01 + WRITE(240) NENTRY,NLAYD,NCLM + CLOSE(240) + RETURN + END + diff --git a/src/EVENT.F90 b/src/EVENT.F90 index 2eda33a..e1897f3 100644 --- a/src/EVENT.F90 +++ b/src/EVENT.F90 @@ -1362,7 +1362,7 @@ CALL CHKAREA GO TO 101 CASE (ID_SMOOTHMAP) - CALL SMOOTHMP +!! CALL SMOOTHMP GO TO 101 CASE (ID_DRAG) @@ -1736,7 +1736,9 @@ CASE (ID_XOUTLIN) CALL OUTLINES(0) GO TO 100 - + CASE (ID_3DMODEL) + CALL BuildModel(np,ne) + GO TO 100 END SELECT ! diff --git a/src/IDM.rc b/src/IDM.rc new file mode 100644 index 0000000..938bc43 --- /dev/null +++ b/src/IDM.rc @@ -0,0 +1,121 @@ +/////////////////////////////////////////////////// +// +// THIS FILE SHOULD NOT BE EDITED USING A TEXT +// EDITOR OR 3RD PARTY RESOURCE EDITOR, EXCEPT +// WHEN SPECIFICALLY INSTRUCTED BY I.S.S. +// +/////////////////////////////////////////////////// +// +// Winteracter exported resources. +// +// Exported : 01/Mar/2017 10:58:19 +// +/////////////////////////////////////////////////// +// +// To use this file it should be imported into +// your main resource script +// +/////////////////////////////////////////////////// + +/////////////////////////////////////////////////// +// +// Parameter Definitions +// +#define ID_FILE 40001 +#define ID_View 40033 +#define IDM_MENU1 30002 +#define ID_RSET 40131 +#define ID_COLR 40003 +#define ID_CLOSE 40005 +#define ID_WIRE 40139 +#define ID_HIDDEN 40007 +#define ID_UNLIT 40008 +#define ID_FLAT 40140 +#define ID_GOURAUD 40141 +#define ID_ITEM11 40011 +#define ID_ONECOL 40012 +#define ID_MULTCOL 40013 +#define ID_TOP 40014 +#define ID_SIDE 40015 +#define ID_SAVEVIEW 40132 +#define ID_SAV3D 40133 +#define ID_OPENNEW 40137 +#define ID_ITEM149 40138 +#define ID_FZOOM 40142 + +/////////////////////////////////////////////////// +// +// Menus +// +IDM_MENU1 MENU +BEGIN + POPUP "FILE" + BEGIN + MENUITEM "Save as a W3D file\aAlt+S", ID_SAV3D + MENUITEM "Close this Window\aAlt+X", ID_CLOSE + MENUITEM "Open a New W3D File\aCtrl+N", ID_OPENNEW + END + POPUP "TYPE" + BEGIN + MENUITEM "&Wireframe\aF2", ID_WIRE + MENUITEM "&Hidden lines removed\aF3", ID_HIDDEN + MENUITEM "U&nlit\aF4", ID_UNLIT + MENUITEM "&Flat shading\aF5", ID_FLAT + MENUITEM "&Gouraud shading\aF6", ID_GOURAUD + END + POPUP "VIEW" + BEGIN + MENUITEM "Fast Zoom\aF7", ID_FZOOM + MENUITEM "Top View\aF8", ID_TOP + MENUITEM "Side View\aF9", ID_SIDE + MENUITEM "Reset View", ID_RSET + END + POPUP "COLOUR" + BEGIN + MENUITEM "Single Colour", ID_ONECOL + MENUITEM "Multi-Colour", ID_MULTCOL + END + POPUP "SAVE" + BEGIN + MENUITEM "Save View", ID_SAVEVIEW + END +END + +IDM_MENU1 RCDATA +BEGIN +ID_FILE,1,0, +ID_ITEM149,2,0, +ID_View,3,0, +ID_COLR,4,0, +ID_ITEM11,5,0, +0 +END + +IDM_MENU1 ISSMENUSTRING +BEGIN +ID_UNLIT,"Unlit\0", +ID_HIDDEN,"Wireframe model, hidden lines removed\0", +ID_FLAT,"Solid model, with lighting and constant shading\0", +ID_GOURAUD,"Solid model, with lighting and Gouraud shading\0", +0 +END + +/////////////////////////////////////////////////// +// +// Accelerators +// +IDM_MENU1 ACCELERATORS +BEGIN + 83 , ID_SAV3D ,NOINVERT,VIRTKEY,ALT + 88 , ID_CLOSE ,NOINVERT,VIRTKEY,ALT + 78 , ID_OPENNEW ,NOINVERT,VIRTKEY,CONTROL + VK_F2 , ID_WIRE ,NOINVERT,VIRTKEY + VK_F3 , ID_HIDDEN ,NOINVERT,VIRTKEY + VK_F4 , ID_UNLIT ,NOINVERT,VIRTKEY + VK_F5 , ID_FLAT ,NOINVERT,VIRTKEY + VK_F6 , ID_GOURAUD ,NOINVERT,VIRTKEY + VK_F7 , ID_FZOOM ,NOINVERT,VIRTKEY + VK_F8 , ID_TOP ,NOINVERT,VIRTKEY + VK_F9 , ID_SIDE ,NOINVERT,VIRTKEY +END + diff --git a/src/IDT.rc b/src/IDT.rc new file mode 100644 index 0000000..35c3545 --- /dev/null +++ b/src/IDT.rc @@ -0,0 +1,74 @@ +/////////////////////////////////////////////////// +// +// THIS FILE SHOULD NOT BE EDITED USING A TEXT +// EDITOR OR 3RD PARTY RESOURCE EDITOR, EXCEPT +// WHEN SPECIFICALLY INSTRUCTED BY I.S.S. +// +/////////////////////////////////////////////////// +// +// Winteracter exported resources. +// +// Exported : 01/Mar/2017 10:59:52 +// +/////////////////////////////////////////////////// +// +// To use this file it should be imported into +// your main resource script +// +/////////////////////////////////////////////////// + +/////////////////////////////////////////////////// +// +// Parameter Definitions +// +#define IDT_TOOLBAR1 30102 +#define ID_PRIGHT 40101 +#define ID_ZOOMIN 40102 +#define ID_ZOOMOUT 40103 +#define ID_PLEFT 40105 +#define ID_ROTATC 40107 +#define ID_ROTATAC 20013 +#define ID_UPAR 40135 +#define ID_DWNAR 40136 + +/////////////////////////////////////////////////// +// +// Bitmaps +// +IDT_TOOLBAR1 BITMAP DISCARDABLE "tbar1.bmp" + +/////////////////////////////////////////////////// +// +// Strings +// +STRINGTABLE DISCARDABLE +BEGIN + ID_ZOOMOUT "Zoom Out" + ID_ZOOMIN "Zoom In" + ID_PLEFT "Pan Left" + ID_PRIGHT "Pan Right" + ID_ROTATC "Rotate Clockwise" + ID_ROTATAC "Rotate Anti-Clockwise" + ID_UPAR "Pan Upwards" + ID_DWNAR "Pan Down" +END + +/////////////////////////////////////////////////// +// +// Toolbar Data +// +IDT_TOOLBAR1 RCDATA +BEGIN + 16, 16, + ID_ZOOMIN, + ID_ZOOMOUT, + ID_PLEFT, + ID_PRIGHT, + ID_ROTATC, + ID_ROTATAC, + ID_UPAR, + ID_DWNAR, +0,0 +END + + diff --git a/src/MAT.rc b/src/MAT.rc new file mode 100644 index 0000000..e438020 --- /dev/null +++ b/src/MAT.rc @@ -0,0 +1,102 @@ +/////////////////////////////////////////////////// +// +// THIS FILE SHOULD NOT BE EDITED USING A TEXT +// EDITOR OR 3RD PARTY RESOURCE EDITOR, EXCEPT +// WHEN SPECIFICALLY INSTRUCTED BY I.S.S. +// +/////////////////////////////////////////////////// +// +// Winteracter exported resources. +// +// Exported : 25/Feb/2017 14:50:26 +// +/////////////////////////////////////////////////// +// +// To use this file it should be imported into +// your main resource script +// +/////////////////////////////////////////////////// + +/////////////////////////////////////////////////// +// +// Parameter Definitions +// +#define IDF_LABEL1 1001 +#define IDF_LABEL2 1002 +#define IDF_GROUP1 1016 +#define IDF_LABEL9 1017 +#define IDF_LABEL11 1019 +#define IDD_TEMPLATE001 107 +#define IDF_GRID1 1032 +#define ISS1 1033 +#define IDF_APPLY 1039 +#define IDD_MATERIALS 109 +#define IDF_COLOUR 1005 +#define ISS2 1034 +#define IDF_SHINE 1007 +#define IDF_GLOSS 1008 +#define IDF_SHINE2 1009 +#define IDF_GLOSS2 1010 +#define IDF_RED 1035 +#define IDF_GREEN 1036 +#define IDF_BLUE 1038 +#define IDF_LABEL8 1040 + +/////////////////////////////////////////////////// +// +// Dialogs +// +IDD_MATERIALS DIALOG 0, 0, 270, 96 +STYLE WS_POPUP | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_3DLOOK | DS_MODALFRAME +FONT 8, "MS Sans Serif" +CAPTION "Materials" +BEGIN + CONTROL "&Shine",IDF_LABEL1,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_LEFT, 115, 34, 20, 8 + CONTROL "0.00",IDF_SHINE2,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER | SS_SUNKEN, 243, 32, 18, 14 + CONTROL "&Gloss",IDF_LABEL2,"STATIC",WS_CHILD | WS_VISIBLE | SS_LEFT, 115, 52, 20, 8 + CONTROL "0.00",IDF_GLOSS2,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER | SS_SUNKEN, 243, 50, 18, 14 + CONTROL "Current Material",IDF_GROUP1,"BUTTON",WS_CHILD | WS_VISIBLE | WS_GROUP | BS_GROUPBOX | BS_TEXT, 111, 2, 155, 65 + CONTROL "",IDF_GRID1,"ISSGRID",WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_GROUP | WS_TABSTOP | GS_READONLYCOLOUR | GS_DEFROWLABELS | GS_COLUMNLABELS, 9, 5, 97, 86 + CONTROL "&Colour",IDF_COLOUR,"BUTTON",WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON | BS_TEXT, 115, 14, 32, 14 + CONTROL "0",IDF_SHINE,"MSCTLS_TRACKBAR32",WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP | TBS_AUTOTICKS, 139, 32, 100, 12 + CONTROL "0",IDF_GLOSS,"MSCTLS_TRACKBAR32",WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP | TBS_AUTOTICKS, 139, 50, 100, 12 + CONTROL "&Apply",IDF_APPLY,"BUTTON",WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_GROUP | WS_TABSTOP | BS_PUSHBUTTON | BS_TEXT, 113, 76, 34, 14 + CONTROL "OK",IDOK,"BUTTON",WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_TEXT, 153, 76, 34, 14 + CONTROL "Cancel",IDCANCEL,"BUTTON",WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_TEXT, 193, 76, 34, 14 + CONTROL "",IDF_RED,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER | SS_SUNKEN, 162, 16, 20, 10 + CONTROL "",IDF_GREEN,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER | SS_SUNKEN, 200, 16, 20, 10 + CONTROL "",IDF_BLUE,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER | SS_SUNKEN, 240, 16, 20, 10 + CONTROL "R",IDF_LABEL8,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER, 153, 17, 8, 8 + CONTROL "G",IDF_LABEL9,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER, 190, 17, 8, 8 + CONTROL "B",IDF_LABEL11,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER, 229, 17, 8, 8 + CONTROL "Help",IDHELP,"BUTTON",WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_TEXT, 232, 76, 34, 14 +END + +IDD_MATERIALS RCDATA +BEGIN +"[Ranges] \n" +" 1007 0 100 \n" +" 1008 0 100 \n" +"[Trackbars] \n" +" 1007 10 1 10 0 0 \n" +" 1008 10 1 10 0 0 \n" +"[Grids] \n" +" 1032 2 500 107 \n" +,0 +END + +IDD_TEMPLATE001 DIALOG 0, 0, 1000, 16 +STYLE DS_3DLOOK +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "Material",ISS1,"EDIT",WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_LEFT | ES_READONLY, 0, 0, 40, 14 + CONTROL "Modify",ISS2,"BUTTON",WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_AUTOCHECKBOX | BS_TEXT | BS_PUSHLIKE, 0, 0, 40, 14 +END + +IDD_TEMPLATE001 RCDATA +BEGIN +"[Checks] \n" +" 1034 0 \n" +,0 +END + diff --git a/src/NEWRMGN.F90 b/src/NEWRMGN.F90 index 0fabdb2..6f2ccbd 100644 --- a/src/NEWRMGN.F90 +++ b/src/NEWRMGN.F90 @@ -40,9 +40,6 @@ INTEGER ISCRWID,ISCRHGT -! -! Declare window-type and message variables -! TYPE(WIN_STYLE) :: WINDOW TYPE(WIN_MESSAGE) :: MESSAGE TYPE (WIN_FONT) :: FONT diff --git a/src/PLOTR1.F90 b/src/PLOTR1.F90 index 7911c95..d3510c9 100644 --- a/src/PLOTR1.F90 +++ b/src/PLOTR1.F90 @@ -92,8 +92,11 @@ if(IDDSW .EQ. 0) call backc(1) if(ipsw(4) .eq. 1) then + jj=1 + if(nbkfl .gt. 0) jj=16 do j=1,ne - if(ieskp(j) .eq. 0 .and. imz .ne. 2) call fillemC(j,1) + + if(ieskp(j) .eq. 0 .and. imz .ne. 2) call fillemC(j,jj) enddo endif @@ -415,7 +418,11 @@ ! imz=ierc ierc=0 - call rblue + if(NBKFL .eq. 0) then + call rblue + else + call ryellow + endif IF (IMAT(J) .EQ. 0 ) RETURN NCN = NCORN(J) ! @@ -525,6 +532,7 @@ if(ipsw(4) .eq. 1) then if(ncn .eq. 8 .or. imat(j) .lt. 901) then CALL DASHLN(XLIN,YLIN,NLINP,0) +! write(155,'(2i6,24f12.3)') j,ncn,(xlin(k),ylin(k),blvl(k),k=1,ncn) endif endif ! IF(IMAT(J) .LT. 901 .AND. IPSW(4) .EQ. 1) diff --git a/src/RMAGENV83d.rc b/src/RMAGENV83e.rc similarity index 94% rename from src/RMAGENV83d.rc rename to src/RMAGENV83e.rc index 33d9f03..8486c40 100644 --- a/src/RMAGENV83d.rc +++ b/src/RMAGENV83e.rc @@ -8,7 +8,7 @@ // // Winteracter resource script. // -// Modified : 13/Feb/2017 12:04:28 +// Modified : 03/Mar/2017 13:04:04 // /////////////////////////////////////////////////// // @@ -375,6 +375,44 @@ #define ID_UNDOGEN 40147 #define IDD_GETFL 168 #define ID_DDRAW 40148 +#define ID_3DMODEL 40149 +#define ID_View 40033 +#define IDM_MENU1 30002 +#define ID_COLR 40003 +#define ID_CLOSE 40005 +#define ID_WIRE 40139 +#define ID_HIDDEN 40007 +#define ID_UNLIT 40008 +#define ID_FLAT 40140 +#define ID_GOURAUD 40141 +#define ID_ONECOL 40012 +#define ID_MULTCOL 40013 +#define ID_TOP 40014 +#define ID_SIDE 40015 +#define ID_SAVEVIEW 40132 +#define ID_SAV3D 40133 +#define ID_OPENNEW 40137 +#define ID_ITEM149 40138 +#define ID_FZOOM 40142 +#define IDT_TOOLBAR1 30102 +#define ID_ZOOMIN 20002 +#define ID_ZOOMOUT 20003 +#define ID_ROTATC 40107 +#define ID_ROTATAC 20013 +#define ID_UPAR 40135 +#define ID_DWNAR 40136 +#define IDF_GROUP1 1016 +#define IDF_APPLY 1039 +#define IDD_MATERIALS 150 +#define IDF_COLOUR 1005 +#define IDF_SHINE 1087 +#define IDF_GLOSS 1008 +#define IDF_SHINE2 1009 +#define IDF_GLOSS2 1010 +#define IDF_RED 1035 +#define IDF_GREEN 1036 +#define IDF_BLUE 1038 +#define IDD_DIALOG002 169 /////////////////////////////////////////////////// // @@ -2116,6 +2154,60 @@ BEGIN ,0 END +IDD_MATERIALS DIALOG 0, 0, 270, 96 +STYLE WS_POPUP | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_3DLOOK | DS_MODALFRAME +FONT 8, "MS Sans Serif" +CAPTION "Materials" +BEGIN + CONTROL "&Shine",IDF_LABEL1,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_LEFT, 115, 34, 20, 8 + CONTROL "0.00",IDF_SHINE2,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER | SS_SUNKEN, 243, 32, 18, 14 + CONTROL "&Gloss",IDF_LABEL2,"STATIC",WS_CHILD | WS_VISIBLE | SS_LEFT, 115, 52, 20, 8 + CONTROL "0.00",IDF_GLOSS2,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER | SS_SUNKEN, 243, 50, 18, 14 + CONTROL "Current Material",IDF_GROUP1,"BUTTON",WS_CHILD | WS_VISIBLE | WS_GROUP | BS_GROUPBOX | BS_TEXT, 111, 2, 155, 65 + CONTROL "",IDF_GRID1,"ISSGRID",WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_GROUP | WS_TABSTOP | GS_READONLYCOLOUR | GS_DEFROWLABELS | GS_COLUMNLABELS, 9, 5, 97, 86 + CONTROL "&Colour",IDF_COLOUR,"BUTTON",WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON | BS_TEXT, 115, 14, 32, 14 + CONTROL "0",IDF_SHINE,"MSCTLS_TRACKBAR32",WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP | TBS_AUTOTICKS, 139, 32, 100, 12 + CONTROL "0",IDF_GLOSS,"MSCTLS_TRACKBAR32",WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP | TBS_AUTOTICKS, 139, 50, 100, 12 + CONTROL "&Apply",IDF_APPLY,"BUTTON",WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_GROUP | WS_TABSTOP | BS_PUSHBUTTON | BS_TEXT, 113, 76, 34, 14 + CONTROL "OK",IDOK,"BUTTON",WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_TEXT, 153, 76, 34, 14 + CONTROL "Cancel",IDCANCEL,"BUTTON",WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_TEXT, 193, 76, 34, 14 + CONTROL "",IDF_RED,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER | SS_SUNKEN, 162, 16, 20, 10 + CONTROL "",IDF_GREEN,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER | SS_SUNKEN, 200, 16, 20, 10 + CONTROL "",IDF_BLUE,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER | SS_SUNKEN, 240, 16, 20, 10 + CONTROL "R",IDF_LABEL8,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER, 153, 17, 8, 8 + CONTROL "G",IDF_LABEL9,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER, 190, 17, 8, 8 + CONTROL "B",IDF_LABEL11,"STATIC",WS_CHILD | WS_VISIBLE | WS_GROUP | SS_CENTER, 229, 17, 8, 8 + CONTROL "Help",IDHELP,"BUTTON",WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | BS_TEXT, 232, 76, 34, 14 +END + +IDD_MATERIALS RCDATA +BEGIN +"[Ranges] \n" +" 1087 0 100 \n" +" 1008 0 100 \n" +"[Trackbars] \n" +" 1087 10 1 10 0 0 \n" +" 1008 10 1 10 0 0 \n" +"[Grids] \n" +" 1075 2 500 169 \n" +,0 +END + +IDD_DIALOG002 DIALOG 0, 0, 1000, 16 +STYLE DS_3DLOOK +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "Material",ISS1,"EDIT",WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_LEFT | ES_READONLY, 0, 0, 40, 14 + CONTROL "Modify",ISS2,"BUTTON",WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_AUTOCHECKBOX | BS_TEXT | BS_PUSHLIKE, 0, 0, 40, 14 +END + +IDD_DIALOG002 RCDATA +BEGIN +"[Checks] \n" +" 1078 0 \n" +,0 +END + /////////////////////////////////////////////////// // // Menus @@ -2260,6 +2352,7 @@ BEGIN MENUITEM "Rotate 3-D view", ID_VROTATE MENUITEM "Find Node\aCtrl+F", ID_findnode MENUITEM "Find Element\aCtrl+E", ID_findelem + MENUITEM "View Bed Levels in 3-D\aCtrl+3", ID_3DMODEL END POPUP "&Rdraw" BEGIN @@ -2330,6 +2423,59 @@ ID_ITEM126,17,0, 0 END +IDM_MENU1 MENU +BEGIN + POPUP "FILE" + BEGIN + MENUITEM "Save as a W3D file\aAlt+S", ID_SAV3D + MENUITEM "Close this Window\aAlt+X", ID_CLOSE + MENUITEM "Open a New W3D File\aCtrl+N", ID_OPENNEW + END + POPUP "TYPE" + BEGIN + MENUITEM "&Wireframe\aF2", ID_WIRE + MENUITEM "&Hidden lines removed\aF3", ID_HIDDEN + MENUITEM "U&nlit\aF4", ID_UNLIT + MENUITEM "&Flat shading\aF5", ID_FLAT + MENUITEM "&Gouraud shading\aF6", ID_GOURAUD + END + POPUP "VIEW" + BEGIN + MENUITEM "Fast Zoom\aF7", ID_FZOOM + MENUITEM "Top View\aF8", ID_TOP + MENUITEM "Side View\aF9", ID_SIDE + MENUITEM "Reset View", ID_RSET + END + POPUP "COLOUR" + BEGIN + MENUITEM "Single Colour", ID_ONECOL + MENUITEM "Multi-Colour", ID_MULTCOL + END + POPUP "SAVE" + BEGIN + MENUITEM "Save View", ID_SAVEVIEW + END +END + +IDM_MENU1 RCDATA +BEGIN +ID_FILE,1,0, +ID_ITEM149,2,0, +ID_View,3,0, +ID_COLR,4,0, +ID_ITEM11,5,0, +0 +END + +IDM_MENU1 ISSMENUSTRING +BEGIN +ID_UNLIT,"Unlit\0", +ID_HIDDEN,"Wireframe model, hidden lines removed\0", +ID_FLAT,"Solid model, with lighting and constant shading\0", +ID_GOURAUD,"Solid model, with lighting and Gouraud shading\0", +0 +END + /////////////////////////////////////////////////// // // Accelerators @@ -2343,6 +2489,22 @@ BEGIN 90 , ID_ZIN ,NOINVERT,VIRTKEY,CONTROL 70 , ID_findnode ,NOINVERT,VIRTKEY,CONTROL 69 , ID_findelem ,NOINVERT,VIRTKEY,CONTROL + 51 , ID_3DMODEL ,NOINVERT,VIRTKEY,CONTROL +END + +IDM_MENU1 ACCELERATORS +BEGIN + 83 , ID_SAV3D ,NOINVERT,VIRTKEY,ALT + 88 , ID_CLOSE ,NOINVERT,VIRTKEY,ALT + 78 , ID_OPENNEW ,NOINVERT,VIRTKEY,CONTROL + VK_F2 , ID_WIRE ,NOINVERT,VIRTKEY + VK_F3 , ID_HIDDEN ,NOINVERT,VIRTKEY + VK_F4 , ID_UNLIT ,NOINVERT,VIRTKEY + VK_F5 , ID_FLAT ,NOINVERT,VIRTKEY + VK_F6 , ID_GOURAUD ,NOINVERT,VIRTKEY + VK_F7 , ID_FZOOM ,NOINVERT,VIRTKEY + VK_F8 , ID_TOP ,NOINVERT,VIRTKEY + VK_F9 , ID_SIDE ,NOINVERT,VIRTKEY END /////////////////////////////////////////////////// @@ -2353,6 +2515,7 @@ ID_TOOLBAR1 BITMAP DISCARDABLE "zoom.BMP" id_chck BITMAP DISCARDABLE "chck.bmp" id_chk BITMAP DISCARDABLE "chck.bmp" idchk BITMAP DISCARDABLE "chck.bmp" +IDT_TOOLBAR1 BITMAP DISCARDABLE "tbar1.bmp" /////////////////////////////////////////////////// // @@ -2390,6 +2553,14 @@ BEGIN ID_IDRWT "Show Network Display Options" id_chck "Check Network" ID_ROTATE "Rotate 3-D View" + ID_ZOOMOUT "Zoom Out" + ID_ZOOMIN "Zoom In" + ID_PLEFT "Pan Left" + ID_PRIGHT "Pan Right" + ID_ROTATC "Rotate Clockwise" + ID_ROTATAC "Rotate Anti-Clockwise" + ID_UPAR "Pan Upwards" + ID_DWNAR "Pan Down" END /////////////////////////////////////////////////// @@ -2412,6 +2583,20 @@ BEGIN 0,0 END +IDT_TOOLBAR1 RCDATA +BEGIN + 16, 16, + ID_ZOOMIN, + ID_ZOOMOUT, + ID_PLEFT, + ID_PRIGHT, + ID_ROTATC, + ID_ROTATAC, + ID_UPAR, + ID_DWNAR, +0,0 +END + /////////////////////////////////////////////////// // diff --git a/src/RMAGENV83e.res b/src/RMAGENV83e.res new file mode 100644 index 0000000000000000000000000000000000000000..82e9228c2df178e9a878cf863742f1ab9c9f8afd GIT binary patch literal 81396 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 literal 0 HcmV?d00001 diff --git a/src/SHOWEQ.FOR b/src/SHOWEQ.FOR deleted file mode 100644 index 8d7972b..0000000 --- a/src/SHOWEQ.FOR +++ /dev/null @@ -1,8 +0,0 @@ - SUBROUTINE SHOWEQ - USE BLKELTLD - DO I=1,NQHYD - IELEM=NCLINE(I) - CALL FILLEM(IELEM) - ENDDO - RETURN - END diff --git a/src/SYMBL.F90 b/src/SYMBL.F90 index 7ef3282..4278653 100644 --- a/src/SYMBL.F90 +++ b/src/SYMBL.F90 @@ -455,6 +455,13 @@ return end ! ----------------------------------------------------------------------------- + subroutine RDGrey + icv=216 +! 216 + CALL IGrcolourN(ICV) + return + end +! ----------------------------------------------------------------------------- subroutine RBlack @@ -503,6 +510,13 @@ call nwpen(icl) return end +! ----------------------------------------------------------------------------- + subroutine RYellow + icl=10 +! 63 + call nwpen(icl) + return + end ! ----------------------------------------------------------------------------- subroutine RGreen icl=7 diff --git a/src/deln2.f90 b/src/deln2.f90 index baa355f..e5c1c88 100644 --- a/src/deln2.f90 +++ b/src/deln2.f90 @@ -177,7 +177,7 @@ xusrsto(j,1)=xusr(j) yusrsto(j,1)=yusr(j) enddo - call mergemesh1(1) + call mergemesh1(1,0) ! call mergemesh endif CALL ADDMESH(1) diff --git a/src/tbar1.bmp b/src/tbar1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5fdba78039b117cb0eb9202273ee629fe3bc5c56 GIT binary patch literal 3126 zcmbW2KS*Rp9LFahJcn3B;SL^W6K$gHz`?bq7OuI%%5EyHQV1c1l?1lQ5jc2PosdKV zzAcWmS_`WbabO$Y+W4BYIMCJIWmgcgF!{{9eZD`!VKTe(-h6*EZ@!=T&FsFl^_O$P zmzOg_d`D}S`VI9fG0Qb8KYuNRtJSib4c^`L&$ug1adL7ZPA*Qw;O{@g%*>3Kot+hP zb8}*TeqKC({#-0BE{dh4C9$%yBHp}tBi7f~#oF4Mc=hU)*!{_h*RQSkRdj{z8Sz)Q zFS?&Ui(meXu~t+~ji@G*ikKp%h$$Dd*$_=!6W7EwaZTJk77>q#M~H}cM4X#2#0_yn z+z>FtE!v{3@y?2?!e23w;vprh@b+9339{01@u)6HyJ7xLYzT8gq@2W>O7{PXnErhK5DM;?n|$ zhC{=l;m~mSRKcNP&@gBiT>Da0rHpnZB>cA&yLVw6uc-Vsa@rV$1a zOcCA@oe`5nct?2q?eN~j@sIG2@ON7j;UAHk2!;rTh&;G$BP)LOM7VQx+ei)!eg-xJ zhr!Qpt>YjE1`gvmSeV~#9x|{PSPT#bLw^KdF+6A(WC$2o_)?jNJu$Etmk-b4PJ`P8 zVlY@3EDRO~3xkEhA14?L3>F3pgMoo*sEmif!eC*rFfcWhI1CmB3xfr~;%}JD@}Omq zW)6+ka9BUL8>7Xy;&-vRxhZybcEsM^o_P1}oj5%`6(2u-6zAvXB280qd3h!0&jM?7H88yD^_vZeAy?2+F13FRLJ^>uT?RP=^PHmC<#bb@rE+ ze<%;D>QT{EY8JsSwGQ?V%H4{R0s0X@e|2Ny$JJt3MUVSh7hPKS%K*o%r0C0ANnF~@s(%pFbf1kLlihTE>gzhdek%;O9%c)iDl&jm(N(lM zNwF!l^;Z0^x7%r$wzrp8GyA&s_EO5Szmqw@izF^g%dI$hk;^am-#Gh8n9A+!fO#Dj zI=8R;KLE(2flVC8jlDhRM~h|<4B|vS!GHTmhWLl_XxoqWIxI93ZH-v(BmdD>w!fKw zaFLwF-oF)}B`puqdhp-h-_KF}y`&e~{C!QRa=~|@C$8k0;Gp3E+$yJ~fgCla$4j=F zgm0Tka^{C5XGzj@Kfbv0;QxjEFGz1UndJU5^nq}yo#oI0RQ*Sdq3fZ@4kSm7Mv`O) zfqN1+j-Y;$|F#TAqseGAI-cg=>AOOEk70A1x>Zg~GaWZ``+)qnI*m92^RDcFSJ($qwm5OvlW{k=D+3Qe`k#{jpeMue z3ibw|84m^^m}cY%62dRyR7Sc vR(GVPrPL%cN~KI|ucRR-w1_==-&Eg6H`mwKH~HM$>$=qSKb!UUZK3}Km4hrh literal 0 HcmV?d00001