找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 86|回复: 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 | 只看该作者
网上找了一个
0 n5 P- n0 g3 q& {Dim fn As String! N$ I2 c: k4 G

' m  K* K7 |0 Q1 X- ASub Main3 P; y  ?4 s9 F/ N
    fn = ActiveDocument
, b5 ~2 V8 U7 e) F( T7 e0 q    If fn = "" Then  i0 t' \( B. U+ p! A9 e& T5 H
        fn = "Untitled"0 n, {$ c4 z2 B! p. K
    End If: e3 a7 }4 S/ P% {
4 \3 E9 ~& Y. _9 r, E
    tempFile = DefaultFilePath & "\temp.txt"
* h- {) w* k7 Y0 ~' Y" C) F! u    Open tempFile For Output As #1. P! [( g6 P7 Q
    item = 01 X/ f  e0 x' Z# [' h% N! r6 a
    StatusBarText = "Generating report..."
% e2 B+ O" C# n! |( P    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"
# ~) k8 \! h, @  g    For Each pkg in ActiveDocument.PartTypes$ R: M9 s" T5 u" L+ t9 U
        'Print #1, pkg.Name; vbTab; note& e1 d/ W* P& A$ [
        qty = 04 a7 ^  `$ Q+ g, I8 u
        value = ""
, D' L% {0 U1 k/ b& B/ E# o        description = ""7 t0 a# _; s% z7 K
        manufacturer = ""
; M; t3 i1 ~- K5 l* a' E        pn = ""  c% o) Z. R7 Z" w3 Q3 g
        manufacturerpn = ""
! U* h" N* k% q' `" U) ?        symbol = ""& ~6 h. R; r6 ?; d4 V
        item = item + 1
9 V$ x; K/ \, [: u& r, _0 b8 ~- _        'Print #1, item; vbTab;9 \- L* g3 n. J; b& W
        For Each part In pkg.Components
( k6 b* s& r$ u5 d            value = AttrValue(part, "Value")' D: A7 o5 O, ^) k% r7 q9 P
            description = AttrValue(part, "Description")! d$ H+ k' w& U6 ?- A, V3 K+ L1 w
            manufacturer = AttrValue(part, "Manufacturer_1"): ?4 _, _8 f) w8 O& R
            pn = AttrValue(part, "P/N_1")
! d# V& G/ Q) U4 `: K4 i; ?            value = AttrValue(part, "Value")    0 k' Z4 F# V  }, D& }- [1 G# t
            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")0 W# |2 ~8 A  }! b. I8 Q; V/ n
            sysid = AttrValue(part, "SYSID")
. O. R3 z  E: n& ^            qty = qty+1
: R; K. N0 s! C# K            symbol = symbol + part.Name + ", "
( r& L" P6 J& b$ ~) N        Next        
: Y7 l# j5 y' r% D6 s        symbol_len = Len(symbol)
3 K) q+ V+ R  D- p* C2 d        symbol = Mid(symbol,1, symbol_len - 2)" k4 g2 i3 e2 G8 {6 i
        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
& @5 U) T; o8 E% G$ e        Print #1
+ z, o$ M' k" m' N& k" j" y( G. L+ @    Next pkg5 R* X8 W8 S: A: Y8 z& b
    StatusBarText = ""  J* V9 g) R) |+ M
    Close #14 R% s5 L1 }" o: ^! t$ ^
    ExportToExcel
& P$ Q( L' z) Y4 X9 J7 F! MEnd Sub% P  i0 k/ N7 X: D" z

6 b4 `" o& z+ P) QSub ExportToExcel
. a  K# v" `; j% f: d8 @* l    FillClipboard0 a9 T' K8 p4 i7 l; u9 U
    Dim xl As Object
; W5 h! F& ?5 f; y  |0 @9 {    On Error Resume Next+ r2 K6 A: S( j; c( d9 k
    Set xl =  GetObject(,"Excel.Application")+ _+ Q8 r" y: b7 x
    On Error GoTo ExcelError    ' Enable error trapping.$ x) t, v* L- a* |7 f# J
    If xl Is Nothing Then2 Z; B0 @4 `- h9 ?/ X9 f0 g
        Set xl =  CreateObject("Excel.Application")
: {& {) n+ _- t8 H. U! G    End If
- u7 f6 r% c/ S, n8 O& ?" a    xl.Visible = True
9 q9 g( v6 T! m    xl.Workbooks.Add1 w0 L" P3 R; O8 Z9 c5 M- z
    xl.ActiveSheet.Paste
3 Z9 I7 U$ T% u0 j, T) N    xl.Range("A1:I1").Font.Bold = True+ n9 \4 `& r' j7 c8 M% h1 h
    xl.Range("A1:I1").NumberFormat = "@"; s8 X5 a  o" s- A3 v0 }* Y  v
    xl.Range("A1:I1").AutoFilter7 |( y# ?) d" P5 F! ~  L9 U
    xl.ActiveSheet.UsedRange.Columns.AutoFit
4 ^- m: k0 }6 U$ O    'Output Report Header5 E9 W  V9 W. _5 n+ J8 l7 A
    xl.Rows(1).Insert2 t# ~6 @( A, _% t" E" u
    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now
; k6 F9 l$ c4 ]6 A4 X) A( u    xl.Rows(2).Insert
: _4 q! A! N; X  X& R+ w* Z    xl.Rows(1).Font.bold = True
  @$ q! M3 b$ F8 r" M    'Output Design Totals1 L. x9 @1 I3 X' v! P# E
    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 1
! e# p" I8 f9 X8 `    xl.Rows(lastRow + 1).Font.bold = True0 d* ~5 z" O% Q# `+ w
    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count9 p/ D& x2 |& i5 n2 a: k# k& x
    xl.Range("A1").Select7 i5 ~7 j1 F% f  s1 }
    On Error GoTo 0 ' Disable error trapping. : ^# ?. j7 _/ P4 h+ _& k1 W
    Exit Sub    4 d$ u  d3 K, |

1 I9 Q2 L9 ]" S5 bExcelError:
; N7 O, v# \# j! U    MsgBox Err.Description, vbExclamation, "Error Running Excel"
7 H& z) H& M7 N; v4 y2 O& v0 \* z    On Error GoTo 0 ' Disable error trapping.    & o# U5 u8 A. u7 y) @3 ~
    Exit Sub. P; s& }3 W; R; e
End Sub
, b, p. ~/ i  N1 f& r! I, Y$ V, H8 x: {, O$ g) `- l9 D4 [. G8 g
Sub FillClipboard
  ]* w+ L3 d  p  r    StatusBarText = "Export Data To Clipboard..."1 {  T0 v6 J5 X" \1 ^
    ' Load whole file to string variable    3 C6 \- [/ R6 g+ T* z: _
    tempFile = DefaultFilePath & "\temp.txt"" W) O4 x5 _5 T4 E& w
    Open tempFile  For Input As #1
% m( Y# m+ N; F. m    L = LOF(1)
6 u" @/ p" l, l: z9 g4 F2 E    AllData$ = Input$(L,1)
9 k4 k7 D' P& M) \) z1 d    Close #1& D* T$ X  p' M  d2 Y
    'Copy whole data to clipboard
7 N+ W$ C0 t" v( H    Clipboard AllData$ " C6 j, J) ]4 R: v1 d
    Kill tempFile
( ^; g4 [6 {! w+ F+ \! C    StatusBarText = ""9 h9 V4 c5 d9 c. W3 @2 S
End Sub' L/ v# ^4 Z8 K
Function AttrValue (comp As Object, atrName As String) As String6 p7 A( c  J4 b" [/ ^
    If comp.Attributes(atrName) Is Nothing Then# g" s* l& t. r6 n' k8 h% T
        AttrValue = ""2 l2 ^. X$ f+ h2 w& Q# ]; S
    Else
* G/ H- ^* d1 B        AttrValue = comp.Attributes(atrName).Value
! c' y0 c7 u4 U/ b# ^1 X0 W( Q& ~    End If4 [  P5 E6 z9 H
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)4 ]; S1 P0 J% x3 h' E5 @: d
        symbol = Mid(symbol,1, symbol_len - 2)9 l. a( G( u' g0 A. W+ P

. d5 d& `% z0 M- `! S这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑
7 c' j5 I0 Q4 P, W! R$ E) g; n  V9 F# ]
难道是数组:---
) p9 K% f/ s& [* W9 C多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组: " J, ^+ G  H( n

( X/ P! k/ \& N7 E, yDim A(10)
; w. Q7 g$ H4 L0 _/ N虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。2 I' d0 i+ x6 X0 E

2 c0 y& _) [! x, D0 B: z  w$ D在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示:
& Q* b3 R8 L) H/ O. Y# u. d3 K+ l9 K& w$ p/ I7 y& y: e
A(0) = 256$ a# ~" W- S  K* i
A(1) = 324
, z# J1 `% [! H+ D A(2) = 100" Q& q/ S5 M' A  _) b# G& y
. . .; _1 I$ B" T1 A# y+ w
A(10) = 55
4 u4 J7 ~2 e! x7 C" a4 ^  S与此类似,使用索引可以检索到所需的数组元素的数据。例如:
1 V6 V4 x4 M- h) A
) U! L+ r9 V6 K  b . . . " W+ U7 i0 R* Z
SomeVariable = A(8)  
% E' `( f5 P1 B; R* ] . . . : i! B' D. u) s* S" M3 p. R
数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组:
$ X0 N7 k0 C, S1 U) F- \/ y; G6 p$ b  N5 _6 Z6 @
Dim MyTable(5, 10)
4 I: s: e7 N$ @  O' X在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。
( u. _8 B* o, c+ Q5 Z2 }( c5 I2 E5 {1 Y

* W; O2 M( G$ P# ~. _3 X2 b

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥
" {9 z- n4 t) m/ h, u- Y, ~  o1 Z( ^- r1 o; g* A5 q
        Next        
3 O1 F6 _4 p9 C, X        symbol_len = Len(symbol)
+ ^/ N7 S5 |% j* w: Q        Print #1,symbol_len;( @2 S- J" O9 l, c9 B4 b  ]2 I
        Print #14 [% W8 Y% S$ ?' j2 f( B  |) W9 ?
        symbol = Mid(symbol,1, symbol_len - 2)
7 @: A1 Z/ @& ?3 n! e: {! y0 V/ N$ n0 Y        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
! D) _6 f5 X  t( P. x' j8 V* `, A: |6 g        Print #14 V: l8 m/ s" z' ]% ^1 r1 v
    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意3 j0 H1 k- C5 U8 x

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:597 h/ ]& _) ^& f
EDA_BOMHelper花式出BOM,总有满足你的。

- G/ k& b4 V  c/ e嗯,有空研究下6 }  ?/ F6 @; g+ Q% q/ D
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-10 08:15 , Processed in 0.076669 second(s), 40 queries , Gzip On.

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

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

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