找回密码
 注册
关于网站域名变更的通知
查看: 1878|回复: 9
打印 上一主题 下一主题

PADS生成bom脚本

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-6-26 18:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
pads生成bom时,无法达到自己的预期,所以干脆自己写吧,但是,我不会

该用户从未签到

2#
 楼主| 发表于 2018-6-26 18:45 | 只看该作者
网上找了一个/ [$ y" r3 E6 ?: X8 E
Dim fn As String
7 K& V% C2 w" W; b& g+ e1 I: C5 i, j
Sub Main
; N6 |5 f4 ?/ K" H( D    fn = ActiveDocument. f' O. u5 {) i; H2 c! t
    If fn = "" Then5 ~0 Z7 y8 e' A2 M/ N8 y' H
        fn = "Untitled"
4 l( w6 X1 w; u5 c8 k5 g) _0 v    End If+ h% ^0 W$ n; M7 u
% Y. I0 ?  M/ d8 O7 S7 }
    tempFile = DefaultFilePath & "\temp.txt"# ~. l. ?( L7 U4 E6 h
    Open tempFile For Output As #1
4 J( g( W1 S+ t, [5 T/ `, l2 r    item = 0; W9 }( M8 |0 x6 c7 G
    StatusBarText = "Generating report...") o2 n" s5 i. I9 C7 P
    Print #1, "ITEM";vbTab;"Part Type"; vbTab;"P/N_1"; vbTab;"Manufacturer_1_P/N"; vbTab;"Description"; vbTab;"Manufacturer_1"; vbTab; "Value"; vbTab; "QTY"; vbTab; "REF-DES"
6 s9 e) \+ H% B2 L/ |  j9 Z8 g; i0 I    For Each pkg in ActiveDocument.PartTypes
' ?8 J9 G* x# X/ [        'Print #1, pkg.Name; vbTab; note6 b# h6 |# y: Q$ o) p2 h- l3 n
        qty = 0
  `0 P$ g% q# e' b        value = ""
/ g( j' D1 r0 e) V- n- p" D        description = ""1 a9 m3 u; V# {4 r1 p" l2 s
        manufacturer = ""
6 ~' f$ \0 I9 e" |4 H* Z$ p        pn = ""
( L; i" M0 r% E" s& F2 A        manufacturerpn = ""' W$ M6 t' P6 W* }1 P# d
        symbol = ""+ A4 n: Z2 H. j
        item = item + 17 t/ p& P7 Z* _9 J! ?
        'Print #1, item; vbTab;
& L0 \# d+ k1 Q/ G) W+ s, n        For Each part In pkg.Components
9 \% N( c& Y! D$ ^" d            value = AttrValue(part, "Value")
" J9 d% x2 a, n" h7 _" g) H+ _            description = AttrValue(part, "Description")
" h6 {* Z- g1 G6 P            manufacturer = AttrValue(part, "Manufacturer_1"): G' _- {6 G# n; U
            pn = AttrValue(part, "P/N_1")
% l1 Q- I1 s# u% p4 E            value = AttrValue(part, "Value")    1 Y7 W% d1 g; c/ N+ t  d# k
            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")8 R# t2 |' e1 l: S7 Q7 n4 c+ y- M
            sysid = AttrValue(part, "SYSID")
3 L) ~) g' M1 [& y            qty = qty+1; X& ^5 ?& Z: Q- O/ G+ P
            symbol = symbol + part.Name + ", "
! L. a; O* C/ @' c/ m6 U        Next        
" F( J2 X  c+ m. ]        symbol_len = Len(symbol)- V: r8 J% b# t9 R/ q. k6 t6 o
        symbol = Mid(symbol,1, symbol_len - 2)4 a+ q3 S2 i# h8 X
        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;, V; I+ o# W0 z6 V% j% l6 I
        Print #1" p3 V5 U& D5 J  Z# P0 I$ ]
    Next pkg. K0 I; \5 f  l
    StatusBarText = ""
3 x$ s* a$ s* O  ~* h  @9 w; V    Close #1% o! n5 k/ M/ U4 [- U3 Y3 t
    ExportToExcel
( a" g8 \% Q7 EEnd Sub6 i6 C  f- C1 a2 _2 A

, ?9 z& _, Z0 x) ?1 O* pSub ExportToExcel
( K9 \) t0 h0 L8 d" @: \    FillClipboard
  |& d+ g. x. m+ y2 x+ x6 |    Dim xl As Object
' I8 e& P  z( X9 ^/ F$ t# {! d    On Error Resume Next1 Z, o! C7 r$ [( C* {& N/ _
    Set xl =  GetObject(,"Excel.Application")/ P( A3 e& i. @. U
    On Error GoTo ExcelError    ' Enable error trapping.! K8 T, B: U5 S4 o
    If xl Is Nothing Then0 p8 T4 Y7 w( N3 v
        Set xl =  CreateObject("Excel.Application")
9 o! d  A4 o- ~' W    End If
- W3 l7 s2 I& l  w* K  x' l    xl.Visible = True  y7 L. c  s2 `1 v& N0 Z! q
    xl.Workbooks.Add
. D( J; h$ S. j    xl.ActiveSheet.Paste
. L- a- u9 n9 r( G8 h    xl.Range("A1:I1").Font.Bold = True
. G! M/ i' `0 M. P    xl.Range("A1:I1").NumberFormat = "@"- U+ x5 Y/ _4 k! ]) k
    xl.Range("A1:I1").AutoFilter) b+ \, P2 M9 [, q5 ?
    xl.ActiveSheet.UsedRange.Columns.AutoFit6 g3 p2 @4 Z! C' t$ k6 C1 K
    'Output Report Header: q: `4 n" n% R4 Q7 c6 F+ O8 }4 G
    xl.Rows(1).Insert  p) h/ A5 E6 y9 H
    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now+ j" S$ E' X9 d  z/ m" l6 K
    xl.Rows(2).Insert
7 [0 r( g8 \) ?% o$ c+ f, o    xl.Rows(1).Font.bold = True
/ J( L/ v7 E; g* d% _5 S5 s    'Output Design Totals! s3 ^$ {8 ~. d  f
    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 1: E$ }) W- U* _. J
    xl.Rows(lastRow + 1).Font.bold = True8 y" y& f/ ~2 h4 z2 H7 E6 @" x& j
    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count; d, v8 v6 P+ ^+ e
    xl.Range("A1").Select
9 a5 \8 ]) r) P( J    On Error GoTo 0 ' Disable error trapping.
3 F# q$ y) _0 X; }( G- ^4 W    Exit Sub    5 ^$ n; ?6 Z: F

0 ~& I4 g$ ]  n7 ]# X% g5 I! |& `ExcelError:' w' b6 F  }6 L7 v- n- L
    MsgBox Err.Description, vbExclamation, "Error Running Excel"4 g  N: \5 K1 ?1 u
    On Error GoTo 0 ' Disable error trapping.    & L# U  ]7 Z/ g# M; M: x0 Q5 _
    Exit Sub, p' |4 Q3 Z- Z8 _6 B6 o
End Sub
6 j; h$ k) e- j1 g! d2 Z5 Q2 F5 q$ x4 ^, q) h( V# Y) h, T. y+ Q0 F
Sub FillClipboard
! S: O9 ~0 u0 w( E& \4 D. c. z    StatusBarText = "Export Data To Clipboard...". o2 I0 x/ P2 D3 m. }9 O, R! ]
    ' Load whole file to string variable    8 I# t( D" ~1 E9 F+ s% H  n* p% z& O
    tempFile = DefaultFilePath & "\temp.txt"
) J3 o9 n7 a( `' W5 ^; {    Open tempFile  For Input As #1+ F% S; b) _3 \* S2 ?% I$ c
    L = LOF(1)
& o# i; t) i: k* d! ]    AllData$ = Input$(L,1)
" Q3 j) \4 \; x. C    Close #1
; R7 \, V) x) b, d' g5 Y  _    'Copy whole data to clipboard
. r( V  }8 l! H1 o0 @0 x    Clipboard AllData$
* h* z2 r3 M  F/ F, e" k    Kill tempFile* k" r# V5 r. r! S% E' Y$ X7 C7 n
    StatusBarText = ""
& y! Z( G+ ]2 W& T( mEnd Sub
3 H, K3 r7 ^; l8 F) LFunction AttrValue (comp As Object, atrName As String) As String
& f& i; e# o6 D. n0 [, F0 }    If comp.Attributes(atrName) Is Nothing Then
( t) r& h& V; ^( H) m: q        AttrValue = ""
' p7 b3 p4 l$ o/ s' A    Else
# I5 i$ |8 r5 T- W0 v* ~) p# \        AttrValue = comp.Attributes(atrName).Value
5 i& p$ r9 B8 ^$ V% ?    End If6 A3 B. H# r" _& u) _
End Function

该用户从未签到

3#
 楼主| 发表于 2018-6-26 18:46 | 只看该作者
一点点来吧,共勉

该用户从未签到

4#
 楼主| 发表于 2018-6-26 18:48 | 只看该作者
        symbol_len = Len(symbol)
! e" v; K. l7 z' N3 U# x5 Q  a  x        symbol = Mid(symbol,1, symbol_len - 2)
+ }0 @7 n3 t8 `5 ?
" p- |1 y, ^; D1 G; [7 _/ U这两句是个啥意思?

该用户从未签到

5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑 1 v2 H4 {1 I! G6 D. v' Q

/ X- P6 S  _! |  {6 R/ K6 f难道是数组:---9 |! ~+ w# F" Q/ O% j, C
多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组:
4 \% |9 h- M" y' _1 i3 [' u
# x2 C( p# W7 ^1 JDim A(10)$ K9 @4 z1 I6 x; f/ U0 k9 H; i
虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。
4 ~& U5 g6 T: ], N- R5 b$ i5 W- V5 ]
在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示:
7 W, T- G( M: ]0 E+ \$ v( F) l$ @" P) y" w
A(0) = 2565 y3 v8 O/ H3 Z6 p9 b8 q8 _
A(1) = 324
5 w4 f6 T; _! n( i) w6 Y A(2) = 100
8 L; ]  ^% r1 F . . .
" ^8 @/ h$ C0 k0 P9 C3 T A(10) = 55
( B# I% B( X9 Y3 N1 Y8 N与此类似,使用索引可以检索到所需的数组元素的数据。例如:
$ ]5 f  J7 a% T; C  ?! S% }
1 J! Q6 [* j1 Y. w% R7 v . . . . ?: i9 H/ [/ Z' n
SomeVariable = A(8)  
9 f/ i# `: K, ~1 m  d8 ~  A$ A . . .
3 s/ d" J  O- `: K" e9 z% H& b7 r数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组:
* b! C, n: M) h- Y! S" Z! q( L
* H7 ~; |5 b4 g5 P9 ~- t( m5 \ Dim MyTable(5, 10)+ `. Q, o1 V; N' h( P8 R; n
在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。& L' }  L4 K4 o: Q4 C

1 W0 o3 w5 D6 g6 `3 ^- S, {
8 |: O" K/ m/ q4 i9 |5 T

该用户从未签到

6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥$ R1 N* W2 k+ a- v( _. o

6 @1 n; I& [- Z' c        Next        
. ?4 B9 q- e( {+ w        symbol_len = Len(symbol)) \8 O4 @! S& a' Z8 X& \. {; C
        Print #1,symbol_len;6 t% {/ |" x2 W+ m. v6 Q
        Print #1
) J* ^+ J- w7 h/ ?        symbol = Mid(symbol,1, symbol_len - 2)
- g) R, p9 Y1 Z$ I        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;1 _7 m* q, \! Z) p
        Print #1
0 E( V& P5 n/ E4 w    Next pkg

该用户从未签到

7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意! w: i* k2 ~1 ^7 ~( Y
  • TA的每日心情
    无聊
    2019-11-20 15:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    8#
    发表于 2018-6-27 11:59 | 只看该作者
    EDA_BOMHelper花式出BOM,总有满足你的。

    点评

    嗯,有空研究下  详情 回复 发表于 2018-6-29 15:43

    该用户从未签到

    9#
     楼主| 发表于 2018-6-29 15:43 | 只看该作者
    linxiwell 发表于 2018-6-27 11:59& L$ O$ I  O& x5 j
    EDA_BOMHelper花式出BOM,总有满足你的。
    3 U4 a3 o  V3 V
    嗯,有空研究下
    ' f' T# V4 ~& v1 I+ P/ R4 {

    该用户从未签到

    10#
    发表于 2019-7-16 16:51 | 只看该作者
    最近要搞这一块,先上来了解一下
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-24 20:17 , Processed in 0.156250 second(s), 30 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表