5 * Revision 1.1.1.1 1995/10/24 10:20:24 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.26 by S.Giani
12 SUBROUTINE GDRAW(NAME,UTHET,UPHI,UPSI,UU0,UV0,SU,SV)
14 C. ******************************************************************
16 C. * This routine draws the object called NAME, with its *
17 C. * contents, at the screen point (UU0,UV0), with the *
18 C. * screen factors SU and SV acting on the U and V *
19 C. * dimensions respectively; *
20 C. * the object is rotated by an angle UTHET along Y-axis *
21 C. * and UPHI along Z-axis and the resulting 2-D picture *
22 C. * is also rotated by an angle UPSI along the line of *
23 C. * projection (i.e. the normal to the 2-D view plane). *
25 C. * If IDRNUM<>0 then /GCVOLU/ is already filled by GLVOLU *
26 C. * and a special case is handled (GDRAW called by GDRVOL). *
28 C. * ==>Called by : <USER>, <GXINT>, GDPRTR, GDRAWC, GDRAWX, *
30 C. * Authors : R.Brun, A.McPherson, P.Zanarini, ********* *
31 C. * J.Salt, S.Giani *
32 C. ******************************************************************
34 ***SG**************************************************************************
36 * Most important improvements in this new version : *
38 * Problems with the number of faces are solved, so that it's *
39 * possible to use all the memory available; moreover it's *
40 * now possible to use HIDE ON on CRAY-like machines; *
42 * Problems with number of volumes now only depends upon the *
43 * size of Zebra store : a message will tell the number of *
44 * words you need more; problems in iterated drawings have *
47 * A NEW SIZE EVALUATION is performed separately for Hide Structure and *
48 * Wire Structure with a resolution of 1 word ; this is the new logic: *
49 * create immediately HIDE and WIRE structures and perform the *
50 * drawing WHILE evaluating the memory used; if memory booked in the *
51 * zebra store is not enough, then go on evaluating the number of *
52 * words needed and print it. *
54 * Multi-colour view of the different parts of a detector is now *
55 * available in Hidden Line Removal; a new bank is created for this. *
56 * Enjoy clipping now !! *
57 * Different line styles and width work as well !! *
59 * Zooming is now possible in Hidden Line Removal too; Dspec works *
60 * even when Cvol is on and Seen attribute setting has been *
63 * Speed in drawing divided volumes can be increased by a factor about *
64 * linear with the number of volumes (a factor 30 for 900 tubes)!!! *
65 * At the same time, the number of words used can be decreased by a *
66 * factor 50!!! For example, in Gexam1 is possible to draw 22500 tubes *
67 * using much less than 800000 words. *
69 * HIDDEN FACE REMOVAL algorithm has been implemented; it allows to *
70 * increase speed and decrease memory used by the same factors as *
71 * above for any kind of drawings!!! For example, it's now possible *
72 * to draw the complete L3 geometry using less than 3 Mwords (before *
73 * we needed 1 Gigabyte !!!) *
75 * The new command CVOL has been created: it allows to clip EACH *
76 * VOLUME in the detector by a different SHAPE; moreover, it's possible*
77 * to clip twice each volume. You can clip each volume by the following*
78 * shapes: BOX , TUBE, CONE, SPHE ! *
80 * The new command SHIFT has been created: it allows to translate each *
81 * volume in the detector into a more visible place; for each volume, *
82 * the last shift you asked is performed. *
84 * The option 'one' has been implemented in the shift command to allow *
85 * the shifting of a single copy for each volume; the new command *
86 * BOMB has been created to allow 'exploded' view of detectors. *
88 * A new bank is booked to create CG objects: it's now possible to draw *
89 * in HIDE ON the following shapes as well: PCON, TUBS, SPHE, TRAP *
90 * and Pyramids as TRAP having 4 edges in the same point. Moreover, *
91 * the new shape CTUB has been created even in hide on. *
93 * The number of words to draw TUBS, CONS, PCON, PGON can be decreased *
94 * even by a factor 10; moreover, several problems about edge visi- *
95 * bility have been solved. *
97 * A REFLECTION algorithm has been implemented for hidden line removal *
98 * as well; finally, a new logic scanning the geometrical tree has *
99 * been created to simulate, without alterate, the date structure. *
101 * A new SURFACE SHADING algorithm has been written to fill faces with *
102 * solid colours with varying intensity according to the light *
103 * inclination. Please see details in the documentation of the *
104 * routines which are concerned. *
106 ***SG**************************************************************************
108 #include "geant321/gcbank.inc"
109 #include "geant321/gcvolu.inc"
110 #include "geant321/gcunit.inc"
111 #include "geant321/gcdraw.inc"
112 #include "geant321/gconst.inc"
113 #include "geant321/gcnum.inc"
114 #include "geant321/gcmutr.inc"
115 #include "geant321/gcgobj.inc"
116 #if defined(CERNLIB_CG)
117 #include "geant321/cghpar.inc"
119 #include "geant321/gchiln.inc"
120 #include "geant321/gcspee.inc"
122 * - The following common to be used by GXPICK
124 COMMON /QUEST/ IQUEST(100)
129 CHARACTER*4 NAME,NAMEE2
130 DIMENSION X(3),ATT(10)
131 DIMENSION LVOLS(15),LINDX(15),LNAMES(15)
132 DIMENSION GPAR(50,15)
133 #if defined(CERNLIB_CG)
134 DIMENSION V(3),T(4,3)
137 DATA IFIRST,LFIRST/2*0/
138 * Save info for GXPICK in case is needed
139 CALL UCTOH(NAME, NVLAST, 4, 4)
140 *** CALL IGSET('SYNC',1.)
142 * Hidden flag 'ON" (Default)
144 CALL UCTOH('ON ',IFLH,4,4)
152 #if defined(CERNLIB_CG)
153 IF(IHIDEN.EQ.IFLH)THEN
155 * Link area for the banks
156 CALL MZLINT(IXSTOR,'/GCHILN/',LARECG,ICLIP1,ICLIP2)
159 IF(JCGCOL.NE.0) CALL MZDROP(IXSTOR, JCGCOL, ' ')
160 IF(JCGOBJ.NE.0) CALL MZDROP(IXSTOR, JCGOBJ, ' ')
161 IF(JCOUNT.NE.0) CALL MZDROP(IXSTOR, JCOUNT, ' ')
162 IF(JCLIPS.NE.0) CALL MZDROP(IXSTOR, JCLIPS, ' ')
163 IF(IMPOIN.NE.0) CALL MZDROP(IXSTOR, IMPOIN, ' ')
164 IF(IMCOUN.NE.0) CALL MZDROP(IXSTOR, IMCOUN, ' ')
165 IF(JSIX.NE.0) CALL MZDROP(IXSTOR, JSIX, ' ')
166 IF(JSIY.NE.0) CALL MZDROP(IXSTOR, JSIY, ' ')
167 IF(JSIZ.NE.0) CALL MZDROP(IXSTOR, JSIZ, ' ')
168 IF(JPXC.NE.0) CALL MZDROP(IXSTOR, JPXC, ' ')
169 IF(JPYC.NE.0) CALL MZDROP(IXSTOR, JPYC, ' ')
170 IF(JPZC.NE.0) CALL MZDROP(IXSTOR, JPZC, ' ')
176 * NWHS1: n. of words for Hide Structure
177 * NWWS1: n. of words for Wire Structure
178 * NWFLAG: Indicates if the size of CG bank is precise
181 * IPAS: This flag indicates if the Size Evaluation has been performed
184 * NOBJ: Counter of CG objects
185 * NUVO: Counter of CG volumes
186 * II: Counter for volumes' line attributes
187 * KGG: Flag for booking line attributes bank
188 * LSTEP: Number of CG objects forming each volume
189 * IFACST: Flag indicating final status of Hide Structure
191 * <0 , internal error
192 * >0 , total number of words needed for Hide Structure
193 * NCLAS2: Total number of volumes
194 * S1...SS3: Min and Max values of volume scope
195 * SRAGMX,SRAGMN: Max values of volume scope along R
196 * NFILT= n. of words for HIDE+totalWIRE structures+CG+Line
197 * NTCUR= n. of words for HIDE+instantWIRE structures+CG+Line
198 * KSTART: Flag for Hidden Volume Removal
199 * IOLDOL: Nlevel of last volume setting bounds for scope
218 * Initialization of Hidden Volume and Face Removal
232 * Initialisation for Shift
272 CALL MZDROP(IXSTOR, JCG, ' ')
273 CALL MZGARB(IXSTOR+1,0)
275 * Booking bank to create CG objects
276 CALL MZNEED(IXCG,30000,'G')
277 CALL MZBOOK(IXCG,JCGOBJ,JCGOBJ,1,'CGOB',0,0,30000,3,-1)
278 CALL MZNEED(IXCG,33000,'G')
279 CALL MZBOOK(IXCG,JCLIPS,JCLIPS,1,'CGCLIP',0,0,33000,3,-1)
282 JMEMT1=IQUEST(11)*.013
283 IF(JMEMT1.LT.10000)JMEMT1=10000
284 CALL MZNEED(IXCG,JMEMT1,'G')
285 CALL MZBOOK(IXCG,JCOUNT,JCOUNT,1,'CGCONT',0,0,JMEMT1,2,-1)
291 CALL MZNEED(IXCG,54000,'G')
292 CALL MZBOOK(IXCG,JSIX,JSIX,1,'XGEN',0,0,9000,3,-1)
293 CALL MZBOOK(IXCG,JSIY,JSIY,1,'YGEN',0,0,9000,3,-1)
294 CALL MZBOOK(IXCG,JSIZ,JSIZ,1,'ZGEN',0,0,9000,3,-1)
295 CALL MZBOOK(IXCG,JPXC,JPXC,1,'XPAR',0,0,9000,3,-1)
296 CALL MZBOOK(IXCG,JPYC,JPYC,1,'YPAR',0,0,9000,3,-1)
297 CALL MZBOOK(IXCG,JPZC,JPZC,1,'ZPAR',0,0,9000,3,-1)
299 CALL MZNEED(IXCG,JMEMT3,'G')
300 CALL MZBOOK(IXCG,IMCOUN,IMCOUN,1,'SHCONT',0,0,JMEMT3,2,-1)
305 CALL MZNEED(IXCG,JMEMT2,'G')
306 CALL MZBOOK(IXCG,IMPOIN,IMPOIN,1,'SHAFAC',0,0,JMEMT2,2,-1)
324 IF (IFIRST.NE.0) GO TO 40
341 C Save /GCVOLU/ if necessary
344 IF (NLEVEL.NE.0) THEN
348 IF (NLEVEL.LT.0) NLEVEL=IABS(NLEVEL)
350 C If in cut-mode then open the GDRAWV line buffer
351 C else reset ICUT that could have been set by GDRAWC/GDRAWX
353 IF (ICUTFL.EQ.1) THEN
354 CALL GDRAWV(0.,0.,-1)
359 C Start of general code
361 CALL GLOOK(NAME,IQ(JVOLUM+1),NVOLUM,IVO)
362 IF(IVO.LE.0)GO TO 280
364 C Theta, phi and psi angles are normalized in [0-360[ range
367 GTHETA=MOD(ABS(UTHET),360.)
368 GPHI=MOD(ABS(UPHI),360.)
369 GPSI=MOD(ABS(UPSI),360.)
376 #if defined(CERNLIB_CG)
377 * Set Transformation Matrix T for CG Package
379 IF(IHIDEN.EQ.IFLH)THEN
384 CALL CGTSET(NTRCG,T,IREP)
394 * Obtaining the IMOD flag for setting the run mode
404 IF(ICUT.NE.0.OR.IHOLE.EQ.1)THEN
413 SINPSI=SIN(GPSI*DEGRAD)
414 COSPSI=COS(GPSI*DEGRAD)
420 C Initialize JIN to switch correctly CALL GFPARA/GFIPAR
426 IF (IDRNUM.NE.0) GO TO 70
428 C Initialize for new geometry structure
430 IF (JGPAR.EQ.0) CALL GMEDIN
431 CALL GLMOTH(NAME,1,NLEV,LVOLS,LINDX)
433 LNAMES(J)=IQ(JVOLUM+LVOLS(J))
436 CALL UCTOH(NAME,LNAMES(NLEV),4,4)
439 JVOF = LQ(JVOLUM-LVOLS(KLEV-1))
442 JIN = LQ(JVOF-LINDX(KLEV))
449 CALL GLVOLU(NLEV, LNAMES, LINDX, IER)
458 IF (IDRNUM.NE.0) GO TO 110
460 CALL GFPARA(NAME,1,1,NPAR,NATT,GPAR(1,NLEVEL),ATT)
462 IF (NPAR.LE.0) GO TO 290
478 C Ready for general case code
482 * Taking volume name and shape from Zebra Structure
485 IVOLNA=IQ(JVOLUM+IVO)
491 IF (IDRNUM.NE.0) GO TO 120
493 IF (NLEVEL.EQ.NLVTOP) GO TO 130
497 IF (IDRNUM.NE.0.AND.JIN.EQ.0) THEN
498 CALL UHTOC(NAMES(NLEVEL),4,NAMEE2,4)
499 CALL GFPARA(NAMEE2,NUMBER(NLEVEL),1,NPAR,
500 + NATT,GPAR(1,NLEVEL),ATT)
505 CALL UCOPY(Q(JATT),ATT,NATT)
517 IF(LLEP.EQ.1)LINFIL=0
519 * New logic setting the line attributes
527 CALL IGBOX(0.,20.,20.,0.)
533 IF(MFLA.EQ.1.AND.NLEVEL.GT.MVENLE)LINCOL=MVECOL
534 IF(NLEVEL.LE.MVENLE)MFLA=0
543 IF(LFLA.EQ.1.AND.NLEVEL.GT.LVENLE)LINWID=LVEWID
544 IF(NLEVEL.LE.LVENLE)LFLA=0
553 IF(LFFLA.EQ.1.AND.NLEVEL.GT.LFENLE)LINFIL=LVEFIL
554 IF(NLEVEL.LE.LFENLE)LFFLA=0
563 CALL MVBITS(LINCOL,0,8,LINATT,16)
564 CALL MVBITS(LINWID,0,3,LINATT,7)
565 CALL MVBITS(LINSTY,0,3,LINATT,10)
566 CALL MVBITS(LINFIL,0,3,LINATT,13)
570 * New logic scanning the geometrical tree:
571 * A volume can set bounds OR be compared with bounds;
572 * this can happen only IF a relationship mother-daughters exists.
574 * Optimization for Hidden Volume and Face Removal:
575 * POS and DIV cases are considered at the same time.
577 IF(IPAS.EQ.0)GOTO 170
582 IF(NLEVEL.GT.IOLDOL)THEN
599 IF(SEEN.EQ.0.OR.SEEN.EQ.-1)LPASS=1
603 ELSE IF(NLEVEL.LE.IOLDOL)THEN
617 IF(SEEN.EQ.0.OR.SEEN.EQ.-1)LPASS=1
621 IF(NLEVEL.LE.IPRELE)THEN
622 IF(IVOLNA.NE.IMENO)THEN
624 IF(SEEN.EQ.0.OR.IPORLI.EQ.1.OR.SEEN.EQ.-1)THEN
626 IF((NLEVEL-I).GE.1)THEN
627 IF(POX(NLEVEL-I).NE.0.OR.POY(NLEVEL-I)
628 + .NE.0.OR. POZ(NLEVEL-I).NE.0)THEN
654 IF(IOLDOL.EQ.0.AND.(SEEN.EQ.1.OR.SEEN.EQ.-2
655 + .OR.SEEN.EQ.9))THEN
667 C WORK attribute enabled ?
669 IF(WORK.LE.0.)GO TO 270
671 C SEEN attribute processing
673 IF (SEEN.LT.50.) GO TO 180
677 IF(NLEVEL.LE.LEVSEE)LEVSEE=1000
678 IF(SEEN.EQ.-1.)GO TO 270
679 IF (NLEVEL.GT.LEVSEE) GO TO 270
680 IF(SEEN.EQ.0.)GO TO 220
681 IF (SEEN.EQ.-2.) LEVSEE=NLEVEL
684 * Logic has been modified >>>>>
687 C For the Standard Mode: Draw the shape
688 C For CG Mode : Make a CG-Object for each shape
690 IF(IHIDEN.EQ.IFLH)THEN
695 * Case : divided without clipping
698 * Optimization for setting seen attributes
701 IF(SEEN.EQ.9.AND.NIN.NE.0)THEN
710 IF(NIN.LT.0.AND.((ISHAPE.GT.1.AND.ISHAPE.LT.5).OR.
711 + (ISHAPE.GT.9.AND.ISHAPE.LT.13)))THEN
712 IF(IPORLI.EQ.1)ISCOP=1
714 IF(SEEN.EQ.1.AND.NIN.LT.0)GOTO 190
715 IF(SEEN.NE.-2.AND.NIN.LT.0.AND.(IMOD.EQ.0.OR.IMOD.EQ.3))
719 #if defined(CERNLIB_CG)
721 * Creating, clipping and counting CG objects
722 * Inserting the visible ones in Hide and Wire Structures
724 IF(IIIIII.EQ.1)GOTO 200
726 IF(ISHAPE.EQ.11)LSTEP=GPAR(4,NLEVEL)-1
727 IF(ISHAPE.EQ.12)LSTEP=GPAR(3,NLEVEL)-1
728 CALL GDCGOB(IMSE,ISHAPE,GPAR(1,NLEVEL),NOBJ,NWWS,IVOLNA,
735 IF(NCLAS2.GT.1000)THEN
736 IPER=(100*NOBJ)/NCLAS2
737 IF(IPER.EQ.10.OR.IPER.EQ.20.OR.IPER.EQ.30.OR.IPER.EQ.
738 + 40.OR.IPER.EQ.50.OR.IPER.EQ.60.OR.IPER.EQ.70.OR.IPER
739 + .EQ.80.OR.IPER.EQ.90)THEN
740 IF(IPER.NE.IPEOLD)THEN
741 WRITE(CHMAIL,11800)IPER
749 * Setting line attributes volume by volume
751 IF(IHIDEN.EQ.IFLH) THEN
752 IF(IPAS.NE.0.AND.KGG.EQ.1) THEN
753 ** IF(ITSTCU.NE.0.AND.IVFUN.NE.0) THEN
754 IF((ITSTCU.NE.0).OR. ((ISHAPE.EQ.11.OR.ISHAPE.EQ.12)
755 + .AND.(ICGP.NE.0)))THEN
756 IF(ISHAPE.EQ.11.OR.ISHAPE.EQ.12)LSTEP=ICGP
760 IQ(JCGCOL+KHH)=LINATT
768 * Logic has been modified again :
769 * do the size evaluation while creating Hide Structure
770 * do the same for Wire Structure
772 * If number of words booked for Hide Structure or for
773 * Wire Structure is not sufficient, then evaluate the
774 * the right number of words needed and send a mail.
778 * Ten words more for safety
781 CALL CGHEVA(Q(IHPOIN),HISI)
782 IF(HISI.GT.NWHS1)NWHS1=HISI
784 IWORH1= IWORH * 1.666666
785 WRITE(CHMAIL,11500)IWORH1
788 ELSE IF(KCGST.EQ.-10)THEN
792 WRITE(CHMAIL,11400)IWORW1
795 ELSEIF(KCGST.EQ.-4.OR.KCGST.EQ.-1.OR.KCGST.EQ.-2) THEN
796 * Exiting without having made evaluation of size
800 * Case: Volume placed by GSPOS, not clipped and 'closed'
803 * IF(NIN.GT.0.AND.(IMOD.EQ.0.OR.IMOD.EQ.3).
804 * + AND.KSHIFT.EQ.0.AND.GBOOM.EQ.0.) GOTO 150
809 * Standard Mode: Draw the shape
811 CALL IGPID(1,'Pick',IVO,' ')
812 CALL IGPID(2,'Pick',IQ(JVOLUM+IVO),' ')
813 IF (ICUTFL.EQ.1) THEN
814 CALL GDRWSC(ISHAPE,GPAR(1,NLEVEL))
816 CALL GDRAWS(ISHAPE,GPAR(1,NLEVEL))
823 IF(SEEN.EQ.-2.)GO TO 270
827 *** IF (IDRNUM.NE.0) GO TO 999
829 C Skip User shapes (not yet implemented)
833 C Now go down the tree
836 IF(NIN.EQ.0) GO TO 270
837 IF(NIN.LT.0) GO TO 240
839 C Contents placed by GSPOS
842 IF(NLMAX.GT.NLEVEL) IN=LINDEX(NLEVEL+1)
844 IF(IN.GT.NIN.AND.NLEVEL.EQ.NLMIN) GO TO 300
846 IF(IN.GT.NIN) GO TO 260
848 CALL GMEPOS(JVO,IN,X,0)
851 NPAR=IQ(JGPAR+NLEVEL)
853 GPAR(I,NLEVEL)=Q(LQ(JGPAR-NLEVEL)+I)
863 C Contents by division
866 IF(NLMAX.GT.NLEVEL) IN=LINDEX(NLEVEL+1)
868 CALL GMEDIV(JVO,IN,X,0)
871 IF (IN.EQ.0) GO TO 260
873 NPAR=IQ(JGPAR+NLEVEL)
875 GPAR(I,NLEVEL)=Q(LQ(JGPAR-NLEVEL)+I)
878 IF (IN.EQ.0) GO TO 260
889 IF(NLEVEL.LT.NLMIN) GO TO 300
894 280 WRITE(CHMAIL,10000)NAME
900 C TOP OF THE TREE HAS PARAMETERS SET BY GSPOSP.
901 C BUT GDRAW DOES NOT HAVE ACCESS TO THE IN BANK
902 C WHICH PLACED IT IN ITS MOTHER.
904 WRITE(CHMAIL,10100) NAME
911 #if defined(CERNLIB_CG)
915 IF(IHIDEN.EQ.IFLH) THEN
917 * In CG Mode the program flow has two scanning of the geometrical tree:
918 * the first one is to count the number of volumes (IPAS=0);
919 * the second one is to compute volumes' visibility with Hidden Volume
920 * and Face Removal, inserting them in the Hide and Wire structures if
921 * the size of Zebra store is sufficient (IPAS=1).
925 * Creating a bank for setting line attributes volume by volume.
926 * The number of words needed is just equal to the total number
927 * of visible volumes.
931 CALL MZNEED(IXCG,NCLAS2+10,'G')
933 * Take everything is left but leave 100,000 words just in case
935 MEMO=IQUEST(11)-(IQUEST(11)*.11)
936 IF(IQUEST(11).LE.0)THEN
937 WRITE(CHMAIL,11300)NCLAS2+10
941 CALL MZBOOK(IXCG,JCGCOL,JCGCOL, 1,'LINE',0,0,NCLAS2+10,
949 NFILT=63000+NCLAS2+10
951 * Use max Zebra store for Hide and Wire structures
955 CALL MZBOOK(IXCG,JCG,JCG,1,'CG',0,0,MEMO,3,-1)
961 * Creating the Hidden Structure
963 IF(NWHS.LE.LHHEAD)NWHS=LHHEAD+1
965 CALL CGHCRE(NTRCG,0,DUMMY,DUMMY,NWHS,Q(IHPOIN))
971 IF(NOBJ.EQ.0)GOTO 320
973 * Closing the Hidden Structure
977 * Last size evaluation for Hide Structure
979 CALL CGHEND(Q(IHPOIN),IFACST,RSHD)
983 IWORH1= IWORH * 1.666666
984 WRITE(CHMAIL,11500)IWORH1
989 * IFACST shouldn't be negative now
997 * Setting the right colours
999 * Drawing the CG Objects
1001 IF(ILCG.LT.IFCG)THEN
1005 IF(LEP.GE.0.AND.ISPFLA.NE.1)THEN
1009 *** call write_dxf_sect_entity( 1 )
1012 IF(ILCG.GT.1000)THEN
1014 IF(IPER.EQ.10.OR.IPER.EQ.20.OR.IPER.EQ.30.OR.IPER.
1015 + EQ. 40.OR.IPER.EQ.50.OR.IPER.EQ.60.OR.IPER.EQ.70.O
1016 + R.IPER .EQ.80.OR.IPER.EQ.90)THEN
1017 IF(IPER.NE.IPEOLD)THEN
1018 WRITE(CHMAIL,12000)IPER
1025 LINATT=IQ(JCGCOL+K-IFCG+1)
1026 IWPOIN=JCG+IQ(JCOUNT+K)
1027 IF(ISPFLA.EQ.1)ISPFLA=2
1029 MMPOIN=IMPOIN+IQ(IMCOUN+K)
1030 CALL GD16V((IQ(JCOUNT+K)-1),IQ(MMPOIN))
1032 CALL GD16V((IQ(JCOUNT+K)-1),0)
1034 IF(ISPFLA.EQ.2)ISPFLA=1
1037 *** call write_dxf_sect_entity( 2 )
1039 * Printing statistics
1041 IF(LEP.GE.0.AND.ISPFLA.NE.1)THEN
1042 NFILT=NFILT-NWHS+RSHD
1045 MEMO1=MEMO+63000+NCLAS2+10+JMEMT2+JMEMT1+JMEMT3+54000
1046 RSWR =NFILT-RSHD-63000-NCLAS2-10
1056 WRITE(CHMAIL,10600)INFILT+NTNEX+ILCG-IFCG+1+JJIIKK+JPARGE
1058 WRITE(CHMAIL,10700)MEMO1
1060 WRITE(CHMAIL,10900)NCLAS2+10
1062 WRITE(CHMAIL,10800)ICGOB
1064 WRITE(CHMAIL,11000)IRSHD
1066 WRITE(CHMAIL,11100)IRSWR+ILCG-IFCG+1
1068 WRITE(CHMAIL,11200)NTNEX+JJIIKK+JPARGE
1070 * WRITE(CHMAIL,10799)RATIO
1072 WRITE(CHMAIL,11600)ILCG-IFCG+1
1074 WRITE(CHMAIL,11700)NCLAS2
1080 * Dropping + resetting parameters
1083 IF(IHIDEN.EQ.IFLH)THEN
1085 IF(JCG.NE.0)CALL MZDROP(IXSTOR,JCG,' ')
1086 IF(JCGOBJ.NE.0)CALL MZDROP(IXSTOR,JCGOBJ,' ')
1088 IF(JCGCOL.NE.0)CALL MZDROP(IXSTOR,JCGCOL,' ')
1089 IF(JCOUNT.NE.0)CALL MZDROP(IXSTOR,JCOUNT,' ')
1090 IF(JCLIPS.NE.0)CALL MZDROP(IXSTOR,JCLIPS,' ')
1091 IF(IMPOIN.NE.0)CALL MZDROP(IXSTOR,IMPOIN,' ')
1092 IF(IMCOUN.NE.0)CALL MZDROP(IXSTOR,IMCOUN,' ')
1093 IF(JSIX.NE.0) CALL MZDROP(IXSTOR, JSIX, ' ')
1094 IF(JSIY.NE.0) CALL MZDROP(IXSTOR, JSIY, ' ')
1095 IF(JSIZ.NE.0) CALL MZDROP(IXSTOR, JSIZ, ' ')
1096 IF(JPXC.NE.0) CALL MZDROP(IXSTOR, JPXC, ' ')
1097 IF(JPYC.NE.0) CALL MZDROP(IXSTOR, JPYC, ' ')
1098 IF(JPZC.NE.0) CALL MZDROP(IXSTOR, JPZC, ' ')
1100 CALL MZGARB(IXSTOR+1,0)
1111 IF (IFCVOL.EQ.1) THEN
1117 C If in cut-mode then close the GDRAWV line buffer
1119 IF (ICUTFL.EQ.1) CALL GDRAWV(0.,0.,0)
1121 C Restore permanent value of color and return
1126 10000 FORMAT(' *** GDRAW *** : Volume ',A4,' does not exist')
1127 10100 FORMAT(' *** GDRAW *** : Top of tree ',A4,' parameters defined',
1128 + ' by GSPOSP - info not available to GDRAW.')
1129 10200 FORMAT(' *** GDRAW *** : Illegal Transformation Matrix',
1131 10300 FORMAT(' *** GDRAW *** : >>> Det (T) = 0 ')
1132 10400 FORMAT(' *** GDRAW *** : Warning! Volume is destroyed.')
1134 10500 FORMAT(' *** GDRAW *** : Internal error, please report to',
1135 + ' GEANT support team')
1136 10600 FORMAT(' *** GDRAW *** : Total memory used =',I10,' words.')
1137 10700 FORMAT(' *** GDRAW *** : Total memory booked =',I10,' words.')
1138 10800 FORMAT(' *** GDRAW *** : Memory used for CGOB =',I10,' words.')
1139 10900 FORMAT(' *** GDRAW *** : Memory used for LINE =',I10,' words.')
1140 11000 FORMAT(' *** GDRAW *** : Memory used for HIDE =',I10,' words.')
1141 11100 FORMAT(' *** GDRAW *** : Memory used for WIRE =',I10,' words.')
1142 11200 FORMAT(' *** GDRAW *** : Memory used for SHAD =',I10,' words.')
1143 11300 FORMAT(' *** GDRAW *** : Memory needed for the LINE attributes',
1144 + ' =',I10,' words.')
1145 *10799 FORMAT(' *** GDRAW *** : HIDE/WIRE=',F4.2,'.')
1146 11400 FORMAT(' *** GDRAW *** : Please, increase size of Zebra store',
1147 + ' by',I10,' words to create WIRE structure.')
1148 11500 FORMAT(' *** GDRAW *** : Please, increase size of Zebra store',
1149 + ' by',I10,' words to create HIDE structure.')
1150 11600 FORMAT(' *** GDRAW *** : Visible volumes =',I10,'.')
1151 11700 FORMAT(' *** GDRAW *** : Total volumes =',I10,'.')
1152 11800 FORMAT(' *** GDRAW *** :',I2,'% of volumes analysed.')
1153 11900 FORMAT(' *** GDRAW *** : Now the drawing is starting !')
1154 12000 FORMAT(' *** GDRAW *** :',I2,'% of volumes drawn.')