找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 105|回复: 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 | 只看该作者
网上找了一个+ v8 @1 I# C' u! C0 x
Dim fn As String; F6 O! }& {0 {5 C' t

. N( i* d5 u" T9 }: W8 E  I' GSub Main
# W  E$ s. p; S3 }0 u6 }: m* ^$ k    fn = ActiveDocument
: a% m! C/ J/ B4 J& Q# L    If fn = "" Then
/ _& [& @! m$ l& v0 v* y  C% L  {        fn = "Untitled") G0 X* f. d4 Z5 w+ q
    End If) g+ Q% r- E1 {4 @% L5 p

# i! [9 W; P  n, z& q( S+ r9 F    tempFile = DefaultFilePath & "\temp.txt"
+ P; y* d* w2 u0 ~    Open tempFile For Output As #1; w+ T$ a4 Z7 O: _' s2 _
    item = 0# s4 G0 ~& S0 }" O2 A4 ]
    StatusBarText = "Generating report..."9 x8 a2 k/ H5 U: h
    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"- H0 Z5 j9 v3 S6 C; I  I
    For Each pkg in ActiveDocument.PartTypes
( e+ |* {% d( l# l        'Print #1, pkg.Name; vbTab; note
1 p5 w! R# u, ^+ r0 p9 G! w- b8 j        qty = 0
. L5 [7 j* }% V        value = ""6 f- U8 }3 y9 ~8 ]6 H
        description = ""
7 J* \, }9 {: r2 s4 Y' w        manufacturer = ""' W! i, `' B4 P" G% b& n% L2 r
        pn = ""
) v+ @/ h7 \  {; C        manufacturerpn = ""
  `6 T  k, Q3 Q2 n9 U, i: ?- [        symbol = ""
2 c+ P9 r/ p7 P% T" D        item = item + 19 i8 I' x' b, ~
        'Print #1, item; vbTab;
1 v1 M! ?7 V3 E4 G: q3 w        For Each part In pkg.Components9 a1 t7 }1 ]0 V6 Z7 ]$ N: H/ {
            value = AttrValue(part, "Value")# Z" _& v# |2 s% I. \
            description = AttrValue(part, "Description")- h4 ^* n3 g1 ^! u
            manufacturer = AttrValue(part, "Manufacturer_1")* ^+ C5 i5 K3 N3 G! j2 y; i
            pn = AttrValue(part, "P/N_1")
' d, l9 ]4 r0 L2 o! v8 g            value = AttrValue(part, "Value")   
8 {- S5 R  Q' B            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N"): g4 V+ C4 S* a/ z- Z
            sysid = AttrValue(part, "SYSID")
; y* b( f! u3 ^4 C            qty = qty+18 d9 X* k! M' ~& @
            symbol = symbol + part.Name + ", "% ], w' T: E$ R# t1 D3 ~3 |
        Next        
0 E9 Y# {$ O) I        symbol_len = Len(symbol)
. ?9 u( \- L) c2 q) ~' ~; B+ d        symbol = Mid(symbol,1, symbol_len - 2)
( ]9 P* S) L9 t5 L! r2 |        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;% P1 @1 _) P: f5 O
        Print #1
  z  W7 Y0 g6 K8 Z6 |    Next pkg  _; P8 R. A$ P: ^5 r
    StatusBarText = ""
9 O+ ^1 L! |, M- f, V8 ^3 r- _    Close #1- l$ H' g# t$ w! [
    ExportToExcel8 c3 U0 I9 a0 l" B3 S
End Sub/ n& Q2 D2 j2 M& c
* A& K$ n7 D$ ?6 C7 Q. d
Sub ExportToExcel
8 Q! q: ~7 v: U    FillClipboard
* N/ l- {# [6 J- ~( r  y' j    Dim xl As Object
* g+ ?5 N$ E* z: ~. ]4 w    On Error Resume Next
/ |% q9 l/ m  A5 y' M    Set xl =  GetObject(,"Excel.Application")( G# f9 X5 T4 F' ^8 \$ X+ e0 \8 l
    On Error GoTo ExcelError    ' Enable error trapping.. y- G, Q  [+ j' y6 H! ~/ u2 r) W
    If xl Is Nothing Then
/ W" U" S# D% L# |4 L, W        Set xl =  CreateObject("Excel.Application")# M. T7 p- B$ y/ V7 F$ J
    End If
" D( L6 g2 y; l7 u1 s6 ^2 p    xl.Visible = True. M* h' n, O, T
    xl.Workbooks.Add) k& x: f" q( V5 z3 c% {+ {' ?& \$ m
    xl.ActiveSheet.Paste: `" `6 n4 c6 `+ {; s) p
    xl.Range("A1:I1").Font.Bold = True) ]! k* G/ D# S
    xl.Range("A1:I1").NumberFormat = "@"
6 f0 z7 Z0 s1 l- z- s* Y    xl.Range("A1:I1").AutoFilter. v' n* \& A0 q9 X9 y
    xl.ActiveSheet.UsedRange.Columns.AutoFit* V. o; K1 _+ A6 R  C
    'Output Report Header" W+ f' `. P- O* m
    xl.Rows(1).Insert" I2 x2 \4 B5 i
    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now
0 Y% _5 u- |. _3 R    xl.Rows(2).Insert
2 F& U! e$ V4 F! G    xl.Rows(1).Font.bold = True
- W# O' t. x8 V' m& S( H8 g2 v    'Output Design Totals. H! I1 }' I" u$ }$ K0 E1 K1 E
    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 10 g+ ~5 B& j5 `" B5 P
    xl.Rows(lastRow + 1).Font.bold = True# e1 p; c1 b) K/ D$ L
    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count
" d% q) ?8 i* @- {    xl.Range("A1").Select
! N7 D* v; M$ S7 R3 x& C  r    On Error GoTo 0 ' Disable error trapping. ; W. ~* `/ g; j
    Exit Sub   
+ L1 |3 d% p8 ]* U7 x' D# ^8 r8 t  @% f2 `
ExcelError:/ b: K( f' K7 I+ V, S! `
    MsgBox Err.Description, vbExclamation, "Error Running Excel"% h) O3 B& [( I) C$ W2 F
    On Error GoTo 0 ' Disable error trapping.    3 U! `+ Q& s0 K
    Exit Sub# K1 M+ T7 k( n3 ^7 U, L: ~' {6 ^
End Sub& [1 a4 ~0 Y# a
- @3 ~  X4 Z2 F2 z! b
Sub FillClipboard
& O. s: ]# \$ f9 }6 c    StatusBarText = "Export Data To Clipboard..."
8 y; v0 u' a9 G! n+ M8 r    ' Load whole file to string variable    . K) L) d& P# G) W2 p: O
    tempFile = DefaultFilePath & "\temp.txt"7 U* {' ?! x, E; ?) @- `' z) |3 L
    Open tempFile  For Input As #1
" U3 |: M, S2 O/ j2 s9 C, F6 Q$ e    L = LOF(1)) B: r8 m0 s0 ^  X& ?
    AllData$ = Input$(L,1)
- p+ M5 ]; [+ i5 u0 H) l/ {+ `/ i    Close #1' E4 M1 [+ C. D
    'Copy whole data to clipboard6 R6 c4 f$ F( d0 {6 z  Q2 m4 i! g
    Clipboard AllData$
% c& R4 p* h0 G: k8 a$ x    Kill tempFile
8 Z) d; L  N3 w$ h/ g    StatusBarText = ""
8 v5 k! o" i3 N8 \End Sub
* M) N5 ~) W7 r# H- z0 T8 X, I4 P& nFunction AttrValue (comp As Object, atrName As String) As String
) G: c8 @/ ?4 `! E- k    If comp.Attributes(atrName) Is Nothing Then
/ [, n2 x; H5 T' N8 l% K: p$ d, \        AttrValue = ""
! d( Z0 w- Q5 a+ ~9 S    Else$ j' P9 r4 N5 P* L! j/ o. f8 k
        AttrValue = comp.Attributes(atrName).Value
1 c, p$ |% p( o8 O; }1 v6 _: m    End If- O- @3 W  z& ]: T4 m/ u1 y
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)
& F  L* ]$ Z: ]- \  q        symbol = Mid(symbol,1, symbol_len - 2)
, i( N! |0 W' H: q' ?5 }7 A' ~
/ o, M9 k- o6 e6 [; H/ w( e这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑
$ C: O8 Y, z, f" J( R
& C8 m) Q" `; j" e; P& F难道是数组:---1 [- x' @( R* X1 T& z* S
多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组:
! J, R: V' j1 E& {9 Z% s! |( U5 y
" A# m" X$ k  T, _6 Z* RDim A(10)
  l3 |5 g1 d7 p& t3 \5 a虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。# {) E5 u! A# ?1 U

& s) x  c/ R; j) ]在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示:
  o1 I2 T, T4 |# L6 w$ g0 ?- I3 N/ {# s) w0 U, G$ n  n8 A6 j! l1 d
A(0) = 256
5 ]8 f% U3 k+ R  E A(1) = 324
6 @0 ]/ l# y) S A(2) = 1000 F, u4 P! ^1 T2 H; X+ e
. . .% `' o8 k" W$ Q/ \. x, M
A(10) = 55
* \2 @+ H# a- h8 U& C1 s与此类似,使用索引可以检索到所需的数组元素的数据。例如:' N. ?: V( |/ u: _8 A+ J7 b# q
: {2 d9 l, B7 v0 q5 p
. . .
1 w6 W% J- O* i. s SomeVariable = A(8)  
5 `( P% J. j) ?4 a4 N. {% }8 B . . .
8 `7 c, U+ j4 p. q& {9 C% V数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组:
9 f- W- i) ^1 E0 B$ K4 K# _# F6 H( ?9 e/ n# |+ R* J& q
Dim MyTable(5, 10)  o. V! V1 J2 b  j3 w& Y4 S: p
在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。
/ h% j9 k1 j# g* M4 E2 b- |5 q) p# N% w  c* a; `5 \
5 e$ I( B4 _! Z7 i/ m* d

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥
* O+ [6 [, T: o, U
% C0 J; E$ @! H  o2 J: r& _( m        Next        ! ?6 ?& ^9 d" Y$ g! S1 Y
        symbol_len = Len(symbol)+ k8 m* a/ g; q9 m, r
        Print #1,symbol_len;7 C' b2 D% R( w. o- e* d
        Print #1
( \' k" I* \  q6 J  F        symbol = Mid(symbol,1, symbol_len - 2)
0 G) F' B7 ]. d0 f4 x        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;/ N% l  Y( S+ i1 H) H  h* j2 Q
        Print #1
/ k$ l, S0 p, p& J    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意- x8 h" I3 }" ^# @! p

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:59
+ t9 k2 E0 ]( `; i' bEDA_BOMHelper花式出BOM,总有满足你的。
& O, |8 Z; ?- t" o/ K/ r" c3 ]
嗯,有空研究下
1 \/ D& N; T- f4 Q" b
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-5-24 16:30 , Processed in 0.070303 second(s), 39 queries , Gzip On.

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

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

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