找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

电巢直播8月计划
查看: 111|回复: 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 C& V( `% p: I. `
Dim fn As String; ^7 Z( [- I) o

& q3 z1 e& g6 U- j  rSub Main
8 E1 i# E* A$ f- ]! G# g    fn = ActiveDocument" s" }: s3 t* Z2 b, k, x& }1 B3 p
    If fn = "" Then
9 J5 T' {) s* F2 n3 k7 ?+ k        fn = "Untitled"4 K4 |  E* `9 a& P8 M
    End If  n& K: P3 D2 b! i

/ d0 g' \! H, \* [2 p3 Q3 E8 h! O  {    tempFile = DefaultFilePath & "\temp.txt"
' d/ W. F4 N8 J2 N$ b    Open tempFile For Output As #1
$ r0 f- d* x8 ?6 s    item = 0
' A2 Y. P- s' B3 k# \  _1 N    StatusBarText = "Generating report..."# u+ |* X3 L) |# T
    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"" A* Q) c9 f* G6 ?! N7 g
    For Each pkg in ActiveDocument.PartTypes
! e: E' K- s2 U! ^        'Print #1, pkg.Name; vbTab; note: J8 c  P+ F* V$ {3 z
        qty = 0
5 l- I* h/ c7 j' l3 d        value = ""
- a# ^2 o: Q+ `* H0 T        description = ""
4 A0 Y2 {  V7 ~        manufacturer = ""
0 ^/ `+ w# k# i. X3 A        pn = ""
1 O1 `2 {) m' L- k6 M; y  v        manufacturerpn = ""
" v+ }, @9 |; _9 Z4 V) T* h        symbol = ""
, j; A8 X- o9 R. d# `' J; m        item = item + 1! g9 X* K7 w0 t
        'Print #1, item; vbTab;
5 T) {2 A9 ~& ~0 l        For Each part In pkg.Components
3 x, V% p. g- r2 A9 R8 j            value = AttrValue(part, "Value")& g) R! T( c5 `3 N: _" g5 ]  S
            description = AttrValue(part, "Description")
  e+ M4 g7 ^6 J' e            manufacturer = AttrValue(part, "Manufacturer_1")
& q$ f4 i3 B* b; p( J            pn = AttrValue(part, "P/N_1")& o9 B4 g7 R- o  l
            value = AttrValue(part, "Value")    3 W$ ^& f5 C/ F7 R/ c! D. {
            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")$ d% `/ S  O+ M; d" \
            sysid = AttrValue(part, "SYSID"); H! Q$ j8 x! [/ R# d, S. c2 g4 p
            qty = qty+1& Z2 u+ H, E+ X" g& _! |
            symbol = symbol + part.Name + ", "* n! L& U# t3 q) w
        Next        8 Y' I! Z0 |+ h! @& a- R
        symbol_len = Len(symbol)
2 b  h4 J5 a6 [, c" B  W        symbol = Mid(symbol,1, symbol_len - 2)
' N$ `, R1 r/ b. m2 m) ?4 \        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
  d9 q" c; ]! q$ l8 Q, H        Print #16 S* T* `9 A7 L) m
    Next pkg
$ s/ r' ]3 _6 Q    StatusBarText = ""
' M# O9 F2 ^4 k    Close #1
# \' {+ ^( h, q$ Z4 P3 i, J    ExportToExcel
- O, o( @( g6 Q$ ?& cEnd Sub
, S. \) k$ x3 I. U5 J7 i# S- M, E5 Q1 e) e
Sub ExportToExcel
- y+ C9 g  _* Y6 d6 M' T( Z    FillClipboard% h" I% x* p; Y! _, K: _  m$ R
    Dim xl As Object
7 [- q5 w0 @0 ?8 ~  ~6 G4 V) P1 O    On Error Resume Next7 c% b1 i7 m9 Y, I: y5 B
    Set xl =  GetObject(,"Excel.Application")8 M/ Z) g1 |# p) n+ L9 Y# G
    On Error GoTo ExcelError    ' Enable error trapping.
, {* }/ ^! x, X1 G' Z' q. T    If xl Is Nothing Then$ z# w4 N3 ?8 P7 ?
        Set xl =  CreateObject("Excel.Application")
: H  h# B! c2 Y    End If/ o( I% ~% Q- X* Q( z: s: P# Q
    xl.Visible = True
& j. Q* ~) }. [* b    xl.Workbooks.Add
( p8 D3 F; z$ c; |3 r    xl.ActiveSheet.Paste1 L# _: E9 N) D/ Y9 l
    xl.Range("A1:I1").Font.Bold = True
! F7 M! O. D" a+ m  m    xl.Range("A1:I1").NumberFormat = "@"5 [6 o& |* z2 b. F2 L' a0 z9 h. p
    xl.Range("A1:I1").AutoFilter
6 x' {( p8 P7 ^: N    xl.ActiveSheet.UsedRange.Columns.AutoFit- M3 [) \6 _- u5 [2 L' I
    'Output Report Header
8 B9 h- d6 u  {- P% S: m# {6 o/ h    xl.Rows(1).Insert
4 e; h5 z0 d, I; q$ C7 z: u7 R    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now
9 \9 b! v" v6 q    xl.Rows(2).Insert
* q2 v/ Q5 a2 ^* `  {    xl.Rows(1).Font.bold = True2 M( A$ C: s: ^
    'Output Design Totals
8 g. h) ~  B+ _' O5 u% Z) j# K    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 1
6 Q2 F  K" t+ N. V; [( J& n    xl.Rows(lastRow + 1).Font.bold = True& H# m5 Y% C- }' H6 B
    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count
( M# E0 D9 V1 ~0 J- C: |8 |    xl.Range("A1").Select8 i. J4 F" y* k& ~1 K
    On Error GoTo 0 ' Disable error trapping. 3 _5 h+ p) u- D  [# |, |8 R/ \
    Exit Sub    5 o: A2 Q9 C' p# s- O/ W4 I
  _& Q8 p& I- N% X& r7 t( e
ExcelError:
5 Q5 a+ h* R# I2 Y    MsgBox Err.Description, vbExclamation, "Error Running Excel"
) n; y* W4 [- B1 T; {    On Error GoTo 0 ' Disable error trapping.    - L6 i' D7 a9 o$ h- |
    Exit Sub
7 \/ J6 n* W, a8 sEnd Sub
& r) x4 }3 L' h# x& r6 b/ |  u" S. H; x
Sub FillClipboard
$ x) v$ I7 |. N; e6 b- q4 V: _3 }7 _    StatusBarText = "Export Data To Clipboard...": ^" |. g) R8 t1 M7 E% N) i
    ' Load whole file to string variable   
4 x( X/ S% O9 ^% n% x    tempFile = DefaultFilePath & "\temp.txt"
1 r( L; v5 _9 ?  Q) b) w    Open tempFile  For Input As #1
3 G% R' `1 c% [% l4 Y    L = LOF(1)
3 p2 s! P: B# r6 T! S    AllData$ = Input$(L,1). X) Y/ e- @  w, c! g
    Close #13 P" S7 G! [/ v( U
    'Copy whole data to clipboard8 E9 \5 X- H) Q- b2 ?+ a) o
    Clipboard AllData$ ' ]0 @1 _. W% F
    Kill tempFile
  @, d7 k& d8 V9 a3 C: B& ?( q    StatusBarText = ""9 P  F, I( x1 W  ^4 S+ x: L% ^* m
End Sub
/ [- \6 ~$ x/ V" E# I1 _) gFunction AttrValue (comp As Object, atrName As String) As String
8 G$ y1 \8 ]0 Q( W& Q    If comp.Attributes(atrName) Is Nothing Then
& o$ T3 h7 I: ], j& S( A& q0 x        AttrValue = ""4 h% z& p  |/ w- i
    Else
' f6 Y. O; r% E0 d        AttrValue = comp.Attributes(atrName).Value+ \, Q8 D7 \: a+ [6 N
    End If
: V- O$ h* X- Z- MEnd 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)+ a% `8 q8 V4 ]0 t9 E6 t& p
        symbol = Mid(symbol,1, symbol_len - 2)
& t* X' k$ P* B( b
- V6 n+ R% Z  {  F这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑
7 e3 c" H5 U# s, _+ d- q& @+ U! P
! J* S8 X  H8 J7 |4 c- W! Z- E0 j难道是数组:---8 i9 i0 Z- b: `; `+ Y
多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组: 6 `) n/ F6 H! R4 v

; J) k- j, L4 T9 B( o% ZDim A(10)
* N0 {/ p6 L. M虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。; g9 Z! o) a4 a1 P3 R  t

* S+ e+ `% ~0 O! S4 V/ ^/ ^在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示:
0 ]' d6 W( W/ C; N+ V, }" B6 U; M) p4 c$ K& C2 ]" q1 I' A3 @
A(0) = 256, g3 X5 o2 _$ n+ |' B1 m5 v
A(1) = 324  F" G0 @9 S2 v) H  m+ n/ t
A(2) = 1007 V0 `) I! \1 e4 @
. . .
! F6 K1 F& v6 f" m A(10) = 55
3 c- D; D4 g* A( ~( |6 a与此类似,使用索引可以检索到所需的数组元素的数据。例如:
: l/ n: Y* A; k& n6 p2 g3 F# `1 m5 R7 [! ~% B& c. k) V
. . .
2 u, x3 f" W, W0 q  U9 Q; ^ SomeVariable = A(8)  . C  W4 k: N6 _/ b9 s8 c
. . .
9 ~4 Z+ C: a2 k( X0 @' [! ]数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组:
- Y: u6 S* C' D- B$ w) s, @  c6 e7 a' _7 a- r/ D5 X
Dim MyTable(5, 10): g* d; C  }  O$ J+ E1 S. i
在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。
  q+ Q; N# R' S, |6 Q" E
; m3 t: _3 e- Z! r; z. X) U5 L# X$ ?4 P  J

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥' S0 h( X8 j# _. Q

& C, m) C( Z0 B! D8 }1 r( c. w# i" P        Next        8 m8 h# M5 ^* {' T, ~3 l1 N% \
        symbol_len = Len(symbol), j: \" N; D1 @$ p% u, y
        Print #1,symbol_len;: F4 `4 C7 [% H" ]1 M6 }
        Print #1
5 ]: @6 o2 [; e5 Y        symbol = Mid(symbol,1, symbol_len - 2)# p: y) ?  W6 Z0 Y2 V
        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
6 M: G! b4 q. k! M% P. K  u) j  T: L        Print #1
5 }- C5 a7 u7 t* a& C+ d; u    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意  p6 _! K+ J$ G8 L- a9 X3 p% K

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:596 |8 X1 [7 i+ [
EDA_BOMHelper花式出BOM,总有满足你的。

- y" W7 x* W2 i& q8 ~嗯,有空研究下
6 S, |' `4 ^1 Y. t, p1 M% ^% P9 H% s, t
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

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

GMT+8, 2025-7-15 03:40 , Processed in 0.069965 second(s), 37 queries , Gzip On.

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

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

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