HUtilityBoolean

Functions

void

SplitTarget

HC_KEY

MakeWindingConsistent

void

CutBlock

HC_KEY

MakeBoolean

void

ProjectShell

void

UnProjectShell

HC_KEY

DMakeBoolean

void

DProjectShell

void

DUnProjectShell

HC_KEY

DCalculateSilhouette

HC_KEY

CalculateSilhouette

int

ObjectMovedEvent

bool

TestCollision

Detailed Description

class HUtilityBoolean

The HUtilityBoolean class contains a set of utility functions related to the polygonal boolean functionality.

HUtilityBoolean includes utility functions for using the 3DGS boolean functionality in interactive boolean Applications like n-degree milling.

Public Static Functions

static void SplitTarget(HBaseView *view, HC_KEY targetshell)

Splits a shell in all three dimensions to allow for localization of boolean operations. The newly created geometry will reside in child segments of the segment which contains the original shell.

Parameters
  • view – Pointer to HBaseView object

  • targetshell – Key of Shell which will be cut

static HC_KEY MakeWindingConsistent(HC_KEY shellkey)

Identifies faces with inconsistent handedness inside a shell and “repairs” those faces

Parameters

shellkey – Shell Key

Returns

new shell with consistent handedness

static void CutBlock(HBaseView *m_pHView, HC_KEY targetshell, int side, int slicenum)

Splits a target shell along one of the three major axis

Parameters
  • targetshell – Shell to split

  • side – 0 to 3 indicating the split axis 0 = x, 1 = y, 2 = z

  • slicenum – Number of cuts along the indicated axis

static HC_KEY MakeBoolean(HC_KEY s1, HC_KEY s2, char *whattype, bool doTransform = false)

Performs a boolean operation of one shell with another

Parameters
  • s1 – Shell Key representing the “Tool” of the boolean operation

  • s2 – Shell Key representing the “Target” of the boolean operation

  • whattype – string passed into HC_Compute_Boolean_Shell function determening the type of boolean operation

  • doTransform – If true the resulting shell is transformed by the modelling matrix of the currently open segment after the operation

Returns

Key to shell which represents the result of the boolean operation

static void ProjectShell(HC_KEY shellkey, int plen, HPoint *points, int flen, int *faces)

Projects shell by the modelling matrix of its containing segment

Parameters
  • shelllkey – Key to Shell

  • plen – Length of Point Array which contains the projected points of the shell

  • pointsPoint Array which contains the projected points of the shell

  • flen – Length of Face List Array

  • faces – Face List Array

static void UnProjectShell(HC_KEY shellkey)

Modifies the point list of an existing shell by the inverse of the modelling matrix of its containing segment

Parameters

shelllkey – Key to Shell

static HC_KEY DMakeBoolean(HC_KEY s1, HC_KEY s2, char *whattype, bool doTransform = false)

Performs a boolean operation of one shell with another using double precision

Parameters
  • s1 – Shell Key representing the “Tool” of the boolean operation

  • s2 – Shell Key representing the “Target” of the boolean operation

  • whattype – string passed into HC_Compute_Boolean_Shell function determening the type of boolean operation

  • doTransform – If true the resulting shell is transformed by the modelling matrix of the currently open segment after the operation

Returns

Key to shell which represents the result of the boolean operation

static void DProjectShell(HC_KEY shellkey, int plen, HDPoint *points, int flen, int *faces)

Projects shell by the modelling matrix of its containing segment using double precision

Parameters
  • shelllkey – Key to Shell

  • plen – Length of Point Array which contains the projected points of the shell

  • pointsPoint Array which contains the projected points of the shell

  • flen – Length of Face List Array

  • faces – Face List Array

static void DUnProjectShell(HC_KEY shellkey)

Modifies the point list of an existing shell by the inverse of the modelling matrix of its containing segment. Uses Double Precision

Parameters

shelllkey – Key to Shell

static HC_KEY DCalculateSilhouette(HC_KEY targetshell, HPoint start, HPoint end)

Calculates the silhouette for a given shell given the start and end point. The resulting shell will be placed in a segment called “sil” underneath the segment containing the referenced shell. The result shell will be double precision

Parameters
  • targetshell – Key of shell to calculate the silhouette for

  • start – Start Point for silhouette calculation

  • end – End Point for silhouette calculation

Returns

Key of Shell representing the silhouette

static HC_KEY CalculateSilhouette(HC_KEY targetshell, HPoint start, HPoint end)

Calculates the silhouette for a given shell given the start and end point. The resulting shell will be placed in a segment called “sil” underneath the segment containing the referenced shell.

Parameters
  • targetshell – Key of shell to calculate the silhouette for

  • start – Start Point for silhouette calculation

  • end – End Point for silhouette calculation

Returns

Key of Shell representing the silhouette

static int ObjectMovedEvent(HBaseView *view, HC_KEY key, HPoint *p, HPoint posbeforemovedevent)

This funcion should be called after an ObjectMovedEvent has been triggered from an HObjectManipulationListener

Parameters
  • view – Pointer to HBaseView object

  • key – Key of moved geometry

  • p – New Position

  • posbeforemovedevent – Old Position

Returns

Event Return

static bool TestCollision(HBaseView *view, HC_KEY key1, HC_KEY key2, bool first, bool doTransform1, bool doTransform2)

Determines if a collision occured between the bounding boxes of two shells

Parameters
  • key1 – First shell to determine collision for

  • key2 – Second shell to determine collision for

  • first – If true testcollision is called for the first time and default parameters are calculated

  • doTransform1 – If true perform a projection of first shell

  • doTransform1 – If true perform a projection of second shell

Returns

True if collision occured