Witam
Szukam sposobu na zapętlenie różnych wartości wielu zmiennych łańcuchowych , aby zmniejszyć rozmiar mojego kodu !
Dziękuję za pomoc.
Witam
Szukam sposobu na zapętlenie różnych wartości wielu zmiennych łańcuchowych , aby zmniejszyć rozmiar mojego kodu !
Dziękuję za pomoc.
Witam
Nie do końca to rozumiałem.
Aby utworzyć pętlę, jeśli wiesz, ile razy chcesz ją wykonać (na przykład 10), jest to:
- Przykład 1:
Dla i = 1 do 10
TWÓJ KOD
Następny i
- Przykład 2:
Rób, póki < 10
TWÓJ KOD
i = i + 1
Pętla
- Przykład 2:
Robić
TWÓJ KOD
i = i + 1
Pętla , podczas gdy ja < 10
Ale jeśli nie znasz liczby i jest ona częścią kolekcji, możesz użyć for each, przykład tutaj:
http://help.solidworks.com/2014/English/api/sldworksapi/Get_Components_in_Each_BOM_Table_Row_VB.htm
Na moim przykładzie, który dobrze znasz, zrozumiesz, co moim zdaniem chcę zrobić, w rzeczywistości chciałbym zastąpić moje linki, moje nazwy części, mep i zespołów (pogrubioną) zmiennymi łańcuchowymi, które zmieniam za każdym razem, gdy zaczyna się pętla, aż nie mam już wartości tekstowej!
Sub main()
Ustaw swApp = _
Aplikacja.SldWorks
Set Part = swApp.OpenDoc6("xxxxxxxxxxxxx.SLDASM", 2, 0, "", longstatus, longwarnings) 'otwieranie zestawu źródłowego'
swApp.ActivateDoc2 'Zestaw do przechowywania garnków', False, longstatus 'włącz zestaw'
Ustaw część = swApp.ActiveDoc 'aktywacja'
F1. Pokaż 'otwieranie okna informacyjnego'
Ustaw swAppp = Application.SldWorks 'powrót do aplikacji solidworks'
Set swmodel = swAppp.ActiveDoc 'Ponowna aktywacja zestawu'
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "") 'otwieranie okna Zapisz jako'
Set Part = swApp.ActiveDoc 'aktywuj nowy zespół zapisany w nowym folderze'
FilePath = swmodel. GetPathName 'pobieranie linku z zestawu'
TytułA = swmodel. GetTitle 'Pobieranie nazwy z rozszerzeniem zestawu'
TitleAs = Len(TitleA) 'długość przedłużenia pobierania'
TitleAn = Left(TitleA, TitleAs - 7) 'usuń rozszerzenie'
' ******************************************************************************
' Zapis sztuk doniczek magazynowych
' ******************************************************************************
Ustaw część = swApp.ActiveDoc 'aktywacja'
Set Part = swApp.OpenDoc6("\\xxxxxxxxxxx.sldprt", 1, 0, "", longstatus, longwarnings) 'otwieranie części'
Ustaw część = swApp.ActiveDoc 'aktywacja'
swApp.ActivateDoc2 "Pot Tray.sldprt", False, longstatus 'Aktywacja monet z doniczki'
Ustaw część = swApp.ActiveDoc 'aktywacja'
Ustaw swmodel = swApp.ActiveDoc 'aktywacja mep'
TitlePb = swmodel. GetTitle 'pobieranie tytułu z mepa sklepu z doniczkami bez rozszerzenia'
Ustaw część = swApp.OpenDoc6("xxxxxxxx.SLDDRW", 3, 0, "", longstatus, longwarnings) 'otwórz mep'
Ustaw część = swApp.ActiveDoc 'aktywacja'
swApp.ActivateDoc2 "Sklep z doniczkami - Arkusz1", Fałsz, longstatus 'aktywacja mep'
Ustaw część = swApp.ActiveDoc 'aktywacja'
Set swmodel = swApp.ActiveDoc 'aktywacja dla informacji o dokumencie'
TitleM = swmodel. GetTitle 'odzyskiwanie tytułu mep bez przedłużenia'
Ustaw część = swApp.ActiveDoc 'aktywacja'
swApp.ActivateDoc2 "Store pots.sldprt", False, longstatus 'aktywacja części'
Ustaw część = swApp.ActiveDoc 'aktywacja'
Ustaw swAppp = Application.SldWorks 'włącz aplikację solidworks'
Ustaw swmodel = swAppp.ActiveDoc 'aktywacja części'
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "") 'otwiera okno Zapisz jako'
Ustaw swmodel = swApp.ActiveDoc 'aktywacja mep'
TitleM = swmodel. GetTitle 'odzyskiwanie tytułu mep bez przedłużenia'
PFilePath = swmodel. GetPathName 'pobieranie linku części z rozszerzeniem'
PsFilePath = Len(PFilePath) 'pobieranie długości linku części z rozszerzeniem'
PnFilePath = Left(PFilePath, PsFilePath - 7) 'usunięcie rozszerzenia'
MFilePath = ŚcieżkaPlikuPnFile & ". SLDDRW" 'dodano rozszerzenie dla łączy MEP'
TytułP = swmodel. GetTitle 'pobieranie tytułu pomieszczenia do przechowywania słoików z rozszerzeniem'
TitlePs = Len(TitleP) 'Pobieranie długości przedłużenia'
TitlePn = Left(TitleP, TitlePs - 7) 'usuń rozszerzenie'
Ustaw część = swApp.ActiveDoc 'aktywacja'
Ustaw część = Nic
swApp.CloseDoc TitlePn 'zamknij pokój'
Ustaw część = swApp.ActiveDoc 'aktywacja'
swApp.ActivateDoc2 "Sklep z garnkami - Arkusz1", Fałsz, longstatus 'aktywacja mep'
Ustaw część = swApp.ActiveDoc 'aktywacja'
longstatus = Part.SaveAs3(MFilePath, 0, 2) 'rekord mep'
Ustaw swmodel = swApp.ActiveDoc 'aktywacja mep'
TitleM = swmodel. GetTitle 'Pobieranie tytułu nowego posła bez rozszerzenia'
swApp.CloseDoc TitleM 'close mep'
swApp.ActivateDoc2 TitlePn, False, longstatus 'back to part'
Ustaw część = swApp.ActiveDoc 'aktywacja'
Ustaw część = Nic
swApp.CloseDoc TitlePn 'zamknij pokój'
Ustaw część = swApp.ActiveDoc 'aktywacja'
swApp.ActivateDoc2 TitleAn, False, longstatus 'powrót do zgromadzenia ogólnego (zestaw sklepu z doniczkami)'
Ustaw część = swApp.ActiveDoc
Ustaw część = swApp.ActiveDoc
longstatus = Part.SaveAs3(FilePath, 0, 2) 'Rekord Zgromadzenia Ogólnego (zestaw do przechowywania garnków)'
Ustaw część = swApp.ActiveDoc
Ustaw część = Nic
swApp.CloseDoc Tytuł'Zamknięcie Walnego Zgromadzenia (Zestaw Tacek na Garnki)'
Koniec subwoofera
Więc jeśli dobrze zrozumiałem, po prostu musisz podmienić kod:
Set Part = swApp.OpenDoc6("\\xxxxxxxxxxx.sldprt", 1, 0, "", longstatus, longwarnings) 'otwieranie części'
przez:
Set Part = swApp.OpenDoc6(path1, 1, 0, "", longstatus, longwarnings) 'otwórz część'
– I tak dalej dla innych
A swoją pętlę zrobisz tak:
for i = 1 do 3 '(3, jeśli chcesz zapętlić się 3 razy)
jeśli i = 1, to
ścieżka 1 = "C:\test 1\"
else jeśli i = 2 to
ścieżka 2 = "c:\test 2\"
else jeśli i = 3 to
ścieżka 3 = "c:\test 3\"
Zakończ się, jeśli
Oto reszta kodu, która powinna zostać uwzględniona w pętli
Następny i
Oto reszta kodu, która NIE powinna być dołączana do pętli
Subtelny! Postaram się tak, bardzo dziękuję :)
Nie martw się :)
Aby być czystszym, powinieneś użyć wybranego przypadku zamiast:
jeśli i = 1, to
ścieżka 1 = "C:\test 1\"
else jeśli i = 2 to
ścieżka 2 = "c:\test 2\"
else jeśli i = 3 to
ścieżka 3 = "c:\test 3\"
Zakończ się, jeśli
Byłoby to:
Wybierz przypadek I
Ramka 1
ścieżka 1 = "C:\test 1\"
Ramka 2
......
Zakończ wybór