Download

 

 

 

! ***************** s_isoupar   ****************************

!

! +++

! Create U isoparameter curves on a surface

!

! 2006-03-25 Gunnar Liden

! ---

!************************************************************

 

!sdesce Create U isoparameter curves on a surface

 

GLOBAL GEOMETRY MODULE s_isoupar   (

 

REF    s_id                  > "@t16 Select surface";

INT    n_u         := 30     > "@ Number of U parameter lines");

 

 

! Internal variables

 

  INT    npatu;     ! Number of patches in U direction

  INT    npatv;     ! Number of patches in V direction

 

  STRING iso_c*1;   ! Isoparameter U or V

  FLOAT  start_p;   ! Curve start parameter

  FLOAT  end_p;     ! Curve end   parameter

 

  INT    i_u;       ! Loop index U parameter

 

  FLOAT  delta;     ! Delta parameter value

 

BEGINMODULE

 

! +++

! Algorithm

! ---

 

 

! +++

! 1. Retrieve number of patches. Calls of GETSURH.

! ---

 

  GETSURH(s_id,"NPATU",npatu);

  GETSURH(s_id,"NPATV",npatv);

 

! +++

! 2. Create U parameter lines

! ---

 

  IF n_u >= 2 THEN 

    delta:= npatu/(n_u-1);

  ELSE

    EXIT("s_isoupar n_u < 2");

  ENDIF;

 

  iso_c  := "U";

  start_p:=   0.0;

  end_p  :=   npatv;

 

  FOR i_u:= 1 TO  n_u  DO

 

    CUR_ISO(#1,s_id,iso_c, (i_u-1)*delta, start_p,end_p);

 

  ENDFOR; 

 

ENDMODULE

 

! ***************** s_isovpar   ****************************

!

! +++

! Create V isoparameter curves on a surface

!

! 2006-03-25 Gunnar Liden

! ---

!************************************************************

 

!sdesce Create V isoparameter curves on a surface

 

GLOBAL GEOMETRY MODULE s_isovpar   (

 

REF    s_id                  > "@t16 Select surface";

INT    n_v         := 30     > "Number of V parameter lines");

 

 

! Internal variables

 

  INT    npatu;      ! Number of patches in U direction

  INT    npatv;      ! Number of patches in V direction

 

  STRING iso_c*1;    ! Isoparameter U or V

  FLOAT  start_p;    ! Curve start parameter

  FLOAT  end_p;      ! Curve end   parameter

 

  INT    i_v;        ! Loop index V parameter

 

  FLOAT  delta;      ! Delta parameter value

 

BEGINMODULE

 

! +++

! Algorithm

! ---

 

! +++

! 1. Retrieve number of patches. Calls of GETSURH.

! ---

 

 

  GETSURH(s_id,"NPATU",npatu);

  GETSURH(s_id,"NPATV",npatv);

 

! +++

! 2. Create U parameter lines

! ---

 

  IF n_v >= 2 THEN

    delta:= npatv/(n_v-1);

  ELSE

    EXIT("s_isovpar n_v < 2");

  ENDIF;

 

  iso_c  := "V";

  start_p:=   0.0;

  end_p  :=   npatu;

 

  FOR i_v:= 1 TO  n_v  DO

 

    CUR_ISO(#1,s_id,iso_c, (i_v-1)*delta, start_p,end_p);

 

  ENDFOR; 

 

 

ENDMODULE