找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 96|回复: 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 | 只看该作者
网上找了一个
$ a. ]8 o9 X3 ^" cDim fn As String
2 ?. O  Q1 [8 \& _+ B. y: Q" K- P+ y6 F* t$ [0 a
Sub Main  }- Z  N# i9 l$ o2 J
    fn = ActiveDocument
* p" W4 f4 P5 E% g5 D    If fn = "" Then
: J0 X* {  |5 p2 j        fn = "Untitled"
: l8 k1 f# @7 Q: |2 a0 l( g    End If
8 t. `8 Q3 C! d. h- t# C5 E% {
0 G) `/ B' Z% N% |, @: D    tempFile = DefaultFilePath & "\temp.txt"7 ?( u' ]& G$ s  I* u+ P
    Open tempFile For Output As #1
5 ^1 E0 i$ c) s# S2 o    item = 0) K2 R6 }+ u8 M0 a8 u3 X& \
    StatusBarText = "Generating report..."  p  S, G/ h% X5 O
    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 k8 p  V9 c# e) E6 W    For Each pkg in ActiveDocument.PartTypes
& G8 H5 N9 H, s        'Print #1, pkg.Name; vbTab; note, z, o6 y6 b+ M" N3 I; g9 y3 h
        qty = 0
0 i% X; S9 L% e$ ^* r$ W8 E        value = ""( X/ ^! v( @* N9 ]
        description = ""
! o; A$ f9 d+ @        manufacturer = ""# y% l& k2 X) e( s3 z7 J
        pn = ""2 I. H3 i9 k8 h  G
        manufacturerpn = ""
$ d$ ^/ |/ a) K( X1 P$ M% h        symbol = ""
0 h' m$ o7 y* q9 e        item = item + 1' R; f- ], x9 ]5 w' ~2 G3 d  p; B
        'Print #1, item; vbTab;
& H& ]8 F* o# Q; }" U        For Each part In pkg.Components
/ I" f) b+ O/ f; N            value = AttrValue(part, "Value")
' y2 w+ y) p0 g( o7 D. J( M            description = AttrValue(part, "Description")! p* p* P% [0 Y8 y2 N8 u
            manufacturer = AttrValue(part, "Manufacturer_1")4 v" f1 r# P+ |
            pn = AttrValue(part, "P/N_1")
0 x6 R6 E6 N. T4 [4 P2 o            value = AttrValue(part, "Value")   
# N2 S0 C* v+ s, y) w            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")
( ^, y/ ?( `. c0 G0 U) ?8 ]            sysid = AttrValue(part, "SYSID")
. C, U. y1 N: x/ S            qty = qty+12 m4 h0 ]! K5 S
            symbol = symbol + part.Name + ", "3 e/ \/ \) U; z2 q  \
        Next        1 J  H* M, V/ p0 c
        symbol_len = Len(symbol)
1 s7 Z8 G2 \$ s/ O        symbol = Mid(symbol,1, symbol_len - 2)
2 _  o/ K/ g( U/ ]! x        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
. P: B# Q3 c& C! H" V6 |2 I        Print #1
1 w3 E& m# g, j( Q' K( \, }    Next pkg
6 V- e9 D' E, p+ C( e( R0 r* e    StatusBarText = ""; {' I! k9 ~( k5 c: b& h6 m6 N
    Close #1
% I; T7 Q& w6 v- W: ?6 U5 N    ExportToExcel1 v; I5 A  l2 E1 K; K
End Sub
+ n# ^' d0 h/ B% W. b, l
7 {* Q) O2 r% e- k: ?* bSub ExportToExcel
  D0 ~; S# d0 R7 |, H  q' A    FillClipboard
" P4 t/ \+ N( W  M; E    Dim xl As Object
' }" Z- m8 e2 R5 R5 m, M- `    On Error Resume Next( |$ O3 |/ f8 B4 {' K
    Set xl =  GetObject(,"Excel.Application")0 \. F5 V8 p) ^/ J7 R/ o4 P
    On Error GoTo ExcelError    ' Enable error trapping.+ ?$ I" ~8 F& a
    If xl Is Nothing Then) z0 G$ W7 `+ r3 L
        Set xl =  CreateObject("Excel.Application")
. r7 l. ]0 x5 O) v& ^0 J+ v    End If
2 \0 |  K! a( G6 X    xl.Visible = True
/ D* ?! \% |' i+ S    xl.Workbooks.Add: Q( @6 J( [) A  G0 M! \- P3 x
    xl.ActiveSheet.Paste
5 |/ v& C6 T( L4 x+ @9 T    xl.Range("A1:I1").Font.Bold = True
7 R) e* S- I. k+ e/ b4 ?. d    xl.Range("A1:I1").NumberFormat = "@"$ `6 o- L& [* B% B
    xl.Range("A1:I1").AutoFilter5 r! p( `( B+ G0 x. A
    xl.ActiveSheet.UsedRange.Columns.AutoFit+ d1 j/ j3 c  W' K; j$ L  A: _
    'Output Report Header" {* Z& ?# ?+ }2 p9 ]/ e
    xl.Rows(1).Insert" x* [  z" q. Z9 o1 i7 c
    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now
3 K8 O( M3 F9 z/ W. u    xl.Rows(2).Insert  [/ S' D  @, T& m9 ?
    xl.Rows(1).Font.bold = True
& z8 W3 m! k0 q* l    'Output Design Totals0 E8 z4 m' I: v+ E; M3 u& n
    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 1
' e5 F9 z" s9 U" q6 y3 {    xl.Rows(lastRow + 1).Font.bold = True1 A; z  z- }4 p9 c
    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count/ l( ^( ~( x/ Q) }, y
    xl.Range("A1").Select
1 a! t. j  q3 w$ @% x# a% U    On Error GoTo 0 ' Disable error trapping.
* O6 }. \( v& A+ z7 b3 Z    Exit Sub    $ W: X1 l1 i% Q# j5 {( k# {
( k$ c: C0 E9 z! `  `# v
ExcelError:3 s  X7 S. |/ j' s; W4 e" k
    MsgBox Err.Description, vbExclamation, "Error Running Excel"
6 S9 C8 C6 T1 R" `    On Error GoTo 0 ' Disable error trapping.   
  j4 R5 ^' r( [" C    Exit Sub( S/ }6 T' n& r" }
End Sub
; @  `  q' z3 B5 A7 b* p1 b& c9 J
4 a/ B" k+ `1 z# uSub FillClipboard
1 z4 ^4 z8 d6 |  r    StatusBarText = "Export Data To Clipboard..."0 {, D' M, }8 V; b) n# _
    ' Load whole file to string variable    / v6 c1 F: [" b: a3 ~3 w
    tempFile = DefaultFilePath & "\temp.txt"! E6 {* b  Z: T9 r
    Open tempFile  For Input As #1- ]" C2 ^1 U4 _$ l
    L = LOF(1)% F( U: N1 r! \0 c( f# N% b: c
    AllData$ = Input$(L,1)
$ q/ }7 E: c! U7 R4 u    Close #18 [7 Z, Z( B: X' ]
    'Copy whole data to clipboard# s, }. U- w+ h9 G7 s* @
    Clipboard AllData$ 5 u) r* L2 t; D$ A0 J
    Kill tempFile
' m3 X& m5 D: A$ }4 G& f' H    StatusBarText = ""
' B- b$ |5 m2 C/ D# g( |& mEnd Sub
/ a) g9 L$ Q6 }8 MFunction AttrValue (comp As Object, atrName As String) As String
" ]9 q8 r) j6 w6 D    If comp.Attributes(atrName) Is Nothing Then
) x0 e9 l5 L; ^  V  \        AttrValue = ""- o( |$ N8 D/ T- Q5 ~
    Else1 Y8 R6 }, M+ m+ h  o/ {
        AttrValue = comp.Attributes(atrName).Value/ |/ `. O( \; X, O' M3 Y6 y8 |2 x
    End If
+ {- l2 V7 `5 R' ~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)
( s2 m1 p/ A0 c* X7 I: \0 N8 @1 J        symbol = Mid(symbol,1, symbol_len - 2)! ]) M- Z+ s2 R9 o9 G3 j7 s

  t. K& u! h' n" }这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑 ! G& P' c0 q! \& T' ]# d* L% T
8 j  ?3 y+ g, n) q
难道是数组:---
* ^' O9 h! h" {/ K3 O% u多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组:
1 i2 Q# E, z6 V1 o1 D; Q
8 X6 {( F; H* [$ O4 }# N( D$ C5 pDim A(10)3 I% S* i  x7 J6 r# |! ~' u
虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。
' }% }" h& t" j- N% b3 q" r! z
+ ^6 h. W4 I1 b% d% D在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示:
5 q& H& J5 J4 d& Z, Y$ G8 H
1 x; }. y" V: o. H# i A(0) = 256
$ Y$ X5 g3 c& `0 _" ?% I1 _ A(1) = 324- ~8 c) F: n- d' k0 d3 t
A(2) = 100
4 @; q2 F; m/ Q2 K . . .9 ^1 q1 F% p6 y  a; _
A(10) = 55
% u: V% I% d. g3 E# F  G与此类似,使用索引可以检索到所需的数组元素的数据。例如:
/ x3 ?! X8 Y2 ~1 `4 v1 \' q  O: l+ E6 `) L# \& j
. . .
, @0 [8 Z& k7 |* y SomeVariable = A(8)  
+ ]' ]4 t( Z; J+ u6 @4 n4 a4 q . . . . u: I2 E4 M# \" ?3 B
数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组: 1 o1 w% N1 Q  z+ T" l  @+ a
+ ~$ J, {7 `0 Y+ t
Dim MyTable(5, 10)
' H/ b' ]9 ~$ |在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。
+ k& X; ]0 M; a) n' m
7 G9 c& |8 U+ o( W; ]5 h2 g" g# b+ [: e; Q& F- W! H4 t. z

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥% Q/ c9 {! r& \5 H9 v

0 ~2 Z6 i) d( Y% u        Next        
/ N8 Y, t2 ~8 Z' L        symbol_len = Len(symbol)
0 ?5 e: R& `" r- O! Z% _- u        Print #1,symbol_len;
4 j  u. f$ z0 b. \        Print #1
5 x8 M( q3 B3 ~+ H& |7 D- \        symbol = Mid(symbol,1, symbol_len - 2); N! p4 P# w- `3 k: K2 a6 `
        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
$ G6 l1 v/ D# y* i+ w* N7 {        Print #11 ]3 L9 \" h. _3 l
    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意) D" z4 a6 x! d

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:59
* i5 a" v0 L1 G5 {EDA_BOMHelper花式出BOM,总有满足你的。
; L9 z! [# R3 F( V% P" M
嗯,有空研究下
  J5 s! }* o( y: G- Z& @; J0 H7 {
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-2-19 06:30 , Processed in 0.070941 second(s), 36 queries , Gzip On.

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

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

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