!   TITLE:  parm_calcs.mac (CALCULATION)
!
!
!           Change output format for clarity.
!
!
!   This sub-macro calculates the difference between an entity number (key-
!   point, line, area, volume, node and element) and the current maximum value
!   retrieved and stored  in the database by INIT_ENTITY_NUM or GET_MAX_ENTITY
!   (km, lm, am, vm, nm and em). The difference is output to a dialogue box.
!   The maximum number of entities that can be input is 4.  If less than 4
!   entities are input, the remaining user prompts are assumed 0 by default,
!   and just hitting the enter key will suffice.
!
!   The purpose of this calculation(s) is to rapidly find the entity offset
!   numbers when writing macro code.
!
!
!       EXAMPLE:    If km=55, and the keypoint entity number in question
!                   is kp=26, then that entity may be specified in a macro
!                   by 'km-29'. The output from the dialogue box will
!                   appear as follows:
!
!                               KP 26 : km+( -29 )
!
!                   Therefore, your parameter call-out in the macro is 'km-29'.
!
!
!
! PARM_CALCS, entity, prm1, prm2, prm3
!
!
*get,prkey_,active,0,prkey
/nopr
!
multipro,'start',5
    *cset,1,3,entity,'Type of Solid Model Entity',1
    *cset,4,6,prm_1,'Enter Solid Model Entity #1',0
    *cset,7,9,prm_2,'Enter Solid Model Entity #2',0
    *cset,10,12,prm_3,'Enter Solid Model Entity #3',0
    *cset,13,15,prm_4,'Enter Solid Model Entity #4',0
    *cset,61,62,'Calculate the entity offset par','ameter values. Enter entity type'
    *cset,63,64,'(k=1, l=2, a=3, v=4, n=5 or e=6',') and numbers.'
multipro,'end'
!
*if,entity,eq,1,then
    err_=0
    entity='k'
*elseif,entity,eq,2,then
    err_=0
    entity='l'
*elseif,entity,eq,3,then
    err_=0
    entity='a'
*elseif,entity,eq,4,then
    err_=0
    entity='v'
*elseif,entity,eq,5,then
    err_=0
    entity='n'
*elseif,entity,eq,6,then
    err_=0
    entity='e'
*else
    err_=1
*msg,ui,%prm_1%,%diff1%,%prm_2%,%diff2%,%prm_3%,%diff3%
Invalid entry for 1st argument. Must be parameter type values 1 thru 6. READ MENU!
    *set,entity,
    *set,prm_1,
    *set,prm_2,
    *set,prm_3,
    *set,prm_4,
*endif
!
*if,err_,eq,0,then
    *do,i,1,4,1
        diff%i%=prm_%i%-%entity%m
    *enddo
    !
    *if,entity,eq,'k',then
*msg,ui,%prm_1%,%diff1%,%prm_2%,%diff2%,%prm_3%,%diff3%,%prm_4%,%diff4%
KP %i : km+( %i ) ----- KP %i : km+( %i ) ----- KP %i : km+( %i ) ----- KP %i : km+( %i )
    *elseif,entity,eq,'l',then
*msg,ui,%prm_1%,%diff1%,%prm_2%,%diff2%,%prm_3%,%diff3%,%prm_4%,%diff4%
L %i : lm+( %i ) ----- L %i : lm+( %i ) ----- L %i : lm+( %i ) ----- L %i : lm+( %i )
    *elseif,entity,eq,'a',then
*msg,ui,%prm_1%,%diff1%,%prm_2%,%diff2%,%prm_3%,%diff3%,%prm_4%,%diff4%
A %i : am+( %i ) ----- A %i : am+( %i ) ----- A %i : am+( %i ) ----- A %i : am+( %i )
    *elseif,entity,eq,'v',then
*msg,ui,%prm_1%,%diff1%,%prm_2%,%diff2%,%prm_3%,%diff3%,%prm_4%,%diff4%
V %i : vm+( %i ) ----- V %i : vm+( %i ) ----- V %i : vm+( %i ) ----- V %i : vm+( %i )
    *elseif,entity,eq,'n',then
*msg,ui,%prm_1%,%diff1%,%prm_2%,%diff2%,%prm_3%,%diff3%,%prm_4%,%diff4%
N %i : nm+( %i ) ----- N %i : nm+( %i ) ----- N %i : nm+( %i ) ----- N %i : nm+( %i )
    *elseif,entity,eq,'e',then
*msg,ui,%prm_1%,%diff1%,%prm_2%,%diff2%,%prm_3%,%diff3%,%prm_4%,%diff4%
E %i : em+( %i ) ----- E %i : em+( %i ) ----- E %i : em+( %i ) ----- E %i : em+( %i )
    *endif
*endif
!
*set,entity,
*set,prm_1,
*set,prm_2,
*set,prm_3,
*set,prm_4,
*set,err_,
*set,diff1,
*set,diff2,
*set,diff3,
*set,diff4,

*if,prkey_,eq,1,then
    /go
*endif