iCAx开思网

标题: 【求助】装配图中的零件序号排列 [打印本页]

作者: yu_kenneth    时间: 2002-6-11 12:59
提示: 作者被禁止或删除 内容自动屏蔽
作者: antslg    时间: 2002-6-11 14:53
用得少
搞不清
再试试
以后回
作者: ldw    时间: 2002-6-13 00:28
1.如装配零件少,在装配树中用鼠标拖一下顺序应该是可以接受的;
2.如装配零件多,可以将装配图明细表的属性→控制→行号→根据装配体顺序分配行号 选项取消,这时可任意修改零件序号注释(双击球标),且明细表会同步更新。版本应是sw2001或sw2001plus.
作者: yu_kenneth    时间: 2002-6-13 10:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: ldw    时间: 2002-6-14 00:45
look
作者: yu_kenneth    时间: 2002-6-14 17:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: hyjcpzy    时间: 2012-5-2 16:33
ldw 发表于 2002-6-13 00:28
1.如装配零件少,在装配树中用鼠标拖一下顺序应该是可以接受的;
2.如装配零件多,可以将装配图明细表的属 ...

没有找到,明细表的属性→控制→行号→根据装配体顺序分配行号,盼大侠指点
作者: zhb5043108    时间: 2016-11-9 11:01
6楼的朋友,你的零件序号问题是如何解决的,公布一下方法啊
作者: 三维专家    时间: 2016-11-11 18:17
你可以试用下面的宏,将零部件按顺序排列
  1. Option Explicit

  2. Dim swApp As SldWorks.SldWorks

  3. Dim Part As ModelDoc2
  4. Dim swAssyDoc As AssemblyDoc
  5. Dim selMgr As SelectionMgr
  6. Dim boolstatus As Boolean
  7. Dim components As Variant
  8. Dim swComp As Component2
  9. Dim nComponents As Integer
  10. Dim sArray() As String
  11. Dim iArray() As Integer
  12. Dim I As Integer
  13. Dim x As Integer
  14. Dim y As Integer
  15. Dim sTemp As String
  16. Dim iTemp As Integer

  17. Sub main()

  18.     Set swApp = Application.SldWorks
  19.    
  20.     Set Part = swApp.ActiveDoc
  21.    
  22.              '检查是否有效的装配体文档打开
  23.     If Part Is Nothing Then
  24.        swApp.SendMsgToUser "当前没有任何文档打开,该程序必须在装配体中运行!"
  25.        Exit Sub
  26.     ElseIf Part.GetType <> swDocASSEMBLY Then
  27.        swApp.SendMsgToUser "当前打开的文档不是一个装配体,请打开装配体后再试!"
  28.        Exit Sub
  29.     End If
  30.    
  31.     Set swAssyDoc = Part

  32.     Set selMgr = Part.SelectionManager
  33.    
  34.     ' 获得所有顶级零部件
  35.     components = swAssyDoc.GetComponents(True)
  36.     ' 获取零部件数组的上边界
  37.     nComponents = UBound(components)
  38.     ReDim sArray(nComponents)
  39.     ReDim iArray(nComponents)
  40.    
  41.     ' 增加零部件名称以及数组索引
  42.     For I = 0 To nComponents
  43.         Set swComp = components(I)
  44.         sArray(I) = swComp.Name2
  45.         iArray(I) = I
  46.     Next I
  47.     ' 对数组进行冒泡排序
  48.     For x = 0 To (nComponents - 1)
  49.         For y = (x + 1) To nComponents
  50.             If sArray(x) > sArray(y) Then
  51.                 sTemp = sArray(x)
  52.                 iTemp = iArray(x)
  53.                 sArray(x) = sArray(y)
  54.                 iArray(x) = iArray(y)
  55.                 sArray(y) = sTemp
  56.                 iArray(y) = iTemp
  57.             End If
  58.         Next y
  59.     Next x
  60.     ' 按照相反的顺序对零部件重新排序
  61.     For I = (nComponents - 1) To 0 Step -1
  62. '        Debug.Print components(iArray(i)).Name2 & " - " & components(iArray(i + 1)).Name2
  63.         boolstatus = swAssyDoc.ReorderComponents(components(iArray(I)), components(iArray(I + 1)), swReorderComponents_Before)
  64.     Next I

  65. End Sub
复制代码

作者: jnscl    时间: 2018-2-28 21:07
学习了
作者: qxzch    时间: 2018-2-28 21:54
三维专家 发表于 2016-11-11 18:17
你可以试用下面的宏,将零部件按顺序排列

这个宏很好用,谢谢三维专家!

作者: gdzsh    时间: 2018-3-1 11:20
三维专家 发表于 2016-11-11 18:17
你可以试用下面的宏,将零部件按顺序排列

测试了下,真心好用,为了装配体零件排序美观,我在闲的时候也常把零部件的位置托到名称一致的地方去,有这个宏就可以很方便的排序了,谢谢专家





欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3