找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 8010|回复: 12
打印 上一主题 下一主题

[讨论] 填充阵列不能选择为驱动特征

[复制链接]
跳转到指定楼层
1
发表于 2016-1-21 07:29:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ning58 于 2016-1-21 07:50 编辑

线性阵列可以用于驱动特征,能实现目标需求。



****************************************

而填充阵列不能选择为驱动特征。



请问,各位有什么办法将钢管填充圆盘内的圆孔?



本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2016-1-21 08:07:20 | 只看该作者
楼主的sw版本可真经典。。。。
3
发表于 2016-1-21 08:37:39 | 只看该作者
直接选择 填充整理不是可以吗

本帖子中包含更多资源

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

x
4
发表于 2016-1-21 18:05:29 | 只看该作者
楼主的问题,可能需要老古董级别的才能顺利交流啦.
俺新手小白路过,表示看不懂,都没见过这号版本SW。
5
发表于 2016-1-21 22:29:29 | 只看该作者
本帖最后由 ning58 于 2016-1-21 22:44 编辑

SW2006对计算机要求低,用Sw2006做系列“换热器”,比高版本好多了。
用高版本SW完成图示换热器,尽可能用简化方法,其结果文件特别大(近G算文件大小)。
用Sw2006,文件越大,根本无法运行。只能用Sw最简单的功能,尽量缩小文件size。





本帖子中包含更多资源

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

x
6
发表于 2016-1-21 22:52:12 | 只看该作者
本帖最后由 ning58 于 2016-1-21 22:56 编辑



换热器布管有好多方法,方法不对文件size有很大的差别。



用Solidworks的API完成换热器布管,比高版本内置功能相比,文件Size要小。

本帖子中包含更多资源

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

x
7
发表于 2016-1-21 23:11:59 | 只看该作者
8
发表于 2016-1-22 06:10:39 | 只看该作者
是啊,在win7大行其道,win10蒸蒸日上,硬件白菜价之时,还有楼主这样省钱大爷,不知企业之幸甚,还是国之不幸
9
发表于 2016-1-22 07:54:11 | 只看该作者
本帖最后由 ning58 于 2016-1-22 08:47 编辑
营口人 发表于 2016-1-22 06:10
是啊,在win7大行其道,win10蒸蒸日上,硬件白菜价之时,还有楼主这样省钱大爷,不知企业之幸甚,还是国之 ...



此图是本人在Solidworks官网的API板块发的帖。
解决问题是统计全孔和半孔的数据。


How to count hole number include half hole | SOLIDWORKS Forums
https://forum.solidworks.com/thread/108191


我的提出的关键码是

     Set SwLoop = swFace.GetFirstLoop

      Do While Not SwLoop Is Nothing


        If Not SwLoop.IsOuter Then

            vEdges = SwLoop.GetEdges

            If UBound(vEdges) = 0 Then

                Dim swEdge As SldWorks.Edge

                Set swEdge = vEdges(0)

                Dim swCurve As SldWorks.Curve

                Set swCurve = swEdge.GetCurve

                'If swCurve.IsCircle Then

                    totalHolesCount = totalHolesCount + 1

                'End If

            End If

        End If


老外给我提出的优化代码,与我的代码没什么区别,只是代码编制习惯。



Private Sub ll()
   Dim Xls As Excel.Application, Rng As Range
      Set Xls = GetObject(, "Excel.Application")
      Set Rng = Xls.Cells(3, 1)
   Dim yDict As New Dictionary, xx(), yy(), oArr
   Dim SwApp As SldWorks.SldWorks, SwModel As ModelDoc2
      Set SwApp = Application.SldWorks
      Set SwModel = SwApp.ActiveDoc
   Dim SwSelMgr As SelectionMgr
      Set SwSelMgr = SwModel.SelectionManager
   Dim SwFeat As Feature, Total As Integer
      Set SwFeat = SwSelMgr.GetSelectedObject5(1)
   Dim fCount, vFace, SwFace As Face2
   Dim SwEdgePt, SwEdge As Edge, vEdge
   Dim SwSketch As Sketch, SwCurve As Curve
      ''
      vFace = SwFeat.GetFaces
      fCount = SwFeat.GetFaceCount
      ReDim xx(fCount), yy(fCount)
      For ii = 0 To UBound(vFace)
         Set SwFace = vFace(ii)
         With SwFace
            vEdge = .GetEdges
            Set SwEdge = vEdge(0)

            With SwEdge
                Set SwCurve = .GetCurve
                ss = SwCurve.CircleParams
                xx(ii) = Round(ss(0) * 1000, 2)
                yy(ii) = Round(ss(2) * 1000, 1)
                Rng(ii, 1) = xx(ii)
                Rng(ii, 2) = yy(ii)
                yDict(yy(ii)) = ""
            End With
         End With
      Next ii
      oArr = Bubble_Sort(yDict.Keys, "ASC")
   Dim yCount()
   ReDim yCount(UBound(oArr), 1)
      For ii = 0 To UBound(oArr)
          'Debug.Print Xls.WorksheetFunction.CountIf(yy, oArr(ii))
          cc = 0
          For jj = 0 To UBound(yy)
             If oArr(ii) = yy(jj) Then
                cc = cc + 1
             End If
          Next jj
          yCount(ii, 0) = oArr(ii)
          yCount(ii, 1) = cc
          Total = Total + cc
      Next ii
      Debug.Print Total
      Stop
End Sub

''

''
''
Function Bubble_Sort(Ary, objOrder As String)
   Dim aryUBound, i, j
   aryUBound = UBound(Ary)
   For ii = 0 To aryUBound
     Ary(ii) = Val(Round(Ary(ii), 2))
   Next ii
   For i = 0 To aryUBound
     For j = i + 1 To aryUBound
       Select Case UCase(objOrder)
         Case "DESC"
           If Ary(i) < Ary(j) Then
             Swap Ary(i), Ary(j)
           End If
         Case "ASC"
           If Ary(i) > Ary(j) Then
             Swap Ary(i), Ary(j)
           End If
       End Select
     Next
   Next
   Bubble_Sort = Ary
End Function
''
Function Swap(a, B)
   Dim tmp
   tmp = a
   a = B
   B = tmp
End Function


10
发表于 2016-1-22 08:17:12 | 只看该作者
真正的高手对于挑衅都是一笑而过的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-4-6 17:34 , Processed in 0.046600 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

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