QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
00.jpg . ~2 N, Q- u, n$ M
常用方法是人工选择单元格,隐藏选择行。, z# Z8 t5 t# ]" j9 F- T- r

, Z$ F8 N; D" i3 H9 M请问,还有什么更简单快速的方法,隐藏选择材料明细表时的行。$ p0 o9 H: @( o- P9 w+ M. X, [
; H6 E. w* J) g2 L, _

+ d( ]% D6 h" n7 S5 n/ O5 _1 t! L* X& u1 n7 z1 s0 s( b9 @

/ M/ j4 b2 A- [7 v0 v# }3 P
 楼主| 发表于 2016-2-11 06:51:16 | 显示全部楼层 来自: 中国甘肃兰州
本帖最后由 ning84 于 2016-2-14 17:27 编辑 6 @6 @4 f5 g# e$ R& I, S

; p) i  ~2 |) ]4 Y1 [, @- `用API解决,没找到隐藏单元行的指令。只能用.text(ii,6)来判断。
. @6 O5 P# O3 g% j4 r& B用API解决的问题,厚度排序和合并,下料尺寸排序。
! \$ g+ p0 {( I

  1. / }  n' k* S4 B! o# @2 a

  2. . W1 y" D' Y/ g1 m3 N6 D: q" S
  3. Function TitleBomPlateBom()
    ) o0 C( b( Z/ ]  u
  4.    Dim Arr, cArr, wArr
    0 x) ~! a' v* A8 U4 w0 Z4 z
  5.       cArr = Array("序号", "标 准 号", "名        称", "数量", "材  料", "质量" & Chr(13) & "(单)", "质量" & Chr(13) & "(合)", "备  注")
      o4 |2 @* ~( A2 Y
  6.       Arr = Array("", "标准号", "名称", "", "材料", "质量", "", "备注")& X, x4 d) Q' @  j( L7 Q! d
  7.       wArr = Array(10, 25, 50, 12, 25, 15, 18, 25)
    % t- B8 O& g4 Q( h' v
  8.       ( b8 f) U8 p4 ?! [4 o3 n* {3 f
  9.     Dim SwApp As SldWorks.SldWorks, SwModel As ModelDoc2
    0 T, ~4 `# ^% W7 r  H, Z+ v
  10.        Set SwApp = Application.SldWorks
    " x4 g6 p& }3 Z5 ?& x8 I
  11.        Set SwModel = SwApp.ActiveDoc
    , b, J: D3 a& i% F1 s6 y1 t% J$ P
  12.    Dim SwSelMgr As SelectionMgr, tmp
    ( t0 S1 v2 J4 n
  13.        Set SwSelMgr = SwModel.SelectionManager
    2 [; y2 a2 h& Q; U: ^1 y
  14.    Dim SwBomFeat As BomFeature, SwBomTabAnn As BomTableAnnotation2 E* z7 M9 o# l8 a2 [& B+ V+ T
  15.        tmp = SwModel.Extension.SelectByID2("TitleBom", "BOMFEATURE", 0, 0, 0, False, 0, Nothing, 0)0 {# U1 }; W6 Q) O* f: A/ J  t* t4 Y
  16.        Set SwBomFeat = SwSelMgr.GetSelectedObject5(1)
    ' `1 Y. r. K; d9 X& H: _% Q: _3 K
  17.        Set SwBomTabAnn = SwBomFeat.GetTableAnnotations(0)
    2 |: v( N2 G9 K* I: c( E& i
  18.        'Debug.Print SwBomTabAnn.BomFeature.GetFeature.Name8 o3 [: K8 A  l
  19.    Dim SwTabAnn As TableAnnotation, Str, SwAnn As Annotation* L7 @3 h& \* l6 l- o, _
  20.        Set SwTabAnn = SwBomTabAnn
    1 j6 h0 l9 x4 U# G  K! v
  21.    Dim Xx, Yy
    $ M# X. Z3 f9 Y' g/ P3 y
  22.        Xx = 420 - 5  N7 H# g) B% {7 c- n3 o
  23.        Xx = Xx / 1000
    $ C5 ~# @8 u0 ]) o3 b3 W  ]" c2 f
  24.        Yy = 30 / 1000: e3 A% B, m/ K" C# }: T- o
  25.        ''
    ; S2 Q6 v2 @1 n. K, P+ D, q7 {
  26.        With SwTabAnn0 T. o0 c2 X  {! Q0 u
  27.           For jj = 0 To UBound(cArr)  ' .ColumnCount - 1) }. Q$ g0 f$ f" d+ |
  28.              .SetColumnWidth jj, wArr(jj) / 1000, 0
    % Z. T/ h: b1 M9 U
  29.              .SetColumnTitle jj, cArr(jj)
    , \4 i$ n! ~5 b, ]' c  [! Q
  30.              SwBomTabAnn.SetColumnCustomProperty jj, Arr(jj)$ f7 A2 _, X+ h' g
  31.           Next jj' c1 b1 _7 g  v, O3 K- L
  32.           For ii = 0 To .RowCount
    0 E9 R* z% M. n$ b- L
  33.              If ii = .RowCount Then
    . s9 k$ \& d! w  h- I+ X
  34.                 .SetRowHeight ii, 0.01, 0
    / [. L: K5 L* S, H" r% d& b% R
  35.              Else3 L' p: l3 x  g! K, p* I6 k1 e/ k# r& r
  36.                 .SetRowHeight ii, 0.005, 0
    ) U. B0 ?: R+ J6 Q; c+ d
  37.              End If" D/ ^/ [: |4 u! Q
  38.           Next ii
    % D0 U% f" V$ |+ F, W# c8 ]) N& W- H: Y, c
  39.           .AnchorType = swBOMConfigurationAnchor_BottomRight
    2 a3 o5 p5 `% \! Y
  40.           Set SwAnn = .GetAnnotation9 D' z  O4 g3 N3 l
  41.           SwAnn.SetPosition Xx, Yy, 0
    ( |* Z. j, G7 X) ~0 b( N: {
  42.        End With
    ( _' y6 `8 j- O' B0 ~4 L

  43. 9 Y  o& d+ v9 ]4 H% K; X
  44. End Function
    3 G6 C( ]3 g0 b' I$ p: I
  45. + v$ B" s) D/ _" r

  46. / `' {- o& `$ k$ o! a/ n
复制代码
: q2 |- e/ X) g. T

. `9 L8 A( U& P* ~% F$ M& h; L8 }; z/ a2 f) B% n4 G0 r# z- m: ?4 J
  1. : T0 V* K& S) p2 Q4 O
  2. ''* H% S  ^; j# y2 D* A& \* ]- E9 C
  3. Function MainPlateBOM(SwBomTabAnn As BomTableAnnotation, SwTabAnn As TableAnnotation, cArr, Arr, wArr, Xx, Yy, oAnchorType)
    7 c# G8 L5 d& k! z  L# `3 M
  4.        Xx = Xx / 1000
    * q0 v- G; X+ I# x& E& w
  5.        Yy = Yy / 1000
    3 m8 k- p, j, v; L+ q- W9 W
  6.        ''9 x+ c$ [; a5 T( T4 @
  7.        With SwTabAnn: x9 Q# V! L% t2 ^1 {) Z
  8.           For jj = 0 To UBound(cArr)  ' .ColumnCount - 1
    8 E, v: p! S, a5 N% i! q
  9.              SwBomTabAnn.SetColumnCustomProperty jj, Arr(jj); j  a+ ?* U, t3 q& }
  10.              .SetColumnTitle jj, cArr(jj)7 J9 P3 Q1 y& T
  11.              .SetColumnWidth jj, wArr(jj) / 1000, 08 P% d7 N, }) ~# @' y
  12.           Next jj
    2 r  ~" }$ D6 k& v- `' V6 j% M
  13.           For ii = 0 To .RowCount
    " c7 {( |- Y- k* F8 B7 z
  14.              If ii = .RowCount Then' e8 e4 u8 p& ?$ i5 q1 D" O
  15.                 .SetRowHeight ii, 0.01, 0! j* b" `( Z1 O
  16.              Else
    3 [5 \) M8 E  v$ d
  17.                 .SetRowHeight ii, 0.005, 0
    ' |2 w& I1 @% d  z
  18.              End If5 D% D+ k1 G6 |' N
  19.           Next ii9 h6 j& e8 \9 P4 g+ c
  20.           .AnchorType = oAnchorType
    8 {3 w) S: u% C! x/ u
  21.           Set SwAnn = .GetAnnotation& l9 O4 r0 `; B5 h
  22.           SwAnn.SetPosition Xx, Yy, 00 `- P& F  i) x( B1 I4 Q+ l
  23.        End With
    ! w% @# k* t0 p
  24. End Function* T% ~" g) l  t& U5 \# m
  25. Private Sub ChangeBOM()
    1 X# G2 z, T+ c5 O
  26.     Dim T: T = Timer
    1 \7 i( L: A# \1 [
  27.     Dim Arr(1), cArr(1), wArr(1)/ U) X2 ?, Q4 r' P* @' W
  28.       cArr(0) = Array("序号", "标 准 号", "名        称", "数量", "材  料", "质量" & Chr(13) & "(单)", "质量" & Chr(13) & "(合)", "备  注")
    , t! _6 |  t7 s
  29.       Arr(0) = Array("", "标准号", "名称", "", "材料", "质量", "", "备注")
    & C& \/ f! [$ @- `% p
  30.       wArr(0) = Array(10, 25, 50, 12, 25, 15, 18, 25)
    1 E( }0 @2 n& b5 u
  31.       ''
      s  [8 J9 v/ p7 h8 v. P4 k
  32.       cArr(1) = Array("件号", "名    称", "模型质量", "下料尺寸", "下料质量", "数量", "材料", "δ", "下料质量-模型质量", "备  注")
    $ J1 ?+ B: [: d( J
  33.       Arr(1) = Array("件号", "名称", "质量", "下料尺寸", "下料质量", "", "材料", "δ", "", "")2 N0 u! a9 @& a) `0 K! c
  34.       wArr(1) = Array(10, 40, 15, 35, 15, 10, 20, 8, 40, 15)" f3 O: c, q) J( U3 I# a
  35.     1 ^! K# G# k5 c% p5 T) R
  36.     6 X- `% S5 D. i! e/ K6 e, I2 O4 e
  37.     Dim SwApp As SldWorks.SldWorks, SwModel As ModelDoc2
    + B4 ^+ p# d) q
  38.         Set SwApp = Application.SldWorks
    8 t$ v% A1 E2 ^  O) b: M
  39.         Set SwModel = SwApp.ActiveDoc! W" C/ P% V& H# x+ T
  40.     Dim SwSelMgr As SelectionMgr
    - `; Y# {% c9 B* S# n3 @
  41.         Set SwSelMgr = SwModel.SelectionManager
    / {5 O" A; G1 }' t( g6 ?, |( K  o7 [
  42.     Dim SwFeat As Feature, SwBomFeat As BomFeature
      X: ^% v4 Z$ B- P8 {8 Q
  43.    
    1 b, J: L9 u. ~+ C5 @( Q
  44.     Dim SwBomTabAnn As BomTableAnnotation, SwTabAnn As TableAnnotation
    3 U( B# L  i9 |. H3 S
  45.         Set SwFeat = SwModel.FirstFeature6 ?/ q, |! C* C1 [9 s) L
  46.         Do While Not SwFeat Is Nothing
    9 ]( @0 |2 L* Y' ^
  47.            '''6 h$ d- f; |; g$ J: \7 z# g
  48.            If UCase(SwFeat.Name) Like "*BOM*" And SwFeat.GetTypeName = "BomFeat" Then# x, Q' T% N# L
  49.               'SwFeat.Select True! I$ H5 d" h- d
  50.               Set SwBomFeat = SwFeat.GetSpecificFeature2  ' SwSelMgr.GetSelectedObject5(1)9 @7 ]/ m* z% v( F1 t, T% s7 S
  51.               Set SwBomTabAnn = SwBomFeat.GetTableAnnotations(0)
    6 j) e/ j) D# `6 S* D/ O
  52.               Debug.Print SwBomFeat.GetFeature.Name2 H, Q4 n& C* r
  53.               Set SwTabAnn = SwBomTabAnn4 E- \1 V& R: g) O) T: {$ Q, K
  54.               'Debug.Print SwFeat.Name, SwFeat.GetTypeName
    8 X+ J# d3 P. g$ o" ^
  55.               If UCase(SwFeat.Name) Like "*MAIN*" Then7 }5 c' s9 T& u
  56.                  MainPlateBOM SwBomTabAnn, SwTabAnn, cArr(0), Arr(0), wArr(0), 420 - 5, 30, swBOMConfigurationAnchor_BottomRight
    ) v0 p% B% h5 J
  57.                    ''' e4 q2 B. \7 `" z# Z4 d$ ?5 J
  58.               ElseIf UCase(SwFeat.Name) Like "*PLATE*" Then
    & t( p1 J( R3 J' @4 u3 C& u: G
  59.                  MainPlateBOM SwBomTabAnn, SwTabAnn, cArr(1), Arr(1), wArr(1), 25, 5, swBOMConfigurationAnchor_BottomLeft5 |2 a$ U+ V# D* z. w
  60.                     With SwTabAnn '
    3 z5 W. W7 P* j& R7 p
  61.                        For ii = .RowCount To 0 Step -1! V9 Q9 ], U# W% W5 y
  62.                          If .Text(ii, 3) Like "*板材*" Then, ]* K! x/ `- h6 u/ z. [# G
  63.                             Debug.Print .Text(ii, 6)+ L# `# o' G- P% a; E9 t
  64.                          Else
    ) `" T4 S9 R- m# \7 A$ S$ X8 o
  65.                            .DeleteRow (ii)
    - K- C1 e/ z  E
  66.                          End If2 W3 R: `2 p4 G3 K# ?4 X5 |: Z
  67.                        Next ii
    + W0 k* ?8 i1 u
  68.                     End With& i# L8 K7 A; H

  69. * V: k5 p$ K  |+ |' X% S2 G
  70.               End If/ c+ g, O: R, x: ~& X6 v  V
  71.               Debug.Print "SWBOMFEAT", SwBomFeat.GetFeature.Name
    " X% G( _8 u! U' g$ T4 b) l: V
  72.            PrintTiming T( ~" k; ~7 t7 u. u
  73.            End If2 d! W: G/ \" G* O8 @/ M
  74.            Set SwFeat = SwFeat.GetNextFeature
      w3 J& T# g! q% {# R( t5 h
  75.            SwModel.ClearSelection2 True2 d( `7 I3 }9 Y8 @% i
  76.            4 ?9 Q) S1 _3 |1 W& @& G0 c/ k
  77.         Loop, C4 |( [) v/ P! _2 p/ T8 M
  78. End Sub
    + _% o, F( u" d" a! X. x
复制代码

9 H8 J* f' c, L$ _) w0 W6 t/ j8 A- \) x* J
' l+ i% P; S$ f) b" J: x

" h3 k* e4 I. T- \8 q/ {+ w
" w6 ~. f: z9 R6 s
( ]6 \+ S& s$ p& }
发表于 2016-2-11 21:12:17 | 显示全部楼层 来自: 中国安徽蚌埠
用shift选择头和尾,用crl剔除多余的,然后点隐藏
发表于 2016-2-12 09:22:07 | 显示全部楼层 来自: 中国辽宁
本帖最后由 qiminger 于 2016-2-12 11:09 编辑
2 d5 C9 b# L- k( Z7 W6 K8 ]5 q/ i! `/ _/ i% H6 x
原来要排列下料单,导出在Excel中进行吧。
发表于 2016-2-13 21:28:49 | 显示全部楼层 来自: 中国辽宁盘锦
寂静天花板 发表于 2016-2-12 09:32
! J! ^) M: t! @1 Y: _/ W肯定是你选中哪个,才会有下一步的选择,否则软件知道你要干什么。

; q4 p+ D: j* n* ~  h+ m& K0 C我看懂了5 Y; w1 z! y2 Y$ E' L
楼主的意思是,这个命令也要和别的命令可以有两种操作方法是一样的" F/ E3 c/ S: W. P* z/ p) ^
具体为:选择命令后选择要执行的部位;选择要执行的部位再选择要执行的命令
, l. o5 R' s; C- N& M6 i) ]9 `楼主倾向于选择命令后选择要执行的部位
发表于 2016-2-17 09:25:29 | 显示全部楼层 来自: 中国江苏苏州
阿帕奇 发表于 2016-2-13 21:28
  |$ G. O  L/ i5 `我看懂了
9 n, o, j% ~2 k5 H2 f, l楼主的意思是,这个命令也要和别的命令可以有两种操作方法是一样的% Y  E) L" c6 Q7 [/ Z# m; M, |; F
具体为:选择命令后选择要 ...
6 p5 |& q$ C2 R# J, I, r3 j* c  I% F
高手,这个解释太精辟了
发表于 2016-2-17 13:13:55 | 显示全部楼层 来自: 中国四川乐山
阿帕奇 发表于 2016-2-13 21:28
! U3 w* l3 _6 L9 B# d" b1 r我看懂了
, ^# ~3 x9 H" h, X. U楼主的意思是,这个命令也要和别的命令可以有两种操作方法是一样的
( T2 G' e  Z6 g! R/ Q/ A具体为:选择命令后选择要 ...

7 `+ U. t' \! k; s还是武直10一语中的
发表于 2016-2-21 20:50:15 | 显示全部楼层 来自: 中国辽宁
啥都没准 发表于 2016-2-17 13:13 static/image/common/back.gif8 K/ f" x' o! B4 ^" @
还是武直10一语中的
7 Q8 n% ^1 E  P4 Z6 `
http://www.3dportal.cn/discuz///mobcent//app/data/phiz/default/31.png那是谁啊  x) N& J% \0 G5 R" K. h
发表于 2016-2-22 08:29:43 | 显示全部楼层 来自: 中国四川乐山
阿帕奇 发表于 2016-2-21 20:50
1 m7 s& n8 {+ l# `! b那是谁啊

  D5 }' L; _: F+ ?6 ?6 `$ J4 I哈哈,玩笑话!武直10”外形“是高仿版的阿帕奇
发表于 2016-2-27 10:48:20 | 显示全部楼层 来自: 中国辽宁
啥都没准 发表于 2016-2-22 08:29 static/image/common/back.gif. ~. ?- {( a, z+ K8 N/ r
哈哈,玩笑话!武直10”外形“是高仿版的阿帕奇

4 x8 x2 h% E1 e& Y  i* x% wmade in china啊http://www.3dportal.cn/discuz///mobcent//app/data/phiz/default/03.png
4 B  V# j' p' |. K" {) O8 Y
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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