設計原理圖時,常常會遇到這樣的問題。就是很多元器件的位號不是按順序編號的,中間空了很多號沒有用,有時候編號跨度很大。
比如上面的一個原理圖,從中我們可以看到電阻的位號從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
-
元器件
+關注
關注
113文章
4807瀏覽量
94325 -
PCB設計
+關注
關注
396文章
4780瀏覽量
89190
發布評論請先 登錄
POWERLOGIC 自動重新編號的的解決方法
AD6中PCB板中怎么對選種的元件重新編號
Altium Designer summer 9在PCB環境下元器件重新編號
層次原理圖器件編號重新標注的問題
請問怎么在PCB布線完成后在PCB界面對元器件批量編號?
AD 如何快捷擺放器件編號位置
Altium 在PCB重新編號更新到SCH原理圖的方法
新手求助 AltiumDesigner10 的PCB設計如何將元件按編號順序排列
元器件知識:行業精英策論PCB設計關鍵技術
PCB設計:元器件位號按順序編號資料下載

PCB設計:如何快速將元器件編號擺放好?資料下載

評論