|
Action:
|
Creates a sheet body that interpolates multiple series of two or more wires.
|
|
|
Filename:
|
skin/skin_scm/skin_scm.cxx
|
|
|
APIs:
|
api_skin_wires
|
|
|
Syntax:
|
(sheet:skin-wires-branch trunk-list branch-list
|
|
|
[skin-options] [normal-type] [arc-length=#f
|
|
|
[no-twist=#t [align=#t
|
|
|
[simplify=#t [solid=#t [acis-opts]]]]]])
|
|
|
|
|
Arg Types:
|
trunk-list
|
wire-body | (wire-body...)
|
|
branch-list
|
wire-body | (wire-body...)
|
|
skin-options
|
skin_options
|
|
normal-type
|
string
|
|
arc-length
|
boolean
|
|
no-twist
|
boolean
|
|
align-directions
|
boolean
|
|
simplify
|
boolean
|
|
solid
|
boolean
|
|
acis-opts
|
acis-options
|
|
|
Returns:
|
body
|
|
|
Description:
|
The given wires define the cross-sections to be interpolated by the resulting sheet body. Unlike regular skinning, however; multiple body lists can be given.
|
|
|
trunk-list is a list of wire bodies that are arranged in the form of a trunk.
|
|
|
branch-list is a list of wire bodies that are arranged in the form of a branch.
|
|
|
normal-type has four values, "first_normal", "last_normal", "ends_normal" and "all_normal". These values specify which profiles the normal constraint should be applied to. In the case of "first_normal" the constraint is only applied to the first profile. Other values, follow similarly.
|
|
|
Unlike regular skinning, the order of the wire-bodies in the lists are important. The branches attach to the last body in the trunk. In addition, the first bodies in the branch list are the ends in which they attach to the trunk.
|
|
|
Optional
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.
|
|
|
Optional
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, thereby removing the twist of the surface.
|
|
|
Optional
align specifies whether or not to line up the directions of the curves listed in the
body-list. The default is #t, which means the directions 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 directions originally specified by the user.
|
|
|
Optional
simplify specifies whether or not to simplify the resulting surface geometry. The default is #t. 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.
|
|
|
Optional
solid option may be used when a solid body is needed. When this option is used, the end wires are capped with planar faces (#t, by default).
|
|
|
The
acis-opts, which contain versioning and journaling parameters, must be the last argument, if stated.
|
|
|
Limitations:
|
A minimum of one wire branch is required.
|
|
|
Example:
|
; sheet:skin-wires-branch
|
|
; Create four wire bodies to illustrate command.
|
|
(define wire1 (wire-body (list (edge:circular
|
|
|
(position 0 0 70) 30 0 360))))
|
|
;; wire1
|
|
(define wire2 (wire-body (list (edge:circular
|
|
|
(position 0 0 0) 30 0 360))))
|
|
;; wire2
|
|
(define wire3 (wire-body (list (edge:circular
|
|
|
(position -50 0 -100) 30 180 (+ 180 360)))))
|
|
;; wire3
|
|
(define wire4 (wire-body (list (edge:circular
|
|
|
(position 50 0 -100) 30 0 360))))
|
|
;; wire4
|
|
; Create the branched body.
|
|
(define zoom (zoom-all))
|
|
;; zoom
|
|
(define refresh (refresh-all))
|
|
;; refresh
|
|
; OUTPUT Original
|
|
|
(define body (sheet:skin-wires-branch
|
|
|
(list wire1 wire2) (list wire3) (list wire4)))
|
|
;; body
|
|
; OUTPUT Result
|
|
(define blend (solid:blend-edges
|
|
|
(list-ref (entity:edges body) 6) 5))
|
|
;; blend
|
|
(define thicken (shell:sheet-thicken body -2))
|
|
;; thicken
|
|
|
|
|
|
Figure 2-8. sheet:skin-wires-branch
|