api_alternating_scale_pattern
List of: Functions
Subjects: Patterns
Contents: Kernel

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
PDF/KERN/16FNA.PDF
HTM/DATA/KERN/KERN/16FNA/0005.HTM