Action:
|
Tapers an array of faces about a point and a supplied draft vector by a given draft angle.
|
|
Filename:
|
lop/lop_scm/lop_scm.cxx
|
|
APIs:
|
api_taper_faces
|
|
Syntax:
|
(lop:taper-faces face-list point normal angle
|
|
|
[box-h box-l] [acis-opts])
|
|
Arg Types:
|
face-list
|
face | (face ...)
|
|
point
|
position
|
|
normal
|
gvector
|
|
angle
|
real
|
|
box-h
|
position
|
|
box-l
|
position
|
|
acis-opts
|
acis-options
|
|
Returns:
|
body
|
|
Errors:
|
In addition to the following, refer to the Errors listed for the Scheme extension,
lop:tweak-faces.
|
|
|
Some of the following errors result in an entity, which indicates where the error occurs, being highlighted. The entity type follows the error message below.
|
|
|
|
Valid direction must be supplied, or error;
|
|
|
LOP_TAP_BAD_NORMAL
|
|
Valid angle (at least 0 and less than 90 degrees) must be supplied or error;
|
|
|
LOP_TAP_BAD_ANGLE
|
|
Surface must be able to be tapered as requested, or error;
|
|
|
LOP_TAP_NO_SURF
|
|
Normal of face to be tapered should not be parallel to draft vector, or error;
|
|
|
LOP_TAP_NO_SURF_FACE
|
|
Must be able to find a face adjacent to vent face if a vent face is inserted, or error;
|
|
|
LOP_TAP_NO_ADJ_FACE
|
|
|
|
Note that entities returned in the outcome
standard_error_info object are highlighted.
|
|
Description:
|
This extension tapers the face(s) specified by
face-list by the supplied draft angle about an axis defined by the intersection between the plane of the face and a "taper plane". The taper plane is defined by a point and normal given as arguments to the extension. The direction of the normal defines the direction of the angle, i.e., the resulting angled plane will slope in the direction of the draft plane normal. The taper plane need not intersect the face to be tapered, and even when it does, this intersection need not be an edge of the body (unlike in edge taper).
|
|
|
The optional intersection box limits the size of intersections between surfaces which might otherwise be very long. It cannot be used to choose faces. Its main purpose is to speed up complicated cases where the intersection curves might be very long, thus improving performance. The box must contain the final faces and if omitted defaults to the size box.
|
|
|
See the documentation for
api_taper_faces for the use of the option "lop_validate".
|
|
|
Topology Changes:
|
|
|
In addition to the following, refer to the topology changes listed for the Scheme extension,
lop:tweak-faces.
|
|
|
Vent faces are added between mergeable faces, when one of them is not being tapered. Vent faces can only be added if there is a face on the original model that shares a vertex with the mergeable edge, does not have the mergeable edge in its boundary and that will be adjacent to the vent faces after the taper. Vent faces can also be added at tangent edges when just one of the two faces that share the edge is being tapered. However, a vent face will only be added if there is no intersection between the surface of the face that is being tapered and the surface of the face that isn't.
|
|
|
Geometry Changes:
|
|
|
Refer to the geometry changes listed for the Scheme extension,
lop:tweak-faces.
|
|
|
Arguments:
|
|
|
face-list identifies faces of a body to be moved.
|
|
|
point specifies a position on the taper plane.
|
|
|
normal specifies the normal of the taper plane at the point specified.
|
|
|
angle specifies the rotation angle in degrees.
|
|
|
box-h specifies one position defining a diagonal box for an intersection limit.
|
|
|
box-l specifies one position defining a diagonal box for an intersection limit.
|
|
|
acis-opts specifies options such as versioning and journaling.
|
|
Limitations:
|
Refer to the Limitations listed for the Scheme extension,
lop:tweak-faces.
|
|
|
|
Only planes, cones, rule surfaces, and previously plane-tapered surfaces (provided the same taper plane is used) may be plane tapered.
|
|
Example:
|
; lop:taper-faces
|
|
; Create a solid block.
|
|
(define block1
|
|
|
(solid:block (position -30 -5 -10)
|
|
|
(position 20 20 10)))
|
|
;; block1
|
|
; OUTPUT Original
|
|
|
; Taper a face on the body
|
|
(define taper (lop:taper-faces
|
|
|
(pick:face (ray (position 0 0 0)
|
|
|
(gvector 0 0 1))) (position 0 0 0)
|
|
|
(gvector 10 20 10) 10))
|
|
;; taper
|
|
; OUTPUT Result
|
|
|
|
|
|
|
Figure 2-13. lop:taper-faces
|
|
|
; Example 2
|
|
; Clear the screen to prepare for the next example.
|
|
(part:clear)
|
|
;; #t
|
|
(define block2
|
|
|
(solid:block (position -25 -25 -10)
|
|
|
(position 25 25 10)))
|
|
;; block2
|
|
(define blend (solid:blend-edges
|
|
|
(pick:edge (ray
|
|
|
(position 0 0 0) (gvector 1 -1 0))) 20))
|
|
;; blend
|
|
; OUTPUT Original
|
|
|
(lop:taper-faces (list (pick:face
|
|
|
(ray (position 0 0 0) (gvector 1 0 0)))
|
|
|
(pick:face (ray (position 0 0 0)
|
|
|
(gvector 0 -1 0))) (pick:face
|
|
|
(ray (position 0 0 0) (gvector 1 -1 0))))
|
|
|
(position 0 0 -10) (gvector 0 0 1) 45)
|
|
;; #[entity 4 1]
|
|
; OUTPUT Result
|
|
|
|
|
Figure 2-14. lop:taper-faces
|