Next: Subroutine UISURF
Up: FEMGEN Geometry User Routines
Previous: Subroutine UISETL
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