|
|
@ -9,57 +9,61 @@ class FPCFootprintWizard(FootprintWizardPlugin): |
|
|
|
self.description = "FPC Footprint Wizard" |
|
|
|
self.parameters = { |
|
|
|
"Pads": |
|
|
|
{"n":40,"pitch":0.5,"width":0.25,"height":1.6}, |
|
|
|
{"n":40,"pitch":FromMM(0.5), |
|
|
|
"width":FromMM(0.25),"height":FromMM(1.6)}, |
|
|
|
"Shield": |
|
|
|
{"shield_to_pad":1.6,"from_top":1.3,"width":1.5,"height":2} |
|
|
|
{"shield_to_pad":FromMM(1.6),"from_top":FromMM(1.3), |
|
|
|
"width":FromMM(1.5),"height":FromMM(2)}, |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
def smdRectPad(self,module,size,pos,name): |
|
|
|
pad = D_PAD(module) |
|
|
|
# print "smdRectPad( size=",size,"pos=",pos,"name=",name,")" |
|
|
|
# print "smdRectPad( size=",size,"pos=",pos,"name=",name,")" |
|
|
|
pad.SetSize(size) |
|
|
|
pad.SetShape(PAD_RECT) |
|
|
|
pad.SetAttribute(PAD_SMD) |
|
|
|
pad.SetLayerMask(PAD_SMD_DEFAULT_LAYERS) |
|
|
|
pad.SetPos0(pos) |
|
|
|
pad.SetPosition(pos) |
|
|
|
pad.SetPosition(pos) |
|
|
|
pad.SetPadName(name) |
|
|
|
return pad |
|
|
|
|
|
|
|
def BuildFootprint(self): |
|
|
|
|
|
|
|
pads = self.parameters["Pads"]["n"] |
|
|
|
pad_width = self.parameters["Pads"]["width"] |
|
|
|
pad_height = self.parameters["Pads"]["height"] |
|
|
|
pad_pitch = self.parameters["Pads"]["pitch"] |
|
|
|
shl_width = self.parameters["Shield"]["width"] |
|
|
|
shl_height = self.parameters["Shield"]["height"] |
|
|
|
shl_to_pad = self.parameters["Shield"]["shield_to_pad"] |
|
|
|
shl_from_top = self.parameters["Shield"]["from_top"] |
|
|
|
p = self.parameters |
|
|
|
pads = p["Pads"]["n"] |
|
|
|
pad_width = p["Pads"]["width"] |
|
|
|
pad_height = p["Pads"]["height"] |
|
|
|
pad_pitch = p["Pads"]["pitch"] |
|
|
|
shl_width = p["Shield"]["width"] |
|
|
|
shl_height = p["Shield"]["height"] |
|
|
|
shl_to_pad = p["Shield"]["shield_to_pad"] |
|
|
|
shl_from_top = p["Shield"]["from_top"] |
|
|
|
|
|
|
|
size_pad = wxSizeMM(pad_width,pad_height) |
|
|
|
size_shld = wxSizeMM(shl_width,shl_height) |
|
|
|
size_pad = wxSize(pad_width,pad_height) |
|
|
|
size_shld = wxSize(shl_width,shl_height) |
|
|
|
|
|
|
|
|
|
|
|
# create a new module, it's parent is our previously created pcb |
|
|
|
# create a new module |
|
|
|
module = MODULE(None) |
|
|
|
module.SetReference("FPC"+str(pads)) # give it a reference name |
|
|
|
module.m_Reference.SetPos0(wxPointMM(-1,-1)) |
|
|
|
module.m_Reference.SetPosition(wxPointMM(-1,-1)) |
|
|
|
module.m_Reference.SetPos0(wxPointMM(-1,-2)) |
|
|
|
module.m_Reference.SetPosition(wxPointMM(-1,-2)) |
|
|
|
|
|
|
|
# create a pad array and add it to the module |
|
|
|
|
|
|
|
for n in range (0,pads): |
|
|
|
pad = self.smdRectPad(module,size_pad,wxPointMM(pad_pitch*n,0),str(n+1)) |
|
|
|
pad = self.smdRectPad(module,size_pad,wxPoint(pad_pitch*n,0),str(n+1)) |
|
|
|
module.Add(pad) |
|
|
|
|
|
|
|
|
|
|
|
pad_s0 = self.smdRectPad(module, |
|
|
|
size_shld, |
|
|
|
wxPointMM(-shl_to_pad,shl_from_top), |
|
|
|
wxPoint(-shl_to_pad,shl_from_top), |
|
|
|
"0") |
|
|
|
pad_s1 = self.smdRectPad(module, |
|
|
|
size_shld, |
|
|
|
wxPointMM((pads-1)*pad_pitch+shl_to_pad,shl_from_top), |
|
|
|
wxPoint((pads-1)*pad_pitch+shl_to_pad,shl_from_top), |
|
|
|
"0") |
|
|
|
|
|
|
|
module.Add(pad_s0) |
|
|
@ -67,7 +71,9 @@ class FPCFootprintWizard(FootprintWizardPlugin): |
|
|
|
|
|
|
|
e = EDGE_MODULE(module) |
|
|
|
e.SetStart0(wxPointMM(-1,0)) |
|
|
|
e.SetStart(wxPointMM(-1,0)) |
|
|
|
e.SetEnd0(wxPointMM(0,0)) |
|
|
|
e.SetEnd(wxPointMM(0,0)) |
|
|
|
e.SetWidth(FromMM(0.2)) |
|
|
|
e.SetLayer(EDGE_LAYER) |
|
|
|
e.SetShape(S_SEGMENT) |
|
|
@ -77,7 +83,7 @@ class FPCFootprintWizard(FootprintWizardPlugin): |
|
|
|
module.SetLibRef("FPC"+str(pads)) |
|
|
|
|
|
|
|
self.module = module |
|
|
|
# print "Module built and set:", module |
|
|
|
# print "Module built and set:", module |
|
|
|
|
|
|
|
# create our footprint wizard |
|
|
|
fpc_wizard = FPCFootprintWizard() |
|
|
|