找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划

PADS生成bom脚本

查看数: 106 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-6-26 18:44

正文摘要:

pads生成bom时,无法达到自己的预期,所以干脆自己写吧,但是,我不会

回复

linxiwell 发表于 2018-6-27 11:59
EDA_BOMHelper花式出BOM,总有满足你的。

点评

嗯,有空研究下  详情 回复 发表于 2018-6-29 15:43
qiangqaz 发表于 2018-6-29 15:43
linxiwell 发表于 2018-6-27 11:59
4 m( y  r& `1 c5 Z; }  `9 G5 p% jEDA_BOMHelper花式出BOM,总有满足你的。

  n4 j1 M1 Y. R* T: H嗯,有空研究下
2 l; u( m7 ~( P: s6 w8 M* @& [
qiangqaz 发表于 2018-6-26 18:53
加两行打印,看出来个啥
2 ~2 b9 s' L) D3 X+ U- ^, {  k) C0 D" b! e% d
        Next        
8 U6 ?7 s, V) v        symbol_len = Len(symbol)8 x/ k; j. u. E4 S3 n! B2 w
        Print #1,symbol_len;5 q* p7 V# R+ O. f0 t
        Print #13 q( ?: K  t0 f- q# R3 z+ {
        symbol = Mid(symbol,1, symbol_len - 2)
7 T5 T2 Y  v) s* |' u        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;3 @+ Y) \! M1 V  W" W5 X
        Print #17 }' a" k7 P$ ?
    Next pkg
qiangqaz 发表于 2018-6-26 18:52
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑
: |2 f& f6 L4 O9 Z6 j9 M
; R7 G# S# A. d难道是数组:---7 p; C! S7 Y) n6 d1 p2 \
多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组: : O. G3 N6 @6 p* @  w
2 s/ E% w2 Q! j, T
Dim A(10)9 V$ i/ l- T3 L5 Z" d
虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。
" g7 L6 }1 v- ]( b' w, e$ s2 y8 K
$ [" r% m! b( k- D5 ~+ o/ D$ U在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示: 2 l7 _/ ^6 R4 J1 X" G

+ h% _, a9 G, K- l0 C+ X0 N0 F A(0) = 2565 s7 @$ J& z  G3 K( G' |# [
A(1) = 324( S' ^5 T5 ~3 F: n0 f) Q: i8 h
A(2) = 100  W" m0 P/ C# a& Y2 |8 Q
. . .
) f/ p, M6 d8 `* q& m5 C A(10) = 55
; O5 a2 P7 J% H* ]; b3 \4 L与此类似,使用索引可以检索到所需的数组元素的数据。例如:: u5 J5 d+ m8 g6 b
! _$ |. {4 \9 X3 f: ]2 ]4 L
. . .
7 E; r+ y/ S+ W) e7 b+ ` SomeVariable = A(8)  
# _3 a* V9 A5 D$ F. { . . . ' V4 {. s5 w1 k. i
数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组:
  Z/ @6 q3 ~5 G) R$ f! U3 k* b8 S5 ]9 U  S2 P, [
Dim MyTable(5, 10)
% e1 k; D# A/ V1 Z在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。
# b* u; a; A( D1 d4 T3 n% X
0 j+ l$ p# a7 h- `* W  Q5 F0 r7 f# C% g) e7 H
qiangqaz 发表于 2018-6-26 18:48
        symbol_len = Len(symbol)
* K1 S. o- ]$ C- _9 k) C        symbol = Mid(symbol,1, symbol_len - 2)9 S7 q% F1 L) R( n( }# d

+ z% r1 d) z" S9 z; b% m, b这两句是个啥意思?
qiangqaz 发表于 2018-6-26 18:46
一点点来吧,共勉
qiangqaz 发表于 2018-6-26 18:45
网上找了一个/ V6 f$ n5 I% ?. m
Dim fn As String# g$ V* i! t7 U2 E1 J
: D4 _. k# e! {6 ~
Sub Main$ Q( p2 S- M! O& v7 B
    fn = ActiveDocument1 G7 M) q: k; L, z+ l
    If fn = "" Then
0 b7 u, @6 |+ [* l        fn = "Untitled"3 T; W) G: i  p% S# f1 o: K
    End If
: R7 K1 }1 }( \4 k( `; A- ^8 N6 {; Z0 Y# ?7 d& v
    tempFile = DefaultFilePath & "\temp.txt". q7 T' S3 E" }6 p2 ]: c% \- Z4 Z
    Open tempFile For Output As #1) f" Y/ g4 Y. c
    item = 0% k+ N) R# y# U7 P) X# D" W, d
    StatusBarText = "Generating report..."1 Q- V( H* i  i) _
    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 C9 l) m* |2 U6 v5 h( G    For Each pkg in ActiveDocument.PartTypes: W8 U1 l; p) C+ l
        'Print #1, pkg.Name; vbTab; note
1 _7 {0 e2 l, ?7 t        qty = 0
) q7 ]' q2 R. o0 w7 t% h9 i8 I        value = """ J( m' @; e  j0 A
        description = "", }4 `; {- e! Q: q6 G
        manufacturer = ""
) J. ^# S" H& Z  a        pn = ""6 i) M1 n: Z& y1 m( j5 y) ~* G- Z3 Q; J
        manufacturerpn = ""
# G+ ]7 X' n* x2 Z0 |+ T: X        symbol = ""+ V6 K- O, v+ T; f1 C" ?; ^: T& F
        item = item + 1
( d7 ~* `$ y# ?' E+ n7 `        'Print #1, item; vbTab;. t7 g- m. C2 W1 q7 S3 e: o  W
        For Each part In pkg.Components
! c6 e$ D# p* o# d3 F- m            value = AttrValue(part, "Value"), Q4 i1 y* K$ W& K$ @+ @
            description = AttrValue(part, "Description")9 t) Q, s2 s* J0 O0 R6 K
            manufacturer = AttrValue(part, "Manufacturer_1")! ]* P) q( ]! p6 d" E6 n, v5 n
            pn = AttrValue(part, "P/N_1")7 i+ |: z! R- a
            value = AttrValue(part, "Value")    6 v9 o1 r1 \+ d1 @. v
            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")
, ^7 s( U' I# a1 F            sysid = AttrValue(part, "SYSID")$ `, [& w2 S+ L$ w7 r* v  m
            qty = qty+1
* d) B& e* c* L7 H! ]            symbol = symbol + part.Name + ", "- @! O8 s1 J7 |( m, M. Z& o
        Next        
3 ^- o! M* _1 s, _' f+ X# |! y& h        symbol_len = Len(symbol)/ Z; ~5 ^8 }* y* i* J. U
        symbol = Mid(symbol,1, symbol_len - 2)! }2 O! t. [$ D
        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;6 I4 x  E$ ?2 g3 m# H3 |/ E  F
        Print #1% O& ~2 C: q  o( o8 B% m. X
    Next pkg$ x' j# j2 D3 @; b1 P/ Q: b/ |
    StatusBarText = ""# X3 z2 E4 u4 M8 `: @% ~( Q3 \- P
    Close #1
) q1 H  l  K5 g+ S$ v) B( T    ExportToExcel
8 l; ]. P8 a+ X3 E1 T" H& K+ m* IEnd Sub* D- [! R- E" C1 E$ }
1 n( E' \# F7 r! O
Sub ExportToExcel5 b+ W# Q: u9 j( Z+ u. p
    FillClipboard
: h4 }( C! @4 u7 }6 J/ G8 P( D    Dim xl As Object
$ d; [5 F) k8 M% C/ c3 ]    On Error Resume Next0 w1 ?" _* v/ ^9 l
    Set xl =  GetObject(,"Excel.Application")" U8 k; y" N: C* }7 X; E
    On Error GoTo ExcelError    ' Enable error trapping.$ |9 e) S! `  }- V  w! m" n
    If xl Is Nothing Then
2 O( U) l; }2 V( n        Set xl =  CreateObject("Excel.Application")- b1 p- J$ ^( t  G8 Y
    End If
6 R# R6 m& R; R# w+ _9 K: V' a6 O    xl.Visible = True
/ f  t% y/ J5 }6 H% J    xl.Workbooks.Add+ y$ S% u0 t9 ]# R+ ^3 b
    xl.ActiveSheet.Paste/ h# b. [% J1 g
    xl.Range("A1:I1").Font.Bold = True
9 o2 ]4 h( P" v, f* S/ o0 }/ @. i    xl.Range("A1:I1").NumberFormat = "@"8 M3 S6 _7 ?. g* @
    xl.Range("A1:I1").AutoFilter% C+ u+ J+ Q' d3 r
    xl.ActiveSheet.UsedRange.Columns.AutoFit5 J* Y9 s' x2 S9 K
    'Output Report Header
3 X8 R6 Z( ~5 D; S1 J: l    xl.Rows(1).Insert5 Q- h7 I. G! t
    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now& X! R( a+ s5 ^- a0 ~& Q
    xl.Rows(2).Insert
4 i* K( n/ W6 o    xl.Rows(1).Font.bold = True, x# E! e5 ^% r
    'Output Design Totals+ N. U0 ?! X* A! i
    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 1- Y6 f  n$ E& D3 |! x3 d3 j
    xl.Rows(lastRow + 1).Font.bold = True
; x" ^0 {: w0 E- f. y1 }. {1 k    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count) \1 J: j) C2 e" P' t4 D9 J+ {
    xl.Range("A1").Select
1 |+ C) i1 n5 l    On Error GoTo 0 ' Disable error trapping.
$ Z, I, g( p& R  M2 }6 a, V2 m    Exit Sub    ! L; G% N3 |  q( ]4 A
' \( L9 v# b  B' w
ExcelError:4 x+ I" h- A' `6 r7 m$ T( u
    MsgBox Err.Description, vbExclamation, "Error Running Excel"
, o) ~0 o, s% _    On Error GoTo 0 ' Disable error trapping.   
# R& t+ T( L1 B. e* _    Exit Sub
9 b4 T( o6 \- L/ U7 kEnd Sub: o# O, ]. Z. S2 |. i

, ?. `2 {/ G! D/ ASub FillClipboard$ l5 k. l& n4 g& R, B2 l# Q0 _
    StatusBarText = "Export Data To Clipboard..."
- u! _$ N, d3 S5 W6 L5 f  \4 G* N    ' Load whole file to string variable    / c9 D9 Z& @1 T& }
    tempFile = DefaultFilePath & "\temp.txt"1 ?: p4 {8 {  }3 k6 z
    Open tempFile  For Input As #1% ?5 w0 I2 q3 J' C; \! A
    L = LOF(1)% }, u# H) B. Q3 I( g
    AllData$ = Input$(L,1)* f" C! |1 w+ b" B
    Close #1; t" }) [, V% R9 X' X" m  c
    'Copy whole data to clipboard
9 O6 o8 _5 v8 i    Clipboard AllData$ 8 O; Z: J( q1 b+ S- T3 C
    Kill tempFile
, H! K' x! g/ Z& _! a' ?    StatusBarText = ""6 Z8 L5 [8 F: t3 u
End Sub" f+ W' W% F- k4 P2 {* I
Function AttrValue (comp As Object, atrName As String) As String; a, C, X$ G$ j: ?) H  T( o5 ?' c
    If comp.Attributes(atrName) Is Nothing Then
8 V" p( w0 p6 y% j9 e        AttrValue = ""3 y0 r, m1 A, N  Q. t/ s7 x6 L
    Else& R- {! R9 G' e
        AttrValue = comp.Attributes(atrName).Value
9 @+ e+ [- z! Y& q    End If' ]4 l  H' y- E5 z& z
End Function
关闭

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

巢课

技术风云榜

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

GMT+8, 2025-5-25 14:01 , Processed in 0.061971 second(s), 38 queries , Gzip On.

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

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

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