Problem mit dem Solidworks-Makro

Hallo

 

Ich bin nicht sehr gut im Programmieren, deshalb komme ich zu Ihnen. 

 

Ich versuche, zwei Makros zu kompilieren, um STEP aus dem MEP zu erstellen, so dass ich ein erstes Makro habe, das den Salon öffnet, und ein zweites, das das Teil im STEP-Format speichert.

 

im swApp Als Objekt
Teil als Objekt dimmen
Dim boolstatus als boolescher Wert
Dim longstatus As Long, longwarnings As Long
Dim Locatie As String
Locatie_aangepast als Zeichenfolge dimmen
OpenDoc als Objekt dimmen
Extensie_nieuw als Zeichenfolge dimmen
Dimmen Extensie_oud als Zeichenfolge
Dim retval As String
Dim Naam Als Saite
Naam_aangepast als Zeichenfolge dimmen
Dim bRetVal als Zeichenfolge
Dim swModel     As SldWorks.ModelDoc2
Dim swDrawing   As SldWorks.DrawingDoc
Dim swView      As SldWorks.View
Fehler      so lange dimmen

Sub-Makro1()
Legen Sie swApp = Application.SldWorks fest
Festlegen von swModel = swApp.ActiveDoc
Set swApp = CreateObject("SldWorks.Application")
Setze OpenDoc = swApp.ActiveDoc()
Set Part = swApp.ActiveDoc

' Ist das Dokument aktiv?
Wenn swModel nichts ist, dann
swApp.SendMsgToUser2 "Eine Zeichnungsdatei muss geöffnet sein.", swMbWarning, swMbOk
Sub beenden
Ende, wenn

' Handelt es sich um ein Teildokument?
Wenn swModel.GetType <> SwConst.swDocDRAWING dann
swApp.SendMsgToUser2 "Eine Zeichnungsdatei muss geöffnet sein.", swMbWarning, swMbOk
Sub beenden
Ende, wenn

Set swDrawing = swModel
Set swView = swDrawing.GetFirstView
Legen Sie swView = swView.GetNextView fest
Wenn swView nichts ist, dann
MsgBox "Bitte fügen Sie zuerst eine Modellansicht ein!"
Ende
Oder
swApp.ActivateDoc3 swView.GetReferencedModelName, False, swRebuildOnActivation_e.swUserDecision, Fehler
Ende, wenn

Aufrufen von macro2
Ende Sub


Sub-Makro2()


Set swApp = CreateObject("SldWorks.Application")
Festlegen von swModel = swApp.ActiveDoc
Setze OpenDoc = swApp.ActiveDoc()
Set Part = swApp.ActiveDoc

boolstatus = swApp.SetUserPreferenceIntegerValue(swStepAP, 214) 'Version AP214 erzwingen
boolstatus = swApp.SetUserPreferenceIntegerValue(swStepExportPreference, swAcisOutputGeometryPreference_e.swAcisOutputAsSolidAndSurface) 'Export im Volumenkörper-/Flächengeometrieformat erzwingen


Extensie_oud = ". SLDPRT"
Extensie_nieuw = ". SCHRITT"
Locatie = OpenDoc.GetPathName
Locatie_aangepast = Links(Lage, Länge(Lage) - 7)
retval = Dir$(Locatie_aangepast & Extensie_oud)
Naam = dir$(Ort)
Naam_aangepast = Links(Naam, Len(Naam) - 7)
Titel = OpenDoc.GetTitle      <------ Kompilierungsfehler
Titel = Left(Titel, (Len(Titel)))


    Wenn retval = Naam Dann
        nRetval = swApp.SendMsgToUser2(Naam_aangepast & " . STEP-Datei wurde erstellt", swMbWarning, swMbOk)
    Ende, wenn
    
    
Set Part = swApp.ActiveDoc
longstatus = Part.SaveAs3(Naam_aangepast + Format(Jetzt, " yyyy-mm-dd") & Extensie_nieuw, 0, 0)
swApp.CloseDoc Titel

Ende Sub
 

Makros funktionieren, wenn sie alleine sind, aber sobald ich sie kompiliere, funktioniert es nicht mehr. Mir wird folgende Meldung angezeigt "Kompilierungsfehler: Variable nicht definiert"  (siehe die Zeile oben in Fettdruck)

 

Wenn mir jemand helfen kann.

 

Vielen Dank im Voraus!

HALLO

Der Titel befindet sich nicht in Ihrer Dim-Liste und ist daher nicht definiert. Sie müssen Folgendes hinzufügen:

Dim Titel as String

David

1 „Gefällt mir“

Danke David, ich werde das versuchen.

Ich habe ein anderes Problem, das Makro wird nicht gestartet, wenn ich auf die von mir erstellte Verknüpfung klicke, aber es funktioniert, wenn ich im Editor bin und auf "Wiedergabe" klicke.

Haben Sie eine Lösung?

Ich würde die Details in der Verknüpfungseinrichtung überprüfen (ich gehe davon aus, dass es sich um eine SOLIDWORKS Schaltfläche handelt?)

Wenn das Makro auf einem Netzlaufwerk gespeichert ist, können Sie es lokal kopieren und dann die Schaltfläche so aktualisieren, dass sie auf die lokale Kopie verweist? Nur um sicherzustellen, dass Netzwerkberechtigungen das Problem nicht verursachen.

David

1 „Gefällt mir“

Ich habe es geschafft, mein Problem zu lösen, ich habe das Makro in ein neues Makro kopiert, es ist da wie von Zauberhand, es funktioniert!