找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

电巢直播8月计划
查看: 112|回复: 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 | 只看该作者
网上找了一个
! S3 z9 M& p  ]* t+ j8 sDim fn As String( d" Q; b- t% _1 K" t
2 y5 h) l7 L+ l3 _1 P
Sub Main
1 I1 H7 K; ]' G! i/ ^    fn = ActiveDocument7 @3 q- e0 ~, n/ T
    If fn = "" Then( t" A+ r. X- u4 q4 M" _8 c) Q# w) M; [0 r
        fn = "Untitled"5 c; R; _3 x6 x% K) \& Q1 Z
    End If& [! W' E$ ~1 S. x
& i. c3 G4 F6 F; a8 Q
    tempFile = DefaultFilePath & "\temp.txt"! e7 `3 B  \2 o4 r! v
    Open tempFile For Output As #1
. Y3 t: b4 G$ i1 P" _' H    item = 0% K% K# C/ }8 x8 d8 u
    StatusBarText = "Generating report..."
2 Y0 y2 b; @" ]# 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"% Y- h: y, x% O
    For Each pkg in ActiveDocument.PartTypes
: N/ p* Q( v1 s% J% F5 F) L+ {% Z/ x# v: a        'Print #1, pkg.Name; vbTab; note1 S% X8 U0 F- q  B; [
        qty = 0
* u* y8 r- b3 O        value = ""
, Q( y# X' j' w( T! o0 b        description = ""
0 y( O0 K3 }7 F+ S; B. w% x1 }        manufacturer = ""
2 Y- n, N8 }9 Y& E        pn = ""
3 C% O5 {5 S6 X' e- m        manufacturerpn = ""+ I% p" j2 R) ]7 J  h
        symbol = ""
5 @0 H5 d9 i$ Q( u        item = item + 1
  v% }3 y. a! H5 M        'Print #1, item; vbTab;
6 q8 W+ B# ?. c$ Q! S- ?. F        For Each part In pkg.Components* [" b- a% _5 M
            value = AttrValue(part, "Value")$ Q0 j0 s) d! Q, o; g+ ?! Y
            description = AttrValue(part, "Description")
1 F) q! S+ z2 R            manufacturer = AttrValue(part, "Manufacturer_1")
' _4 }6 q; L- F6 x: q+ K$ @& K/ L            pn = AttrValue(part, "P/N_1")
& W" B6 J8 d) k) S% h3 {            value = AttrValue(part, "Value")   
& J" G& `) h6 O& v5 S$ X/ u            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")3 A7 z" C# r4 K
            sysid = AttrValue(part, "SYSID")
4 x/ m" e! h% K' B% e            qty = qty+1
* H+ {/ v" p0 M& q' U% t! J6 g            symbol = symbol + part.Name + ", "
8 h* c  P1 J  L/ l3 a" ]        Next        2 q; N# d; H; \3 a+ O
        symbol_len = Len(symbol)
, c7 \" o) G! h+ W' ^2 s        symbol = Mid(symbol,1, symbol_len - 2)
! D2 l) E% f% `* |        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
' ^) ]6 ~8 J% K2 Q/ j0 E* D        Print #13 J" w6 s0 o, L- f5 x
    Next pkg
5 S: L' m& b& y7 y3 D7 t$ x    StatusBarText = ""  u" I: N) B* H
    Close #1
2 Q( j5 `5 b  c% r# b    ExportToExcel  O5 p' m0 z2 j0 K0 _7 x3 W6 f
End Sub
( y! ]( ?' Z2 K* Y) v+ X' Q
0 Q/ s3 o" p$ t  P) a, sSub ExportToExcel
" A. Y0 W1 V% V7 H. S    FillClipboard: K" u- v. d& _5 Z$ Z7 _
    Dim xl As Object8 N; C) P- H0 q# H
    On Error Resume Next' V$ z% D4 S3 v9 i- G. I
    Set xl =  GetObject(,"Excel.Application")- {3 R& s4 y8 s
    On Error GoTo ExcelError    ' Enable error trapping.( k3 ]& _0 O% g& L8 w: y5 H  O
    If xl Is Nothing Then
( T" ^6 M8 f: e# o2 @( b  I        Set xl =  CreateObject("Excel.Application")
$ G* l7 s9 |  j3 r# j1 J5 u    End If
# G" @% \) L+ c# f$ s    xl.Visible = True" ]/ |$ m+ Z$ c  G' U
    xl.Workbooks.Add6 r; ^" h' L& O
    xl.ActiveSheet.Paste
& E  |* E% O5 t. [. k    xl.Range("A1:I1").Font.Bold = True
; e/ S3 \7 a6 X/ n' ?  \$ g    xl.Range("A1:I1").NumberFormat = "@"  f" @8 k$ |; A' A9 ]+ Q/ }
    xl.Range("A1:I1").AutoFilter
) k0 O5 L+ Q0 i+ Z$ F; ~" F1 s- N: E    xl.ActiveSheet.UsedRange.Columns.AutoFit8 @3 ]# |5 I& b& {8 B. E7 a
    'Output Report Header
) L* O4 [# ?/ a( n  K3 z    xl.Rows(1).Insert/ k! p# k% N# D$ j6 A
    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now0 @# }) z& p- w
    xl.Rows(2).Insert
* u' T5 |6 }1 k) D1 |  [6 Q    xl.Rows(1).Font.bold = True
# `0 V6 O; Z3 [    'Output Design Totals
+ i* r5 y, P$ B3 w# C    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 12 S; n; k5 p8 l4 {( J0 V1 c9 m* \
    xl.Rows(lastRow + 1).Font.bold = True
; O  f/ @% S4 U* q$ v7 c' G    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count( ?* L, g, i0 Q5 k
    xl.Range("A1").Select
9 q3 e/ |* z: m+ K7 l; M% Q- C    On Error GoTo 0 ' Disable error trapping.
* F* I! r0 }& Q8 ^# f, m    Exit Sub    1 m% D! S: G2 D! O. e
, p( ^1 Z$ b( _4 g7 w) U3 T9 H
ExcelError:+ `3 d4 E* {1 C! w& z
    MsgBox Err.Description, vbExclamation, "Error Running Excel", }. V8 N3 ]' a6 E' M3 i+ W5 \+ r
    On Error GoTo 0 ' Disable error trapping.   
  g& ]( m2 c& E2 }" y( n    Exit Sub/ s; |. Y/ w. A
End Sub' r' w7 X; U* m2 `. A6 d
) n' h+ Z3 s, L
Sub FillClipboard
& G. F- i& a" K# N8 L    StatusBarText = "Export Data To Clipboard..."0 }8 T) l/ p  V. e# U1 F
    ' Load whole file to string variable    + ^) P+ P+ T4 }4 t" `, S8 U
    tempFile = DefaultFilePath & "\temp.txt"
2 z+ I# b* |9 B& ?- \/ u8 _    Open tempFile  For Input As #1! c, q7 U5 q' j! l2 {
    L = LOF(1)* x9 G) n  K. r$ a+ |, U
    AllData$ = Input$(L,1)
. `" |+ t" b* u( R& x  p1 ~0 Q    Close #1: h, P4 n; J, G% N! v  w
    'Copy whole data to clipboard
5 Q; I9 r2 L, U& U9 L    Clipboard AllData$ 6 D, z9 p' Q  {( ~) @' Q
    Kill tempFile
# N( H5 ~8 ?% C: K9 W    StatusBarText = ""9 q$ \* C2 ^2 R: n/ c/ r5 b  F
End Sub5 j$ g; @3 \8 K' N  Y5 v7 e
Function AttrValue (comp As Object, atrName As String) As String
* x# ^& X) o  Q/ q, f    If comp.Attributes(atrName) Is Nothing Then/ y: T6 r6 b9 r8 K- k% t% m& ^
        AttrValue = ""5 L6 U; G: x' B6 v/ I, l
    Else
8 |) L, X; [1 R% S" H: P        AttrValue = comp.Attributes(atrName).Value
; r8 d& o  h0 D  @0 t' {    End If9 `1 Q1 T7 r* ~
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)
, V. N. O# a+ I9 F8 w+ H3 V        symbol = Mid(symbol,1, symbol_len - 2)# ~8 H+ F1 R* f0 ?( f
' i6 O) r- `1 H. V
这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑 ) D. P) d8 D. W2 T8 \, R  x

& _* ^% {) ]' g) C3 G. M难道是数组:---5 H! i7 e$ j% T1 Z: h0 A
多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组: % n6 r8 F$ z- D' I+ `  h9 B  o  O5 D

1 B1 I4 V2 I$ \& c0 w* {; I7 VDim A(10)  h! j$ x* V0 a. j" s( P
虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。
+ A( P( s, c) _2 x; _
) y2 D' e9 c9 \$ X& t# x  [3 \在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示:
4 U8 y# J, H/ n0 M4 T- N
8 s- S% P1 O2 Z  w3 j, k A(0) = 2562 B3 q5 K4 N/ g9 ]" _( Q
A(1) = 324
8 Y: R+ i* a! s: s A(2) = 100/ e0 K! y, ^5 |3 N! i6 Z7 S! J3 V
. . .: @: G) u$ g: M# |& [
A(10) = 55# ?, |$ Q: E* a* s" b
与此类似,使用索引可以检索到所需的数组元素的数据。例如:
$ ^% n8 _* L& ?* a0 I: h
. q8 o- C& ?4 O' M- X9 F8 `4 R5 y . . . 7 X1 {0 R/ [5 W7 K
SomeVariable = A(8)  * ^$ t' F5 v5 z, I
. . .
. n- u/ d6 K9 C+ }" Q4 \" S数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组:
0 c/ P( \7 N) i' }( g/ ]
6 S4 r- p/ \) Z$ v, e* d3 t% q Dim MyTable(5, 10)# P8 g3 T- D; z$ h. @
在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。% }6 S; H: U: ~& C2 S
# Q. {7 I5 p/ ~8 o& x& I

: b2 A' ^) ^4 ?7 [" w2 ]1 `' f0 o

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥* {2 E. j' R0 K: A% z
: t# w7 f* P' ~+ k1 s" \3 g
        Next          m8 c1 k, d- }  J  g7 y. C5 _
        symbol_len = Len(symbol)+ l) z/ e) p0 [2 X
        Print #1,symbol_len;6 u  }$ `% |0 J
        Print #1' v3 P. e. `4 e  O/ A+ u
        symbol = Mid(symbol,1, symbol_len - 2)
3 @9 U+ V$ ~4 g9 G' n8 c0 ~. p        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;8 e# ?: G5 i+ _' K/ `0 O" ]
        Print #19 B7 I0 d" y' L6 I. D, s( ~9 f3 c
    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意0 a4 \& z* S: z# u3 m: s1 c

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:59: m' B1 S7 v  W! e: s9 z
EDA_BOMHelper花式出BOM,总有满足你的。
2 R. y. f: I3 g/ S; ?
嗯,有空研究下; l1 y) }  x$ m! i  i+ g! k
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

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

GMT+8, 2025-7-15 07:50 , Processed in 0.077840 second(s), 34 queries , Gzip On.

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

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

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