BoolClnAdjacencies

(adjacncy.c:695)

Prototype:

  void BoolClnAdjacencies(IPObjectStruct *PObj)


Description:

Clean the adjacency pointers in the given polygonal model.

Parameters:

PObj: Polygon object to clean adjacency information.


Returned Value:

void


See Also:

BoolGenAdjacencies

Keywords:




BoolCutPolygonAtRay

(bool2low.c:430)

Prototype:

  IPVertexStruct *BoolCutPolygonAtRay(IPPolygonStruct *Pl, IrtPtType Pt)


Description:

Finds the intersection of the ray fired from Pt to +X direction with the given polygon. Note Pt MUST be in the polygon. Two vertices equal to ray/polygon intersection point are added to polygon vertex list, and a pointer to the first one is also returned. The polygon is NOT assumed to be convex and we look for the minimum X intersection. The polygon might not be convex as a result of combining some other closed loop before we got to do this test.

Parameters:

Pl: The polygon to compute the ray intersection with.
Pt: The origin of the ray point.


Returned Value:

IPVertexStruct *: The added vertex on Pl where the intersection with the ray occurred.


Keywords:

Booleans


BoolDebugPrintAdjacencies

(adjacncy.c:908)

Prototype:

  void BoolDebugPrintAdjacencies(IPObjectStruct *PObj)


Description:

Prints the adjacency information of an object.

Parameters:

PObj: To debug print its adjacency information.


Returned Value:

void


Keywords:




BoolDescribeError

(bool_err.c:61)

Prototype:

  const char *BoolDescribeError(BoolFatalErrorType ErrorNum)


Description:

Returns a string describing a the given error. Errors can be raised by any member of this bool library as well as other users. Raised error will cause an invocation of BoolFatalError function which decides how to handle this error. BoolFatalError can for example, invoke this routine with the error type, print the appropriate message and quit the program.

Parameters:

ErrorNum: Type of the error that was raised.


Returned Value:

const char *: A string describing the error type.


Keywords:

error handling


BoolDfltFatalError

(bool-hi.c:1479)

Prototype:

  void BoolDfltFatalError(BoolFatalErrorType ErrID)


Description:

Defalu fatal error trapping rotuine of the Boolean library.

Parameters:

ErrID: Error type that was raised.


Returned Value:

void


See Also:

BoolSetFatalErrorFunc

Keywords:

error handling


BoolExtractPolygons

(bool2low.c:962)

Prototype:

  IPObjectStruct *BoolExtractPolygons(IPObjectStruct *PObj, int AinB)


Description:

This routine coordinates all the extraction of the polygons from the intersecting lists. Does it in the following steps: 1. Mark all polygons with no intersection at all as complete polygons. (this is because this polygon will be totally in or out, according to inter-polygon adjacencies propagation...) Also mark them as undefined (if in output or undefined) yet. Uses IPPolygonStruct Tags to save these bits. 2. do 2.1. Convert the unordered segment list of each polygon to closed loops (if create a hole in polygon) or open (if crosses its boundary). 2.2. Order the open loops along the perimeter of the polygon (note these loops cannot intersect. For example (5 vertices polygon):
               -----------------------------L3
              |  ---------------L1  -----L2 |          --------L4   --L5
              | |               |  |     |  |         |        |   |  |
        P0 ------ P1 ------- P2 ----- P3 -------- P4 ------ P5 -------- P0

Note L1, L2 are enclosed in L3 loop, and that the order is circular. 2.3. "Break" the polygon at each open loop that has no enclosed loops in it. For example we can start at L1, L2, L4, L5 and then L3. "Break" means - replace the vertex chain between the two loop end points, with the loops itself. Depends upon the relation required we may need to output a new polygon form from the deleted chain and that loop. In addition we may form a new polygon from last loop and was was left from the original polygon For each formed polygon, for each complete edge of it (i.e. edge which was originally in the polygon) test the adjacent polygon if it is complete (as marked in 1.) and if in or undefined (marked undefined in 1.) is still undefined: 2.3.1. set it to be in. 2.3.2. push it on adjacency stack. 2.4. For each closed loop - find in which polygon (from polygons created in 2.3.) it is enclosed, and decompose it. 3. While adjacencies stack not empty do: 3.1. pop top polygon from stack and output it. 3.2. For each of its edges (which obviousely must be complete edges) if adjacent polygon is complete and undefined: 3.3.1. set it to be in. 3.3.2. push it on adjacency stack. 3.3 go back to 3. The above algorithm defines in as in output, but dont be confused with the required inter-object AinB (or AoutB if FALSE), which used to determine which side of the trimming loop should be output. Note this routine may return non-convex polygons (but marked as so) even though the input for the booleans must be convex polygons only! In order to keep the given object unchanged, a whole new copy off the polygon list is made. The polygons of the list that are not in the output are freed: a global list of all polygons (pointers) is used to scan them in the end and free the unused ones (list PolysPtr).

Parameters:

PObj: Object that need to be rebuilt according to the intersection curves that were found, both closed and open loops.
AinB: Type of inclusion/exclusion requested.


Returned Value:

IPObjectStruct *: The newly created clipped object.


Keywords:

Booleans


BoolFilterCollinearities

(bool-2d.c:273)

Prototype:

  int BoolFilterCollinearities(IPPolygonStruct *Pl)


Description:

Filters out collinear edges and duplicated vertices, in the given polygon.

Parameters:

Pl: To filter, in place. The polygon is assumed to have a circular vertex list.


Returned Value:

int: TRUE if the polygon has been modified, FALSE otherwise.


Keywords:




BoolGenAdjacencies

(adjacncy.c:102)

Prototype:

  int BoolGenAdjacencies(IPObjectStruct *PObj)


Description:

Routine to generate adjacencies to the given object. Note an edge might be only partially adjacent to another edge, and a second attempt is made to find (again only part of - see below) them. Any case, FALSE will be returned as there is no way we can say the object is perfectly closed! This is the only routine to generate the adjacencies of a geometric object. These adjacencies are needed for the Boolean operations on them. Algorithm: for each edge, for each polygon in the object, the edges are sorted according to the key defined by EdgeKey routine (sort in hash tbl). A second path on the table is made to match common keys edges and set the pointers from one to another. Note that each edge is common to exactly 2 faces if it is internal, or exactly 1 face if it is on the border (if the object is open).

Parameters:

PObj: he polygonal object to compute the adjacency information for.


Returned Value:

int: TRUE if all adjacencies were resolved, or the object is completely closed.


See Also:

BoolGetAdjEdge BoolClnAdjacencies

Keywords:

adjacency topology


BoolGetAdjEdge

(adjacncy.c:852)

Prototype:

  IPVertexStruct *BoolGetAdjEdge(IPVertexStruct *V)


Description:

Given a polygonal mesh with adjacent information, find the adjacent edge (VAdj, VAdj->Pnext) that is adjacent to edge (V, V->Pnext), if any.

Parameters:

V: Vertex of a mesh defining edge (V, V->Pnext) to extract its adjacent edge, if any.


Returned Value:

IPVertexStruct *: First vertex of adjacent edge to edge (V, V->Pnext) or NULL if none.


See Also:

BoolGenAdjacencies

Keywords:




BoolGetDisjointPart

(adjacncy.c:816)

Prototype:

  IPPolygonStruct *BoolGetDisjointPart(IPObjectStruct *PObj, int Index)


Description:

Get the disjoint part number Index from object PObj.

Parameters:

PObj: Object to extract part number Index from.
Index: Index of part to fetch from PObj.


Returned Value:

IPPolygonStruct *: Extract polygonal list with disjoint number Index.


See Also:

BoolMarkDisjointParts

Keywords:




BoolInterPolyPoly

(bool1low.c:918)

Prototype:

  IPPolygonStruct *BoolInterPolyPoly(IPPolygonStruct *Pl1, IPPolygonStruct *Pl2)


Description:

Routine to intersect polygon Pl1, with polygon Pl2. If found common intersection, that segment will be added to the InterSegmentStruct list saved in Pl1 PAux list. Note that as the two polygons convex, at most one line segment can result from such intersection (of two non coplanar polygons). Algorithm: intersect all Pl2 edges with Pl1 plane. If found that (exactly) two vertices (one segment) of Pl2 do intersect Pl1 plane then: Perform clipping of the segment against Pl1. If result is not empty, add the result segment to Pl1 InterSegmentStruct list (saved at PAux of polygon - see IPPolygonStruct).

Parameters:

Pl1: First polygon to compute intersection for.
Pl2: Second polygon to compute intersection for.


Returned Value:

IPPolygonStruct *: The intersection segment, if any, NULL otherwise.


Keywords:




BoolLoopsFromInterList

(bool1low.c:1310)

Prototype:

  int BoolLoopsFromInterList(IPPolygonStruct *Pl,
                             InterSegListStruct **PClosed,
                             InterSegListStruct **POpen)


Description:

Given a polygon with the intersection list, creates the polylines loop(s) out of it, which can be one of the two: 1. Closed loop - all the intersections create a loop in one polygon. 2. Open polyline - if the intersections cross the polygon boundary. In this case the two end point of the polyline, must lay on polygon boundary. In both cases, the polyline will be as follows: First point at first list element at PtSeg[0] (see InterSegmentStruct). Second point at first list element at PtSeg[1] (see InterSegmentStruct). Point i at list element (i-1) at PtSeg[0] (PtSeg[1] is not used!). In the closed loop case the last point is equal to first. Both cases returns NULL terminated list.

Parameters:

Pl: Polygon with intersection information in its PAux slot.
PClosed: To be updated with the closed loops found in Pl.
POpen: To be updated with the open loops found in Pl.


Returned Value:

int: TRUE if has loops.


Keywords:




BoolMarkDisjointParts

(adjacncy.c:731)

Prototype:

  int BoolMarkDisjointParts(IPObjectStruct *PObj)


Description:

Mark polygons in the given object based on their association with different disjoint object parts.

Parameters:

PObj: To anaylize for different disjoint parts.


Returned Value:

int: Number of disjoint parts.


See Also:

BoolGetDisjointPart

Keywords:




BoolSetFatalErrorFunc

(bool-hi.c:1450)

Prototype:

  BoolFatalErrorFuncType BoolSetFatalErrorFunc(BoolFatalErrorFuncType ErrFunc)


Description:

Sets the fatal error trapping routine of the boolean library.

Parameters:

ErrFunc: New error trapping function to use.


Returned Value:

BoolFatalErrorFuncType: Old error trapping function.


See Also:

BoolDfltFatalError

Keywords:

error handling


BoolSetHandleCoplanarPoly

(bool-hi.c:1390)

Prototype:

  int BoolSetHandleCoplanarPoly(int HandleCoplanarPoly)


Description:

Controls if coplanar polygons should be handled or not.

Parameters:

HandleCoplanarPoly: If TRUE, coplanar polygons are handled.


Returned Value:

int: Old value.


See Also:

BooleanOR BooleanAND BooleanSUB BooleanCUT BooleanMERGE BooleanNEG Boolean2D BoolSetOutputInterCurve BoolSetPolySortAxis BoolSetParamSurfaceUVVals BoolSetPerturbAmount

Keywords:

Booleans


BoolSetOutputInterCurve

(bool-hi.c:1327)

Prototype:

  int BoolSetOutputInterCurve(int OutputInterCurve)


Description:

Controls if intersection curves or full Boolean operation is to be performed.

Parameters:

OutputInterCurve: If TRUE only intersection curves are computed, If false, full blown Boolean is applied.


Returned Value:

int: Old value.


See Also:

BooleanOR BooleanAND BooleanSUB BooleanCUT BooleanMERGE BooleanNEG Boolean2D BoolSetHandleCoplanarPoly BoolSetPolySortAxis BoolSetParamSurfaceUVVals BoolSetPerturbAmount

Keywords:

Booleans


BoolSetParamSurfaceUVVals

(bool-hi.c:1421)

Prototype:

  int BoolSetParamSurfaceUVVals(int HandleBoolParamSrfUVVals)


Description:

Controls if UV paprameter values of original surface should be returned.

Parameters:

HandleBoolParamSrfUVVals: If TRUE, UV values are to be returned.


Returned Value:

int: Old value.


See Also:

BooleanOR BooleanAND BooleanSUB BooleanCUT BooleanMERGE BooleanNEG Boolean2D BoolSetOutputInterCurve BoolSetHandleCoplanarPoly BoolSetPolySortAxis BoolSetPerturbAmount

Keywords:

Booleans


BoolSetPerturbAmount

(bool-hi.c:1360)

Prototype:

  IrtRType BoolSetPerturbAmount(IrtRType PerturbAmount)


Description:

Controls the perturbation amount, if any, of the second object to improve the success likelihood. Perturbations are applied once the Booleans return with an empty intersection.

Parameters:

PerturbAmount: Perturbation amount of objects before reattempting Booleans that ends up empty.


Returned Value:

IrtRType: Old value.


See Also:

BooleanOR BooleanAND BooleanSUB BooleanCUT BooleanMERGE BooleanNEG Boolean2D BoolSetHandleCoplanarPoly BoolSetPolySortAxis BoolSetParamSurfaceUVVals BoolSetOutputInterCurve

Keywords:

Booleans


BoolSetPolySortAxis

(bool1low.c:688)

Prototype:

  int BoolSetPolySortAxis(int PolySortAxis)


Description:

Routine to set polygonal sorting axis.

Parameters:

PolySortAxis: Sorting axis. Either 0(x), 1 (y), or 2 (z).


Returned Value:

int: Old value.


Keywords:

Booleans


BoolSortOpenInterList

(bool1low.c:1574)

Prototype:

  void BoolSortOpenInterList(IPPolygonStruct *Pl, InterSegListStruct **POpen)


Description:

Sorts the open loops of given polygon to an order that can be used in subdividing into sub polygons later (see comment of BoolExtractPolygons). This order is such that each loops will have no other loop between its end points, if we walk along the polygon in the (linked list direction) perimeter from one end to the other, before it. For example:
               -----------------------------L3
              |  ---------------L1  -----L2 |          --------L4   --L5
              | |               |  |     |  |         |        |   |  |
        P0 ------ P1 ------- P2 ----- P3 -------- P4 ------ P5 -------- P0

In this case, any order such that L1, L2 are before L3 will do. Obviously this is not a total order, and they are few correct ways to sort it. Algorithm: For each open loop, for each of its two end, evaluate a IrtRType key for the end point P between segment P(i) .. P(i+1) to be i + t, where: t is the ratio (P - P(i)) / (P(i+1) - P(i)) . This maps the all perimeter of the polygon onto 0..N-1, where N is number of vertices of that polygon. Sort the keys, and while they are keys in data structure, search and remove a consecutive pair of keys associated with same loop, and output it. Note that each open loop point sequence is tested to be such that it starts on the first point (first and second along vertex list) on polygon perimeter, and the sequence end is on the second point, and the sequence is reversed if not so. This order will make the replacement of the perimeter from first to second points by the open loop much easier. This may be real problem if there are two intersection points almost identical - floating point errors may cause it to loop forever. We use some reordering heuristics in this case, and return fatal error if fail!

Parameters:

Pl: To sort the loops for.
POpen: The set of open loops. Updated in place.


Returned Value:

void


Keywords:




Boolean2D

(bool-2d.c:70)

Prototype:

  IPPolygonStruct *Boolean2D(IPPolygonStruct *Pl1,
                             IPPolygonStruct *Pl2,
                             BoolOperType BoolOper)


Description:

Given two convex polygons assumed to be in the same plane, compute their 2D Boolean operation BoolOper and return it as a new polygon(s). NULL is returned if an error occur (No intersection or invalid BoolOper).

Parameters:

Pl1: First convex polygon to compute 2D Boolean for.
Pl2: Second convex polygon to compute 2D Boolean for.
BoolOper: Boolean operation requested (and, or, etc.)


Returned Value:

IPPolygonStruct *: The resulting Boolean operation.


See Also:

BooleanOR BooleanAND BooleanSUB BooleanCUT BooleanMERGE BooleanNEG BoolSetHandleCoplanarPoly BoolSetOutputInterCurve Boolean2DComputeInters

Keywords:

Booleans


Boolean2DComputeInters

(bool-2d.c:563)

Prototype:

  Bool2DInterStruct *Boolean2DComputeInters(IPPolygonStruct *Poly1,
                                            IPPolygonStruct *Poly2,
                                            int HandlePolygons,
                                            int DetectIntr)


Description:

Given two polygons/lines, Detect all edges in Pl1 that intersect with edges in Pl2. Returned is the information about all intersections as a Bool2DInter structure list.

Parameters:

Poly1, Poly2: The two polygons/lines to intersect.
HandlePolygons: If polygons, needs to handle normals etc.
DetectIntr: If TRUE, return non NULL dummy pointer if the two polys do indeed intersect. For detection of intersection!


Returned Value:

Bool2DInterStruct *: Intersection information.


See Also:

Boolean2D

Keywords:

Booleans


BooleanAND

(bool-hi.c:483)

Prototype:

  IPObjectStruct *BooleanAND(const IPObjectStruct *PObjIn1,
                             const IPObjectStruct *PObjIn2)


Description:

Performs a Boolean AND between two objects.

Parameters:

PObjIn1: First object to perform the Boolean operation on.
PObjIn2: Second object to perform the Boolean operation on.


Returned Value:

IPObjectStruct *: The result of the Boolean operation.


See Also:

BooleanOR BooleanSUB BooleanCUT BooleanMERGE BooleanNEG Boolean2D BoolSetOutputInterCurve BoolSetHandleCoplanarPoly BoolSetPolySortAxis BoolSetParamSurfaceUVVals BooleanSELF BooleanCONTOUR BoolSetPerturbAmount

Keywords:

Booleans


BooleanCONTOUR

(bool-hi.c:804)

Prototype:

  IPObjectStruct *BooleanCONTOUR(const IPObjectStruct *PObjIn, IrtPlnType Plane)


Description:

Performs a contouring of the given poly object with the given plane.

Parameters:

PObjIn: Object to perform the contouring operation on.
Plane: Plane to use in the contouring.


Returned Value:

IPObjectStruct *: The result of the contouring operation.


See Also:

BooleanMultiCONTOUR BooleanOR BooleanAND BooleanSUB BooleanMERGE BooleanNEG Boolean2D BoolSetOutputInterCurve BoolSetHandleCoplanarPoly BoolSetPolySortAxis BoolSetParamSurfaceUVVals BooleanSELF BooleanCUT BoolSetPerturbAmount

Keywords:

Booleans


BooleanCUT

(bool-hi.c:717)

Prototype:

  IPObjectStruct *BooleanCUT(const IPObjectStruct *PObjIn1,
                             const IPObjectStruct *PObjIn2)


Description:

Performs a Boolean CUT between two objects.

Parameters:

PObjIn1: First object to perform the Boolean operation on.
PObjIn2: Second object to perform the Boolean operation on.


Returned Value:

IPObjectStruct *: The result of the Boolean operation.


See Also:

BooleanOR BooleanAND BooleanSUB BooleanMERGE BooleanNEG Boolean2D BoolSetOutputInterCurve BoolSetHandleCoplanarPoly BoolSetPolySortAxis BoolSetParamSurfaceUVVals BooleanSELF BooleanCONTOUR BoolSetPerturbAmount

Keywords:

Booleans


BooleanComputeRotatedPolys

(bool-hi.c:1241)

Prototype:

  IPPolygonStruct *BooleanComputeRotatedPolys(IPPolygonStruct *Pl,
                                              int CopyOnePl,
                                              IrtHmgnMatType RotMat)


Description:

Routine to optionally copy (if CpolyOnePl) a single polygon and rotate according to the rotation matrix provided. If, however, CopyOnePl is False all polygons in list are converted.

Parameters:

Pl: Polygon(s) to transform. Assumed to be convex.
CopyOnePl: Should we copy? Also if FALSE Pl might be non convex!
RotMat: Transformation matrix.


Returned Value:

IPPolygonStruct *: Transformed polygon(s).


Keywords:

Booleans


BooleanLow1In2

(bool1low.c:224)

Prototype:

  IPObjectStruct *BooleanLow1In2(IPObjectStruct *PObj1, IPObjectStruct *PObj2)


Description:

Finds the part of PObj1 which is in of PObj2:

Parameters:

PObj1: First object of Boolean operation.
PObj2: Second object of Boolean operation.


Returned Value:

IPObjectStruct *: Result of one in two.


See Also:

BooleanLow1Out2 BooleanLowSelfInOut

Keywords:

Booleans


BooleanLow1Out2

(bool1low.c:159)

Prototype:

  IPObjectStruct *BooleanLow1Out2(IPObjectStruct *PObj1, IPObjectStruct *PObj2)


Description:

Finds the part of PObj1 which is out of PObj2:

Parameters:

PObj1: First object of Boolean operation.
PObj2: Second object of Boolean operation.


Returned Value:

IPObjectStruct *: Result of one out two.


See Also:

BooleanLow1In2 BooleanLowSelfInOut

Keywords:

Booleans


BooleanLowSelfInOut

(bool1low.c:276)

Prototype:

  IPObjectStruct *BooleanLowSelfInOut(IPObjectStruct *PObj, int InOut)


Description:

Finds the part of PObj which is in/out of itself:

Parameters:

PObj: Object of Boolean operation with itself (self intersection).
InOut: What are we looking for? in or out.


Returned Value:

IPObjectStruct *: Result of Boolean in/out with self.


See Also:

BooleanLow1Out2 BooleanLow1In2

Keywords:

self intersection Booleans


BooleanMERGE

(bool-hi.c:867)

Prototype:

  IPObjectStruct *BooleanMERGE(const IPObjectStruct *PObjIn1,
                               const IPObjectStruct *PObjIn2)


Description:

Performs a Boolean MERGE between two objects.

Parameters:

PObjIn1: First object to perform the Boolean operation on.
PObjIn2: Second object to perform the Boolean operation on.


Returned Value:

IPObjectStruct *: The result of the Boolean operation.


See Also:

BooleanOR BooleanAND BooleanSUB BooleanCUT BooleanNEG Boolean2D BoolSetOutputInterCurve BoolSetHandleCoplanarPoly BoolSetPolySortAxis BoolSetParamSurfaceUVVals BooleanSELF BooleanCONTOUR BoolSetPerturbAmount

Keywords:

Booleans


BooleanMultiCONTOUR

(bool_multi_cntr.c:138)

Prototype:

  IPObjectStruct *BooleanMultiCONTOUR(IrtRType CntrLevel,
                                      BooleanMultiCntrGenInfoStruct *GI)


Description:

Performs multiple contouring of the given poly object with parallel planes. Planes must be X/Y/Z constant.

Parameters:

CntrLevel: Level to contour at.
GI: The local data for contouring as initialized by the init function.


Returned Value:

IPObjectStruct *: The result of the contouring operation.


See Also:

BooleanCONTOUR BooleanOR BooleanAND BooleanSUB BooleanMERGE BooleanNEG Boolean2D BoolSetOutputInterCurve BoolSetHandleCoplanarPoly BoolSetPolySortAxis BoolSetParamSurfaceUVVals BooleanSELF BooleanCUT BoolSetPerturbAmount

Keywords:

Booleans


BooleanMultiCONTOURFree

(bool_multi_cntr.c:108)

Prototype:

  void BooleanMultiCONTOURFree(BooleanMultiCntrGenInfoStruct *GI)


Description:

Initializes the multiple contouring of the given poly object with parallel planes. Planes must be X/Y/Z constant.

Parameters:

GI: The local data for contouring to ve freed.


Returned Value:

void


See Also:

BooleanMultiCONTOUR BooleanMultiCONTOURInit BooleanCONTOUR BooleanOR BooleanAND BooleanSUB BooleanMERGE BooleanNEG Boolean2D BoolSetOutputInterCurve BoolSetHandleCoplanarPoly BoolSetPolySortAxis BoolSetParamSurfaceUVVals BooleanSELF BooleanCUT BoolSetPerturbAmount

Keywords:

Booleans


BooleanMultiCONTOURInit

(bool_multi_cntr.c:53)

Prototype:

  BooleanMultiCntrGenInfoStruct *BooleanMultiCONTOURInit(
                                                      const IPObjectStruct *PObj,
                                                      int Axis)


Description:

Initializes the multiple contouring of the given poly object with parallel planes. Planes must be X/Y/Z constant.

Parameters:

PObj: Object to perform the multi-contouring operation on.
Axis: 0, 1, 2 for X/Y/Z constant planes to use.


Returned Value:

BooleanMultiCntrGenInfoStruct *: Local data initialized for contouring.


See Also:

BooleanMultiCONTOUR BooleanMultiCONTOURFree BooleanCONTOUR BooleanOR BooleanAND BooleanSUB BooleanMERGE BooleanNEG Boolean2D BoolSetOutputInterCurve BoolSetHandleCoplanarPoly BoolSetPolySortAxis BoolSetParamSurfaceUVVals BooleanSELF BooleanCUT BoolSetPerturbAmount

Keywords:

Booleans


BooleanNEG

(bool-hi.c:922)

Prototype:

  IPObjectStruct *BooleanNEG(const IPObjectStruct *PObjIn)


Description:

Performs a Boolean NEG of an objects. Negation is simply reversing the direction of the plane equation of each polygon - the simplest Boolean operation...

Parameters:

PObjIn: Object to negate.


Returned Value:

IPObjectStruct *: The result of the Boolean operation.


See Also:

BooleanOR BooleanAND BooleanSUB BooleanCUT BooleanMERGE Boolean2D BoolSetOutputInterCurve BoolSetHandleCoplanarPoly BoolSetPolySortAxis BoolSetParamSurfaceUVVals BooleanSELF BooleanCONTOUR BoolSetPerturbAmount

Keywords:

Booleans


BooleanOR

(bool-hi.c:345)

Prototype:

  IPObjectStruct *BooleanOR(const IPObjectStruct *PObjIn1,
                            const IPObjectStruct *PObjIn2)


Description:

Performs a Boolean OR between two objects.

Parameters:

PObjIn1: First object to perform the Boolean operation on.
PObjIn2: Second object to perform the Boolean operation on.


Returned Value:

IPObjectStruct *: The result of the Boolean operation.


See Also:

BooleanAND BooleanSUB BooleanCUT BooleanMERGE BooleanNEG Boolean2D BoolSetOutputInterCurve BoolSetHandleCoplanarPoly BoolSetPolySortAxis BoolSetParamSurfaceUVVals BooleanSELF BooleanCONTOUR BoolSetPerturbAmount

Keywords:

Booleans


BooleanPrepObject

(bool1low.c:571)

Prototype:

  int BooleanPrepObject(IPObjectStruct *PObj)


Description:

Routine to prepare the polygons before the Booleans: verify the plane equations, and compute BBox for all polygons in provided object. Also, the polygons are sorted in the list with according to their minimal BBox value in GlblPolySortAxis axis.

Parameters:

PObj: To prepare, in place.


Returned Value:

int: TRUE if successful, FALSE otherwise.


Keywords:




BooleanSELF

(bool-hi.c:984)

Prototype:

  IPObjectStruct *BooleanSELF(const IPObjectStruct *PObjIn)


Description:

Performs a Boolean Self intersection operation.

Parameters:

PObjIn: Object to perform the self intersecting Boolean operation on.


Returned Value:

IPObjectStruct *: The result of the Boolean operation.


See Also:

BooleanOR BooleanAND BooleanSUB BooleanMERGE BooleanNEG Boolean2D BoolSetOutputInterCurve BoolSetHandleCoplanarPoly BoolSetPolySortAxis BoolSetParamSurfaceUVVals BooleanCUT BooleanCONTOUR BoolSetPerturbAmount

Keywords:

Booleans


BooleanSUB

(bool-hi.c:595)

Prototype:

  IPObjectStruct *BooleanSUB(const IPObjectStruct *PObjIn1,
                             const IPObjectStruct *PObjIn2)


Description:

Performs a Boolean SUBtracion between two objects.

Parameters:

PObjIn1: First object to perform the Boolean operation on.
PObjIn2: Second object to perform the Boolean operation on.


Returned Value:

IPObjectStruct *: The result of the Boolean operation.


See Also:

BooleanOR BooleanAND BooleanCUT BooleanMERGE BooleanNEG Boolean2D BoolSetOutputInterCurve BoolSetHandleCoplanarPoly BoolSetPolySortAxis BoolSetParamSurfaceUVVals BooleanSELF BooleanCONTOUR BoolSetPerturbAmount

Keywords:

Booleans