找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 99|回复: 8
打印 上一主题 下一主题

PADS生成bom脚本

[复制链接]

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

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

EDA365欢迎您!

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

x
pads生成bom时,无法达到自己的预期,所以干脆自己写吧,但是,我不会
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

9

主题

215

帖子

2909

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

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

点评

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

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
2#
 楼主| 发表于 2018-6-26 18:45 | 只看该作者
网上找了一个4 z; d' T$ C$ s
Dim fn As String: A# N3 D4 v( T+ `0 y! v) G
. V) q+ U2 x) `
Sub Main
, p, q# I8 v& h+ j1 ]- Q    fn = ActiveDocument9 f7 F! u% ~$ R
    If fn = "" Then3 P$ t# n( x! I3 t' N0 Y
        fn = "Untitled"2 [/ F3 b% |, |1 D
    End If. w2 w1 P% J& R
! E9 [) K. u& L
    tempFile = DefaultFilePath & "\temp.txt"
- z6 I  k9 ^9 A8 a6 I$ m    Open tempFile For Output As #12 D$ m. [2 D. k) i, u
    item = 05 _( G/ d' K$ E* n8 |
    StatusBarText = "Generating report..."
- m) S" X9 b7 ?, T- k    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"5 s+ l6 I( C) \& R& d+ U
    For Each pkg in ActiveDocument.PartTypes" E8 U& ^% W' H( [1 e
        'Print #1, pkg.Name; vbTab; note
0 C: m9 q, q2 t6 S1 m9 ?. Q        qty = 0
% t0 [- v: a3 |. i        value = ""7 i& ~" ?# S8 p1 Z% n8 @8 ^3 t) W  |$ |
        description = ""
- R0 p4 ~7 y0 ?        manufacturer = ""5 m% j3 a9 i& b1 [
        pn = ""
# o# M$ e6 Z4 p% l7 R! ~) \        manufacturerpn = ""
; E) M" e7 w) v        symbol = ""- Q3 _, ?/ X* U- o0 q0 L6 h( e
        item = item + 10 _" B; [, t7 E) ?
        'Print #1, item; vbTab;- D5 J1 {" U1 {  b0 u+ `; ~- ?. {
        For Each part In pkg.Components# V! `0 K, B0 {# |( G( s) Q% z
            value = AttrValue(part, "Value")
% k7 F/ {- U; J( o. {5 z! Z0 o$ d            description = AttrValue(part, "Description")
) O2 f8 \7 w; P3 c' c* e3 k            manufacturer = AttrValue(part, "Manufacturer_1")
9 u- p0 t% M% T9 O# L+ t            pn = AttrValue(part, "P/N_1")( }( d. h9 m" o- ?3 ?
            value = AttrValue(part, "Value")   
' m( E% q6 W1 P( q  Y4 P! D" D            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")
3 W! ?$ X7 J6 K2 L. R            sysid = AttrValue(part, "SYSID"). V  ]* a) B( ?3 M8 k: a* b! p
            qty = qty+1
& }  {+ }& l; `" z            symbol = symbol + part.Name + ", "# S  D4 E7 c% g! A1 `0 [
        Next        . G) k) r0 {3 K  S7 {
        symbol_len = Len(symbol)
0 [; t1 {2 W% E* k. V. ]) j; R        symbol = Mid(symbol,1, symbol_len - 2)0 a! W; Q" l0 R; X; A
        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;* L- m3 U$ a! a4 B8 Y2 @' h$ \
        Print #1# P5 {9 g  \1 H
    Next pkg
0 f. l6 X8 [, c' Z: d  e4 V    StatusBarText = ""7 N+ J0 m% T& }6 P+ C
    Close #1! F' k5 U/ g! r1 X
    ExportToExcel
6 t$ j+ Y5 F! a) ]$ t* R: [+ UEnd Sub& w  ^" ]; R+ }' ^9 ~
( |% |: F+ a+ V1 B3 `( A2 A: }
Sub ExportToExcel
2 B3 R$ e; e" @' q1 |6 s    FillClipboard
7 c) M4 q, `- ^$ |! Z* V$ C1 P6 _    Dim xl As Object  `7 c9 O/ D- \- c
    On Error Resume Next
7 d) v+ x( g$ E( b    Set xl =  GetObject(,"Excel.Application")' s% X' S1 h  F
    On Error GoTo ExcelError    ' Enable error trapping.
3 v$ \* v6 ]8 d2 ~4 Y7 |0 s    If xl Is Nothing Then
3 {  [0 H0 Y$ l" m& a" l5 P. g* R        Set xl =  CreateObject("Excel.Application")
9 b! c8 g) j5 C* s$ z    End If, J) q# Q9 Y1 M( Q- R
    xl.Visible = True
/ N4 Z# e8 V* D' S: j+ F; P' l    xl.Workbooks.Add
& ^  y1 J1 B+ k9 r( u* z, n% E    xl.ActiveSheet.Paste
+ ~; r! b. |3 |    xl.Range("A1:I1").Font.Bold = True
9 [) |% I, o0 H$ R) N' b3 z$ o# h    xl.Range("A1:I1").NumberFormat = "@"
, s" j, q( _4 u( C- l! ]: ~. U    xl.Range("A1:I1").AutoFilter6 ], n0 I4 o% W, P
    xl.ActiveSheet.UsedRange.Columns.AutoFit9 K/ p) C% I0 Q) W7 ?0 G
    'Output Report Header
2 U  O' L0 f: T$ j' H/ O    xl.Rows(1).Insert
! a0 S# r. L+ g    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now
! g4 A. V( }6 G5 y( P4 a  m    xl.Rows(2).Insert
. a3 F/ H' ^! [1 \* M    xl.Rows(1).Font.bold = True
; L$ n( V$ ^) |7 _* J4 k    'Output Design Totals
) O8 k! E* _" ~% f* {  N7 }/ d1 h    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 10 d& F: x$ }# [6 i  P+ t+ Q
    xl.Rows(lastRow + 1).Font.bold = True
8 W/ k- Y% \* l8 H+ C# E2 W    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count3 C+ k0 C7 q2 k! @# C7 L- B
    xl.Range("A1").Select7 o! p" F8 f  W& r  i! W) w8 R
    On Error GoTo 0 ' Disable error trapping.
. I. a' Y6 M2 V- x. J6 i9 V, u+ V    Exit Sub   
9 D# w0 i2 _6 P  O5 M3 F% O0 |* i0 I
ExcelError:
% W$ }" V3 h( \' G    MsgBox Err.Description, vbExclamation, "Error Running Excel"* n. P+ f1 @! |+ L' u
    On Error GoTo 0 ' Disable error trapping.   
) ^9 d# R# L% F2 w! B    Exit Sub2 T" n& {" v3 u7 x
End Sub5 J# _+ J- q8 D  l( t" W, K" S
; {9 d' o! J/ |; x1 d! y+ T( M0 c5 t2 V
Sub FillClipboard
3 G8 a/ i! [$ D$ H- H    StatusBarText = "Export Data To Clipboard..."! |2 R+ r5 T/ D
    ' Load whole file to string variable   
) w* x  t9 ]- m: o+ L6 J    tempFile = DefaultFilePath & "\temp.txt"5 G: R4 V4 J, T7 ^
    Open tempFile  For Input As #1
! W% R( M  Y/ d    L = LOF(1)# j2 J: \' u9 p" s% n) d  f- v0 `
    AllData$ = Input$(L,1)
. H7 S) F0 T4 K, v    Close #1' g. E' C: M4 ~8 ?" V7 e
    'Copy whole data to clipboard0 V% n8 v8 u- a' a4 `2 R3 e4 W
    Clipboard AllData$
" R: v8 i4 E6 w- @    Kill tempFile4 A8 i1 g8 |* \# i4 n
    StatusBarText = ""% e# ~6 \! V, t- n3 C
End Sub6 N2 p& S9 Y( v3 H! _; m1 d
Function AttrValue (comp As Object, atrName As String) As String
7 _6 L0 I5 q6 P    If comp.Attributes(atrName) Is Nothing Then5 I' U, _3 i$ l- a
        AttrValue = ""8 F) n/ C5 f& b6 M$ }  B2 u
    Else
) a6 u. n1 {& I! A+ k4 V0 W0 H( z+ k! g        AttrValue = comp.Attributes(atrName).Value5 u& Z  Z( v7 J* p2 s
    End If
! r* N6 d$ D. [8 U: ~End Function

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

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

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
4#
 楼主| 发表于 2018-6-26 18:48 | 只看该作者
        symbol_len = Len(symbol)2 T- N% T) T  e- U; _: V, Q% J7 c$ D
        symbol = Mid(symbol,1, symbol_len - 2)
: z* s$ t+ _$ ?4 f. K) Z
8 |% m+ ?! |  d$ T1 b& \7 A3 C这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑
5 J& C2 _* m( ^0 [& f& s0 a8 u1 Z. [& \% e+ U/ @5 Q( x
难道是数组:---  Y1 H( w+ _' J0 m; ]# c
多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组: / v# y- y9 X2 t* x$ H

: @, I3 u6 U4 J8 vDim A(10)
) `7 F& b+ G% r8 L& J5 O9 t虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。
5 P; a* j9 C. V( C/ Q4 h
4 r( I- g" x; z  M) g; q在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示: " C0 r5 k) F5 U3 W6 c
8 M. m9 T" b+ @& [8 |* P0 n
A(0) = 256
9 {! {0 V# `5 f, V A(1) = 324
: Y8 I) P- u1 I A(2) = 100; c, d! S" ~5 e! `( @" r+ ^5 C% S
. . .* }6 ]: _7 p' f: }& j8 Q' l
A(10) = 55
, V( b+ w" s6 \6 W$ o. l! r. }与此类似,使用索引可以检索到所需的数组元素的数据。例如:
) T5 r, I2 s: x3 F
/ r2 |! ]+ V) q8 C . . .
6 Q* s& P3 D$ P3 w7 k: J# m SomeVariable = A(8)  
: U& f& ]# C& I4 G% v . . .
" a1 W7 Q7 @% d1 K; {数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组: 1 O% k+ Z" o, K' n4 w, d% \
  x$ E1 b' b% N3 o9 v( Z
Dim MyTable(5, 10)
' d% `& c6 Y9 P' {" J+ B在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。7 q9 [& g9 m* R( C
9 U% j- v( g! d# d5 T( F* ]7 |
4 Y6 t+ M: C6 B! g! ?" r$ E5 G' o" x

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥
7 o2 x; v/ O5 x8 }& R
" U3 w# D' X+ `. f. I        Next        
- W, D4 O3 @: m! F1 Q/ t        symbol_len = Len(symbol)% e5 f( ^) A! e  K
        Print #1,symbol_len;: Q5 S( H/ m# a6 A
        Print #1
! v0 e; P+ p1 W5 ~. `8 i        symbol = Mid(symbol,1, symbol_len - 2)
5 a  ~& ], }1 U; `; `        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
9 a. c$ S" m# d2 z        Print #1
' j+ |: V. v% R7 M" y6 D    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意) f! }" C/ d. x3 K2 O) u

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:593 c" C$ I3 Q) L  i' |* I
EDA_BOMHelper花式出BOM,总有满足你的。
* R3 ^+ G* s2 l$ }  g+ Q. s. y4 F
嗯,有空研究下
- t% N4 l7 h# D) l
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-2-19 06:59 , Processed in 0.064535 second(s), 37 queries , Gzip On.

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

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

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