Download

 

! ***************** sweep_ex_1 ****************************

!

! +++

! SUR_SWEEP Spine= straight line Profile= circle

!

!

! 2006-04-29 Gunnar Liden

! ---

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

 

!sdesce SUR_SWEEP Spine= straight line Profile= circle

 

LOCAL GEOMETRY MODULE sweep_ex_1();

 

CONSTANT VECTOR p1 = VEC(0,0,0);

CONSTANT VECTOR p2 = VEC(800,450,30);

CONSTANT VECTOR ydir = VEC(0.0, 0.0, 1.0);

 

CONSTANT FLOAT d = 20.0;

 

BEGINMODULE

 

! Spine

LIN_FREE(#1, p1, p2);

 

! Profile

MODE_BASIC();

ARC_1POS(#2, vec(0,0,0), 0.5*d:PEN=2);

MODE_GLOBAL();

 

! Surface

SUR_SWEEP(#3, #2, #1, -1, ydir:PEN=3);

 

 

ENDMODULE

 

 

 

! ***************** sweep_ex_2 ****************************

!

! +++

! SUR_SWEEP Spine= circle line Profile= straight line

!

!

! 2006-04-29 Gunnar Liden

! ---

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

 

!sdesce SUR_SWEEP Spine= circle line Profile= straight line

 

 

GLOBAL GEOMETRY MODULE sweep_ex_2();

 

CONSTANT VECTOR p1 = VEC(1.0, 0.5, 0.0);

CONSTANT VECTOR p2 = VEC(8.0, 4.5, 3.0);

 

CONSTANT FLOAT d = 30.0;

 

BEGINMODULE

 

! Spine

ARC_1POS(#2, vec(50.0 ,20.0, 0.0), 0.5*d:PEN=3);

 

! Profile

MODE_BASIC();

LIN_FREE(#1, p1, p2:PEN=2);

MODE_GLOBAL();

 

! Surface

SUR_SWEEP(#3, #1, #2:PEN=8);

 

 

ENDMODULE

 

 

 

 

 

! ***************** sweep_ex_3 ****************************

!

! +++

! SUR_SWEEP Spines= iso-curves

!

!

! 2006-04-29 Gunnar Liden

! ---

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

 

!sdesce SUR_SWEEP Spines= iso-curves

 

GLOBAL GEOMETRY MODULE sweep_ex_3();

 

CONSTANT FLOAT offset = 9.0;

 

CONSTANT INT bval_all = 1;

 

CONSTANT VECTOR dir = VEC(0.0, 0.0, 1.0);

 

INT  i_cur; ! Loop index iso curve

 

BEGINMODULE

 

! Create a free-form surface

  csys_1p(#2,"CsysCrv2", vec(0, 0, 30.0), 5.0, 60.0, -4.0:BLANK=1);

  cur_spline(#5,"CHORD", vec(-71.378714745169, 51.669409790779, 0.0), vec(0.0

    , 0.0, 0.0), vec(-44.378714745169, 67.269409790779, 0.0), vec(0.0, 0.0,

    0.0), vec(-9.8787147451691, 61.869409790779, 0.0), vec(0.0, 0.0, 0.0),

    vec(20.371285254831, 54.069409790779, 0.0), vec(0.0, 0.0, 0.0), vec(

    58.121285254831, 69.069409790779, 0.0), vec(0.0, 0.0, 0.0):BLANK=1);

  mode_local(#2);

  cur_spline(#6,"CHORD", vec(-65.878714745169, -27.230590209221, 0.0), vec(

    0.0, 0.0, 0.0), vec(-46.128714745169, -34.430590209221, 0.0), vec(0.0,

    0.0, 0.0), vec(-11.128714745169, -32.930590209221, 0.0), vec(0.0, 0.0,

    0.0), vec(36.121285254831, -16.430590209221, 0.0), vec(0.0, 0.0, 0.0),

    vec(71.621285254831, -10.130590209221, 0.0), vec(0.0, 0.0, 0.0)

    :BLANK=bval_all);

  mode_global();

  sur_ruled(#7,#5, #6, 1, 1:BLANK=1);

  sur_approx(#8,#7, "CUB_SUR", 1, 4:PEN=8,BLANK=bval_all);

 

! Create an offset surface

  sur_offs(#9,#8, offset:PEN=3,BLANK=1);

  sur_approx(#10,#9, "CUB_SUR", 1, 1:PEN=9,BLANK=bval_all);

 

! Profile curve

  MODE_BASIC();

  SET(BLANK=1);

  lin_free(#22,vec(-101.6+100.0,-7.3,0.0),vec(-105.2+100.0,-3.40,0.0));

  lin_free(#23,on(#22, 1.0), vec(-100.9+100.0,-1.96,0.0));

  lin_free(#24,on(#23, 1.0), vec( -98.5+100.0, 1.92,0.0));

  lin_free(#25,on(#24, 1.0), vec( -97.8+100.0,-3.40,0.0));

  lin_free(#26,on(#25, 1.0), vec( -95.8+100.0,-5.60,0.0));

  lin_free(#27,on(#26, 1.0), vec( -99.9+100.0,-5.45,0.0));

  lin_free(#28,on(#27, 1.0), on(#22, 0.0));

  SET(BLANK=0);

  CUR_COMP(#3, #22, #23, #24, #25, #26, #27, #28:BLANK=bval_all);

  MODE_GLOBAL();

 

! Sweep surfaces on first surface

 

  FOR  i_cur := 1 TO 28 STEP 4 DO

 

   cur_iso(#30,#8, "U", i_cur, 0.0, 4.0:BLANK=1);

   cur_approx(#31,#30, "CUB_SEG", 1, 1);

   DEL(#30);

   SUR_SWEEP(#4, #3, #31, 1, dir:PEN=2);

   DEL(#31);

 

  ENDFOR;

 

! Sweep surfaces on second surface

 

  FOR  i_cur := 1 TO 8 DO

 

   cur_iso(#40,#10, "V", i_cur*0.5, 0.0, 28.0:BLANK=1);

   cur_approx(#41,#40, "CUB_SEG", 1, 1);

   DEL(#40);

   SUR_SWEEP(#42, #3, #41, 1, dir:PEN=9);

   DEL(#41);

 

  ENDFOR;

 

ENDMODULE