QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
00.jpg
- g' i3 v- j  J7 @常用方法是人工选择单元格,隐藏选择行。
% F( s, |2 Z7 D" @5 _
) H# D3 j! B8 j' m- B" J请问,还有什么更简单快速的方法,隐藏选择材料明细表时的行。* s0 B/ o9 c" t$ I

" W( v% p; V- n" v% N( f; u+ o1 a& t% s- n7 E! p; K

1 c' c$ W, O/ ~0 F+ O6 `: I1 K1 |' m: y
 楼主| 发表于 2016-2-11 06:51:16 | 显示全部楼层 来自: 中国甘肃兰州
本帖最后由 ning84 于 2016-2-14 17:27 编辑 , p# H' ^/ L* k7 w) S# x, O
, I! M( y9 w! y
用API解决,没找到隐藏单元行的指令。只能用.text(ii,6)来判断。
" j! V2 ?, m8 _% r3 G, g" S& i用API解决的问题,厚度排序和合并,下料尺寸排序。  r/ s1 a3 t0 k# }/ G
  1. - b( b. Z; ~/ {9 ~4 M8 S5 {

  2. 5 q8 a6 c$ C: e6 |6 d
  3. Function TitleBomPlateBom()9 h4 l$ v9 Z3 w7 g4 ]+ _- O6 J
  4.    Dim Arr, cArr, wArr
    7 O* S. p+ a8 O6 M& C3 F
  5.       cArr = Array("序号", "标 准 号", "名        称", "数量", "材  料", "质量" & Chr(13) & "(单)", "质量" & Chr(13) & "(合)", "备  注"). G) o7 ?# ~  [% z5 X9 R) M6 @% y, M/ w
  6.       Arr = Array("", "标准号", "名称", "", "材料", "质量", "", "备注")
    . Q$ n; b2 o; S4 f. v  i
  7.       wArr = Array(10, 25, 50, 12, 25, 15, 18, 25), P2 @. M/ g7 k8 Y7 P
  8.       # W# E1 y: Q, c' b' D
  9.     Dim SwApp As SldWorks.SldWorks, SwModel As ModelDoc2; \: J) o0 F2 V7 X) a
  10.        Set SwApp = Application.SldWorks7 q! X' b' i% F! Z! v1 }5 S$ M4 S
  11.        Set SwModel = SwApp.ActiveDoc4 P1 o7 c9 Y' S+ P6 j7 a- g# l
  12.    Dim SwSelMgr As SelectionMgr, tmp+ @+ Q" m% Q. Y3 z
  13.        Set SwSelMgr = SwModel.SelectionManager
    $ A/ e- X* p  F" ~
  14.    Dim SwBomFeat As BomFeature, SwBomTabAnn As BomTableAnnotation! j0 S. N0 x0 ^; ~& A
  15.        tmp = SwModel.Extension.SelectByID2("TitleBom", "BOMFEATURE", 0, 0, 0, False, 0, Nothing, 0)) z$ `- Q9 Z0 E; L8 u
  16.        Set SwBomFeat = SwSelMgr.GetSelectedObject5(1)
    0 e* A9 d7 c* R+ r
  17.        Set SwBomTabAnn = SwBomFeat.GetTableAnnotations(0)
    ; L0 P; q: j0 z5 P7 {" Q* j/ J' i
  18.        'Debug.Print SwBomTabAnn.BomFeature.GetFeature.Name: v8 M$ p: j. b7 o6 r0 m7 [0 B
  19.    Dim SwTabAnn As TableAnnotation, Str, SwAnn As Annotation
    8 y; @0 i. a8 T  b1 M# J
  20.        Set SwTabAnn = SwBomTabAnn  ?2 ^& p" I8 e/ N' ?7 j; }  S3 b
  21.    Dim Xx, Yy
      T9 K) s7 h1 E, d  [6 K3 J
  22.        Xx = 420 - 5
    ) f  M5 ~2 {, I! A4 x
  23.        Xx = Xx / 1000
    5 _( ~0 }; R7 @# E6 E4 B# r
  24.        Yy = 30 / 1000
    ) J' }+ e, Q) f. L# _( F! r5 |2 |
  25.        ''
    7 G) a. Y/ V- y- r- E0 j. U$ j
  26.        With SwTabAnn. p4 l& H- u" C0 P/ f) ?! _
  27.           For jj = 0 To UBound(cArr)  ' .ColumnCount - 14 Q" A: x" ~- K3 v! J' \9 u
  28.              .SetColumnWidth jj, wArr(jj) / 1000, 0
    " v7 a) w8 T$ K. V2 C
  29.              .SetColumnTitle jj, cArr(jj); @3 V+ j/ ?# R
  30.              SwBomTabAnn.SetColumnCustomProperty jj, Arr(jj)
    ! v7 |! a( {9 Q8 a  ~; ~
  31.           Next jj
    4 }7 U0 _6 ~+ L# F$ Q
  32.           For ii = 0 To .RowCount0 r6 U# P. ~8 `9 J: v; a
  33.              If ii = .RowCount Then( ]1 Z6 r& m7 t1 h' _
  34.                 .SetRowHeight ii, 0.01, 04 E8 p: Y) P4 L" k+ |
  35.              Else4 y1 S4 _& N9 j3 ^
  36.                 .SetRowHeight ii, 0.005, 0
    , V6 J: F5 a# T1 k' f# c
  37.              End If( N, _$ ?. {  c6 ]
  38.           Next ii
    " j4 g0 c8 B$ ~; G# c+ {# E
  39.           .AnchorType = swBOMConfigurationAnchor_BottomRight
    : X6 Z8 Z( \& R! l! ], B) ^2 Y
  40.           Set SwAnn = .GetAnnotation
    7 i! p& I* [! C+ g
  41.           SwAnn.SetPosition Xx, Yy, 0, x- C. F* d- o! I( o/ R' }" t$ v
  42.        End With% l# R/ E4 M. |

  43. % @% X% y' F* E3 j+ }  h& f" V
  44. End Function) _6 a/ v, e1 K% p3 q  g
  45. 2 K9 c7 R! v% O

  46. # O$ {/ {3 P' L4 Y% J+ b: n
复制代码

/ g3 _2 ]5 p" i, Z5 q; K9 W$ {! L1 n
" g3 L8 z! ]% j6 [. r' @
  1. . Q+ J% b( g' F" O! i
  2. '': w4 h+ t3 w, ~6 o. _& A6 Y/ n
  3. Function MainPlateBOM(SwBomTabAnn As BomTableAnnotation, SwTabAnn As TableAnnotation, cArr, Arr, wArr, Xx, Yy, oAnchorType)
    5 D% }8 i1 b1 `3 ^* Q; g- W
  4.        Xx = Xx / 1000' Q! E9 O# u- j/ e
  5.        Yy = Yy / 1000
      h' ?7 R3 Q. h4 f3 O- }: C" @
  6.        '') b# K/ q1 }: @: O
  7.        With SwTabAnn
    + h% n$ f& x- Q! t. @
  8.           For jj = 0 To UBound(cArr)  ' .ColumnCount - 16 t5 L1 C# q9 Z" F
  9.              SwBomTabAnn.SetColumnCustomProperty jj, Arr(jj)
    8 L* S( b! u( R# u
  10.              .SetColumnTitle jj, cArr(jj)
    3 G; u% d- H6 W% s  N  @
  11.              .SetColumnWidth jj, wArr(jj) / 1000, 0* q5 Y# \9 T, Z9 n0 {1 y
  12.           Next jj
    . }. M6 t8 F4 @" L+ `
  13.           For ii = 0 To .RowCount- B& {9 W1 ]0 y1 x
  14.              If ii = .RowCount Then
    ) f2 \5 ]1 x, K$ l; \
  15.                 .SetRowHeight ii, 0.01, 0
    , T+ H9 q: w" O
  16.              Else! {. E+ I" k& t( y( v  c& C- U
  17.                 .SetRowHeight ii, 0.005, 0+ a+ j, x' u% p5 N+ n
  18.              End If+ l0 k% g' N3 }: @9 g
  19.           Next ii
    3 y, b8 D% r  _0 E0 _. K
  20.           .AnchorType = oAnchorType
    % Y6 u1 ?# r- \9 M  R
  21.           Set SwAnn = .GetAnnotation
    , a6 w. b$ ^+ e& m* d1 ^% v4 |
  22.           SwAnn.SetPosition Xx, Yy, 0
    ( a) d6 }4 e- s, q+ g5 C# }2 W1 ^
  23.        End With
    ' s& Y/ I9 k, n; Q( O
  24. End Function
    + u, r6 f8 `7 D1 R4 M5 g9 l' l( ?
  25. Private Sub ChangeBOM()6 G5 d0 n) Q5 N
  26.     Dim T: T = Timer6 L! i6 R  m# v
  27.     Dim Arr(1), cArr(1), wArr(1)
    * o, T; b+ x2 a
  28.       cArr(0) = Array("序号", "标 准 号", "名        称", "数量", "材  料", "质量" & Chr(13) & "(单)", "质量" & Chr(13) & "(合)", "备  注")* ~: u/ r, A  ~( n2 t: T
  29.       Arr(0) = Array("", "标准号", "名称", "", "材料", "质量", "", "备注")
    9 ]' s4 Q( G8 A8 j+ l9 _, q/ E% J
  30.       wArr(0) = Array(10, 25, 50, 12, 25, 15, 18, 25)
    + s5 D6 w; \0 _
  31.       ''. Z) d& w5 _! U5 R% ^- Z& _
  32.       cArr(1) = Array("件号", "名    称", "模型质量", "下料尺寸", "下料质量", "数量", "材料", "δ", "下料质量-模型质量", "备  注")
    8 X& @9 ^! J" q
  33.       Arr(1) = Array("件号", "名称", "质量", "下料尺寸", "下料质量", "", "材料", "δ", "", "")6 f4 d3 P9 b% J7 u8 ^
  34.       wArr(1) = Array(10, 40, 15, 35, 15, 10, 20, 8, 40, 15)- f8 F; L8 \$ r2 ~4 a& v
  35.     * z3 N6 o$ b, q& G, \* |
  36.     4 L% A* C& _0 }% F3 b3 v# F" E% u
  37.     Dim SwApp As SldWorks.SldWorks, SwModel As ModelDoc2
    2 ~0 X, P$ R0 d4 E, @; d5 e3 L
  38.         Set SwApp = Application.SldWorks
    ' n7 H2 v5 o! W# v! j
  39.         Set SwModel = SwApp.ActiveDoc
    . R5 d' }# ~2 Y- `' ?7 \7 D5 S
  40.     Dim SwSelMgr As SelectionMgr
    ! c: _9 p; s+ ~9 Y$ B7 z3 |' P
  41.         Set SwSelMgr = SwModel.SelectionManager5 u. F% Y9 i9 C& p5 ]: U  U
  42.     Dim SwFeat As Feature, SwBomFeat As BomFeature
    # ^' `8 ^6 Z, x4 m
  43.     ' M5 `/ ^6 h7 b& }' U+ K
  44.     Dim SwBomTabAnn As BomTableAnnotation, SwTabAnn As TableAnnotation
    7 T  t( n( ], t/ @. I& s
  45.         Set SwFeat = SwModel.FirstFeature
      [# d" |9 D4 J/ l0 F
  46.         Do While Not SwFeat Is Nothing
    ) w( D& d2 ~7 }( W2 Z4 J7 ]
  47.            '''
    7 r1 @/ m& v3 L+ V( x/ q& n
  48.            If UCase(SwFeat.Name) Like "*BOM*" And SwFeat.GetTypeName = "BomFeat" Then3 ~9 S8 ?2 g# g. {0 w! W4 p7 k; j& [6 r
  49.               'SwFeat.Select True
    ) a( p' ~7 @3 ^- i4 L- k
  50.               Set SwBomFeat = SwFeat.GetSpecificFeature2  ' SwSelMgr.GetSelectedObject5(1)
    % {* E  ?% i6 S4 t, y
  51.               Set SwBomTabAnn = SwBomFeat.GetTableAnnotations(0)( W) w' H1 h4 ?- h, d9 t
  52.               Debug.Print SwBomFeat.GetFeature.Name
    6 I& I7 U. @  @- U/ {# V% L7 d0 D
  53.               Set SwTabAnn = SwBomTabAnn/ }% y* D  z2 h2 ]
  54.               'Debug.Print SwFeat.Name, SwFeat.GetTypeName
    * G; E3 C8 n/ C+ m2 F1 u' `
  55.               If UCase(SwFeat.Name) Like "*MAIN*" Then1 a  U3 b0 v# [8 a5 R
  56.                  MainPlateBOM SwBomTabAnn, SwTabAnn, cArr(0), Arr(0), wArr(0), 420 - 5, 30, swBOMConfigurationAnchor_BottomRight
    ' [2 g* f7 P9 Z& i) E
  57.                    ''  k! x/ Q! W  V1 A8 P
  58.               ElseIf UCase(SwFeat.Name) Like "*PLATE*" Then% Z  o2 J* w/ N( Q, B4 p: R
  59.                  MainPlateBOM SwBomTabAnn, SwTabAnn, cArr(1), Arr(1), wArr(1), 25, 5, swBOMConfigurationAnchor_BottomLeft
    4 A. Z5 L1 p8 F" k% x
  60.                     With SwTabAnn '
      |, h  H) |7 A/ R% Y
  61.                        For ii = .RowCount To 0 Step -1
    4 S4 L3 u; h/ k1 S0 V3 r
  62.                          If .Text(ii, 3) Like "*板材*" Then
    7 Z) G# y0 I* {7 x
  63.                             Debug.Print .Text(ii, 6)
    7 N8 Y3 k; l9 t- a9 U. @5 x+ ]
  64.                          Else
    " ?0 G: @# ~$ R7 L& z. b
  65.                            .DeleteRow (ii)
    + I& h2 x- {8 O1 N6 K' O  g
  66.                          End If3 ]1 u0 \' ?) _# ^; s
  67.                        Next ii4 a0 R. [7 G$ M
  68.                     End With, M1 w; J/ j" g
  69. ) T, i$ Y: J$ ?! O
  70.               End If1 I3 |' |2 s5 |" f! `+ S: j5 c
  71.               Debug.Print "SWBOMFEAT", SwBomFeat.GetFeature.Name' U5 M0 H* y; G( w9 A6 F
  72.            PrintTiming T
    4 b- H# x: k6 y
  73.            End If  T+ x, M5 G9 R9 x
  74.            Set SwFeat = SwFeat.GetNextFeature' C3 |+ t. Q; r0 ?
  75.            SwModel.ClearSelection2 True: F+ I9 k# c3 f: W
  76.            
    ! p! j7 N: q/ R9 _9 M& h) h* l
  77.         Loop
    6 Q5 {8 C& c% `) u) _$ \$ F
  78. End Sub0 `  B. Q, |( a4 w  E$ D" l" I) G
复制代码

( a2 s1 v5 P7 a, m; a9 K% @* P4 C, f$ q4 Q4 X/ w: I
- o  e) W8 R. q: ~
: @8 }/ ?7 g8 ^8 l

. W$ I9 F) [6 A, [
3 [; M! M" @# I* P2 t* x  v8 f
发表于 2016-2-11 21:12:17 | 显示全部楼层 来自: 中国安徽蚌埠
用shift选择头和尾,用crl剔除多余的,然后点隐藏
发表于 2016-2-12 09:22:07 | 显示全部楼层 来自: 中国辽宁
本帖最后由 qiminger 于 2016-2-12 11:09 编辑 : M$ ^5 a7 A  K' ^1 i3 P& b- l
  a. D+ P( M" w) P
原来要排列下料单,导出在Excel中进行吧。
发表于 2016-2-13 21:28:49 | 显示全部楼层 来自: 中国辽宁盘锦
寂静天花板 发表于 2016-2-12 09:32
5 y; D- C7 a2 @# F, \肯定是你选中哪个,才会有下一步的选择,否则软件知道你要干什么。
& Q& i0 ]5 ~/ \8 `
我看懂了
4 q) X+ q( k" Z* L# @7 e9 X: U楼主的意思是,这个命令也要和别的命令可以有两种操作方法是一样的( \1 R4 f3 Y' J" l3 u: W% ^
具体为:选择命令后选择要执行的部位;选择要执行的部位再选择要执行的命令2 |+ Q2 `- Z* j
楼主倾向于选择命令后选择要执行的部位
发表于 2016-2-17 09:25:29 | 显示全部楼层 来自: 中国江苏苏州
阿帕奇 发表于 2016-2-13 21:28; v6 p' _8 ^/ O- E  n# ]( \
我看懂了
. i' v' `( }- H" j/ ~楼主的意思是,这个命令也要和别的命令可以有两种操作方法是一样的
: x1 A2 q& A4 x7 M! H% T具体为:选择命令后选择要 ...
8 }& E+ I( A5 H
高手,这个解释太精辟了
发表于 2016-2-17 13:13:55 | 显示全部楼层 来自: 中国四川乐山
阿帕奇 发表于 2016-2-13 21:28
+ v% o+ I% m; y我看懂了7 \. M' R! Q. ]6 X4 U
楼主的意思是,这个命令也要和别的命令可以有两种操作方法是一样的
2 T; U0 k8 P, Z具体为:选择命令后选择要 ...
$ B- a% z3 `4 {6 ^
还是武直10一语中的
发表于 2016-2-21 20:50:15 | 显示全部楼层 来自: 中国辽宁
啥都没准 发表于 2016-2-17 13:13 static/image/common/back.gif
& n% \; [& t6 r7 e% i! V还是武直10一语中的

$ ?& G! C7 A* O6 K7 p- C* vhttp://www.3dportal.cn/discuz///mobcent//app/data/phiz/default/31.png那是谁啊7 O8 ^8 g3 b. X9 ^, c; Z' }0 r. ~. ]
发表于 2016-2-22 08:29:43 | 显示全部楼层 来自: 中国四川乐山
阿帕奇 发表于 2016-2-21 20:50
7 J' t1 {' R" v: d9 s0 U, H8 X那是谁啊
% j1 N, t) r' ?$ M4 K
哈哈,玩笑话!武直10”外形“是高仿版的阿帕奇
发表于 2016-2-27 10:48:20 | 显示全部楼层 来自: 中国辽宁
啥都没准 发表于 2016-2-22 08:29 static/image/common/back.gif
+ ?2 ?1 U& s- ?& F) Y哈哈,玩笑话!武直10”外形“是高仿版的阿帕奇

. }9 F' w: z5 B+ S. ], umade in china啊http://www.3dportal.cn/discuz///mobcent//app/data/phiz/default/03.png
* _3 m! f7 k6 Q: c# y1 I
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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