Some fixes (hacks) to load certain malformed gerber.

This commit is contained in:
Juan Pablo Caram 2014-08-31 16:40:07 -04:00
parent ef30eb5d9c
commit 0974e54d98
2 changed files with 16 additions and 7 deletions

View File

@ -834,19 +834,22 @@ class Gerber (Geometry):
if apertureType == "R": # Rectangle, example: %ADD15R,0.05X0.12*%
self.apertures[apid] = {"type": "R",
"width": float(paramList[0]),
"height": float(paramList[1])}
"height": float(paramList[1]),
"size": sqrt(float(paramList[0])**2 + float(paramList[1])**2)} # Hack
return apid
if apertureType == "O": # Obround
self.apertures[apid] = {"type": "O",
"width": float(paramList[0]),
"height": float(paramList[1])}
"height": float(paramList[1]),
"size": sqrt(float(paramList[0])**2 + float(paramList[1])**2)} # Hack
return apid
if apertureType == "P": # Polygon (regular)
self.apertures[apid] = {"type": "P",
"diam": float(paramList[0]),
"nVertices": int(paramList[1])}
"nVertices": int(paramList[1]),
"size": float(paramList[0])} # Hack
if len(paramList) >= 3:
self.apertures[apid]["rotation"] = float(paramList[2])
return apid
@ -1107,15 +1110,20 @@ class Gerber (Geometry):
log.warning("Single quadrant arc are not implemented yet. (%d)" % line_num)
### Operation code alone
# Operation code alone, usually just D03 (Flash)
# self.opcode_re = re.compile(r'^D0?([123])\*$')
match = self.opcode_re.search(gline)
if match:
current_operation_code = int(match.group(1))
if current_operation_code == 3:
## --- Buffered ---
flash = Gerber.create_flash_geometry(Point(path[-1]),
self.apertures[current_aperture])
poly_buffer.append(flash)
try:
flash = Gerber.create_flash_geometry(Point(path[-1]),
self.apertures[current_aperture])
poly_buffer.append(flash)
except IndexError:
log.warning("Line %d: %s -> Nothing there to flash!" % (line_num, gline))
continue
@ -1900,6 +1908,7 @@ class CNCjob(Geometry):
continue
if type(geo) == Point:
# TODO: point2gcode does not return anything...
self.gcode += self.point2gcode(geo)
continue

View File

@ -1 +1 @@
[{"kind": "gerber", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/cirkuix/tests/CBS-F_Cu.gtl"}, {"kind": "excellon", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/BLDC2003Through.drl"}, {"kind": "gerber", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/cirkuix/tests/CBS-B_Cu.gbl"}, {"kind": "project", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/gerber_project.fcam"}, {"kind": "project", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/drill_project.fcam"}, {"kind": "excellon", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/TFTadapter.drl"}, {"kind": "gerber", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/WindMills - Bottom Copper 2.gbr"}, {"kind": "gerber", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/Example1_copper_bottom.gbr"}, {"kind": "gerber", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/7V-PSU.zip"}, {"kind": "gerber", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/Gerbers/AVR_Transistor_Tester_copper_top.GTL"}]
[{"kind": "gerber", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/not_loaded.gtl"}, {"kind": "gerber", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/diag_1TOP.art"}, {"kind": "gerber", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/22TOP.art"}, {"kind": "gerber", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/Top.gbr"}, {"kind": "excellon", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/holes.drl"}, {"kind": "gerber", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/cirkuix/tests/CBS-F_Cu.gtl"}, {"kind": "excellon", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/BLDC2003Through.drl"}, {"kind": "gerber", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/cirkuix/tests/CBS-B_Cu.gbl"}, {"kind": "project", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/gerber_project.fcam"}, {"kind": "project", "filename": "C:/Users/jpcaram/Dropbox/CNC/pcbcam/test_files/drill_project.fcam"}]