找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 90|回复: 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 | 只看该作者
网上找了一个) c4 n+ g: S+ V3 ~& a
Dim fn As String
* j. t+ A+ Y  @& ]7 b2 T' m& V9 t6 d9 L/ u- `
Sub Main6 t' Q1 ~% f  B
    fn = ActiveDocument
( u( C  D8 a' f% J* g# L    If fn = "" Then* o8 A6 P4 V" y: R
        fn = "Untitled"
: S6 T/ T3 v8 u! ]2 p# Y    End If
; A) w. K3 Q4 J) t6 v- G7 h7 n7 m; Y* y
    tempFile = DefaultFilePath & "\temp.txt"
% A$ i+ Q' u0 u    Open tempFile For Output As #10 W" l/ m5 v; G: c! I: R
    item = 0
8 ~# x, R# t$ j    StatusBarText = "Generating report..."
! {+ a3 W# H8 h% Z7 {$ 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"* E; h* }# a% n' P
    For Each pkg in ActiveDocument.PartTypes
0 y& `8 H- X/ ~% x; C        'Print #1, pkg.Name; vbTab; note) a; E7 {% l/ P7 w3 H! m) s% G
        qty = 0
! `0 b8 y; j5 {        value = ""
# y$ |3 h, s; S3 n" p8 {        description = ""8 G1 |4 S# A5 p( F3 ]9 A4 [* e
        manufacturer = ""
) P& e( t, `* I5 B        pn = ""
5 t0 J0 c! D( R        manufacturerpn = ""
* [& ]+ Y' J, Y2 F        symbol = ""
: |7 C& t6 c; u0 T: D/ G; Q        item = item + 1
7 t; P' p( h* V3 C$ R0 F        'Print #1, item; vbTab;
. D5 ^0 C3 @' V% q  r        For Each part In pkg.Components. z0 C4 ?$ ^& `$ y. U+ `4 K, {
            value = AttrValue(part, "Value")
; S( a3 z: ]% r  v. J            description = AttrValue(part, "Description")
9 d! V: X% Z# m/ ]            manufacturer = AttrValue(part, "Manufacturer_1")
" n9 P! j/ m- q3 [1 l& `, h/ h( u' ?( ?            pn = AttrValue(part, "P/N_1")" s2 }8 o7 R% x& x! j$ n( L. _
            value = AttrValue(part, "Value")    ' m. V" _+ w* q' [' A$ N& a
            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")3 l* C6 J; ^! G1 P
            sysid = AttrValue(part, "SYSID")
5 Q* C2 B3 o  M0 r3 p4 A            qty = qty+1
! V+ C) d; Q" B* D: H% O+ w            symbol = symbol + part.Name + ", "
6 G. F6 g7 v+ [        Next        
$ Q  b+ U3 i" M7 Y" n% M" A: ~. k# T! X1 a        symbol_len = Len(symbol)9 r. _6 R6 n/ i5 y" ~
        symbol = Mid(symbol,1, symbol_len - 2)0 N; A. M% r8 ]
        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
! T' X5 Z+ Q3 F* [        Print #1* w/ S% a. {" F" V) f4 t6 H
    Next pkg, V* `: h- s$ D1 h
    StatusBarText = ""; t1 K! ?( E$ f
    Close #1
! t) ~( X( y+ w! P2 L4 J' e    ExportToExcel
; k  a* _7 P' _! W, u% n- HEnd Sub
) q  ]9 H! x! b: B4 s7 F4 [
# h, e3 W: g0 s, i' DSub ExportToExcel- ]/ y& D2 _7 t  N3 q3 v
    FillClipboard
6 t8 Z: h8 z& g; n    Dim xl As Object+ d) t7 q+ {0 W+ E1 N+ X1 l+ w/ t2 I
    On Error Resume Next' y% N5 T: Z# U4 p& g
    Set xl =  GetObject(,"Excel.Application")/ [/ l( U+ i1 ]5 y0 ~' M2 t/ l9 u
    On Error GoTo ExcelError    ' Enable error trapping.
: _3 q/ H! \2 q; w7 t5 S5 c9 h. D+ h0 o    If xl Is Nothing Then
' b* N; U4 w& w5 f+ T% `0 m        Set xl =  CreateObject("Excel.Application")5 \0 i9 L' R7 Q! j4 r7 y. v
    End If- c3 K. \' `( d% \
    xl.Visible = True
& e2 G' m) l1 {# k8 e* U! m    xl.Workbooks.Add$ J$ m* k# _7 q4 A; z) n
    xl.ActiveSheet.Paste8 X7 K" y( q" k: o7 F5 @' w
    xl.Range("A1:I1").Font.Bold = True5 _. n3 e; Q7 o, n
    xl.Range("A1:I1").NumberFormat = "@"
+ N, T, ?* l' A3 O$ X    xl.Range("A1:I1").AutoFilter9 Y& T% v! K) W% ~* L9 t! B7 q
    xl.ActiveSheet.UsedRange.Columns.AutoFit% Z% e+ h7 a& y( E
    'Output Report Header
& Q/ f  ]4 C6 {$ L! J/ T4 F    xl.Rows(1).Insert
7 j! t; M7 v7 a7 X5 {+ c    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now2 V+ b: w+ s8 K; l" j4 C8 E
    xl.Rows(2).Insert
/ h7 b+ N! N2 Q7 t/ i    xl.Rows(1).Font.bold = True' T( p6 @7 s' e
    'Output Design Totals
+ `& B7 V9 m+ t5 D    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 1
$ @( s6 F; m* h    xl.Rows(lastRow + 1).Font.bold = True
5 i4 s7 {8 U, \9 Z    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count0 `3 L/ V  n$ J, p. O" ?' b) m* e' d, w
    xl.Range("A1").Select
( ?$ g; ~& Q' f7 P! n! y+ s    On Error GoTo 0 ' Disable error trapping. ( c( S/ E* c! H* g
    Exit Sub    ) j( |. r$ D' I( ?  _5 t& _
1 V$ ]1 }2 d: W6 J/ o& m& K
ExcelError:
& p- j; c" w; N- H7 u    MsgBox Err.Description, vbExclamation, "Error Running Excel". X# v( e6 N7 g
    On Error GoTo 0 ' Disable error trapping.   
! b! L. H% h9 F! z8 M# J; H. e    Exit Sub6 z( b+ c' r; Z# p+ ]6 |/ _
End Sub
3 J. f$ ]: i7 G5 X+ ^% }. z* t) ?+ j3 |) [6 U: W* o0 Z5 K
Sub FillClipboard) ?% D% p$ H1 ], Q$ |$ ^1 M5 s
    StatusBarText = "Export Data To Clipboard..."
! `- @! v. R" I8 G8 D4 U9 S    ' Load whole file to string variable   
5 N, H) m3 D! F' u: M* V& W    tempFile = DefaultFilePath & "\temp.txt"& d# A" d* e- c, m
    Open tempFile  For Input As #1
# D) n0 t3 R: g    L = LOF(1)( I# P! v# R9 f  G
    AllData$ = Input$(L,1)3 F& s! R/ R. I, I
    Close #1& i* C1 L$ _4 g8 P: Y$ _
    'Copy whole data to clipboard$ W. A  P0 a- a3 c$ p: h5 J/ C
    Clipboard AllData$
3 V1 ?6 _4 u; r( j2 l0 i$ n    Kill tempFile
) g2 x6 `1 ^: \) J: U0 H    StatusBarText = ""
2 e( k* p  I7 p4 Q4 Z! \End Sub2 N3 E, v, f8 D' @: V8 @1 u
Function AttrValue (comp As Object, atrName As String) As String* c1 m& T, H3 I, L
    If comp.Attributes(atrName) Is Nothing Then! }3 _, |3 T' S5 A7 O. e
        AttrValue = ""
$ F* Z* R' m+ y0 O    Else7 R% H" q4 b& a. C( n( l3 t
        AttrValue = comp.Attributes(atrName).Value
, x  _) e/ m+ y" o# i* ]    End If
1 M8 ?+ K1 ~8 a) T$ CEnd 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)
7 F! |" k! p) h0 w: w) s        symbol = Mid(symbol,1, symbol_len - 2)+ D3 ]; s' E7 p. I

1 R* ~+ l, T9 v. a1 ~  L这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑 7 o/ R/ p+ `- ^
$ b+ h2 J! N+ j2 s# ~& b
难道是数组:---- j7 `, n, }/ M8 l; Z
多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组: & ^! L9 P7 z- }! z
7 m& k( l! r* W' ?. k- S1 K5 z
Dim A(10)
- o, B/ x9 s! v% v/ i  |: {虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。& M6 x5 P% K6 i$ O; N4 p6 t6 k

  R# B/ b1 X" d# e- a- o' b在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示: 1 y6 @3 o4 x6 b3 z4 {& x
; C7 @5 D) D% j  q/ q( r
A(0) = 256
1 ^0 i3 m/ i; i' `# j( D A(1) = 324, v7 d5 U) g0 I, {3 @0 Z6 l- E
A(2) = 100, w' b8 ~* P& Z7 C3 D1 w# U
. . .
7 y7 ^0 q, D7 F! }' G/ D( i A(10) = 55& k0 v, [8 i  u4 [' x% c7 V
与此类似,使用索引可以检索到所需的数组元素的数据。例如:1 W" }. f* ^4 s% S5 d' G8 K8 H! i2 j
: N7 g6 m2 o0 H3 M
. . .
1 N# D7 h; |! U. K5 Q SomeVariable = A(8)  1 |/ k( c# E# \8 Y: u# r- J
. . . ' t" E7 O# r4 M
数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组:
8 c: |3 ]/ Z8 Q% h( k8 y' \5 D. c" I6 q7 k& p' D8 a: ?! E% k
Dim MyTable(5, 10)
8 i. L/ s' g; I# e+ O" Z2 Z  F" |* D在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。
7 n* {2 _% A$ P( S- B
, V* `( |( ]! u4 p
4 v* ^0 V$ f1 l- ~/ q

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥8 _3 o8 x, V. F5 J) T
: i; ~7 X$ O! S. U1 [
        Next        
6 w9 e! z+ I+ E0 \- Z4 r! b        symbol_len = Len(symbol); q% c8 J3 k- ?7 h8 g2 Z1 w
        Print #1,symbol_len;
( u, h) r( \% U1 V3 V        Print #1
8 W9 t  h. i- P0 N( b9 m  Q        symbol = Mid(symbol,1, symbol_len - 2)
' ~- R8 h; P: K( o( ?  G        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;% h5 @. u) Q4 F- g; X
        Print #1
" J; g, u, U' E* \% Z    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意
7 w5 Z- K% B6 _' q4 j

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:59
4 {) E* Q; v/ d; TEDA_BOMHelper花式出BOM,总有满足你的。
8 K2 I1 v( N/ ]* x4 w! L" _
嗯,有空研究下
: g0 V/ G  k0 C8 k2 N3 U& p3 A
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-28 07:56 , Processed in 0.064912 second(s), 40 queries , Gzip On.

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

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

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