QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2931|回复: 9
收起左侧

[讨论] 如何快速隐藏材料明细表的行。

[复制链接]
发表于 2016-2-10 21:12:19 | 显示全部楼层 |阅读模式 来自: 中国甘肃兰州

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
00.jpg , P. f/ p/ ~) z2 h
常用方法是人工选择单元格,隐藏选择行。% M9 n( H- [/ ]

" ~6 r  N& G# W, y$ x3 }请问,还有什么更简单快速的方法,隐藏选择材料明细表时的行。8 P/ K; y' N, r
$ l9 @( Y" x# O7 R0 F' O
$ Z* e2 \* [/ \, f, ]3 \4 V1 m! f
- c  R& g  o6 `8 Z

  q+ v. p0 W: V/ B1 y* @
 楼主| 发表于 2016-2-11 06:51:16 | 显示全部楼层 来自: 中国甘肃兰州
本帖最后由 ning84 于 2016-2-14 17:27 编辑 * `" e5 G% u" i5 H/ G& G  z
$ N( J% K4 T. k
用API解决,没找到隐藏单元行的指令。只能用.text(ii,6)来判断。- e# P, G" s8 p% H2 R! Z
用API解决的问题,厚度排序和合并,下料尺寸排序。/ K9 R! R+ ]1 ^9 X+ `+ o
  1. / ~( F- C3 P4 O
  2. , [& s5 _* m9 [% }
  3. Function TitleBomPlateBom()) B. ~- V1 N2 ^" R
  4.    Dim Arr, cArr, wArr* U$ I9 ?: m2 a2 }" a" J
  5.       cArr = Array("序号", "标 准 号", "名        称", "数量", "材  料", "质量" & Chr(13) & "(单)", "质量" & Chr(13) & "(合)", "备  注")
    ) ?* _3 Y, Z2 H2 a& a' Z
  6.       Arr = Array("", "标准号", "名称", "", "材料", "质量", "", "备注")9 ~& t0 {+ _, z5 H2 k
  7.       wArr = Array(10, 25, 50, 12, 25, 15, 18, 25)6 ^& N" u7 m, ?, \4 I8 p
  8.       
    , ]2 T/ K. W) Q- d1 q' G
  9.     Dim SwApp As SldWorks.SldWorks, SwModel As ModelDoc2
    . b9 U* w' o" z
  10.        Set SwApp = Application.SldWorks
    3 H3 T, L( d3 f/ y9 z
  11.        Set SwModel = SwApp.ActiveDoc, @. e& H* B+ W" H2 w! O5 v
  12.    Dim SwSelMgr As SelectionMgr, tmp; ?3 k  N0 ^# x' T
  13.        Set SwSelMgr = SwModel.SelectionManager
    : E) R: ^9 C& t: X* r
  14.    Dim SwBomFeat As BomFeature, SwBomTabAnn As BomTableAnnotation
    ; a+ Q! ]+ n0 X2 `. J* i6 }4 L
  15.        tmp = SwModel.Extension.SelectByID2("TitleBom", "BOMFEATURE", 0, 0, 0, False, 0, Nothing, 0)
    7 P9 w  R2 L- O
  16.        Set SwBomFeat = SwSelMgr.GetSelectedObject5(1)1 u0 n# J8 E$ F. x$ X* k: [
  17.        Set SwBomTabAnn = SwBomFeat.GetTableAnnotations(0)/ h/ }& T# H( L0 f9 I2 G
  18.        'Debug.Print SwBomTabAnn.BomFeature.GetFeature.Name
    & V, B/ H7 E$ c% [. c' t8 S8 E
  19.    Dim SwTabAnn As TableAnnotation, Str, SwAnn As Annotation* D' X( h* m- i  a; {# }2 l
  20.        Set SwTabAnn = SwBomTabAnn
    $ t# |, h1 o; |
  21.    Dim Xx, Yy
    # `+ n# q( F, U1 O
  22.        Xx = 420 - 5# J. \4 j2 I) {$ p; M& z
  23.        Xx = Xx / 1000+ N9 Y. A* Y% J$ C. n6 _' c
  24.        Yy = 30 / 1000( v5 W6 ?5 W  l
  25.        ''# G% L7 h. C! E/ e8 O
  26.        With SwTabAnn/ y) A9 C3 @" F8 _9 h
  27.           For jj = 0 To UBound(cArr)  ' .ColumnCount - 1
    9 [* o2 W# @! _6 e1 K: e2 f
  28.              .SetColumnWidth jj, wArr(jj) / 1000, 0
    ! I& d( F5 f. ?
  29.              .SetColumnTitle jj, cArr(jj)) Z" f7 o+ y" Q/ n6 Z- V8 j. Q$ L
  30.              SwBomTabAnn.SetColumnCustomProperty jj, Arr(jj), W/ Y  y& v- y
  31.           Next jj! s, y7 D7 j$ b0 B
  32.           For ii = 0 To .RowCount2 M5 z6 Y1 w4 }) u8 i0 m/ Q) a8 V
  33.              If ii = .RowCount Then7 P4 I( @2 _! ]7 E
  34.                 .SetRowHeight ii, 0.01, 0
    $ n8 Q* N% D# q$ o# l6 [( P
  35.              Else# i7 S, ]! P* e. t% d
  36.                 .SetRowHeight ii, 0.005, 05 D" ]. X/ |' a. T7 b( ^$ m
  37.              End If
    , F9 `& b' j; _) c" `: }/ j1 H
  38.           Next ii5 o; J. ]# \; Q- D
  39.           .AnchorType = swBOMConfigurationAnchor_BottomRight
    6 w+ v3 S  m' m' r5 ~
  40.           Set SwAnn = .GetAnnotation
    # C' \, q+ n( m) I  c- M" d7 |9 J
  41.           SwAnn.SetPosition Xx, Yy, 0
    2 A$ u; ~$ ], H
  42.        End With
    3 B- U9 |/ Y; F  O' d2 i

  43. - o$ E; E' `( l0 m
  44. End Function
    6 b8 r4 s/ C+ l5 @8 n% u

  45. 9 M' S' S- T5 t* e% u
  46. * y9 x9 S/ x: Y& F0 S+ S
复制代码
: ~) p" l0 W2 q; v

2 K3 i2 }) q3 E; Q- l$ T6 }! R. n: K
  1. ) E! \% j! Y3 u5 w3 S2 L) ?! I
  2. ''/ R' ]( g- q) k% c8 N+ k  v1 k
  3. Function MainPlateBOM(SwBomTabAnn As BomTableAnnotation, SwTabAnn As TableAnnotation, cArr, Arr, wArr, Xx, Yy, oAnchorType)# ]' g7 N0 v, o! F
  4.        Xx = Xx / 1000# e( L8 d9 h0 |
  5.        Yy = Yy / 1000
    6 ?: |5 S' L5 i* w3 z) p
  6.        '', g, ^0 l1 W, \
  7.        With SwTabAnn
    - k8 O/ ^# x0 W% B3 ~$ C) l
  8.           For jj = 0 To UBound(cArr)  ' .ColumnCount - 1$ n! R+ ~* {# S8 j) K( U* t  C( b
  9.              SwBomTabAnn.SetColumnCustomProperty jj, Arr(jj)
    " r! w$ b/ v) e' A
  10.              .SetColumnTitle jj, cArr(jj)# s* C4 M! d: `! Q1 g: A
  11.              .SetColumnWidth jj, wArr(jj) / 1000, 0: u% Q" U, p( d* l$ w. v8 Q6 i. R7 Z
  12.           Next jj) X4 t; g* S& b& L7 g' J% T
  13.           For ii = 0 To .RowCount
    # T6 G( x6 m  \% F8 z- M. f! \3 O# D
  14.              If ii = .RowCount Then
    & L4 j+ W/ u  R% d% J2 u
  15.                 .SetRowHeight ii, 0.01, 0
    0 O* I$ Y2 k0 P( @, _1 x0 d& ~2 [3 f, p
  16.              Else
    $ Y8 d0 Y/ U+ J4 I  I, n2 s$ s
  17.                 .SetRowHeight ii, 0.005, 00 z0 Q- C$ Z/ n; b+ P7 Z0 x6 ]2 _
  18.              End If' Q% i: t- U. T, ~  a2 m
  19.           Next ii' W; G2 C4 u1 ~3 _0 a
  20.           .AnchorType = oAnchorType  W4 B( P/ e5 Z
  21.           Set SwAnn = .GetAnnotation
    6 M0 p5 q3 \" b8 \; L
  22.           SwAnn.SetPosition Xx, Yy, 0
    2 n- A7 M2 |, F1 e, n  X6 p
  23.        End With
    4 k# t, v3 ]5 v
  24. End Function8 \! C% M9 q' _" d  \3 @" F; M
  25. Private Sub ChangeBOM()
      I' n' D, a( G  ^
  26.     Dim T: T = Timer4 K* z0 P# ^3 L  x  ~$ Y8 ^
  27.     Dim Arr(1), cArr(1), wArr(1)! Y+ {7 F: ~* U
  28.       cArr(0) = Array("序号", "标 准 号", "名        称", "数量", "材  料", "质量" & Chr(13) & "(单)", "质量" & Chr(13) & "(合)", "备  注")
    + }. S5 _. d- k
  29.       Arr(0) = Array("", "标准号", "名称", "", "材料", "质量", "", "备注")
    & `9 e3 L! T( y! ?9 Y* K% w
  30.       wArr(0) = Array(10, 25, 50, 12, 25, 15, 18, 25)
    3 h0 e* p" H, V) \) O3 |
  31.       ''! T9 q$ Q9 h7 k5 ?9 w* Y: J
  32.       cArr(1) = Array("件号", "名    称", "模型质量", "下料尺寸", "下料质量", "数量", "材料", "δ", "下料质量-模型质量", "备  注")
    : ]; Z# l0 X' H. ]0 F
  33.       Arr(1) = Array("件号", "名称", "质量", "下料尺寸", "下料质量", "", "材料", "δ", "", "")( Y" L0 r" y- ]+ h  A8 m& d
  34.       wArr(1) = Array(10, 40, 15, 35, 15, 10, 20, 8, 40, 15)) p( s4 X5 Q3 N
  35.     ' R/ p% j2 O: A, a
  36.       x; c- t3 |% ]! H, F  x, V
  37.     Dim SwApp As SldWorks.SldWorks, SwModel As ModelDoc2
    3 z3 B, X$ C9 f8 h
  38.         Set SwApp = Application.SldWorks
    4 |. T  H" Q+ _# s+ A0 y$ @
  39.         Set SwModel = SwApp.ActiveDoc
    / t9 y+ X! c5 a7 @. _0 q) r0 ?
  40.     Dim SwSelMgr As SelectionMgr
    , _& R/ \& D+ F4 k
  41.         Set SwSelMgr = SwModel.SelectionManager  s/ T* p' ~) D+ i
  42.     Dim SwFeat As Feature, SwBomFeat As BomFeature' j& F6 ?0 e; F* d9 w3 B" b
  43.    
    ) E+ U2 [% ?( y: o0 B
  44.     Dim SwBomTabAnn As BomTableAnnotation, SwTabAnn As TableAnnotation
    8 O  F9 S$ @& u
  45.         Set SwFeat = SwModel.FirstFeature
    ' V% L2 Y# q1 k( l+ y
  46.         Do While Not SwFeat Is Nothing% C- O/ x& p* H% T
  47.            '''
    ( s1 c9 G5 a2 O8 Y$ j4 j
  48.            If UCase(SwFeat.Name) Like "*BOM*" And SwFeat.GetTypeName = "BomFeat" Then
    8 [8 L$ ?6 W& o+ J9 R
  49.               'SwFeat.Select True$ P- k2 S: F0 f. ^
  50.               Set SwBomFeat = SwFeat.GetSpecificFeature2  ' SwSelMgr.GetSelectedObject5(1)! l; O- W& `0 x2 T+ C
  51.               Set SwBomTabAnn = SwBomFeat.GetTableAnnotations(0)% f( \: Y2 O5 d& D9 u& [, y3 z
  52.               Debug.Print SwBomFeat.GetFeature.Name+ o1 H0 Y4 I& p8 H  K  x, h
  53.               Set SwTabAnn = SwBomTabAnn" _& Q6 ^0 C; M. x7 _0 R
  54.               'Debug.Print SwFeat.Name, SwFeat.GetTypeName
    4 t8 d3 Y% E3 r2 C% e
  55.               If UCase(SwFeat.Name) Like "*MAIN*" Then: {2 J, F* w5 X; `6 H
  56.                  MainPlateBOM SwBomTabAnn, SwTabAnn, cArr(0), Arr(0), wArr(0), 420 - 5, 30, swBOMConfigurationAnchor_BottomRight
    4 n+ g; N* |# u4 o. C
  57.                    ''9 J; ?0 J/ S  A- R& k7 r/ }6 L
  58.               ElseIf UCase(SwFeat.Name) Like "*PLATE*" Then
    " W, S+ i) ]& E! J# e5 v* a4 A1 L
  59.                  MainPlateBOM SwBomTabAnn, SwTabAnn, cArr(1), Arr(1), wArr(1), 25, 5, swBOMConfigurationAnchor_BottomLeft
    * Y" k! v/ [2 u$ M; `
  60.                     With SwTabAnn '" e/ `" Y1 ~. O
  61.                        For ii = .RowCount To 0 Step -1
    8 c: f7 q% {, r8 }/ ]
  62.                          If .Text(ii, 3) Like "*板材*" Then
    : ]2 S6 q" q, p& t9 K
  63.                             Debug.Print .Text(ii, 6)2 @; T; I, T4 q+ U
  64.                          Else
    4 z6 c6 O: {5 N
  65.                            .DeleteRow (ii)
    & B5 K' j) Y' Q" b
  66.                          End If
    : v; d4 V8 F) N0 j( P% ?
  67.                        Next ii$ ]# ]9 M2 j- P! K; L0 L& n' l
  68.                     End With
    * x% f  O& k( _# |& n8 W

  69. ) K( }' O) A6 w) h, [, q4 X
  70.               End If
    , u0 r! w/ u+ M
  71.               Debug.Print "SWBOMFEAT", SwBomFeat.GetFeature.Name
    " o' i% d5 u) N7 S) {" r
  72.            PrintTiming T& Y8 N. k6 W4 _& P5 H# I; b+ r
  73.            End If1 M" v# ?: r, f/ @6 m# ]
  74.            Set SwFeat = SwFeat.GetNextFeature
    , o2 k" o& y1 U* [: Y' M
  75.            SwModel.ClearSelection2 True. t5 |+ j+ j9 T6 I" [
  76.            % m; e+ _0 N( S  r, G: ~& P
  77.         Loop
    - J  K) G6 E! B# f4 v% t
  78. End Sub' O% l, U0 }+ F8 o9 y5 q% Z/ E
复制代码
* a9 g' V, i7 e# [" M% O
6 S, M2 u- _# V4 z0 ^5 r9 e

. f; K. ?$ F6 @) p" q% T7 x. Y3 x5 k7 W- `- L  k9 E

* _: g$ [' l. \; w
! I8 h  N) A- H/ f& F
发表于 2016-2-11 21:12:17 | 显示全部楼层 来自: 中国安徽蚌埠
用shift选择头和尾,用crl剔除多余的,然后点隐藏
发表于 2016-2-12 09:22:07 | 显示全部楼层 来自: 中国辽宁
本帖最后由 qiminger 于 2016-2-12 11:09 编辑 9 F$ B, {+ B* f

- X! o! Z5 S2 b原来要排列下料单,导出在Excel中进行吧。
发表于 2016-2-13 21:28:49 | 显示全部楼层 来自: 中国辽宁盘锦
寂静天花板 发表于 2016-2-12 09:32# p7 I1 ?& M: H0 k* v
肯定是你选中哪个,才会有下一步的选择,否则软件知道你要干什么。
# r+ e7 Q4 z& ^. ~7 h0 c3 Z
我看懂了, d- ?5 h. K: M! t; G# T
楼主的意思是,这个命令也要和别的命令可以有两种操作方法是一样的
" o/ H  F6 O/ k% \具体为:选择命令后选择要执行的部位;选择要执行的部位再选择要执行的命令
3 [4 d6 k, {# k楼主倾向于选择命令后选择要执行的部位
发表于 2016-2-17 09:25:29 | 显示全部楼层 来自: 中国江苏苏州
阿帕奇 发表于 2016-2-13 21:28
' D, a3 z  w  a- b9 x* I" B我看懂了' R9 ^. @: o& q4 {' e7 v
楼主的意思是,这个命令也要和别的命令可以有两种操作方法是一样的
4 Z( m! ?# e. j具体为:选择命令后选择要 ...
8 B0 W# l, _- |/ T' n" E
高手,这个解释太精辟了
发表于 2016-2-17 13:13:55 | 显示全部楼层 来自: 中国四川乐山
阿帕奇 发表于 2016-2-13 21:28( H* o% v/ H+ E, n+ j6 h6 \
我看懂了
+ i$ J, \) }4 H4 T/ M& P1 a楼主的意思是,这个命令也要和别的命令可以有两种操作方法是一样的5 i4 g0 m- f% Y& f( R7 K& B
具体为:选择命令后选择要 ...
  j8 {. e* X( O: C; b, s; D4 t# c
还是武直10一语中的
发表于 2016-2-21 20:50:15 | 显示全部楼层 来自: 中国辽宁
啥都没准 发表于 2016-2-17 13:13 static/image/common/back.gif+ Z& q" K: \# ^; F% o  C" |
还是武直10一语中的

' b! w* e% j  p! I* `  Hhttp://www.3dportal.cn/discuz///mobcent//app/data/phiz/default/31.png那是谁啊
5 s5 a- u/ F# m7 C9 k
发表于 2016-2-22 08:29:43 | 显示全部楼层 来自: 中国四川乐山
阿帕奇 发表于 2016-2-21 20:50% i* d+ t* e1 x5 S3 G" p
那是谁啊
  n: A! O3 C5 |, `% \3 A" Z5 s
哈哈,玩笑话!武直10”外形“是高仿版的阿帕奇
发表于 2016-2-27 10:48:20 | 显示全部楼层 来自: 中国辽宁
啥都没准 发表于 2016-2-22 08:29 static/image/common/back.gif
+ k9 w' c) |. W# H哈哈,玩笑话!武直10”外形“是高仿版的阿帕奇
& Y( t  w7 |7 P* A# _+ q( S
made in china啊http://www.3dportal.cn/discuz///mobcent//app/data/phiz/default/03.png
5 r+ u5 t" D  z
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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