From DocR23
Ruled Skinning and Helical Sweeping
Ruled Skinning
Scheme Script
(part:clear)
; --- Main shaft
(define wire1 (wire-body (list (edge:circular (position 0 0 0) 20))))
(define wire2 (wire-body (list (edge:circular (position 0 0 20) 20))))
(define wire3 (wire-body (list (edge:circular (position 0 0 20) 10))))
(define wire4 (wire-body (list (edge:circular (position 0 0 500) 10))))
(define shaft (sheet:skin-wires-ruled (list wire1 wire2 wire3 wire4)))
(entity:delete (list wire1 wire2 wire3 wire4))
; --- Upper portion
(define wire1 (wire-body (list (edge:circular (position 0 0 30) 10))))
(define wire2 (wire-body (list (edge:circular (position 0 0 30) 50))))
(define wire3 (wire-body (list (edge:circular (position 0 0 40) 50))))
(define wire4 (wire-body (list (edge:circular (position 0 0 60) 70))))
(define wire5 (wire-body (list (edge:circular (position 0 0 70) 70))))
(define wire6 (wire-body (list (edge:circular (position 0 0 80) 90))))
(define wire7 (wire-body (list (edge:circular (position 0 0 90) 90))))
(define wire8 (wire-body (list (edge:circular (position 0 0 90) 10))))
(define upper_rim (sheet:skin-wires-ruled (list wire1 wire2 wire3 wire4 wire5 wire6 wire7 wire8)))
(entity:delete (list wire1 wire2 wire3 wire4 wire5 wire6 wire7 wire8))
; --- Do a unite
(bool:unite shaft upper_rim)
; --- Blend some edges
(solid:blend-edges (list-ref (entity:edges shaft) 12) 2)
(solid:blend-edges (list-ref (entity:edges shaft) 2) 2)
(solid:blend-edges (list-ref (entity:edges shaft) 14) 2)
(solid:blend-edges (list-ref (entity:edges shaft) 9) 2)
(solid:blend-edges (list-ref (entity:edges shaft) 7) 2)
(solid:blend-edges (list-ref (entity:edges shaft) 4) 2)
(solid:blend-edges (list-ref (entity:edges shaft) 17) 2)
(solid:blend-edges (list-ref (entity:edges shaft) 3) 2)
(solid:blend-edges (list-ref (entity:edges shaft) 3) 2)
(solid:blend-edges (list-ref (entity:edges shaft) 3) 2)
; --- Lower portion
(define wire1 (wire-body (list (edge:circular (position 0 0 280) 10))))
(define wire2 (wire-body (list (edge:circular (position 0 0 280) 90))))
(define wire3 (wire-body (list (edge:circular (position 0 0 290) 90))))
(define wire4 (wire-body (list (edge:circular (position 0 0 300) 70))))
(define wire5 (wire-body (list (edge:circular (position 0 0 310) 70))))
(define wire6 (wire-body (list (edge:circular (position 0 0 330) 50))))
(define wire7 (wire-body (list (edge:circular (position 0 0 340) 50))))
(define wire8 (wire-body (list (edge:circular (position 0 0 340) 10))))
(define lower_rim (sheet:skin-wires-ruled (list wire1 wire2 wire3 wire4 wire5 wire6 wire7 wire8)))
(entity:delete (list wire1 wire2 wire3 wire4 wire5 wire6 wire7 wire8))
; --- Do a unite
(bool:unite shaft lower_rim)
; --- Blend some edges
(solid:blend-edges (list-ref (entity:edges shaft) 7) 2)
(solid:blend-edges (list-ref (entity:edges shaft) 6) 2)
(solid:blend-edges (list-ref (entity:edges shaft) 3) 2)
(solid:blend-edges (list-ref (entity:edges shaft) 3) 2)
(solid:blend-edges (list-ref (entity:edges shaft) 3) 2)
(solid:blend-edges (list-ref (entity:edges shaft) 3) 2)
; --- Internal portion
(define wire1 (wire-body (list (edge:circular (position 0 0 110) 18))))
(define wire2 (wire-body (list (edge:circular (position 0 0 120) 18))))
(define wire3 (wire-body (list (edge:circular (position 0 0 140) 15))))
(define wire4 (wire-body (list (edge:circular (position 0 0 140) 18))))
(define wire5 (wire-body (list (edge:circular (position 0 0 150) 18))))
(define wire6 (wire-body (list (edge:circular (position 0 0 170) 15))))
(define wire7 (wire-body (list (edge:circular (position 0 0 170) 18))))
(define wire8 (wire-body (list (edge:circular (position 0 0 180) 18))))
(define wire9 (wire-body (list (edge:circular (position 0 0 200) 15))))
(define wire10 (wire-body (list (edge:circular (position 0 0 200) 18))))
(define wire11 (wire-body (list (edge:circular (position 0 0 210) 18))))
(define wire12 (wire-body (list (edge:circular (position 0 0 230) 15))))
(define wire13 (wire-body (list (edge:circular (position 0 0 230) 18))))
(define wire14 (wire-body (list (edge:circular (position 0 0 240) 18))))
(define wire15 (wire-body (list (edge:circular (position 0 0 260) 15))))
(define wire16 (wire-body (list (edge:circular (position 0 0 260) 10))))
(define internal (sheet:skin-wires-ruled (list wire1 wire2 wire3 wire4 wire5 wire6 wire7
wire8 wire9 wire10 wire11 wire12 wire13
wire14 wire15 wire16)))
(entity:delete (list wire1 wire2 wire3 wire4 wire5 wire6 wire7
wire8 wire9 wire10 wire11 wire12 wire13
wire14 wire15 wire16))
; --- bool unite
(bool:unite shaft internal)
; Make a helix
(define handedness #t)
(define thread_distance1 35)
(define rotation_angle1 2070)
(define axis_point (position 0 0 0)))
(define axis_vector (gvector 0 0 1))
(define start_position (position 80 0 85))
(define path (edge:spring axis_point axis_vector start_position handedness thread_distance1 rotation_angle1))
(entity:set-color path 1)
(define my_wcs1 (wcs (position 0 0 0) (gvector 1 0 0) (gvector 0 0 1)))
(wcs:set-active my_wcs1)
(define profile (wire-body (list (edge:circular (position 80 85 0) 5))))
(define coil (sweep:law profile path))
(wcs:set-active #f)
(entity:delete my_wcs1)
(entity:delete path)
; --- bool unite
(bool:unite shaft coil)
(iso)
(zoom-all)
(render:rebuild)
Branched Skinning and Space Warping
Branched Skinning
Scheme Script
(part:clear)
(define wire0 (wire-body (list (edge:circular (position 0 0 180) 50 0 360))))
(define wire1 (wire-body (list (edge:circular (position 0 0 170) 30 0 360))))
(define wire2 (wire-body (list (edge:circular (position 0 0 70) 30 0 360))))
(define wire3 (wire-body (list (edge:circular (position 0 0 0) 30 0 360))))
(define wire5 (wire-body (list (edge:circular (position -60 0 -200) 30 180 (+ 180 360)))))
(define wire6 (wire-body (list (edge:circular (position -60 0 -300) 30 180 (+ 180 360)))))
(define wire7 (wire-body (list (edge:circular (position -60 0 -310) 50 180 (+ 180 360)))))
(define wire9 (wire-body (list (edge:circular (position 60 0 -200) 30 0 360))))
(define wire10 (wire-body (list (edge:circular (position 60 0 -300) 30 0 360))))
(define wire11 (wire-body (list (edge:circular (position 60 0 -310) 50 0 360))))
(iso)
(zoom-all)
(define body (sheet:skin-wires-branch (list wire0 wire1 wire2 wire3) (list wire5 wire6 wire7) (list wire9 wire10 wire11)))
(solid:blend-edges (list-ref (entity:edges body) 6) 5)
(shell:sheet-thicken body -2)
(entity:bend body (position 0 0 25) (gvector 1 0 0) (gvector 0 1 0) 80 90)
(entity:bend body (position 0 0 -275) (gvector 1 0 0) (gvector 0 1 0) 80 -90)
(entity:delete (list wire0 wire1 wire2 wire3 wire5 wire6 wire7 wire9 wire10 wire11))
(iso)
(zoom-all)