找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 88|回复: 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 | 只看该作者
网上找了一个; G! }1 i) Q: u
Dim fn As String
5 o  J6 z2 h" u( e& Y6 J
, Q5 q# o  v5 ]& j3 nSub Main8 z# i* m6 n1 |
    fn = ActiveDocument
! ~( f# D1 G5 a    If fn = "" Then
0 I4 F' Q* e: p1 x- M. D2 a, t        fn = "Untitled". K. u' p/ ^, K% S7 a
    End If
5 U, ]1 z& _( C: S- A9 r) ], ^3 r+ E5 }. m8 Y& B
    tempFile = DefaultFilePath & "\temp.txt"
- J  P( J# m4 Y    Open tempFile For Output As #11 x2 ^. A3 r3 ~& c3 j( k- \" y
    item = 0
# e' o) |8 C2 m: H9 E# g1 C4 R    StatusBarText = "Generating report..."
# L, F* ]3 Z, P- N! R1 i    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"
, H% N$ t1 \+ h' P    For Each pkg in ActiveDocument.PartTypes/ B" D6 r1 H0 M4 T7 e6 A9 {( p
        'Print #1, pkg.Name; vbTab; note
& l; ]8 t+ {8 U" [( e9 R; s        qty = 0% _% N$ r9 _7 z; ]3 j
        value = ""
; _* l2 |5 K3 k0 n! D1 B, f" L        description = ""  V4 B5 j/ m# n* d
        manufacturer = ""
) i. C: E5 e, d, ^3 I        pn = ""
' e# e1 h1 ~$ [, o% O- y0 _        manufacturerpn = ""
& F4 b, p* P: c0 S* P* @        symbol = ""- a3 p, k* q; ~
        item = item + 1
9 @# R8 K6 O* K' B* x        'Print #1, item; vbTab;
  {- l% _: |7 C( `. L3 D2 T+ j        For Each part In pkg.Components" f  |" R" X$ K$ M
            value = AttrValue(part, "Value"). T; u8 E+ C% f/ K& {( W; Q
            description = AttrValue(part, "Description"): Z; `0 i1 t$ r$ ]& T5 Q; Q
            manufacturer = AttrValue(part, "Manufacturer_1")
. g( d) H5 z  |) Q            pn = AttrValue(part, "P/N_1")  c; H! f3 G8 U
            value = AttrValue(part, "Value")    & {, I3 p( c: H, C/ B, \. l! g. n
            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")8 g( I& K0 ^" x* V9 h+ U5 y
            sysid = AttrValue(part, "SYSID")
- h/ f# Z$ t. s& l5 Y+ V            qty = qty+1: c& h$ `% S* b! h; t) v# ~6 b
            symbol = symbol + part.Name + ", "- G; Z3 H5 a1 y9 M( D# K
        Next        * O: b4 k5 O# t2 I% t0 q& a
        symbol_len = Len(symbol)5 r) N' T/ P; u( e% E; e
        symbol = Mid(symbol,1, symbol_len - 2)4 H% ]  A) i3 J; L& u
        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
7 `4 S8 E+ A. V* j& T        Print #1
+ ?+ H* U4 t% V: F; B- G    Next pkg5 |" P- p* P) X4 v' k  u
    StatusBarText = ""
- G7 B( q. e: U3 r4 E    Close #1
  ~  T! i/ R9 K: |3 W( l. o* A    ExportToExcel
' `9 ~& s' G( C( M, P5 J9 V/ B# LEnd Sub
0 {( u  j2 c$ {( s7 N. g+ p& e$ C; F2 I0 j7 B
Sub ExportToExcel
8 N6 s3 T! ~, o' S$ ]9 X  H    FillClipboard: C' _4 Q; Y  z9 O/ ^4 u- @
    Dim xl As Object' ]6 }& Y) e' k$ A  q/ K% {
    On Error Resume Next* I* }* e9 r8 o: ^- F5 C
    Set xl =  GetObject(,"Excel.Application")
: |- |1 b9 @6 N% f    On Error GoTo ExcelError    ' Enable error trapping." J2 c  y: ]. ~& n6 j; h9 H
    If xl Is Nothing Then
9 R. }7 g- r* Q* n# V& P* Z0 C3 Z5 ~        Set xl =  CreateObject("Excel.Application")
9 S# [7 f9 u1 O    End If) q6 t. m* W* m1 ?, ~* I
    xl.Visible = True; F" L, i2 }# f' X- N! |  c
    xl.Workbooks.Add% ~+ ~& X* j1 S+ d& l
    xl.ActiveSheet.Paste- x0 A+ k5 ~! S8 s, W
    xl.Range("A1:I1").Font.Bold = True2 F1 E+ Y! Y0 o9 D
    xl.Range("A1:I1").NumberFormat = "@"  R" G) c2 O3 o6 _7 {5 l
    xl.Range("A1:I1").AutoFilter
% ~% m  z" n& Y+ l+ H+ y    xl.ActiveSheet.UsedRange.Columns.AutoFit$ k$ x, k( t- O* l/ g4 H2 w2 ?
    'Output Report Header
1 V8 e; V0 N4 M    xl.Rows(1).Insert' y. S' B: o9 L6 [0 P7 `9 t
    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now
6 p+ n" T. P8 j    xl.Rows(2).Insert. ]- B1 O& u$ H! d. F
    xl.Rows(1).Font.bold = True+ Q/ }  U2 V5 }
    'Output Design Totals  l; O5 Q6 n/ L& ]
    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 1
8 K8 U. \" }5 y/ a  {4 Y    xl.Rows(lastRow + 1).Font.bold = True% H. Y* Y. E, c! }
    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count2 s) a7 I7 e. e- C4 t
    xl.Range("A1").Select# Y. E: p) ]/ d! V4 U2 Z! C) }/ [/ J
    On Error GoTo 0 ' Disable error trapping.
7 @7 `& b8 q* E- w/ S0 L! y) |    Exit Sub   
5 W- E% N: H3 s) b  L
! D0 L/ M/ T; C$ t: [1 Z& EExcelError:6 }: M" l, i1 S, `
    MsgBox Err.Description, vbExclamation, "Error Running Excel": q) h6 x  X$ g/ C$ ]- I+ T1 `
    On Error GoTo 0 ' Disable error trapping.    0 H: b* e! Z5 x3 _
    Exit Sub6 a! i4 X% U- w
End Sub
& L- q: x  H1 t& l+ B: ?7 V- L; I, M6 R5 g  a- V7 E
Sub FillClipboard! A1 z/ y3 r6 Q! \5 t. r5 S2 k
    StatusBarText = "Export Data To Clipboard..."$ _4 ^4 b3 o, r' s  g# X$ d
    ' Load whole file to string variable    4 e8 L; h- k9 a# y  {4 O$ u6 m" L
    tempFile = DefaultFilePath & "\temp.txt"- g0 i: d3 I  _) X6 P& v4 z
    Open tempFile  For Input As #1
2 L* {0 q$ q; y2 j. g0 J7 g    L = LOF(1)( V- u7 T8 T$ O' u
    AllData$ = Input$(L,1)
' `5 P* l# v% s1 d" W    Close #1
7 h: E* v4 V) w. P' ~4 H" e    'Copy whole data to clipboard4 Z! L+ c, h" f: b
    Clipboard AllData$
# B5 }8 O5 p' h! x: u% {  s    Kill tempFile$ A' Y8 _" a) k0 e; M
    StatusBarText = "": Q: {$ I, g. Y. _
End Sub2 l7 I% B/ }% C+ E# P# q
Function AttrValue (comp As Object, atrName As String) As String
( I  V7 k8 x( d+ g$ b! ]    If comp.Attributes(atrName) Is Nothing Then
4 B! H4 E$ Q) f+ e+ \4 I        AttrValue = ""
9 G+ A  R5 a; b' R4 N* e    Else; c) s' m3 }  e0 q% h" J0 v
        AttrValue = comp.Attributes(atrName).Value
9 M1 C& W% q6 Z9 f" k+ K    End If
: x) z( z0 L! BEnd 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): [2 s* F- Q3 h6 m/ A( `; h
        symbol = Mid(symbol,1, symbol_len - 2)) B; n) \/ s$ Z! o, H$ R. H

* W5 N4 x8 ?/ {( B! l- h" z这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑 ) g: @1 `; \0 @# q+ \  _6 o
- a, B" t8 a! ]6 p, T$ E3 o
难道是数组:---2 ^0 c$ x& ]7 R- V
多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组: * l, q& v$ Z0 B
6 r* a5 b. N( _, a1 N& \& T
Dim A(10), v' P: Y* Y# g0 J* p( Z! J: }
虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。
9 k! U1 V; y& ]( p% K
1 c( Y: G" l4 d在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示:
* _8 `/ O) t# h7 H  T6 D+ ]/ W- ^) N9 j# F$ M& N, j
A(0) = 256
; h6 V  e1 V5 C' M4 r A(1) = 324
  d) x/ ?. L' Z  B+ J6 v A(2) = 100
" p0 x: m" l8 {) E8 B5 a . . .
0 S# @3 T# a  K4 H4 ? A(10) = 55- V5 D& V6 J9 w
与此类似,使用索引可以检索到所需的数组元素的数据。例如:# u& Q$ M7 h; C3 O2 B
  j+ h- W% J1 t9 t2 C) t
. . . % \/ b) X1 W# o  p8 J, _/ \
SomeVariable = A(8)  7 g# N# e3 U( Y  D/ {  g
. . .
% y/ v4 A9 p% d& [& {/ T4 D3 x数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组: 2 J7 p" \$ ]# G2 l1 A

/ K( |2 K4 f7 u7 C6 D2 d Dim MyTable(5, 10)
8 C7 T" q+ ]/ B7 k2 V3 D% S在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。
7 w+ Y4 F/ t1 Y8 o
; ^& x* x/ Z" n# E: \  Q! e) M3 ^4 V% _# X' s( J7 r3 t! \

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥) B% I( z! m& n0 @. L

8 Q: K' h; C3 u- E/ o/ f5 i        Next        
6 a2 P  i: C% |, ^) ^+ a2 c; D+ D        symbol_len = Len(symbol)
* o; S7 p5 }- d  N. z  p        Print #1,symbol_len;; }; F# i( r# j5 t
        Print #1
% {2 @; _* _- p6 H) C. U4 s4 @3 P+ m4 ?8 {        symbol = Mid(symbol,1, symbol_len - 2)
+ ~4 h2 N" @9 ?  c  |        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
" h/ G/ z8 Z; {& F+ C        Print #1
( Y" ?) ]6 \4 |: b4 K6 {    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意
' d' c, Y* I( I; _; P

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:59& l, d9 H- l% I& E- i
EDA_BOMHelper花式出BOM,总有满足你的。
! _" A+ Y* Y. ]& U, J& x$ }
嗯,有空研究下
8 U; h& Y' c& P) T6 o) M- }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-24 10:27 , Processed in 0.065293 second(s), 39 queries , Gzip On.

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

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

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