Revision HistoryThis page summarizes updates and revisions to Artwork's QisBool library. Note that QisBool is based on bool.dll so we have preserved the bool.dll revision history prior to the release of QisBool. QISBool Stand Alone (Linux 64) v1.10 03/12/2020Major releaseThis version includes the latest release of the boolean engine. This version should fix a memory leak reported by a client QISBool Stand Alone (Linux 64) v1.00 03/14/2017Initial Stand Alone ReleaseThis is the first stand alone version of QisBool that is not packaged together with QisLib. It is intended for users who need 2D Boolean operations on polygon data but who do not need QisBool integrated with QisLib. It is functionally the same as the QisBool library shipped/integrated with the QisLib release package. QISLIB/QISBOOL64 v2.91e 01/22/2015New Release PackageThe Windows release package has been updated to include QISLib, QISBool and the ACSRaster libraries. New Code ExamplesA new Windows code example for QISBool is included in the release that shows how the library can be used to fracture polygons into trapezoids. bool.dll Windows64 v2.248 01/03/12Software crash on Win64 in the QisBool_BinaryMT functionThis version of BoolDll fixes a bug that causes crash on Win64 in the QisBool_BinaryMT function. New function QisBoolOptions_SetEnhancedValidation Syntax: void QisBoolOptions_SetEnhancedValidation(short onOff, void *bdll_handle);Function: This function controls if the input data will be undergo enhanced validation before being used for Boolean operations. When the input data is poorly constructed (e.g a leonov polygon's hole crosses the polygon's outer boundary), proceeding with the boolean operations might cause a crash because the default validation scheme assumes that the input data has been checked for correctness and compliance. By turning ON enhanced validation using this function, such a crash can be avoided and the Boolean functions (QisBool_Booleanize, QisBool_UnionMT, QisBool_BinaryMT) will return an error code. This enhanced validation comes at the cost of reduced performance and is turned OFF by default. Inputs: onOff: 1 or 0 for ON or OFF respectively bdll_handle: BoolDll thread handle bool.dll Windows64 v2.239 09/10/11First release on Windows 64 bitThis is the first version for Windows 64 bit. The 'vcredist_x86.exe' and 'vcredist_x64.exe' to be found in the installation will allow customers to use Booldll64 on bare-bone Windows 7 machines (those without Visual Studio or compatible binaries installed). bool.dll Linux v2.234 07/25/11New function QisBool_Create to handle touching polygons
Consider a difference between layers 0 and 1 in diff.gds . The result of standard difference is
diffA.gds (the results being a single polygon – self touching a vertex @ 8350,12490). This result
might be unacceptable. There are two ways to avoid generating self touching polygons as
illustrated by diffB.gds and diffC.gds.
For implementing those solutions, a new version of Booldll now has as a new setup function:
bool.dll Windows v2.183 08/14/10Windows releaseUpdate release area to latest boolean engine. bool.dll Windows v2.232 07/19/11Certain polygons took long time to processNew releases to improve the processing speed. Multi ThreadingThis version now includes "convenience" functions for OR, XOR, AND, and DIFF that
automatically make use of striping and multi-threading. Please refer and follow the
_OLD_STYLE compiler directive in the sample program in install_dir/sample/sample.cpp /* **************************************************************** */ /* BOOLEAN FUNCTIONS */ /* **************************************************************** */ #define UNION_OPCODE 1 #define DIFFERENCE_OPCODE 2 #define XOR_OPCODE 3 #define INTERSECTION_OPCODE 4 #define BINARYUNION_OPCODE 5 int QisBool_Booleanize( int*** XY_arr, int** pair_num_arr, int * N, int** XY1_arr, int * pair_num1_arr, int N1, int** XY2_arr, int * pair_num2_arr, int N2, int code, int thrnum ); int QisBool_UnionMT(int*** XY_out_arr, int** pair_num_out_arr, int* Nout, int** XY_in_arr, int* pair_num_in_arr, int Polys, short index, short thrnum); // XY_in_arr is an array of initial xydata, pair_num_in_arr is an array // of vertex numbers and Polys is the number of initial polygon. The // result of the union is: XY_out_arr is the address of the array of // the final xydata, pair_num_out_arr is the address of the array of the // final vertex numvers and Nout is the address of the number of final // polygons. // index is the number returned by QisBool_Create() and thrnum tells // the library how many threads should be used for performing union. int QisBool_BinaryMT(int*** XY_out_arr, int** pair_num_out_arr, int* Nout, int** XY_in_arr1, int* pair_num_in_arr1, int Polys1, int** XY_in_arr2, int* pair_num_in_arr2, int Polys2, short index, short thrnum, short operation); // A function for performing binary boolean operations. The variable operation can // take three values: DIFFERENCE_OPCODE, XOR_OPCODE or // INTERSECTION_OPCODE // The initial data now describes two operands and each of them is described as in // QisBool_UnionMT. The variables describing the output, index and thrnum have the // same meaning as in QisBool_UnionMT #define DoDifference_MT(A,B,C,D,E,F,G,H,I,J,K) \ QisBool_BinaryMT(A,B,C,D,E,F,G,H,I,J,K,DIFFERENCE_OPCODE) #define DoXor_MT(A,B,C,D,E,F,G,H,I,J,K) \ QisBool_BinaryMT(A,B,C,D,E,F,G,H,I,J,K,XOR_OPCODE) #define DoIntersection_MT(A,B,C,D,E,F,G,H,I,J,K) \ QisBool_BinaryMT(A,B,C,D,E,F,G,H,I,J,K,INTERSECTION_OPCODE) bool.dll Linux v2.231 07/18/11New release for various Linux OSNew releases for Linux RHEL 3 and 4 in 32 and 64 bit. bool.dll Windows v2.183 08/14/10Windows releaseUpdate release area to latest boolean engine. bool.dll Windows v2.217 04/11/11Re-entrant polygon ErrorDuring sizing, the software had snapping issues in the cutline area. This has been fixed bool.dll Windows v2.183 08/14/10Windows releaseUpdate release area to latest boolean engine. bool.dll v2.136 02/09/09Added Three Functions
taking a list of boundaries, finds "connected" sets of boundaries based on overlapping or touching and returns the number sets and pointers to the polygons in each set. This was originally developed for use in KLA's Care Area Wizard plug-in but currently not used. BoolClipPath2Regiondesigned to clip a path using a boundary. Does not convert the results into a boundary but rather exports each segment of the path. Currently does not take the path width or end cap into account. QisBool_IsObjectInRegiondesigned to answer the question: is object1 inside of object2? Object 1 can be a path or boundary - object 2 must be a boundary. |
Documentation | Download | Price | Revision History |