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

PADS生成bom脚本

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

该用户从未签到

2#
 楼主| 发表于 2018-6-26 18:45 | 只看该作者
网上找了一个! R9 q3 H. F) u) l
Dim fn As String
# ]; C3 h; h8 o' M5 p9 o, D+ a0 X
Sub Main" n' f: @/ S+ v* f! h
    fn = ActiveDocument
2 X. z& H! K6 S    If fn = "" Then
! X, O5 b* Q3 @( g+ f9 R        fn = "Untitled"
# R1 ]  b  S7 C+ O; `# n    End If( Y# Y% T& j9 J( v7 x
! t4 f) H. ]6 T" C( Z" @# N
    tempFile = DefaultFilePath & "\temp.txt"" @$ m" `2 f* K
    Open tempFile For Output As #1
  ^6 O; Q# d/ n    item = 0& X& @8 }( h  U
    StatusBarText = "Generating report..."
/ f1 W1 x* d" s( y/ Q& z' W    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"% N* Q5 N/ F. S' p, G
    For Each pkg in ActiveDocument.PartTypes8 a$ M4 f4 ~4 {2 L+ B- N
        'Print #1, pkg.Name; vbTab; note: L* W6 T/ j* H6 P
        qty = 09 {. G2 E: w1 J1 M$ C' Z4 n
        value = "". M4 x- j7 Q# i
        description = ""
% @4 P7 y+ A+ G" C2 E; z, C8 w        manufacturer = ""/ `* r9 ?: T1 O5 K, c8 Z$ O
        pn = "", ]( D/ ~. `3 f
        manufacturerpn = ""
3 N) L9 a& O1 v! @4 ^        symbol = ""
! y0 C) @0 e* s: r1 D        item = item + 1
: U/ ?% N: o# H; G- _: e        'Print #1, item; vbTab;# Y$ f2 ]4 v, l" v( {
        For Each part In pkg.Components
8 y, p% a  Q& t$ Z) v- h, X0 L            value = AttrValue(part, "Value")1 u3 L  N* f' `& B: E
            description = AttrValue(part, "Description")
5 V7 m! E2 m# W  `            manufacturer = AttrValue(part, "Manufacturer_1")
' l$ c. y2 I$ [9 L: {            pn = AttrValue(part, "P/N_1")  O3 Y/ S" |" N. j1 Q
            value = AttrValue(part, "Value")    ) l$ [6 X+ u$ w; ^
            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")( o" a9 V8 N2 o& b6 M6 E
            sysid = AttrValue(part, "SYSID")
' a+ f5 x9 Q/ ~+ p! G+ R! \$ j            qty = qty+1
& q6 g8 ~9 S( e# R3 G/ S) X            symbol = symbol + part.Name + ", "
2 A) o3 `9 o( u" U! A8 X) B        Next        
; y5 u- I6 F$ ]1 B* \3 i( {        symbol_len = Len(symbol)
8 C# E6 Q) b  ]) f        symbol = Mid(symbol,1, symbol_len - 2)
) p# m; Q6 V/ `( s        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;; W0 w2 q4 n4 Q! I
        Print #1- M5 D' v. z/ t& p% I
    Next pkg
6 u2 {& q" r3 n4 V$ @( G$ l    StatusBarText = ""+ U7 l" i2 w, ~8 I
    Close #1
( Y3 P- L4 r' r3 s) J  R0 O    ExportToExcel
9 l7 _0 d& a0 D. EEnd Sub1 v* `: Q: m% `  b% d
) J3 M" `, I6 g* Z
Sub ExportToExcel
6 U0 Y7 n. c9 j) C5 L    FillClipboard, k+ N' o5 V. i% r! b
    Dim xl As Object5 q: o. |* f: e
    On Error Resume Next6 N6 S. D5 p5 ?% s
    Set xl =  GetObject(,"Excel.Application")4 P" \4 b% [- L8 _( j# O5 [, D4 w* v
    On Error GoTo ExcelError    ' Enable error trapping.' m# ]" o7 x( T& m. |! }
    If xl Is Nothing Then( ]9 |- ?# b% A, M0 ^
        Set xl =  CreateObject("Excel.Application")
" K5 T, v! ^' V) t    End If/ c9 `' n: H3 O2 H! V6 y
    xl.Visible = True
# J6 J* [+ s% L3 g9 m    xl.Workbooks.Add
% T& S6 ~$ J* Z" W" a7 ^9 O    xl.ActiveSheet.Paste, `! k4 I2 Q. I- n. {" d; W
    xl.Range("A1:I1").Font.Bold = True2 k: {& z3 K# r  u. ~; D
    xl.Range("A1:I1").NumberFormat = "@"1 ?0 N0 P, d# n
    xl.Range("A1:I1").AutoFilter
2 U, l7 z1 G% x/ L0 \2 ^$ t5 o    xl.ActiveSheet.UsedRange.Columns.AutoFit# P# ~4 Q8 c; d+ o  K$ Z) V
    'Output Report Header
0 K- W5 I) v0 [6 h# Y7 ?    xl.Rows(1).Insert
/ n) m; F) k4 o, P. ~% T    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now( f1 B* _$ d1 Y& u. m
    xl.Rows(2).Insert9 W* L! t& |$ a. ]( X4 ^4 y5 k& M
    xl.Rows(1).Font.bold = True& E1 a% p6 n; {0 |$ F
    'Output Design Totals, T8 r' o$ @. Z' G
    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 1# ]: o( U; `! ~, I; W6 o# I
    xl.Rows(lastRow + 1).Font.bold = True
1 }: `. j: `* f  l    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count
$ a9 A4 w$ E& v1 u( S/ q    xl.Range("A1").Select' K! m# ]/ X/ `5 _% x
    On Error GoTo 0 ' Disable error trapping.
- i( t) z8 P, W. O) V    Exit Sub    ' e% J/ n- t0 P( \7 u
. _9 l* F5 T8 k1 i9 T
ExcelError:, i1 D+ B4 X7 u# M
    MsgBox Err.Description, vbExclamation, "Error Running Excel"
: B- f' E* \3 Q: P    On Error GoTo 0 ' Disable error trapping.    6 R( `7 h3 M9 V7 l
    Exit Sub4 u- p0 J$ J5 G# g, D6 `# b
End Sub
# E- X0 n" {* V3 Z
) }& ~, J5 ^( {% o0 p+ ]5 `Sub FillClipboard
& _* c# a, v' ^! x! G    StatusBarText = "Export Data To Clipboard..."7 Q6 j4 _, h% Q2 ]
    ' Load whole file to string variable   
0 M. B9 a! D/ w6 C! \    tempFile = DefaultFilePath & "\temp.txt"5 P) K2 n( i& z3 G8 ^+ ~
    Open tempFile  For Input As #1
$ {# t3 g( e7 n) k# |2 e    L = LOF(1)
1 S- W3 f- i- c% J' G3 S! X    AllData$ = Input$(L,1)6 E2 z: X* |* G; z* U
    Close #17 B3 F) ^  r2 B& r
    'Copy whole data to clipboard
5 b8 q6 _! z6 I1 w# Q    Clipboard AllData$
7 V& t& O  y. x+ e( h    Kill tempFile2 H, t- Q# o# g4 @& O% W
    StatusBarText = ""! m" v" F7 t. c3 x4 L
End Sub
/ W, O7 h9 v3 m' D; W4 \Function AttrValue (comp As Object, atrName As String) As String0 p; L+ h! T6 h8 f
    If comp.Attributes(atrName) Is Nothing Then/ z  T; Z" u( ^2 J. G% ^6 P& g9 ?
        AttrValue = ""
1 j. f7 R% F& c+ ~+ \    Else# y+ L5 i" p0 H# g6 O. W" u
        AttrValue = comp.Attributes(atrName).Value
$ ?) {; @1 O$ ]1 F    End If% F6 m8 a1 b# A% v4 s3 S6 ^
End Function

该用户从未签到

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

该用户从未签到

4#
 楼主| 发表于 2018-6-26 18:48 | 只看该作者
        symbol_len = Len(symbol)
7 [7 L  a: B' t1 q9 x0 x        symbol = Mid(symbol,1, symbol_len - 2)
% u  O& ?& |, O- C; z5 ?7 z5 c4 p& J1 h: g7 ^
这两句是个啥意思?

该用户从未签到

5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑
6 d# p6 w' @2 s$ Y% B8 E" z" G
8 A" Y% q- R% j' j  P# J难道是数组:---
8 G; o5 ?- \* I多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组:
# }! O- w2 n  h* O" W" `# m6 ?/ M/ _* g2 R: l
Dim A(10)
4 K  r- L" ~3 A+ X虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。2 X: T/ m: c- o% y) m3 V" v
: b# ~- t% W& O( X' X
在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示: ' i7 ^3 K' {& z/ M2 H4 @

8 P: ?$ D- J9 ^1 X2 g A(0) = 2567 ?( ~9 ^* a- E3 P% d/ K6 t
A(1) = 324% v+ |" K0 p; B
A(2) = 1001 J  H  m  N9 U: V% O
. . .( O/ d" r; H( D$ S5 W% y9 s
A(10) = 55
) V: r) j+ B. y" n# @4 S与此类似,使用索引可以检索到所需的数组元素的数据。例如:
; I( u+ t1 J0 N5 v1 R
, T1 F( T- O6 k . . . . U1 P% G" l$ E6 S6 x
SomeVariable = A(8)  
" E3 D9 F8 n* j2 [/ c8 E . . .
- f6 |+ X; u, ]; Q! R数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组: % a( |. A- f, m  j+ {

: j; R$ H) c$ C- t3 q# r  ^1 V Dim MyTable(5, 10)
/ X: ~5 z" b2 u1 D* D- b, H6 f在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。; ]6 v7 d. B! t! v, Q

& L5 O2 g% M9 m6 ]" A3 \; u$ z

该用户从未签到

6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥
: l- D2 W& h5 `) n7 G
8 e8 a* i  q0 `$ T8 K7 J4 x        Next        ' x: o. F2 O+ E' d
        symbol_len = Len(symbol)
7 b7 t0 g* k0 x5 J) [$ V        Print #1,symbol_len;! F+ Q; B4 A! b  n9 E
        Print #1: B. f, y# y, n" S) M: B0 c1 |
        symbol = Mid(symbol,1, symbol_len - 2)' h/ B# l& ~4 [0 }) G0 e5 c
        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;/ z8 e8 F, u$ L( s
        Print #1
( u9 L7 D* i+ b    Next pkg

该用户从未签到

7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意
5 ~: O$ j- B2 l( t/ G
  • 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
    % @7 N' s% t0 q5 k2 p: KEDA_BOMHelper花式出BOM,总有满足你的。
    " X' y8 \) {& P: d6 h: ?$ q
    嗯,有空研究下
    7 U9 v! b0 R+ x9 K. E) s

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-29 23:54 , Processed in 0.093750 second(s), 27 queries , Gzip On.

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

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

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