QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
00.jpg , `, w0 z6 c9 d/ [% W
常用方法是人工选择单元格,隐藏选择行。
$ v+ I" o, H) a! B
. y" m' K$ [* B1 M+ f, c: |请问,还有什么更简单快速的方法,隐藏选择材料明细表时的行。2 g' A) H, t6 R7 m/ l
8 m1 Y+ ~; L3 ~  R% D2 f0 j
9 ]5 X; N. ~- f

- C7 N$ b* Z" o7 q; |. I) G8 @: q! E4 `8 {* l5 P# ]8 u1 Y3 j
 楼主| 发表于 2016-2-11 06:51:16 | 显示全部楼层 来自: 中国甘肃兰州
本帖最后由 ning84 于 2016-2-14 17:27 编辑 + l; h- N& [: @# R. f2 z
6 Q- I- Q3 c7 P2 H. E% ]
用API解决,没找到隐藏单元行的指令。只能用.text(ii,6)来判断。
6 Y5 C! w( ]: ]1 N6 B用API解决的问题,厚度排序和合并,下料尺寸排序。
  }+ g! D7 j- V5 Q0 z4 C

  1. 3 ^. `+ o  S3 v# [% E  [! M

  2. + f7 q9 s- n  c/ H5 D
  3. Function TitleBomPlateBom(): X; T: y3 A9 B
  4.    Dim Arr, cArr, wArr
    1 X0 |# w# |7 V/ y0 [; D8 `& R
  5.       cArr = Array("序号", "标 准 号", "名        称", "数量", "材  料", "质量" & Chr(13) & "(单)", "质量" & Chr(13) & "(合)", "备  注")/ _7 k& y' w9 n2 ?2 G
  6.       Arr = Array("", "标准号", "名称", "", "材料", "质量", "", "备注")
    ! i2 y) e8 T8 E; ?# y) M
  7.       wArr = Array(10, 25, 50, 12, 25, 15, 18, 25)
    0 i( W1 o9 X* @1 \
  8.       # n2 ?- t4 \$ ~- P
  9.     Dim SwApp As SldWorks.SldWorks, SwModel As ModelDoc21 l8 s0 F3 R& O2 _' z$ k
  10.        Set SwApp = Application.SldWorks" y5 y' F$ w/ V3 v
  11.        Set SwModel = SwApp.ActiveDoc
    * H7 t" W+ v5 D4 t
  12.    Dim SwSelMgr As SelectionMgr, tmp
    ! q2 I9 U% X' m! s
  13.        Set SwSelMgr = SwModel.SelectionManager
    3 M5 C: t0 P2 g( [+ \4 _+ J# |$ t4 s
  14.    Dim SwBomFeat As BomFeature, SwBomTabAnn As BomTableAnnotation
    : \% U, z" u# T: x, S
  15.        tmp = SwModel.Extension.SelectByID2("TitleBom", "BOMFEATURE", 0, 0, 0, False, 0, Nothing, 0)/ H5 g! a8 @: ^5 E) D( ?
  16.        Set SwBomFeat = SwSelMgr.GetSelectedObject5(1)
    ; c- y& y$ M5 n# T, r
  17.        Set SwBomTabAnn = SwBomFeat.GetTableAnnotations(0)
    1 d1 e% ^, x! c- _! q$ [' ?# |
  18.        'Debug.Print SwBomTabAnn.BomFeature.GetFeature.Name
    2 w& E  b0 _9 P4 r, [
  19.    Dim SwTabAnn As TableAnnotation, Str, SwAnn As Annotation
    & B+ J: T" Z% l2 F  s
  20.        Set SwTabAnn = SwBomTabAnn
    9 J; H  I9 l& P
  21.    Dim Xx, Yy
    / `4 O: a: i5 e( T; t* u
  22.        Xx = 420 - 5
    ' `- x7 A& G% |3 R! ~
  23.        Xx = Xx / 1000
    9 N+ z) u! ]0 H: L
  24.        Yy = 30 / 1000
    ; X. s; T: K4 {- X, C* R& r
  25.        ''3 A! \1 C, ~3 |+ s2 f6 F  L0 y+ ]
  26.        With SwTabAnn
    ! V+ C) P/ G$ N
  27.           For jj = 0 To UBound(cArr)  ' .ColumnCount - 13 S, I0 @, q! [  N1 c# R" |
  28.              .SetColumnWidth jj, wArr(jj) / 1000, 03 g. E* w5 ?! J2 G! f* ]
  29.              .SetColumnTitle jj, cArr(jj)5 @) r' T* q0 `4 v( `8 ~  l
  30.              SwBomTabAnn.SetColumnCustomProperty jj, Arr(jj)& Y1 ^/ I+ D7 a1 c5 _
  31.           Next jj
    - ]2 n" g- a. L& Y/ B
  32.           For ii = 0 To .RowCount
    8 q  B- {- v' d! y3 b+ I
  33.              If ii = .RowCount Then3 U* ~6 u& k  e) \' Y/ [! x
  34.                 .SetRowHeight ii, 0.01, 0
    " y& [" s, ~4 A7 x! M
  35.              Else
    % ]1 t5 {. A% e0 V) s: {" @! N1 t
  36.                 .SetRowHeight ii, 0.005, 0
    8 G0 U- f2 `: [* z, x' B! K
  37.              End If
    & W  N( j$ u1 b+ Y
  38.           Next ii
    . f  v: p' ~3 `; C
  39.           .AnchorType = swBOMConfigurationAnchor_BottomRight$ y1 t0 T# y& l6 {- f  P& A- j
  40.           Set SwAnn = .GetAnnotation# T: y9 o( i, p; l# B
  41.           SwAnn.SetPosition Xx, Yy, 0
    , U" g1 N' r5 a( A9 R7 z
  42.        End With
    * g4 C8 `. z( \5 L8 B
  43. 3 y# N# X( M0 }. ?1 I, O( E8 X
  44. End Function
    . V9 Q7 v: {% e# _; q
  45. 9 Z! O& s, }# d7 U- }0 ?
  46.   d: U* o9 K8 G% U! Q+ F! _, r
复制代码

8 p1 b" y8 }: Q$ y# o8 h$ y5 r$ D, Y2 J+ h4 r& c/ ~
0 f* S' C+ a. W! J3 H  {- S! W
  1. ' B% b. F2 t% D6 H
  2. ''  Y; Y0 O( r! n( K1 d) ?; Q7 q( i
  3. Function MainPlateBOM(SwBomTabAnn As BomTableAnnotation, SwTabAnn As TableAnnotation, cArr, Arr, wArr, Xx, Yy, oAnchorType)( `8 p4 B; v& _3 T
  4.        Xx = Xx / 1000
    ! W" I3 \1 Z& z+ f6 z
  5.        Yy = Yy / 1000" V( f9 Y  f; C* w
  6.        ''
    : e7 R9 W- d1 J: p1 `& I+ y9 ^, ]
  7.        With SwTabAnn( M/ F5 P: C% Q/ k- ^1 ~$ l; P
  8.           For jj = 0 To UBound(cArr)  ' .ColumnCount - 13 i) D! V2 i- y/ Q" H; L3 U7 n
  9.              SwBomTabAnn.SetColumnCustomProperty jj, Arr(jj)8 I( g" ^. A( U0 a  x5 r
  10.              .SetColumnTitle jj, cArr(jj). g# f8 d; B1 D4 f
  11.              .SetColumnWidth jj, wArr(jj) / 1000, 0+ r  X7 Q' i0 E- R
  12.           Next jj
    1 D0 b$ Z* L' O" g# l7 x
  13.           For ii = 0 To .RowCount
    7 m/ m0 ?% x: ?% O4 C: ~
  14.              If ii = .RowCount Then, i. }" g$ i2 ?0 S  H% Z
  15.                 .SetRowHeight ii, 0.01, 0
    . u) m* w" s5 U# b4 Q$ Y
  16.              Else$ x5 \* [  S1 R8 e; c
  17.                 .SetRowHeight ii, 0.005, 00 w" F/ t& I: M
  18.              End If! P, a. t, d* Y3 b, `1 j; s
  19.           Next ii
    4 ~% A/ k! d( x+ o
  20.           .AnchorType = oAnchorType
    / T+ ?4 j) o3 i" D
  21.           Set SwAnn = .GetAnnotation
    1 f/ U0 l3 [5 U; e( b0 `! h# H6 s
  22.           SwAnn.SetPosition Xx, Yy, 0
    6 g0 H4 V; f5 i# V: E$ f
  23.        End With: A9 ?5 e. }3 [4 c; {. x! ^
  24. End Function
    4 w0 c+ t! D9 T* {% D" d1 Z1 u
  25. Private Sub ChangeBOM()
    , q+ f6 ]/ L0 l" h; H5 g- j3 @
  26.     Dim T: T = Timer
    6 j# b% W9 D8 i1 m
  27.     Dim Arr(1), cArr(1), wArr(1)
    1 h- D5 ~4 H: k6 J9 h
  28.       cArr(0) = Array("序号", "标 准 号", "名        称", "数量", "材  料", "质量" & Chr(13) & "(单)", "质量" & Chr(13) & "(合)", "备  注")
    : j& c  e. M, h3 L; P
  29.       Arr(0) = Array("", "标准号", "名称", "", "材料", "质量", "", "备注")  W  e# W3 J- f! W
  30.       wArr(0) = Array(10, 25, 50, 12, 25, 15, 18, 25)
    * ]. G1 H# E9 x6 g) T+ E
  31.       ''/ H9 J5 M: ~, m5 U
  32.       cArr(1) = Array("件号", "名    称", "模型质量", "下料尺寸", "下料质量", "数量", "材料", "δ", "下料质量-模型质量", "备  注")
    ) N) j* M8 U* d3 W: n, M! Z
  33.       Arr(1) = Array("件号", "名称", "质量", "下料尺寸", "下料质量", "", "材料", "δ", "", ""): _* D) L) D: }" T
  34.       wArr(1) = Array(10, 40, 15, 35, 15, 10, 20, 8, 40, 15)& A: R/ n7 J$ D2 f& i: J
  35.     4 h- ]2 D9 X, i' R+ u; Q! N1 R/ W7 z! B
  36.     / Z" u' C; L% X9 j8 j
  37.     Dim SwApp As SldWorks.SldWorks, SwModel As ModelDoc22 g( `" U# {' H6 a9 P$ V
  38.         Set SwApp = Application.SldWorks
      G' L4 H9 e$ ^& \' E' _
  39.         Set SwModel = SwApp.ActiveDoc$ y$ |: @/ m) e6 ]
  40.     Dim SwSelMgr As SelectionMgr# c& c8 o" q  ^
  41.         Set SwSelMgr = SwModel.SelectionManager% ?% d. l! M+ S# p& G& S0 `( m7 {
  42.     Dim SwFeat As Feature, SwBomFeat As BomFeature
    7 k0 w  H6 V( _" h6 e, d4 U+ j
  43.    
    0 t7 z& `+ Z6 {  c* _
  44.     Dim SwBomTabAnn As BomTableAnnotation, SwTabAnn As TableAnnotation
      |; P, s. L0 t; }8 x
  45.         Set SwFeat = SwModel.FirstFeature3 q7 e) e5 G$ V. H' ~4 v1 }
  46.         Do While Not SwFeat Is Nothing5 A  D% p& t/ h  u  m& l
  47.            '''0 ]3 p6 E/ t( n
  48.            If UCase(SwFeat.Name) Like "*BOM*" And SwFeat.GetTypeName = "BomFeat" Then
    % L" {9 D( E4 h) z$ ^
  49.               'SwFeat.Select True& L# Z) T" g1 ~$ A9 Y4 u
  50.               Set SwBomFeat = SwFeat.GetSpecificFeature2  ' SwSelMgr.GetSelectedObject5(1)
    0 A8 z3 j/ a7 j8 F; ^6 n: C/ F
  51.               Set SwBomTabAnn = SwBomFeat.GetTableAnnotations(0)
    4 ^  W7 \/ Z0 h  _
  52.               Debug.Print SwBomFeat.GetFeature.Name
    % F& \3 J! E+ p0 `9 ?5 [
  53.               Set SwTabAnn = SwBomTabAnn, i, V: X4 K% t. C
  54.               'Debug.Print SwFeat.Name, SwFeat.GetTypeName
      ?- Y& e3 o. j
  55.               If UCase(SwFeat.Name) Like "*MAIN*" Then( f( O7 f4 C2 z' s$ `
  56.                  MainPlateBOM SwBomTabAnn, SwTabAnn, cArr(0), Arr(0), wArr(0), 420 - 5, 30, swBOMConfigurationAnchor_BottomRight: ?  [0 x5 \% K* m" J- c
  57.                    ''
    2 ]) b' {% g* y( c# `9 o- {
  58.               ElseIf UCase(SwFeat.Name) Like "*PLATE*" Then( J$ \, y( j0 I; e. p
  59.                  MainPlateBOM SwBomTabAnn, SwTabAnn, cArr(1), Arr(1), wArr(1), 25, 5, swBOMConfigurationAnchor_BottomLeft7 i6 V" M' o4 o# v  ^' ]! ^
  60.                     With SwTabAnn '
    8 O  `, B* l5 s' o4 m
  61.                        For ii = .RowCount To 0 Step -1
    3 S+ r9 d+ C# J1 N
  62.                          If .Text(ii, 3) Like "*板材*" Then
    5 e) m9 |7 L) p& X  E3 y
  63.                             Debug.Print .Text(ii, 6)
    - {, O3 T% t" {6 E( a$ H
  64.                          Else  N* g6 ^' `8 N5 X: D) @# T
  65.                            .DeleteRow (ii)
    . K9 S1 H$ l+ f# q! `
  66.                          End If
    ! Y+ c  E7 A+ |6 Z
  67.                        Next ii# x6 @- x& n3 F5 A* e6 n# t& ]8 \
  68.                     End With
    - S0 J* s  W& Z" D7 ~' N8 d
  69. 8 S0 w( T$ n# }! a$ b1 s
  70.               End If
    : B/ p* L6 T' `( F5 L4 L
  71.               Debug.Print "SWBOMFEAT", SwBomFeat.GetFeature.Name! ^6 P; i& [3 s: ^& h2 j
  72.            PrintTiming T- h' Q* N) S. Z8 C9 V
  73.            End If/ r, P! Y, ~, z9 Q
  74.            Set SwFeat = SwFeat.GetNextFeature; z) J' y. g* W5 `5 t
  75.            SwModel.ClearSelection2 True! M7 @1 L, B4 u  o$ @, S6 K+ E5 E
  76.            8 X8 M5 d/ C& H( Y
  77.         Loop
    ! \% ^( o3 H6 V5 O! j+ G
  78. End Sub
    - O  x" W* D3 J7 E4 h- V4 ~
复制代码
3 b3 Y( ~! A* n# h1 I  Q: ?

* F1 G) p# p6 h
) C) j0 I( `6 Q2 D
8 ]# @+ c( U/ p7 O/ N1 z
( _$ j) Y; o; N7 i/ s
* x: f) `7 ^$ a& ?/ A9 B! w# z
发表于 2016-2-11 21:12:17 | 显示全部楼层 来自: 中国安徽蚌埠
用shift选择头和尾,用crl剔除多余的,然后点隐藏
发表于 2016-2-12 09:22:07 | 显示全部楼层 来自: 中国辽宁
本帖最后由 qiminger 于 2016-2-12 11:09 编辑 ! t- L  I" G( I% i: e

' g5 k" ~7 ?7 W) t0 G原来要排列下料单,导出在Excel中进行吧。
发表于 2016-2-13 21:28:49 | 显示全部楼层 来自: 中国辽宁盘锦
寂静天花板 发表于 2016-2-12 09:32
7 Z* A$ |  H; W) K: c肯定是你选中哪个,才会有下一步的选择,否则软件知道你要干什么。
9 R# P7 S" T( y2 `" z$ E9 G
我看懂了
: z5 D8 }! M" e( }楼主的意思是,这个命令也要和别的命令可以有两种操作方法是一样的+ h8 I/ d1 \3 E7 S  L4 P5 Y' @
具体为:选择命令后选择要执行的部位;选择要执行的部位再选择要执行的命令
% {, \4 U4 {4 l楼主倾向于选择命令后选择要执行的部位
发表于 2016-2-17 09:25:29 | 显示全部楼层 来自: 中国江苏苏州
阿帕奇 发表于 2016-2-13 21:284 {. y$ N0 U/ ]) I4 k
我看懂了2 w: @- M, g% V+ ?- E6 W
楼主的意思是,这个命令也要和别的命令可以有两种操作方法是一样的
" F& t( }6 Q: y) n4 x/ R具体为:选择命令后选择要 ...

9 Z$ [/ j5 s, o; U  `2 s高手,这个解释太精辟了
发表于 2016-2-17 13:13:55 | 显示全部楼层 来自: 中国四川乐山
阿帕奇 发表于 2016-2-13 21:28, G. N  ?3 [: g* u5 c0 B
我看懂了
" s7 O4 p, o5 v4 S* ^楼主的意思是,这个命令也要和别的命令可以有两种操作方法是一样的" y5 p, ^$ `" K/ q! k5 F% X/ ]
具体为:选择命令后选择要 ...

- I2 X2 _" J% C8 r还是武直10一语中的
发表于 2016-2-21 20:50:15 | 显示全部楼层 来自: 中国辽宁
啥都没准 发表于 2016-2-17 13:13 static/image/common/back.gif2 D; I6 S! s) {* E5 h
还是武直10一语中的
2 H& R) q' x: N  o$ m1 q
http://www.3dportal.cn/discuz///mobcent//app/data/phiz/default/31.png那是谁啊
8 G$ W* F4 A" p
发表于 2016-2-22 08:29:43 | 显示全部楼层 来自: 中国四川乐山
阿帕奇 发表于 2016-2-21 20:50
' g$ E! b$ Q  p+ D5 [那是谁啊
( R; X0 P; W" C+ j; p
哈哈,玩笑话!武直10”外形“是高仿版的阿帕奇
发表于 2016-2-27 10:48:20 | 显示全部楼层 来自: 中国辽宁
啥都没准 发表于 2016-2-22 08:29 static/image/common/back.gif
& Y* k/ X5 k2 R, \哈哈,玩笑话!武直10”外形“是高仿版的阿帕奇
% r/ A9 @2 R5 x* Y2 `* y
made in china啊http://www.3dportal.cn/discuz///mobcent//app/data/phiz/default/03.png
3 e5 b8 [  G: \1 m1 ?2 C% P
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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