找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 107|回复: 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 | 只看该作者
网上找了一个
5 ?$ B" ]  s* M* \Dim fn As String, R7 c" v& h* ^6 q9 C
- f  ]% R  j7 G' J1 i# q! Z
Sub Main# L% K" f& h' r( d$ N( J; f5 m
    fn = ActiveDocument! a* X$ j0 i$ p# T
    If fn = "" Then
8 ?( ^8 G2 v+ L8 ]! [+ Z        fn = "Untitled"
1 {" S- }2 r; E0 K    End If! A3 `: `& U  m: n, k
4 t/ O& S. }3 _9 \" l! `+ I
    tempFile = DefaultFilePath & "\temp.txt"
2 _1 e, a$ l( J( w, U4 _5 Z    Open tempFile For Output As #1/ d; D3 L7 G0 x- J/ y
    item = 0
) \" j( ^+ w2 \* }: U    StatusBarText = "Generating report..."
2 c7 [- U$ K9 z: h( y  j6 H. 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"
3 J! y3 G7 m5 E; n$ t# o    For Each pkg in ActiveDocument.PartTypes
+ ?$ K' R6 g/ |& `        'Print #1, pkg.Name; vbTab; note
. A+ c% y! ^, L) }7 I$ n        qty = 0) j' _; p6 a  \2 s1 W, X9 d
        value = ""
' G5 ?% F3 c- @; L% K5 x+ _        description = ""6 J0 X6 |" p+ m6 Z7 j! j# ^. F2 p
        manufacturer = ""
0 V3 {# Q* [5 h7 u/ L" [# H* ^/ N% r5 _3 Q        pn = ""
2 V$ c; C; D! d0 X# M0 q, [0 g        manufacturerpn = ""% P0 d; k0 g( s- L0 Q
        symbol = "", e  Z& L6 Q' z
        item = item + 1
' P5 l4 s! o! q        'Print #1, item; vbTab;
% x6 M% z4 X( W/ M- ^' Y- P        For Each part In pkg.Components
5 V3 |; _' Z8 Q1 B            value = AttrValue(part, "Value")& k& g- J" M7 D4 r8 [: K; f
            description = AttrValue(part, "Description")$ r+ N- b! }2 _  Q8 i
            manufacturer = AttrValue(part, "Manufacturer_1")5 O$ ^  t: E  {0 J" X* Y, u
            pn = AttrValue(part, "P/N_1")* o' T/ ?9 ]+ R0 K' i+ Y3 E9 j
            value = AttrValue(part, "Value")   
/ Z4 n& Q/ E+ B+ }/ w' v            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")
( I" H( g* ]1 U+ {0 w4 a. n' J            sysid = AttrValue(part, "SYSID")' \+ r& E: i7 r
            qty = qty+1" I5 z+ d5 f! @
            symbol = symbol + part.Name + ", "3 K( n8 o1 ]) e& C9 G7 M6 K2 ~
        Next        
( y' b/ q; i" Q$ K/ W& H& s        symbol_len = Len(symbol)5 N; W4 r5 F4 B. f, X
        symbol = Mid(symbol,1, symbol_len - 2)
& J# F" @" `$ X/ ]; `        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
1 Z! m: {) {" n" b: f( V        Print #17 C. ^/ y0 X2 }* S
    Next pkg
0 Y' Y  D5 D' p. m: F5 W2 K    StatusBarText = ""
1 G. }0 _9 K( B, F5 w    Close #1
% P/ D' S8 D) t9 f+ z    ExportToExcel( r! J( I9 A- R; ?1 L( y( ^" \+ p; R
End Sub9 C/ B/ S. ?& i: i$ i1 [& A) V

# u. D3 h; H* h! f( C# i+ S4 VSub ExportToExcel
$ y3 D0 w' P8 J: R) }0 M    FillClipboard/ N5 K1 L$ i! c/ F3 Y
    Dim xl As Object& B5 l. I% i5 i. W3 T, {
    On Error Resume Next! ?7 l6 q8 B7 f7 s
    Set xl =  GetObject(,"Excel.Application")
, q  \! l3 T9 q7 y    On Error GoTo ExcelError    ' Enable error trapping.
. j) N& Z' C; m" \; F: E    If xl Is Nothing Then+ t7 n* \2 [7 A! v9 R. _5 @
        Set xl =  CreateObject("Excel.Application")4 b  P/ Y$ N! _0 ~, _
    End If/ o6 x2 B! I: _
    xl.Visible = True
4 Z" _7 C. r, ?" }+ ~! _$ b6 P) F    xl.Workbooks.Add7 x& R, Z" t* n# s
    xl.ActiveSheet.Paste
3 K: d4 s8 P8 ]    xl.Range("A1:I1").Font.Bold = True
# r$ E/ p- c4 {7 U    xl.Range("A1:I1").NumberFormat = "@"* N/ |+ C3 `* L0 v8 }
    xl.Range("A1:I1").AutoFilter
5 [. B; Z) h: E- h5 q    xl.ActiveSheet.UsedRange.Columns.AutoFit+ R: N/ W# d6 A
    'Output Report Header( j6 [( v$ \- ~9 B
    xl.Rows(1).Insert. ?7 B0 Y" Z, F9 e- c2 b1 G9 w/ d- a0 J
    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now
# ?3 @6 k; r9 A2 _' X" ?/ [    xl.Rows(2).Insert2 _' h, S( d2 K
    xl.Rows(1).Font.bold = True4 j4 J9 j  h# f) c+ M! \/ }. }
    'Output Design Totals
3 h% {/ y! C, n    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 1
9 c# p4 ?# `$ _0 W    xl.Rows(lastRow + 1).Font.bold = True. D$ t6 h; z% Y+ {3 v9 A
    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count
6 y/ X8 V$ U4 D$ C' T    xl.Range("A1").Select
3 |- P5 b$ ^$ W& P    On Error GoTo 0 ' Disable error trapping.
9 \% U1 \# c! H8 X0 r4 f- t: U    Exit Sub   
" W. b# p9 T/ `! `- \  w6 y9 j
" R2 P# C  r% ~0 \% tExcelError:
: }  ]7 \6 [& [6 f    MsgBox Err.Description, vbExclamation, "Error Running Excel"
8 M0 {3 ]. ^3 ~$ [5 o5 M4 P" D    On Error GoTo 0 ' Disable error trapping.   
, E0 F  D/ m0 }# {+ h+ b* z    Exit Sub
# e) X' D3 E5 Y7 n1 c6 {End Sub
3 _  b$ R2 x5 p/ c* r" F" o5 R' L3 w- \4 c% u
Sub FillClipboard3 z  f2 ]8 U6 @
    StatusBarText = "Export Data To Clipboard..."6 ?9 _$ N! p" i' i7 s: b1 F2 J
    ' Load whole file to string variable   
) x1 I' E* I3 g. \7 `    tempFile = DefaultFilePath & "\temp.txt"
4 [# g, s, ^4 w% ?    Open tempFile  For Input As #1
6 ?0 b1 @" n+ O  K% f    L = LOF(1)
4 C0 F/ {- Y/ {/ ~  H    AllData$ = Input$(L,1)
/ a  v1 g7 e6 j. s9 _    Close #11 K9 `/ u% @4 K$ H1 r
    'Copy whole data to clipboard# h# T- I6 C4 h4 d; e/ v
    Clipboard AllData$
* C. A; G+ l7 Q( @    Kill tempFile3 v% b- ~0 H) h6 w% ~
    StatusBarText = ""0 s: E" K9 w/ q; ]2 T
End Sub4 c: a2 o1 ?9 ^
Function AttrValue (comp As Object, atrName As String) As String- l. F+ g* J  ]* m  ?
    If comp.Attributes(atrName) Is Nothing Then
6 v, I; T0 y& t' v. h        AttrValue = ""
  ^9 g# W& b" i+ ]+ N" d    Else
1 Y9 I6 I$ w! Y5 n0 I        AttrValue = comp.Attributes(atrName).Value% C8 Q5 V' L  u
    End If( u1 ~, R: G' Q2 `( u. c2 d' Z
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)# h4 U8 d" Y# [
        symbol = Mid(symbol,1, symbol_len - 2)5 A  n$ {/ O- H! J9 \
5 N0 G4 H$ ^- x, ~# J
这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑
! L) f* y2 z* K/ x' R+ r
5 G" I; Y5 ]- g难道是数组:---
  K* T0 o! u2 l: J. S  j多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组: - F) P6 }2 T  F. \

6 j; Y7 W4 I" `# \8 ZDim A(10)3 m# I! i  N2 K7 X' Q
虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。
3 G# s( T3 X6 T; l) V: ~" W, O7 T$ i
在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示: ' @) z4 r  Z2 X- Q4 S. B
, N' z; c2 W' t& E( A, R* l2 M; v
A(0) = 2567 n8 B( _. m. ?* X2 l
A(1) = 324
7 X" p1 K7 u. e. G; r% o/ w" ]& e A(2) = 1000 q& o9 F# ^7 E' P- R8 W$ N5 _
. . .
( H5 e. J  @' c- x A(10) = 55% Y. T6 o/ U! N7 m' T, P
与此类似,使用索引可以检索到所需的数组元素的数据。例如:0 a/ _! W* ]. J3 t
. y1 g" [  }1 R9 V  `* }
. . . : F8 \6 }2 |0 z; `
SomeVariable = A(8)  
4 e0 v- G3 T: W* V. i . . .
; K# b3 a& o' y* e8 t( F数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组: 2 A- Q# S8 A+ f1 Z: W5 l; ~

4 F/ |/ A$ N$ ~1 M( h' ?+ p Dim MyTable(5, 10)5 N: D$ n% q& C) R
在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。
" p' _3 m; u# {8 k0 S$ I' j
5 N1 p8 N! F. d$ M9 z6 ^$ y( q: D: R6 n+ Z9 X

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥
; b2 C- [+ N; ]
4 W- l% y' V1 u, R        Next        % W. A: ?0 \+ U; h6 l; r
        symbol_len = Len(symbol)& f# E, p$ |6 Y% }# p
        Print #1,symbol_len;& P. W" [, R* ^8 T, _$ S
        Print #1$ H+ K2 c4 n9 @% o" o
        symbol = Mid(symbol,1, symbol_len - 2)" }6 t) U/ f( P; l5 i2 k9 e
        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;! l7 g, Z# N# O, k
        Print #18 z  O  C( I% O3 J& |; x: A, s. X7 F- l
    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意$ z1 l5 f2 U4 G, X( Y

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:59% I8 ]2 W7 O# N0 Z2 C" Y7 W
EDA_BOMHelper花式出BOM,总有满足你的。
8 z$ J% c2 Q/ X4 r% G+ M$ i
嗯,有空研究下
# ~: y3 u  s! W! e5 l- j( ?9 S4 l
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-5-29 23:05 , Processed in 0.066872 second(s), 39 queries , Gzip On.

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

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

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