GBRUnion DLL Revision History

Summary of changes and fixes to each release of GBRUnion DLL.


Version 1.07 11/20/2016

Macro Tolerance

Added -macro_tol:val[unit] to help identify similar RS274X AM MACROS.
The tolerance value is used in the Gerber preconditioner, split274x, to map similar aperture macros into one. The default has always used 0.001 MM or 0.0004 Inches. This control is now provided to allow the user to specify the tolerance. The default is 0.001 MM or 0.00004 IN. The value must be no negative and no greater than 10 UM.

Command line Change

Replaced "-no_part" argument with -single_part argument in GBRUNION.
The "-single_part" argument is made to run with one single partition window. This is functionally the same as enforcing that a single thread is applied to compacting and boolean operations. The absence of partition arguments, provided by "-no_part", used to do it, but multi threading, specified by the argument "-thrnum:number" or automatically detected, caused partitioning to happen anyway.

Software Updates

Updated Flexlm to version 11.13.1.2.
GDSII output in GerberUnion is safe guarded against circularize option.
-no_joinpart command line argument was removed.
Fixed a problem where arc traces with radii greater than width were segmented incorrectly.


Version 1.06d 10/7/2016

Gerber Union Updates

When a butterfly figure interacts with something else it created a self touching polygon which was problematic for subsequent boolean operations.

After union, some polygons with touching holes had very acute angles touching butting lines mistakenly, causing gaps in the data. This has been fixed.

The text file passed to gbrunmgr's (-polywin:file command line option)" now accepts comma and tab characters in addition to space characters as delimiters for xy coordinates.


Version 1.06c 9/22/2016

Smoothing Issue

Certain cases of smoothing and the amount of partitioning resulted in cracks appearing in the polygons generated by GerberUnion. This was because the partition edges were not being excluded from the smoothing.


Version 1.06b 8/15/2016

GBRUNION Manager Unit Problem

Unit values on the command line carrying an exponent in their expression (for example 1.0e-005) were not handled properly. This has now been fixed.


Version 1.06a 8/9/2016

GBRUNION Manager Update

Allow unit specification where unit can be INCH, MIL, CM, MM, or UM.
    This has been added for the following arguments:

    -arcsag:val[unit]

    -diameter:dia.[unit]
    -diameter_lpc:dia.[unit]

    -offset:x[unit],y[unit]
    -xform:xform_parms    Set transformation settings (comma separated).
                    xform_parms is rotation_parms,mirror_parms,scale_parms,offset_parms
                    rotation_parms are anchor_x[unit],anchor_y[unit],rotation
                    mirror_parms are mirror_x,mirror_y
                    scale_parms are scale_x,scale_y
                    offset_parms are offset_x[unit],offset_y[unit]

    -overlapvalue:value[unit]

    -circularize[:chord_err[unit]]
    -reversal:marginx[unit],marginy[unit]

    -sizingvalue:value[unit]
    -smoothingvalue:value[unit]
    -smoothingvalue:value[unit]

-window:xmin[unit],ymin[unit],xmax[unit],ymax[unit]


Version 1.06 5/20/2016

-joinpart option

Added support of -joinpart argument into library. This turns on data partition joining

-overlapvalue option

Added support of -overlapvalue:value argument into library. This Generates an overlap of value in butting mode. (use it with -polyformat:butting)

Software Updates

Added a usage dialog box into sample program, found in the bin sub folder, showing all available arguments that can be passed into library.

Fixed usage box to display correct executable name.

(5) The DLL manual has been updated to show the same information as the usage box displayed from the sample program.


Version 1.05c 4/20/2016

Revision to Gerber PreProcessor

This is now applied all the time instead of conditionally as indicated below:

  • Format specified was too high.
  • Multiply defined apertures were detected.
  • High dcode value was detected.

  • Format is pushed to best precision during input processing. If Gerber data is in mm, data is converted to 5 places of precision before it's interpreted and unionized. Likewise, if data is is in inch, data is converted to 6 places of precision.

    Union components Updates

    Optimization has been applied for handling polygons with large vertex counts.
    Robustness has been improved by adding internal checks between steps.


    Version 1.05b 3/15/2016

    Missing contours

    Missing contours were discovered and fixed.

    Horizontal separation

    Horizontal separation of boundary removed.


    Version 1.05a 1/18/2016

    Boolean Sizing Bug

    Data was being dropped when sizing was used on a customer Gerber file. This has now been fixed.
    Convex partitioning for each polygon required using double comparison rather than rounded integer comparisons.

    Gerber Union Circularization speed improved

    Gerber Union circularization speed was improved by applying multithreading, and optimizing self touching check.


    Version 1.04 10/1/2015

    Program crash

    Circularize functionality improved. Unspecified circularize chord error uses 5 um equivalent by default.
    Usage is
    -circularize
    or
    -circularize:value
    Where value is a user specified value in file units (MM or INCH).

    New Licensing

    Adopted new Flexlm license model, and no more support for disk serial number.


    Version 1.03a 09/10/2015

    Program crash

    Various components have been updated including the one concerning Gerber interpretation which caused a software crash.


    Version 1.03 04/16/2015

    Support new ACS Softkey Licensing

    All customers wishing to use ACS Softkey Licensing will require a uniform supplemental soft key kit, a customer vendor key file, and two static vendor files.

    Note to OEM: You should carry out the following instructions
    to properly compile and use the soft key license test program and the
    Gbrunion Dll test program.
    
    (a) You will receive an email with a link to download soft key kit.
    Install soft key kit after this installation.
    
    (b) This same email will contain a zip file.
    
    File Name Description Instructions
    --------- ----------- ------------
    vkf.txt Vendor Key File Place in [Installation_Directory]
    (Expires 04/15/2018)or wherever else desired, [VKF_Directory].
    
    acsvendor_s.lib 32 bit Softkey LibPlace in [Installation_Directory]\lib
    
    acsvendor64_s.lib 64 bit Softkey LibPlace in [Installation_Directory]\lib
    
    Follow instructions above for placement of three files mentioned above.
    
    (c) Open solution file in [Installation_Directory]/softkey_sample_vs2008
    using Microsoft Visual Studio 2008 and compile win32 and x64 target
    programs.
    
    (d) Run softkeyshell.exe or softkeyshell64.exe in a similar manner as indicated below.
    
    [Installation_Directory]\bin\softkeyshell.exe
    "[Installation_Directory]\artwork\gbrunmgr.exe" [Program_Arguments] "-acsp:[VKF_Directory]\vkf.txt"
    
    Note that there is a solution file that creates a test program for Gbrunion DLL
    and the followingset of instructions, (e) and (f), correspond to this.
    
    (e) Open solution file, gbrunion_dynamic_oem.sln, in
    [Installation_Directory]/gbrunion_dll_sample_vs2008 using
    Microsoft Visual Studio 2008 and compile win32 and x64 target
    programs:
    
    gbrunion_dynamic_oem.exe
    gbrunion_dynamic64_oem.exe.
    
    (f) Run run_dynamic_oem.bat or run_dynamic64_oem.bat to execute above Gbrunion DLL test programs
    
    (g) Read [Installation_Directory]\documentation\oem_readme.txt for more detailed instructions.
    

    Gerber Union Updates

  • Improved on circularize functionality
  • Added 64 bit "gbrunmgr64.exe" program to scan large file
  • Allow thread control, "-thrnum:[thread_count]", to affect flattened output.
  • Add "-gdscmpargs [ARGS] _END_GDSCOMP_ARGS_" argument setto gbrunmgr.exe.
    This appends arguments to the gdscomp engine which is responsible for unionizing Gerber SR data.
  • Allow any OEM licensed product...

    This version allows any OEM licensed product to do the following:

  • Output GDSII ASCII format.
  • Support licensing for existing output types, RS274, DXF,GDS, GDSII ASCII, and EGS, in gbrunmgr.exe

  • Version 1.02a 01/15/2015

    Support Files

    Batch files, benchmark files, and sample code has been changed to show one window run and one data extents window run. Tiling has been removed from sample code.


    Version 1.02 01/12/2015

    64 bit Gbrunion DLL (gbrunion64.dll) has been added

    64 bit Windows OS is checked for, and if found, 64 bit executables are used to execute the following:

  • Gerber scanning - gbrunmgr64.exe
  • Gerber interpretation - gbr2gdxb64.exe
  • Gerber SR optimization - gdscompact64.exe
  • unionization - boolw64f.exe
  • New Installation

    Install Shield 2014 is used.

    New Directory Structure

  • artwork - contains gbrunion.dll (32 bit), gbrunion64.dll (64 bit) and all supporting exe's and dll's for the gbrunion dll's

  • bin - contains sample exe's which are:
    gbrunion_dynamic.exe (32 bit)
    gbrunion_dynamic64.exe (64 bit) and their backups
    gbrunion_dynamic_orig.exe (32 bit)
    gbrunion_dynamic64_orig.exe (64 bit)

  • documentation - text file with usage for sample executables

  • examples - Contains input file, two batch files, and benchmark files. Batch files are:
    run_dynamic.bat - test for 32 bit sample and dll.
    run_dynamic64.bat - test for 64 bit sample and dll.

  • gbrunion_dll_sample_vs2008 - Contains sample code and Visual 2008 solution file to produce either 32 or 64 bit executables into the bin folder

  • include - Contains header files required for compiling programs using Gbrunion DLL

  • lib - Contains gbrunion.lib and gbrunion64.lib files for 32 or 64 bit static builds should anyone wish it. The library and sample code rely on _ACS_GBRUNION_STATIC_LINK_ compiler directive for this.

  • Version 1.01 05/04/2012

    Add Extents information to ACS_GBRUNION_FileInfo Data Structure

    By calling ACS_Gbrunion_GetFileInfo, a user can extract the data extents of the input Gerber file in the units of that same file.
    The new data structure field is shown below.

    typedef struct
    {
      char   libname[_MAX_PATH];  - internal name generated from opening input Gerber file
      char   unit[32];            - units of input Gerber file
      int    igrid;               - integer grid of input Gerber file
      double dataexts[4];         - extents of loaded data <------ >>>>> New data field <<<<<<
    } ACS_GBRUNION_FileInfo;
    

    Add ACS_Gbrunion_GetTile Function

    ACS_Gbrunion_GetTile
    
    Syntax
    
    int ACS_Gbrunion_GetTile ACS_Gbrunion_GetTile(double *window, ACS_GBRUNION_Polygon **ppolylist, int *ppolycnt);
    
    Description
    
    Generates a list of unionized polygons clipped to a specified window
    and returns a list of polygons. May only be called after ACS_Gbrunion_Open.
    
    Arguments
    
    double *window                   -  clipping window extents in units
                                         of input Gerber data.
                                         (minx, miny, maxx, maxy)
    
    ACS_GBRUNION_Polygon **ppolylist -  returned list of polygons which may or
                                         may not contain holes.
    
    int *ppolycnt                    - returned polygon count
    
    Return
    
    0       : success
    nonzero : failure
    

    Allow for Dynamic linking in addition to static linking

    Static linking requires:

  • _ACS_GBRUNION_STATIC_LINK_ compiler directive
  • gbrunion.lib to be linked in


  • Dynamic linking is default and requires the following:
  • First call ACS_GBRUNION_LoadGbrUnion( [DLL_NAME] ) to use ibrary - [DLL_NAME] must be full path name
  • Second Call ACS_GBRUNION_ErrorLoadingGbrUnion() for any errors detected during call of ACS_GBRUNION_LoadGbrUnion(...). (0 : success , nonzero : failure) This does not work with ACS_Gbrunion_GetErrCode.
  • Finally Call ACS_GBRUNION_FreeGbrUnion() when done using library.


  • Notes:
    The directory gbrunion_dll_sample_vc6 now contains two projectsinstead of one:
    gbrunion_dynamic.dsw - which compiles a sample program that dynamically loads gbrunion.dll from a different directory. The program name is gbrunion_dynamic.exe
    gbrunion_static.dsw - which compiles a sample program that is statically linked to gbrunion.lib forcing it to run in the same directory as gbrnion.dll. The program name is gbrunion_static.exe.

    There is a folder called dynamic which has one executable calledgbrunion_dynamic.exe. The Install_Directory now contains gbrnion_static.exe instead of gbrunion.exe.

    The Install_Directory/examples folder now contains two batch files instead of one:
    run_dynamic.bat - tests gbrunion_dynamic.exe
    run_static.bat - tests gbrunion_static.exe


    Version 1.00 04/25/2012

    Initial Release

    This is the initial release of the DLL.







    Download Functions Example Flow Example Flow Price Revision History