next up previous
Next: Subroutine UISURF Up: FEMGEN Geometry User Routines Previous: Subroutine UISETL

Subroutine UISHAP

      SUBROUTINE UISHAP(IWHAT,INDEX,NAME,ISTYPE,
     1                  LREAL,RDATA,LINTG,IDATA,LPTR,IPTR,
     2                  IERROR)
C                                                         U I S H A P
C                                                         ===========
C********************************************************************
C
C --- PURPOSE : INTERFACE TO SHAPE ENTITY IN FEMGEN DATA BASE
C
C --- IN      : IWHAT  : ACTION REQUESTED ON ENTITY
C                      : 1 : CREATE
C                      : 2 : FIND
C                      : 3 : REPLACE
C                      : 4 : READ
C                      : 5 : DELETE
C
C --- IN/OUT  : INDEX  : POINTER TO INSTANCE
C             : NAME   : ENTITY NAME
C             : ISTYPE : ENTITY SUB-TYPE
C             : LREAL  : NUMBER OF REALS
C             : RDATA  : REAL DATA
C             : LINTG  : NUMBER OF INTEGERS
C             : IDATA  : INTEGER DATA
C             : LPTR   : NUMBER OF POINTERS
C             : IPTR   : POINTER DATA
C             
C --- OUT     : IERROR : 0 : OK
C                      : 1 : ACTION NOT PERMITTED
C
C********************************************************************
C
C
C --- METHOD  : THE DATA PASSED TO OR OUTPUT FROM THIS ROUTINE IS
C               DEPENDENT ON THE RELEVANT SUB-TYPE.
C
C --- CONIC SHAPES
C
C ITYPE = 6    : SHAPE
C
C   ISTYPE = 1 : PLANE
C              : LPTR          = NUMBER OF POINTS (3)
C              : IPTR(1:LPTR)  = INDICES TO POINT INSTANCES
C              : LREAL         = 10
C              : RDATA(1:10)   = COEFFICIENTS (OUTPUT ONLY)
C
C   ISTYPE =11 : PLANE
C              : LPTR          = 1
C              : IPTR(1)       = INDICES TO COORDINATE SYSTEM
C              : LREAL         = 14
C              : RDATA(1:3)    = NORMAL DIRECTION
C              : RDATA(4)      = DISTANCE TO ORIGIN
C              : RDATA(5:14)   = COEFFICIENTS (OUTPUT ONLY)
C
C   ISTYPE = 2 : SPHERE
C              : LREAL         = 11
C              : RDATA(1)      = RADIUS
C              : RDATA(2:11)   = COEFFICIENTS (OUTPUT ONLY)
C              : LPTR          = NUMBER OF POINTS (1)
C              : IPTR(1)       = INDEX TO CENTRE POINT INSTANCE
C
C   ISTYPE = 3 : CYLINDER; OR ISTYPE=13 TRUNCATED CYLINDER AT END PTS   
C              : LREAL         = 11
C              : RDATA(1)      = RADIUS
C              : RDATA(2:11)   = COEFFICIENTS (OUTPUT ONLY)
C              : LPTR          = NUMBER OF POINTS (2)
C              : IPTR(1:LPTR)  = INDICES TO AXIS POINT INSTANCES
C
C   ISTYPE =23 : CYLINDER TRUNCATED WITH LENGTH AND OFFSET             
C              : LREAL         = 13                                   
C              : RDATA(1)      = RADIUS                              
C              : RDATA(2)      = LENGTH                             
C              : RDATA(3)      = OFFSET                            
C              : RDATA(4:13)   = COEFFICIENTS (OUTPUT ONLY: READ) 
C              : LPTR          = NUMBER OF POINTS (2)            
C              : IPTR(1:LPTR)  = INDICES TO AXIS POINT INSTANCES
C
C   ISTYPE = 4 : CONE; OR ISTYPE=14 TRUNCATED CONE AT END POINTS
C              : LREAL         = 13
C              : RDATA(1)      = RADIUS AT FIRST POINT
C              : RDATA(2)      = RADIUS AT SECOND POINT
C              : RDATA(3)      = SLOPE
C              : RDATA(4:13)   = COEFFICIENTS (OUTPUT ONLY)
C              : LPTR          = NUMBER OF POINTS (2)
C              : IPTR(1:LPTR)  = INDICES TO AXIS POINT INSTANCES
C
C   ISTYPE =24 : CONE TRUNCATED WITH LENGTH AND OFFSET
C              : LREAL         = 15                                    
C              : RDATA(1)      = RADIUS AT FIRST POINT                
C              : RDATA(2)      = RADIUS AT SECOND POINT              
C              : RDATA(3)      = SLOPE                              
C              : RDATA(4)      = LENGTH                            
C              : RDATA(5)      = OFFSET                           
C              : RDATA(6:15)   = COEFFICIENTS (OUTPUT ONLY: READ)
C              : LPTR          = NUMBER OF POINTS (2)           
C              : IPTR(1:LPTR)  = INDICES TO AXIS POINT INSTANCES
C
C --- Curve types
C
C   ISTYPE = 101 : straight
C                : LREAL       = NUMBER OF REALS = 6
C                : RDATA       = X,Y,Z of point on line
C                : RDATA       = DX,DY,DZ DIRECTION
C                : LPTR        = 0 or 1 or 2
C                : IPTR        = UNDERLYING SHAPE 
C                : IPTR        = co-curve 
C            102 : quadric
C            103 : intersection
C            104 : spline
C   ISTYPE = 105 : NURB Curve
C                : LINTG       = 2 
C                : IDATA(1)    = K = UPPER INDEX (NUMBER OF POINTS - 1)
C                : IDATA(2)    = M = DEGREE OF BASIS FUNCTIONS 
C                : LREAL       = NUMBER OF REALS
C                : RDATA       = (K+M+2)*(VALUES OF KNOT SEQUENCES)
C                : RDATA       = (K+1)*(WEIGHTS)
C                : RDATA       = (K+1)*(X,Y,Z COORDINATES)
C                : RDATA       = START VALUE OF PARAMETER
C                : RDATA       = END VALUE OF PARAMETER
C            106 : fillet curve
C
C --- surf type
C  
C   ISTYPE = 201 : linear sweep
C            202 : rotational sweep
C            203 : path sweep
C            204 : bi-poly spline surface
C   ISTYPE = 205 : NURB SURFACE
C                : LINTG       = 5
C                : IDATA(1)    = K1 = UPPER INDEX IN 1st PARAMETRIC DIR
C                                     (ie NUMBER OF POINTS - 1)
C                : IDATA(2)    = K2 = UPPER INDEX IN 2nd PARAMETRIC DIR
C                : IDATA(3)    = M1 = DEGREE OF BASIS FUNCTIONS IN 1ST
C                : IDATA(4)    = M2 = DEGREE OF BASIS FUNCTIONS IN 2ND
C                : IDATA(5)    = ICONRB SHAPE SIMPLIFICATION FLAG  (NOTE 1)
C                : IDATA(6)    = TYPE
C                                1 : UNIFORM (no knots or weights)
C                                2 : NON-UNIFORM (knots but no weights)
C                                3 : RATIONAL (knots and weights)
C                : LREAL       = NUMBER OF REALS
C                : RDATA       = (K1+M1+1)*(VALUES OF KNOT SEQS 1ST)
C                : RDATA       = (K2+M2+1)*(VALUES OF KNOT SEQS 2ND)
C                : RDATA       = (K1+1)*(K2+1)*(WEIGHTS)
C                : RDATA       = (K1+1)*(K2+1)*(X,Y,Z COORDINATES)
C                : RDATA       = START VALUE OF PARAMETER IN 1ST
C                : RDATA       = END VALUE OF PARAMETER IN 1ST
C                : RDATA       = START VALUE OF PARAMETER IN 2ND
C                : RDATA       = END VALUE OF PARAMETER IN 2ND
C            206 : fillet surface
C
C --- NOTE 1 : CODE FOR SIMPLIFICATION OF SHAPES 
C
C              0  => No Conversion at all
C              1  => Simplify to Planes 
C             10  => Simplify to Cylinders and Cones 
C             11  => Simplify to Planes, Cylinders and Cones  
C
C
C********************************************************************
C
C --- CONIC SHAPES ARE REPRESENTED BY :
C
C     C(1)*X*X+C(2)*Y*Y+C(3)*Z*Z+C(4)*X*Y+C(5)*X*Z+C(6)*Y*Z+
C     C(7)*X+C(8)*Y+C(9)*Z+C(10) 
C
C********************************************************************
C
      REAL    RDATA(*)
      INTEGER IWHAT,INDEX,ISTYPE,LREAL,LINTG,LPTR,IERROR
      INTEGER IDATA(*),IPTR(*)
      CHARACTER*(*) NAME



Femsys Limited
8/18/1999