Jak uzyskać nazwę części, zespołu lub instalacji w toku?

Witam

W jaki sposób mogę odzyskać nazwy moich części, instalacji i zespołu, aby zamknąć je po rejestracji? 

myTitle = mójModel.GetTitle

swApp.ActivateDoc2 mójTytuł, Prawda, 0

swApp.QuitDoc mójTytuł

Próbowałem tego, ale to nie działa. Nie mogę też znaleźć polecenia, aby po prostu zapisać mój zestaw.

2 polubienia

Witam,

 

To zależy, czy chcesz odzyskać nazwę aktywnego pliku? Oznacza to, że gdy jesteś na planie, chcesz pobrać nazwę planu, w zespole nazwę zespołu, a w części nazwę części?

Jeśli tak, ten samouczek, który właśnie stworzyłem na Lynkoa, będzie w porządku:

http://www.lynkoa.com/tutos/import-export-formats-neutres/vba-solidworks-nom-fichier

 

Aby zarejestrować zespół bez zmiany wszystkich części, należy zacząć od "najwyższego" zespołu, aż do momentu otwarcia S.A. i zawartych w nim części. Dlatego z montażu otwieram swoją część, mep i ja zapisujemy pod i następnie zamykam dokument, ale operator zmienia nazwę między dwoma, dlatego potrzebuję tego, aby zamknąć dokument. Wtedy muszę znaleźć sposób, aby zapisać najwyższy montaż po zmianach.

Mam nadzieję, że mam jasność, w załączonym kodzie nie mogę zamknąć rysunku, aby wrócić na przykład do części.


makro50.swp

Czy możesz umieścić swój kod w pliku tekstowym?

Ustaw swapp = _
Aplikacja.SldWorks

Ustaw część = zamiana. OpenDoc6("\xxxxxxxxxx", 2, 0, "", longstatus, longwarnings)
Zamiana. ActivateDoc2 "Zestaw do przechowywania garnków", False, longstatus
Ustaw część = zamiana. Plik ActiveDoc

F1. Pokazać

Ustaw swappp = Application.SldWorks
Ustaw swmodel = swappp. Plik ActiveDoc
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "")

"Zamiana. OpenDoc(Nazwa;Typ) '
      
Ustaw część = zamiana. Plik ActiveDoc
boolstatus = Part.Extension.SelectByID2("Pots-Store 1@Ensemble Store pots_9", "KOMPONENT", 0, 0, 0, Fałsz, 0, Nic, 0)
Part.OpenCompFile (Plik Part.OpenCompFile)
Ustaw część = zamiana. OpenDoc6("\xxxxxxxx", 1, 0, "", longstatus, longwarnings)
Ustaw część = zamiana. Plik ActiveDoc

Ustaw część = zamiana. OpenDoc6("\xxxxxxxx", 3, 0, "", longstatus, longwarnings)
Ustaw część = zamiana. Plik ActiveDoc

Ustaw swappp = Application.SldWorks
Ustaw swmodel = swappp. Plik ActiveDoc
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "")

Wygląda na to, że Twój kod nie jest liczbą całkowitą (nie ma "sub").

Na czym dokładnie polega problem? Czy możesz otworzyć, ale nie zamknąć aktywnego dokumentu?

Czy podczas uruchamiania kodu występuje błąd w wierszu?

Nie mogę testować, nie mam SolidWorks, więc potrzebuję więcej informacji.

Dostarczyłem Ci tylko część mojego kodu, dziś rano trochę posunąłem się naprzód i znalazłem rozwiązania (mój kod znajduje się poniżej). Problem z tym kodem polega na tym, że nie mogę uzyskać tytułu MEP w ten sam sposób, co części i zespoły. Rzeczywiście, ten kod zapisuje część, element instalacji, zespół na początku, ale nie na końcu, ponieważ zamyka się zamiast mojego łącznika. W związku z tym odwołania w zespole są tracone.

Sub main()
        
Ustaw swapp = _
Aplikacja.SldWorks

Ustaw część = zamiana. OpenDoc6("\\xxxxxx", 2, 0, "", longstatus, longwarnings)
Zamiana. ActivateDoc2 "Zestaw do przechowywania garnków", False, longstatus
Ustaw część = zamiana. Plik ActiveDoc

F1. Pokazać


Ustaw swAppp = Application.SldWorks
Ustaw swmodel = swAppp.ActiveDoc
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "")


"Zamiana. OpenDoc(Nazwa;Typ) '
      
Ustaw część = zamiana. Plik ActiveDoc

"Pobierz link
FilePath = swmodel. GetPathName (Nazwa_ścieżki)
'Pobiera liczbę znaków
PathSize = Len(ŚcieżkaPliku)
'Odzyskuje tylko nazwę pliku bez rozszerzenia
PathNoExtension = Lewo(ŚcieżkaPliku, 29)

TytułA = swmodel. GetTitle (DostaćTytuł)

TitleAs = Len(TytułA)

TytułAn = Lewo(TytułA, TytułJako - 7)

Ustaw część = zamiana. Plik ActiveDoc
Ustaw część = zamiana. OpenDoc6("\\xxxxx"", longstatus, longwarnings)
Ustaw część = zamiana. Plik ActiveDoc

Zamiana. ActivateDoc2 "Store pots.sldprt", False, longstatus
Ustaw część = zamiana. Plik ActiveDoc


Ustaw część = zamiana. OpenDoc6("\\xxxxx", 3, 0, "", longstatus, longwarnings)
Ustaw część = zamiana. Plik ActiveDoc

Zamiana. ActivateDoc2 "Magazyn słoików - Arkusz1", Fałsz, długi stan
Ustaw część = zamiana. Plik ActiveDoc


bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "")

Ustaw część = zamiana. Plik ActiveDoc

TitleM = swmodel. GetTitle (DostaćTytuł)

TytułMs = Len(TytułM)

TitleMn = Lewo(TytułM, TytułMs - 7)

Ustaw część = zamiana. Plik ActiveDoc
Ustaw część = Nic
Zamiana. CloseDoc TytułMn
Ustaw część = zamiana. Plik ActiveDoc

Zamiana. ActivateDoc2 "Store pots.sldprt", False, longstatus
Ustaw część = zamiana. Plik ActiveDoc

Ustaw swAppp = Application.SldWorks
Ustaw swmodel = swAppp.ActiveDoc
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "")


TytułP = swmodel. GetTitle (DostaćTytuł)

TytułPs = Len(TytułP)

TytułPn = Lewo(TytułP, TytułPs - 7)


Ustaw część = zamiana. Plik ActiveDoc
Ustaw część = Nic
Zamiana. CloseDoc TytułPn
Ustaw część = zamiana. Plik ActiveDoc

Zamiana. ActivateDoc2 TitleAn, False, longstatus
Ustaw część = zamiana. Plik ActiveDoc

Ustaw część = zamiana. Plik ActiveDoc
longstatus = Part.SaveAs3(ŚcieżkaPliku, 0, 2)

Ustaw część = zamiana. Plik ActiveDoc
Ustaw część = Nic
Zamiana. Zamknij Tytuł Doc


F2. L_2 = TytułMn

F2. Pokazać


Koniec subwoofera

Jaka jest linia, która nie działa?

Aby zamknąć aktywny dokument, postąpię w następujący sposób:

swApp.CloseDoc(swModel.GetPathName)

Witam

Twój kod daje mi link do mep, ale potrzebuję nazwy, aby go zamknąć, czy się mylę? W każdym razie zawsze daje mi link do zestawu, myślę, że muszę mieć problem z aktywacją dokumentu, gdy przełączam się z mojego zestawu na mój mep. Mój kod działa, po prostu nie robi tego, czego chcę.

Spróbuj więc wstawić te linie, gdy chcesz zamknąć rysunek :

Ustaw swmodel = swapp. Plik ActiveDoc

swApp.CloseDoc(swModel.GetPathName)

 

 

1 polubienie

Nawiasem mówiąc, właśnie zauważyłem w twoim kodzie, że czasami są "swApp" i "swAppP".

Myślę, że to błąd i wszędzie należy go zastąpić słowem "swApp".  

Podsumowując, mój program gubi się w dokumentach, ponieważ nie mogę uzyskać właściwych nazw. W załączeniu dwa obrazki tego co dostaje jako nazwę i to samo ale z Twoją instrukcją: (w 1. to montaż z przedłużeniem i bez, w 2. powinien to być mep a w 3. część)


err1.png

Działa z twoimi ostatnimi komentarzami, których nie widziałem! Dla swapp(p) mam dwa różne stwierdzenia, więc myślę, że nie mam wyboru.

Dim swAppp As SldWorks.SldWorks

Dim swApp As Object

Bardzo wielkie podziękowania dla Ciebie, po prostu muszę to zrobić dla podzespołów i innych części :)

 

1 polubienie

Nie martw się!

Aby mi podziękować, wybierz moją odpowiedź jako najlepszą odpowiedź, która Ci pomogła :)