17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-11-09 02:50:59 +01:00

Sieć trakcyjna: kotwienia, kotwienie środkowe, parasole i wysięgniki rozstawione, konsole 4890/4690

Sam kod exe z gałęzi siec-trakcyjna od poprzedniego commita (bez testów, notatek i danych z tests/catenary).
Dane (data/traction_*.txt) leżą poza repozytorium.

- kotwienia ciężarowe i stałe (0404/0405, przewody zakotwione osobno, sieci bez własnych danych: network <symbol> as <kod>)
- kotwienie środkowe 0406/0408/0418/0416: lina, V i zaciski na linie nośnej liczonej jak przęsło, obejma 4160 na teownikach
- parasole i wysięgniki rozstawione na konsolach 4890, wysięgi pomocnicze 0167 na belkach 4690, trzeci wysięgnik w osi słupa,
  lina nośna z innego wysięgnika (messenger_from)
- przęsła w nietypowych sytuacjach nie przechodzą na stary wygląd (bez Y, bez wieszaków, lina nad przewodem)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GfTogWDsfCE8RGFGvm2eyp
This commit is contained in:
Claude
2026-10-26 01:12:06 +01:00
parent f30fefd91c
commit 619f048f31
18 changed files with 4237 additions and 285 deletions

View File

@@ -140,6 +140,9 @@ TTraction::Load( cParser *parser, glm::dvec3 const &pOrigin ) {
std::string token { parser->getToken<std::string>() };
std::string catenarytype;
double catenarytension[ 2 ] { 0.0, 0.0 };
glm::dvec3 catenaryrope2[ 2 ];
bool catenaryrope2set[ 2 ] { false, false };
while( false == token.empty()
&& token != "endtraction" ) {
@@ -152,11 +155,24 @@ TTraction::Load( cParser *parser, glm::dvec3 const &pOrigin ) {
// symbol typu sieci, np. YwsC120-2C; starsze wersje symulatora pomijają ten dopisek
catenarytype = parser->getToken<std::string>( false );
}
else if( token == "rope2" ) {
// koniec drugiej liny nośnej przy kotwieniu: "rope2 start|end x y z"
auto const which { parser->getToken<std::string>() };
auto const point { LoadPoint( *parser ) + pOrigin };
auto const end { which == "end" ? 1 : 0 };
catenaryrope2[ end ] = point;
catenaryrope2set[ end ] = true;
}
else if( token == "tension" ) {
// naciąg liny nośnej i przewodów jezdnych w daN inny niż w typie sieci (brakujące ciężary w kotwieniu)
parser->getTokens( 2 );
*parser >> catenarytension[ 0 ] >> catenarytension[ 1 ];
}
token = parser->getToken<std::string>();
}
Init(); // przeliczenie parametrów
catenary_span_assign( *this, catenarytype );
catenary_span_assign( *this, catenarytype, catenarytension[ 0 ], catenarytension[ 1 ], catenaryrope2, catenaryrope2set );
// calculate traction location
location( glm::mix( pPoint2, pPoint1, 0.5 ) );