ryouss 发表于 2018-12-19 09:58:26

變徑孔圓周複製-宏

本帖最后由 ryouss 于 2018-12-21 17:10 编辑

參考    swp文件









'   孔徑變化之圓周複製 2018/12/17 SW2012-SP4 測試
'
<font color="#0000ff"><b>'   ~~~ 提示 ~~~
'   1. 在零件選取作孔之平面
'   2. 執行 main宏.
'   3. 在 UserForm 鍵入數據.
'   4. 在 UserForm 按 "執行鍵".
'   5. 中心基孔定義在原點.</b></font>

Dim swApp As Object
Dim pi As Double
Dim R0 As Double
Dim HoleDiameterDiffer As Double
Dim CircllHoleEdge As Double
Dim CirclInsideHoleEdge As Double
Dim i, CircleNumber, CopyNunber, TotalCopyNunber As Integer
Dim Dn As Double
Dim Rn As Double
Dim XRn As Double

'~~~ 主程式 ~~~
Sub main()
UserForm1.Show 1
End Sub

'~~~ 作圖 ~~~
Sub Draw()
With UserForm1
'判定資料是否沒打入
If .TextBox1.Value = "" Or .TextBox2.Value = "" Or .TextBox3.Value = "" Or .TextBox4.Value = "" Or .TextBox5.Value = "" Then
      MsgBox ("Enter empty")
      Exit Sub
End If
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set swSketchMgr = Part.SketchManager
Part.SketchManager.InsertSketch True '依據選取面插入草圖
Part.SketchManager.AddToDB True'草圖實體直接添加到數據庫(否則 x<=0 會有問題)
pi = Atn(1) * 4 '圓周率
HoleDiameterDiffer = .TextBox2.Value / 1000 '各周孔直徑之差值
CircleNumber = .TextBox3.Value '周圈數
CircllHoleEdge = .TextBox4.Value / 1000 '周和周之孔邊間距
CirclInsideHoleEdge = .TextBox5.Value / 1000 '周圈內之孔邊間距
'原點中心圓作圖
R0 = .TextBox1.Value / 2000 '中心圓半徑
Set swSketchSegment = swSketchMgr.CreateCircle(0, 0, 0#, R0, 0, 0#) '作中心圓
.Label6.Caption = ""
TotalCopyNunber = 0
For i = 1 To CircleNumber
    If .OptionButton1.Value = True Then '遞增
      Dn = 2 * R0 + i * HoleDiameterDiffer '周圈之孔直徑
      Rn = i * (2 * R0 + i * HoleDiameterDiffer / 2 + CircllHoleEdge) 'i 周圈之半徑
    Else
      If .OptionButton2.Value = True Then '遞減
            Dn = 2 * R0 - i * HoleDiameterDiffer '周圈之孔直徑
            Rn = i * (2 * R0 - i * HoleDiameterDiffer / 2 + CircllHoleEdge) 'i 周圈之半徑
      Else
            Dn = 2 * R0'周圈之孔直徑皆等
            Rn = i * (2 * R0 + CircllHoleEdge)'i 周圈之半徑
      End If
    End If
    CopyNunber = Int(2 * Rn * pi / (Dn + CirclInsideHoleEdge) + 0.5) '圓周分布之複製孔數
    TotalCopyNunber = TotalCopyNunber + CopyNunber
    XRn = Rn + Dn / 2
'Debug.Print Dn & "~~~" & Rn & "~~~" & CopyNunber
    Set swSketchSegment = swSketchMgr.CreateCircle(Rn, 0, 0#, XRn, 0, 0#) '分布圓之基圓作圖
    boolstatus = swSketchMgr.CreateCircularSketchStepAndRepeat(Rn, pi, CopyNunber, 2 * pi, True, "", True, True, True) '圓周複製
Next i
.Label6.Caption = TotalCopyNunber + 1
End With
Part.SketchManager.AddToDB False
End Sub









duanyz 发表于 2018-12-19 10:11:17

感谢楼主分享!

伊玛目 发表于 2018-12-19 11:07:06

楼主为什么都是繁体字

远祥 发表于 2018-12-19 21:01:16

这个比较好用了,值得推广。

jiangsuwanhua 发表于 2018-12-20 08:55:44

值得推广




万华金属 303不锈钢制造

前景钱 发表于 2018-12-20 10:17:12

繁体字在台湾用的比较多

qq247529905 发表于 2018-12-20 10:31:56

56145

一休小和尚S 发表于 2018-12-21 08:26:54

代码看不懂,文件有吗?

一休小和尚S 发表于 2018-12-21 14:42:57

一休小和尚S 发表于 2018-12-21 08:26
代码看不懂,文件有吗?

如何使用?

ryouss 发表于 2018-12-21 17:09:38

本帖最后由 ryouss 于 2018-12-21 17:12 编辑

一休小和尚S 发表于 2018-12-21 14:42
如何使用?
詳看 1#


[*]'   1. 在零件選取作孔之平面
[*]'   2. 執行 main宏.
[*]'   3. 在 UserForm 鍵入數據.
[*]'   4. 在 UserForm 按 "執行鍵".
[*]'   5. 中心基孔定義在原點.

页: [1] 2
查看完整版本: 變徑孔圓周複製-宏