找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 95|回复: 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 | 只看该作者
网上找了一个2 a6 j. R1 |" j  |* T
Dim fn As String( S9 r3 {- h$ y2 \5 q

5 \0 l! p" U+ X$ T6 mSub Main
' A7 I: D) o; {2 s  M# u. p    fn = ActiveDocument. N& s; x: x2 R9 d- M/ x
    If fn = "" Then
8 u4 A$ V! o0 n& d        fn = "Untitled"
/ a7 N, I" E( e    End If
1 n$ Z3 Q% R# i) a
4 A1 ?, s3 v$ O- P  K& i    tempFile = DefaultFilePath & "\temp.txt"
2 a. H$ e# ~3 T, O" k    Open tempFile For Output As #16 I2 K1 f+ N4 B2 l& w9 N( e
    item = 0* E& U, l& S6 D# {
    StatusBarText = "Generating report..."+ e7 O; A5 P9 ]
    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": C, x. w5 v+ ?
    For Each pkg in ActiveDocument.PartTypes( M0 [9 x* {% j
        'Print #1, pkg.Name; vbTab; note
) w0 O- ]$ R4 \0 S2 t: A        qty = 0, j$ D. V$ B) \, O
        value = ""
. |9 f8 c" ?1 |/ \        description = ""
& \6 @  v; _& f' ]- T        manufacturer = ""! m5 c6 U$ u. J8 {- J
        pn = ""
/ t5 n/ `" k& l7 p3 N        manufacturerpn = ""
: ]* _0 p& }5 K# f7 F8 E* A        symbol = ""+ V1 r% B5 h/ A& C7 W/ f
        item = item + 1# L: H1 u: F* A0 D
        'Print #1, item; vbTab;! A: w- x: x9 ?- w" a" B) Q
        For Each part In pkg.Components
" c: W6 M2 E: P8 I! a" z            value = AttrValue(part, "Value")' G" a8 Q0 t8 F4 ?- P( z  q7 q
            description = AttrValue(part, "Description")7 F  S! V, K, C# q! Q1 [$ i
            manufacturer = AttrValue(part, "Manufacturer_1")
% n6 l3 W/ X4 k4 T+ R5 \( [" D# M            pn = AttrValue(part, "P/N_1")
# E  d+ @3 g6 X. z            value = AttrValue(part, "Value")   
2 Y( a7 I! l& l1 }" |            manufacturerpn = AttrValue(part, "Manufacturer_1_P/N")
4 X$ b0 r, A9 H0 X( H            sysid = AttrValue(part, "SYSID")
- d6 q; j4 m9 |            qty = qty+1
5 L- V, p0 z3 E8 A. f: [            symbol = symbol + part.Name + ", "1 f3 j/ H; J0 f: Y4 W
        Next        
, s: Y6 z5 t4 s) A3 @/ A& _2 j+ Y        symbol_len = Len(symbol)
6 Q0 X0 d% b2 U0 `9 }3 H        symbol = Mid(symbol,1, symbol_len - 2)8 q9 y0 u( @  {
        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;1 Q; X8 b. f$ a. Q+ f! g6 E
        Print #10 l) J) r, Y0 w& d
    Next pkg
; G- m/ a5 M& t    StatusBarText = ""
, f# c* B, ]- x$ Z    Close #1
. X* o9 O3 R! B( c7 m2 \1 z0 Y! X    ExportToExcel6 x# f7 g/ D: d5 k* U
End Sub+ q; u* X/ F0 Y
! N4 L. ~, ?: b, j3 M* p4 d
Sub ExportToExcel3 Y* j% Q# ~, v  \
    FillClipboard2 ~1 X; R( l7 M+ ?* `
    Dim xl As Object% |! b# V; p( |; a6 _
    On Error Resume Next% h: M/ K9 f+ `1 `
    Set xl =  GetObject(,"Excel.Application"). J) q' f$ l. p5 }6 Z/ y+ ~
    On Error GoTo ExcelError    ' Enable error trapping.
# s- E5 D' y' G6 g    If xl Is Nothing Then. Z. m! M' ?5 P% a
        Set xl =  CreateObject("Excel.Application")
" j6 |1 b! n* v7 y  w$ U1 C    End If
' E0 N& ^1 A+ h$ J) E    xl.Visible = True' L, U% F/ e2 \- ]
    xl.Workbooks.Add
0 Q7 C) Z$ L8 Y/ t# z3 }2 \' r5 i    xl.ActiveSheet.Paste" ]* N  k2 X5 v, F! J' b
    xl.Range("A1:I1").Font.Bold = True7 H# @: [" X3 d, L, L" a( z
    xl.Range("A1:I1").NumberFormat = "@"0 C' H0 q/ q5 _
    xl.Range("A1:I1").AutoFilter9 N5 |6 o# O5 w& ^0 ^; a& w, O
    xl.ActiveSheet.UsedRange.Columns.AutoFit
( g1 e, R  @5 V5 q# q    'Output Report Header
7 C: Z# P# h* _! g4 v    xl.Rows(1).Insert
  r' V* o9 O5 A7 S' r: G    xl.Rows(1).Cells(1) = Space(1) & "Part Report "& " WWZL-BOM " & " on " & Now# H% v" e. U6 i' R
    xl.Rows(2).Insert
' K4 c$ l& o3 Z    xl.Rows(1).Font.bold = True
- z+ L8 E0 [) |! n' K! D6 O5 s( L( k    'Output Design Totals/ k0 a( [2 z/ e6 N. H: _
    lastRow = xl.ActiveSheet.UsedRange.Rows.Count + 11 s' ~5 k4 l8 I1 k/ _& D3 \
    xl.Rows(lastRow + 1).Font.bold = True
' o1 v/ f/ H# k    xl.Rows(lastRow + 1).Cells(1) = Space(1) & "Design Part count: " & ActiveDocument.Components.Count8 i/ t8 `4 e" @
    xl.Range("A1").Select, N$ J. n7 z# d7 J, A
    On Error GoTo 0 ' Disable error trapping. " P, X3 u9 m' v% n6 u- u
    Exit Sub      [$ F" k6 N+ c; ~: E
( v- P% v0 H6 `: y5 Y8 s
ExcelError:
8 p# S9 v, B! l# H: k. ?    MsgBox Err.Description, vbExclamation, "Error Running Excel"  F/ Q$ b2 l5 [2 C( j+ D5 y
    On Error GoTo 0 ' Disable error trapping.   
# X. C% ]7 A5 M' }4 J: m    Exit Sub
' \5 d3 }; s8 t5 q3 U' h  uEnd Sub9 I& d! U2 S* I" E6 A1 A1 H1 u  x3 y

$ |9 Z$ }) x; l" D$ _Sub FillClipboard
0 ]7 a8 F# `% W1 R    StatusBarText = "Export Data To Clipboard..."3 D- |& I* X; \5 F  B7 i
    ' Load whole file to string variable   
- l7 `1 {3 P, y    tempFile = DefaultFilePath & "\temp.txt"8 \$ C$ H; U/ V$ x; W( o
    Open tempFile  For Input As #1
$ m' q. o$ q9 v; }! Q$ ~6 Z    L = LOF(1)- _% d, {/ r: f
    AllData$ = Input$(L,1)
% N7 a0 j& l: Y3 D% ?5 `    Close #1
  m1 O7 x9 Z! q2 a    'Copy whole data to clipboard
0 k/ w7 v. k6 r2 ]- B    Clipboard AllData$ 7 F8 h) H8 h" g) I
    Kill tempFile/ L8 E* ?+ S' [0 `  R" {4 J# {
    StatusBarText = ""/ p7 m9 K& d" g9 ~
End Sub& I; p$ f6 T1 h. D3 n; q2 B
Function AttrValue (comp As Object, atrName As String) As String# [: F6 D7 p4 I2 M5 {3 d
    If comp.Attributes(atrName) Is Nothing Then
5 v2 m9 X0 I: X1 @/ n& e8 f0 {% `        AttrValue = ""2 h; V0 s, z+ j$ r8 @
    Else
( u' _8 j3 y$ A2 c/ W        AttrValue = comp.Attributes(atrName).Value! S3 M6 E5 L* \' }
    End If
, J$ n% W( y4 K& a' E8 H" ]& |2 ~6 h, DEnd 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)
1 Z$ O7 \3 @# O/ \' j3 o3 e4 P        symbol = Mid(symbol,1, symbol_len - 2)
$ v- _. a  D8 F' t! j- n, q- z; M% I: I$ Z9 t) D% l/ t6 h
这两句是个啥意思?

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
5#
 楼主| 发表于 2018-6-26 18:52 | 只看该作者
本帖最后由 qiangqaz 于 2018-6-26 18:54 编辑
7 _0 J1 C" r. |( o+ Z; V  G$ U) S: U0 K6 q' b: I$ v
难道是数组:---
' p) E* P: }; M3 o多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组: 7 Q; d$ y9 ?. j/ a: L! o
& h8 J* k  x) v. T# T9 S5 {& c6 _
Dim A(10)+ R+ l, p$ w+ ?9 L& b) i# ?
虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。
8 \9 l$ g& v) U, Y
* B, z  m2 w7 b6 j! E, N5 F# h- z在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示:
! E/ J3 B5 U7 Z8 a. n* o: e5 ]% p! E) N6 P, S  b: \
A(0) = 256
. K( p; z5 @6 t! j6 G: ^ A(1) = 324$ R5 e; n" e% a+ f& d7 j% |
A(2) = 100" q, Q: Z. F. J
. . .1 D5 O3 u! a+ T/ ?+ G' y
A(10) = 55- L6 M0 o! A% P6 V& p- D9 S" L0 r
与此类似,使用索引可以检索到所需的数组元素的数据。例如:
' r) B% i. w' K
4 K( Q% ^( a/ m$ t . . .
. H' ~, A) Y: a9 p SomeVariable = A(8)  " ]- G/ p; h9 E" H5 N- H
. . .
, [7 R7 {# v( T) k数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组: 8 T: @; B% r$ t( q1 T

* k& ?* K" G7 ?# m) X: V Dim MyTable(5, 10)/ V4 i( [% R6 {2 N3 Y, V
在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。
2 ~  n1 Q  J/ p9 @# K- s1 Q2 _( B1 m' @0 ?

: f$ u/ G9 ?) }0 q; W# B" e7 Y

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
6#
 楼主| 发表于 2018-6-26 18:53 | 只看该作者
加两行打印,看出来个啥
* C) a- b( a% {, O- ]# ^  Z
/ c2 [) @, f! B+ F0 M2 n        Next        * t+ S0 N1 h% B2 C7 I, ]* e
        symbol_len = Len(symbol)
7 `6 H1 M$ [1 [+ t' v) S        Print #1,symbol_len;
6 @+ h9 \. i! u/ f, K        Print #1
7 N( `. d! }+ z8 j' w# y        symbol = Mid(symbol,1, symbol_len - 2), k! s% @# d: Y; D9 s
        Print #1, item; vbTab; part.PartType ; vbTab; pn ; vbTab;manufacturerpn; vbTab;description; vbTab;manufacturer; vbTab;value; vbTab; qty; vbTab; symbol;' I$ V4 N7 @3 V6 V9 \  U) d* g
        Print #1
. l0 K* F4 E: N1 l6 v    Next pkg

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
7#
 楼主| 发表于 2018-6-26 18:57 | 只看该作者
出来个这玩意4 ~1 I7 \* D2 F

96

主题

372

帖子

3940

积分

五级会员(50)

Rank: 5

积分
3940
9#
 楼主| 发表于 2018-6-29 15:43 | 只看该作者
linxiwell 发表于 2018-6-27 11:590 {" R& D) n$ c& [8 a0 ^
EDA_BOMHelper花式出BOM,总有满足你的。
7 ~2 M9 [+ ]' ?3 f1 d( x! H
嗯,有空研究下: f1 @: T6 u+ z6 L/ @
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-2-19 06:16 , Processed in 0.060343 second(s), 36 queries , Gzip On.

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

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

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