From 4b3bfb0115aaba8ba89506fb4e376a836526216c Mon Sep 17 00:00:00 2001 From: Seth Hillbrand Date: Mon, 10 Dec 2018 04:13:12 -0700 Subject: [PATCH] footprint wiz: Update default values This updates some of the footprint wizard values to use the default KLC values for silkscreen, fab, courtyard and text. Also updates the default QFN settings to create a valid footprint --- pcbnew/python/plugins/FPC_wizard.py | 1 + pcbnew/python/plugins/bga_wizard.py | 6 +++-- .../plugins/circular_pad_array_wizard.py | 5 +++-- .../python/plugins/microMatch_connectors.py | 2 ++ pcbnew/python/plugins/qfn_wizard.py | 20 +++++++++-------- pcbnew/python/plugins/qfp_wizard.py | 22 ++++++++++--------- .../python/plugins/qrcode_footprint_wizard.py | 6 ++--- pcbnew/python/plugins/sdip_wizard.py | 7 +++--- pcbnew/python/plugins/zip_wizard.py | 3 ++- 9 files changed, 42 insertions(+), 30 deletions(-) diff --git a/pcbnew/python/plugins/FPC_wizard.py b/pcbnew/python/plugins/FPC_wizard.py index 96d7ace893..0a9721681e 100644 --- a/pcbnew/python/plugins/FPC_wizard.py +++ b/pcbnew/python/plugins/FPC_wizard.py @@ -101,6 +101,7 @@ class FPC_FootprintWizard(FootprintWizardBase.FootprintWizard): self.module.Add(pad_s1) # add footprint outline + self.draw.SetLineThickness( pcbnew.FromMM( 0.12 ) ) #Default per KLC F5.1 as of 12/2018 linewidth = self.draw.GetLineThickness() margin = linewidth diff --git a/pcbnew/python/plugins/bga_wizard.py b/pcbnew/python/plugins/bga_wizard.py index 6705450800..e2b5aceb8a 100644 --- a/pcbnew/python/plugins/bga_wizard.py +++ b/pcbnew/python/plugins/bga_wizard.py @@ -99,11 +99,13 @@ class BGAWizard(FootprintWizardBase.FootprintWizard): bevel = pcbnew.FromMM(1) # Box with 1mm bevel as per IPC7351C + self.draw.SetLineThickness( pcbnew.FromMM( 0.1 ) ) #Default per KLC F5.2 as of 12/2018 self.draw.BoxWithDiagonalAtCorner(0, 0, ssx*2, ssy*2, bevel) # Add IPC markings to F_Silk layer - self.draw.SetLayer(pcbnew.F_SilkS) - offset = pcbnew.FromMM(0.15) + self.draw.SetLayer( pcbnew.F_SilkS ) + self.draw.SetLineThickness( pcbnew.FromMM( 0.12 ) ) #Default per KLC F5.1 as of 12/2018 + offset = self.draw.GetLineThickness() len_x = 0.5 * ssx len_y = 0.5 * ssy diff --git a/pcbnew/python/plugins/circular_pad_array_wizard.py b/pcbnew/python/plugins/circular_pad_array_wizard.py index 28ee00d03d..fc7e96f8ba 100644 --- a/pcbnew/python/plugins/circular_pad_array_wizard.py +++ b/pcbnew/python/plugins/circular_pad_array_wizard.py @@ -101,11 +101,12 @@ class circular_pad_array_wizard(FootprintWizardBase.FootprintWizard): # Draw the outline body_radius = outline['diameter'] / 2 self.draw.SetLayer(pcbnew.F_Fab) - self.draw.GetLineThickness() + self.draw.SetLineThickness( pcbnew.FromMM( 0.1 ) ) #Default per KLC F5.2 as of 12/2018 self.draw.Circle(0, 0, body_radius) #silkscreen - body_radius += pcbnew.FromMM(0.15) + body_radius += pcbnew.FromMM(0.12) + self.draw.SetLineThickness( pcbnew.FromMM( 0.12 ) ) #Default per KLC F5.1 as of 12/2018 self.draw.SetLayer(pcbnew.F_SilkS) self.draw.Circle(0, 0, body_radius) diff --git a/pcbnew/python/plugins/microMatch_connectors.py b/pcbnew/python/plugins/microMatch_connectors.py index e8134bdcac..8a66b996b5 100644 --- a/pcbnew/python/plugins/microMatch_connectors.py +++ b/pcbnew/python/plugins/microMatch_connectors.py @@ -148,6 +148,8 @@ class MicroMaTchWizard(FPWbase.FootprintWizard): width = pcbnew.FromMM(1.92) + (numPads * padPitch) / 2 height = pcbnew.FromMM(5) + self.draw.SetLineThickness( pcbnew.FromMM( 0.12 ) ) #Default per KLC F5.1 as of 12/2018 + # Left part # -- # | diff --git a/pcbnew/python/plugins/qfn_wizard.py b/pcbnew/python/plugins/qfn_wizard.py index c45e261e8c..18a3db095e 100644 --- a/pcbnew/python/plugins/qfn_wizard.py +++ b/pcbnew/python/plugins/qfn_wizard.py @@ -34,9 +34,9 @@ class QFNWizard(FootprintWizardBase.FootprintWizard): #TODO - Allow different number of pads in x and y directions self.AddParam("Pads", "n", self.uInteger, 100, multiple=4, min_value=4) - self.AddParam("Pads", "pitch", self.uMM, 0.5, designator='e') - self.AddParam("Pads", "width", self.uMM, 0.25, designator='X1') - self.AddParam("Pads", "length", self.uMM, 1.5, designator='Y1') + self.AddParam("Pads", "pitch", self.uMM, 0.4, designator='e') + self.AddParam("Pads", "width", self.uMM, 0.2, designator='X1') + self.AddParam("Pads", "length", self.uMM, 0.75, designator='Y1') self.AddParam("Pads", "fillet", self.uMM, 0.3) self.AddParam("Pads", "oval", self.uBool, True) @@ -45,9 +45,9 @@ class QFNWizard(FootprintWizardBase.FootprintWizard): self.AddParam("EPad", "length", self.uMM, 10, designator="D2") self.AddParam("EPad", "thermal vias", self.uBool, False) self.AddParam("EPad", "thermal vias drill", self.uMM, 1, min_value=0.1) - self.AddParam("EPad", "x divisions", self.uInteger, 2, min_value=1) - self.AddParam("EPad", "y divisions", self.uInteger, 2, min_value=1) - self.AddParam("EPad", "paste margin", self.uMM, 0.1) + self.AddParam("EPad", "x divisions", self.uInteger, 4, min_value=1) + self.AddParam("EPad", "y divisions", self.uInteger, 4, min_value=1) + self.AddParam("EPad", "paste margin", self.uMM, 0.75) self.AddParam("Package", "width", self.uMM, 14, designator='E') self.AddParam("Package", "height", self.uMM, 14, designator='D') @@ -188,17 +188,19 @@ class QFNWizard(FootprintWizardBase.FootprintWizard): self.draw.BoxWithDiagonalAtCorner(0, 0, w, h, bevel) # Silkscreen - self.draw.SetLayer(pcbnew.F_SilkS) + self.draw.SetLayer( pcbnew.F_SilkS ) offset = self.draw.GetLineThickness() clip = row_len / 2 + self.pads['pitch'] + self.draw.SetLineThickness( pcbnew.FromMM( 0.12 ) ) #Default per KLC F5.1 as of 12/2018 self.draw.Polyline( [ [ clip, -h/2-offset], [ w/2+offset,-h/2-offset], [ w/2+offset, -clip] ] ) # top right self.draw.Polyline( [ [ clip, h/2+offset], [ w/2+offset, h/2+offset], [ w/2+offset, clip] ] ) # bottom right self.draw.Polyline( [ [-clip, h/2+offset], [-w/2-offset, h/2+offset], [-w/2-offset, clip] ] ) # bottom left # Add pin-1 indication as per IPC-7351C - self.draw.Line(-clip, -h/2-offset, -w/2-pad_length/2, -h/2-offset) + self.draw.Line( -clip, -h/2-offset, -w/2-pad_length/2, -h/2-offset ) + self.draw.SetLineThickness( offset ) #Restore default # Courtyard cmargin = self.package["margin"] @@ -219,7 +221,7 @@ class QFNWizard(FootprintWizardBase.FootprintWizard): #reference and value text_size = self.GetTextSize() # IPC nominal - text_offset = v_pitch / 2 + text_size + pad_length / 2 + text_offset = sizey / 2 + text_size self.draw.Value(0, text_offset, text_size) self.draw.Reference(0, -text_offset, text_size) diff --git a/pcbnew/python/plugins/qfp_wizard.py b/pcbnew/python/plugins/qfp_wizard.py index 4c18e89609..4dd686064f 100644 --- a/pcbnew/python/plugins/qfp_wizard.py +++ b/pcbnew/python/plugins/qfp_wizard.py @@ -114,6 +114,7 @@ class QFPWizard(FootprintWizardBase.FootprintWizard): # Add outline to F_Fab layer self.draw.SetLayer(pcbnew.F_Fab) + thick = self.draw.GetLineThickness() bevel = min( pcbnew.FromMM(1.0), self.package['width']/2, self.package['height']/2 ) @@ -127,10 +128,12 @@ class QFPWizard(FootprintWizardBase.FootprintWizard): bottom_edge = (v_pitch + pad_length) / 2 top_edge = -bottom_edge + self.draw.SetLineThickness( pcbnew.FromMM( 0.1 ) ) #Default per KLC F5.2 as of 12/2018 self.draw.BoxWithDiagonalAtCorner(0, 0, w, h, bevel) # Draw silkscreen - self.draw.SetLayer(pcbnew.F_SilkS) + self.draw.SetLayer( pcbnew.F_SilkS ) + self.draw.SetLineThickness( pcbnew.FromMM( 0.12 ) ) #Default per KLC F5.1 as of 12/2018 #top left - as per IPC-7351C self.draw.Polyline([(-inner, -y), (-x, -y), (-x, -inner), (left_edge, -inner)]) @@ -143,16 +146,15 @@ class QFPWizard(FootprintWizardBase.FootprintWizard): # Courtyard cmargin = self.parameters["Package"]["courtyard margin"] - self.draw.SetLayer(pcbnew.F_CrtYd) - sizex = (right_edge + cmargin) * 2 - sizey = (bottom_edge + cmargin) * 2 + self.draw.SetLayer( pcbnew.F_CrtYd ) + sizex = ( right_edge + cmargin ) * 2 + sizey = ( bottom_edge + cmargin ) * 2 # round size to nearest 0.1mm, rectangle will thus land on a 0.05mm grid - sizex = pcbnew.PutOnGridMM(sizex, 0.1) - sizey = pcbnew.PutOnGridMM(sizey, 0.1) - # set courtyard line thickness to the one defined in KLC - thick = self.draw.GetLineThickness() - self.draw.SetLineThickness(pcbnew.FromMM(0.05)) - self.draw.Box(0, 0, sizex, sizey) + sizex = pcbnew.PutOnGridMM( sizex, 0.1 ) + sizey = pcbnew.PutOnGridMM( sizey, 0.1 ) + + self.draw.SetLineThickness( pcbnew.FromMM( 0.05 ) ) #Default per KLC F5.3 as of 12/2018 + self.draw.Box( 0, 0, sizex, sizey ) # restore line thickness to previous value self.draw.SetLineThickness(pcbnew.FromMM(thick)) diff --git a/pcbnew/python/plugins/qrcode_footprint_wizard.py b/pcbnew/python/plugins/qrcode_footprint_wizard.py index a2a7aa0bbe..8667ef9e6e 100644 --- a/pcbnew/python/plugins/qrcode_footprint_wizard.py +++ b/pcbnew/python/plugins/qrcode_footprint_wizard.py @@ -36,9 +36,9 @@ class QRCodeWizard(FootprintWizardBase.FootprintWizard): self.AddParam("Barcode", "Use SilkS layer", self.uBool, False) self.AddParam("Barcode", "Use Cu layer", self.uBool, True) self.AddParam("Caption", "Enabled", self.uBool, True) - self.AddParam("Caption", "Height", self.uMM, 1.2) - self.AddParam("Caption", "Width", self.uMM, 1.2) - self.AddParam("Caption", "Thickness", self.uMM, 0.12) + self.AddParam("Caption", "Height", self.uMM, 1.0) + self.AddParam("Caption", "Width", self.uMM, 1.0) + self.AddParam("Caption", "Thickness", self.uMM, 0.15) def CheckParameters(self): diff --git a/pcbnew/python/plugins/sdip_wizard.py b/pcbnew/python/plugins/sdip_wizard.py index dfb9a0fccb..c83eb6f9d1 100644 --- a/pcbnew/python/plugins/sdip_wizard.py +++ b/pcbnew/python/plugins/sdip_wizard.py @@ -99,13 +99,14 @@ class RowedFootprint(FootprintWizardBase.FootprintWizard): ssx = -pin1_posX - ssx_offset ssy = -pin1_posY - ssy_offset + cmargin = self.draw.GetLineThickness() + self.draw.SetLineThickness( pcbnew.FromMM( 0.12 ) ) #Default per KLC F5.1 as of 12/2018 self.DrawBox(ssx, ssy) # Courtyard - cmargin = self.draw.GetLineThickness() self.draw.SetLayer(pcbnew.F_CrtYd) - sizex = (ssx + cmargin) * 2 - sizey = (ssy + cmargin) * 2 + sizex = (pin1posX + cmargin) * 2 + pad_Hsize + thick + sizey = (pin1posY + cmargin) * 2 + pad_Vsize + thick # round size to nearest 0.1mm, rectangle will thus land on a 0.05mm grid sizex = pcbnew.PutOnGridMM(sizex, 0.1) sizey = pcbnew.PutOnGridMM(sizey, 0.1) diff --git a/pcbnew/python/plugins/zip_wizard.py b/pcbnew/python/plugins/zip_wizard.py index e348617797..75e03ca457 100644 --- a/pcbnew/python/plugins/zip_wizard.py +++ b/pcbnew/python/plugins/zip_wizard.py @@ -85,13 +85,14 @@ class RowedFootprint(FootprintWizardBase.FootprintWizard): if cornery < linew: cornery = linew + thick = self.draw.GetLineThickness() + self.draw.SetLineThickness( pcbnew.FromMM( 0.12 ) ) #Default per KLC F5.1 as of 12/2018 self.DrawBox(leftx*2, cornery*2) # Courtyard cmarginx = self.body['courtyard margin'] cmarginy = cmarginx self.draw.SetLayer(pcbnew.F_CrtYd) - thick = self.draw.GetLineThickness() sizex = (pin1posX + cmarginx) * 2 + pad_Hsize + thick sizey = (pin1posY + cmarginy) * 2 + pad_Vsize + thick # round size to nearest 0.1mm, rectangle will thus land on a 0.05mm grid