找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 82|回复: 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 | 只看该作者
网上找了一个( m, |" N3 [1 O9 O
Dim fn As String
1 d" C/ T% e1 x) j+ i6 l% j0 X5 N, w, R3 v% Q' ~
Sub Main! j) J- z0 b3 M9 r  q
    fn = ActiveDocument
+ R) _* `! U1 X! S; G# d    If fn = "" Then
# @' Q% y2 a& w$ s& ^! C, R        fn = "Untitled"
* O5 x8 g, [3 B4 c    End If
# k# q! u7 |, j: ^
# V2 k/ R3 D' H- U8 F* A    tempFile = DefaultFilePath & "\temp.txt"1 V# h& V& c3 z! j# P
    Open tempFile For Output As #13 I7 X( k# R; E" O
    item = 0
0 {" m- v! n! h0 u) Y, J    StatusBarText = "Generating report..."
" `% M( y; c: R7 }    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"
+ M$ J! ~6 W& @3 e% d    For Each pkg in ActiveDocument.PartTypes
8 ^# ], r8 X6 G7 F        'Print #1, pkg.Name; vbTab; note$ s4 M( t1 U& ]8 V: _2 l
        qty = 03 C& k% j  }1 E" i
        value = ""
5 e  {* Y& l: g2 h        description = "") r0 j/ V$ Y6 i7 o8 |
        manufacturer = ""
, l+ o2 H  y8 t$ R( R8 Y        pn = ""
, S8 Y+ Z& R4 G- Q/ I/ K        manufacturerpn = "", m7 l2 I) j3 \9 H4 J, ^: j
        symbol = ""+ G' P8 o5 {6 L/ M# Q
        item = item + 1
+ K' s! `" C2 r5 ]# c1 |) u        'Print #1, item; vbTab;
' R! r' K$ M+ Q, w  R  ?% U        For Each part In pkg.Components
/ n. C. y0 \, I5 W4 _5 ]            value = AttrValue(part, "Value")/ s+ T8 U" _4 @! O4 l4 K7 i
            description = AttrValue(part, "Description")
( T  d* w5 H: L( ^7 @            manufacturer = AttrValue(part, "Manufacturer_1")4 v" `$ }8 ?# \( {5 h
            pn = AttrValue(part, "P/N_1")
0 q5 R3 w7 X+ R2 \2 T            value = AttrValue(part, "Value")    0 X& M% R0 w3 P( v- Q4 ~' X
            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")8 H5 @/ e/ G% [1 {8 h5 G
            sysid = AttrValue(part, "SYSID")# u" \. p6 q1 O0 `$ e) M6 \
            qty = qty+1" _) _! D+ a4 J' _9 i) @, ~5 G! |
            symbol = symbol + part.Name + ", "* x/ @& u! I4 U1 H
        Next        
9 T( u* g4 y$ ^/ S        symbol_len = Len(symbol)
4 u4 h" d+ u3 T* S3 D1 D9 n        symbol = Mid(symbol,1, symbol_len - 2)
$ A* s, S/ L3 Q5 `1 u- f        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
( X. o6 R% s. ?6 t9 ^        Print #17 K, w) n: |! N3 K- j, e  U
    Next pkg/ z0 Q3 v" G7 R
    StatusBarText = ""
- b' B! W" r3 [+ h4 _' e    Close #1
6 \4 H# V: M5 u* W+ R- ~    ExportToExcel
- V# U; [! m/ [  B/ u+ r( nEnd Sub
+ G3 Z( _! s9 i' G
: ~, ^: B+ M! ~# |1 ^: _Sub ExportToExcel9 t- t% `  `6 u5 ~8 p
    FillClipboard) M5 T; U$ K# K( U
    Dim xl As Object
) d; y4 {! \) ~1 F5 g    On Error Resume Next; M1 g% W( \) \
    Set xl =  GetObject(,"Excel.Application")( U& i1 x: W/ L- x: r1 P2 R$ x. @
    On Error GoTo ExcelError    ' Enable error trapping.' V0 A. g$ [( M) ?- z
    If xl Is Nothing Then: w: X6 H2 \; o- Z0 ~* v4 ^% r
        Set xl =  CreateObject("Excel.Application")
. }: l' b9 Z3 p    End If' q! L( V9 L2 @$ W
    xl.Visible = True
6 j2 m3 w1 [$ {+ E+ J$ ~    xl.Workbooks.Add! z1 o6 V" G* c# K# w( c+ @; k
    xl.ActiveSheet.Paste
" L9 }& v3 H5 K5 U# X2 \3 G    xl.Range("A1:I1").Font.Bold = True- `, }5 w9 _1 g0 a3 K9 X
    xl.Range("A1:I1").NumberFormat = "@"9 ~# E5 r$ }$ S' ~9 J
    xl.Range("A1:I1").AutoFilter1 E7 W' R: S& L5 y5 R. _* b1 q+ P$ E
    xl.ActiveSheet.UsedRange.Columns.AutoFit/ c% {! y, D5 q0 W- V# V1 [4 Y. I+ r
    'Output Report Header$ b# R, y* ~3 H, i/ C& v. c
    xl.Rows(1).Insert
, s' f7 h  f* o1 T9 s1 ?. }    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now. D& x7 l, q/ T$ x/ Z
    xl.Rows(2).Insert; ]& W& B9 G) _; w6 Y2 H0 r
    xl.Rows(1).Font.bold = True
0 F/ W  J. ?4 R3 r    'Output Design Totals+ u* m, I! i5 u, C# D8 |/ X8 b
    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 10 w  K9 J: O! B2 p/ a3 {, t
    xl.Rows(lastRow + 1).Font.bold = True& ^" o( G0 O- g$ Q
    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count! P! S7 g$ f. i* ~% u
    xl.Range("A1").Select
( e5 w% X4 j- `( K( A) E6 R    On Error GoTo 0 ' Disable error trapping.
% M9 ~& u, H) c! G2 s. N    Exit Sub    ; i' b- ?$ K6 q2 E* W6 y
7 n6 g* D" C) `: |$ ]
ExcelError:& n& \5 O2 p+ ]9 S0 \- z9 ^
    MsgBox Err.Description, vbExclamation, "Error Running Excel"
3 _( N" B% f9 s' X4 Y    On Error GoTo 0 ' Disable error trapping.   
: Z0 {' k' G' q" E6 f* e' C    Exit Sub0 `5 K+ }* M, H) f( l5 u5 d
End Sub
) L% ]$ j6 ]2 M1 X( ]* M7 Z
9 M6 K9 i$ D' b+ \3 aSub FillClipboard
# P' V+ [1 X! ~) l' t7 K7 |    StatusBarText = "Export Data To Clipboard..."
* D8 a0 U  \& N+ U    ' Load whole file to string variable   
2 B) e6 U+ ]$ s/ }8 Q3 e. Y    tempFile = DefaultFilePath & "\temp.txt": o4 O6 Z( l( ?9 ^  k4 y; @
    Open tempFile  For Input As #1
9 R% ]4 O& G. B0 ~, L    L = LOF(1)
9 _  `( Q9 w  E! }% G# V    AllData$ = Input$(L,1)+ E* G3 L" v- Z7 E3 z4 |8 u- Y1 v% l
    Close #1
+ q; Z1 g6 S8 M8 N/ @9 z    'Copy whole data to clipboard+ X! |* O! {5 p& V$ ~2 Q
    Clipboard AllData$
9 Z+ H, g& |: _+ u. h    Kill tempFile
' h; h  r9 \, {8 v    StatusBarText = ""3 p, l! }4 m: w# h# \9 @5 _
End Sub
. h( X+ P; v! g0 R& X) |Function AttrValue (comp As Object, atrName As String) As String+ W; ]/ k7 X& X3 u3 Z4 j
    If comp.Attributes(atrName) Is Nothing Then3 f) s. n% A; M- P& ^" M
        AttrValue = ""
4 `( ~8 x! ~9 F3 t6 t- @( K    Else" U+ w) ?. c" I7 I# d* {" F
        AttrValue = comp.Attributes(atrName).Value8 D2 n7 V+ I* f/ L
    End If2 e1 J4 s; i% c9 t
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)
( J& C9 C  Y) u7 b        symbol = Mid(symbol,1, symbol_len - 2)
% i2 i/ z1 Y% B2 z. Y0 N
/ o% Y, U, e+ s3 e, O这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑
1 p0 z  P. `5 B/ N0 T; [7 a9 d4 P4 C8 E" V/ S( }
难道是数组:---
" L) _- S4 J* b6 v2 b3 E0 L6 z$ w多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组: ) k5 {0 {8 e1 ]% r
. `8 Q; x0 [" A9 _0 {5 E3 ]' _- K  _1 [
Dim A(10)& J9 p( a# \# F+ W  K
虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。
3 P' k& x! L, z  A7 ~% f
$ c; p5 D7 i3 [! k7 b在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示:
5 u+ m1 ^/ Q. x6 n9 r8 t' T0 G% C6 Y
A(0) = 2569 n" b- f7 l% E
A(1) = 324$ A+ q5 b$ h, j: ~% Q
A(2) = 100
3 K7 G$ ?& f+ n! J . . .
3 E2 a" H; s; j0 ^( Z4 a' e2 M A(10) = 55! Y$ T4 s" E, B" S$ E6 w
与此类似,使用索引可以检索到所需的数组元素的数据。例如:1 i4 j7 D% S+ g2 P

$ F4 }+ ~5 p& J( _ . . . 7 Z/ {: p7 i; ?& \, x
SomeVariable = A(8)  
& j; H" m* y/ \8 @0 B: J& n7 s7 h$ d . . . . V2 d8 q- e3 W8 C
数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组:
4 T% }  Y$ m8 t- S4 e6 E) [1 }8 ~8 C0 |' @  _' D$ ~( m1 d
Dim MyTable(5, 10)6 g+ O) ?  ?1 k$ A; t: {) R
在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。
) K; `: \2 n4 _, Q1 v7 L% s5 A6 x
9 [& `/ Y% Z/ C: R7 e4 W
# S  ^8 N9 |0 R# p, [; C" L# E- O

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥; O0 |# D1 i6 @  {' F

" F& g6 }$ a9 p0 @  r9 J        Next        
6 s/ r' {; i7 y; V8 \7 v# g2 }8 o* |        symbol_len = Len(symbol)  V% O) O. L' {" r
        Print #1,symbol_len;: x! a, ^( C& P) w9 S
        Print #1
! B' l% H, s4 ]0 P) n0 }2 k        symbol = Mid(symbol,1, symbol_len - 2)
  I7 o3 W1 z- Y  I5 J        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;. B/ r; _0 W- {; }0 T. N
        Print #1, C3 z3 F) y( V# `: e
    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意; O5 J3 Y- N& \0 ]

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:593 c/ `' Z' S4 x
EDA_BOMHelper花式出BOM,总有满足你的。
$ N4 J/ ]9 x# \, u2 P3 e
嗯,有空研究下
; \# O# i; c3 s. s. }; b
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-9-20 06:27 , Processed in 0.088717 second(s), 36 queries , Gzip On.

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

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

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