Users:Geometry Generation/NURBS

From Carat++ Public Wiki
Jump to: navigation, search

Contents

Curves

Input Example

Example of a complete input block:

!###################################################################
!####                        NURBS-BLOCK                        ####
!###################################################################
NURBS_PATCH  1 : NURBS_1D
  CTRL_PTS = CTRL_PTS_DEF  1
  NCTRL =  2
  PDEG  =  2
  UKNOT =  0.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, 3.1415926535897931e+01, 3.1415926535897931e+01, 3.1415926535897931e+01
!===================================================================
CTRL_PTS_DEF  1
  CTRLPT  1  0.0000000000000000e+00  1.0000000000000000e+01  0.0000000000000000e+00  1.0000000000000000e+00
  CTRLPT  2  1.0000000000000000e+01  1.0000000000000000e+01  0.0000000000000000e+00  7.0710678118654757e-01
  CTRLPT  3  1.0000000000000000e+01  0.0000000000000000e+00  0.0000000000000000e+00  1.0000000000000000e+00
!===================================================================

Surfaces

Input Example

Example of a complete input block:

!###################################################################
!####                        NURBS-BLOCK                        ####
!###################################################################
NURBS_PATCH  2 : NURBS_2D
  CTRL_PTS = CTRL_PTS_DEF  2
  NCTRL =  2                                 !number of control points starting from 0 in u-direction
  MCTRL =  1                                 !number of control points starting from 0 in v-direction
  PDEG  =  2                                 !polynomial degree in u-direction
  QDEG  =  1                                 !polynomial degree in v-direction
  UKNOT =  0.0, 0.0, 0.0, 10.0, 10.0, 10.0   !knot vector in u-directin (starts and ends with a multiplicity of p+1)
  VKNOT =  0,0,1,1                           !knot vector in v-directin (starts and ends with a multiplicity of q+1)
  TRIMMING = B_REP 1                         !(optional) includes a B-Rep description for the surface (Trimmed surface) 
!===================================================================
CTRL_PTS_DEF  2  !number of control points                                       
  CTRLPT  1  0.0000000000000000e+00  1.0000000000000000e+01  0.0000000000000000e+00  1.0000000000000000e+00  ! ||==>u 
  CTRLPT  2  1.0000000000000000e+01  1.0000000000000000e+01  0.0000000000000000e+00  7.0710678118654757e-01  ! ||     1 2 3 
  CTRLPT  3  1.0000000000000000e+01  0.0000000000000000e+00  0.0000000000000000e+00  1.0000000000000000e+00  !\  /    4 5 6
  CTRLPT  4  0.0000000000000000e+00  1.0000000000000000e+01  1.0000000000000000e+00  1.0000000000000000e+00  ! \/v
  CTRLPT  5  1.0000000000000000e+01  1.0000000000000000e+01  1.0000000000000000e+00  7.0710678118654757e-01  ! 
  CTRLPT  6  1.0000000000000000e+01  0.0000000000000000e+00  1.0000000000000000e+00  1.0000000000000000e+00  !
!===================================================================
!###################################################################
!####                        TRIMMING                           ####
!###################################################################
!             id   inner/outer    trimming curve id    Direction (FALSE means curve direction needs to be reversed for having correct orientation)
B_REP 1
 B_REP_LOOP   1         0              1               TRUE       2   TRUE   3   TRUE   4   TRUE   !outer loop (counter clockwise oriented trimming curves)
 !B_REP_LOOP   2         1             5               FALSE      6   TRUE   7   TRUE   8   TRUE   !inner loop (clockwise oriented trimming curves)
!###################################################################
!####                  NURBS-BLOCK-PARAMETER                    ####
!###################################################################
NURBS_PATCH_PAR  1 : NURBS_1D                                               !trimming curve within parameter space
  CTRL_PTS = CTRL_PTS_PAR  1
  NCTRL =  1
  PDEG  =  1
  UKNOT =  0.0000000000e+00, 0.0000000000e+00, 1.0000000000e+01, 1.0000000000e+01
  TRIMMING = [0.000000e+000 1.000000e+000]                                  !(optional) defines active range of the trimming curve     
!===================================================================
CTRL_PTS_PAR  1
  CTRLPT_PAR_ID  1   
  CTRLPT_PAR_ID  2 
!===================================================================
!###################################################################
!####                  NURBS-BLOCK-PARAMETER                    ####
!###################################################################
NURBS_PATCH_PAR  2 : NURBS_1D
  CTRL_PTS = CTRL_PTS_PAR  2
  NCTRL =  1
  PDEG  =  1
  UKNOT =  0.0000000000e+00, 0.0000000000e+00, 1.0000000000e+01, 1.0000000000e+01
!===================================================================
CTRL_PTS_PAR  2
  CTRLPT_PAR_ID  3                                                           !reference to control points in parameter space
  CTRLPT_PAR_ID  4  
!===================================================================
!###################################################################
!####                  NURBS-BLOCK-PARAMETER                    ####
!###################################################################
NURBS_PATCH_PAR  3 : NURBS_1D
  CTRL_PTS = CTRL_PTS_PAR  3
  NCTRL =  1
  PDEG  =  1
  UKNOT =  0.0000000000e+00, 0.0000000000e+00, 10, 10
!===================================================================
CTRL_PTS_PAR  3
  CTRLPT_PAR_ID  5  
  CTRLPT_PAR_ID  6  
!===================================================================
!###################################################################
!####                  NURBS-BLOCK-PARAMETER                    ####
!###################################################################
NURBS_PATCH_PAR  4 : NURBS_1D
  CTRL_PTS = CTRL_PTS_PAR  4
  NCTRL =  1
  PDEG  =  1
  UKNOT =  0.0000000000e+00, 0.0000000000e+00, 1.0000000000e+01, 1.0000000000e+01
!===================================================================
CTRL_PTS_PAR  4
  CTRLPT_PAR_ID  7  
  CTRLPT_PAR_ID  8  
!===================================================================
!###################################################################
!####                  NURBS-BLOCK-PARAMETER                    ####
!###################################################################
NURBS_PATCH_PAR  5 : NURBS_1D
  CTRL_PTS = CTRL_PTS_PAR  5
  NCTRL =  1
  PDEG  =  1
  UKNOT =  0.0000000000e+00, 0.0000000000e+00, 10, 10
!===================================================================
CTRL_PTS_PAR  5
  CTRLPT_PAR_ID  9  
  CTRLPT_PAR_ID  10  
!===================================================================
!===================================================================
CTRL_PTS_PAR_DEF         u                   v              w(optional)       weight(optional but requires u, v, and w)
  CTRLPT_PAR  1    0.0000000000e+00    0.0000000000e+00  !0.0                  0.707
  CTRLPT_PAR  2    1.0000000000e+01    0.0000000000e+00
  CTRLPT_PAR  3    1.0000000000e+01    0.0000000000e+00
  CTRLPT_PAR  4    1.0000000000e+01    1.0000000000e+01
  CTRLPT_PAR  5    1.0000000000e+01    1.0000000000e+01
  CTRLPT_PAR  6    0.0000000000e+00    1.0000000000e+01
  CTRLPT_PAR  7    0.0000000000e+00    1.0000000000e+01
  CTRLPT_PAR  8    0.0000000000e+00    0.0000000000e+00

Volumes

Input Example

Example of a complete input block:

!###################################################################
!####                        NURBS-BLOCK                        ####
!###################################################################
NURBS_PATCH  3 : NURBS_3D
  CTRL_PTS = CTRL_PTS_DEF  3
  NCTRL =  2
  MCTRL =  1
  LCTRL =  1
  PDEG  =  2
  QDEG  =  1
  RDEG  =  1
  UKNOT =  0, 0, 0, 10, 10, 10
  VKNOT =  0,0,1,1
  WKNOT =  0,0,1,1
!===================================================================
CTRL_PTS_DEF  3
  CTRLPT  1  0.0000000000000000e+00  1.0000000000000000e+01  0.0000000000000000e+00  1.0000000000000000e+00
  CTRLPT  2  1.0000000000000000e+01  1.0000000000000000e+01  0.0000000000000000e+00  7.0710678118654757e-01
  CTRLPT  3  1.0000000000000000e+01  0.0000000000000000e+00  0.0000000000000000e+00  1.0000000000000000e+00
  CTRLPT  4  0.0000000000000000e+00  1.0000000000000000e+01  1.0000000000000000e+00  1.0000000000000000e+00
  CTRLPT  5  1.0000000000000000e+01  1.0000000000000000e+01  1.0000000000000000e+00  7.0710678118654757e-01
  CTRLPT  6  1.0000000000000000e+01  0.0000000000000000e+00  1.0000000000000000e+00  1.0000000000000000e+00
  CTRLPT  7  0.0000000000000000e+00  2.0000000000000000e+01  0.0000000000000000e+00  1.0000000000000000e+00
  CTRLPT  8  2.0000000000000000e+01  2.0000000000000000e+01  0.0000000000000000e+00  7.0710678118654757e-01
  CTRLPT  9  2.0000000000000000e+01  0.0000000000000000e+00  0.0000000000000000e+00  1.0000000000000000e+00
  CTRLPT  10 0.0000000000000000e+00  2.0000000000000000e+01  1.0000000000000000e+00  1.0000000000000000e+00
  CTRLPT  11 2.0000000000000000e+01  2.0000000000000000e+01  1.0000000000000000e+00  7.0710678118654757e-01
  CTRLPT  12 2.0000000000000000e+01  0.0000000000000000e+00  1.0000000000000000e+00  1.0000000000000000e+00
!===================================================================




Whos here now:   Members 0   Guests 1   Bots & Crawlers 0
 
Personal tools
Content for Developers