Action:
|
Creates a new pattern by applying an alternating scale to an existing pattern.
|
|
Prototype:
|
outcome api_alternating_scale_pattern (
|
|
|
pattern*& pat,
|
// pattern returned
|
|
|
const pattern& in_pattern,// input pattern
|
|
|
double scale1,
|
// 1st scale value
|
|
|
double scale2,
|
// 2nd scale value
|
|
|
int which_dim,
|
// dimension for scaling
|
|
|
const SPAposition& root,
|
// position about which
|
|
|
|
|
// scaling is applied
|
|
|
logical merge = TRUE,
|
// merge or replace flag
|
|
|
AcisOptions* ao = NULL
|
// acis options
|
|
|
);
|
|
|
outcome api_alternating_scale_pattern(
|
|
|
pattern*& pat,
|
|
// pattern returned
|
|
|
const pattern& in_pattern,
|
// input pattern
|
|
|
const SPAvector& scale1,
|
|
// 1st scale value
|
|
|
const SPAvector& scale2,
|
|
// 2nd scale value
|
|
|
int which_dim,
|
|
// scaling dimension
|
|
|
const SPAposition& root,
|
|
// position about
|
|
|
|
|
|
// which scaling is
|
|
|
|
|
|
// applied
|
|
|
logical merge = TRUE,
|
|
// merge/replace flag
|
|
|
AcisOptions* ao = NULL
|
|
// acis options
|
|
|
);
|
|
|
|
Includes:
|
#include "kernel/acis.hxx"
|
|
#include "baseutil/logical.h"
|
|
#include "baseutil/vector/position.hxx"
|
|
#include "kernel/kernapi/api/api.hxx"
|
|
#include "kernel/kernutil/law/pattern.hxx"
|
|
#include "kernel/kernutil/law/pattern_api.hxx"
|
|
#include "baseutil/vector/vector.hxx"
|
|
#include "kernel/kernapi/api/acis_options.hxx"
|
|
Description:
|
Applies an alternating scale to an existing pattern, merging with any existing scaling or, optionally (with
merge =
FALSE), replacing it. The arguments
scale1 and
scale2 give the alternating scale values, and can be given as vectors when nonuniform scaling is desired.
which_dim specifies the dimension in which the scale is applied. The position
root specifies the neutral point about which the scaling takes place (i.e., the point on the seed entity that remains fixed while the entity's dimensions are altered). All scale values must be greater than zero.
|
|
|
The following code snippet gives an example of using this API.
|
|
|
// Create a pattern
|
|
pattern* pat = NULL;
|
|
SPAvector x_vec(4.0, 0, 0);
|
|
int num_x = 8;
|
|
SPAvector y_vec(0, 2.0, 0);
|
|
int num_y = 10;
|
|
check_outcome(result = api_linear_pattern(pat, x_vec, num_x,
|
y_vec, num_y));
|
|
|
// Modify the pattern
|
|
pattern* mod_pat = NULL;
|
|
double scale1 = 0.8;
|
|
double scale2 = 1.2;
|
|
int which_dim = 1;
|
|
SPAposition root(0, 0, 0);
|
|
check_outcome(result = api_alternating_scale_pattern(mod_pat,
|
*pat, scale1, scale2, which_dim, root));
|
|
|
// Create a prism
|
|
BODY* prism = NULL;
|
|
double height = 1.0;
|
|
double maj_rad = 1.0;
|
|
double min_rad = 0.5;
|
|
int num_sides = 3;
|
|
check_outcome(result = api_make_prism(height, maj_rad, min_rad,
|
num_sides, prism));
|
|
|
// Apply the pattern to the prism
|
|
check_outcome(result = api_set_entity_pattern(prism, mod_pat));
|
|
|
// Clean up
|
|
pat->remove();
|
|
mod_pat->remove();
|
|
Errors:
|
A scale value is negative or zero.
|
|
Library:
|
kernel
|
|
Filename:
|
kern/kernel/kernutil/law/pattern_api.hxx
|
|
Effect:
|
Changes model
|