SolidWorks專門論壇 SolidWorks forum

 找回密碼
 註冊
查看: 1154|回復: 5

IAssembly.EditMate4() 執行沒有成功

[複製鏈接]
發表於 2021/3/25 10:32:29 | 顯示全部樓層 |閱讀模式
請教各位先進:
小弟錄製一個巨集,修改一個平行相距結合之距離值90mm(原為40mm)。之後手動將該結合距離改回40mm,然後逐行執行這個巨集。結果SelectByID2有選到該結合的二個面,但 EditMate4() 這行執行後沒有變化,距離沒有被改成90mm。EditMate4 執行狀態值lognstatus為0,表示這函式有執行成功。但不知問題出在哪裡,為何距離值沒有改變?


  1. Dim swApp As Object

  2. Dim Part As Object
  3. Dim boolstatus As Boolean
  4. Dim longstatus As Long, longwarnings As Long

  5. Sub main()

  6. Set swApp = Application.SldWorks

  7. Set Part = swApp.ActiveDoc

  8. ' Edit Mate
  9. Part.ClearSelection2 True
  10. boolstatus = Part.Extension.SelectByID2("Distance1", "MATE", 0, 0, 0, True, 0, Nothing, 0)
  11. Part.EditMate4 5, 0, True, 0.09, 0.09, 0.09, 0.001, 0.001, 0, 0.5235987755983, 0.5235987755983, False, False, 0, False, longstatus
  12. MsgBox ("longstatus=" + CStr(longstatus))

  13. End Sub
複製代碼


本帖子中包含更多資源

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

x
 樓主| 發表於 2021/3/25 10:53:02 | 顯示全部樓層
試過另一個函式,也是函式有執行成功,但何距離值沒有改變

  1. Part.EditDistanceMate 0, False, 0.09, 0.09, 0.09, 0, 0, longstatus
複製代碼
發表於 2021/3/25 13:03:07 | 顯示全部樓層
选中配合后,取得Feature,取得Mate,再取得DisplayDimension,再取得Dimension。
之后,获取数值用:GetSystemValue。修改数值用:SetSystemValue。
修改数值后用EditRebuild3更新模型。
详细代码请参阅SolidWorks的Api help文件。

點評

感謝這位先進解惑!確實,我後來也是用這招(如下程式碼)可達到目的。但是這招麻煩到爆,只不過要改個結合距離,動用到5種物件轉來轉去。 我仍是疑惑為何 EditMate4 及 EditDistanceMate 這二方法為何不作?  詳情 回復 發表於 2021/3/25 13:41
 樓主| 發表於 2021/3/25 13:41:20 | 顯示全部樓層
xiaocake 發表於 2021/3/25 13:03
选中配合后,取得Feature,取得Mate,再取得DisplayDimension,再取得Dimension。
之后,获取数值用:GetSy ...

感謝這位先進解惑!確實,我後來也是用這招(如下程式碼)可達到目的。但是這招麻煩到爆,只不過要改個結合距離,動用到5種物件轉來轉去。
我仍是疑惑為何 EditMate4 及 EditDistanceMate 這二方法為何不作?
  1. Dim swApp As Object

  2. Dim Part As IAssemblyDoc
  3. Dim Feat As IFeature
  4. Dim DistMate As IMate2
  5. Dim DispDimension As DisplayDimension
  6. Dim D1 As Dimension
  7. Dim boolstatus As Boolean
  8. Dim longstatus As Long, longwarnings As Long

  9. Sub main()

  10. Set swApp = Application.SldWorks

  11. Set Part = swApp.ActiveDoc
  12. ' Edit Mate
  13. Set Feat = Part.FeatureByName("Distance1")
  14. Set DistMate = Feat.GetSpecificFeature2()
  15. Set DispDimension = DistMate.DisplayDimension2(0)
  16. Set D1 = DispDimension.GetDimension2(0)
  17. D1.SystemValue = 0.09
  18. Part.EditRebuild

  19. End Sub
複製代碼


點評

你应该没有仔细看Solidworks的Api Help里面的相关解释,Api Help中也有提供相关的样例代码。如果要进行EditMate或类似的EditDistanceMate等操作,需要事先按顺序选中用于配合的两个对象和这个配合特征(至少得选3个对  詳情 回復 發表於 2021/3/25 20:33
發表於 2021/3/25 20:33:24 | 顯示全部樓層
kuoym 發表於 2021/3/25 13:41
感謝這位先進解惑!確實,我後來也是用這招(如下程式碼)可達到目的。但是這招麻煩到爆,只不過要改個結合 ...

你应该没有仔细看Solidworks的Api Help里面的相关解释,Api Help中也有提供相关的样例代码。如果要进行EditMate或类似的EditDistanceMate等操作,需要事先按顺序选中用于配合的两个对象和这个配合特征(至少得选3个对象)。下图是Api Help中关于EditDistanceMate的说明:(其余的比如EditMate*,EditConcentricMate等应该有一样的要求,具体请自行在Api Help中查询)


如果要事先选中这些对象,你需要写的代码可不少,比获取Dimension修改数值的方法要麻烦多了。


本帖子中包含更多資源

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

x

點評

原始錄製的巨集如下,有選二個面及結合特徵,但執行起來仍是沒有改變距離值  詳情 回復 發表於 2021/3/26 09:29
 樓主| 發表於 2021/3/26 09:29:33 | 顯示全部樓層
xiaocake 發表於 2021/3/25 20:33
你应该没有仔细看Solidworks的Api Help里面的相关解释,Api Help中也有提供相关的样例代码。如果要进行Ed ...

原始錄製的巨集如下,有選二個面及結合特徵,但執行起來仍是沒有改變距離值
  1. Dim swApp As Object

  2. Dim Part As Object
  3. Dim boolstatus As Boolean
  4. Dim longstatus As Long, longwarnings As Long

  5. Sub main()

  6. Set swApp = Application.SldWorks

  7. Set Part = swApp.ActiveDoc
  8. boolstatus = Part.Extension.SelectByID2("Distance1", "MATE", 0, 0, 0, False, 0, Nothing, 0)

  9. ' Edit Mate
  10. Part.ClearSelection2 True
  11. boolstatus = Part.Extension.SelectByID2("", "FACE", 0, 0, 0, True, 1, Nothing, 0)
  12. boolstatus = Part.Extension.SelectByID2("", "FACE", 0, 0, 0.09, True, 1, Nothing, 0)
  13. boolstatus = Part.Extension.SelectByID2("Distance1", "MATE", 0, 0, 0, True, 0, Nothing, 0)
  14. Part.EditMate4 5, 0, True, 0.09, 0.09, 0.09, 0.001, 0.001, 0, 0.5235987755983, 0.5235987755983, False, False, 0, False, longstatus
  15. End Sub
複製代碼


您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 2024/4/23 18:22 , Processed in 0.156175 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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