找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 79|回复: 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 | 只看该作者
网上找了一个
2 F2 e- a) b  j4 \Dim fn As String) w0 B7 @' S$ H3 P7 u
3 o" g7 b0 _* ^- ]; l, u5 t
Sub Main& K5 X% C) Q4 y1 H
    fn = ActiveDocument
) w! j" b+ ^; @    If fn = "" Then
9 _9 f7 g7 P$ J9 Z        fn = "Untitled"
% B8 v0 |2 D7 k    End If! z, q: s" n& V' k) a& V) O' S. D3 |
8 j; L/ L6 K. y8 ?
    tempFile = DefaultFilePath & "\temp.txt"
- ]( M  F% q; l    Open tempFile For Output As #1
. q+ Y2 p% u4 D$ \$ p, \    item = 0
1 ^5 \) G. m8 \( `' ?    StatusBarText = "Generating report...". }# X  O# f* A6 N9 g$ A
    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"
+ ^5 r( H# {# _3 \    For Each pkg in ActiveDocument.PartTypes
8 ]- S5 E9 M2 R$ x        'Print #1, pkg.Name; vbTab; note
& t/ |0 P: j! i( M. y5 H- N        qty = 0
0 Z0 r8 q( X& ?- \0 v/ w. v4 B        value = ""* s- m. I( A- E/ e" `2 r
        description = ""6 Q0 C3 y1 C/ z: u; {" v- B- o
        manufacturer = """ p- t" e3 M$ t4 T6 `
        pn = ""
, c1 Q" f2 u7 h8 t! n& ^        manufacturerpn = ""( W/ o7 r2 {% I3 _4 z$ E
        symbol = ""
8 }  j  h9 z" f6 B6 i        item = item + 16 ]+ W# W6 P$ B) T
        'Print #1, item; vbTab;
# P# _% A* R8 S, J5 e2 w        For Each part In pkg.Components  I/ E$ d/ f2 n8 X' H
            value = AttrValue(part, "Value")
1 K4 Q! t7 h! g* S6 T) R# T* @            description = AttrValue(part, "Description")
8 g/ h2 b! m2 m2 C$ e            manufacturer = AttrValue(part, "Manufacturer_1")( k7 F6 x4 }. S" ^9 |- k! ^
            pn = AttrValue(part, "P/N_1")
  a1 O5 b1 ^, R            value = AttrValue(part, "Value")    1 r2 D* s& X% q) [( D& r( ^
            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")9 W( Y5 c- b; d: K" C
            sysid = AttrValue(part, "SYSID")* ]1 {# E2 v9 S: `: K/ ]0 I# U
            qty = qty+1
2 L- P( B! |' |; J2 z& s            symbol = symbol + part.Name + ", "
; k7 S; E+ E2 s* Y! n  o        Next        
6 f  K# @/ D4 J6 Q        symbol_len = Len(symbol)
$ s& \/ P) _! h8 O        symbol = Mid(symbol,1, symbol_len - 2)
, r, B  ~; ~8 P' E; U" \+ @5 \        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
0 u9 a: _" K9 {! J        Print #1
8 Q- F+ f. K: y    Next pkg) R: R5 N% X* O2 W* z
    StatusBarText = ""3 P) J, U8 p7 k; u. q/ Y, Z" A' \
    Close #1$ ^) @, ^& Y+ w% R0 X
    ExportToExcel
5 p3 P! f# Z. r2 B$ aEnd Sub
( @1 v% `9 K% L* Z
6 U; N: G/ G: }3 H6 H$ o- d9 `Sub ExportToExcel7 C+ T7 X4 P' j  v6 |
    FillClipboard0 f( I# n" E6 Y8 D6 ]
    Dim xl As Object
& ^* l: K0 ^* p! F1 T, W    On Error Resume Next5 M0 l/ \0 m5 n' ]: T% L
    Set xl =  GetObject(,"Excel.Application")! H% |. A3 I( ~; l8 o- I  S7 Q
    On Error GoTo ExcelError    ' Enable error trapping.; l2 S4 h, y8 o% g4 `, F
    If xl Is Nothing Then- r7 E2 k5 }8 ~) P, G5 O1 W9 X6 i
        Set xl =  CreateObject("Excel.Application")
2 k4 j5 {; r8 h0 f1 m. L) ]    End If
2 q# w1 v- w0 ~8 B% r! K: q    xl.Visible = True
3 L$ L& M1 F8 G; v* W. A' H7 p7 h$ C    xl.Workbooks.Add5 M1 p/ ~3 z* A
    xl.ActiveSheet.Paste% p* I0 _: d; O+ G
    xl.Range("A1:I1").Font.Bold = True
7 |  n: p$ `( ~, u7 N8 u3 I  f/ _0 W    xl.Range("A1:I1").NumberFormat = "@"
0 l1 @; ~8 p8 M9 `& V    xl.Range("A1:I1").AutoFilter3 Q/ @; [/ }& U+ F+ \, l0 u
    xl.ActiveSheet.UsedRange.Columns.AutoFit& t- [0 W* h% I+ U' ~
    'Output Report Header- l8 _5 X3 j9 a% P) a
    xl.Rows(1).Insert0 T6 U, T# O2 G2 q! A3 V( U5 m8 i
    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now
! f, f* \2 d, h4 K& E1 _1 x& R! i    xl.Rows(2).Insert
8 H6 c& A5 d( I    xl.Rows(1).Font.bold = True) H9 ~& @1 A9 b
    'Output Design Totals
+ a1 t2 e7 S2 j. v/ v0 k+ X8 M* O1 h    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 1: z1 k7 r( S' j) T
    xl.Rows(lastRow + 1).Font.bold = True
- L2 x6 Y" M& v: v0 i    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count0 k$ f5 _/ e4 Q! \
    xl.Range("A1").Select
0 H# S7 y7 j" u3 H3 ~    On Error GoTo 0 ' Disable error trapping. # n3 ]7 u: O: f7 [
    Exit Sub    0 ^% i5 s4 a# m4 j: Q( ^
3 y5 q) ~1 n" S5 c
ExcelError:
  G% p& F# f. Y' n    MsgBox Err.Description, vbExclamation, "Error Running Excel"( s. _& U7 |7 Z) X1 o/ T
    On Error GoTo 0 ' Disable error trapping.   
# t% T: G" i2 r( `    Exit Sub, u+ O7 i0 N1 E" J5 [' H" m0 u
End Sub( |) f9 h" P* }. T6 v( }

7 t  Y* \, {1 c  v' k( iSub FillClipboard" X1 z; x$ ?* A# w7 F# \
    StatusBarText = "Export Data To Clipboard..."
% _/ H5 h( P7 I& b+ O) {* B    ' Load whole file to string variable   
8 ]% G4 }' f2 }1 t    tempFile = DefaultFilePath & "\temp.txt"
& W& K! t  [6 d% N5 G4 Y8 ^) J" D    Open tempFile  For Input As #17 P; d2 V5 m/ v# `+ P
    L = LOF(1)! o' f/ w5 {/ G% I2 w) Q* Q) h
    AllData$ = Input$(L,1)
# W3 N: W3 [9 A) e  N8 n% c; O    Close #1
" j$ j' z2 d# R: S7 i1 u7 D! Y    'Copy whole data to clipboard
, |' q- A, q. L2 Y4 b    Clipboard AllData$
# o  i6 z' t6 B* X    Kill tempFile; B. F4 a. |. R3 R1 d; G! X
    StatusBarText = "". A8 Z% Y0 A, `6 J+ {( _) F& H
End Sub7 \  O4 F& V1 X, e6 B
Function AttrValue (comp As Object, atrName As String) As String# s8 I4 P: j3 N1 y$ J6 g
    If comp.Attributes(atrName) Is Nothing Then
3 L7 p! A0 A. p5 s  o3 E        AttrValue = ""
# s" Y4 K3 p$ [    Else* {8 J5 M( p7 @. `$ c* Q; T2 ]
        AttrValue = comp.Attributes(atrName).Value3 F# X! c  l6 d4 @% N! n, L2 \
    End If& E: V; n7 |, J0 ~5 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)
; n! n6 N9 Y* g' y) E) y        symbol = Mid(symbol,1, symbol_len - 2)+ |0 i6 m( S$ _: O% A* a" E
; d; i/ P  D8 A& w& Z
这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑 1 n' p  u" P2 H9 a

  d! b, Q' I5 H: z难道是数组:---# g/ W. ?6 e* r9 q9 L- q+ P/ N
多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组:
% _1 L  ]7 |8 ?0 o' c. S7 O) d% t* M4 H% K
Dim A(10)& R& X" T* X& K7 \. |
虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。% b7 S7 b/ I0 A4 @, ?7 D

( v" S; a0 B# y2 \2 X4 g# \在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示:
4 t+ A: H. `8 s) V, l4 V" E
" D$ G6 D$ ~) T. b6 a A(0) = 256
) J+ \9 [0 A* E* n0 J( G( S A(1) = 3249 _) P; v0 }4 F6 |$ u
A(2) = 100
- D/ i$ r# y. B( M) F! S6 W* [ . . .
, f: F' |3 d- j8 W4 c% V% v5 D: n A(10) = 55
" t5 [/ q7 X8 d9 [% P4 l与此类似,使用索引可以检索到所需的数组元素的数据。例如:; e) g  l' i6 u2 ~+ n

- [2 G: j' U! B) _) y . . .
3 l; s, w8 V! w$ O0 c SomeVariable = A(8)  % E) U" s8 R8 C- I
. . . ! x/ n% Y9 H3 {* a( u; d
数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组:
0 Z" I% V4 p) p$ y: `: d3 F- t1 O) p, z! C2 C  x0 e# c4 D
Dim MyTable(5, 10)3 M7 S: e) \1 F2 B1 N
在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。
& E$ U7 ]6 y1 V7 x4 t, q( D& n' d1 D) `( f2 j% S& `
/ F5 t; v2 s$ n* i

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥& n  p: _, [$ t* s4 g& u$ X6 g
& `" y( H7 r: M! _
        Next        
* V2 h7 }3 _4 `- A( Z, q; `        symbol_len = Len(symbol), C3 u3 L( x, t4 r8 Q: G8 M
        Print #1,symbol_len;
* V0 A8 k( E5 p$ p$ D' V        Print #1
, U" ~: J7 r  T3 r# o. c        symbol = Mid(symbol,1, symbol_len - 2)
7 C7 L; Q0 x2 f% ]3 d& B        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
# q: k. M5 N3 Y7 o% t        Print #1' g! A. Y) N. ~( z
    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意
$ d6 m' Y' K: f7 O1 U# z. C

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:59+ z" s* B1 b- }# ~/ A$ p, I; ?
EDA_BOMHelper花式出BOM,总有满足你的。
/ F* z" L. w+ y/ j- B4 w# B; e& r
嗯,有空研究下
0 k1 }7 q. K& ]( f0 o+ g& c
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-9-19 10:05 , Processed in 0.067813 second(s), 39 queries , Gzip On.

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

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

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