最終的に (できれば!) Excel またはテキスト ファイルからパーツ番号を読み取り、パーツ ライブラリの構成を検索して、対応するコンポーネントをアセンブリに挿入し、対応する構成をアクティブにするマクロを作成しています。
部品やアセンブリの挿入に関して問題があります。部品を挿入するマクロを記録することから始めました。ものすごく単純。ファイルパスと xyz 座標が必要な AddComponent コマンドを使用します。これは問題なく動作しているように見えましたが、グリッチが発生し続けました。私が理解できたことから、このコマンドは、パーツまたはアセンブリが Solidworks の現在のセッション中に既に使用されていない限り、パーツまたはアセンブリを挿入できません。
Option Base 1
Dim swApp As Object
Dim Part As Object
Dim SelMgr As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim Feature As Object
Dim filepath As String
Dim partnum(8) As String
Dim posx As Integer
Dim posy As Integer
Dim posz As Integer
Dim x As Integer
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
posx = 0
posy = 0
posz = 0
partnum(1) = "07010304"
partnum(2) = "07010318"
partnum(3) = "07010321"
partnum(4) = "07010331"
For x = 1 To 8
filepath = "C:\Documents and Settings\user\My Documents\Solid Works Testing\Parts\"+ partnum(x) + ".SLDPRT"
Part.AddComponent filepath, posx, posy, posz
filepath = "C:\Documents and Settings\user\My Documents\Solid Works Testing\Assemblies\" + partnum(x) + ".SLDASM"
Part.AddComponent filepath, posx, posy, posz
posx = posx + 1.5
Next
End Sub
このマクロは、07010304.SLDPRT、07010318.SLDPRT などの 3 つのパーツ (これらのパーツで構成される) を取得し、それらをアクティブなアセンブリに挿入します。
- アセンブリを開いてマクロを実行しても、何も起こりません。
- アセンブリを開いてキューブを挿入し、削除してからマクロを実行すると、キューブが挿入されます。
- アセンブリを開いてすべてのパーツを挿入し、それらを削除してからマクロを実行すると、すべてのパーツが挿入されます (ただし、2 つのパーツで構成されるアセンブリは挿入されません)。
- アセンブリを開いてキューブと球のアセンブリを挿入し、それを削除してマクロを実行すると、キューブ、球、およびキューブと球のアセンブリが挿入されますが、円柱は挿入されません。
- パーツが 1 つのアセンブリで使用されていて、別のアセンブリが開いているかアクティブになっている場合、マクロは新しいウィンドウで正常に機能します。
結論として、これを修正するにはどうすればよいですか?発生しているように見える「SW メモリにロード」に依存しないパーツを挿入する別のコマンドはありますか? それとも、それを実行してパーツを SW メモリにロードするコマンドですか?