home *** CD-ROM | disk | FTP | other *** search
- REM @(#)CADKEY SOLIDS pv.cdl 2.6 11/25/88
- REM
- REM "pv.cdl V1.8 -- R.H. LaRochelle 12-November-87 "
- REM "This program generates CADKEY SOLIDS animation script pv.ani"
- REM "with the user's permission, pv.ani is copied to user specified file "
- REM "Menu structure changed 07-October-87 "
-
- REM "Initialization "
-
- array tfltdat[9]
- array $tstr[1]
- array grpused[129]
-
- i = 0
- newgroup = 1
- :lpgrp
- i = i + 1
- GETGROUP i
- grpused[i] = @INTDAT[0]
- if ( grpused[i] != 0 )
- newgroup = i + 1
- if (( i < 128 ) && ( grpused[i] != 0 ))
- goto lpgrp
-
- set devout, pv.ani, 0
- optdraw = 1
- optfill = 0
- optdash = 0
- incremnt = 22.5
- curlevel = 1.0
- frame = 1.0
- lens = 1.0
- standoff = 10000.00
- standset = 0
- lensset = 0
- opt4view = 0
- L1 = 1.0
- L2 = 0.64
- L3 = -0.17
- from_main = 1
- from_render = 0
- from_rotate = 0
- from_bool = 0
- REM 'Default color classes '
- array colran[4][8]
- colran[0][0] = 1
- colran[1][0] = 16
- colran[2][0] = 55
-
- colran[0][1] = 2
- colran[1][1] = 56
- colran[2][1] = 95
-
- colran[0][2] = 3
- colran[1][2] = 96
- colran[2][2] = 135
-
- colran[0][3] = 4
- colran[1][3] = 136
- colran[2][3] = 175
-
- colran[0][4] = 5
- colran[1][4] = 176
- colran[2][4] = 215
-
- colran[0][5] = 6
- colran[1][5] = 216
- colran[2][5] = 255
-
- colran[0][6] = 7
- colran[1][6] = 1
- colran[2][6] = 15
-
- colran[0][7] = 8
- colran[1][7] = 1
- colran[2][7] = 15
-
- print "REM this animation file generated by pv.cdl V2.01\n\n"
- if (optdraw == 1)
- print "MODE DRAW\n"
- if (optdraw == 1)
- print "DRAW 1\n"
- if (optfill == 1)
- print "FILL 1\n"
- if (optdash == 1)
- print "DASH 1\n"
- print "LIGHT %f, %f, %f\n\n", L1, L2, L3
- tmp = 0.0
- XROT = 0.0
- YROT = 0.0
- ZROT = 0.0
- XANGLE = 0.0
- YANGLE = 0.0
- ZANGLE = 0.0
- DEGREE = 3.141592654 / 180
- A0 = 0.0
- A1 = 0.0
- A2 = 0.0
- A3 = 0.0
- A4 = 0.0
- A5 = 0.0
- A6 = 0.0
- A7 = 0.0
- A8 = 0.0
- C1 = 0.0
- C2 = 0.0
- C3 = 0.0
- curscale = @scale
- goto mainmenu
-
- :cleanup
- if (optdraw == 1)
- print "MODE NORMAL\n"
-
- :yes
- if ( frame > 1 )
- goto okframes
- getmenu "PV: Action file has no frames, still exit ? (NO)","NO","YES"
- on (@key + 3) goto leave_it ,mainmenu,yes,,mainmenu,okframes
- goto yes
- :okframes
- print "exit\n"
- i = 0
- $ts = "sol.act"
- getstr "PV: Enter action file name (%s) => ",$ts,$anname
- on (@key + 3 ) goto no,mainmenu,okframes,
- sprint $str,"copy pv.ani %s \n"", $anname
- exec 1, $str
- :no
- :leave_it
- clear tmp,tmp1,tmp2,incremnt, lens, frame, curscale, curlevel, standoff
- clear XROT, YROT, ZROT, XANGLE, YANGLE, ZANGLE, DEGREE
- clear A0, A1, A2, A3, A4, A5, A6, A7, A8, C1, C2, C3, L1, L2, L3
- clear optdraw, optfill, optdash,standset,lensset
- clear tmplens,tfltdat[9]
- clear classnum,classtmp,opt4view
- clear from_main,from_render,from_rotate,from_bool
- clear grp1,grp2,operation,newgroup
- clear $ts,$anname
- exit
-
- :mainmenu
- from_main = 1
- from_render = 0
- from_rotate = 0
- from_bool = 0
-
- getmenu "PV: Choose option",\
- "MODE",\
- "4VIEW",\
- "ROTATE",\
- "RENDER",\
- "BOOLEANS",\
- "LEVEL",\
- "VERSION",\
- "FRAME",\
- "DONE"
-
- on (@key + 3) goto no,leave_it,mainmenu,,\
- domode,\
- do4view,\
- rotatemenu,\
- rendermenu,\
- boolmenu,\
- dolevel,\
- dovers ,\
- doframe ,\
- cleanup
- goto mainmenu
-
-
- REM '-----------------------------------------------------------------'
- REM '-- Handle rotations '
- REM '-----------------------------------------------------------------'
- :rotatemenu
- from_rotate = 1
- getmenu "PV : Choose option",\
- "TOP OUT",\
- "TOP IN",\
- "RT OUT",\
- "RT IN",\
- "CCW",\
- "CW",\
- "INCRMNT",\
- "FRAME",\
- "DONE"
-
- on (@key + 3) goto no,mainmenu,rotatemenu,,\
- dotopout,\
- dotopin,\
- dortout,\
- dortin,\
- doccw,\
- docw,\
- doincr,\
- doframe,\
- mainmenu
- goto rotatemenu
-
- :dotopout
- XROT = incremnt
- goto doview
- :dotopin
- XROT = -incremnt
- goto doview
- :dortout
- YROT = -incremnt
- goto doview
- :dortin
- YROT = incremnt
- goto doview
- :doccw
- ZROT = incremnt
- goto doview
- :docw
- ZROT = -incremnt
- goto doview
- :doincr
- tmp = incremnt
- getflt "PV : Enter rotation increment (%f) =>",tmp,incremnt
- on (@key + 3 ) goto no,rotatemenu,doincr,
- if ( incremnt > 0.0 )
- goto rotatemenu
- pause "Invalid increment... press RETURN "
- incremnt = tmp
- goto doincr
-
- :doframe
- print "DUMPCOLOR\n"
- print "CHANGEPAL\n"
- prompt "PV : frame %d",frame
- getview @view
- tfltdat[0] = @fltdat[0]
- tfltdat[1] = @fltdat[1]
- tfltdat[2] = @fltdat[2]
- tfltdat[3] = @fltdat[3]
- tfltdat[4] = @fltdat[4]
- tfltdat[5] = @fltdat[5]
- tfltdat[6] = @fltdat[6]
- tfltdat[7] = @fltdat[7]
- tfltdat[8] = @fltdat[8]
-
- XANGLE = 0.0
- YANGLE = 0.0
- ZANGLE = 0.0
-
- if ((tfltdat[0] < 0.00001) && (tfltdat[0] > -0.00001))
- if ((tfltdat[1] < 0.00001) && (tfltdat[1] > -0.00001))
- goto doframe1
-
- ZANGLE = -atan2(tfltdat[1], tfltdat[0])
-
- :doframe1
- C1 = cos(ZANGLE)
- C2 = -sin(ZANGLE)
-
- A0 = tfltdat[0] * C1 + tfltdat[1] * C2
- A3 = tfltdat[3] * C1 + tfltdat[4] * C2
- A6 = tfltdat[6] * C1 + tfltdat[7] * C2
-
- C1 = sin(ZANGLE)
- C2 = cos(ZANGLE)
-
- A1 = tfltdat[0] * C1 + tfltdat[1] * C2
- A4 = tfltdat[3] * C1 + tfltdat[4] * C2
- A7 = tfltdat[6] * C1 + tfltdat[7] * C2
-
- tfltdat[0] = A0
- tfltdat[1] = A1
- tfltdat[3] = A3
- tfltdat[4] = A4
- tfltdat[6] = A6
- tfltdat[7] = A7
-
- if ((tfltdat[2] < 0.00001) && (tfltdat[2] > -0.00001))
- goto doframe2
-
- if (tfltdat[2] < -0.99999)
- YANGLE = 90.0
- if (tfltdat[2] < -0.99999)
- goto doframe2
-
- if (tfltdat[2] > 0.99999)
- YANGLE = -90.0
- if (tfltdat[2] > 0.99999)
- goto doframe2
-
- if ((tfltdat[6] < 0.00001) && (tfltdat[6] > -0.00001))
- if ((tfltdat[8] < 0.00001) && (tfltdat[8] > -0.00001))
- goto doframe2
-
- YANGLE = -atan2(tfltdat[6], tfltdat[8])
-
- :doframe2
- C1 = cos(YANGLE)
- C3 = sin(YANGLE)
-
- A0 = tfltdat[0] * C1 + tfltdat[2] * C3
- A3 = tfltdat[3] * C1 + tfltdat[5] * C3
- A6 = tfltdat[6] * C1 + tfltdat[8] * C3
-
- C1 = -sin(YANGLE)
- C3 = cos(YANGLE)
-
- A2 = tfltdat[0] * C1 + tfltdat[2] * C3
- A5 = tfltdat[3] * C1 + tfltdat[5] * C3
- A8 = tfltdat[6] * C1 + tfltdat[8] * C3
-
- tfltdat[0] = A0
- tfltdat[2] = A2
- tfltdat[3] = A3
- tfltdat[5] = A5
- tfltdat[6] = A6
- tfltdat[8] = A8
-
- if ((tfltdat[4] < 0.00001) && (tfltdat[4] > -0.00001))
- if ((tfltdat[5] < 0.00001) && (tfltdat[5] > -0.00001))
- goto doframe3
-
- XANGLE = -atan2(tfltdat[5], tfltdat[4])
-
- :doframe3
- A0 = tfltdat[0]
- A3 = tfltdat[3]
- A6 = tfltdat[6]
-
- C2 = cos(XANGLE)
- C3 = -sin(XANGLE)
-
- A1 = tfltdat[1] * C2 + tfltdat[2] * C3
- A4 = tfltdat[4] * C2 + tfltdat[5] * C3
- A7 = tfltdat[7] * C2 + tfltdat[8] * C3
-
- C2 = sin(XANGLE)
- C3 = cos(XANGLE)
-
- A2 = tfltdat[1] * C2 + tfltdat[2] * C3
- A5 = tfltdat[4] * C2 + tfltdat[5] * C3
- A8 = tfltdat[7] * C2 + tfltdat[8] * C3
-
- if (A0 > 0.0)
- goto doframe4
- A0 = -A0
- A8 = -A8
- YANGLE = YANGLE + 180
- XANGLE = XANGLE + 180
-
- :doframe4
-
- if (A4 > 0.0)
- goto doframe5
- A4 = -A4
- A8 = -A8
- XANGLE = XANGLE + 180
-
- :doframe5
- if (XANGLE > 180)
- XANGLE = XANGLE - 360
- if (YANGLE > 180)
- YANGLE = YANGLE - 360
- if (ZANGLE > 180)
- ZANGLE = ZANGLE - 360
-
- if ( optfill < 1 )
- print "prompt \"Frame %d: Drawing, please wait...\"\n",frame
- print "AUTOWINDOW 0.05, 0.05, 0.95, 0.95\n"
- if ( optfill == 0 )
- print "LEVELS 1,255\n"
- tmp = lens
- if ( lensset == 0 )
- lens = 0.0
- if ( standset == 0 )
- goto zerostand
- print "CAMERA 0.0, 0.0, 0.0, %f, %f, %f, %f, %f\n",\
- (-XANGLE * DEGREE), (-YANGLE * DEGREE), (-ZANGLE * DEGREE), lens, standoff
- goto endstand
- :zerostand
- print "CAMERA 0.0, 0.0, 0.0, %f, %f, %f, %f\n",\
- (-XANGLE * DEGREE), (-YANGLE * DEGREE), (-ZANGLE * DEGREE), lens
- :endstand
- print "REM VW %f %f %f\n", A0, A1, A2
- print "REM %f %f %f\n", A3, A4, A5
- print "REM %f %f %f\n", A6, A7, A8
- print "CLS\n"
- print "HLR 0, %d\n",curlevel
- if ( opt4view == 0 )
- print "pause \"Frame %d (RETURN for next frame, ESC to quit).\"\n",frame
- frame = frame + 1
- if (optdraw == 1)
- print "if (@key == -3)\n"
- if (optdraw == 1)
- print "MODE NORMAL\n"
- print "if (@key == -3)\n"
- print "exit\n"
- lens = tmp
- if ( from_bool == 1 )
- goto boolmenu
- if ( from_rotate == 1 )
- goto rotatemenu
- if ( from_render == 1 )
- goto rendermenu
- if ( from_main == 1 )
- goto mainmenu
-
- :doview
- curscale = @scale
- getview @view
-
- C1 = cos(ZROT) * cos(YROT)
- C2 = ((-sin(ZROT)) * cos(XROT) + cos(ZROT) * sin(YROT) * sin(XROT))
- C3 = (sin(ZROT) * sin(XROT) + cos(ZROT) * sin(YROT) * cos(XROT))
-
- A0 = @fltdat[0] * C1 + @fltdat[1] * C2 + @fltdat[2] * C3
- A3 = @fltdat[3] * C1 + @fltdat[4] * C2 + @fltdat[5] * C3
- A6 = @fltdat[6] * C1 + @fltdat[7] * C2 + @fltdat[8] * C3
-
- C1 = sin(ZROT) * cos(YROT)
- C2 = (cos(ZROT) * cos(XROT) + sin(ZROT) * sin(YROT) * sin(XROT))
- C3 = ((-cos(ZROT)) * sin(XROT) + sin(ZROT) * sin(YROT) * cos(XROT))
-
- A1 = @fltdat[0] * C1 + @fltdat[1] * C2 + @fltdat[2] * C3
- A4 = @fltdat[3] * C1 + @fltdat[4] * C2 + @fltdat[5] * C3
- A7 = @fltdat[6] * C1 + @fltdat[7] * C2 + @fltdat[8] * C3
-
- C1 = (-sin(YROT))
- C2 = cos(YROT) * sin(XROT)
- C3 = cos(YROT) * cos(XROT)
-
- A2 = @fltdat[0] * C1 + @fltdat[1] * C2 + @fltdat[2] * C3
- A5 = @fltdat[3] * C1 + @fltdat[4] * C2 + @fltdat[5] * C3
- A8 = @fltdat[6] * C1 + @fltdat[7] * C2 + @fltdat[8] * C3
-
- VIEW 9, A0, A1, A2, A3, A4, A5, A6, A7, A8
- set view, @lastvw
- scale curscale
- redraw
-
- XROT = 0.0
- YROT = 0.0
- ZROT = 0.0
- goto rotatemenu
-
- :do4view
- print "MODE NORMAL\n"
- print "DRAW 0\n"
- print "FOURVIEW\n"
- opt4view = 1
- prompt "Four view drawing will be produced"
- wait 2
- goto mainmenu
-
- REM '-----------------------------------------------------------------'
- REM '-- Handle rendering '
- REM '-----------------------------------------------------------------'
-
- :rendermenu
- from_render = 1
- getmenu "PV : Choose option",\
- "HIDDEN",\
- "DASHED",\
- "FILL",\
- "SMOOTH",\
- "PERSPC",\
- "LIGHT",\
- "CCLASS",\
- "FRAME"
-
- on (@key + 3) goto no,mainmenu,rendermenu,,\
- dohidden,\
- dodashed,\
- dofilled,\
- dosmooth,\
- doperspective,\
- light_menu,\
- color_menu,\
- doframe,\
- mainmenu
- goto rendermenu
-
- :dohidden
- optfill = 0
- print "FILL 0\n"
- print "DASH 0\n"
- prompt "Hidden lines selected"
- wait 2
- goto rendermenu
- :dodashed
- optfill = 0
- print "FILL 0\n"
- print "DASH 1\n"
- prompt "Dashed lines selected"
- wait 2
- goto rendermenu
-
- :dosmooth
- optfill = 2
- print "FILL 2\n"
- prompt "Smooth shading selected"
- wait 2
- goto rendermenu
-
- :dofilled
- optfill = 1
- print "FILL 1\n"
- prompt "Shaded solids selected"
- wait 2
- goto rendermenu
-
- :light_menu
- getmenu "Choose method of entering light coordinates",\
- "WORLD",\
- "VIEW"
- on (@key + 3) goto no,rendermenu,light_menu,,\
- dolight,\
- dovlight
- goto light_menu
-
- :color_menu
- getmenu "PV : Choose option",\
- "CLASS 1",\
- "CLASS 2",\
- "CLASS 3",\
- "CLASS 4",\
- "CLASS 5",\
- "CLASS 6",\
- "CLASS 7",\
- "CLASS 8",\
- "DONE"
-
- on (@key + 3) goto no,rendermenu,color_menu,,\
- do_class ,\
- do_class ,\
- do_class ,\
- do_class ,\
- do_class ,\
- do_class ,\
- do_class ,\
- do_class ,\
- rendermenu
- goto color_menu
-
- :do_class
- classnum = @key - 1
- classtmp = @key
- :do_cla
- tmp = colran[0][classnum]
- getint "PV : Enter outline index (%d) =>",tmp,colran[0][classnum]
- on (@key + 3 ) goto no,color_menu,do_cla,
- if ( (colran[0][classnum] >= 0) && (colran[0][classnum] <=15))
- goto do_class1
- pause "Invalid Index... press RETURN "
- colran[0][classnum] = tmp
- goto do_cla
- :do_class1
- tmp1 = colran[1][classnum]
- getint "PV : Enter range start (%d) =>",tmp1,colran[1][classnum]
- on (@key + 3 ) goto no,do_cla,do_class1,
- if ( (colran[1][classnum] >= 16) && (colran[1][classnum] <=255))
- goto do_class2
- pause "Invalid Range Start... press RETURN "
- colran[1][classnum] = tmp1
- goto do_class1
- :do_class2
- tmp2 = colran[2][classnum]
- getint "PV : Enter range end (%d) =>",tmp2,colran[2][classnum]
- on (@key + 3 ) goto no,do_class1,do_class2,
- if ( (colran[2][classnum] >= 16) && (colran[2][classnum] <=255))
- goto do_class3
- pause "Invalid Range End... press RETURN "
- colran[2][classnum] = tmp2
- goto do_class2
- :do_class3
- if ( colran[2][classnum] < colran[1][classnum] )
- goto error_class
-
- print "COLORCLASS %d, %d, %d, %d\n",\
- classtmp,colran[0][classnum],colran[1][classnum],colran[2][classnum]
- goto color_menu
-
- :error_class
- pause "Invalid Range End... press RETURN "
- colran[1][classnum] = tmp1
- colran[2][classnum] = tmp2
- goto do_class1
-
- :doperspective
- getmenu "Choose method of creating perspective view",\
- "LENS",\
- "STANDOFF",\
- "NONE"
- on (@key + 3) goto no,rendermenu,doperspective,,\
- dolens,\
- dostandoff,\
- donopersp
- goto rendermenu
-
- :domode
- if (optdraw == 1)
- goto dodraw1m
-
- :dodrwm
- getmenu "PV : Choose CADL mode option (NORMAL)",\
- "NORMAL",\
- "DRAW"
- on (@key + 3) goto mainmenu,mainmenu,dodrawn,,\
- dodrawn,\
- dodrawy
- goto dodrwm
-
- :dodraw1m
- getmenu "PV : choose CADL mode option (DRAW)",\
- "NORMAL",\
- "DRAW"
- on (@key + 3) goto mainmenu,mainmenu,dodrawy,,\
- dodrawn,\
- dodrawy
- goto dodraw1m
-
- :dodrawn
- print "MODE NORMAL\n"
- print "DRAW 0\n"
- optdraw = 0
- prompt "Mode set to normal "
- wait 2
- goto mainmenu
-
- :dodrawy
- print "MODE DRAW\n"
- print "DRAW 1\n"
- optdraw = 1
- prompt "Mode set to draw "
- wait 2
- goto mainmenu
-
-
- :dolight
- tmp = L1
- getflt "PV : Enter light source direction X (%f) =>",tmp,L1
- on (@key + 3 ) goto no,rendermenu,dolight,
-
- :dolt2
- tmp = L2
- getflt "PV : Enter light source direction Y (%f) =>",tmp,L2
- on (@key + 3 ) goto no,dolight,dolt2,
-
- :dolt3
- tmp = L3
- getflt "PV : Enter light source direction Z (%f) =>",tmp,L3
- on (@key + 3 ) goto no,dolt2,dolt3,
- print "LIGHT %f, %f, %f\n", L1, L2, L3
- goto rendermenu
-
- :dovlight
- tmp = L1
- getflt "PV : Enter view light source direction XV (%f) =>",tmp,L1
- on (@key + 3 ) goto no,rendermenu,dovlight,
-
- :dovlt2
- tmp = L2
- getflt "PV : Enter view light source direction YV (%f) =>",tmp,L2
- on (@key + 3 ) goto no,dovlight,dovlt2,
-
- :dovlt3
- tmp = L3
- getflt "PV : Enter view light source direction ZV (%f) =>",tmp,L3
- on (@key + 3 ) goto no,dovlt2,dovlt3,
-
- getview @view
- C1 = @fltdat[0] * L1 + @fltdat[1] * L2 + @fltdat[2] * L3
- C2 = @fltdat[3] * L1 + @fltdat[4] * L2 + @fltdat[5] * L3
- C3 = @fltdat[6] * L1 + @fltdat[7] * L2 + @fltdat[8] * L3
-
- print "REM VWLIGHT %f, %f, %f\n", L1, L2, L3
- print "LIGHT %f, %f, %f\n", C1, C2, C3
- goto rendermenu
-
- :dolevel
- tmp = curlevel
- getint "PV : Enter level (%d) =>",tmp,curlevel
- on (@key + 3 ) goto no,mainmenu,dolevel,
- if (curlevel < 1.0)
- curlevel = 1.0
- goto mainmenu
-
- :dolens
- tmp = lens
- getflt "PV : Enter lens (%f) =>",tmp,lens
- on (@key + 3 ) goto no,doperspective,dolens,
- lensset = 1
- if ( lens >= 1.0 )
- goto rendermenu
- pause "Invalid Lens... press RETURN "
- lens = tmp
- lensset = 0
- goto dolens
- REM '-----------------------------------------------------------------'
- REM '-- Handle standoff '
- REM '-----------------------------------------------------------------'
- :dostandoff
- tmp = standoff
- tmplens = lens
- getflt "PV : Enter standoff (%f) =>",tmp,standoff
- on (@key + 3 ) goto no,doperspective,dostandoff,
- standset = 1
- lens = 1.0
- if ( standoff > 0.0 )
- goto rendermenu
- pause "Invalid Standoff... press RETURN "
- standoff = tmp
- lens = tmplens
- standset = 0
- goto dostandoff
- :donopersp
- lensset = 0
- standset = 0
- prompt "No perspective applied "
- wait 2
- goto rendermenu
- :dovers
- prompt "PV.CDL - CADKEY SOLIDS 3.5 Copyright (C) 1988 CADKEY INC"
- wait 3
- goto mainmenu
-
- REM '-----------------------------------------------------------------'
- REM '-- Handle booleans '
- REM '-----------------------------------------------------------------'
- :boolmenu
- from_bool = 1
- grpcnt = 0
- grp1 = 1
- getmenu "PV : Choose option",\
- "UNION",\
- "INTER",\
- "DIFF",\
- "PLANE",\
- "LINEF",\
- "POLYF",\
- "DONE"
-
- on (@key + 3) goto no,mainmenu,boolmenu,,\
- dounion,\
- dointer,\
- dodiff,\
- doplane,\
- dolinef,\
- dopolyf,\
- mainmenu
- goto boolmenu
-
- :doplane
- operation = 4
- goto get_groups
- :gp
- grpcnt = 1
- getplane "Select plane to cut group",1
- on (@key + 3 ) goto no,boolmenu,gp,
- a = @fltdat[10]
- b = @fltdat[11]
- c = @fltdat[12]
- d = @fltdat[13]
- :gpos
- getpos "Select side of plane to keep",3
- on (@key + 3 ) goto no,doplane,gpos,
- tmp = @xworld*a + @yworld*b + @zworld*c + d
- if ( tmp < 0.0 )
- goto plcut0
- a = -a
- b = -b
- c = -c
- d = -d
- :plcut0
- goto gg
- :plcut
- if ( grp1 == 0 )
- grp1 = 1
- print "PLANCUT %f, %f, %f, %f, %d,\"new\", %d \n\n", \
- a,b,c,d,grp1,newgroup
- newgroup = newgroup + 1
- goto asframe
-
- :dounion
- operation = 1
- goto get_groups
-
- :dointer
- operation = 2
- goto get_groups
-
- :dodiff
- operation = 3
-
- :get_groups
- getmenu "PV : Choose option",\
- "SELECT",\
- "KEYIN"
-
- on (@key + 3) goto no,boolmenu,get_groups,,\
- selectg,\
- keyin
- goto get_groups
-
- :selectg
- if ( grpcnt == 0 )
- getent "Select first group",etype
- if ( grpcnt == 1 )
- getent "Select second group",etype
- on ( @key + 3 ) goto no, get_groups, selectg,
- grpcnt = grpcnt + 1
- if ( grpcnt == 1)
- grp1 = @INTDAT[1]
- if ( grp1 == 0 )
- grp1 = 1
- if ( operation == 4 )
- goto gp
- if ( grpcnt == 2)
- grp2 = @INTDAT[1]
- tmp = grp1
- if ( grpcnt == 1 )
- goto selectg
- goto gg
-
- :keyin
- tmp = newgroup - 1
- if ( grpcnt == 0 )
- getint "PV : Enter first group number (%d) =>",tmp,grp
- if ( grpcnt == 1 )
- getint "PV : Enter second group number (%d) =>",tmp,grp
- on ( @key + 3 ) goto no, get_groups, keyin,
- grpcnt = grpcnt + 1
- if ( grpcnt == 1 )
- grp1 = grp
- if ( operation == 4 )
- goto gp
- if ( grpcnt == 2 )
- grp2 = grp
- if ( grpcnt == 1 )
- goto keyin
-
- :gg
- tmp = newgroup
- getint "PV : Enter new group number (%d) =>",tmp,newgroup
- on (@key + 3 ) goto no,boolmenu,gg,
- if ( operation == 4 )
- goto plcut
- if ( grp1 == 0 )
- grp1 = 1
- if ( grp2 == 0 )
- grp2 = 1
- print "BOOLEAN %d, %d, %d,\"new\", %d \n\n",grp1,grp2,operation,newgroup
- grpused[newgroup] = 1
- newgroup = newgroup + 1
- :asframe
- getmenu "PV : Create frame",\
- "NO",\
- "YES"
-
- on (@key + 3) goto no,boolmenu,asframe,,\
- boolmenu,\
- doframe
- goto boolmenu
-
- :dolinef
- $tstr = "BOOLLINE"
- $nstr = "BOOLLINE"
- GETSTR "Enter line file name (%s) => ",$tstr,$nstr
- on (@key + 3 ) goto no,boolmenu,dolinef,
- CALL STRCPY ,$tstr,@cdlpath
- CALL STRCAT ,$tstr,$nstr
- $nstr = ".CDL"
- CALL STRCAT ,$tstr,$nstr
- print "LNFILE %s\n",$tstr
- goto boolmenu
-
- :dopolyf
- $tstr = "BOOLPOLY"
- $nstr = "BOOLPOLY"
- GETSTR "Enter polygon file name (%s) => ",$tstr,$nstr
- on (@key + 3 ) goto no,boolmenu,dolinef,
- CALL STRCPY ,$tstr,@cdlpath
- CALL STRCAT ,$tstr,$nstr
- $nstr = ".CDL"
- CALL STRCAT ,$tstr,$nstr
- print "PYFILE %s\n",$tstr
- goto boolmenu
-