在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何實(shí)現(xiàn)PADS導(dǎo)出區(qū)分頂層和底層元器件的BOM

jf_iZR6mdqV ? 來源:PCB和原理圖設(shè)計(jì)與共享 ? 2023-09-23 09:24 ? 次閱讀

導(dǎo)出BOM是硬件工程師在設(shè)計(jì)PCB時(shí)必備的一項(xiàng)任務(wù)。通常情況下,導(dǎo)出的BOM中并沒有區(qū)分頂層和底層的元器件,但是有時(shí)候我們需要對(duì)這兩者進(jìn)行分開,以便更好地進(jìn)行統(tǒng)計(jì)和管理。

f81f0276-59a8-11ee-939d-92fbcf53809c.jpg

f82979cc-59a8-11ee-939d-92fbcf53809c.jpg

本文將介紹如何通過編寫PADS的BOM的導(dǎo)出腳本代碼實(shí)現(xiàn)這個(gè)功能。

首先,我們需要了解腳本中的原理。在PADS導(dǎo)出BOM的腳本中,一般會(huì)讀取元器件的相關(guān)信息,如元器件編號(hào)、名稱、數(shù)量等。我們需要在腳本中增加元器件層信息的讀取,以及在整理元器件時(shí)對(duì)層信息進(jìn)行判斷,從而實(shí)現(xiàn)元器件分頂層和底層的歸類統(tǒng)計(jì)。

編寫以下代碼:

f82ecf9e-59a8-11ee-939d-92fbcf53809c.jpg

f83456da-59a8-11ee-939d-92fbcf53809c.jpg

代參考代碼:

Const Columns = Array("Item","Description","Value","PCB Decal","Ref","OPTION","Quantity","layer")

'Array of column alignment: 0 - Align Left, 1 - Align Right, 2 - Align Center.

Const Align= Array(0,0,0,0,0,0,0)

Dim fname As String

Sub Main

fname = ActiveDocument

If fname = "" Then

fname = "Untitled"

End If

tempFile = DefaultFilePath & " emp.txt"

Open tempFile For Output As #1

StatusBarText = "Generating report..."

'Output table header

For i = 0 To UBound(Columns)

OutCell Columns(i)

Next

Print #1

Dim part_Count As Integer

part_Count = 0

For Each part In ActiveDocument.Components

If part.Pins.Count > 1 Then

part_Count = part_Count + 1

End If

Next part

ReDim Parts(part_Count, 14) As String

For Each part In ActiveDocument.Components

If part.Pins.Count > 1 Then

For intJ = 1 To 8

Parts(intI,1) = ""

Parts(intI,2) = AttrVal(part, "Description")

Parts(intI,3) = AttrVal(part, "Value")

Parts(intI,4) = part.Decal

Parts(intI,5) = part.Name

Parts(intI,6) = AttrVal(part, "Option")

Parts(intI,7) = ""

Parts(intI,8) =ActiveDocument.LayerName(part.layer)

Next intJ

intI= intI + 1

End If

Next part

Dim comp_counter As Integer

Dim Species As Integer

Const flag As Integer = 10

Dim Component As String

Dim Component_tempAs String

Dim label As String

comp_counter = 0

Species = 0

For i = 1 To UBound(Parts, 1)

If Parts(i, flag) = "" Then

Component = Parts(i, 2) &Parts(i, 6)

label = Parts(i, 5)

comp_counter = 1

For j = i + 1 To UBound(Parts, 1)

Component_temp =Parts(j, 2) &Parts(j, 6)

If Component = Component_temp Then

comp_counter = comp_counter + 1

label = label & ", " &Parts(j, 5)

Parts(j, flag) = "0"

End If

Next j

Parts(i, 5) = label

Parts(i, 7) = Str(comp_counter)

Species = Species + 1

End If

Next i

Dim NO_ As Integer

ReDim SpeciesArray1(Species, 8)

ReDim SpeciesArray2(Species, 8)

NO_ = 1

For i = 1 To UBound(Parts, 1)

If Parts(i, flag) = "" And Parts(i, 8)="TOP" Then

SpeciesArray1(NO_, 1) = Parts(i, 1)

SpeciesArray1(NO_, 2) = Parts(i,2)

SpeciesArray1(NO_, 3) = Parts(i,3)

SpeciesArray1(NO_, 4) = Parts(i,4)

SpeciesArray1(NO_, 5) = Parts(i,5)

SpeciesArray1(NO_, 6) = Parts(i,6)

SpeciesArray1(NO_, 7) = Parts(i,7)

SpeciesArray1(NO_, 8) = Parts(i,8) NO_ = NO_ + 1

ElseIf Parts(i, flag) = "" And Parts(i, 8)="BOT" Then

SpeciesArray2(NO_, 1) = Parts(i, 1)

SpeciesArray2(NO_, 2) = Parts(i, 2)

SpeciesArray2(NO_, 3) = Parts(i,3)

SpeciesArray2(NO_, 4) = Parts(i,4)

SpeciesArray2(NO_, 5) = Parts(i, 5)

SpeciesArray2(NO_, 6) = Parts(i, 6)

SpeciesArray2(NO_, 7) = Parts(i, 7)

SpeciesArray2(NO_, 8) = Parts(i, 8)

NO_ = NO_ + 1

End If

Next i

OutCell "TOP"

Print #1

For i = 1 To UBound(SpeciesArray1, 1)

If SpeciesArray1(i, 8)="TOP" Then

For j =1 To 8

OutCell SpeciesArray1(i,j)

Next j

Print #1

End If

Next i

OutCell "BOT"

Print #1

For i = 1 To UBound(SpeciesArray2, 1)

If SpeciesArray2(i, 8)="BOT" Then

For j =1 To 8

OutCell SpeciesArray2(i,j)

Next j

Print #1

End If

Next i

Close #1

ExportToExcel

End Sub

Function AttrVal (obj As Object, nm As String)

AttrVal = IIf(obj.Attributes(nm) Is Nothing, "", obj.Attributes(nm))

End Function

Sub ExportToExcel

FillClipboard

Dim xl As Object

On Error Resume Next

Set xl =GetObject(,"Excel.Application")

On Error GoTo ExcelError' Enable error trapping.

If xl Is Nothing Then

Set xl =CreateObject("Excel.Application")

End If

xl.Visible = True

xl.Workbooks.Add

xl.ActiveSheet.Paste

xl.Range("A1:H1").Font.Bold = True

xl.Range("A1:H1").NumberFormat = "@"

xl.Range("A1:H1").AutoFilter

For i = 0 To UBound(Align)

xl.Columns(i + 1).HorizontalAlignment = Choose(Align(i)+1, -4131, -4152, -4108)

Next

xl.ActiveSheet.UsedRange.Columns.AutoFit

'Output Report Header

xl.Rows(1).Insert

xl.Rows(1).Cells(1) = Space(1) & "Part Report for " & fname & " on " & Now

xl.Rows(2).Insert

xl.Rows(1).Font.bold = True

'Output Design Totals

lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 1

xl.Rows(lastRow + 1).Font.bold = True

xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count

xl.Range("A1").Select

On Error GoTo 0 ' Disable error trapping.

Exit Sub

ExcelError:

MsgBox Err.Description, vbExclamation, "Error Running Excel"

On Error GoTo 0 ' Disable error trapping.

Exit Sub

End Sub

Sub OutCell (txt As String)

Print #1, txt; vbTab;

End Sub

Sub FillClipboard

StatusBarText = "Export Data To Clipboard..."

' Load whole file to string variable

tempFile = DefaultFilePath & " emp.txt"

Open tempFileFor Input As #1

L = LOF(1)

AllData$ = Input$(L,1)

Close #1

'Copy whole data to clipboard

Clipboard AllData$

Kill tempFile

StatusBarText = ""

End Sub

通過以上代碼,我們成功實(shí)現(xiàn)了在PADS導(dǎo)出BOM時(shí)區(qū)分頂層和底層元器件的功能。使用這個(gè)區(qū)分頂層和底層的BOM,工程師可以更好地進(jìn)行設(shè)計(jì)分析、成本估算以及供應(yīng)鏈管理,提高工作效率和準(zhǔn)確性。

f83c0650-59a8-11ee-939d-92fbcf53809c.jpg

f845802c-59a8-11ee-939d-92fbcf53809c.jpg

總結(jié)起來,本文介紹了如何通過修改PADS導(dǎo)出BOM的腳本,實(shí)現(xiàn)區(qū)分頂層和底層元器件的功能。通過這樣的改進(jìn),我們可以更好地對(duì)電路板中的元器件進(jìn)行分類和統(tǒng)計(jì),提高設(shè)計(jì)過程的可視性和管理效果。希望這篇文章對(duì)您在設(shè)計(jì)PCB時(shí)的工作有所幫助。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 元器件
    +關(guān)注

    關(guān)注

    113

    文章

    4747

    瀏覽量

    92820
  • PADS
    +關(guān)注

    關(guān)注

    80

    文章

    808

    瀏覽量

    107951
  • BOM
    BOM
    +關(guān)注

    關(guān)注

    5

    文章

    258

    瀏覽量

    40376

原文標(biāo)題:如何實(shí)現(xiàn)PADS導(dǎo)出區(qū)分頂層和底層元器件的BOM

文章出處:【微信號(hào):電子設(shè)計(jì)聯(lián)盟,微信公眾號(hào):電子設(shè)計(jì)聯(lián)盟】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    pads layout導(dǎo)出BOM出錯(cuò)

    請(qǐng)教各位大俠,在pads layout 環(huán)境中使用腳本文件導(dǎo)出BOM,提示excel內(nèi)存不足怎么解決?
    發(fā)表于 04-24 11:46

    PADS LAYOUT中用模板腳本導(dǎo)出漂亮的BOM表!

    PADS LAYOUT中用模板腳本導(dǎo)出漂亮的BOM表!
    發(fā)表于 06-22 22:55

    PROTEL和***器件頂層底層的問題!!

    請(qǐng)問各位大神,如圖這兩顆器件明明在底層,但是雙擊顯示的確是頂層。當(dāng)我把他改成底層后,又顯示在頂層了。請(qǐng)問怎么回事?怎么改?
    發(fā)表于 08-31 20:11

    PADS vx.2導(dǎo)出BOM

    PADS vx.2導(dǎo)出BOM,請(qǐng)各位大師指教
    發(fā)表于 03-10 11:52

    請(qǐng)問怎么高亮顯示頂層底層器件?

    在AD布線的時(shí)候,怎么讓頂層或者底層元器件高亮顯示?
    發(fā)表于 06-10 03:53

    電路板設(shè)計(jì)中底層器件快速切換到頂層方式

    電路板設(shè)計(jì)中底層器件如何快速切換到頂層元器件實(shí)現(xiàn)快速的頂?shù)浊袚Q,能更加方便高效讓我們?nèi)ミM(jìn)行布局。單個(gè)
    發(fā)表于 07-10 08:26

    AD中怎么刪除頂層或者底層

    AD中怎么刪除頂層或者底層,只保留底層或者頂層的絲印。導(dǎo)出PDF便于焊接元器件
    發(fā)表于 09-30 16:20

    華秋DFM可視化BOM交互焊接工具——SMT工廠、PCB工程師的福音來了!

    透明背景,當(dāng)導(dǎo)出圖片模糊看不清可設(shè)置圖片大小。04元件清單統(tǒng)計(jì)元器件清單統(tǒng)計(jì),分別統(tǒng)計(jì)頂層元件、底層元件以及元件的種類。焊盤數(shù)分別統(tǒng)計(jì)貼片焊盤與插件焊盤,當(dāng)已焊接的元件和空貼、不焊的元
    發(fā)表于 12-23 10:59

    華秋DFM推出可視化BOM交互焊接工具,助力SMT工廠提升效率

    透明背景,當(dāng)導(dǎo)出圖片模糊看不清可設(shè)置圖片大小。04元件清單統(tǒng)計(jì)元器件清單統(tǒng)計(jì),分別統(tǒng)計(jì)頂層元件、底層元件以及元件的種類。焊盤數(shù)分別統(tǒng)計(jì)貼片焊盤與插件焊盤,當(dāng)已焊接的元件和空貼、不焊的元
    發(fā)表于 12-23 11:16

    如何從PADS-LAYOUT中導(dǎo)出BOM清單方法

    如何從PADS-LAYOUT中導(dǎo)出BOM清單方法最近很多朋友問我關(guān)于如何如何從PADS-LAYOUT中出BOM清單。今把方法寫下來好讓有需要
    發(fā)表于 09-19 08:18 ?0次下載

    常用元器件封裝匯總

    直插式元器件封裝的焊盤一般貫穿整個(gè)電路板,從頂層穿下,在底層進(jìn)行元器件的引腳焊接。
    的頭像 發(fā)表于 04-24 11:34 ?3.8w次閱讀
    常用<b class='flag-5'>元器件</b>封裝匯總

    pcb頂層底層互換

    本文主要詳細(xì)介紹了pcb頂層底層互換,把PCB切換到頂層,然后Edit/select/allonlayer選擇頂層
    發(fā)表于 04-26 15:47 ?1.6w次閱讀
    pcb<b class='flag-5'>頂層</b>和<b class='flag-5'>底層</b>互換

    PADS導(dǎo)出坐標(biāo)和BOM腳本文件資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是PADS導(dǎo)出坐標(biāo)和BOM腳本文件資料免費(fèi)下載。
    發(fā)表于 08-23 08:00 ?0次下載
    <b class='flag-5'>PADS</b><b class='flag-5'>導(dǎo)出</b>坐標(biāo)和<b class='flag-5'>BOM</b>腳本文件資料免費(fèi)下載

    電子元器件芯片的型號(hào)如何區(qū)分

    一般來說完整的芯片器件型號(hào)都是由三部分組成的,分別是主體型號(hào)、前綴、后綴。那么電子元器件芯片的型號(hào)如何區(qū)分呢? 1、區(qū)分有鉛和無鉛。 2、可區(qū)分
    的頭像 發(fā)表于 01-02 15:39 ?1.3w次閱讀

    PCB元器件封裝知識(shí)

    通常來說,元器件封裝主要分為DIP雙列直播和SMD貼片封裝兩種,前者封裝的焊盤一般貫穿整個(gè)電路板,從頂層穿下,在底層進(jìn)行元器件的引腳焊接;后者是指其焊盤只附著在電路板的
    的頭像 發(fā)表于 02-01 10:34 ?4350次閱讀
    主站蜘蛛池模板: 天天操夜夜操美女 | 亚洲卡5卡6卡7国色天香 | 午夜一级黄色片 | 日韩精品网址 | 日本色片视频 | 免费观看在线永久免费xx视频 | 久操精品在线观看 | 操女人视频网站 | 天天插夜夜 | 成人99国产精品一级毛片 | 欧美黑人黄色片 | 婷五月综合 | 免费观看色 | 国产情侣露脸 | 黄欧美| 欧美激情αv一区二区三区 欧美激情第一欧美在线 | 国模精品视频一区二区三区 | 黄色在线免费看 | 日日操天天操夜夜操 | 色成人综合网 | 在线理论视频 | 亚洲国产成人久久精品影视 | 狠狠干.com| 四虎8848精品永久在线观看 | 亚洲网站免费观看 | 国产色婷婷亚洲 | 免费看逼网站 | 狠狠gao| 成人网久久 | 久久精品国产6699国产精 | 韩国男女无遮挡高清性视频 | 欧美成人免费大片888 | 伊人狼人综合 | 日本亚洲高清乱码中文在线观看 | 日本毛片在线观看 | 国产精品免费拍拍1000部 | 色综合天天综一个色天天综合网 | 国产特黄 | 婷婷四房播客五月天 | 国产一区国产二区国产三区 | 永久免费观看午夜视频在线 |