找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 93|回复: 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 | 只看该作者
网上找了一个8 a- g0 X( F  \: @, a6 ?* K: ~
Dim fn As String) x3 q* a& v/ S1 X4 W3 X7 ~
; i6 f2 B6 G* Z' c* E6 |
Sub Main
3 [9 L; c! U( l5 d) Z    fn = ActiveDocument
0 u& }4 b& V3 M* L. Z    If fn = "" Then
% w9 k3 @2 s- {0 \: K+ U6 P  p+ ?- Z        fn = "Untitled"5 T( o+ h3 G. `/ t7 p
    End If
4 N2 ^& ~- p9 q% i# B
/ P/ e# s2 @6 }( Y% u; }    tempFile = DefaultFilePath & "\temp.txt"
, b6 J1 T( ]! q. x- G    Open tempFile For Output As #10 Y: T  @& w& H$ C( i
    item = 0
+ j* b/ L3 w( E7 p6 Q# b! z    StatusBarText = "Generating report..."+ O6 t$ m' L7 i& f3 p8 }* P% C
    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 f7 z* q, K/ i, n: t: f& b
    For Each pkg in ActiveDocument.PartTypes
3 I' ~+ i  J! K) U. n        'Print #1, pkg.Name; vbTab; note
9 R' x# z. [, d- }        qty = 05 G9 D) E3 H0 g& r
        value = "") n  J/ \2 `9 X0 Z5 Z) ?: V: a  E
        description = ""
" Z- g% m( C: D3 i. i        manufacturer = ""
6 q$ b+ Y) a( o        pn = ""
- M. g# `6 e4 b4 O# r, p        manufacturerpn = ""6 S% l- r6 v% e' f+ Q+ z) [% U
        symbol = ""' L. w* r- a3 a2 o5 g1 I* P
        item = item + 1. r( u( J: E0 ~* L
        'Print #1, item; vbTab;
4 R7 E) X9 i0 W% x+ D        For Each part In pkg.Components9 X$ m& Y% ?( |5 ?+ p+ O
            value = AttrValue(part, "Value")
3 w$ x+ p# i, f7 c. U1 U  G7 U1 F            description = AttrValue(part, "Description")
3 m8 I! O& e7 A! u& i% T            manufacturer = AttrValue(part, "Manufacturer_1"): P" n8 n8 n" S* T7 h: {7 m9 A7 q
            pn = AttrValue(part, "P/N_1")
$ ~( r0 d2 Q2 Z0 H& f            value = AttrValue(part, "Value")   
2 S+ W3 [9 R3 I4 F& T8 L            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")
1 h  T% J2 F! [7 ?! `1 H            sysid = AttrValue(part, "SYSID"). f7 h, G7 F$ v+ B8 ?/ D4 |
            qty = qty+10 {  B/ S* M. ?/ M9 P
            symbol = symbol + part.Name + ", "
: V) x1 h" r5 m4 X! `' \" b! e9 r9 O5 _        Next        " F& k1 Q- p0 X  o* p% F
        symbol_len = Len(symbol)9 K1 S5 G2 H+ }
        symbol = Mid(symbol,1, symbol_len - 2)# h- i7 b$ v" k, x& v% D  L
        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
2 s5 o! T5 K, k5 X# \* s, J        Print #1
4 l; ~# A4 C$ x    Next pkg
  _7 a4 ^4 ^+ K  P: U& u    StatusBarText = ""
# J9 ~3 G$ M. @5 n4 s# U! F! z4 I    Close #1. Q  i- Y6 R5 V. o8 o) @) N" a
    ExportToExcel
, Y8 Q4 f3 R) L8 s+ Q1 ^& l0 REnd Sub
7 Z8 ?# ~. P, k/ ~& A1 ?
& d! w' ?" o8 o0 S9 U! I% }Sub ExportToExcel# V; V/ x" H  i' |
    FillClipboard
6 x! b5 H, y( y+ r, y- S    Dim xl As Object
# R" h5 J" v! {$ V4 k$ F; A    On Error Resume Next& P. b: r0 u% I
    Set xl =  GetObject(,"Excel.Application")6 n. N- D% E& n' i
    On Error GoTo ExcelError    ' Enable error trapping.$ \+ h) r. e; S7 C3 b
    If xl Is Nothing Then' b: j, ~6 D3 u9 U. ]5 b
        Set xl =  CreateObject("Excel.Application")# J" `  ?5 K7 ?: c2 ?
    End If. u4 e. h) I2 U5 V! n4 M: q
    xl.Visible = True
* Q0 I$ x& f# p6 u    xl.Workbooks.Add
# Y2 h% i4 \! ?9 t% U, C: ?    xl.ActiveSheet.Paste- C$ o9 T( U' u# M& a
    xl.Range("A1:I1").Font.Bold = True( x  S+ F" c' E" T
    xl.Range("A1:I1").NumberFormat = "@"
: `) n. Z3 ]0 a6 b; B) |    xl.Range("A1:I1").AutoFilter
% J/ P5 j& w  p    xl.ActiveSheet.UsedRange.Columns.AutoFit/ `+ i' m) H7 k0 V/ I
    'Output Report Header
0 }  L9 x, H1 i7 Q4 i5 e    xl.Rows(1).Insert2 W% w" t, s5 P: M5 Z& d0 V# j
    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now- |, c% x" t, A
    xl.Rows(2).Insert
/ @/ {# H  w% Y) y# T    xl.Rows(1).Font.bold = True4 f! D6 s4 Q; F% @# D! [  v+ c
    'Output Design Totals
: h9 g; Z) J4 `' T3 t8 ~' {    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 1
; Q+ {" J5 @8 {    xl.Rows(lastRow + 1).Font.bold = True
0 b/ j: [7 {- G) m7 `9 `    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count( j2 a5 e" w( u5 h) C4 j/ A0 q
    xl.Range("A1").Select. g2 J* m: b9 e- \5 j
    On Error GoTo 0 ' Disable error trapping. / `2 l, J  |5 s  ~
    Exit Sub   
+ d/ E1 u8 k% v# ^, S4 r! @: t- Y( H; s" m" f3 u' L4 H0 |4 X
ExcelError:
8 \. C: G9 |* `4 k1 @6 |, \    MsgBox Err.Description, vbExclamation, "Error Running Excel": r- W! M2 ]. d1 _
    On Error GoTo 0 ' Disable error trapping.   
# h! q% q4 D0 S    Exit Sub
) [. i+ O$ Y1 I6 @End Sub
1 }. ]1 w8 q9 U. v0 Y- D* B  S; v* N8 ]7 f, o- o# b% l7 z) n2 f
Sub FillClipboard
8 h% G( b* S8 b    StatusBarText = "Export Data To Clipboard..."" M2 Z' |/ o) l  X. s, w5 _! ~
    ' Load whole file to string variable    $ @1 I: e0 Y# M% |& v
    tempFile = DefaultFilePath & "\temp.txt"
4 y6 E) e, n  h/ S    Open tempFile  For Input As #1' M6 n2 m) ?1 z; v/ Y) r
    L = LOF(1)% \6 L6 F+ r5 m) }2 Q7 F
    AllData$ = Input$(L,1)% z* P3 p, ^4 Y- b9 q4 E
    Close #1. x& V# p' _6 R3 H
    'Copy whole data to clipboard
& M& B; Q: f7 a+ u# x    Clipboard AllData$
9 }% }" l% Z" R    Kill tempFile" i: [& J" n* [' Z$ V2 n6 V$ a; S
    StatusBarText = ""# s8 T8 R! A  D9 \2 f, k
End Sub
. j' ~1 |; A4 P9 AFunction AttrValue (comp As Object, atrName As String) As String
6 A! ]& |( o2 T# @3 L: |    If comp.Attributes(atrName) Is Nothing Then* d* {6 T. L" x3 K+ P$ h
        AttrValue = ""
/ x  Y5 t$ ~9 |3 d    Else! X( Q6 O* u3 b# O4 D5 d- z
        AttrValue = comp.Attributes(atrName).Value
4 o; r6 }+ Y* j  `    End If
; I" Y, t8 M. a# u( GEnd 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)
& u( O! \+ p* I4 C, R  c7 {  F        symbol = Mid(symbol,1, symbol_len - 2)2 Y* b" Q: p! S. b, N

/ I7 M- Q, k" P这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑 * G8 @! q' N5 \# c" o

% c& \' }- t0 t0 u3 t6 n( p5 @2 |! k# I难道是数组:---1 x: n+ k4 v" C4 q
多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组: ) d! Y' [& C1 V7 d3 c& a2 V" E2 a: S
, x1 |+ t/ i6 t
Dim A(10)$ g. s2 E9 Z8 W* c
虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。/ y6 n9 V5 w. Y( r7 z; _. c

3 V4 E2 }7 [% m! Y, D在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示:
+ V% B- B) }4 |6 n) ]" i4 }' h, H5 c! q% L4 O) V! `( t
A(0) = 2566 d' S; ~5 j0 a* z8 a  L2 l6 Z
A(1) = 3248 V* N+ }  l7 ]
A(2) = 100
* I7 _) e" K% P# u9 H . . .3 P$ W$ j" J/ s' C  ~
A(10) = 55
6 E+ z; j, x6 P% b: [与此类似,使用索引可以检索到所需的数组元素的数据。例如:/ V$ u. \* u) I0 w8 _$ b4 z
% }0 H  R$ E, i2 S; X' U/ Y
. . .
6 z, F1 n0 Q! R& R( W# B+ W SomeVariable = A(8)  7 u/ t. A3 d$ [  D! c, A
. . .
! e6 m# b; }* B" ?数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组:
* s) |1 z) x% m/ \3 a6 |* z8 C, R6 z% m
Dim MyTable(5, 10)) E5 |8 m+ J" i1 ~/ V
在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。0 G, P5 n9 C/ M/ [

: t, F: O3 @+ ~8 @& V8 k+ u/ ~' B5 G  q; b) `

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥* d* U, K- n' A% F$ u  J
0 h. Z6 E$ e$ ?" z% e
        Next        $ ?4 Q% m4 W5 Z( }4 W  [
        symbol_len = Len(symbol)/ P: D+ B; }! K8 u
        Print #1,symbol_len;
8 L" i8 @5 h: U) i) d" r        Print #1
% p3 P3 j: K6 H7 t        symbol = Mid(symbol,1, symbol_len - 2)
) j' h' w4 R5 f5 D. A/ f        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;) X2 s) U- ?5 c( Z
        Print #1
; J6 I7 d* @# \; J) X4 [8 W    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意, x8 N$ O' r/ K9 t' @

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:59
- c- M% X0 a7 u' n- q6 u5 kEDA_BOMHelper花式出BOM,总有满足你的。

0 m& W$ H5 x2 G7 ^! A嗯,有空研究下4 W0 t+ c! n( n7 b; j8 g8 X
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-2-19 05:58 , Processed in 0.065356 second(s), 39 queries , Gzip On.

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

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

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