找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 85|回复: 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 | 只看该作者
网上找了一个
% F3 U' b9 y4 o( w* {Dim fn As String0 A" b" ^" E5 @6 C
; s* U2 _- H& K- H. U
Sub Main
; Q$ ^  n6 b! s# C0 |7 n    fn = ActiveDocument
+ {% x6 ~# {- M. e    If fn = "" Then
8 _- R) b1 n  I( @5 E        fn = "Untitled". @: x' ^! b# G+ M' c1 P# [  q
    End If
/ {7 \% [7 Y" i+ z# U1 ~1 \4 P
5 p% I: h- p6 H* U1 ^" B    tempFile = DefaultFilePath & "\temp.txt"
, A$ }+ L# n9 l& h3 y" C    Open tempFile For Output As #12 k! V/ M' |/ \) y. S, L7 x+ F
    item = 08 Q/ `& q0 j8 P
    StatusBarText = "Generating report..."  i0 Y) }# G1 P4 H9 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"
# u, p0 c& P; I% h) w3 V    For Each pkg in ActiveDocument.PartTypes7 J4 x$ \6 o: e  ~
        'Print #1, pkg.Name; vbTab; note* M. C, \' ~  ?. N3 Q
        qty = 08 ]" [; ?2 J- w! `  Y4 r# G# _
        value = ""4 C5 G, b% X) n; A
        description = ""+ X/ g2 O  m# c7 w! }( L6 T4 c
        manufacturer = ""
8 ?' C( u1 Y  \& s8 r9 n        pn = ""0 f7 f/ u! c5 B/ s4 R+ S; ?7 R
        manufacturerpn = ""
6 u7 X4 K( K: A+ e        symbol = ""2 V; b. v# f& s1 m2 z* r& p/ @
        item = item + 1
! p/ x/ Z/ \5 i5 N  [7 i, W        'Print #1, item; vbTab;  l! K9 k7 X# F4 m; p
        For Each part In pkg.Components* [7 |& y3 }' H9 n, D" p
            value = AttrValue(part, "Value")# e& b( E3 \7 S8 D
            description = AttrValue(part, "Description")
6 R! l% N* E% x6 T3 |            manufacturer = AttrValue(part, "Manufacturer_1")
1 w! U4 j$ c, u0 Z, z* j' x* F            pn = AttrValue(part, "P/N_1")3 j, @9 M2 G0 C, Y- k
            value = AttrValue(part, "Value")   
+ x* j: o$ R1 J& k) E            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")
  X4 P3 B' o+ r# a; o. h! I, a            sysid = AttrValue(part, "SYSID")) g3 ?/ b( _6 b
            qty = qty+1
+ y, Q, J4 U  i0 }2 R% C  ?            symbol = symbol + part.Name + ", "
& \# W) s$ n  M3 e        Next        # x( L( Z( s3 o- O: X. ?1 C! _5 ]
        symbol_len = Len(symbol)
0 G& h7 N2 x5 @: L  E4 B        symbol = Mid(symbol,1, symbol_len - 2)
8 u; D' x9 k- f        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;: e" e, \% ]2 S  q# W# X$ B( ?
        Print #1
6 {) o: m7 E- ~, p. x0 ^    Next pkg4 @  x, K( B4 }" H% y
    StatusBarText = ""
- E* `7 A" D0 J, e# p- D    Close #1
- Y# m+ z8 S4 E) u    ExportToExcel. _( I+ [$ k0 b+ ^3 @) D
End Sub9 d# a* |* Y+ S
2 c/ G+ T3 |8 z& n0 w* t; N/ d
Sub ExportToExcel
$ k' P# s. z8 n; P" ?+ x" N. @    FillClipboard6 U# M( R# {% f" q: o; a) s' S/ E5 m
    Dim xl As Object0 s7 _) q. l/ M. _& h; \
    On Error Resume Next
1 i9 ?. _3 b/ ?' N    Set xl =  GetObject(,"Excel.Application")" A5 C; ^, N2 Y  m# t+ M0 b
    On Error GoTo ExcelError    ' Enable error trapping.
* R- m; V9 B; ~: E1 q    If xl Is Nothing Then
/ T9 [8 l' _$ Y3 A5 L7 X' {        Set xl =  CreateObject("Excel.Application")
% S+ n7 V' e8 d: F    End If( U% X5 n  h, d1 m% @- p, A$ j
    xl.Visible = True- N; P/ Q/ }" r# I- O$ ?
    xl.Workbooks.Add
# W7 y6 T1 a. M    xl.ActiveSheet.Paste
& A0 g, y' i8 H9 W' {) \6 i    xl.Range("A1:I1").Font.Bold = True/ `9 Z  u( |# u' s; j4 G5 _
    xl.Range("A1:I1").NumberFormat = "@"
9 i4 P: V2 G2 R4 n& c    xl.Range("A1:I1").AutoFilter
. R2 Z9 N. y! t    xl.ActiveSheet.UsedRange.Columns.AutoFit6 J' O; H/ k0 j' W
    'Output Report Header& N" i" N+ J* G3 w! R2 S
    xl.Rows(1).Insert
1 ^9 {, Q8 K( R; O    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now9 R4 \3 {8 K' b7 e0 T  N
    xl.Rows(2).Insert
4 d  e3 n' s) o    xl.Rows(1).Font.bold = True
- O) v3 y" o6 s0 X! b- D4 o    'Output Design Totals1 N1 \1 u, N9 Q4 I, T
    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 1: s- r+ T9 E+ m8 t1 ~
    xl.Rows(lastRow + 1).Font.bold = True
1 I  H2 q% a, z5 r    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count$ n( V7 |8 U7 j/ G: r
    xl.Range("A1").Select$ j: X5 [& O7 W/ B# ^/ ~
    On Error GoTo 0 ' Disable error trapping.
/ Z# ?4 {) D% F1 j+ M9 b; l    Exit Sub    " [' K4 `" |% o* X9 e8 m

0 X) ^) ]2 i5 w: H( CExcelError:- m6 E9 K( c; k$ ~; `( C
    MsgBox Err.Description, vbExclamation, "Error Running Excel"
# ^4 q8 J8 @9 F1 U    On Error GoTo 0 ' Disable error trapping.   
7 U: w: D- f1 y$ L5 O    Exit Sub
- c5 Y/ `! u, g: YEnd Sub. u9 L' k) m& f. G" f
3 H/ E! k/ Y6 U+ ]
Sub FillClipboard) B- y8 i  E5 f
    StatusBarText = "Export Data To Clipboard..."
! n+ ^6 Q) s0 A5 l    ' Load whole file to string variable    : t, I' s+ s: _. |/ o. i. j" V
    tempFile = DefaultFilePath & "\temp.txt"2 p8 n% u8 f3 c6 y$ `6 e
    Open tempFile  For Input As #1
2 j3 |& _% h: r$ Y+ j" g+ Y    L = LOF(1)
. Q; T) ]4 H8 W    AllData$ = Input$(L,1)
7 z# ?4 r- y/ d+ w0 ^( u    Close #1
* S. u1 @- D# f% o4 ?* M8 ^    'Copy whole data to clipboard* H6 l0 P7 M, _$ w* r, ]
    Clipboard AllData$   J, u0 c7 I9 q2 |, }' e2 ]
    Kill tempFile
# i7 {9 Q$ q# `2 N7 q& e( ^# }    StatusBarText = ""2 Q( p! t( ?, v1 D' e5 o4 R6 b; h! R
End Sub# V( P% d0 t7 @, M8 N1 ^2 y
Function AttrValue (comp As Object, atrName As String) As String
$ c) o- i! E/ k) E6 [7 U    If comp.Attributes(atrName) Is Nothing Then
, Y: l! z' G8 e* Q' Z6 w        AttrValue = ""4 P- y- }0 Y- L: I7 |; ?
    Else
% H, z2 }7 s; N5 I! A9 _        AttrValue = comp.Attributes(atrName).Value# I; e, k, }' Q0 I  G
    End If
$ }1 g( Y9 U) I! c% 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)' M9 B) i7 Y% ~) z0 j# E1 T3 @
        symbol = Mid(symbol,1, symbol_len - 2). j& q( d- O- g: A

* d: R% z8 H2 \" Y) F; z3 t+ ^这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑
/ H, A5 D, ]$ {
! p/ F9 C; y2 J难道是数组:---
( J$ j4 s. I1 m6 i多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组: 4 v0 b6 S' y9 y% D
" i9 o8 H5 A  D5 t9 D0 z2 }0 i" [8 ^/ B3 o
Dim A(10)2 G/ p! m8 P7 P& z# v: f* C- I
虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。  }' F. b/ g% v! _, v
$ E/ f$ h8 B+ _. @* t) ]
在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示:
  j4 z# o) X( s/ I
# K( e- i8 Q  m( y' V6 Z; \/ t7 o A(0) = 256
! v" ]% U! D- \/ t2 c: F A(1) = 324
- z& I3 j' F6 T: B A(2) = 1008 d5 E$ Y$ `* i
. . .; p6 E1 ?+ L6 }& u+ f3 ]- H
A(10) = 55
( B# ?8 w# K* }" O; k; L与此类似,使用索引可以检索到所需的数组元素的数据。例如:" M- d* j6 G4 n$ E

( n1 E, d& R  z$ Y* Z* x. ? . . .
0 Q" |- a/ c: L. w SomeVariable = A(8)  
: g9 H/ E) q! m6 D3 k  O* x* w . . . ' ~1 _* D; H- B9 o$ ^8 M/ U! D
数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组:
4 R% H. F! T2 j4 D& v+ S& p: g4 S6 E* L
Dim MyTable(5, 10)1 Q' X7 S' S' n
在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。$ ]$ [( w% p, c+ A3 C" H

3 z+ a$ _. `" o8 z+ c7 p, V6 F* }" n, i7 T, f; ?# m1 [

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥6 S6 ]% r4 Z. @1 I
6 i0 P9 ^- D- d4 y0 E
        Next        
, \1 s1 E! I7 C( Y$ t$ A# @        symbol_len = Len(symbol)
; U# G6 j8 R7 G: N        Print #1,symbol_len;; E+ N+ a; v7 M2 F9 U: q" `
        Print #1
$ |$ `: a9 N% Q& }$ I& _" a        symbol = Mid(symbol,1, symbol_len - 2)1 \; H/ ?  j$ q+ t
        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
. S' Z6 ~) W( T; t, }* Y        Print #1
  ?* f8 o' _9 g! I/ B    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意
. k0 k6 v! I- d0 A' d

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:59
  T. p" x3 ~$ O! A$ H& x2 T+ g: \EDA_BOMHelper花式出BOM,总有满足你的。
# \8 }) O0 q9 O0 S
嗯,有空研究下
3 H% x$ j3 o& F
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-3 21:17 , Processed in 0.097828 second(s), 39 queries , Gzip On.

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

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

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