找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 80|回复: 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
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:59
+ h) d8 ~) y& y9 M, eEDA_BOMHelper花式出BOM,总有满足你的。

( c8 F1 w3 k$ |% l2 i嗯,有空研究下
$ \+ b# x. }) o: G* k% c

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意  n4 c; \8 f$ N" m- v3 J8 k7 Z

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥( S& k9 }' @, w' |" d. O: i

2 b+ {! x0 f+ A, O/ {8 q        Next        % t, [* k. U9 \5 ?+ q- _; E
        symbol_len = Len(symbol)
8 K' g' u0 |7 D9 y5 E4 h. q& Z# u; g        Print #1,symbol_len;
# y1 D( `6 m3 ~# z        Print #1* s2 _% w; D$ \! ^9 H3 [+ K" n
        symbol = Mid(symbol,1, symbol_len - 2)
' {! p# _  Z: t/ G" d, W; S        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;
/ q5 G0 }/ ?1 T( H7 S0 d% d* s        Print #1- a) B! f9 w/ A& V
    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑 5 K8 S' m' b4 J6 l+ I( i; w  {  z
* Q$ ~# V6 X( k( V# i, {( `
难道是数组:---
. h2 i) Q9 Q8 G多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组:
* S8 @' z4 X% P7 O! E
9 n( A. {6 W3 F( l* hDim A(10); L% l! Q) H0 i0 |: b
虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。
! i2 W+ o7 R" p' q6 U" ?, X% T2 p2 ]; J, V& p
在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示:
$ q; r' {) S. U0 G3 k  b/ A) i. V7 a4 {, |! D
A(0) = 256
3 b3 O- q0 Y2 c7 k6 c) j; F A(1) = 324/ `. D6 N- M' Y- }5 m( [  N9 z
A(2) = 100
" F! f% K0 d  [$ K . . .6 c9 U  r7 ^1 ^# ~0 h
A(10) = 55
7 p4 U1 J  n! z# Y$ l1 q1 N" m与此类似,使用索引可以检索到所需的数组元素的数据。例如:
4 N9 p2 i+ `$ k0 ^4 R' ]4 v5 S' h+ |) T3 }5 F( {  c! m
. . .
2 q: _: O% U6 \( Q" v SomeVariable = A(8)  9 l. w4 R8 z& g; _' l$ z' V- X
. . . 2 L1 z+ H+ U& j& P5 l$ N6 c
数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组: , g2 P. s1 m9 _# `$ S+ D! x

( H! c/ H3 H5 j; m! P Dim MyTable(5, 10)
* N: e* D1 l  r3 j$ H( ]8 \在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。7 K, U$ e! X. x4 O( H0 b" [' R

: x, W& \# r8 }6 g3 ^9 T" d3 P5 N  s/ e! e# v1 G& U& W3 x, ^& J7 [

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
4#
 楼主| 发表于 2018-6-26 18:48 | 只看该作者
        symbol_len = Len(symbol)# t4 W2 b; f  {% u
        symbol = Mid(symbol,1, symbol_len - 2)
3 M" R# p% n. b7 y9 g: ^* a' Q# k
这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
3#
 楼主| 发表于 2018-6-26 18:46 | 只看该作者
一点点来吧,共勉

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
2#
 楼主| 发表于 2018-6-26 18:45 | 只看该作者
网上找了一个
; t5 a- ]# b0 S5 bDim fn As String
2 |" L- d8 `# S6 F% W, j& Y2 i
4 Q6 X/ M$ o. a3 q% y/ fSub Main" s- l* K& G5 C9 M) F
    fn = ActiveDocument" A, s# k$ s( ?: _: E/ c
    If fn = "" Then1 `% b, i6 o8 b& w1 f; Y
        fn = "Untitled"( Z6 z, y; N; B; n2 d1 o- l" U( z
    End If
/ K6 s: X- f. W
1 ?5 v# \% h, }/ _5 g+ j    tempFile = DefaultFilePath & "\temp.txt"& g& N7 [2 j. M: P3 n; J- y
    Open tempFile For Output As #1
: v$ X4 \3 b7 H& |) w. a# H    item = 0
3 [: l) n0 y0 G: x- Z$ r( v    StatusBarText = "Generating report...", Q6 Z4 D8 y6 H# }+ |5 ~; u' ~
    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"& f8 v) f& d: R9 x  `' h) H
    For Each pkg in ActiveDocument.PartTypes/ q) v8 T. @8 @4 z1 _
        'Print #1, pkg.Name; vbTab; note
- y  h3 m7 G0 Z: ~        qty = 0
& ~) R) C$ q5 ^4 ]. j$ r$ X        value = ""+ U- V. _, N- Z, G" U% B8 ]
        description = ""9 D2 {. u; ?$ |! u+ Z5 L% ]# g- I9 ?' U
        manufacturer = ""$ f1 X+ v) y9 }4 `% P% \
        pn = ""+ j( N1 S6 m2 k" I# @8 T4 C
        manufacturerpn = ""
. B  t/ P3 t8 R+ A1 O) A6 u        symbol = ""
# f+ X" M/ Z! D7 h5 w# F        item = item + 1
8 A& j" l; A2 U        'Print #1, item; vbTab;& ]/ q6 v5 m6 H' b0 S! h
        For Each part In pkg.Components& Y, {: q% d! y! V& a* D7 f( z8 b4 r
            value = AttrValue(part, "Value")2 G$ Q% s5 Q8 u% C- V5 z6 A
            description = AttrValue(part, "Description"): M2 ]( j+ h$ {1 X& B9 e
            manufacturer = AttrValue(part, "Manufacturer_1")0 f1 X9 D. L" y
            pn = AttrValue(part, "P/N_1")
6 o7 _0 K  O+ }- I! D& a2 [            value = AttrValue(part, "Value")   
) _# |6 t# J: n5 C            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")
- ?( ^3 Z0 ~1 A& X7 f6 `            sysid = AttrValue(part, "SYSID")( r! C( s* @( d
            qty = qty+11 r, V+ Y- X1 Z; }% l. w, j
            symbol = symbol + part.Name + ", "
  a  [% E0 U3 F, O8 G        Next        
8 p9 a! q( J- K6 c* c+ I) v' E        symbol_len = Len(symbol)
4 {4 [1 D- e; W7 O9 `$ }        symbol = Mid(symbol,1, symbol_len - 2)
6 M+ ?* b+ m7 t# _        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;5 h$ D- H# i2 Q% E# w8 \
        Print #1& R' h8 p5 h9 Q, `& v: e9 T+ `& K1 q& g& T
    Next pkg
2 A/ _/ E7 l* f8 Y2 F4 z/ V2 a    StatusBarText = ""
0 {3 y+ j  }0 J2 z: _& j    Close #1
* W2 [8 n4 Y# a  B! ^8 W# a9 D    ExportToExcel8 p1 n; K7 Q* W$ _& p) p( W! L1 f' I
End Sub6 V. U5 k5 T% F& M4 e1 Z# O4 D

/ {" k( c, p& v5 F' xSub ExportToExcel
, ^, G( p3 O6 O- C    FillClipboard. p2 l! U7 f1 a/ Y
    Dim xl As Object2 N# p8 y2 [2 h3 M
    On Error Resume Next
2 Q7 Y7 o; `0 d/ W% x, P. C/ r    Set xl =  GetObject(,"Excel.Application")
- r, J& U  S2 M) B1 S! b+ l2 s% b    On Error GoTo ExcelError    ' Enable error trapping.
7 L( S; U3 U7 r& g& k5 E9 D  H    If xl Is Nothing Then) r, T( H: M+ ?, P4 Q. b, k
        Set xl =  CreateObject("Excel.Application")
' I/ y; D, Z- w$ H4 c/ r    End If
0 k; n5 x- V9 N" n3 u/ R% j    xl.Visible = True
8 I8 W/ [$ K& l) |! Y    xl.Workbooks.Add) s1 Z: g8 G  G* ~9 y% n! _
    xl.ActiveSheet.Paste
& L0 G: {) d/ L( v4 ~( Y    xl.Range("A1:I1").Font.Bold = True
6 M( e6 q  H4 F* t3 j! u4 q! ]    xl.Range("A1:I1").NumberFormat = "@"
4 r- e, L/ f: g) P5 M    xl.Range("A1:I1").AutoFilter. p1 E! h# W$ Z2 R. l
    xl.ActiveSheet.UsedRange.Columns.AutoFit
! T% G* d6 a: E8 a9 J    'Output Report Header1 e+ G% v* b0 G8 j0 y8 w$ C
    xl.Rows(1).Insert( E5 @3 Y& b# ~3 O  U
    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now1 [, e& W1 l5 M7 E7 C
    xl.Rows(2).Insert
/ F+ m* t6 O6 N2 X5 b    xl.Rows(1).Font.bold = True  i5 D8 Z5 h( V: H5 Q- b2 L
    'Output Design Totals
8 ]! q, ]3 e" H) W    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 19 E6 _# }; Z, ]0 N4 F* T8 g( l
    xl.Rows(lastRow + 1).Font.bold = True
  w- i" e' C9 ~. N* K4 }# B* s2 T    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count1 s# r2 t$ Y/ B  h' E8 S* T' w  G$ K
    xl.Range("A1").Select
$ n/ N8 J$ o' Y5 a! `8 \    On Error GoTo 0 ' Disable error trapping.
5 j% C. Q6 E, Z6 g8 a3 S& @    Exit Sub    + H: k/ a: }" f. E4 H" N/ a
- k- @0 W3 A8 T2 Y0 r$ J
ExcelError:5 E( @9 r( \3 T
    MsgBox Err.Description, vbExclamation, "Error Running Excel"' w2 E: k6 i( w' k# M
    On Error GoTo 0 ' Disable error trapping.   
8 F& p: e: \- r7 E5 t) N    Exit Sub
; K) ?- Z+ U6 U1 p; F' oEnd Sub( }3 T0 ^+ i+ E, K3 w9 r0 J

$ c: T) w4 j* GSub FillClipboard" e: k+ s: k/ h
    StatusBarText = "Export Data To Clipboard..."/ G( g9 T0 h, ^4 q7 I' w
    ' Load whole file to string variable   
3 X8 J. t& c9 m  `, [1 f, F: a    tempFile = DefaultFilePath & "\temp.txt"+ |4 ^8 H4 ]5 f8 g' y0 u# `1 \
    Open tempFile  For Input As #1
) B' V' t4 n! q) S  m2 {! Q    L = LOF(1)6 ]4 K. M' M7 k- y2 ^" v: x* u
    AllData$ = Input$(L,1)9 q) \' ]9 ], f% L) _- w
    Close #1  L+ b2 }  X: d9 w
    'Copy whole data to clipboard/ k2 R. u: w1 e' d- [! T
    Clipboard AllData$
, k& g* [$ h# K0 k9 Q    Kill tempFile
( B& |( s6 @. {1 Z3 z    StatusBarText = ""* c7 [! x6 Q/ G7 b) Y! A
End Sub4 u1 D! B9 i5 o: b. G" R$ E' a
Function AttrValue (comp As Object, atrName As String) As String
% O" I' \- n9 H    If comp.Attributes(atrName) Is Nothing Then
4 q6 N) J1 \% r# M, t. E        AttrValue = ""
2 C: _! e5 w6 y" |. |; t* J8 u, E    Else2 [4 E7 A0 p  Q+ M& y) d
        AttrValue = comp.Attributes(atrName).Value
* m" k6 S! c/ ?6 t9 C    End If
& v9 Q7 H; {, |9 TEnd Function
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-9-20 00:49 , Processed in 0.062920 second(s), 37 queries , Gzip On.

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

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

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