2016-05-27 128 views
2

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 

私はスペイン語の単語がテキストを理解するための問題ではないことを願っています。

ありがとうございます。

答えて

0

さて、研究の数日、私はこの美しい例を発見した:

SolidWorks Example

そして、私の答えの鍵は:

私はこれはあなたのすべてを助けることを願っています。宜しくお願いします。

+0

このスクリプトをどのように実行するのですか教えてください。私は、WindowsコマンドラインからSolidworksアプリケーションを開くことなく優先的に実行したいマクロコードを持っています –

関連する問題