mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-03 13:10:23 +01:00
Catenary editor: Iet-107 zigzag, span counter and step, cantilever swaps, movable anchors
This commit is contained in:
@@ -2198,6 +2198,8 @@ class editor_mode : public application_mode, private editor_track::observer
|
|||||||
bool catenary_on_key(int const Key, int const Action, int const Mods); // true: the key was used by the tool
|
bool catenary_on_key(int const Key, int const Action, int const Mods); // true: the key was used by the tool
|
||||||
std::string catenary_mode_name() const;
|
std::string catenary_mode_name() const;
|
||||||
void catenary_key_hints(std::vector<key_hint> &Hints) const;
|
void catenary_key_hints(std::vector<key_hint> &Hints) const;
|
||||||
|
// the digits typed are the span of the next pole from the last one
|
||||||
|
bool catenary_takes_typed() const;
|
||||||
// the page of the catenary field of work: 0 poles, 1 gantries, 2 wires
|
// the page of the catenary field of work: 0 poles, 1 gantries, 2 wires
|
||||||
int catenary_page();
|
int catenary_page();
|
||||||
void catenary_choose_page(int const Page);
|
void catenary_choose_page(int const Page);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -17,6 +17,7 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
#include "world/catenary_suspension.h"
|
#include "world/catenary_suspension.h"
|
||||||
#include "world/catenary_cantilever.h"
|
#include "world/catenary_cantilever.h"
|
||||||
|
|
||||||
|
#include <limits>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <optional>
|
#include <optional>
|
||||||
#include <string>
|
#include <string>
|
||||||
@@ -99,6 +100,7 @@ struct catenary_editor
|
|||||||
int chain_selected{-1}; // the chain shown in the panel
|
int chain_selected{-1}; // the chain shown in the panel
|
||||||
int connect_from{-1}; // hanging the wires on from this suspension: the next poles clicked get the spans
|
int connect_from{-1}; // hanging the wires on from this suspension: the next poles clicked get the spans
|
||||||
int umbrella_from{-1}; // an umbrella from this suspension: the next LMB by a track puts the second cantilever on its pole (or drop)
|
int umbrella_from{-1}; // an umbrella from this suspension: the next LMB by a track puts the second cantilever on its pole (or drop)
|
||||||
|
int anchor_cantilever{-1}; // a cantilever on the pole of this anchor: the next LMB by a track puts it there
|
||||||
int anchor_pick{-1}; // anchoring this chain to an existing pole: the next pole clicked carries the tensioning device
|
int anchor_pick{-1}; // anchoring this chain to an existing pole: the next pole clicked carries the tensioning device
|
||||||
bool anchor_pick_start{false}; // ... at the start of the chain, otherwise at its end
|
bool anchor_pick_start{false}; // ... at the start of the chain, otherwise at its end
|
||||||
bool anchor_pick_contact{false}; // ... the contact wires only (anchored apart from the messenger)
|
bool anchor_pick_contact{false}; // ... the contact wires only (anchored apart from the messenger)
|
||||||
@@ -132,7 +134,7 @@ struct catenary_editor
|
|||||||
int shift_group{0}; // the undo group of the distance of a mast being dragged; 0: the next change opens one
|
int shift_group{0}; // the undo group of the distance of a mast being dragged; 0: the next change opens one
|
||||||
float gantry_face{2.50f}; // from the axis of the track to the face of the mast (towards the track)
|
float gantry_face{2.50f}; // from the axis of the track to the face of the mast (towards the track)
|
||||||
char gantry_skin[128]{}; // the replaceable texture of the masts, the beam and the drops
|
char gantry_skin[128]{}; // the replaceable texture of the masts, the beam and the drops
|
||||||
int dragging{0}; // 1: the selected pole along the track, 2: the selected gantry along the track
|
int dragging{0}; // 1: the selected pole along the track, 2: the selected gantry along the track, 3: the selected anchor along the track
|
||||||
glm::vec2 pressed{0.f};
|
glm::vec2 pressed{0.f};
|
||||||
glm::dvec3 drag_start{0.0}; // the point of the ground the drag started at
|
glm::dvec3 drag_start{0.0}; // the point of the ground the drag started at
|
||||||
std::vector<std::pair<std::size_t, catenary::gantry>> drag_group; // the spans of the dragged gantry as they were when the drag started
|
std::vector<std::pair<std::size_t, catenary::gantry>> drag_group; // the spans of the dragged gantry as they were when the drag started
|
||||||
@@ -150,10 +152,96 @@ struct catenary_editor
|
|||||||
int catalog_card{0};
|
int catalog_card{0};
|
||||||
int page{0}; // the page of the catenary field of work: 0 poles, 1 gantries, 2 wires
|
int page{0}; // the page of the catenary field of work: 0 poles, 1 gantries, 2 wires
|
||||||
int gantry_hang{0}; // the next cantilevers on the selected gantry: 0 on drops of the beam, 1 straight on its masts
|
int gantry_hang{0}; // the next cantilevers on the selected gantry: 0 on drops of the beam, 1 straight on its masts
|
||||||
|
// the staggers of the next poles by Iet-107 of PKP PLK (4.6.4, 7.4.2): on a straight the other side of the track axis than
|
||||||
|
// the pole before (the full cycle in two spans), on a curve to its outside; the values by the speed of the line
|
||||||
|
bool zigzag{true};
|
||||||
|
int speed_class{0}; // 0: V <= 160 km/h, 1: V > 160 km/h
|
||||||
|
float zigzag_straight{0.30f}; // m, either side of the track axis
|
||||||
|
float zigzag_curve{0.30f}; // m, to the outside of the curve
|
||||||
|
bool zigzag_flip{false}; // X: the next pole goes the same way as the one before (a swap of the short and the long cantilever)
|
||||||
|
// the span of the next pole from the last one: 0 where the cursor is, 1 the recommended one, 2 the length set here
|
||||||
|
int span_step{0};
|
||||||
|
float span_length{60.0f};
|
||||||
|
bool show_staggers{true}; // the staggers written at the poles of the selected chain
|
||||||
|
std::optional<int> bend_user; // "cards for" as the user had it before a pole was selected (the pole's own while it is)
|
||||||
};
|
};
|
||||||
catenary_tool m_catenary;
|
catenary_tool m_catenary;
|
||||||
void catenary_scan();
|
void catenary_scan();
|
||||||
bool catenary_spot_at(TTrack &Track, int const Path, glm::dvec3 const &Point, glm::dvec3 const &Cursor, int const Side, catenary_spot &Spot) const;
|
// Placing: the spot of a new pole, which takes the zigzag proposed after the last pole and the step of the span
|
||||||
|
bool catenary_spot_at(TTrack &Track, int const Path, glm::dvec3 const &Point, glm::dvec3 const &Cursor, int const Side, catenary_spot &Spot, bool const Placing = false) const;
|
||||||
|
// the zigzag (Iet-107): the largest staggers allowed for the speed of the line, and those the next poles get
|
||||||
|
double zigzag_limit(bool const Curve) const;
|
||||||
|
double zigzag_stagger(bool const Curve) const;
|
||||||
|
// the curve stagger the spans are checked with: Iet-107 or the catalogue (card 0008)
|
||||||
|
double span_curve_stagger() const;
|
||||||
|
// the network type chosen in the panel
|
||||||
|
std::string panel_network() const;
|
||||||
|
// the longest span of the network allowed on a curve of this radius (0: straight): the table of the network
|
||||||
|
// (traction_layout.txt), above 160 km/h no more than 62 +4 m (Iet-107 7.4.3.1), on a curve the wires tangent to the track
|
||||||
|
// axis in the middle of the span (3.4.4.4); 0 when nothing is known
|
||||||
|
double span_limit_at(std::string const &Network, double const Radius) const;
|
||||||
|
// the span the step "recommended" puts the next pole at: the nominal one (62 m above 160 km/h), no longer than allowed
|
||||||
|
// there and than 10 % over the span before (4.6.1.2); 0 when nothing is known
|
||||||
|
double span_recommended(double const Radius) const;
|
||||||
|
// the digits typed are the span of the next pole
|
||||||
|
bool typed_span() const;
|
||||||
|
// the wires towards the pole for the next pole at this spot by the zigzag: the other side of the track axis than the last pole
|
||||||
|
// (or the same with zigzag_flip); none when there's no last pole near
|
||||||
|
std::optional<bool> zigzag_toward(catenary_spot const &Spot) const;
|
||||||
|
// the offset of the wires of the suspension from the axis of its track (with the lean of a superelevated track), + towards its pole
|
||||||
|
bool stagger_of(std::size_t const Index, double &Offset) const;
|
||||||
|
// the same, as a side of the axis: + on the right of Right
|
||||||
|
bool lateral_of(std::size_t const Index, glm::dvec2 const &Right, double &Lateral) const;
|
||||||
|
// the span the next pole gets from the last one by the step or the digits typed (0: where the cursor is), at a radius there
|
||||||
|
double span_step_length(double const Radius) const;
|
||||||
|
// the place of the next pole moved along the track (this one or one joined to it) to the span wanted from the last pole;
|
||||||
|
// false: no step, or no such place near the cursor
|
||||||
|
bool catenary_snap_span(TTrack *&Track, int &Path, double &Parameter) const;
|
||||||
|
// the last pole, if it's close enough to go on from (a span of a chain)
|
||||||
|
catenary::suspension const *last_pole_near(glm::dvec3 const &Point) const;
|
||||||
|
// the span ending at the last pole in its chain (0 when it's the first one)
|
||||||
|
double last_span() const;
|
||||||
|
// the settings of the panel which make a cantilever, kept while one pole is composed with its own
|
||||||
|
struct panel_settings
|
||||||
|
{
|
||||||
|
int pole{0}, execution{1}, catalog_card{0}, bend{0};
|
||||||
|
bool swinging{true}, insulators25{false}, toward{true};
|
||||||
|
std::string catalog_kind, catalog_group, catalog_family;
|
||||||
|
float stagger{0.30f}, height{5.60f}, system_height{0.0f}, clearance{2.50f};
|
||||||
|
};
|
||||||
|
panel_settings panel_save() const;
|
||||||
|
void panel_restore(panel_settings const &Settings);
|
||||||
|
// the panel takes the settings of the suspension (its pole, card group, execution, height of the wires ...)
|
||||||
|
void catenary_take_settings(std::size_t const Index);
|
||||||
|
// the suspension gets another stagger, its pole and the rest of it stay; Group: the undo group. false: no card for it
|
||||||
|
bool catenary_restagger(std::size_t const Index, double const Stagger, bool const Toward, bool const Curve, int const Group);
|
||||||
|
// the track bends at the spot enough for the cards of a curve (table 0007)
|
||||||
|
static bool track_curve(catenary_spot const &Spot);
|
||||||
|
// X: the selected pole the other way (short cantilever <-> long one), or the next pole the other way than the zigzag proposes
|
||||||
|
void catenary_flip();
|
||||||
|
// the poles of the chain from position From on get the zigzag of Iet-107: the first of them keeps its side (or goes the other
|
||||||
|
// way with Flip), the next ones in turn on a straight, outwards on a curve
|
||||||
|
void catenary_zigzag_chain(std::size_t const Chain, std::size_t const From, bool const Flip);
|
||||||
|
// the check of a chain by Iet-107: staggers, the cycle of the zigzag, the wires in the middle of the spans, the spans and the
|
||||||
|
// section; cached until the chain or the settings change
|
||||||
|
struct chain_issue
|
||||||
|
{
|
||||||
|
std::size_t pole{std::numeric_limits<std::size_t>::max()}; // the suspension it's about; max: the whole chain
|
||||||
|
std::string text;
|
||||||
|
bool error{false};
|
||||||
|
};
|
||||||
|
struct chain_report
|
||||||
|
{
|
||||||
|
std::size_t signature{0};
|
||||||
|
double length{0.0};
|
||||||
|
double shortest{0.0}, longest{0.0};
|
||||||
|
std::vector<chain_issue> issues;
|
||||||
|
std::vector<std::pair<std::size_t, double>> staggers; // the stagger at each pole, + towards its pole
|
||||||
|
};
|
||||||
|
mutable std::map<std::size_t, chain_report> m_chain_reports;
|
||||||
|
chain_report const &catenary_chain_report(std::size_t const Chain) const;
|
||||||
|
void render_catenary_zigzag_ui();
|
||||||
|
void render_catenary_chain_report(std::size_t const Chain);
|
||||||
// a pole of this type can't stand there: its group doesn't stand by switches and a switch is by it
|
// a pole of this type can't stand there: its group doesn't stand by switches and a switch is by it
|
||||||
bool catenary_switch_error(std::string const &Pole, glm::dvec3 const &Foot, TTrack const *Track) const;
|
bool catenary_switch_error(std::string const &Pole, glm::dvec3 const &Foot, TTrack const *Track) const;
|
||||||
bool catenary_switch_error(std::size_t const Index) const; // of a placed pole, remembered until it moves or changes type
|
bool catenary_switch_error(std::size_t const Index) const; // of a placed pole, remembered until it moves or changes type
|
||||||
@@ -173,6 +261,8 @@ struct catenary_editor
|
|||||||
void catenary_compose(catenary_spot &Spot, double const Clearance, double const Stagger, bool const Toward, std::string const &Pole = {}) const;
|
void catenary_compose(catenary_spot &Spot, double const Clearance, double const Stagger, bool const Toward, std::string const &Pole = {}) const;
|
||||||
bool catenary_on_mast(catenary::gantry const &Gantry, double const Stagger, catenary_spot &Spot) const;
|
bool catenary_on_mast(catenary::gantry const &Gantry, double const Stagger, catenary_spot &Spot) const;
|
||||||
catenary_spot const *catenary_spot_of(std::size_t const Index);
|
catenary_spot const *catenary_spot_of(std::size_t const Index);
|
||||||
|
// the same from the const paths (the overlay): the places are a cache filled on demand
|
||||||
|
catenary_spot const *catenary_spot_view(std::size_t const Index) const { return const_cast<catenary_editor *>(this)->catenary_spot_of(Index); }
|
||||||
int catenary_hit() const;
|
int catenary_hit() const;
|
||||||
int catenary_span_hit() const;
|
int catenary_span_hit() const;
|
||||||
void catenary_press(track_intent const &Intent);
|
void catenary_press(track_intent const &Intent);
|
||||||
@@ -185,6 +275,11 @@ struct catenary_editor
|
|||||||
// be put there (Spot.problem says why when Spot.card is 0)
|
// be put there (Spot.problem says why when Spot.card is 0)
|
||||||
bool catenary_umbrella_spot(TTrack &Track, int Path, catenary_spot &Spot);
|
bool catenary_umbrella_spot(TTrack &Track, int Path, catenary_spot &Spot);
|
||||||
void catenary_umbrella_place(catenary_spot const &Spot);
|
void catenary_umbrella_place(catenary_spot const &Spot);
|
||||||
|
// a cantilever on the pole of the anchor tool.anchor_cantilever, to this track; false when it can't be put there (Spot.problem
|
||||||
|
// says why when Spot.card is 0)
|
||||||
|
bool catenary_anchor_cantilever_spot(TTrack &Track, int Path, catenary_spot &Spot) const;
|
||||||
|
// the cantilever goes on the anchor pole, the anchor goes onto its pole (on <name>)
|
||||||
|
void catenary_anchor_cantilever_place(catenary_spot const &Spot);
|
||||||
// the two cantilevers of the umbrella of this suspension become separate ones
|
// the two cantilevers of the umbrella of this suspension become separate ones
|
||||||
void catenary_umbrella_break(std::size_t Index);
|
void catenary_umbrella_break(std::size_t Index);
|
||||||
// a cantilever of an umbrella or of spread cantilevers: composed with its pole (and its console mount) where they are
|
// a cantilever of an umbrella or of spread cantilevers: composed with its pole (and its console mount) where they are
|
||||||
@@ -223,7 +318,21 @@ struct catenary_editor
|
|||||||
// the selected gantry (all its spans and what hangs on them) moved in the plan
|
// the selected gantry (all its spans and what hangs on them) moved in the plan
|
||||||
void catenary_gantry_shift(glm::dvec2 const &Shift);
|
void catenary_gantry_shift(glm::dvec2 const &Shift);
|
||||||
// the place of the first mast at Axis from the axis of the track nearest to Point, on the side of Point; false: no track near
|
// the place of the first mast at Axis from the axis of the track nearest to Point, on the side of Point; false: no track near
|
||||||
bool catenary_along_track(glm::dvec3 const &Point, double const Axis, glm::dvec3 &Place) const;
|
// Rail: the height of the rail heads of that track there
|
||||||
|
bool catenary_along_track(glm::dvec3 const &Point, double const Axis, glm::dvec3 &Place, double *Rail = nullptr) const;
|
||||||
|
// the track a new pole goes by: the one under the cursor, or the nearest one within reach of the place on the ground under
|
||||||
|
// the cursor (the pole is put where it stands, not on the axis of the track); found again each frame by catenary_intent()
|
||||||
|
struct place_target
|
||||||
|
{
|
||||||
|
TTrack *track{nullptr};
|
||||||
|
int path{0};
|
||||||
|
glm::dvec3 point{0.0}; // on the axis of the track, nearest to the cursor
|
||||||
|
glm::dvec3 cursor{0.0}; // the place under the cursor at the height of the track
|
||||||
|
};
|
||||||
|
place_target m_target;
|
||||||
|
bool catenary_find_target(place_target &Target) const;
|
||||||
|
// the anchor selected in the view moved with the cursor, along the track at the distance its pole has from it
|
||||||
|
void catenary_anchor_drag();
|
||||||
bool catenary_on_gantry(catenary_spot &Spot);
|
bool catenary_on_gantry(catenary_spot &Spot);
|
||||||
void catenary_drag_update();
|
void catenary_drag_update();
|
||||||
// the selected gantry anew: another beam, masts, turned around its middle (degrees), or square to the nearest track
|
// the selected gantry anew: another beam, masts, turned around its middle (degrees), or square to the nearest track
|
||||||
|
|||||||
@@ -913,6 +913,8 @@ char const *editor_mode::typed_meaning() const
|
|||||||
return "type the turn in degrees, + to the right";
|
return "type the turn in degrees, + to the right";
|
||||||
if (m_lay.active && false == m_lay.points.empty())
|
if (m_lay.active && false == m_lay.points.empty())
|
||||||
return "type the length of the next leg, Enter adds the point";
|
return "type the length of the next leg, Enter adds the point";
|
||||||
|
if (m_track_tab == track_tab::catenary && catenary_takes_typed())
|
||||||
|
return "type the span from the last pole, LMB by the track places the pole there";
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11397,3 +11397,313 @@ msgstr "Przewody łańcucha idą prosto od %s do %s, lina nośna przez %s"
|
|||||||
|
|
||||||
msgid "This cantilever holds only the messenger: it leaves the chain, the contact wires go straight between the two cantilevers of the pole next to it in the chain, the messenger goes through this one and their cords hang from it"
|
msgid "This cantilever holds only the messenger: it leaves the chain, the contact wires go straight between the two cantilevers of the pole next to it in the chain, the messenger goes through this one and their cords hang from it"
|
||||||
msgstr "Ten wysięgnik trzyma tylko linę nośną: wypada z listy łańcucha, przewody jezdne idą prosto między dwoma wysięgnikami tego słupa obok niego w łańcuchu, lina nośna przez niego, a ich linki wiszą na niej"
|
msgstr "Ten wysięgnik trzyma tylko linę nośną: wypada z listy łańcucha, przewody jezdne idą prosto między dwoma wysięgnikami tego słupa obok niego w łańcuchu, lina nośna przez niego, a ich linki wiszą na niej"
|
||||||
|
|
||||||
|
# scenery editor: catenary - the zigzag of Iet-107, the counter and the step of the span, the swaps of the cantilevers
|
||||||
|
|
||||||
|
msgid "Zigzag by Iet-107 (PKP PLK)"
|
||||||
|
msgstr "Zygzak wg Iet-107 (PKP PLK)"
|
||||||
|
|
||||||
|
msgid "The staggers of the next poles by the guidelines Iet-107: on a straight the wires on the other side of the track axis than at the pole before, the full cycle in two spans (4.6.4.3), on a curve to its outside so that in the middle of the span they're tangent to the track axis (3.4.4.4). The chains and their spans are checked by it too"
|
||||||
|
msgstr "Odsuwy kolejnych słupów wg wytycznych Iet-107: na prostej przewody po drugiej stronie osi toru niż przy poprzednim słupie, pełny cykl w dwóch przęsłach (4.6.4.3), na łuku na zewnątrz łuku tak, żeby w środku przęsła przebiegały po stycznej do osi toru (3.4.4.4). Według nich sprawdzane są też łańcuchy i ich przęsła"
|
||||||
|
|
||||||
|
msgid "up to 160 km/h"
|
||||||
|
msgstr "do 160 km/h"
|
||||||
|
|
||||||
|
msgid "over 160 km/h"
|
||||||
|
msgstr "ponad 160 km/h"
|
||||||
|
|
||||||
|
msgid "Over 160 km/h: the stagger on a straight up to 0.20 m, the normal span 62 +-4 m, the tension section up to 1400 m (Iet-107 7.4)"
|
||||||
|
msgstr "Ponad 160 km/h: odsuw na prostej do 0,20 m, przęsło normalne 62 ±4 m, odcinek naprężenia do 1400 m (Iet-107 7.4)"
|
||||||
|
|
||||||
|
msgid "Stagger on a straight, either side (m)"
|
||||||
|
msgstr "Odsuw na prostej, na przemian (m)"
|
||||||
|
|
||||||
|
msgid "From the track axis, in turn to its two sides: up to 0.30 m, over 160 km/h up to 0.20 m (Iet-107 3.4.4.3, 7.4.2.1)"
|
||||||
|
msgstr "Od osi toru, na przemian w obie strony: do 0,30 m, ponad 160 km/h do 0,20 m (Iet-107 3.4.4.3, 7.4.2.1)"
|
||||||
|
|
||||||
|
msgid "Stagger on a curve, outwards (m)"
|
||||||
|
msgstr "Odsuw na łuku, na zewnątrz (m)"
|
||||||
|
|
||||||
|
msgid "To the outside of the curve at every pole, up to 0.30 m (Iet-107 7.4.2.1); the span on the curve no longer than lets the wires be tangent to the track axis in its middle: 2 sqrt(2 R z)"
|
||||||
|
msgstr "Na zewnątrz łuku przy każdym słupie, do 0,30 m (Iet-107 7.4.2.1); przęsło na łuku nie dłuższe, niż pozwala na przebieg przewodów po stycznej do osi toru w jego środku: 2 √(2 R z)"
|
||||||
|
|
||||||
|
msgid "Next pole: the wires on the other side of the track than at %s"
|
||||||
|
msgstr "Następny słup: przewody po drugiej stronie toru niż przy %s"
|
||||||
|
|
||||||
|
msgid "Next pole: the wires on the same side of the track as at %s (a swap)"
|
||||||
|
msgstr "Następny słup: przewody po tej samej stronie toru co przy %s (przekładka)"
|
||||||
|
|
||||||
|
msgid "The first pole: wires towards it (short cantilever)"
|
||||||
|
msgstr "Pierwszy słup: odsuw do słupa (wysięgnik krótki)"
|
||||||
|
|
||||||
|
msgid "The first pole of a zigzag; the next ones go in turn. Off: away from the pole (a long cantilever)"
|
||||||
|
msgstr "Pierwszy słup zygzaka; następne idą na przemian. Wyłączone: odsuw od słupa (wysięgnik długi)"
|
||||||
|
|
||||||
|
msgid "Swap (X)"
|
||||||
|
msgstr "Przełóż (X)"
|
||||||
|
|
||||||
|
msgid "The next pole the other way than the zigzag proposes: a short cantilever instead of a long one or the other way round. On a curve the wires stay at its outside"
|
||||||
|
msgstr "Następny słup odwrotnie, niż proponuje zygzak: wysięgnik krótki zamiast długiego albo odwrotnie. Na łuku przewody zostają na zewnątrz łuku"
|
||||||
|
|
||||||
|
msgid "Next span (M):"
|
||||||
|
msgstr "Następne przęsło (M):"
|
||||||
|
|
||||||
|
msgid "at the cursor"
|
||||||
|
msgstr "pod kursorem"
|
||||||
|
|
||||||
|
msgid "recommended"
|
||||||
|
msgstr "zalecane"
|
||||||
|
|
||||||
|
msgid "The pole goes along the track where its span from the last pole is the nominal one of the network (traction_layout.txt; 62 m over 160 km/h), on a curve no longer than allowed there, no more than 10 % over the span before (Iet-107 4.6.1.2)"
|
||||||
|
msgstr "Słup staje wzdłuż toru tam, gdzie jego przęsło od ostatniego słupa ma rozpiętość nominalną sieci (traction_layout.txt; ponad 160 km/h 62 m), na łuku nie dłuższą niż tam dopuszczalna, najwyżej o 10 % dłuższą od przęsła poprzedniego (Iet-107 4.6.1.2)"
|
||||||
|
|
||||||
|
msgid "own"
|
||||||
|
msgstr "własne"
|
||||||
|
|
||||||
|
msgid "recommended from the last pole %.1f m"
|
||||||
|
msgstr "zalecane od ostatniego słupa %.1f m"
|
||||||
|
|
||||||
|
msgid "at most %.1f m"
|
||||||
|
msgstr "najwyżej %.1f m"
|
||||||
|
|
||||||
|
msgid "the span before %.1f m"
|
||||||
|
msgstr "przęsło poprzednie %.1f m"
|
||||||
|
|
||||||
|
msgid "Digits typed: the span of the next pole (e.g. 62, then LMB by the track)"
|
||||||
|
msgstr "Wpisane cyfry: przęsło następnego słupa (np. 62, potem LPM przy torze)"
|
||||||
|
|
||||||
|
msgid "type the span from the last pole, LMB by the track places the pole there"
|
||||||
|
msgstr "wpisz przęsło od ostatniego słupa, LPM przy torze stawia tam słup"
|
||||||
|
|
||||||
|
msgid "Iet-107 allows up to %.2f m here"
|
||||||
|
msgstr "Iet-107 dopuszcza tu najwyżej %.2f m"
|
||||||
|
|
||||||
|
msgid "Towards the pole: a short cantilever; away from it: a long one. On a straight the wires zigzag, on a curve they go to its outside"
|
||||||
|
msgstr "Do słupa: wysięgnik krótki; od słupa: długi. Na prostej przewody idą zygzakiem, na łuku na zewnątrz łuku"
|
||||||
|
|
||||||
|
msgid "Swap short / long (X)"
|
||||||
|
msgstr "Przełóż krótki / długi (X)"
|
||||||
|
|
||||||
|
msgid "The wires of this pole to the other side of the track axis: the short cantilever becomes a long one or the other way round; the pole stays where it stands"
|
||||||
|
msgstr "Przewody tego słupa na drugą stronę osi toru: wysięgnik krótki staje się długim albo odwrotnie; słup zostaje na miejscu"
|
||||||
|
|
||||||
|
msgid "Zigzag:"
|
||||||
|
msgstr "Zygzak:"
|
||||||
|
|
||||||
|
msgid "from this pole on"
|
||||||
|
msgstr "od tego słupa"
|
||||||
|
|
||||||
|
msgid "This pole keeps its side of the track, the next ones of the chain get the wires in turn on the other side of the track axis (on a curve to its outside), with the staggers set for the zigzag"
|
||||||
|
msgstr "Ten słup zostaje po swojej stronie toru, kolejne słupy łańcucha dostają przewody na przemian po drugiej stronie osi toru (na łuku na zewnątrz łuku), z odsuwami ustawionymi dla zygzaka"
|
||||||
|
|
||||||
|
msgid "swap from this pole on"
|
||||||
|
msgstr "przekładka od tego słupa"
|
||||||
|
|
||||||
|
msgid "This pole goes to the other side of the track (short <-> long cantilever) and the next ones of the chain follow it in turn: the zigzag moved by one pole"
|
||||||
|
msgstr "Ten słup przechodzi na drugą stronę toru (wysięgnik krótki <-> długi), a kolejne słupy łańcucha idą za nim na przemian: zygzak przesunięty o jeden słup"
|
||||||
|
|
||||||
|
msgid "The first pole of the chain keeps its side, all the others get the zigzag of Iet-107 from it"
|
||||||
|
msgstr "Pierwszy słup łańcucha zostaje po swojej stronie, wszystkie pozostałe dostają od niego zygzak wg Iet-107"
|
||||||
|
|
||||||
|
msgid "Iet-107: no remarks to the chain"
|
||||||
|
msgstr "Iet-107: brak uwag do łańcucha"
|
||||||
|
|
||||||
|
msgid "Iet-107: %zu remarks to the chain, %d at this pole (the list on the Wires page)"
|
||||||
|
msgstr "Iet-107: uwag do łańcucha: %zu, przy tym słupie: %d (lista na stronie Druty)"
|
||||||
|
|
||||||
|
msgid "%.0f m of the chain, no remarks of Iet-107"
|
||||||
|
msgstr "%.0f m łańcucha, bez uwag wg Iet-107"
|
||||||
|
|
||||||
|
msgid "%.0f m of the chain, %zu remarks of Iet-107 (the list on the Wires page)"
|
||||||
|
msgstr "%.0f m łańcucha, uwag wg Iet-107: %zu (lista na stronie Druty)"
|
||||||
|
|
||||||
|
msgid "Iet-107: %zu spans, %.0f m (spans %.1f - %.1f m)"
|
||||||
|
msgstr "Iet-107: przęseł %zu, %.0f m (przęsła %.1f - %.1f m)"
|
||||||
|
|
||||||
|
msgid "Zigzag the chain by Iet-107"
|
||||||
|
msgstr "Zygzakuj łańcuch wg Iet-107"
|
||||||
|
|
||||||
|
msgid "The first pole keeps its side of the track, the next ones get the wires in turn on the other side of the track axis, on a curve to its outside; the staggers as set for the zigzag on the Poles page. The poles stay where they stand, the cards follow the distance A"
|
||||||
|
msgstr "Pierwszy słup zostaje po swojej stronie toru, kolejne dostają przewody na przemian po drugiej stronie osi toru, na łuku na zewnątrz łuku; odsuwy jak ustawione dla zygzaka na stronie Słupy. Słupy zostają na miejscu, karty idą za odległością A"
|
||||||
|
|
||||||
|
msgid "Staggers in the view"
|
||||||
|
msgstr "Odsuwy w widoku"
|
||||||
|
|
||||||
|
msgid "No remarks"
|
||||||
|
msgstr "Bez uwag"
|
||||||
|
|
||||||
|
msgid "Click: select the pole and fly to it"
|
||||||
|
msgstr "Kliknij: zaznacz słup i przeleć do niego"
|
||||||
|
|
||||||
|
msgid "%s: stagger %.2f m, more than the %.2f m allowed (Iet-107 %s)"
|
||||||
|
msgstr "%s: odsuw %.2f m, więcej niż dopuszczalne %.2f m (Iet-107 %s)"
|
||||||
|
|
||||||
|
msgid "%s: on a curve the wires go to its outside (Iet-107 3.4.4.4)"
|
||||||
|
msgstr "%s: na łuku przewody idą na zewnątrz łuku (Iet-107 3.4.4.4)"
|
||||||
|
|
||||||
|
msgid "Span %s - %s: %.1f m, longer than the %.1f m allowed there"
|
||||||
|
msgstr "Przęsło %s - %s: %.1f m, dłuższe niż dopuszczalne tam %.1f m"
|
||||||
|
|
||||||
|
msgid "Span %s - %s: %.1f m, outside 62 +-4 m (Iet-107 7.4.3.1)"
|
||||||
|
msgstr "Przęsło %s - %s: %.1f m, poza 62 ±4 m (Iet-107 7.4.3.1)"
|
||||||
|
|
||||||
|
msgid "Span %s - %s: no zigzag, the wires on the same side of the track axis at both poles (Iet-107 4.6.4.3)"
|
||||||
|
msgstr "Przęsło %s - %s: brak zygzaka, przewody przy obu słupach po tej samej stronie osi toru (Iet-107 4.6.4.3)"
|
||||||
|
|
||||||
|
msgid "Span %s - %s: in its middle the wires are %.2f m inside the track axis of the curve, the span is too long for the stagger (Iet-107 3.4.4.4)"
|
||||||
|
msgstr "Przęsło %s - %s: w jego środku przewody są %.2f m po wewnętrznej stronie osi toru na łuku, przęsło za długie na ten odsuw (Iet-107 3.4.4.4)"
|
||||||
|
|
||||||
|
msgid "%s: the spans %.1f and %.1f m on both sides differ by %.0f %% (Iet-107 4.6.1.2: up to 10 %%)"
|
||||||
|
msgstr "%s: przęsła %.1f i %.1f m po obu stronach różnią się o %.0f %% (Iet-107 4.6.1.2: najwyżej 10 %%)"
|
||||||
|
|
||||||
|
msgid "Middle anchor at %s: the spans %.1f and %.1f m on both sides of it, up to 2 m apart (Iet-107 4.6.3.3)"
|
||||||
|
msgstr "Kotwienie środkowe przy %s: przęsła po obu stronach %.1f i %.1f m, różnica do 2 m (Iet-107 4.6.3.3)"
|
||||||
|
|
||||||
|
msgid "Tension section %.0f m, longer than %.0f m (Iet-107 %s)"
|
||||||
|
msgstr "Odcinek naprężenia %.0f m, dłuższy niż %.0f m (Iet-107 %s)"
|
||||||
|
|
||||||
|
msgid "Weight anchors at both ends and no middle anchor (Iet-107 3.4.6.1, 4.6.3.2)"
|
||||||
|
msgstr "Kotwienia ciężarowe na obu końcach bez kotwienia środkowego (Iet-107 3.4.6.1, 4.6.3.2)"
|
||||||
|
|
||||||
|
msgid "Zigzag of Iet-107: %zu poles changed, the others had it already"
|
||||||
|
msgstr "Zygzak wg Iet-107: zmienione słupy: %zu, pozostałe już go miały"
|
||||||
|
|
||||||
|
msgid "Zigzag of Iet-107: %zu poles changed, %zu couldn't take it (no card for their A or not by a track)"
|
||||||
|
msgstr "Zygzak wg Iet-107: zmienione słupy: %zu, nie dało się zmienić: %zu (brak karty dla ich A albo nie stoją przy torze)"
|
||||||
|
|
||||||
|
msgid "Swapped: stagger %.2f m towards the pole (short cantilever)"
|
||||||
|
msgstr "Przełożone: odsuw %.2f m do słupa (wysięgnik krótki)"
|
||||||
|
|
||||||
|
msgid "Swapped: stagger %.2f m away from the pole (long cantilever)"
|
||||||
|
msgstr "Przełożone: odsuw %.2f m od słupa (wysięgnik długi)"
|
||||||
|
|
||||||
|
msgid "- on a curve the wires go to its outside (Iet-107 3.4.4.4)"
|
||||||
|
msgstr "- na łuku przewody idą na zewnątrz łuku (Iet-107 3.4.4.4)"
|
||||||
|
|
||||||
|
msgid "No card of the catalogue for the cantilever swapped: it stays as it was"
|
||||||
|
msgstr "Brak w katalogu karty dla przełożonego wysięgnika: zostaje tak jak był"
|
||||||
|
|
||||||
|
msgid "The next pole: the wires on the same side of the track as at the last pole (a swap)"
|
||||||
|
msgstr "Następny słup: przewody po tej samej stronie toru co przy ostatnim słupie (przekładka)"
|
||||||
|
|
||||||
|
msgid "The next pole: the wires on the other side of the track than at the last pole (zigzag)"
|
||||||
|
msgstr "Następny słup: przewody po drugiej stronie toru niż przy ostatnim słupie (zygzak)"
|
||||||
|
|
||||||
|
msgid "The next pole: the wires towards the pole (short cantilever)"
|
||||||
|
msgstr "Następny słup: odsuw do słupa (wysięgnik krótki)"
|
||||||
|
|
||||||
|
msgid "The next pole: the wires away from the pole (long cantilever)"
|
||||||
|
msgstr "Następny słup: odsuw od słupa (wysięgnik długi)"
|
||||||
|
|
||||||
|
msgid "The next pole where the cursor is"
|
||||||
|
msgstr "Następny słup tam, gdzie kursor"
|
||||||
|
|
||||||
|
msgid "The next pole at the recommended span from the last one"
|
||||||
|
msgstr "Następny słup w zalecanej rozpiętości przęsła od ostatniego"
|
||||||
|
|
||||||
|
msgid "The next pole at the span set in the panel"
|
||||||
|
msgstr "Następny słup w rozpiętości przęsła ustawionej w panelu"
|
||||||
|
|
||||||
|
msgid "stagger %.2f m towards the pole (short cantilever)"
|
||||||
|
msgstr "odsuw %.2f m do słupa (wysięgnik krótki)"
|
||||||
|
|
||||||
|
msgid "stagger %.2f m away from the pole (long cantilever)"
|
||||||
|
msgstr "odsuw %.2f m od słupa (wysięgnik długi)"
|
||||||
|
|
||||||
|
msgid "span %.1f m from the last pole"
|
||||||
|
msgstr "przęsło %.1f m od ostatniego słupa"
|
||||||
|
|
||||||
|
msgid "towards the pole, short cantilever"
|
||||||
|
msgstr "do słupa, wysięgnik krótki"
|
||||||
|
|
||||||
|
msgid "away from the pole, long cantilever"
|
||||||
|
msgstr "od słupa, wysięgnik długi"
|
||||||
|
|
||||||
|
msgid "stagger %.2f m"
|
||||||
|
msgstr "odsuw %.2f m"
|
||||||
|
|
||||||
|
msgid "to the outside of the curve"
|
||||||
|
msgstr "na zewnątrz łuku"
|
||||||
|
|
||||||
|
msgid "the same side of the track as the last pole (swap, X)"
|
||||||
|
msgstr "po tej samej stronie toru co ostatni słup (przekładka, X)"
|
||||||
|
|
||||||
|
msgid "the other side of the track than the last pole (X swaps)"
|
||||||
|
msgstr "po drugiej stronie toru niż ostatni słup (X przekłada)"
|
||||||
|
|
||||||
|
msgid "%.1f m from the last pole"
|
||||||
|
msgstr "%.1f m od ostatniego słupa"
|
||||||
|
|
||||||
|
msgid "(typed %.1f m)"
|
||||||
|
msgstr "(wpisane %.1f m)"
|
||||||
|
|
||||||
|
msgid "%.2f to the pole"
|
||||||
|
msgstr "%.2f do słupa"
|
||||||
|
|
||||||
|
msgid "%.2f from the pole"
|
||||||
|
msgstr "%.2f od słupa"
|
||||||
|
|
||||||
|
msgid "recommended %.1f"
|
||||||
|
msgstr "zalecane %.1f"
|
||||||
|
|
||||||
|
msgid "max %.1f"
|
||||||
|
msgstr "maks. %.1f"
|
||||||
|
|
||||||
|
msgid "before %.1f (%+.0f %%)"
|
||||||
|
msgstr "poprz. %.1f (%+.0f %%)"
|
||||||
|
|
||||||
|
msgid "swaps the next pole: short <-> long cantilever"
|
||||||
|
msgstr "przekłada następny słup: wysięgnik krótki <-> długi"
|
||||||
|
|
||||||
|
msgid "the next span: at the cursor / recommended / own"
|
||||||
|
msgstr "następne przęsło: pod kursorem / zalecane / własne"
|
||||||
|
|
||||||
|
msgid "swaps the selected pole: short <-> long cantilever"
|
||||||
|
msgstr "przekłada zaznaczony słup: wysięgnik krótki <-> długi"
|
||||||
|
|
||||||
|
msgid "lets go of the selected pole"
|
||||||
|
msgstr "odznacza zaznaczony słup"
|
||||||
|
|
||||||
|
# scenery editor: catenary - anchors moved along the track, the reach of placing the poles
|
||||||
|
|
||||||
|
msgid "Anchor %s selected: its settings are below, drag moves it along the track, Del removes it"
|
||||||
|
msgstr "Zaznaczone kotwienie %s: ustawienia poniżej, przeciągnięcie przesuwa je wzdłuż toru, Del je usuwa"
|
||||||
|
|
||||||
|
msgid "Anchor %s: its pole %.1f m from the last pole of the chain"
|
||||||
|
msgstr "Kotwienie %s: słup kotwowy %.1f m od ostatniego słupa łańcucha"
|
||||||
|
|
||||||
|
msgid "Drag a tensioning device"
|
||||||
|
msgstr "Przeciągnij urządzenie naprężające"
|
||||||
|
|
||||||
|
msgid "moves the anchor pole along the track"
|
||||||
|
msgstr "przesuwa słup kotwowy wzdłuż toru"
|
||||||
|
|
||||||
|
msgid "Anchor pole from the track axis (m)"
|
||||||
|
msgstr "Słup kotwowy od osi toru (m)"
|
||||||
|
|
||||||
|
msgid "From the axis of the nearest track to the axis of the anchor pole: it moves square to the track, away from it or towards it; the tensioning device turns after the wires. Drag or Ctrl+click to type"
|
||||||
|
msgstr "Od osi najbliższego toru do osi słupa kotwowego: słup przesuwa się prostopadle do toru, od niego albo do niego; urządzenie naprężające obraca się za drutami. Przeciągnij albo Ctrl+klik, żeby wpisać"
|
||||||
|
|
||||||
|
msgid "Stop placing the cantilever"
|
||||||
|
msgstr "Przerwij stawianie wysięgnika"
|
||||||
|
|
||||||
|
msgid "A cantilever on the anchor pole"
|
||||||
|
msgstr "Wysięgnik na słupie kotwowym"
|
||||||
|
|
||||||
|
msgid "LMB by the track the cantilever reaches to: it goes on the anchor pole, with the settings of the Poles page"
|
||||||
|
msgstr "LPM przy torze, do którego sięga wysięgnik: staje na słupie kotwowym, z ustawieniami ze strony Słupy"
|
||||||
|
|
||||||
|
msgid "The anchor pole gets a cantilever to a track by it (the same or the neighbouring one); the pole is then stood by that cantilever and the anchor stays on it. The cantilever can start or go on with a chain like any other pole"
|
||||||
|
msgstr "Słup kotwowy dostaje wysięgnik do toru obok (tego samego albo sąsiedniego); słup stawia wtedy ten wysięgnik, a kotwienie zostaje na nim. Od wysięgnika można zacząć albo dalej prowadzić łańcuch jak od każdego słupa"
|
||||||
|
|
||||||
|
msgid "Pole %s of the anchor takes no cantilever from the catalogue"
|
||||||
|
msgstr "Słup kotwowy %s nie przyjmuje wysięgnika z katalogu"
|
||||||
|
|
||||||
|
msgid "Cantilever %s (card %d execution %d, A = %.2f m) on the pole of anchor %s; C starts or goes on with a chain from it"
|
||||||
|
msgstr "Wysięgnik %s (karta %d, wykonanie %d, A = %.2f m) na słupie kotwienia %s; C zaczyna od niego albo prowadzi dalej łańcuch"
|
||||||
|
|
||||||
|
msgid "Click: the cantilever on the anchor pole, card %04d execution %d, A = %.2f m (X: towards / away from the pole)"
|
||||||
|
msgstr "Kliknij: wysięgnik na słupie kotwowym, karta %04d, wykonanie %d, A = %.2f m (X: do / od słupa)"
|
||||||
|
|
||||||
|
msgid "Anchor: LMB by the track the cantilever on the anchor pole reaches to; Esc stops"
|
||||||
|
msgstr "Kotwienie: LPM przy torze, do którego sięga wysięgnik na słupie kotwowym; Esc przerywa"
|
||||||
|
|||||||
Reference in New Issue
Block a user