Wizard qrcode_footprint_wizard.py: fix a minor issue and update code.

This commit is contained in:
jean-pierre charras 2021-07-19 18:36:44 +02:00
parent 8bacc9fccb
commit 6a886e7085
1 changed files with 21 additions and 19 deletions

View File

@ -13,7 +13,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
# last change: 2017, Jan 4.
# last change: 2021, Jul 19.
import pcbnew
import FootprintWizardBase
@ -66,23 +66,25 @@ class QRCodeWizard(FootprintWizardBase.FootprintWizard):
self.qr.make()
def drawPixelSquareArea( self, layer, size, xposition, yposition):
# creates a FP_SHAPE of polygon type. The polygon is a square
polygon = pcbnew.FP_SHAPE(self.module)
polygon.SetShape(pcbnew.S_POLYGON)
polygon.SetWidth( 0 )
polygon.SetLayer(layer)
# creates a FP_SHAPE of rectangle type. The rectangle is square
rectangle = pcbnew.FP_SHAPE(self.module)
rectangle.SetShape(pcbnew.PCB_SHAPE_TYPE_RECT)
rectangle.SetWidth( 0 )
rectangle.SetFilled( True )
rectangle.SetLayer(layer)
halfsize = int(size/2)
polygon.GetPolyShape().NewOutline();
polygon.GetPolyShape().Append( halfsize+xposition, halfsize+yposition )
polygon.GetPolyShape().Append( halfsize+xposition, -halfsize+yposition )
polygon.GetPolyShape().Append( -halfsize+xposition, -halfsize+yposition )
polygon.GetPolyShape().Append( -halfsize+xposition, halfsize+yposition )
return polygon
rectangle.SetStartX( -halfsize+xposition )
rectangle.SetStartY( -halfsize+yposition )
rectangle.SetEndX( halfsize+xposition )
rectangle.SetEndY( halfsize+yposition )
rectangle.SetStart0( rectangle.GetStart() )
rectangle.SetEnd0( rectangle.GetEnd() )
return rectangle
def _drawQrPixel(self, xposition, yposition):
# build a rectangular pad as a dot on copper layer,
# and a polygon (a square) on silkscreen
# and a rectangle (a square) on silkscreen
if self.UseCu:
pad = pcbnew.PAD(self.module)
pad.SetSize(pcbnew.wxSize(self.X, self.X))
@ -97,8 +99,8 @@ class QRCodeWizard(FootprintWizardBase.FootprintWizard):
pad.SetLayerSet( layerset )
self.module.Add(pad)
if self.UseSilkS:
polygon=self.drawPixelSquareArea(pcbnew.F_SilkS, self.X, xposition, yposition)
self.module.Add(polygon)
rectangle=self.drawPixelSquareArea(pcbnew.F_SilkS, self.X, xposition, yposition)
self.module.Add(rectangle)
def BuildThisFootprint(self):
@ -123,11 +125,11 @@ class QRCodeWizard(FootprintWizardBase.FootprintWizard):
area_width = arrayToDraw.__len__()*self.X + self.border*2
# Center position of QrCode
yposition = - int(half_number_of_elements * self.X)
yposition = - int(half_number_of_elements * self.X) + int(self.X/2)
area_height = arrayToDraw.__len__()*self.X + self.border*2
for line in arrayToDraw:
xposition = - int(half_number_of_elements * self.X)
xposition = - int(half_number_of_elements * self.X) + int(self.X/2)
for pixel in line:
# Trust table for drawing a pixel
# Negative is a boolean;
@ -171,8 +173,8 @@ class QRCodeWizard(FootprintWizardBase.FootprintWizard):
if self.UseCu:
self.draw.SetLineThickness( 0 )
sm_margin = pcbnew.FromMM( 0.05 )
polygon=self.drawPixelSquareArea(pcbnew.F_Mask, area_width + sm_margin*2, 0, 0)
self.module.Add(polygon)
rectangle=self.drawPixelSquareArea(pcbnew.F_Mask, area_width + sm_margin*2, 0, 0)
self.module.Add(rectangle)
QRCodeWizard().register()