针对PADS Layout把非中心对称封装的元件坐标导出所修改的Basic Script

有时候,做元件封装的时候,做得不是按中心设置为原点(不提倡这种做法),所以制成之后导出来的坐标图和直接提供给贴片厂的要求相差比较大。比如,以元件的某一个pin 脚作为元件的原点,明显就有问题,直接修改封装的话,PCB又的重新调整。所以想到一个方法:把每个元件所有的管脚的X坐标和Y坐标分别求平均值,就为元件的中心。
对于大部分元件应该都是完全正确的。但也有小部分可能稍微有点偏差,比如三极管、管脚间距不完全相等的继电器,当然这部分是很少很少的部分,而且也偏差不大。贴片厂贴片都会检查一下,特别是不规则的封装,也无法认定中心应该设置在哪。不要偏差太大,即可以稍微调整。
 
把以下代码另存为*.bas文件,然后在PADS Layout中导入。导入方法:tools——)Basic Script——)Basic Script——)Load file,把保存的.bas文件导入即可。然后点击run,方法和运行原来就有的我文件一样。
 
 
Sub Main
' Open temporarly text file
Randomize
filename = DefaultFilePath & "\tmp"  & CInt(Rnd()*10000) & ".xls"
Open filename For Output As #1
 
 
 
' Output Headers
Print #1, "PartType"; Space(32); 
Print #1, "RefDes"; Space(24); 
Print #1, "PartDecal"; Space(32); 
Print #1, "Pins"; Space(6); 
Print #1, "Layer"; Space(26); 
Print #1, "Orient."; Space(24); 
Print #1, "X"; Space(30); 
Print #1, "Y"; Space(29); 
Print #1, "SMD"; Space(7); 
Print #1, "Glued"; Space(0)
 
' Lock server to speed up process
LockServer
 
' Go through each component in the design and output values
For Each nextComp In ActiveDocument.Components
 
   Dim centerX  As Single
   Dim centerY  As Single
   Dim cout  As Integer
   centerX = 0.0
   centerY = 0.0
   cout = 0
   
Print #1, nextComp.PartType; Space$(40-Len(nextComp.PartType)); 
Print #1, nextComp.Name; Space$(30-Len(nextComp.Name)); 
Print #1, nextComp.Decal; Space$(40-Len(nextComp.Decal)); 
Print #1, nextComp.Pins.Count; Space$(10-Len(nextComp.Pins.Count)); 
Print #1, ActiveDocument.LayerName(nextComp.layer); Space$(30-Len(ActiveDocument.LayerName(nextComp.layer))); 
Print #1, nextComp.Orientation; Space$(30-Len(nextComp.Orientation)); 
 
For Each nextCompPin In nextComp.Pins
centerX = centerX+nextCompPin.PositionX 
centerY = centerY+nextCompPin.PositionY 
Next nextCompPin
centerPositionX = Format$(centerX/(nextComp.Pins.Count), "#.00")
centerPositionY = Format$(centerY/(nextComp.Pins.Count), "#.00")
 
Print #1, centerPositionX;      Space$(30-Len(nextComp.PositionX)); 
Print #1, centerPositionY;      Space$(30-Len(nextComp.PositionY)); 
Print #1, nextComp.IsSMD; Space$(10-Len(nextComp.IsSMD)); 
Print #1, nextComp.Glued; Space$(10-Len(nextComp.Glued))
Next nextComp
 
' Unlock the server
UnlockServer
 
' Close the text file
Close #1
 
' Start Excel and loads the text file
On Error GoTo noExcel
Dim excelApp As Object
Set excelApp = CreateObject("Excel.Application")
On Error GoTo 0
excelApp.Visible = True
excelApp.Workbooks.OpenText  FileName:= filename
excelApp.Rows("1:1").Select
With excelApp.Selection
.Font.Bold = True
.Font.Italic = True
End With
excelApp.Range("A1").Select
Set excelApp = Nothing
End
 
noExcel:
' Display the text file
Shell "Notepad " & filename, 3
 
End Sub
要从 PADS PCB LAYOUT 中导出 BOM 有几种方法,较简单的方法为:
1.从网络上下载一个名字为 "EXCEL BOM.BAS" 的文件;
2.将 "EXCEL BOM.BAS" 文件放入“安装盘:\PADS  Projects\Samples\Scripts\Layout ”路径下;
3.打开需要导出 BOM 的PCB LAYOUT 文件;
4.选择 "Tool--> Basic scripts -->Basic scripts...";
5.选择 “Excel BOM " , 点击  “RUN" , 
6.选择 "comment" or "value" (根据你对元件的赋值情况来选择);
7.选择 "yes" or "no" ( 根据是否要依板层对零件排序来定);
 
 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值