SolidWorksとバッチスクリプトで起動するVBAマクロを使用して複雑なジオメトリを作成しようとしています。バックグラウンドでSolidWorksを実行し、VBAマクロで終了する
まず、solidworkをバックグラウンドで実行し、新しいパーツを作成し、単純なキューブを作成してから、&を閉じて閉じることができるかどうかを確認する簡単なマクロを作成しました。
私は、solidworks GUIが実際に画面に表示され、ドキュメントを保存した後にsolidworksが自動的に終了しないという2つのことが起こります。それは現在の部分を閉じますが、ソフトウェアは閉じません。ドキュメントは完全に保存され、ジオメトリは正しいです。ソフトウェアを手動で閉じない限り、メインのバッチマクロを実行できないため、問題です。ここで
は、コードは次のとおりです。
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Sub main()
Set swApp = _
Application.SldWorks
Set Part = swApp.NewDocument("C:\ProgramData\SolidWorks\SOLIDWORKS 2015\templates\Pieza.prtdot", 0, 0, 0)
' "Pieza" means part
swApp.ActivateDoc2 "Pieza1", False, longstatus
Set Part = swApp.ActiveDoc
Dim myModelView As Object
' Use SolidWorks in background mode
swApp.Visible = False
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
' Select lateral view and insert a sketch. Then extrude it
boolstatus = Part.Extension.SelectByID2("Vista lateral", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True
Part.ClearSelection2 True
boolstatus = Part.Extension.SetUserPreferenceToggle(swUserPreferenceToggle_e.swSketchAddConstToRectEntity, swUserPreferenceOption_e.swDetailingNoOptionSpecified, False)
boolstatus = Part.Extension.SetUserPreferenceToggle(swUserPreferenceToggle_e.swSketchAddConstLineDiagonalType, swUserPreferenceOption_e.swDetailingNoOptionSpecified, True)
Dim vSkLines As Variant
vSkLines = Part.SketchManager.CreateCornerRectangle(0, 0, 0, -0.144655684475683, 8.79061467198382E-02, 0)
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True
Part.ShowNamedView2 "*Trimétrica", 8
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Croquis1", "SKETCH", 0, 0, 0, False, 4, Nothing, 0)
Dim myFeature As Object
Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, 0.2, 0.01, False, False, False, False, 1.74532925199433E-02, 1.74532925199433E-02, False, False, False, False, True, True, True, 0, 0, False)
Part.SelectionManager.EnableContourSelection = False
longstatus = Part.SaveAs3("C:\tmp_SW\part.SLDPRT", 0, 2)
' I tried to use a variable as a string, however using "swApp.QuitDoc Part.GetTitle" gives the same result
Dim myTitle As String
myTitle = Part.GetTitle
swApp.QuitDoc myTitle
End Sub
私はスペイン語の単語がテキストを理解するための問題ではないことを願っています。
ありがとうございます。
このスクリプトをどのように実行するのですか教えてください。私は、WindowsコマンドラインからSolidworksアプリケーションを開くことなく優先的に実行したいマクロコードを持っています –