設計原理圖時,常常會遇到這樣的問題。就是很多元器件的位號不是按順序編號的,中間空了很多號沒有用,有時候編號跨度很大。
比如上面的一個原理圖,從中我們可以看到電阻的位號從R385一下子跨到了R4000,電阻只有300多個,但編號卻編到了4000多。雖然位號對設計結果沒有任何影響,但是查看原理圖或者整理BOM時,會覺很亂,還有出貼片圖時,編號數過大,元器件的外框放不下,有些數字會被絲印框擋住,看不清楚,或者被誤讀,給生產帶來不便和風險。在PADS軟件里嘗試一個一個改過來,但是不好改,因為如果原理圖頁碼多,元器件成百上千時,那真是無從下手了。所以,以前遇到這種事,都是保持現狀。不過后來我學會了利用腳本的方法,編寫好一個腳本,運行一下,一眨眼的功夫就把元器件的編號重新編排好了,而且是按順序,中間沒有斷層。
下面詳細講解這個方法。
第一步,可以先寫一個腳本查看一下原理圖里哪些號是用上的,哪些號是沒有用上的。打開腳本編輯器編寫以下腳本并運行腳本,就可以彈出文檔顯示哪些號有用上,哪些號沒有用上。
第二步,再打開腳本編輯器,編寫以下代碼。
參考代碼:
Sub Main
Dim Rcount As Integer
Dim Ccount As Integer
Dim Lcount As Integer
Dim Dcount As Integer
Dim Qcount As Integer
Dim Jcount As Integer
Dim Ucount As Integer
Dim part_name As String
Dim sheets_count As Integer
sheets_count= ActiveDocument.Sheets.Count
'MsgBox sheets_count
'Set objs = ActiveDocument.GetObjects(,,True)
For Sheet_num = 1 To sheets_count
ActiveDocument.Sheets(Sheet_num).Activate
Set comps = ActiveDocument.ActiveSheet.Components
For i = 1 To comps.Count Step 1
part_name = comps.Item(i).Name
new_ref_num = Trim(Str(Val(Mid(part_name,2,4))+9000))
new_name = Mid(part_name,1,1) & new_ref_num
pre = UCase(Mid(part_name,1,1))
If pre = "R" Or pre = "C" Or pre = "L" Or pre = "D" Or pre = "Q" Or pre = "J" Or pre = "U" Then
If Val(Mid(part_name,2,5)) < 9000 Then
Let comps.Item(i).Name = new_name
End If
End If
Next i
Next Sheet_num
For Sheet_num = 1 To sheets_count
ActiveDocument.Sheets(Sheet_num).Activate
Set comps = ActiveDocument.ActiveSheet.Components
For i = 1 To comps.Count Step 1
part_name = comps.Item(i).Name
Select Case UCase((Mid(part_name,1,1)))
Case "R"
Rcount = Rcount +1
new_name = Mid(part_name,1,1) & Rcount
Let comps.Item(i).Name = new_name
Case "C"
Ccount = Ccount + 1
new_name = Mid(part_name,1,1) & Ccount
Let comps.Item(i).Name = new_name
Case "L"
Lcount = Lcount + 1
new_name = Mid(part_name,1,1) & Lcount
Let comps.Item(i).Name = new_name
Case "D"
Dcount = Dcount + 1
new_name = Mid(part_name,1,1) & Dcount
Let comps.Item(i).Name = new_name
Case "Q"
Qcount = Qcount + 1
new_name = Mid(part_name,1,1) & Qcount
Let comps.Item(i).Name = new_name
Case "J"
jcount = jcount + 1
new_name = Mid(part_name,1,1) & jcount
Let comps.Item(i).Name = new_name
Case "U"
Ucount = Ucount + 1
new_name = Mid(part_name,1,1) & Ucount
Let comps.Item(i).Name = new_name
End Select
Next i
Next Sheet_num
End Sub
第三步,運行代碼,就可以看到頁面在不斷地閃動,元器件的編號在不斷地變化,幾秒鐘的時間就完成了元器件編號的重新編碼。如下圖所示,剛才電阻編號為4000多的沒有了,取而代之是300多了。
第四步,運用剛才檢測元器件編號使用情況的腳本,驗證一下編號有沒有重新按順序編排,結果如下。
從上圖可以看出,元器件編號已經按順序重新編排了。
感興趣的朋友,可以按照上面的方法編寫代碼測試,也可以到群里下載現成的腳本測試。
編輯:hfy
-
元器件
+關注
關注
112文章
4692瀏覽量
92008 -
PCB設計
+關注
關注
394文章
4670瀏覽量
85287
發布評論請先 登錄
相關推薦
評論