improved position file plugin

This commit is contained in:
easyw
2019-11-04 12:45:36 +01:00
parent f7a1ac44f8
commit bca31caa15
2 changed files with 46 additions and 24 deletions

View File

@ -2,13 +2,13 @@
# #
# A script to generate POS file for kicad_pcb # A script to generate POS file for kicad_pcb
# requirements: KiCAD pcbnew >= 4.0 # requirements: KiCAD pcbnew >= 4.0
# release "1.0.9" # release "1.1.1"
# copyright Maurice easyw # copyright Maurice easyw
# #
# main script from https://forum.kicad.info/t/pcba-wants-all-parts-in-the-pos-file-not-just-smd/10045/6 # main script from https://forum.kicad.info/t/pcba-wants-all-parts-in-the-pos-file-not-just-smd/10045/6
# #
___version___="1.2.0" ___version___="1.2.1"
#wx.LogMessage("My message") #wx.LogMessage("My message")
#mm_ius = 1000000.0 #mm_ius = 1000000.0
@ -40,7 +40,7 @@ def generate_POS():
#lsep=os.linesep #lsep=os.linesep
lsep='\n' lsep='\n'
LogMsg1=lsep+"reading from:" + lsep + dirpath + lsep + lsep #LogMsg1=lsep+"reading from:" + lsep + dirpath + lsep + lsep
out_filename_top_SMD=path+os.sep+name+"_POS_top_SMD.txt" out_filename_top_SMD=path+os.sep+name+"_POS_top_SMD.txt"
out_filename_bot_SMD=path+os.sep+name+"_POS_bot_SMD.txt" out_filename_bot_SMD=path+os.sep+name+"_POS_bot_SMD.txt"
out_filename_top_THD=path+os.sep+name+"_POS_top_THD.txt" out_filename_top_THD=path+os.sep+name+"_POS_top_THD.txt"
@ -49,13 +49,13 @@ def generate_POS():
out_filename_bot_VIRTUAL=path+os.sep+name+"_POS_bot_Virtual.txt" out_filename_bot_VIRTUAL=path+os.sep+name+"_POS_bot_Virtual.txt"
out_filename_ALL=path+os.sep+name+"_POS_All.txt" out_filename_ALL=path+os.sep+name+"_POS_All.txt"
#out_filename=path+os.sep+name+"_POS.txt" #out_filename=path+os.sep+name+"_POS.txt"
LogMsg1+="written to:" + lsep + out_filename_top_SMD + lsep #LogMsg1+="written to:" + lsep + out_filename_top_SMD + lsep
LogMsg1+= out_filename_bot_SMD + lsep #LogMsg1+="written to:" + lsep + out_filename_bot_SMD + lsep
LogMsg1+= out_filename_top_THD + lsep #LogMsg1+="written to:" + lsep + out_filename_top_THD + lsep
LogMsg1+= out_filename_bot_THD + lsep #LogMsg1+="written to:" + lsep + out_filename_bot_THD + lsep
LogMsg1+= out_filename_top_VIRTUAL + lsep #LogMsg1+="written to:" + lsep + out_filename_top_VIRTUAL + lsep
LogMsg1+= out_filename_bot_VIRTUAL + lsep #LogMsg1+="written to:" + lsep + out_filename_bot_VIRTUAL + lsep
LogMsg1+= out_filename_ALL + lsep #LogMsg1+="written to:" + lsep + out_filename_ALL + lsep
# print (LogMsg) # print (LogMsg)
# #
# print ("### Module positions - created on %s ###" % datetime.datetime.now().strftime("%Y-%m-%d %H:%M")) # print ("### Module positions - created on %s ###" % datetime.datetime.now().strftime("%Y-%m-%d %H:%M"))
@ -65,7 +65,7 @@ def generate_POS():
# print ("# Ref Val Package PosX PosY Rot Side Type") # print ("# Ref Val Package PosX PosY Rot Side Type")
Header_1="### Module positions - created on " + datetime.datetime.now().strftime("%Y-%m-%d %H:%M")+lsep Header_1="### Module positions - created on " + datetime.datetime.now().strftime("%Y-%m-%d %H:%M")+lsep
Header_1+="### Printed by get_pos v1"+lsep Header_1+="### Printed by pcb_positions plugin"+lsep
Header_1+="## Unit = mm, Angle = deg."+lsep Header_1+="## Unit = mm, Angle = deg."+lsep
#LogMsg+="## Side : All"+lsep #LogMsg+="## Side : All"+lsep
Header_2="## Board Aux Origin: " + str(my_board.GetAuxOrigin())+lsep Header_2="## Board Aux Origin: " + str(my_board.GetAuxOrigin())+lsep
@ -98,6 +98,13 @@ def generate_POS():
#'{0:<10} {1:<10} {2:<10}'.format(1.0, 2.2, 4.4)) #'{0:<10} {1:<10} {2:<10}'.format(1.0, 2.2, 4.4))
tracks = my_board.GetTracks()
vias = []
for via in tracks:
if type(via) is pcbnew.VIA:
vias.append(via)
vias_cnt = len(vias)
for module in my_board.GetModules(): for module in my_board.GetModules():
#print ("%s \"%s\" %s %1.3f %1.3f %1.3f %s" % ( module.GetReference(), #print ("%s \"%s\" %s %1.3f %1.3f %1.3f %s" % ( module.GetReference(),
#Nchars = 20 #Nchars = 20
@ -229,16 +236,31 @@ def generate_POS():
#f = open(out_filename,'w') #f = open(out_filename,'w')
#f.write(LogMsg) #f.write(LogMsg)
#f.close() #f.close()
LogMsg1+= lsep + str(SMD_pads) + ' SMD pads' +lsep LogMsg1="reading from:" + lsep + dirpath + lsep
LogMsg1+= str(TH_pads) + ' TH pads' +lsep LogMsg1+= lsep + 'Pads:' + lsep
LogMsg1+= str(Virt_pads) + ' Virtual pads' +lsep LogMsg1+= 'SMD pads ' + str(SMD_pads) + lsep
LogMsg1+= str( TH_top_cnt) + ' Top TH modules' + lsep LogMsg1+= 'TH pads ' + str(TH_pads) +lsep
LogMsg1+= str( TH_bot_cnt) + ' Bot TH modules' + lsep LogMsg1+= 'Virtual pads ' + str(Virt_pads) + lsep
LogMsg1+= str( SMD_top_cnt) + ' Top SMD modules' + lsep LogMsg1+= 'Vias ' + str( vias_cnt) + lsep
LogMsg1+= str( SMD_bot_cnt) + ' Bot SMD modules' + lsep LogMsg1+= lsep + 'Modules:' + lsep
LogMsg1+= str( Virt_top_cnt) + ' Top Virtual modules' + lsep LogMsg1+= 'Top TH modules ' + str( TH_top_cnt) + lsep
LogMsg1+= str( Virt_bot_cnt) + ' Bot Virtual modules' + lsep LogMsg1+= 'Bot TH modules ' + str( TH_bot_cnt) + lsep
LogMsg1+= '{0:.3f}'.format( pcb_height ) + 'mm Pcb Height, ' + '{0:.3f}'.format( pcb_width ) + 'mm Pcb Width [based on Edge bounding box]' +lsep LogMsg1+= 'Top SMD modules ' + str( SMD_top_cnt) + lsep
LogMsg1+= 'Bot SMD modules ' + str( SMD_bot_cnt) + lsep
LogMsg1+= 'Top Virtual modules ' + str( Virt_top_cnt) + lsep
LogMsg1+= 'Bot Virtual modules ' + str( Virt_bot_cnt) + lsep
LogMsg1+= lsep + 'PCB Geometry:' + lsep
LogMsg1+= 'Pcb Height ' +'{0:.3f}'.format( pcb_height ) + 'mm, Pcb Width ' + '{0:.3f}'.format( pcb_width ) + 'mm' +lsep+'[based on Edge bounding box]' +lsep
LogMsg1+= lsep
#LogMsg1+=lsep+"reading from:" + lsep + dirpath + lsep + lsep
LogMsg1+="written to:" + lsep + out_filename_top_SMD + lsep
LogMsg1+=out_filename_bot_SMD + lsep
LogMsg1+=out_filename_top_THD + lsep
LogMsg1+=out_filename_bot_THD + lsep
LogMsg1+=out_filename_top_VIRTUAL + lsep
LogMsg1+=out_filename_bot_VIRTUAL + lsep
LogMsg1+=out_filename_ALL + lsep
return LogMsg1 return LogMsg1
#return LogMsg1+LogMsg #return LogMsg1+LogMsg
@ -264,11 +286,11 @@ class generatePOS( pcbnew.ActionPlugin ):
""" """
self.name = "Generate Fabrication POS output\nversion "+___version___ self.name = "Generate Fabrication POS output\nversion "+___version___
self.category = "Fabrication Output" self.category = "Fabrication Output"
self.description = "Generate POS output for SMD, THD, Virtual" self.description = "Generate POS output for SMD, THD, Virtual\nand Board Statistics"
#self.SetIcon(PyEmbeddedImage(getPos_ico_b64_data).GetIcon()) #self.SetIcon(PyEmbeddedImage(getPos_ico_b64_data).GetIcon())
self.icon_file_name = os.path.join(os.path.dirname(__file__), "./fabricationPositions.png") self.icon_file_name = os.path.join(os.path.dirname(__file__), "./fabricationPositions.png")
self.show_toolbar_button = True self.show_toolbar_button = True
def Run( self ): def Run( self ):
#wx.MessageDialog(self.frame,"ciao") #wx.MessageDialog(self.frame,"ciao")
@ -375,7 +397,7 @@ class generatePOS( pcbnew.ActionPlugin ):
# style=wx.wxSTAY_ON_TOP) # style=wx.wxSTAY_ON_TOP)
#frame.show() #frame.show()
generatePOS().register() #generatePOS().register()
# "b64_data" is a variable containing your base64 encoded jpeg # "b64_data" is a variable containing your base64 encoded jpeg
getPos_ico_b64_data =\ getPos_ico_b64_data =\

Binary file not shown.

Before

Width:  |  Height:  |  Size: 831 B