sheet:skin-wires
List of: Scheme Extensions
Subjects: Skinning and Lofting
Contents: Advanced Surfacing

Action: Creates a sheet body that interpolates a series of wires.

Filename: skin/skin_scm/skin_scm.cxx

APIs: api_skin_wires

Syntax: (sheet:skin-wires body-list [path] [[skin-options] |


[arc-length=#f


[no-twist=#t [align=#t


[simplify=#t [closed=#f


[solid=#t [periodic=#f]]]]]]]])

Arg Types: body-list wire-body | (wire-body ...)

path wire-body

skin-options skin_options

arc-length boolean

no-twist boolean

align boolean

simplify boolean

closed boolean

solid boolean

periodic boolean

Returns: body

Description: The given wires define the cross-sections to be interpolated by the resulting sheet body. There must be at least two wire bodies. The wire bodies are assumed to be simple, meaning only the first wire of each body is used for skinning. The wires can be open or closed. The wires are copies, i.e., the originals remain. The wires can share end points and do not have to be C1 continuous tangent.


The optional argument path surface at each of the skinning profiles. The path defines a curve that is intersected with the plane of each profile. At each of the resulting intersection points on the curve the tangent vector is calculated and applied to the surface as a constraint at that profile.


The optional argument arc-length specifies whether arc length (#f, default) or isoparameterization (#t) is used. In the case of isoparameterization, the parameterization of the surface follows the wireframe curves in a given body. In some cases, this may cause surface looping. Arc length parameterization, on the other hand, means the surface parameter follows the lines of constant length.


The optional argument no-twist specifies whether the resulting surface permits twisting (#t, default) or no twisting (#f). Twisting is introduced when the start points of the wires are not aligned. For example, assume that the body-list contains two circular edges and the desired result is a cylindrical shaped loft surface. If the start parameters of the edge curves do not line up, the skinned surface contains a twist and is not cylindrical in shape, but rather is a cooling tower shape. This option, when #t, aligns the start points, therefore removing the twist of the surface.


The optional argument align specifies whether or not to line up the directions of the curves listed in the body-list. The default is #t, which means that the direction of open and closed curves are changed to line up with the direction of the first curve in the body-list. When this option is #f, the wires are left in the direction that the user originally specified.


The optional argument simplify specifies whether or not to simplify the resulting surface geometry. The default is #t, which means not to simplify. For example, assume that the body-list contains two circular edges and that a cylindrical surface is to be created between the two edges. When this option is #t, the resulting surface geometry gets simplified into an analytical form of a cylindrical surface. If the option is #f the resulting surface is a skinned surface with a cylindrical shape. Likewise, if this option is #t and all of the the body-list elements are in the same plane, the result is an analytical planar-surface bounded by the boundaries of the skinned surface. If this option is #f, the result is a planar skinned surface.


The closed option (#f by default) may be used when a closed body in V is needed (closed in the skinning direction). In order to create this type of closure at least three profiles are required. If the periodic option is true (#f by default) the body is closed and periodic in the V direction. A closed body (in V) is constructed only when all of the wires supplied are closed (in U).


The solid option may be used when a solid body is needed but a closed body is not desired. When this option is used, the end wires are capped with planar faces (#t, by default).


The periodic option may be used when three or more wires are supplied as input to obtain a skin body that is periodic in v. This option may not be used with laws or surface constraints.


body-list is a list of wire bodies.


skin-options gives the different options for skinning.

Example: ; sheet:skin-wires

; Create a wire body 1 from a circular edge.

; Set v and u parameters.

(option:set "v_par" 5)

;; -1

(option:set "u_par" 5)

;; -1

(define wire-body1


(wire-body (edge:circular (position 0 0 40)


40 0 270)))

;; wire-body1

; Create a wire body 2 from a circular edge 2

(define wire-body2


(wire-body (edge:circular (position 0 0 0)


40 0 270)))

;; wire-body2

; Create a wire body 3 from a circular edge 3.

(define wire-body3


(wire-body (edge:circular (position 20 0 -10)


40 0 270)))

;; wire-body3

; OUTPUT Original


; Make a sheet body by skinning wires.

(define sheet1


(sheet:skin-wires (list wire-body1


wire-body2 wire-body3) "solid" #f))

;; sheet1

; OUTPUT Result



Figure 2-6. sheet:skin-wires


; Additional Example

; Create edge 1.

(part:clear)

;; #t

(define edge1 (edge:linear (position -20 -10 0)


(position 10 -10 0)))

;; edge1

; Create edge 2.

(define edge2 (edge:circular


(position 10 0 0) 10 270 360))

;; edge2

; Create edge 3.

(define edge3 (edge:linear


(position 20 0 0) (position 20 20 0)))

;; edge3

; Create edge 4.

(define edge4 (edge:linear


(position 20 20 0) (position -10 20 0)))

;; edge4

; Create edge 5.

(define edge5 (edge:circular


(position -10 10 0) 10 90 180))

;; edge5

; Create edge 6.

(define edge6 (edge:linear


(position -20 10 0) (position -20 -10 0)))

;; edge6

; Create a wire-body from the edges.

(define wirebody1 (wire-body (list


edge1 edge2 edge3


edge4 edge5 edge6)))

;; wirebody1

(define new-edge (edge:circular (position 0 0 10)


15 0 360))

;; new-edge

; OUTPUT Original


(define wirebody2 (wire-body (list


new-edge)))

;; wirebody2

(option:set "sil" #f)

;; #t

(option:set "u_par" 2)

;; 5

(option:set "v_par" 4)

;; 5

; Create a roll name state.

(roll:name-state "before")

;; "before"

; Skin a surface between these two wire bodies

; permitting twist and alignment

; without twist minimization.

(define skin1 (sheet:skin-wires


(list wirebody1 wirebody2) #f #f #t #f))

;; skin1

; OUTPUT Surface with twist


; Roll back before the skinning.

(roll "before")

;; 1

(view:refresh)

;; #[view 239847912]

; With twist minimization

(define skin1 (sheet:skin-wires


(list wirebody1 wirebody2) #f #t #t #f))

;; skin1

; OUTPUT Surface without twist





Figure 2-7. sheet:skin-wires without and with Twist Minimization
PDF/SKIN/02SCA.PDF
HTM/DATA/SKIN/SKIN/02SCA/0007.HTM