SetBehavior
bit 0-7: Reserved, by default 0
bit 8:
0 Do not optimize
1 Vertex items returned as double (8 byte/64 bit)
bit 9-31: Reserved, by default 0
bit 32-63: Reserved, by default 0
Note: default setting is 0000 0000 0000 0000 0000 0000 0000 0000 - 0000 0000 0000 0000 0000 0001 0000 0000 = h0000 0000 - 0000 0100 = 256
Syntax
// // Strong typing definition // void SetBehavior( OwlModel model, uint64_t setting, uint64_t mask ); // // Weak typing definition // void __declspec(dllexport) __stdcall SetBehavior( int64_t model, uint64_t setting, uint64_t mask );
Property model
Size: 64 bit / 8 byte (value)Property setting
Size: 64 bit / 8 byte (value)Property mask
Size: 64 bit / 8 byte (value)
Example (based on pure API calls)
Here you can find code snippits that show how the API call SetBehavior can be used.
#include "./include/engine.h" static const uint64_t flagbit0 = 1; // 2^^0 0000.0000..0000.0001 static const uint64_t flagbit1 = 2; // 2^^1 0000.0000..0000.0010 static const uint64_t flagbit2 = 4; // 2^^2 0000.0000..0000.0100 static const uint64_t flagbit3 = 8; // 2^^3 0000.0000..0000.1000 static const uint64_t flagbit4 = 16; // 2^^4 0000.0000..0001.0000 static const uint64_t flagbit5 = 32; // 2^^5 0000.0000..0010.0000 static const uint64_t flagbit6 = 64; // 2^^6 0000.0000..0100.0000 static const uint64_t flagbit7 = 128; // 2^^7 0000.0000..1000.0000 static const uint64_t flagbit8 = 256; // 2^^8 0000.0001..0000.0000 static const uint64_t flagbit9 = 512; // 2^^9 0000.0010..0000.0000 static const uint64_t flagbit10 = 1024; // 2^^10 0000.0100..0000.0000 static const uint64_t flagbit11 = 2048; // 2^^11 0000.1000..0000.0000 static const uint64_t flagbit12 = 4096; // 2^^12 0001.0000..0000.0000 static const uint64_t flagbit13 = 8192; // 2^^13 0010.0000..0000.0000 static const uint64_t flagbit14 = 16384; // 2^^14 0100.0000..0000.0000 static const uint64_t flagbit15 = 32768; // 2^^15 1000.0000..0000.0000 static const uint64_t flagbit16 = 65536; // 2^^16 0000.0000..0000.0001 0000.0000..0000.0000 static const uint64_t flagbit17 = 131072; // 2^^17 0000.0000..0000.0010 0000.0000..0000.0000 static const uint64_t flagbit18 = 262144; // 2^^18 0000.0000..0000.0100 0000.0000..0000.0000 static const uint64_t flagbit19 = 524288; // 2^^19 0000.0000..0000.1000 0000.0000..0000.0000 static const uint64_t flagbit20 = 1048576; // 2^^20 0000.0000..0001.0000 0000.0000..0000.0000 static const uint64_t flagbit21 = 2097152; // 2^^21 0000.0000..0010.0000 0000.0000..0000.0000 static const uint64_t flagbit22 = 4194304; // 2^^22 0000.0000..0100.0000 0000.0000..0000.0000 static const uint64_t flagbit23 = 8388608; // 2^^23 0000.0000..1000.0000 0000.0000..0000.0000 static const uint64_t flagbit24 = 16777216; // 2^^24 0000.0001..0000.0000 0000.0000..0000.0000 static const uint64_t flagbit25 = 33554432; // 2^^25 0000.0010..0000.0000 0000.0000..0000.0000 static const uint64_t flagbit26 = 67108864; // 2^^26 0000.0100..0000.0000 0000.0000..0000.0000 static const uint64_t flagbit27 = 134217728; // 2^^27 0000.1000..0000.0000 0000.0000..0000.0000 static const uint64_t flagbit28 = 268435456; // 2^^28 0001.0000..0000.0000 0000.0000..0000.0000 static const uint64_t flagbit29 = 536870912; // 2^^29 0010.0000..0000.0000 0000.0000..0000.0000 static const uint64_t flagbit30 = (uint64_t) 1073741824; // 2^^30 0100.0000..0000.0000 0000.0000..0000.0000 static const uint64_t flagbit31 = (uint64_t) 2147483648; // 2^^31 1000.0000..0000.0000 0000.0000..0000.0000 ... int64_t model = CreateModel(); if (model) { { // // Initializing the mask with all possible options // int64_t setting = 0, mask = GetBehavior(0, 0); setting += 1 * flagbit8; // OFF / ON REMOVE ZERO VOLUME SOLIDS DURING PROCESSING setting += 0 * flagbit10; // OFF / ON INTEGRATE SEMANTIC GLOBAL POSITIONING (ONLY RELEVANT WHEN EMBEDDED IN STEP LIBRARY) setting += 0 * flagbit11; // OFF / ON FORCE CALCULATING WIREFRAME FOR CONCEPTUAL FACES IN NON-TRIVIAL CASES setting += 0 * flagbit12; // OFF / ON REMOVE DOUBLE LINING IN WIREFRAME (WILL SET BIT14 IN SETFORMAT) setting += 0 * flagbit29; // OFF / ON CREATE TRIANGLES WITH AREA ZERO (FOR CONSISTENCY) SetBehavior(model, setting, mask); } // // Check if a certain option is set // if (GetBehavior(model, flagbit8)) { // Zero Volume solids are removed when found during processing } else { // Zero Volume solids are kept when found during processing } if (GetBehavior(model, flagbit29)) { // Triangles with zero area are kept for consistancy } else { // Triangles with zero area are removed } { // // Get all set options // int64_t setting = GetBehavior(model, GetBehavior(0, 0)); if (setting & flagbit8) { // Zero Volume solids are removed when found during processing } else { // Zero Volume solids are kept when found during processing } if (setting & flagbit29) { // Triangles with zero area are kept for consistancy } else { // Triangles with zero area are removed } } }