Ich versuche, eine komplexe Geometrie mit SolidWorks und einem VBA-Makro, dass ich es mit einem Batch-Skript starten.Ausführen von SolidWorks im Hintergrund und Beenden mit VBA-Makro
Zuerst habe ich ein einfaches Makro, um zu überprüfen, ob es möglich ist, Solidworks im Hintergrund zu starten, ein neues Teil zu erstellen, einen einfachen Cube zu tun und dann speichern & schließen Sie es.
Zwei Dinge passieren, die ich nicht möchte: die Solidworks-GUI wird tatsächlich in meinem Bildschirm angezeigt und die Solidworks werden nicht automatisch nach dem Speichern des Dokuments beendet. Es schließt nur den aktuellen Teil, aber nicht die Software. Das Dokument ist perfekt gespeichert und die Geometrie ist korrekt. Es ist ein Problem, weil mein Haupt-Batch-Makro nicht weiter ausgeführt werden kann, wenn ich die Software nicht manuell schließe. Hier
ist der Code:
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
Ich hoffe, dass die spanischen Worte kein Problem für das Verständnis des Textes sein.
Vielen Dank im Voraus.
Können Sie mir bitte sagen, wie Sie dieses Skript ausführen? Ich habe einen Makrocode, den ich gerne von der Windows-Befehlszeile aus ausführen möchte, ohne die SolidWorks-Anwendung zu öffnen –