Action:
|
Creates a new pattern by applying a random keep-filter to an existing pattern.
|
|
Prototype:
|
outcome api_random_keep_pattern (
|
|
|
pattern*& pat,
|
// created pattern
|
|
|
const pattern& in_pattern,
|
// input pattern
|
|
|
double keep_fraction,
|
// approximate fraction
|
|
|
|
|
// of elements to keep
|
|
|
logical merge
|
// merge flag
|
|
|
|
= TRUE,
|
|
|
AcisOptions* ao = NULL
|
// acis options
|
|
|
);
|
|
Includes:
|
#include "kernel/acis.hxx"
|
|
#include "baseutil/logical.h"
|
|
#include "kernel/kernapi/api/api.hxx"
|
|
#include "kernel/kernutil/law/pattern.hxx"
|
|
#include "kernel/kernutil/law/pattern_api.hxx"
|
|
#include "kernel/kernapi/api/acis_options.hxx"
|
|
Description:
|
Applies a periodic keep-filter to an existing pattern, merging with any existing filter or, optionally (with
merge=FALSE), replacing it. The argument
fraction determines the fraction of pattern elements that are kept.
|
|
|
The following code snippet shows an example of how this API can be used.
|
|
|
// Create a pattern
|
|
pattern* pat = NULL;
|
|
SPAvector x_vec(4.0, 0, 0);
|
|
int num_x = 12;
|
|
SPAvector y_vec(0, 4.0, 0);
|
|
int num_y = 12;
|
|
check_outcome(result = api_linear_pattern(pat, x_vec, num_x, y_vec, num_y));
|
|
|
// Modify the pattern
|
|
pattern* mod_pat = NULL;
|
|
double keep_fraction = 0.5;
|
|
check_outcome(result = api_random_keep_pattern(mod_pat, *pat, keep_fraction));
|
|
|
// 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();
|
|
Library:
|
kernel
|
|
Filename:
|
kern/kernel/kernutil/law/pattern_api.hxx
|
|
Effect:
|
Changes model
|