SolidWorks專門論壇 SolidWorks forum

 找回密碼
 註冊
查看: 2677|回復: 7

自動建模與裝配程式碼分享(VB.NET)

[複製鏈接]
發表於 2018/5/23 17:32:56 | 顯示全部樓層 |閱讀模式
以機械加工乙級作為主題的自動建模與裝配程式碼分享




  1. Imports SolidWorks.Interop.sldworks
  2. Imports SolidWorks.Interop.swconst

  3. Public Class Form1
  4.     'SolidWorks物件
  5.     Dim SwApp As SldWorks
  6.     '尺寸
  7.     Dim myDimension As Object
  8.     '資料夾名稱
  9.     Dim PartFolder As String = "\18500-1060201"
  10.     '桌面路徑
  11.     Dim DesktopPath As String = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop)
  12.     '警告訊息列舉
  13.     Dim Warnings As Integer
  14.     '零件檔路徑
  15.     Dim PartPath() As String = {DesktopPath & PartFolder & "\支柱.SLDPRT",
  16.     DesktopPath & PartFolder & "\立柱.SLDPRT", DesktopPath & PartFolder & "\底座.SLDPRT",
  17.     DesktopPath & PartFolder & "\搖臂.SLDPRT", DesktopPath & PartFolder & "\偏心轉軸.SLDPRT"}

  18.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  19.         Try
  20.             If System.IO.Directory.Exists(DesktopPath & PartFolder) Then
  21.                 System.IO.Directory.Delete(DesktopPath & PartFolder, True)
  22.             End If
  23.         Catch ex As Exception
  24.             MsgBox("無法建立" & PartFolder & "資料夾")
  25.             Exit Sub
  26.         End Try

  27.         '建立資料夾
  28.         System.IO.Directory.CreateDirectory(DesktopPath & PartFolder)

  29.         SwApp = New SldWorks

  30.         '顯示應用程式
  31.         SwApp.Visible = True

  32.         '抑制尺寸修改對話框
  33.         SwApp.SetUserPreferenceToggle(10, False)

  34.         '建立零件
  35.         CreatePart1()
  36.         CreatePart2()
  37.         CreatePart3()
  38.         CreatePart4()
  39.         CreatePart5()

  40.         '組裝零件
  41.         Assembly()

  42.         '開啟尺寸修改對話框
  43.         SwApp.SetUserPreferenceToggle(10, True)
  44.     End Sub

  45.     Sub CreatePart1()
  46.         Dim Part As ModelDoc2 = SwApp.NewPart
  47.         Part = SwApp.ActiveDoc

  48.         '填料-伸長1
  49.         Part.Extension.SelectByID2("上基準面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
  50.         Part.SketchManager.InsertSketch(True)
  51.         Part.ClearSelection2(True)
  52.         Part.SketchManager.CreateCenterRectangle(0, 0, 0, 0.014, 0.014, 0)
  53.         Part.ClearSelection2(True)
  54.         Part.Extension.SelectByID2("Line3", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  55.         Part.AddDimension2(0, 0, -0.03)
  56.         Part.ClearSelection2(True)
  57.         Part.SketchManager.InsertSketch(True)
  58.         Part.ShowNamedView2("*等角視", 7)
  59.         Part.ClearSelection2(True)
  60.         Part.Extension.SelectByID2("草圖1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  61.         Part.FeatureManager.FeatureExtrusion2(True, False, False, 6, 0, 0.07, 0.01, False,
  62.                                               False, False, False, 0, 0, False, False,
  63.                                               False, False, True, True, True, 0, 0, False)
  64.         Part.ClearSelection2(True)

  65.         'Ø16.0mm定位孔1
  66.         Part.Extension.SelectByID2("", "FACE", 0, 0.015, 0.011, False, 0, Nothing, 0)
  67.         Part.FeatureManager.HoleWizard5(swWzdGeneralHoleTypes_e.swWzdHole, swWzdHoleStandards_e.swStandardISO,
  68.                                        swWzdHoleStandardFastenerTypes_e.swStandardISODowelHole, "Ø16.0",
  69.                                        swEndConditions_e.swEndCondThroughAll, 0.016, 0, 1,
  70.                                        0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, "", False,
  71.                                        True, True, True, True, False)
  72.         Part.Extension.SelectByID2("草圖3", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  73.         Part.EditSketch()
  74.         Part.ClearSelection2(True)
  75.         Part.Extension.SelectByID2("Point1", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
  76.         Part.Extension.SelectByID2("", "EDGE", 0, -0.035, 0.014, True, 0, Nothing, 0)
  77.         Part.AddDimension2(0.03, 0, 0.011)
  78.         Part.ClearSelection2(True)
  79.         myDimension = Part.Parameter("D1@草圖3")
  80.         myDimension.SystemValue = 0.052
  81.         Part.ClearSelection2(True)
  82.         Part.Extension.SelectByID2("Point1", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
  83.         Part.Extension.SelectByID2("Point1@原點", "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
  84.         Part.SketchAddConstraints("sgVERTICALPOINTS2D")
  85.         Part.ClearSelection2(True)
  86.         Part.SketchManager.InsertSketch(True)

  87.         'M6螺紋孔1
  88.         Part.Extension.SelectByID2("", "FACE", 0, -0.025, 0, False, 0, Nothing, 0)
  89.         Part.FeatureManager.HoleWizard5(swWzdGeneralHoleTypes_e.swWzdTap, swWzdHoleStandards_e.swStandardISO,
  90.                                     swWzdHoleStandardFastenerTypes_e.swStandardISOTappedHoleBottoming,
  91.                                     "M6", swEndConditions_e.swEndCondBlind, 0.005, 0.012,
  92.                                         0, 0.01, 0, 0, 0, 0, 118 * Math.PI / 180, 1, 0, 0,
  93.                                         -1, -1, -1, "", False, True, True, True, True, False)
  94.         Part.Extension.SelectByID2("草圖5", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  95.         Part.EditSketch()
  96.         Part.ClearSelection2(True)
  97.         Part.Extension.SelectByID2("Point1", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
  98.         Part.Extension.SelectByID2("Point1@原點", "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
  99.         Part.SketchAddConstraints("sgCOINCIDENT")
  100.         Part.SketchManager.InsertSketch(True)

  101.         'Ø6.0mm定位孔1
  102.         Part.Extension.SelectByID2("", "FACE", -0.006, -0.025, -0.006, False, 0, Nothing, 0)
  103.         Part.FeatureManager.HoleWizard5(swWzdGeneralHoleTypes_e.swWzdHole, swWzdHoleStandards_e.swStandardISO,
  104.                                        swWzdHoleStandardFastenerTypes_e.swStandardISODowelHole, "Ø6.0",
  105.                                        swEndConditions_e.swEndCondBlind, 0.006, 0.012, 0, 0,
  106.                                        118 * Math.PI / 180, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1,
  107.                                        "", False, True, True, True, True, False)
  108.         Part.Extension.SelectByID2("草圖7", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  109.         Part.EditSketch()
  110.         Part.ClearSelection2(True)
  111.         Part.Extension.SelectByID2("Point1", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
  112.         Part.EditDelete()
  113.         Part.SketchManager.CreateCornerRectangle(0.009, -0.009, 0, -0.009, 0.009, 0)
  114.         Part.SketchManager.CreatePoint(0.009, 0.009, 0)
  115.         Part.SketchManager.CreatePoint(-0.009, -0.009, 0)
  116.         Part.ClearSelection2(True)
  117.         Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  118.         Part.SelectMidpoint()
  119.         Part.Extension.SelectByID2("Point1@原點", "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
  120.         Part.SketchAddConstraints("sgVERTICALPOINTS2D")
  121.         Part.ClearSelection2(True)
  122.         Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  123.         Part.SelectMidpoint()
  124.         Part.Extension.SelectByID2("Point1@原點", "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
  125.         Part.SketchAddConstraints("sgHORIZONTALPOINTS2D")
  126.         Part.ClearSelection2(True)
  127.         Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  128.         Part.AddDimension2(0.02, -0.035, 0)
  129.         Part.ClearSelection2(True)
  130.         Part.SketchManager.InsertSketch(True)

  131.         Part.SaveAs3(PartPath(0), 0, 2)
  132.         SwApp.CloseDoc(Part.GetTitle)
  133.         Part = Nothing
  134.     End Sub

  135.     Sub CreatePart2()
  136.         Dim Part As ModelDoc2 = SwApp.NewPart
  137.         Part = SwApp.ActiveDoc

  138.         '填料-伸長1
  139.         Part.Extension.SelectByID2("上基準面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
  140.         Part.SketchManager.InsertSketch(True)
  141.         Part.ClearSelection2(True)
  142.         Part.SketchManager.CreateCenterRectangle(0, 0, 0, 0.014, 0.014, 0)
  143.         Part.ClearSelection2(True)
  144.         Part.Extension.SelectByID2("Line3", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  145.         Part.AddDimension2(0, 0, -0.03)
  146.         Part.ClearSelection2(True)
  147.         Part.SketchManager.InsertSketch(True)
  148.         Part.ShowNamedView2("*等角視", 7)
  149.         Part.ClearSelection2(True)
  150.         Part.Extension.SelectByID2("草圖1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  151.         Part.FeatureManager.FeatureExtrusion2(True, False, False, 6, 0, 0.032, 0.01,
  152.                                               False, False, False, False, 0, 0, False,
  153.                                               False, False, False, True, True, True, 0, 0, False)
  154.         Part.ClearSelection2(True)

  155.         '除料-伸長1
  156.         Part.Extension.SelectByID2("", "FACE", 0.014, 0, 0, False, 0, Nothing, 0)
  157.         Part.SketchManager.InsertSketch(True)
  158.         Part.ClearSelection2(True)
  159.         Part.SketchManager.CreateCornerRectangle(0.007, -0.001, 0, -0.007, 0.016, 0)
  160.         Part.ClearSelection2(True)
  161.         Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  162.         Part.Extension.SelectByID2("", "EDGE", 0.014, 0, 0.014, True, 0, Nothing, 0)
  163.         Part.AddDimension2(0.014, 0.02, 0.01)
  164.         Part.ClearSelection2(True)
  165.         Part.Extension.SelectByID2("Line3", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  166.         Part.AddDimension2(0.014, 0.02, 0)
  167.         Part.ClearSelection2(True)
  168.         Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  169.         Part.Extension.SelectByID2("", "EDGE", 0.014, -0.016, 0, True, 0, Nothing, 0)
  170.         Part.AddDimension2(0.014, -0.008, -0.02)
  171.         Part.ClearSelection2(True)
  172.         myDimension = Part.Parameter("D3@草圖2")
  173.         myDimension.SystemValue = 0.015
  174.         Part.SketchManager.InsertSketch(True)
  175.         Part.Extension.SelectByID2("草圖2", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  176.         Part.FeatureManager.FeatureCut3(True, False, False, swEndConditions_e.swEndCondThroughAll,
  177.                                         swEndConditions_e.swEndCondThroughAll, 0.01, 0.01, False,
  178.                                         False, False, False, 0, 0, False, False, False, False,
  179.                                         False, True, True, True, True, False, 0, 0, False)
  180.         Part.ClearSelection2(True)

  181.         'Ø6.0mm定位孔1
  182.         Part.Extension.SelectByID2("", "FACE", 0, 0.008, 0.016, False, 0, Nothing, 0)
  183.         Part.FeatureManager.HoleWizard5(swWzdGeneralHoleTypes_e.swWzdHole, swWzdHoleStandards_e.swStandardISO,
  184.                                        swWzdHoleStandardFastenerTypes_e.swStandardISODowelHole, "Ø6.0",
  185.                                        swEndConditions_e.swEndCondThroughAll, 0.006, 0, 1, 0,
  186.                                        0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, "", False, True,
  187.                                        True, True, True, False)
  188.         Part.Extension.SelectByID2("草圖4", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  189.         Part.EditSketch()
  190.         Part.ClearSelection2(True)
  191.         Part.Extension.SelectByID2("Point1", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
  192.         Part.EditDelete()
  193.         Part.SketchManager.CreatePoint(0, 0.008, 0)
  194.         Part.ClearSelection2(True)
  195.         Part.Extension.SelectByID2("Point1@原點", "EXTSKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
  196.         Part.Extension.SelectByID2("Point2", "SKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
  197.         Part.SketchAddConstraints("sgVERTICALPOINTS2D")
  198.         Part.ClearSelection2(True)
  199.         Part.Extension.SelectByID2("Point2", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
  200.         Part.Extension.SelectByID2("", "EDGE", 0, -0.016, 0.014, True, 0, Nothing, 0)
  201.         Part.AddDimension2(0.02, -0.004, 0.014)
  202.         Part.ClearSelection2(True)
  203.         Part.SketchManager.InsertSketch(True)

  204.         'M6螺紋孔1
  205.         Part.Extension.SelectByID2("", "FACE", 0, -0.016, 0, False, 0, Nothing, 0)
  206.         Part.FeatureManager.HoleWizard5(swWzdGeneralHoleTypes_e.swWzdTap, swWzdHoleStandards_e.swStandardISO,
  207.                                     swWzdHoleStandardFastenerTypes_e.swStandardISOTappedHoleBottoming,
  208.                                     "M6", swEndConditions_e.swEndCondBlind, 0.005, 0.012,
  209.                                         0, 0.01, 0, 0, 0, 0, 118 * Math.PI / 180, 1, 0, 0, -1,
  210.                                         -1, -1, "", False, True, True, True, True, False)
  211.         Part.Extension.SelectByID2("草圖6", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  212.         Part.EditSketch()
  213.         Part.ClearSelection2(True)
  214.         Part.Extension.SelectByID2("Point1", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
  215.         Part.Extension.SelectByID2("Point1@原點", "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
  216.         Part.SketchAddConstraints("sgCOINCIDENT")
  217.         Part.SketchManager.InsertSketch(True)

  218.         'Ø6.0mm定位孔1
  219.         Part.Extension.SelectByID2("", "FACE", -0.006, -0.016, -0.006, False, 0, Nothing, 0)
  220.         Part.FeatureManager.HoleWizard5(swWzdGeneralHoleTypes_e.swWzdHole, swWzdHoleStandards_e.swStandardISO,
  221.                                        swWzdHoleStandardFastenerTypes_e.swStandardISODowelHole, "Ø6.0",
  222.                                        swEndConditions_e.swEndCondBlind, 0.006, 0.012, 0, 0,
  223.                                        118 * Math.PI / 180, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, "",
  224.                                        False, True, True, True, True, False)
  225.         Part.Extension.SelectByID2("草圖8", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  226.         Part.EditSketch()
  227.         Part.ClearSelection2(True)
  228.         Part.Extension.SelectByID2("Point1", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
  229.         Part.EditDelete()
  230.         Part.SketchManager.CreateCornerRectangle(0.009, -0.009, 0, -0.009, 0.009, 0)
  231.         Part.SketchManager.CreatePoint(0.009, 0.009, 0)
  232.         Part.SketchManager.CreatePoint(-0.009, -0.009, 0)
  233.         Part.ClearSelection2(True)
  234.         Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  235.         Part.SelectMidpoint()
  236.         Part.Extension.SelectByID2("Point1@原點", "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
  237.         Part.SketchAddConstraints("sgVERTICALPOINTS2D")
  238.         Part.ClearSelection2(True)
  239.         Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  240.         Part.SelectMidpoint()
  241.         Part.Extension.SelectByID2("Point1@原點", "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
  242.         Part.SketchAddConstraints("sgHORIZONTALPOINTS2D")
  243.         Part.ClearSelection2(True)
  244.         Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  245.         Part.AddDimension2(0.02, -0.035, 0)
  246.         Part.ClearSelection2(True)
  247.         Part.SketchManager.InsertSketch(True)

  248.         Part.SaveAs3(PartPath(1), 0, 2)
  249.         SwApp.CloseDoc(Part.GetTitle)
  250.         Part = Nothing
  251.     End Sub

  252.     Sub CreatePart3()
  253.         Dim Part As ModelDoc2 = SwApp.NewPart
  254.         Part = SwApp.ActiveDoc

  255.         '填料-伸長1
  256.         Part.Extension.SelectByID2("上基準面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
  257.         Part.SketchManager.InsertSketch(True)
  258.         Part.ClearSelection2(True)
  259.         Part.SketchManager.CreateCenterRectangle(0, 0, 0, 0.036, 0.036, 0)
  260.         Part.ClearSelection2(True)
  261.         Part.Extension.SelectByID2("Line3", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  262.         Part.AddDimension2(0, 0, -0.03)
  263.         Part.ClearSelection2(True)
  264.         Part.SketchManager.InsertSketch(True)
  265.         Part.ShowNamedView2("*等角視", 7)
  266.         Part.ClearSelection2(True)
  267.         Part.Extension.SelectByID2("草圖1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  268.         Part.FeatureManager.FeatureExtrusion2(True, False, False, 6, 0, 0.014, 0.01, False,
  269.                                               False, False, False, 0, 0, False, False, False,
  270.                                               False, True, True, True, 0, 0, False)
  271.         Part.ClearSelection2(True)

  272.         '除料-伸長1
  273.         Part.Extension.SelectByID2("", "FACE", 0, 0, 0.036, False, 0, Nothing, 0)
  274.         Part.SketchManager.InsertSketch(True)
  275.         Part.ClearSelection2(True)
  276.         Part.SketchManager.CreateCornerRectangle(-0.014, -0.007, 0, 0.014, -0.005, 0)
  277.         Part.Extension.SelectByID2("", "EDGE", -0.036, 0, 0.036, False, 0, Nothing, 0)
  278.         Part.Extension.SelectByID2("Line2", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
  279.         Part.AddDimension2(-0.025, -0.012, 0.036)
  280.         Part.ClearSelection2(True)
  281.         Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  282.         Part.AddDimension2(0, -0.012, 0.036)
  283.         Part.ClearSelection2(True)
  284.         Part.Extension.SelectByID2("Line2", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  285.         Part.AddDimension2(-0.04, -0.005, 0.036)
  286.         Part.ClearSelection2(True)
  287.         Part.SketchManager.InsertSketch(True)
  288.         Part.Extension.SelectByID2("草圖2", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  289.         Part.FeatureManager.FeatureCut3(True, False, False, swEndConditions_e.swEndCondThroughAll,
  290.                                         swEndConditions_e.swEndCondThroughAll, 0.01, 0.01, False, False,
  291.                                         False, False, 0, 0, False, False, False, False, False,
  292.                                         True, True, True, True, False, 0, 0, False)
  293.         Part.ClearSelection2(True)

  294.         'M6六角承窩頭蓋螺釘的柱孔1
  295.         Part.Extension.SelectByID2("", "FACE", 0, -0.005, 0, False, 0, Nothing, 0)
  296.         Part.FeatureManager.HoleWizard5(swWzdGeneralHoleTypes_e.swWzdCounterBore, swWzdHoleStandards_e.swStandardISO,
  297.                                   swWzdHoleStandardFastenerTypes_e.swStandardISOSocketHeadCap, "M6",
  298.                                   swEndConditions_e.swEndCondThroughAll, 0.0065, -1, -1, 0.011, 0.0065,
  299.                                   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "", False, False, False, False, False, False)
  300.         Part.Extension.SelectByID2("草圖4", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  301.         Part.EditSketch()
  302.         Part.ClearSelection2(True)
  303.         Part.Extension.SelectByID2("Point1", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
  304.         Part.EditDelete()
  305.         Part.SketchManager.CreatePoint(0, -0.014, 0)
  306.         Part.SketchManager.CreatePoint(0, 0.014, 0)
  307.         Part.Extension.SelectByID2("Point2", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
  308.         Part.Extension.SelectByID2("Point1@原點", "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
  309.         Part.Extension.SelectByID2("Point3", "SKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
  310.         Part.SketchAddConstraints("sgVERTICALPOINTS2D")
  311.         Part.ClearSelection2(True)
  312.         Part.Extension.SelectByID2("", "EDGE", 0, 0.007, 0.036, False, 0, Nothing, 0)
  313.         Part.Extension.SelectByID2("Point2", "SKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
  314.         Part.AddDimension2(0.045, 0.007, 0.025)
  315.         Part.ClearSelection2(True)
  316.         Part.Extension.SelectByID2("Point2", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
  317.         Part.Extension.SelectByID2("Point3", "SKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
  318.         Part.AddDimension2(0.045, 0.007, 0)
  319.         Part.SketchManager.InsertSketch(True)

  320.         'Ø6.0mm定位孔1
  321.         Part.Extension.SelectByID2("", "FACE", 0, 0.007, 0, False, 0, Nothing, 0)
  322.         Part.FeatureManager.HoleWizard5(swWzdGeneralHoleTypes_e.swWzdHole, swWzdHoleStandards_e.swStandardISO,
  323.                                        swWzdHoleStandardFastenerTypes_e.swStandardISODowelHole, "Ø6.0",
  324.                                        swEndConditions_e.swEndCondBlind, 0.006, 0.012, 0, 0,
  325.                                        118 * Math.PI / 180, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1,
  326.                                        "", False, True, True, True, True, False)
  327.         Part.Extension.SelectByID2("草圖6", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  328.         Part.EditSketch()
  329.         Part.ClearSelection2(True)
  330.         Part.Extension.SelectByID2("Point1", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
  331.         Part.EditDelete()
  332.         Part.SketchManager.CreateCornerRectangle(-0.009, -0.023, 0, 0.009, -0.005, 0)
  333.         Part.SketchManager.CreateCornerRectangle(-0.009, 0.005, 0, 0.009, 0.023, 0)
  334.         Part.SketchManager.CreatePoint(-0.009, 0.023, 0)
  335.         Part.SketchManager.CreatePoint(0.009, 0.005, 0)
  336.         Part.SketchManager.CreatePoint(-0.009, -0.005, 0)
  337.         Part.SketchManager.CreatePoint(0.009, -0.023, 0)
  338.         Part.Extension.SelectByID2("Line2", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  339.         Part.Extension.SelectByID2("Line6", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
  340.         Part.SketchAddConstraints("sgCOLINEAR")
  341.         Part.ClearSelection2(True)
  342.         Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  343.         Part.Extension.SelectByID2("Line5", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
  344.         Part.SketchAddConstraints("sgSAMELENGTH")
  345.         Part.ClearSelection2(True)
  346.         Part.Extension.SelectByID2("", "EDGE", 0, 0.007, 0.036, False, 0, Nothing, 0)
  347.         Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
  348.         Part.AddDimension2(-0.045, 0.007, 0.03)
  349.         Part.ClearSelection2(True)
  350.         Part.Extension.SelectByID2("", "EDGE", 0, 0.007, 0.036, False, 0, Nothing, 0)
  351.         Part.Extension.SelectByID2("Line5", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
  352.         Part.AddDimension2(-0.05, 0.007, 0.015)
  353.         Part.ClearSelection2(True)
  354.         Part.Extension.SelectByID2("", "EDGE", -0.036, 0.007, 0, False, 0, Nothing, 0)
  355.         Part.Extension.SelectByID2("Line2", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
  356.         Part.AddDimension2(-0.022, 0.007, 0.05)
  357.         Part.ClearSelection2(True)
  358.         Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  359.         Part.AddDimension2(0, 0.007, 0.05)
  360.         Part.ClearSelection2(True)
  361.         Part.SketchManager.InsertSketch(True)

  362.         '導角1
  363.         Part.Extension.SelectByID2("", "EDGE", -0.036, 0.007, 0, False, 0, Nothing, 0)
  364.         Part.Extension.SelectByID2("", "EDGE", 0.036, 0.007, 0, True, 0, Nothing, 0)
  365.         Part.FeatureManager.InsertFeatureChamfer(4, 1, 0.002, 45 * Math.PI / 180, 0, 0, 0, 0)
  366.         Part.ClearSelection2(True)

  367.         Part.SaveAs3(PartPath(2), 0, 2)
  368.         SwApp.CloseDoc(Part.GetTitle)
  369.         Part = Nothing
  370.     End Sub

  371.     Sub CreatePart4()
  372.         Dim Part As ModelDoc2 = SwApp.NewPart
  373.         Part = SwApp.ActiveDoc

  374.         '填料-伸長1
  375.         Part.Extension.SelectByID2("前基準面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
  376.         Part.SketchManager.InsertSketch(True)
  377.         Part.ClearSelection2(True)

  378.         Part.SketchManager.CreateSketchSlot(swSketchSlotCreationType_e.swSketchSlotCreationType_center_line,
  379.                                             swSketchSlotLengthType_e.swSketchSlotLengthType_CenterCenter,
  380.                                             0.016, 0, 0, 0, 0.028, 0, 0, 0, 0, 0, 1, False)
  381.         Part.SketchManager.CreateSketchSlot(swSketchSlotCreationType_e.swSketchSlotCreationType_center_line,
  382.                                             swSketchSlotLengthType_e.swSketchSlotLengthType_CenterCenter,
  383.                                             0.01, 0, 0, 0, 0.005, 0, 0, 0, 0, 0, 1, False)
  384.         Part.SketchManager.CreateCircle(-0.028, 0, 0, -0.028, 0.003, 0)
  385.         Part.SketchManager.CreateCircle(0.028, 0, 0, 0.028, 0.003, 0)
  386.         Part.Extension.SelectByID2("Arc3", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  387.         Part.Extension.SelectByID2("Arc4", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
  388.         Part.AddDimension2(0, -0.02, 0)
  389.         Part.ClearSelection2(True)
  390.         Part.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  391.         Part.Extension.SelectByID2("Arc2", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
  392.         Part.AddDimension2(0, -0.025, 0)
  393.         Part.ClearSelection2(True)
  394.         Part.Extension.SelectByID2("Line5", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  395.         Part.Extension.SelectByID2("Line6", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
  396.         Part.AddDimension2(0.02, 0.015, 0)
  397.         Part.ClearSelection2(True)
  398.         Part.Extension.SelectByID2("Line3", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  399.         Part.Extension.SelectByID2("Line2", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
  400.         Part.AddDimension2(0.045, 0, 0)
  401.         Part.ClearSelection2(True)
  402.         Part.Extension.SelectByID2("Arc5", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  403.         Part.AddDimension2(-0.048, 0, 0)
  404.         Part.ClearSelection2(True)
  405.         Part.Extension.SelectByID2("Arc5", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  406.         Part.Extension.SelectByID2("Arc6", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
  407.         Part.SketchAddConstraints("sgSAMELENGTH")
  408.         Part.SketchManager.InsertSketch(True)
  409.         Part.ShowNamedView2("*等角視", 7)
  410.         Part.ClearSelection2(True)
  411.         Part.Extension.SelectByID2("草圖1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  412.         Part.FeatureManager.FeatureExtrusion2(True, False, False, 6, 0, 0.014, 0.01, False,
  413.                                               False, False, False, 0, 0, False, False, False,
  414.                                               False, True, True, True, 0, 0, False)
  415.         Part.ClearSelection2(True)

  416.         Part.SaveAs3(PartPath(3), 0, 2)
  417.         SwApp.CloseDoc(Part.GetTitle)
  418.         Part = Nothing
  419.     End Sub

  420.     Sub CreatePart5()
  421.         Dim Part As ModelDoc2 = SwApp.NewPart
  422.         Part = SwApp.ActiveDoc

  423.         '旋轉1
  424.         Part.Extension.SelectByID2("前基準面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
  425.         Part.SketchManager.InsertSketch(True)
  426.         Part.ClearSelection2(True)
  427.         Part.SketchManager.CreateLine(0, 0, 0, 0, 0.018, 0)
  428.         Part.SketchManager.CreateLine(0, 0.018, 0, 0.015, 0.018, 0)
  429.         Part.SketchManager.CreateLine(0.015, 0.018, 0, 0.015, 0.014, 0)
  430.         Part.SketchManager.CreateLine(0.015, 0.014, 0, 0.027, 0.014, 0)
  431.         Part.SketchManager.CreateLine(0.027, 0.014, 0, 0.027, 0.008, 0)
  432.         Part.SketchManager.CreateLine(0.027, 0.008, 0, 0.061, 0.008, 0)
  433.         Part.SketchManager.CreateLine(0.061, 0.008, 0, 0.061, 0, 0)
  434.         Part.SketchManager.CreateLine(0.061, 0, 0, 0, 0, 0)
  435.         Part.SketchManager.CreateCenterLine(0, 0, 0, 0.1, 0, 0)
  436.         Part.Extension.SelectByID2("Line6", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  437.         Part.AddDimension2(0.045, -0.01, 0)
  438.         Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  439.         Part.AddDimension2(0.02, -0.01, 0)
  440.         Part.Extension.SelectByID2("Line2", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  441.         Part.AddDimension2(0.007, -0.01, 0)
  442.         Part.Extension.SelectByID2("Line6", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  443.         Part.Extension.SelectByID2("Line9", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
  444.         Part.AddDimension2(0.11, 0, 0)
  445.         Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  446.         Part.Extension.SelectByID2("Line9", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
  447.         Part.AddDimension2(0.12, 0, 0)
  448.         Part.Extension.SelectByID2("Line2", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  449.         Part.Extension.SelectByID2("Line9", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
  450.         Part.AddDimension2(0.13, 0, 0)
  451.         Part.SketchManager.InsertSketch(True)
  452.         Part.ShowNamedView2("*等角視", 7)
  453.         Part.Extension.SelectByID2("草圖1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  454.         Part.Extension.SelectByID2("Line9@草圖1", "EXTSKETCHSEGMENT", 0, 0, 0, True, 16, Nothing, 0)
  455.         Part.FeatureManager.FeatureRevolve2(True, True, False, False, False, False, 0, 0, 2 * Math.PI, 0, False, False, 0.01, 0.01, 0, 0, 0, True, True, True)
  456.         Part.ClearSelection2(True)

  457.         '旋轉2
  458.         Part.Extension.SelectByID2("前基準面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
  459.         Part.SketchManager.InsertSketch(True)
  460.         Part.ClearSelection2(True)
  461.         Part.SketchManager.CreateCornerRectangle(0.061, 0.008, 0, 0.076, 0.003, 0)
  462.         Part.ClearSelection2(True)
  463.         Part.SketchManager.CreateCenterLine(0.061, 0.003, 0, 0.081, 0.003, 0)
  464.         Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  465.         Part.AddDimension2(0.68, 0.15, 0)
  466.         Part.ClearSelection2(True)
  467.         Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
  468.         Part.Extension.SelectByID2("Line5", "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
  469.         Part.AddDimension2(0.85, 0.003, 0)
  470.         Part.SketchManager.InsertSketch(True)
  471.         Part.Extension.SelectByID2("草圖2", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
  472.         Part.Extension.SelectByID2("Line5@草圖2", "EXTSKETCHSEGMENT", 0, 0, 0, True, 16, Nothing, 0)
  473.         Part.FeatureManager.FeatureRevolve2(True, True, False, False, False, False, 0, 0, 2 * Math.PI, 0, False, False, 0.01, 0.01, 0, 0, 0, True, True, True)
  474.         Part.ViewZoomtofit2()

  475.         '倒角1
  476.         Part.Extension.SelectByID2("", "EDGE", 0.076, 0.008, 0, False, 0, Nothing, 0)
  477.         Part.Extension.SelectByID2("", "EDGE", 0.015, 0.018, 0, True, 0, Nothing, 0)
  478.         Part.Extension.SelectByID2("", "EDGE", 0, 0.018, 0, True, 0, Nothing, 0)
  479.         Part.FeatureManager.InsertFeatureChamfer(4, 1, 0.001, 45 * Math.PI / 180, 0, 0, 0, 0)

  480.         Part.SaveAs3(PartPath(4), 0, 2)
  481.         SwApp.CloseDoc(Part.GetTitle)
  482.         Part = Nothing
  483.     End Sub

  484.     Sub Assembly()
  485.         '建立組合件環境(文檔屬性)
  486.         Dim swModel As ModelDoc2 = SwApp.NewAssembly()
  487.         '建立組合件環境
  488.         Dim SwAssy As AssemblyDoc = swModel

  489.         swModel.ShowNamedView2("*等角視", 7)
  490.         'swModel.ViewZoomtofit2()

  491.         '取得文件焦點
  492.         swModel = SwApp.ActiveDoc

  493.         '取得組件檔Title
  494.         Dim AssemblyName As String = swModel.GetTitle
  495.         Dim TitleString() As String = Split(AssemblyName, ".")
  496.         Dim AssemblyTitle = TitleString(0)

  497.         '加入零件
  498.         For Each Index As String In PartPath
  499.             Dim Part As ModelDoc2 = SwApp.OpenDoc6(Index, swDocumentTypes_e.swDocPART, 0, "", 0, Warnings)
  500.             Dim GetPartTitle As String = Part.GetTitle
  501.             Dim GetTitleString = Split(GetPartTitle, ".")
  502.             Dim PartTitle As String = GetTitleString(0)

  503.             '將焦點放置於組合件環境
  504.             swModel = SwApp.ActivateDoc2(AssemblyTitle, False, 0)
  505.             swModel.ClearSelection2(True)

  506.             '將零件插入至組合件
  507.             SwAssy.AddComponent4(Index, "", 0, 0, 0)

  508.             '焦點放至於被插入的零組件
  509.             Part = SwApp.ActivateDoc2(Index, False, 0)
  510.             '釋放零件參考
  511.             Part = Nothing
  512.             '關閉零件
  513.             SwApp.CloseDoc(PartTitle)
  514.         Next

  515.         '遍歷零件名稱
  516.         Dim SwConf As Configuration = swModel.GetActiveConfiguration
  517.         Dim SwRootComp As Component2 = SwConf.GetRootComponent
  518.         Dim SwComp As Component2 = SwRootComp
  519.         Dim vChlidComp = SwComp.GetChildren
  520.         Dim SwChildComp As Component2
  521.         Dim SwCompConfig As Configuration = SwConf
  522.         Dim ComponentNaem(UBound(vChlidComp)) As String
  523.         'Dim Crefer  As string(零組件模型組態)
  524.         For i = 0 To UBound(vChlidComp)
  525.             SwChildComp = vChlidComp(i)
  526.             ComponentNaem(i) = SwChildComp.Name2
  527.             'Crefer = SwChildComp.ReferencedConfiguration
  528.         Next

  529.         '移動零件位置
  530.         For Each Index As String In ComponentNaem
  531.             Select Case Index
  532.                 Case "支柱-1"
  533.                     '零件浮動
  534.                     swModel.Extension.SelectByID2(Index & "@" & AssemblyTitle, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
  535.                     SwAssy.UnfixComponent()
  536.                     '移動零件位置
  537.                     DragDropComponent(swModel, Index & "@" & AssemblyTitle, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}, 0, 0.1, 0)
  538.                 Case "立柱-1"
  539.                     '移動零件位置
  540.                     DragDropComponent(swModel, Index & "@" & AssemblyTitle, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}, 0, 0.2, 0)
  541.                 Case "底座-1"
  542.                     '移動零件位置
  543.                     DragDropComponent(swModel, Index & "@" & AssemblyTitle, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}, 0, 0, 0)

  544.                     '零件固定
  545.                     swModel.Extension.SelectByID2(Index & "@" & AssemblyTitle, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
  546.                     SwAssy.FixComponent()
  547.                 Case "搖臂-1"
  548.                     '移動零件位置
  549.                     DragDropComponent(swModel, Index & "@" & AssemblyTitle, {0, -1, 0}, {1, 0, 0}, {0, 0, 1}, 0, 0.3, 0)
  550.                 Case "偏心轉軸-1"
  551.                     '移動零件位置
  552.                     DragDropComponent(swModel, Index & "@" & AssemblyTitle, {0, 0, 1}, {0, 1, 0}, {-1, 0, 0}, 0, 0.4, 0)
  553.             End Select
  554.         Next

  555.         '調整可視範圍
  556.         swModel.ViewZoomtofit2()

  557.         '定義結合條件
  558.         Dim longstatus As Integer

  559.         '_______________________________________支柱__________________________________________
  560.         '同心
  561.         swModel.Extension.SelectByID2("", "FACE", -0.009, 0, -0.0217, False, 0, Nothing, 0)
  562.         swModel.Extension.SelectByID2("", "FACE", -0.009, 0.07, -0.006, True, 0, Nothing, 0)
  563.         SwAssy.AddMate4(swMateType_e.swMateCONCENTRIC, swMateAlign_e.swAlignSAME,
  564.                                     False, 0, 0, 0, 0, 0, 0, 0,
  565.                                     0, False, False, longstatus)
  566.         '同心
  567.         swModel.Extension.SelectByID2("", "FACE", 0, 0.002, -0.01075, False, 0, Nothing, 0)
  568.         swModel.Extension.SelectByID2("", "FACE", 0, 0.07, -0.01175, True, 0, Nothing, 0)
  569.         SwAssy.AddMate4(swMateType_e.swMateCONCENTRIC, swMateAlign_e.swMateAlignALIGNED,
  570.                                     False, 0, 0, 0, 0, 0, 0, 0,
  571.                                     0, False, False, longstatus)
  572.         '重合
  573.         swModel.Extension.SelectByID2("", "FACE", 0.01, 0.065, -0.01, False, 0, Nothing, 0)
  574.         swModel.Extension.SelectByID2("", "FACE", 0, 0.007, 0, True, 0, Nothing, 0)
  575.         SwAssy.AddMate4(swMateType_e.swMateCOINCIDENT, swMateAlign_e.swAlignSAME,
  576.                                     False, 0, 0, 0, 0, 0, 0, 0,
  577.                                     0, False, False, longstatus)
  578.         '___________________________________  偏心轉軸________________________________________
  579.         '重合
  580.         swModel.Extension.SelectByID2("", "FACE", 0, 0.042, -0.028, False, 0, Nothing, 0)
  581.         swModel.Extension.SelectByID2("", "FACE", 0, 0.39, 0.027, True, 0, Nothing, 0)
  582.         SwAssy.AddMate4(swMateType_e.swMateCOINCIDENT, swMateAlign_e.swAlignSAME,
  583.                                    False, 0, 0, 0, 0, 0, 0, 0,
  584.                                    0, False, False, longstatus)
  585.         '同心
  586.         swModel.Extension.SelectByID2("", "FACE", 0, 0.051, -0.014, False, 0, Nothing, 0)
  587.         swModel.Extension.SelectByID2("", "FACE", 0, 0.4, -0.014, True, 0, Nothing, 0)
  588.         SwAssy.AddMate4(swMateType_e.swMateCONCENTRIC, swMateAlign_e.swAlignSAME,
  589.                                    False, 0, 0, 0, 0, 0, 0, 0,
  590.                                    0, False, False, longstatus)
  591.         '_______________________________________立柱__________________________________________
  592.         '同心
  593.         swModel.Extension.SelectByID2("", "FACE", 0, 0, 0.01075, False, 0, Nothing, 0)
  594.         swModel.Extension.SelectByID2("", "FACE", 0, 0.185, 0.0025, True, 0, Nothing, 0)
  595.         SwAssy.AddMate4(swMateType_e.swMateCONCENTRIC, swMateAlign_e.swMateAlignALIGNED,
  596.                                    False, 0, 0, 0, 0, 0, 0, 0,
  597.                                    0, False, False, longstatus)
  598.         '同心
  599.         swModel.Extension.SelectByID2("", "FACE", -0.009, 0, 0.002, False, 0, Nothing, 0)
  600.         swModel.Extension.SelectByID2("", "FACE", -0.009, 0.185, 0.002, True, 0, Nothing, 0)
  601.         SwAssy.AddMate4(swMateType_e.swMateCONCENTRIC, swMateAlign_e.swMateAlignANTI_ALIGNED,
  602.                                     False, 0, 0, 0, 0, 0, 0, 0,
  603.                                     0, False, False, longstatus)
  604.         '重合
  605.         swModel.Extension.SelectByID2("", "FACE", 0, 0.184, 0.002, False, 0, Nothing, 0)
  606.         swModel.Extension.SelectByID2("", "FACE", 0, 0.007, 0.002, True, 0, Nothing, 0)
  607.         SwAssy.AddMate4(swMateType_e.swMateCOINCIDENT, swMateAlign_e.swAlignSAME,
  608.                                     False, 0, 0, 0, 0, 0, 0, 0,
  609.                                     0, False, False, longstatus)
  610.         '_______________________________________搖臂__________________________________________
  611.         '同心
  612.         swModel.Extension.SelectByID2("", "FACE", 0, 0.272, 0, False, 0, Nothing, 0)
  613.         swModel.Extension.SelectByID2("", "FACE", 0, 0.028, 0.025, True, 0, Nothing, 0)
  614.         SwAssy.AddMate4(swMateType_e.swMateCONCENTRIC, swMateAlign_e.swMateAlignANTI_ALIGNED,
  615.                                     False, 0, 0, 0, 0, 0, 0, 0,
  616.                                     0, False, False, longstatus)

  617.         '重合
  618.         swModel.Extension.SelectByID2("", "FACE", 0, 0.045, 0.007, False, 0, Nothing, 0)
  619.         swModel.Extension.SelectByID2("", "FACE", 0, 0.025, 0.021, True, 0, Nothing, 0)
  620.         SwAssy.AddMate4(swMateType_e.swMateCOINCIDENT, swMateAlign_e.swAlignSAME,
  621.                                     False, 0, 0, 0, 0, 0, 0, 0,
  622.                                     0, False, False, longstatus)
  623.         SwAssy.AddMate4(swMateType_e.swMateCOINCIDENT, swMateAlign_e.swAlignSAME,
  624.                                     False, 0, 0, 0, 0, 0, 0, 0,
  625.                                     0, False, False, longstatus)
  626.         '相切
  627.         swModel.Extension.SelectByID2("", "FACE", 0, 0.057, 0.01, False, 0, Nothing, 0)
  628.         swModel.Extension.SelectByID2("", "FACE", 0.005, 0.057, 0.01, True, 0, Nothing, 0)
  629.         SwAssy.AddMate4(swMateType_e.swMateTANGENT, swMateAlign_e.swAlignSAME,
  630.                                     False, 0, 0, 0, 0, 0, 0, 0,
  631.                                     0, False, False, longstatus)

  632.         '重新計算
  633.         swModel.EditRebuild3()

  634.         '零件浮動
  635.         swModel.Extension.SelectByID2("底座-1" & "@" & AssemblyTitle, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
  636.         SwAssy.UnfixComponent()

  637.         '移動零件位置
  638.         DragDropComponent(swModel, "底座-1" & "@" & AssemblyTitle, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}, 0, 0, 0)

  639.         '零件固定
  640.         swModel.Extension.SelectByID2("底座-1" & "@" & AssemblyTitle, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
  641.         SwAssy.FixComponent()

  642.         '取消選取
  643.         swModel.ClearSelection2(True)

  644.         '調整可視範圍
  645.         swModel.ViewZoomtofit2()

  646.         '存檔
  647.         swModel.SaveAs3(DesktopPath & PartFolder & "\18500-106201.SLDASM", 0, 2)

  648.     End Sub

  649.     Sub DragDropComponent(ByVal Model As ModelDoc2, ByVal DragDropPart As String,
  650.                           ByVal i_Vector() As Double, ByVal j_Vector() As Double, ByVal k_Vector() As Double,
  651.                           ByVal X_Move As Double, ByVal Y_Move As Double, ByVal Z_Move As Double)
  652.         Dim swModel As ModelDoc2 = Model
  653.         Dim swAssy As AssemblyDoc = swModel
  654.         Dim swDragOp As DragOperator = swAssy.GetDragOperator            '定義托放操作物件
  655.         Dim swSelMgr As SelectionMgr = swModel.SelectionManager          '定義選取操作物件
  656.         Dim swMathUtil As MathUtility = SwApp.GetMathUtility             '獲取座標轉換相關數學務件

  657.         '定義拖曳點位置參數
  658.         Dim swXform As MathTransform = swMathUtil.CreateTransform({i_Vector(0), i_Vector(1), i_Vector(2),
  659.                                                                       j_Vector(0), j_Vector(1), j_Vector(2),
  660.                                                                      k_Vector(0), k_Vector(1), k_Vector(2),
  661.                                                                      X_Move, Y_Move, Z_Move,
  662.                                                                      1, 0, 0, 0})
  663.         '選取要移動的零件
  664.         swModel.Extension.SelectByID2(DragDropPart, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)

  665.         '獲取選定對象的數量
  666.         Dim swComp As Component2 = swSelMgr.GetSelectedObjectsComponent2(1)
  667.         'AtIndex
  668.         '-1 = All selections regardless of marks                              所有選擇,無論標記
  669.         ' 0 = only the selections without marks                               只有沒有標記的選擇
  670.         'Any other value = Value that was used to mark And select an object   用於標記和選擇對象的值

  671.         '將組件添加到要拖動的組件列表中(拖曳組件清單,是否連續選取)
  672.         swDragOp.AddComponent(swComp, False)

  673.         '獲取或設置碰撞檢測設置
  674.         swDragOp.CollisionDetectionEnabled = False

  675.         '獲取或設置動態清除設置
  676.         swDragOp.DynamicClearanceEnabled = False

  677.         '獲取或設置轉換的類型
  678.         swDragOp.TransformType = 1
  679.         'Translation     0        Transform Is translation only
  680.         'Axial Rotation         1        Transform Is rotation only
  681.         'General         2        Transform can be translation Or rotation Or both

  682.         '獲取或設置此拖動操作的拖動模式
  683.         swDragOp.DragMode = 2
  684.         '0 = Maximum move (move geometries rigidly, if possible)
  685.         '1 = Minimum move (move the smallest number of geometries)
  686.         '2 = Relaxation (solve geometries using relaxation)
  687.         '3 = No propagation (move geometries with minimal transform propagation)

  688.         '啟動拖動操作
  689.         swDragOp.BeginDrag()

  690.         '拖曳至指定位置
  691.         swComp.Transform2 = swXform

  692.         '重新計算
  693.         swModel.EditRebuild3()

  694.         '終止拖動操作
  695.         swDragOp.EndDrag()
  696.     End Sub

  697. End Class
複製代碼





本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號?註冊

x
發表於 2018/5/23 18:16:59 | 顯示全部樓層
真神人,我光搞個圖層開關及列印,就研究好幾天了!這得下多少苦功!

點評

你說圖層問題是工程圖環境嗎? 我打算開始研究工程圖,或許可以一起研究一下  詳情 回復 發表於 2018/5/23 18:59
 樓主| 發表於 2018/5/23 18:59:36 | 顯示全部樓層
rock6098 發表於 2018/5/23 18:16
真神人,我光搞個圖層開關及列印,就研究好幾天了!這得下多少苦功!

你說圖層問題是工程圖環境嗎?

我打算開始研究工程圖,或許可以一起研究一下

點評

是啊,畢竟畫圖會運用到巨集的地方並不多,但工程圖就很需要了,因為工作常常一個月出個上百張,電子檔要用電子章,還要印無電子章的紙本給主管用印,所以很多的東西都會用圖層管理,但每次進圖層視窗開關,然後再叫  詳情 回復 發表於 2018/5/23 23:45
發表於 2018/5/23 23:45:47 | 顯示全部樓層
jbkndron 發表於 2018/5/23 18:59
你說圖層問題是工程圖環境嗎?

我打算開始研究工程圖,或許可以一起研究一下 ...

是啊,畢竟畫圖會運用到巨集的地方並不多,但工程圖就很需要了,因為工作常常一個月出個上百張,電子檔要用電子章,還要印無電子章的紙本給主管用印,所以很多的東西都會用圖層管理,但每次進圖層視窗開關,然後再叫出列印視窗,還有像是將BOM輸出成EXCEL表等,雖然不是什麼複雜的動作,但是重複的工作,為何不讓電腦自動完成呢?還好論壇裡有很多先進願意分享經驗,再加上進API HELP慢慢的找答案,一點一滴慢慢累積,一開始完全不懂語法的我,也慢慢有點概念了,製作了一些巨集也能幫助到同事,讓工作更有效率!只是自己做的東西拿不上枱面,但如果真有人遇到我能解決的,我也會非常樂意分享的!

點評

我目前學API只是單純覺得好玩,還沒遇到什麼需要用程式解決的問題 你遇到的都是些什麼問題啊?方便說明一下嗎? 或許我可以朝這方面來學息 不然我這樣走馬看花好像也沒什麼意義...  詳情 回復 發表於 2018/5/24 08:55
我是打算把有弄出結果的程式碼全部放上來 這樣以後有人要找東西就可以剪剪貼貼了 不然全部從零開始真是有夠累的....  詳情 回復 發表於 2018/5/24 08:20
 樓主| 發表於 2018/5/24 08:20:46 | 顯示全部樓層
rock6098 發表於 2018/5/23 23:45
是啊,畢竟畫圖會運用到巨集的地方並不多,但工程圖就很需要了,因為工作常常一個月出個上百張,電子檔要 ...

我是打算把有弄出結果的程式碼全部放上來
這樣以後有人要找東西就可以剪剪貼貼了
不然全部從零開始真是有夠累的....
 樓主| 發表於 2018/5/24 08:55:10 | 顯示全部樓層
rock6098 發表於 2018/5/23 23:45
是啊,畢竟畫圖會運用到巨集的地方並不多,但工程圖就很需要了,因為工作常常一個月出個上百張,電子檔要 ...

我目前學API只是單純覺得好玩,還沒遇到什麼需要用程式解決的問題

你遇到的都是些什麼問題啊?方便說明一下嗎?
或許我可以朝這方面來學息

不然我這樣走馬看花好像也沒什麼意義...

點評

其實就API部份來說,因為每個人的作業環境不同,所以自然寫法就不盡相同,我在學習過程中,遇到最大的困難是,很多用法都看不太懂,例如在用application.filedialog時,當跳出對話框,選取完不管是資料夾、檔案,或  詳情 回復 發表於 2018/5/24 23:20
發表於 2018/5/24 23:20:52 | 顯示全部樓層
jbkndron 發表於 2018/5/24 08:55
我目前學API只是單純覺得好玩,還沒遇到什麼需要用程式解決的問題

你遇到的都是些什麼問題啊?方便說明 ...

其實就API部份來說,因為每個人的作業環境不同,所以自然寫法就不盡相同,我在學習過程中,遇到最大的困難是,很多用法都看不太懂,例如在用application.filedialog時,當跳出對話框,選取完不管是資料夾、檔案,或自己輸入的檔名,接下來不知該如何用,因為物件的用法很多,很多時候網路上只有簡單的說明,並沒有範例可參考,或是範例和自己遇的情況並不相符,所以常常一個個慢慢試,又像opendoc0、opendoc1、opendoc2、.......opendoc6,各代表什麼意思,諸如此類,不過這個都可以找得到答案,只是要花不少時間,但我覺得這樣學習的,反而會加深自己印象,用過的語法,就自然會了,時間久了,所累積的也愈來愈多!

點評

真的是一個問題卡越久,過關後印象越深刻,但是這樣真的是很花時間 玩API真的很像從一堆拼圖碎片中湊出自己想要的圖 一開始每片都沒摸過,要卡很久才能湊出一個像樣的東西 但熟了之後就知道要撿什麼東西來拼,快很多  詳情 回復 發表於 2018/5/25 20:27
 樓主| 發表於 2018/5/25 20:27:19 | 顯示全部樓層
rock6098 發表於 2018/5/24 23:20
其實就API部份來說,因為每個人的作業環境不同,所以自然寫法就不盡相同,我在學習過程中,遇到最大的困 ...

真的是一個問題卡越久,過關後印象越深刻,但是這樣真的是很花時間
玩API真的很像從一堆拼圖碎片中湊出自己想要的圖
一開始每片都沒摸過,要卡很久才能湊出一個像樣的東西
但熟了之後就知道要撿什麼東西來拼,快很多
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

論壇統計|手機版上論壇|論壇來自幾何科技 論壇架構版次 20240312

GMT+8, 2024/4/19 08:12 , Processed in 1.193114 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回復 返回頂部 返回列表