找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

电巢直播8月计划
查看: 109|回复: 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 | 只看该作者
网上找了一个
9 l' f+ i8 [3 S9 V+ o: F6 VDim fn As String% X: S' U/ t. a. e, \$ I  @- N
" `$ |& M* D( N$ ?; s2 H
Sub Main
/ X" G! u5 i& |5 Z* b6 G; ?& j8 }% M    fn = ActiveDocument! F8 k3 V. d: t( Y4 f) f) b
    If fn = "" Then
/ s7 r5 K6 G% r% m; E, C        fn = "Untitled"2 _8 z% z8 j. Y0 D1 ?% |1 j: e7 @
    End If/ Q6 \' g9 ]5 M+ l: e# B

% K# ]0 C' H. h& o& v    tempFile = DefaultFilePath & "\temp.txt"- t+ w+ D# y3 M+ v8 `
    Open tempFile For Output As #1
& A/ ?7 ~- s( m% D    item = 0( I* N1 Y; ^/ l6 B' {
    StatusBarText = "Generating report..."
/ [* s" L6 a8 _1 p) y2 g5 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"
, h! E$ z$ B( N0 m    For Each pkg in ActiveDocument.PartTypes
. G  |6 b) W; D" _# I. E. H        'Print #1, pkg.Name; vbTab; note  y) X% a6 U" y
        qty = 08 ?3 h2 c' u; \# Q% {
        value = ""
- }7 T, V% G/ R8 @; L% W5 }9 I        description = ""( w5 c* U' l* d
        manufacturer = ""
" {! A3 K4 s; M$ h        pn = ""- O2 L! c8 H  r5 _
        manufacturerpn = ""* e6 ]2 l/ t4 x3 ^
        symbol = ""
+ e# W0 W$ |; f7 R  l        item = item + 1
' `/ F1 V( o+ s( H; O) z        'Print #1, item; vbTab;
8 b8 p- t' b& J        For Each part In pkg.Components# i) k9 H7 R/ N+ x3 Z+ a' g7 q
            value = AttrValue(part, "Value")! h0 Q0 w" A7 I* t7 y' B7 F
            description = AttrValue(part, "Description")
# i" E9 e" l7 O. N# ~; R            manufacturer = AttrValue(part, "Manufacturer_1")
9 o: s8 r9 X; u3 q, w8 p# @  M            pn = AttrValue(part, "P/N_1")1 `" W. n1 \& @2 q% u
            value = AttrValue(part, "Value")    8 a" C/ D+ C7 B5 V% e
            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")2 A, I$ Q+ N! p( \% Q
            sysid = AttrValue(part, "SYSID"); d' \) N% M( X& s* [) T
            qty = qty+1
6 }5 a& A- S/ c            symbol = symbol + part.Name + ", "
2 S8 q% e* `9 F9 k3 m& h        Next        
% Q2 g2 v5 o9 Z        symbol_len = Len(symbol)
* \& z# L8 ]; f( l+ \( ]) t        symbol = Mid(symbol,1, symbol_len - 2)
& s& s( W( B* Z7 ~        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;. F$ f8 B$ b- m, C4 R3 B& F
        Print #1
3 y) x  G0 i$ T1 O9 I" |    Next pkg" d: F5 \( x, s- H
    StatusBarText = ""
6 [- m$ i( K/ u, {$ ^& b    Close #1' q$ X9 z- D9 ^( A2 T
    ExportToExcel
$ F% X! L0 w' N7 REnd Sub- I: x" D& x# [7 x, n
3 ^  A9 m9 S2 J6 f
Sub ExportToExcel
4 s7 E7 y5 P$ i9 `    FillClipboard
( ~7 Q7 m0 B4 T+ f    Dim xl As Object
% M/ M& j! m  F9 E( }; C% E    On Error Resume Next
1 g6 R' Q3 V% \: U    Set xl =  GetObject(,"Excel.Application")% A$ o6 O! U/ [
    On Error GoTo ExcelError    ' Enable error trapping.
" [/ U! P' p5 L& V5 A, H    If xl Is Nothing Then. D6 K& `5 g. s
        Set xl =  CreateObject("Excel.Application")
- p( b! p) a/ _+ y' E7 k; V    End If
- r- r  ?4 [/ ?8 j# n3 q    xl.Visible = True' Y. e# x. |5 L! ?0 N3 c
    xl.Workbooks.Add- N& a% c7 T; }  G3 C$ D1 |8 w
    xl.ActiveSheet.Paste9 ?$ t0 a1 v2 t- \- c* I
    xl.Range("A1:I1").Font.Bold = True
5 q) ^% ?% E% F5 V& Q7 s; A    xl.Range("A1:I1").NumberFormat = "@"% C& P- d8 _4 z3 F3 Q: M  u
    xl.Range("A1:I1").AutoFilter6 D+ f# F8 L5 N  D, ]: K; b
    xl.ActiveSheet.UsedRange.Columns.AutoFit
# b: Z4 I2 `) |$ H; b    'Output Report Header
- e$ i( D5 W( c; v, W& a6 m    xl.Rows(1).Insert
* l7 w- J+ o3 Q1 g; F    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now
6 {; H$ W" B. w8 ^7 X    xl.Rows(2).Insert
+ k9 T. h* ~! V7 y    xl.Rows(1).Font.bold = True: Y' V& D) ^* R+ ]. J5 _
    'Output Design Totals) f7 Q6 y  p/ o3 S1 x
    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 1: Y! b( l" u4 t4 J" c
    xl.Rows(lastRow + 1).Font.bold = True. I% G; O7 x0 {9 a3 o- u/ ]
    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count" Z6 H5 U  t' y" s  ^$ q
    xl.Range("A1").Select) f- {% Y; h% E" ]1 `9 a
    On Error GoTo 0 ' Disable error trapping.
$ Q! u' z. }: w9 d2 P5 N8 p5 |! T    Exit Sub   
: ?. h3 g$ o, E% y" m- g4 G
2 C6 ~1 e1 i; \2 C5 y' F  a1 nExcelError:
4 r. R1 F9 p0 I% ~, @0 a    MsgBox Err.Description, vbExclamation, "Error Running Excel"% w. j" u6 w1 U; Q8 m# b, l1 i
    On Error GoTo 0 ' Disable error trapping.   
" u: d/ c! y/ S* ~4 V    Exit Sub
  @7 a8 _2 S7 y( N- C5 t7 M/ \End Sub
% X% Z6 v! m! N
0 s  h4 ?5 X' f6 L* r4 RSub FillClipboard
7 G  W+ o( K! M5 A1 \7 W    StatusBarText = "Export Data To Clipboard..."- k8 B4 N, N, l2 v( G4 W) h
    ' Load whole file to string variable    3 S8 b% l/ a; @" X( r
    tempFile = DefaultFilePath & "\temp.txt"- M, o" t' j' r0 y4 B% L( @
    Open tempFile  For Input As #1
4 F& W( v+ M. p    L = LOF(1)+ a" w5 C' U' I$ @* C: k4 [
    AllData$ = Input$(L,1)+ _, e- l- N4 Z' @# A- T, Q
    Close #1; G- p( {0 A5 y  m# [( k1 ~
    'Copy whole data to clipboard
! J+ y1 K! _# v9 \% A( C# a) L    Clipboard AllData$
# k. D, O- X$ X, ]2 g: H0 \. o    Kill tempFile" i' k3 g( x5 [2 k3 N; D7 s
    StatusBarText = ""
6 ~" c% m3 ?% qEnd Sub
- Y$ N; `3 R& o8 OFunction AttrValue (comp As Object, atrName As String) As String1 x( n& w6 h7 f) c
    If comp.Attributes(atrName) Is Nothing Then$ R6 v' l* b( ?& c) C' ], E
        AttrValue = ""
2 I1 @) i, W/ \) X" r6 E* F    Else3 u4 f0 l) `7 K! S
        AttrValue = comp.Attributes(atrName).Value
. Z4 O4 \' j$ Z3 C- f% a    End If) |* Q, C5 q, I+ T
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). @7 T1 L+ R3 y% F: I$ w
        symbol = Mid(symbol,1, symbol_len - 2)# p$ s" _5 g& \% ~
, q+ I( S+ c' C7 G: s* t2 E
这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑 ! [- Z4 {" |$ @" a5 ]2 X
) n: O9 u: S! @0 T$ h9 X/ p
难道是数组:---; ^8 L+ _9 f1 R1 ~. @0 I0 \
多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组:
0 J& F$ e3 x% ]7 J- a8 v) m
7 b& y8 l2 Y4 RDim A(10)
% X5 H5 Z0 K# z! Q7 r% {- |; }) b虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。: _' b1 k; e/ I' ?: W" D
+ t+ \' G. X& ?
在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示: / c8 r* r2 q$ h: f) H

2 H( h! A3 }* Q A(0) = 256
; j$ i& d, s' O+ M- V  \# ~ A(1) = 324
9 ?" R, e& a  }, m% D A(2) = 100: V# r" }" j  ?; f8 e
. . .
4 y$ ]4 {$ k3 H7 O1 ?- a A(10) = 55
# K; s1 b* s: b9 m, ?与此类似,使用索引可以检索到所需的数组元素的数据。例如:
6 e/ t3 H0 S1 v
1 |5 A* `% U$ y9 Y: z1 o . . .
. @& Q+ _- t4 b' J' S. a8 M, ?/ Z SomeVariable = A(8)  
* B7 |% a% }% G$ b/ i! p1 s . . . 4 E! j( g; T2 G
数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组:
/ C- [" v: j# _1 ]8 u: X1 Z( j2 M3 _  I% |8 h
Dim MyTable(5, 10)
+ N% z* t+ W' H( V8 a% r2 F$ W在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。
7 W: |( \1 O# u9 f. `* T
1 L6 E7 U$ w8 W/ @% F3 j. m% ^6 u4 k

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥' T6 p; ^9 w" m
6 [1 @, E# I2 t/ c. ]1 E5 a
        Next        4 f" N& j3 J* I3 I& B2 _* c& F
        symbol_len = Len(symbol)
' v/ U0 [1 M. x6 k' g        Print #1,symbol_len;
5 c+ A; [3 z0 j+ Y; W4 r7 N        Print #15 W  @) q3 }) K; |
        symbol = Mid(symbol,1, symbol_len - 2)3 V* @5 H5 [( s/ Z$ B8 l
        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;8 J$ `3 z* K0 H! @1 F1 w8 {
        Print #1
& a7 y" D' u- ]    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意( i+ x6 B4 a) e3 y: B

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:59
! s4 r# Q8 K8 }3 @) REDA_BOMHelper花式出BOM,总有满足你的。

% e* i( }2 F, n7 @嗯,有空研究下
3 g) }# m1 s- }  l3 W
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

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

GMT+8, 2025-7-1 03:39 , Processed in 0.071483 second(s), 37 queries , Gzip On.

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

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

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