Problem z makrem solidworks

Witam

 

Nie jestem zbyt dobry w programowaniu, dlatego przyjeżdżam do Ciebie. 

 

Próbuję skompilować dwa makra, aby utworzyć STEP z MEP, więc mam pierwsze makro, które otwiera salon i drugie, które zapisuje część w formacie STEP.

 

im swApp As Object (Obiekt)
Przyciemnij część jako obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim Locatie Jako Ciąg
Dim Locatie_aangepast As String
Przyciemnij OpenDoc jako obiekt
Dim Extensie_nieuw As String
Dim Extensie_oud As String
Dim retval As String
Dim Naam As String
Dim Naam_aangepast As String
Dim bRetVal As String
Dim swModel     As SldWorks.ModelDoc2
Dim swDrawing   As SldWorks.DrawingDoc
Dim swView      As SldWorks.View
Błędy      przyciemnienia tak długo

Makro podrzędne1()
Ustaw swApp = Application.SldWorks
Ustaw swModel = swApp.ActiveDoc
Ustaw swApp = CreateObject("SldWorks.Application")
Ustaw OpenDoc = swApp.ActiveDoc()
Ustaw część = swApp.ActiveDoc

' Czy dokument jest aktywny?
Jeśli swModel jest niczym, to
swApp.SendMsgToUser2 "Plik rysunku musi być otwarty.", swMbWarning, swMbOk
Wyjdź z subwoofera
Zakończ jeżeli:

' Czy jest to dokument częściowy?
Jeśli swModel.GetType <> SwConst.swDocDRAWING Następnie
swApp.SendMsgToUser2 "Plik rysunku musi być otwarty.", swMbWarning, swMbOk
Wyjdź z subwoofera
Zakończ jeżeli:

Ustaw swDrawing = swModel
Ustaw swView = swDrawing.GetFirstView
Ustaw swView = swView.GetNextView
Jeśli swView jest niczym, to
MsgBox "Proszę najpierw wstawić widok modelu!"
Koniec
Inaczej
swApp.ActivateDoc3 swView.GetReferencedModelName, Fałsz, swRebuildOnActivation_e.swUserDecision, Błędy
Zakończ jeżeli:

Zadzwoń do makro2
Koniec subwoofera


Makro podrzędne2()


Ustaw swApp = CreateObject("SldWorks.Application")
Ustaw swModel = swApp.ActiveDoc
Ustaw OpenDoc = swApp.ActiveDoc()
Ustaw część = swApp.ActiveDoc

boolstatus = swApp.SetUserPreferenceIntegerValue(swStepAP, 214) 'Wymuś wersję AP214
boolstatus = swApp.SetUserPreferenceIntegerValue(swStepExportPreference, swAcisOutputGeometryPreference_e.swAcisOutputAsSolidAndSurface) 'Wymuś eksport w formacie geometrii bryły/powierzchni


Extensie_oud = ". SLDPRT"
Extensie_nieuw = ". KROK"
Locatie = OpenDoc.GetPathName
Locatie_aangepast = Lewo(Locatie, Len(Lokatie) - 7)
retval = Dir$(Locatie_aangepast & Extensie_oud)
Naam = Dir$(Locatie)
Naam_aangepast = Lewo(Naam, Len(Naam) - 7)
Titel = Błąd kompilacji OpenDoc.GetTitle      <------
Titel = Lewo(Tytuł, (Len(Tytuł)))


    Jeśli retval = Naam Then
        nRetval = swApp.SendMsgToUser2(Naam_aangepast & " . Plik STEP został utworzony", swMbWarning, swMbOk)
    Zakończ jeżeli:
    
    
Ustaw część = swApp.ActiveDoc
longstatus = Part.SaveAs3(Naam_aangepast + Format(Teraz, " rrrr-mm-dd") & Extensie_nieuw, 0, 0)
swApp.CloseDoc Titel

Koniec subwoofera
 

Makra działają, gdy są same, ale jak tylko je skompiluję, już nie działają. Otrzymuję następujący komunikat wyświetlany jako "Błąd kompilacji: zmienna nie została zdefiniowana"  (patrz pogrubiona linijka powyżej)

 

Jeśli ktoś może mi pomóc.

 

Z góry dzięki!

CZEŚĆ

Tytuł nie znajduje się na liście Dim i dlatego nie jest zdefiniowany, musisz dodać:

Dim Titel jako ciąg

Dawid

1 polubienie

Dzięki David, spróbuję tego.

Mam inny problem, makro nie uruchamia się po kliknięciu utworzonego przeze mnie skrótu, ale działa, gdy jestem w edytorze i klikam "Odtwórz".

Czy masz rozwiązanie?

Sprawdziłbym szczegóły w ustawieniach skrótów (zakładam, że jest to przycisk SOLIDWORKS?)

Jeśli makro jest przechowywane na dysku sieciowym, czy można je skopiować lokalnie, a następnie zaktualizować przycisk, aby wskazywał kopię lokalną? Tylko po to, aby upewnić się, że uprawnienia sieciowe nie powodują problemu.

Dawid

1 polubienie

Udało mi się rozwiązać mój problem, skopiowałem makro do nowego makra, jest tam jak za dotknięciem czarodziejskiej różdżki działa!