This page summarizes the changes and fixes to each version of the GBR2OASFRAC program.
This is a new 64 bit version with VS2015 compiler. It has all the latest upgrades made to the Gerber translator in the past few years.
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.
Allows 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 are: 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]
This is now applied all the time instead of conditionally as indicated below:
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 Library Update Optimization has been applied for handling polygons with large vertex counts.
Robustness has been improved by adding internal checks between steps.
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.
Optimized function for disjointing self touching polygons to work faster.
Fixed problem with missing trace after sizing certain Gerber polygons.
Gerber union fix to the way the software converted thermals.
Handle empty SR blocks.
Checks Gerber data to see if format is X.Y, that X and Y are enough for
that data. Before, everything that would depend on that format had
scaling problems that would result in an overflow.
Before this, these window extents were altered to reflect the current units displayed. This has now been fixed.
Scale Circularize Chord Error when Gerber Union Scales its DataReduce ADD mass parameters to a minimum amount regardless of the presence or absence of AM mass parameters.
Problem with preliminary step preceding validation and unionization was discovered. This involved removal of overlapping segments in a polygon. The problem was that a given polygon was being conditioned incrementally rather than reevaluated after a given segment was removed. It resulted in a crash. This has now been fixed to fully evaluate a polygon each time a segment is removed.
Max points control fixed.
Folded polygon was dropped but now repaired.
Sized polygon was dropped. Issue was fixed.
Reduce RS274X AM and ADD mass parameters to a minimum amount.
The minimum is approached by detecting similar AM mass parameters and mapping them to one, consequently reducing the amount of dcodes required.
The reduction is applied for files with:
High formats.
Multiply defined apertures.
Over 5000 ADD mass parameters specified or one ADD mass parameter which has dcode greater than 5000.
Gerber unionization stage has been updated to run with 64 bit executables where such executions are permitted (on Windows 64 bit).
Complex polygon with over 250000 vertices was dropped during the union operation. This has been fixed.
Complex polygon was dropped during union operation under certain banding condition. This has been fixed.
Polygons dropped during repairs are flagged as errors if polygon is considered suspect.
XY coordinates for warning/error messages are now specified in floating point values rather than integer based.
This version supports up to 40000 apertures in the Gerber file (before it was 10000).
Dimension FilteringAdded dimension filtering during union validation. For inch it's 0.00004 and for mm it's 0.001. This filtering removes features that are smaller than this dimension when repairing self intersecting polygons
This version supports up to 4096 internal layers in the Gerber file.
Header File
HEADER FILE, igbr2oasfrac.h, IN "include" directory has been revised.
The C++ data structure field, m_WorkDir, in sGBR2OASFRACOPTIONS, has
been changed from a (char *) type to a std::string type
The shell has been updated to only allow positive nonzero chord error.
Gbr Union Manager Engine has been updated to set arc resolution to 45.0 when none is specified and chord error is nonzero.
A bug was discovered involving data that was stepped and repeated. If such data exceeded a specific vertex count,it would be processed over multiple threads. It is this multithreaded processing which caused the program crash. This has now been fixed.
When reentrant polygons are stepped and repeated, validation is required on that data to prevent it from being dropped.
Layer Dialog ReorderThis bug was introduced in v3.17 - 08/31/2011. Layers would disappear when reordering. This has now been fixed.
Log file in Gerber ViewThis was done for error checking that was missed from within Gbrvu.
One of the modules failed to support Gerber files with over 1024 layers. This has been fixed.
Added "No Fracture" option in "OASIS Fracture Settings". This option disables polygon fracturing when set. Default is off..
This version handles empty Gerber SR blocks and we increased layer buffer size to support 1024 LP commands.
A validation phase has been added to repair polygons while preserving data hierarchy. This was done as an optimization to prevent that from happening for multiple reference instances.
Tiling SpeedTiling engine has been optimized to explode data more quickly.
OASIS output crashOASIS formatter had a program crash related to modal sorting. This has now been fixed.
Tile SortWhen position sorting was requested, polygon fracturing was not organizing polygon vertices in counter clockwise orientation with bottom most left most point being first. This has now been fixed.
Tile structure naming and ordering has been corrected.
This version includes a new feature which allows the user to define a string of text (Job ID) and a location. The text will be translated to OASIS as part of the Gerber file.
Job ID settings have been added to the library. The GUI has added controls which are labeled:
Label Description (a) User String Job ID String (b) X Text X Location in Gerber Units (c) Y Text Y Location in Gerber Units (d) Size Text Height in Gerber Units (e) Rotation Text rotation in degrees (f) Mirror Text reflection across Y
The C and C++ API have new member options corresponding to the new GUI controls and they are:
------------------------------------- C Data Structure _sGBR2OASFRACOPTIONS ------------------------------------- mJobIdUserStr (const char *) mJobIdX (double) mJobIdY (double) mJobIdSize (double) mJobIdRotation (double) mJobIdMirror (int) -------------------------------------- C++ Data Structure sGBR2OASFRACOPTIONS -------------------------------------- mJobIdUserStr (std::string) mJobIdX (double) mJobIdY (double) mJobIdSize (double) mJobIdRotation (double) mJobIdMirror (int)
The C and C++ API have new commandline arguments for by_Cmd functions, and they also correspond to the new GUI controls. These arguments are:
------------------------------------------------------ C Function NGbr2OasFrac_convertGBRToFracturedOAS_byCmd And C++ Function convertGBRToFracturedOAS (by command) ------------------------------------------------------ Argument Description -jobiduserstr:str Specify Job ID string str. -jobidx:value Specify Job ID X in Gerber units. -jobidy:value Specify Job ID Y in Gerber units. -jobidsize:value Specify Job ID size in Gerber units. -jobidrotation:r Specify Job ID rotaion in degrees. -jobidmirror Specify Job ID mirror.
The sample program has been updated to handle the new command line arguments.
Arc resolution has been removed from GUI settings. When chord error is 0, it is set to 9 degrees. Otherwise, it is set to 45 degrees.
There was a bug fix to Gerber union phase with when converting a high format file from 4.6 MM format. It was incorrectly changed to a 2.6 format which produced data overflow. It is now converted to a 3.5 format during this phase when data overflow is detected.
First release of our GBR2OASIS Fracture converter on Windows.