SelectByID2 nie działa w określonym przypadku

Witam

Jestem w trakcie tworzenia makra i nieuchronnie ostatni krok nie działa. 

Chcę wybrać szkic z pliku części. 

Kiedy zakoduję na stałe nazwę części, w której znajduje się szkic: OK (przykład: SelectByID2("Nomdelesquisse@partname@assemablage" itd. itp.)

Kiedy zamieniam nazwę części na zmienną (która pochodzi z Nazwa2) NIE OK. Brak błędu kompilatora, ale po prostu nic się nie dzieje i przechodzi w wierszu.  (przykład: SelectByID2("Nomdelesquisse@&NazwaElementu&@assemablage" itd. itp )

Małe wyjaśnienia: Name2 zwraca ciąg, a SelectByID2 prosi o nazwę w STRING, więc to dobrze (cóż, myślę) 

                               Moja metoda łapania Name2 działa (umieściłem szpiega na mojej linii swComp.Name2 i jest w porządku, mam właściwość socket) 

 

Proszę bardzo, jeśli ktoś ma pomysł. Jestem biorcą!!

 

Dziękuję bardzo

Witam

Jeśli wiersz odpowiada twojemu kodowi, to jest to raczej:  "Nomdelesquisse@" & partname & "@assemblage"

Tak jak jest napisane, jest interpretowany jako 100% tekstu

1 polubienie

Witam i dziękuję za odpowiedź, 

Wtedy

w tej wersji -  SelectByID2("Nomdelesquisse@partname@assemblage" -: jest to rekord makra. Rzeczywiście, tylko tekst.

W tej wersji - SelectByID2("Nomdelesquisse@&PieceName&@assemablage" - : Połączyłem zmienną PieceName , ale to nie działa.

Nie mogę też umieścić " przed i po &, kompilator nie akceptuje. W zasadzie nie jest to tak, jak w MsgBox.

Krótko mówiąc, to tak, jakby nie chciał przyjmować zmiennej, gdy jest ona dobrze zadeklarowana w String.  Muszę przegapić coś bardzo głupiego, ale tutaj się trzymam. 

 

Witam

Zgadzam się z Cyril.f, uważaj na położenie cudzysłowów.

boolstatus = Part.Extension.SelectByID2(NazwaWymiaru & "@" & NazwaSzkicu & "@" & NazwaCzęści, "WYMIAR", 0, 0, 0, Fałsz, 0, Nic, 0)

działa bardzo dobrze.

Pozdrowienia

Ale ponieważ twoja część znajduje się w zespole, nie możesz zapomnieć o wskazaniu identyfikatora wystąpienia części, który z pamięci nie pojawia się w swComp.Name2, więc:

boolstatus = Part.Extension.SelectByID2("Esquisse1@" & NazwaElementu & "-1@Assemblage1", "SZKIC", 0, 0, 0, Fałsz, 0, Nic, 0)

dla wystąpienia 1

Pozdrowienia

 

Witam i dziękuję za odpowiedź, 

Wiersz kodu zapisany przez VB:

 boolstatus = swModel.Extension.SelectByID2("Contourdecoupe@19XXX000001A-256@Simulateur", "SZKIC", 0, 0, 0, Fałsz, 0, Nic, 0)

Contourdecut to nazwa szkicu. On nigdy się nie zmienia. 

Symulator to nazwa zestawu. On nigdy się nie zmienia. 

Działa doskonale. Ale 19XXX000001A zmienia się cały czas. A także -256, który jest numerem instancji w zestawie. Stąd umieszczenie zmiennej. 

--------------------------------------------------------------------------------

Czego chcę (moja zmienna podkreślona pogrubioną kursywą):

boolstatus = swModel.Extension.SelectByID2("Contourdecoupe@&Nazwa&@Simulateur", "SZKIC", 0, 0, 0, Fałsz, 0, Nic, 0)

Mogę dodać cudzysłowy ruchu, to nie działa. Jak jest napisane, absolutnie nic się nie dzieje. To nie pomyłka. Nic.  

Umieściłem szpiega na powrocie Name2, identyfikator wystąpienia wraca dobrze. 256 jak wskazano w mojej zbyt wolnej odpowiedzi :D

Próbowałem też stworzyć drugą zmienną zawierającą właśnie tę liczbę. Też nic. 

W końcu! 

Jest to więc problem cudzysłowów. Ale także przestrzeni. 

Zamiast: boolstatus = swModel.Extension.SelectByID2("Contourdecoupe@&Name&@Simulateur", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)

Potrzebujesz:        boolstatus = swModel.Extension.SelectByID2("Contourdecoupe@" & Name & " @Simulateur", "SKETCH", 0, 0, 0, False, 0, Nothing, 0) 

I nie:      boolstatus = swModel.Extension.SelectByID2("Contourdecoupe@"&Name&"@Simulateur", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)

Każdego dnia dowiadujemy się więcej! 

Dziękuję za radę :)

 

 

Czyli moja pamięć zawodziła, identyfikator wystąpienia części sięga dobrze wstecz...

FYI, aby to zadziałało, twoje pionki muszą być również w trybie rozwiązanym.

Pozdrowienia

Witam

Czy na pewno wybrałeś najlepszą odpowiedź?

Cyril.f's ma wszystko, czego potrzebujesz, cudzysłowy, spacje...

Pozdrowienia

3 polubienia