!   TITLE:  create_circ_area.mac (SM_TOOL)
!
!
!       Optimized code.
!
!   OBJECTIVE:
!
!   This sub-macro creates a circular area.
!
!
!   COMMAND SYNTAX:
!
!                           (1)    (2)     (3)     (4)    (5)
!       CREATE_CIRC_AREA, radius, z_loc, ang_inc, n_arc, st_ang
!
!
!   ARGUMENTS:
!
!       (1) radius = the radius of the circle
!
!       (2) z_loc = the location of the circle center along the z-axis
!                   of the active coordinate system
!
!       (3) ang_inc = angle subtended by arc(s). When specifying this
!                     parameter, the algorithm will create the circle
!                     with a series of arcs subtending an angle of
!                     'ANG_INC'. Therefore, the value of this parameter
!                     must be an integral divisor of 360; i.e., 3,4,5,6,
!                     8,9,10,12,....etc. When this parameter is desired,
!                     'N_ARC' must be left blank.
!
!       (4) n_arc = The number of equal arc increments that the circle
!                   is constructed from.  If this argument is specified,
!                   then 'ANG_INC' is over-ridden and the circle is
!                   created by this number of equal arcs.
!
!       (5) st_ang = The start angle of the first arc used in the
!                    construction of the circle.
!
!
!   DESCRIPTION:
!
!   This sub-macro creates a circular area from a set of circular profile
!   lines. It may be used to create a full circle or a partial circle of arced
!   lines. The circle or arcs may be created with various arc angle increments
!   or number of arcs within given start and finish angles.
!
!   When arguments 2, 3, 4 and 5 are left blank, the algorithm defaults to
!   a circle of 4-90 degree arcs starting at the X-axis (0 degrees).
!
!
!
*get,prkey_,active,0,prkey
/nopr
!
configuration,0
!
rad_=arg1
zloc_=arg2
anginc_=arg3
narc_=arg4
stang_=arg5
!
clocal,csn+50,1,0,0,0
!
finang_=stang_+360
!
*if,narc_,eq,0,then
    *if,anginc_,eq,0,then
        anginc_=90
        narc_=4
    *else
        narc_=abs(finang_-stang_)/anginc_
    *endif
*else
    anginc_=abs(finang_-stang_)/narc_
*endif
!
*do,ii_,0,narc_-1,1
    ang_=stang_+(ii_*anginc_)
    k,,rad_,ang_,zloc_
*enddo
!
create_lines,1
!
*if,anginc_,eq,180,or,narc_,eq,2,then
    lsel,r,line,,lm
    clocal,csn+51,0,0,0,0,stang_,0,0
    lsymm,y,lm
    get_max_entity
    lglue,lm-1,lm
    csdele,csn+51
*endif
!
isolate_lines
configuration,-1
!
al,all
csdele,csn+50
!
configuration,1
init_entity_num
!
aplot
!
*set,ii_
*set,rad_
*set,stang_
*set,finang_
*set,anginc_
*set,narc_
*set,ang_
*set,zloc_
!
*if,prkey_,eq,1,then
    /go
*endif