Miejsce zatrzymania pociągu w bloku (Zdarzenia: DistanceToStop)

andrzej-n
Posty: 209
Rejestracja: 24 lis 2015, 20:48

Miejsce zatrzymania pociągu w bloku (Zdarzenia: DistanceToStop)

Post autor: andrzej-n »

Obecnie miejsce zatrzymania pociągu w bloku określane jest w "Parametrach bloku". A czy można zrobić to tak, by również poprzez zdarzenia ustalać miejsce zatrzymania. Chodzi o coś takiego np.:

"jeśli do bloku A wjeżdża lok X to odległość od prawej czujki do miejsca zatrzymania wynosi m cm, a odległość od lewej czujki do miejsca zatrzymania wynosi n cm"

Mam składy o różnej długości i potrzebuję, by zatrzymywały się w różnych miejscach bloku. Do tej pory robiłem karkołomne sztuczki z funkcją "czekaj" i "zmień prędkość" w zależności od tego jaki skład wjeżdżał do bloku.
Będę wdzięczny za pomoc.
Andrzej
Awatar użytkownika
gbbsoft
Admin
Posty: 2179
Rejestracja: 09 lip 2008, 23:19
Miasto: Warszawa
System DCC: Lenz + Roco

Re: Miejsce zatrzymania pociągu w bloku

Post autor: gbbsoft »

A gdyby w bloku pokazać cechę 'DistanceToStop', to rozwiązałoby to ten problem?
Tylko trzeba by było zmieniać tą cechę przed wjechaniem do bloku. I to jest chyba problem...
andrzej-n
Posty: 209
Rejestracja: 24 lis 2015, 20:48

Re: Miejsce zatrzymania pociągu w bloku

Post autor: andrzej-n »

W moim przypadku tego problemu nie ma. Zmiany tej cechy można dokonywać w bloku poprzedzającym podczas wjazdu bądź przejazdu.
Generalnie widzę to tak:
Przy definiowaniu zdarzenia, w sekcji Operacje należałoby dołożyć element np. 'DistanceToStop'
Dla tego elementu określane byłyby:
- nazwa bloku
- wybór od której strony liczona jest odległość (lewa/dół lub prawa/góra)
- odległość do miejsca zatrzymania w cm
Andrzej
andrzej-n
Posty: 209
Rejestracja: 24 lis 2015, 20:48

Re: Miejsce zatrzymania pociągu w bloku

Post autor: andrzej-n »

W uzupełnieniu poprzedniego wpisu.
Gdyby udało się rozwiązać ten problem, to można by wtedy, dla tego samego loka, w zależności od długości jego składu definiować różne miejsca zatrzymania. Te miejsca można by także zmieniać w zależności od tego jaki Autoprzejazd jest uruchomiony.
Andrzej
Awatar użytkownika
gbbsoft
Admin
Posty: 2179
Rejestracja: 09 lip 2008, 23:19
Miasto: Warszawa
System DCC: Lenz + Roco

Re: Miejsce zatrzymania pociągu w bloku

Post autor: gbbsoft »

Wystawiłem nową wersję testową, w której dla bloku dodałem dwie cechy:
DistanceToStopTmp_RightTopEnd
DistanceToStopTmp_LeftBottomEnd
Ustawienie wartości >0 powoduje chwilowe nadpisane wartości 'DistanceToStop'. Ustawienie wartości 0 powoduje powrót do wartości zdefiniowanej w oknie 'Blok' (do wartości standardowej).

W zdarzeniach, aby ustawić jakąś wartość należy użyć bloku "Wyrażenie" (lub pokrewne np: Wyrazenie_Calkowite) i w polu 'Zapisz jako Liczbę' wskazać 'ActiveBlock.DistanceToStopTmp_RightTopEnd' lub drugie pole.

Ciekawe jestem, czy to zadziała...
andrzej-n
Posty: 209
Rejestracja: 24 lis 2015, 20:48

Re: Miejsce zatrzymania pociągu w bloku (Zdarzenia: DistanceToStop)

Post autor: andrzej-n »

Zrobiłem tak:
1.jpg
i nie wiem jak:
- określić blok dla którego chcę zmienić miejsce zatrzymania
- gdzie wpisać nową wartość dystansu do zatrzymania
Andrzej
Awatar użytkownika
gbbsoft
Admin
Posty: 2179
Rejestracja: 09 lip 2008, 23:19
Miasto: Warszawa
System DCC: Lenz + Roco

Re: Miejsce zatrzymania pociągu w bloku (Zdarzenia: DistanceToStop)

Post autor: gbbsoft »

ad1. A spróbuj tak:
ActiveTrain -> CurrentBlock -> NextBlock -> DistanceToStop...

ale nie jest to najlepszy sposób... Muszę coś wymyśleć...

ad2. Najlepiej w Argument1
andrzej-n
Posty: 209
Rejestracja: 24 lis 2015, 20:48

Re: Miejsce zatrzymania pociągu w bloku (Zdarzenia: DistanceToStop)

Post autor: andrzej-n »

Nijak nie mogę sobie z tym poradzić. Wpisywałem wartości dla kilku argumentów. Nic nie działa.
Andrzej
Awatar użytkownika
gbbsoft
Admin
Posty: 2179
Rejestracja: 09 lip 2008, 23:19
Miasto: Warszawa
System DCC: Lenz + Roco

Re: Miejsce zatrzymania pociągu w bloku (Zdarzenia: DistanceToStop)

Post autor: gbbsoft »

Wystawiłem nową wersję.
andrzej-n pisze: i nie wiem jak:
- określić blok dla którego chcę zmienić miejsce zatrzymania
Teraz proponuje zrobić tak:
- W pozycji "Zapisz wynik do - ustawienia.ActiveBlock" wpisać nazwę bloku, w których chcemy zmienić DistanceToStopTmp_RightTopEnd
- w pozycji "Zapisz wynik do.ZapiszJako Liczbę" wpisać (wybrać) po prostu: ActiveBlock.DistanceToStopTmp_RightTopEnd
- w pozycji "Wyrażenie.Argument1" wpisać liczbę, którą chcemy wpisać do DistanceToStopTmp_RightTopEnd

Program podmieni "ActiveBlock" na blok, którego nazwa została wpisana.

PS. Wartość do wpisania jest obliczana tak:
- brana jest liczba wpisana w Argument1
- do tego jest dodawana/odejmowane/itd. liczba wpisana jako Argument2 biorąc pod uwagę operację wpisaną w Operacja1
- do tego jest dodawana/odejmowane/itd. liczba wpisana jako Argument3 biorąc pod uwagę operację wpisaną w Operacja2
- do tego jest dodawana/odejmowane/itd. liczba wpisana jako Argument4 biorąc pod uwagę operację wpisaną w Operacja3
- do tego jest dodawana/odejmowane/itd. liczba wpisana jako Argument5 biorąc pod uwagę operację wpisaną w Operacja4
i po tym wszystkim otrzymujemy liczbę, która zostanie wpisana tam, gdzie wskażemy w "Zapisz wynik do.ZapiszJako..."

A w skrócie, przy ustawieniu domyślnym!, jak wpiszemy liczbę w Argument1, to ta liczba będzie wynikiem, bo dodawania zera nic nie zmienia.

Jeżeli podczas obliczania wartości chcemy się odwołać do konkretnego bloku lub lokomotywy, to:
- ustawiamy jej nazwę w "Wyrażenia - ustawienia.ActiveBlock/ActiveTrain"
- odwołujemy się do jakieś cechy poprzez wybranie "ActiveBlock.<cecha>" lub "ActiveTrain.<cecha>" w Argument1..5
Załączniki
Przechwytywanie.JPG
andrzej-n
Posty: 209
Rejestracja: 24 lis 2015, 20:48

Re: Miejsce zatrzymania pociągu w bloku (Zdarzenia: DistanceToStop)

Post autor: andrzej-n »

Nie wiem co robię źle, ale u mnie o nie działa.
Wypróbowałem to na następującym przykładzie:
pociąg wyrusza z bloku b2 i po przejechaniu kilku bloków wraca do bloku b2. Dla bloku b2 w opcji "po ruszeniu pociągu z bloku" wstawiłem zdarzenie:
1.jpg
I niestety nic się nie dzieje. Pociąg nie zatrzymuje się w oczekiwanym miejscu. Również w parametrach bloku b2 nie zostały zmienione miejsca zatrzymania.
Andrzej
ODPOWIEDZ