diff --git a/core/.releasing.txt.swp b/core/.releasing.txt.swp new file mode 100644 index 000000000..ca0277dfb Binary files /dev/null and b/core/.releasing.txt.swp differ diff --git a/core/ChangeLog b/core/ChangeLog index 8e4d3066f..ad4ecc9be 100644 --- a/core/ChangeLog +++ b/core/ChangeLog @@ -1,3 +1,12 @@ +2014-11-02 Kevin Ruland + * Released version 14.11 See Release Notes for changes. + +2014-06-26 Kevin Ruland + * Released version 14.06 See Release Notes for changes. + +2014-05-21 Kevin Ruland + * Released version 14.05 See Release Notes for changes. + 2013-11-07 Kevin Ruland * Released version 13.11 diff --git a/core/ReleaseNotes b/core/ReleaseNotes index bf888cfa8..8657c1076 100644 --- a/core/ReleaseNotes +++ b/core/ReleaseNotes @@ -1,3 +1,35 @@ +OpenRocket 14.11 (2014-11-02): +------------------------------ + +New Features: + * Updated thrustcurves + +Bug Fixes: + * Fixed a couple of bugs. + +OpenRocket 14.06 (2014-06-25): +------------------------------ + +New Features: + * Klima motor textures + * Added knots to windspeed and velocity units + * Updated thrustcurves + +Bug Fixes: + * Fixed annoying IndexOutOfBounds bug in tables. + +OpenRocket 14.05 (2014-05-21): +------------------------------ + +New Features: + * Compute optimimum delay time when simulating + * Display cg/mass overrides using icons in the component tree + +Bug Fixes: + * Bug fixes in the motor selection dialog + * Updated thrustcurves + * Updated 3d libraries to 2.1.5 + OpenRocket 14.03 (2014-03-20): ------------------------------ diff --git a/core/resources-src/datafiles/thrustcurves/manual/Cesaroni_F31.rse b/core/resources-src/datafiles/thrustcurves/manual/Cesaroni_F31.rse new file mode 100644 index 000000000..4c53f6621 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/manual/Cesaroni_F31.rse @@ -0,0 +1,27 @@ + + + + CTI 56-F31-CL-12A + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/manual/Klima_A6.eng b/core/resources-src/datafiles/thrustcurves/manual/Klima_A6.eng new file mode 100644 index 000000000..8228c9cee --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/manual/Klima_A6.eng @@ -0,0 +1,13 @@ +; Raketenmodellbau Klima GmbH +; Official manufacturer thrust data - A6 +; Created by Leo Nutz for OpenRocket, +; released into the Public Domain (3/2014) +A6 18 70 4 0.0035 0.0145 Klima + 0.088 0.502 + 0.186 4.601 + 0.232 7.089 + 0.314 10.477 + 0.418 6.713 + 0.467 3.011 + 0.501 0.418 + 0.71 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/manual/Klima_B4.eng b/core/resources-src/datafiles/thrustcurves/manual/Klima_B4.eng new file mode 100644 index 000000000..330df289e --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/manual/Klima_B4.eng @@ -0,0 +1,27 @@ +; Raketenmodellbau Klima GmbH +; Official manufacturer thrust data - B4 +; Created by Leo Nutz for OpenRocket, +; released into the Public Domain (3/2014) +B4 18 70 0-4 0.0054 0.0163 Klima + 0.049 0.83 + 0.096 1.745 + 0.157 2.946 + 0.209 3.89 + 0.273 4.977 + 0.335 6.093 + 0.380 7.122 + 0.411 8.001 + 0.436 7.065 + 0.465 6.236 + 0.516 5.063 + 0.564 4.462 + 0.607 4.205 + 0.669 4.09 + 0.90 4.09 + 0.966 3.976 + 1.025 3.719 + 1.084 3.261 + 1.145 2.546 + 1.212 1.745 + 1.295 0.772 + 1.364 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/manual/Klima_C2.eng b/core/resources-src/datafiles/thrustcurves/manual/Klima_C2.eng new file mode 100644 index 000000000..f699f9734 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/manual/Klima_C2.eng @@ -0,0 +1,24 @@ +; Raketenmodellbau Klima GmbH +; Official manufacturer thrust data - C2 +; Created by Leo Nutz for OpenRocket, +; released into the Public Domain (3/2014) +C2 18 70 0-P 0.0113 0.0224 Klima + 0.04 0.229 + 0.12 0.658 + 0.211 1.144 + 0.291 1.831 + 0.385 2.86 + 0.447 3.833 + 0.505 5.001 + 0.567 3.89 + 0.615 3.146 + 0.665 2.66 + 0.735 2.203 + 0.815 2.088 + 0.93 1.98 + 4.589 1.96 + 4.729 1.888 + 4.815 1.602 + 4.873 1.259 + 4.969 0.658 + 5.083 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/manual/Klima_C6.eng b/core/resources-src/datafiles/thrustcurves/manual/Klima_C6.eng new file mode 100644 index 000000000..654ca2f94 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/manual/Klima_C6.eng @@ -0,0 +1,21 @@ +; Raketenmodellbau Klima GmbH +; Official manufacturer thrust data - C6 +; Created by Leo Nutz for OpenRocket, +; released into the Public Domain (3/2014) +C6 18 70 0-3-5-7-P 0.0096 0.0205 Klima + 0.046 0.953 + 0.168 5.259 + 0.235 10.023 + 0.291 15.00 + 0.418 9.87 + 0.505 7.546 + 0.582 6.631 + 0.679 6.136 + 0.786 5.716 + 1.26 5.678 + 1.357 5.488 + 1.423 4.992 + 1.469 4.116 + 1.618 1.22 + 1.701 0.0 + diff --git a/core/resources-src/datafiles/thrustcurves/manual/Klima_D3.eng b/core/resources-src/datafiles/thrustcurves/manual/Klima_D3.eng new file mode 100644 index 000000000..b2cd09dfa --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/manual/Klima_D3.eng @@ -0,0 +1,28 @@ +; Raketenmodellbau Klima GmbH +; Official manufacturer thrust data - D3 +; Created by Leo Nutz for OpenRocket, +; released into the Public Domain (3/2014) +D3 18 70 0-P 0.017 0.0279 Klima + 0.073 0.229 + 0.178 0.686 + 0.251 1.287 + 0.313 2.203 + 0.375 3.633 + 0.425 5.006 + 0.473 6.465 + 0.556 8.181 + 0.603 9.01 + 0.655 6.922 + 0.698 5.463 + 0.782 4.291 + 0.873 3.576 + 1.024 3.146 + 1.176 2.946 + 5.282 2.918 + 5.491 2.832 + 5.59 2.517 + 5.782 1.859 + 5.924 1.287 + 6.061 0.715 + 6.17 0.286 + 6.26 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/manual/Klima_D9.eng b/core/resources-src/datafiles/thrustcurves/manual/Klima_D9.eng new file mode 100644 index 000000000..82a5f4f00 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/manual/Klima_D9.eng @@ -0,0 +1,20 @@ +; Raketenmodellbau Klima GmbH +; Official manufacturer thrust data - D9 +; Created by Leo Nutz for OpenRocket, +; released into the Public Domain (3/2014) +D9 18 70 0-3-5-7-P 0.0161 0.0271 Klima + 0.04 2.111 + 0.116 9.685 + 0.213 25.0 + 0.286 15.738 + 0.329 12.472 + 0.369 10.67 + 0.42 9.713 + 0.495 9.178 + 0.597 8.896 + 1.711 8.925 + 1.826 8.699 + 1.917 8.052 + 1.975 6.954 + 2.206 1.07 + 2.242 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/manual/README.txt b/core/resources-src/datafiles/thrustcurves/manual/README.txt index 151aeeb5b..37e0c6ece 100644 --- a/core/resources-src/datafiles/thrustcurves/manual/README.txt +++ b/core/resources-src/datafiles/thrustcurves/manual/README.txt @@ -5,7 +5,8 @@ All other thrust curves are from www.thrustcurve.org WECO_*.eng - Thrust curves for Weco Feuerwerk motors, created by Sampo N. +Klima_*.eng - Thrust curves for Klima motors, created by Leo Nutz + Loki_J175.rse - Corrected motor type from hybrid to reloadable -at130702.eng - preliminary thrustcurve for new AT C3 -at130721.eng - preliminary thrustcurve for new AT D2 \ No newline at end of file +CTI F31 - Correct diameter to 29mm diff --git a/core/resources-src/datafiles/thrustcurves/manual/at130702.eng b/core/resources-src/datafiles/thrustcurves/manual/at130702.eng deleted file mode 100644 index 095ea4026..000000000 --- a/core/resources-src/datafiles/thrustcurves/manual/at130702.eng +++ /dev/null @@ -1,35 +0,0 @@ -; @File: at130702.asc, @Pts-I: 130, @Pts-O: 31, @Sm: 0, @CO: 5% -; @TI: 8.95946, @TIa: 8.94558, @TIe: +0.07%, @ThMax: 8.26822, @ThAvg: 3.00451, @Tb: 2.982 -; Exported using ThrustCurveTool, www.ThrustGear.com -C3 18 70 P 0.0052 0.0211 AT - 0.024 0.121145 - 0.048 2.25634 - 0.072 6.61759 - 0.096 7.48075 - 0.12 8.11675 - 0.168 8.26822 - 0.288 7.61706 - 0.336 7.25359 - 0.36 6.84475 - 0.528 5.58781 - 0.6 5.17897 - 0.696 4.24012 - 0.72 4.11897 - 0.792 3.2255 - 0.864 2.57434 - 0.912 2.33203 - 1.176 2.01403 - 1.6559 2.02918 - 1.7999 1.908027 - 1.9199 1.968656 - 1.9439 1.862656 - 1.9679 1.968656 - 2.0879 1.968656 - 2.3999 1.802028 - 2.7359 1.908027 - 2.7839 1.756656 - 2.8079 1.847499 - 2.9279 1.544557 - 2.9759 0.802587 - 3.0239 0.287715 - 3.0959 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/manual/at130721.eng b/core/resources-src/datafiles/thrustcurves/manual/at130721.eng deleted file mode 100644 index e50f8b645..000000000 --- a/core/resources-src/datafiles/thrustcurves/manual/at130721.eng +++ /dev/null @@ -1,35 +0,0 @@ -; @File: at130721.asc, @Pts-I: 538, @Pts-O: 31, @Sm: 0, @CO: 5% -; @TI: 17.10047, @TIa: 17.06124, @TIe: +0.05%, @ThMax: 8.3068, @ThAvg: 2.05042, @Tb: 8.34 -; Exported using ThrustCurveTool, www.ThrustGear.com -D2 18 70 P 0.0107 0.0266 AT - 0.016 0.0453094 - 0.064 6.90221 - 0.08 7.73285 - 0.096 7.80834 - 0.112 8.2161 - 0.144 8.3068 - 0.16 8.0349 - 0.176 8.24634 - 0.192 8.00466 - 0.24 7.98954 - 0.48 6.41886 - 0.736 4.00232 - 0.784 3.20191 - 0.864 2.47688 - 1.024 2.12959 - 1.6159 2.03889 - 1.7439 1.827447 - 1.8719 1.872798 - 1.8879 2.08424 - 1.9359 1.827447 - 2.0639 1.933167 - 2.0959 1.751961 - 2.2879 1.721727 - 2.3199 1.872798 - 2.7999 1.661358 - 2.9439 1.827447 - 3.0559 1.676475 - 4.4638 1.70671 - 8.1437 1.162992 - 8.3677 0.362474 - 8.5916 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/00INDEX.txt b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/00INDEX.txt index 434e6bb06..c27bc24cb 100644 --- a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/00INDEX.txt +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/00INDEX.txt @@ -1,5 +1,5 @@ Rocket motor simulation data downloaded from ThrustCurve.org. -This ZIP file contains 1600 simulator data files. +This ZIP file contains 1645 simulator data files. For more info, please see http://www.thrustcurve.org/ AMW_I195.eng @@ -30,6 +30,20 @@ AMW_I220.rse Data Source: user Contributor: John Coker +AMW_I223.eng + Manufacturer: Animal Motor Works + Designation: 434I223-14A + Data Format: RASP + Data Source: cert + Contributor: Andre Choquette + +AMW_I223.rse + Manufacturer: Animal Motor Works + Designation: 434I223-14A + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + AMW_I271.eng Manufacturer: Animal Motor Works Designation: BB-38-390 @@ -58,6 +72,20 @@ AMW_I285.rse Data Source: user Contributor: John Coker +AMW_I297.eng + Manufacturer: Animal Motor Works + Designation: 543I297-15A + Data Format: RASP + Data Source: cert + Contributor: Andre Choquette + +AMW_I297.rse + Manufacturer: Animal Motor Works + Designation: 543I297-15A + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + AMW_I315.eng Manufacturer: Animal Motor Works Designation: SK-38-640 @@ -100,6 +128,13 @@ AMW_I375.rse Data Source: user Contributor: John Coker +AMW_J1365.rse + Manufacturer: Animal Motor Works + Designation: 932J1365-P + Data Format: RockSim + Data Source: user + Contributor: John Coker + AMW_J230.eng Manufacturer: Animal Motor Works Designation: J230SK-P @@ -114,6 +149,13 @@ AMW_J230.rse Data Source: user Contributor: John Coker +AMW_J325.rse + Manufacturer: Animal Motor Works + Designation: 1099J325-P + Data Format: RockSim + Data Source: user + Contributor: John Coker + AMW_J357.eng Manufacturer: Animal Motor Works Designation: WT-54-1050 @@ -156,6 +198,13 @@ AMW_J370.rse Data Source: user Contributor: John Coker +AMW_J395.rse + Manufacturer: Animal Motor Works + Designation: 1079J395-P + Data Format: RockSim + Data Source: user + Contributor: John Coker + AMW_J400.eng Manufacturer: Animal Motor Works Designation: RR-54-1050 @@ -164,6 +213,13 @@ AMW_J400.eng Contributor: John Coker AMW_J400.rse + Manufacturer: Animal Motor Works + Designation: 977J400-P + Data Format: RockSim + Data Source: user + Contributor: John Coker + +AMW_J400_1.rse Manufacturer: Animal Motor Works Designation: RR-54-1050 Data Format: RockSim @@ -171,13 +227,27 @@ AMW_J400.rse Contributor: John Coker AMW_J440.eng + Manufacturer: Animal Motor Works + Designation: 1109J440-P + Data Format: RASP + Data Source: cert + Contributor: Len Bryan + +AMW_J440.rse + Manufacturer: Animal Motor Works + Designation: 1109J440-P + Data Format: RockSim + Data Source: cert + Contributor: Len Bryan + +AMW_J440_1.eng Manufacturer: Animal Motor Works Designation: BB-38-640 Data Format: RASP Data Source: user Contributor: Robert DeHate -AMW_J440.rse +AMW_J440_1.rse Manufacturer: Animal Motor Works Designation: BB-38-640 Data Format: RockSim @@ -205,6 +275,27 @@ AMW_J450_1.eng Data Source: cert Contributor: Carl Tulanko +AMW_J475.eng + Manufacturer: Animal Motor Works + Designation: 1233J475-P + Data Format: RASP + Data Source: cert + Contributor: Len Bryan + +AMW_J475.rse + Manufacturer: Animal Motor Works + Designation: 1233J475-P + Data Format: RockSim + Data Source: cert + Contributor: Len Bryan + +AMW_J475_1.rse + Manufacturer: Animal Motor Works + Designation: 1025J475-P + Data Format: RockSim + Data Source: user + Contributor: John Coker + AMW_J480.eng Manufacturer: Animal Motor Works Designation: BB-54-1050 @@ -233,6 +324,13 @@ AMW_J500.rse Data Source: user Contributor: John Coker +AMW_J745.rse + Manufacturer: Animal Motor Works + Designation: 1196J745-P + Data Format: RockSim + Data Source: user + Contributor: John Coker + AMW_K1000.eng Manufacturer: Animal Motor Works Designation: SK-54-2550 @@ -248,19 +346,68 @@ AMW_K1000.rse Contributor: John Coker AMW_K1075.eng + Manufacturer: Animal Motor Works + Designation: 2245K1075-P + Data Format: RASP + Data Source: cert + Contributor: Len Bryan + +AMW_K1075.rse + Manufacturer: Animal Motor Works + Designation: 2245K1075-P + Data Format: RockSim + Data Source: cert + Contributor: Len Bryan + +AMW_K1075_1.eng Manufacturer: Animal Motor Works Designation: GG-54-2550 Data Format: RASP Data Source: user Contributor: John Coker -AMW_K1075.rse +AMW_K1075_1.rse Manufacturer: Animal Motor Works Designation: GG-54-2550 Data Format: RockSim Data Source: user Contributor: John Coker +AMW_K1130.eng + Manufacturer: Animal Motor Works + Designation: 2551K1130-P + Data Format: RASP + Data Source: cert + Contributor: Len Bryan + +AMW_K1130.rse + Manufacturer: Animal Motor Works + Designation: 2551K1130-P + Data Format: RockSim + Data Source: cert + Contributor: Len Bryan + +AMW_K1250.eng + Manufacturer: Animal Motor Works + Designation: 1951K1250-P + Data Format: RASP + Data Source: cert + Contributor: Len Bryan + +AMW_K1250.rse + Manufacturer: Animal Motor Works + Designation: 1951K1250-P + Data Format: RockSim + Data Source: cert + Contributor: Len Bryan + +AMW_K1720.rse + Manufacturer: Animal Motor Works + Designation: 1176K1720-P + Data Format: RockSim + Data Source: user + Contributor: John Coker + AMW_K365.eng Manufacturer: Animal Motor Works Designation: RR-75-1700 @@ -289,6 +436,13 @@ AMW_K450.rse Data Source: user Contributor: John Coker +AMW_K455.rse + Manufacturer: Animal Motor Works + Designation: 1483K455-P + Data Format: RockSim + Data Source: user + Contributor: John Coker + AMW_K470.eng Manufacturer: Animal Motor Works Designation: ST-75-1700 @@ -345,6 +499,13 @@ AMW_K530.rse Data Source: user Contributor: John Coker +AMW_K535.rse + Manufacturer: Animal Motor Works + Designation: 1422K535-P + Data Format: RockSim + Data Source: user + Contributor: John Coker + AMW_K555.eng Manufacturer: Animal Motor Works Designation: SK-54-1750 @@ -387,6 +548,13 @@ AMW_K570.rse Data Source: user Contributor: John Coker +AMW_K580.eng + Manufacturer: Animal Motor Works + Designation: 1852K580-P + Data Format: RASP + Data Source: user + Contributor: Jesus Manuel Recuenco + AMW_K600.eng Manufacturer: Animal Motor Works Designation: WT-75-2500 @@ -422,6 +590,20 @@ AMW_K605.rse Data Source: user Contributor: John Coker +AMW_K610.eng + Manufacturer: Animal Motor Works + Designation: 1531K610-P + Data Format: RASP + Data Source: cert + Contributor: Len Bryan + +AMW_K610.rse + Manufacturer: Animal Motor Works + Designation: 1531K610-P + Data Format: RockSim + Data Source: cert + Contributor: Len Bryan + AMW_K650.eng Manufacturer: Animal Motor Works Designation: RR-54-1750 @@ -436,6 +618,13 @@ AMW_K650.rse Data Source: user Contributor: John Coker +AMW_K665.rse + Manufacturer: Animal Motor Works + Designation: 1379K665-P + Data Format: RockSim + Data Source: user + Contributor: John Coker + AMW_K670.eng Manufacturer: Animal Motor Works Designation: GG-54-1750 @@ -445,7 +634,7 @@ AMW_K670.eng AMW_K670.rse Manufacturer: Animal Motor Works - Designation: GG-54-1750 + Designation: 1806K670-P Data Format: RockSim Data Source: user Contributor: John Coker @@ -457,6 +646,13 @@ AMW_K670_1.eng Data Source: cert Contributor: Carl Tulanko +AMW_K670_1.rse + Manufacturer: Animal Motor Works + Designation: GG-54-1750 + Data Format: RockSim + Data Source: user + Contributor: John Coker + AMW_K700.eng Manufacturer: Animal Motor Works Designation: BB-54-1400 @@ -465,12 +661,33 @@ AMW_K700.eng Contributor: John Coker AMW_K700.rse + Manufacturer: Animal Motor Works + Designation: 1660K700-P + Data Format: RockSim + Data Source: user + Contributor: John Coker + +AMW_K700_1.rse Manufacturer: Animal Motor Works Designation: BB-54-1400 Data Format: RockSim Data Source: user Contributor: John Coker +AMW_K710.eng + Manufacturer: Animal Motor Works + Designation: 1791K710-P + Data Format: RASP + Data Source: cert + Contributor: Len Bryan + +AMW_K710.rse + Manufacturer: Animal Motor Works + Designation: 1791K710-P + Data Format: RockSim + Data Source: cert + Contributor: Len Bryan + AMW_K800.eng Manufacturer: Animal Motor Works Designation: BB-54-1750 @@ -485,6 +702,20 @@ AMW_K800.rse Data Source: user Contributor: John Coker +AMW_K855.rse + Manufacturer: Animal Motor Works + Designation: 1725K855-P + Data Format: RockSim + Data Source: user + Contributor: John Coker + +AMW_K935.eng + Manufacturer: Animal Motor Works + Designation: 1581K935-P + Data Format: RASP + Data Source: user + Contributor: Jesus Manuel Recuenco + AMW_K950.eng Manufacturer: Animal Motor Works Designation: ST-54-1750 @@ -583,6 +814,34 @@ AMW_L1111.rse Data Source: user Contributor: John Coker +AMW_L1276.eng + Manufacturer: Animal Motor Works + Designation: 2730L1276-P + Data Format: RASP + Data Source: cert + Contributor: Andre Choquette + +AMW_L1276.rse + Manufacturer: Animal Motor Works + Designation: 2730L1276-P + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + +AMW_L1290.eng + Manufacturer: Animal Motor Works + Designation: 4701L1290-P + Data Format: RASP + Data Source: cert + Contributor: Andre Choquette + +AMW_L1290.rse + Manufacturer: Animal Motor Works + Designation: 4701L1290-P + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + AMW_L1300.eng Manufacturer: Animal Motor Works Designation: BB-54-2550 @@ -674,6 +933,13 @@ AMW_L900.rse Data Source: user Contributor: John Coker +AMW_L985.rse + Manufacturer: Animal Motor Works + Designation: 2665L985-P + Data Format: RockSim + Data Source: user + Contributor: John Coker + AMW_M1350.eng Manufacturer: Animal Motor Works Designation: WT-75-6000 @@ -702,6 +968,20 @@ AMW_M1480.rse Data Source: user Contributor: John Coker +AMW_M1630.eng + Manufacturer: Animal Motor Works + Designation: 8212M1630-P + Data Format: RASP + Data Source: cert + Contributor: Andre Choquette + +AMW_M1630.rse + Manufacturer: Animal Motor Works + Designation: 8212M1630-P + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + AMW_M1730.eng Manufacturer: Animal Motor Works Designation: SK-98-11000 @@ -751,6 +1031,20 @@ AMW_M1900.rse Data Source: user Contributor: John Coker +AMW_M2050.eng + Manufacturer: Animal Motor Works + Designation: 6774M2050-P + Data Format: RASP + Data Source: cert + Contributor: Andre Choquette + +AMW_M2050.rse + Manufacturer: Animal Motor Works + Designation: 6774M2050-P + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + AMW_M2200.rse Manufacturer: Animal Motor Works Designation: SK-75-7600 @@ -856,93 +1150,107 @@ AMW_N4000.rse Data Source: user Contributor: John Coker +AeroTech_C3.eng + Manufacturer: AeroTech + Designation: C3.4T + Data Format: RASP + Data Source: cert + Contributor: John Coker + AeroTech_D10.eng Manufacturer: AeroTech - Designation: D10 + Designation: D10W Data Format: RASP Data Source: cert Contributor: Mark Koelsch AeroTech_D13.eng Manufacturer: AeroTech - Designation: D13 + Designation: D13W Data Format: RASP Data Source: cert Contributor: Christopher Kobel AeroTech_D13.rse Manufacturer: AeroTech - Designation: D13 + Designation: D13W Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_D15.eng Manufacturer: AeroTech - Designation: D15 + Designation: D15T Data Format: RASP Data Source: cert Contributor: Christopher Kobel AeroTech_D15.rse Manufacturer: AeroTech - Designation: D15 + Designation: D15T Data Format: RockSim Data Source: user Contributor: John Coker +AeroTech_D2.eng + Manufacturer: AeroTech + Designation: D2.3T + Data Format: RASP + Data Source: cert + Contributor: John Coker + AeroTech_D21.eng Manufacturer: AeroTech - Designation: D21 + Designation: D21T Data Format: RASP Data Source: cert Contributor: Christopher Kobel AeroTech_D21.rse Manufacturer: AeroTech - Designation: D21 + Designation: D21T Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_D24.eng Manufacturer: AeroTech - Designation: D24 + Designation: D24T Data Format: RASP Data Source: user Contributor: Stan Hemphill AeroTech_D24.rse Manufacturer: AeroTech - Designation: D24 + Designation: D24T Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_D7.eng Manufacturer: AeroTech - Designation: D7 + Designation: D7-RCT Data Format: RASP Data Source: user Contributor: John Coker AeroTech_D7.rse Manufacturer: AeroTech - Designation: D7 + Designation: D7-RCT Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_D9.eng Manufacturer: AeroTech - Designation: D9 + Designation: D9W Data Format: RASP Data Source: cert Contributor: Christopher Kobel AeroTech_D9.rse Manufacturer: AeroTech - Designation: D9 + Designation: D9W Data Format: RockSim Data Source: user Contributor: John Coker @@ -963,63 +1271,63 @@ AeroTech_E11.rse AeroTech_E12.eng Manufacturer: AeroTech - Designation: E12J + Designation: E12-RCJ Data Format: RASP Data Source: user Contributor: John Coker AeroTech_E12.rse Manufacturer: AeroTech - Designation: E12J + Designation: E12-RCJ Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_E15.eng Manufacturer: AeroTech - Designation: E15 + Designation: E15W Data Format: RASP Data Source: cert Contributor: Mark Koelsch AeroTech_E15.rse Manufacturer: AeroTech - Designation: E15 + Designation: E15W Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_E15_1.eng Manufacturer: AeroTech - Designation: E15 + Designation: E15W Data Format: RASP Data Source: cert Contributor: Christopher Kobel AeroTech_E16.eng Manufacturer: AeroTech - Designation: E16 + Designation: E16W Data Format: RASP Data Source: cert Contributor: Christopher Kobel AeroTech_E16.rse Manufacturer: AeroTech - Designation: E16 + Designation: E16W Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_E18.eng Manufacturer: AeroTech - Designation: E18 + Designation: E18W Data Format: RASP Data Source: cert Contributor: Christopher Kobel AeroTech_E18.rse Manufacturer: AeroTech - Designation: E18 + Designation: E18W Data Format: RockSim Data Source: user Contributor: John Coker @@ -1033,42 +1341,42 @@ AeroTech_E20.eng AeroTech_E23.eng Manufacturer: AeroTech - Designation: E23 + Designation: E23T Data Format: RASP Data Source: cert Contributor: Christopher Kobel AeroTech_E23.rse Manufacturer: AeroTech - Designation: E23 + Designation: E23T Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_E28.eng Manufacturer: AeroTech - Designation: E28 + Designation: E28T Data Format: RASP Data Source: cert Contributor: Christopher Kobel AeroTech_E28.rse Manufacturer: AeroTech - Designation: E28 + Designation: E28T Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_E30.eng Manufacturer: AeroTech - Designation: E30 + Designation: E30T Data Format: RASP Data Source: cert Contributor: Christopher Kobel AeroTech_E30.rse Manufacturer: AeroTech - Designation: E30 + Designation: E30T Data Format: RockSim Data Source: user Contributor: John Coker @@ -1082,21 +1390,21 @@ AeroTech_E6.eng AeroTech_E6.rse Manufacturer: AeroTech - Designation: E6-RC + Designation: E6-RCT Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_E7.eng Manufacturer: AeroTech - Designation: E7 + Designation: E7-RCT Data Format: RASP Data Source: user Contributor: John Coker AeroTech_E7.rse Manufacturer: AeroTech - Designation: E7 + Designation: E7-RCT Data Format: RockSim Data Source: user Contributor: John Coker @@ -1110,60 +1418,67 @@ AeroTech_F10.eng AeroTech_F12.eng Manufacturer: AeroTech - Designation: F12 + Designation: F12J Data Format: RASP Data Source: cert Contributor: Christopher Kobel AeroTech_F12.rse Manufacturer: AeroTech - Designation: F12 + Designation: F12J Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_F13.eng Manufacturer: AeroTech - Designation: F13-RC + Designation: F13-RCT Data Format: RASP Data Source: user Contributor: John Coker AeroTech_F13.rse Manufacturer: AeroTech - Designation: F13-RC + Designation: F13-RCT Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_F16.eng Manufacturer: AeroTech - Designation: F16-RC + Designation: F16-RCJ Data Format: RASP Data Source: user Contributor: John Coker AeroTech_F16.rse Manufacturer: AeroTech - Designation: F16-RC + Designation: F16-RCJ Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_F20.eng Manufacturer: AeroTech - Designation: F20 + Designation: F20W/L Data Format: RASP - Data Source: user + Data Source: cert Contributor: John Coker AeroTech_F20.rse Manufacturer: AeroTech - Designation: F20 + Designation: F20W/L Data Format: RockSim Data Source: user Contributor: John Coker +AeroTech_F20_1.eng + Manufacturer: AeroTech + Designation: F20W/L + Data Format: RASP + Data Source: user + Contributor: John Coker + AeroTech_F21.eng Manufacturer: AeroTech Designation: F21W @@ -1180,56 +1495,56 @@ AeroTech_F21.rse AeroTech_F22.eng Manufacturer: AeroTech - Designation: F22 + Designation: F22J Data Format: RASP Data Source: user Contributor: John Coker AeroTech_F22.rse Manufacturer: AeroTech - Designation: F22 + Designation: F22J Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_F23.eng Manufacturer: AeroTech - Designation: F23FJ + Designation: F23FJ/L Data Format: RASP Data Source: user Contributor: John Coker AeroTech_F23.rse Manufacturer: AeroTech - Designation: F23FJ + Designation: F23FJ/L Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_F23_1.eng Manufacturer: AeroTech - Designation: F23-RC-SK + Designation: F23-RCW-SK Data Format: RASP Data Source: user Contributor: John Coker AeroTech_F23_1.rse Manufacturer: AeroTech - Designation: F23-RC-SK + Designation: F23-RCW-SK Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_F24.eng Manufacturer: AeroTech - Designation: F24 + Designation: F24W Data Format: RASP Data Source: cert Contributor: Christopher Kobel AeroTech_F24.rse Manufacturer: AeroTech - Designation: F24 + Designation: F24W Data Format: RockSim Data Source: user Contributor: John Coker @@ -1264,7 +1579,7 @@ AeroTech_F26.rse AeroTech_F27.eng Manufacturer: AeroTech - Designation: F27R + Designation: F27R/L Data Format: RASP Data Source: user Contributor: John Coker @@ -1313,84 +1628,91 @@ AeroTech_F35.eng AeroTech_F37.eng Manufacturer: AeroTech - Designation: F37 + Designation: F37W Data Format: RASP Data Source: user Contributor: John Coker AeroTech_F37.rse Manufacturer: AeroTech - Designation: F37 + Designation: F37W Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_F39.eng Manufacturer: AeroTech - Designation: F39 + Designation: F39T Data Format: RASP Data Source: cert Contributor: Christopher Kobel AeroTech_F39.rse Manufacturer: AeroTech - Designation: F39 + Designation: F39T Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_F40.eng Manufacturer: AeroTech - Designation: F40 + Designation: F40W Data Format: RASP Data Source: user Contributor: John Coker AeroTech_F40.rse Manufacturer: AeroTech - Designation: F40 + Designation: F40W Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_F42.eng Manufacturer: AeroTech - Designation: F42T + Designation: F42T/L Data Format: RASP Data Source: user Contributor: John Coker AeroTech_F42.rse Manufacturer: AeroTech - Designation: F42T + Designation: F42T/L Data Format: RockSim Data Source: user Contributor: John Coker +AeroTech_F44.eng + Manufacturer: AeroTech + Designation: F44W + Data Format: RASP + Data Source: mfr + Contributor: Mark Koelsch + AeroTech_F50.eng Manufacturer: AeroTech - Designation: F50 + Designation: F50T Data Format: RASP Data Source: user Contributor: John Coker AeroTech_F50.rse Manufacturer: AeroTech - Designation: F50 + Designation: F50T Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_F52.eng Manufacturer: AeroTech - Designation: F52 + Designation: F52T Data Format: RASP Data Source: user Contributor: John Coker AeroTech_F52.rse Manufacturer: AeroTech - Designation: F52 + Designation: F52T Data Format: RockSim Data Source: user Contributor: John Coker @@ -1446,14 +1768,14 @@ AeroTech_G104.rse AeroTech_G12.eng Manufacturer: AeroTech - Designation: G12-RC + Designation: G12-RCT Data Format: RASP Data Source: user Contributor: John Coker AeroTech_G12.rse Manufacturer: AeroTech - Designation: G12-RC + Designation: G12-RCT Data Format: RockSim Data Source: user Contributor: John Coker @@ -1467,35 +1789,35 @@ AeroTech_G125.eng AeroTech_G138.eng Manufacturer: AeroTech - Designation: G138T + Designation: HP-G138T Data Format: RASP Data Source: user Contributor: Scott Sager AeroTech_G142.eng Manufacturer: AeroTech - Designation: G142 + Designation: G142T Data Format: RASP Data Source: cert Contributor: John Coker AeroTech_G25.eng Manufacturer: AeroTech - Designation: G25 + Designation: G25W Data Format: RASP Data Source: cert Contributor: Mark Koelsch AeroTech_G25.rse Manufacturer: AeroTech - Designation: G25 + Designation: G25W Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_G25_1.eng Manufacturer: AeroTech - Designation: G25 + Designation: G25W Data Format: RASP Data Source: user Contributor: John Coker @@ -1516,14 +1838,14 @@ AeroTech_G33.rse AeroTech_G339.eng Manufacturer: AeroTech - Designation: G339N-P + Designation: G339N Data Format: RASP Data Source: cert Contributor: Bill Wagstaff AeroTech_G339.rse Manufacturer: AeroTech - Designation: G339N-P + Designation: G339N Data Format: RockSim Data Source: user Contributor: John Coker @@ -1586,14 +1908,14 @@ AeroTech_G53.rse AeroTech_G54.eng Manufacturer: AeroTech - Designation: G54 + Designation: G54W Data Format: RASP Data Source: user Contributor: John Coker AeroTech_G54.rse Manufacturer: AeroTech - Designation: G54 + Designation: G54W Data Format: RockSim Data Source: user Contributor: John Coker @@ -1628,18 +1950,11 @@ AeroTech_G61.rse AeroTech_G64.eng Manufacturer: AeroTech - Designation: G64 + Designation: G64W Data Format: RASP Data Source: user Contributor: John Coker -AeroTech_G64.rse - Manufacturer: AeroTech - Designation: G64 - Data Format: RockSim - Data Source: user - Contributor: John Coker - AeroTech_G67.eng Manufacturer: AeroTech Designation: G67R @@ -1689,6 +2004,13 @@ AeroTech_G71_1.eng Data Source: mfr Contributor: Edward K. Chess +AeroTech_G74.eng + Manufacturer: AeroTech + Designation: G74W + Data Format: RASP + Data Source: mfr + Contributor: Mark Koelsch + AeroTech_G75.eng Manufacturer: AeroTech Designation: G75J @@ -1698,7 +2020,7 @@ AeroTech_G75.eng AeroTech_G75.rse Manufacturer: AeroTech - Designation: G75M + Designation: HP-G75M Data Format: RockSim Data Source: mfr Contributor: Mark Koelsch @@ -1740,7 +2062,7 @@ AeroTech_G76_1.eng AeroTech_G77.eng Manufacturer: AeroTech - Designation: G77R-SU + Designation: G77R/L Data Format: RASP Data Source: user Contributor: John Coker @@ -1761,21 +2083,21 @@ AeroTech_G77_1.eng AeroTech_G78.eng Manufacturer: AeroTech - Designation: G78G + Designation: G78G/L Data Format: RASP Data Source: cert Contributor: John Coker AeroTech_G78_1.eng Manufacturer: AeroTech - Designation: G78G + Designation: G78G/L Data Format: RASP Data Source: cert Contributor: John Coker AeroTech_G79.eng Manufacturer: AeroTech - Designation: G79W-SU + Designation: G79W/L Data Format: RASP Data Source: cert Contributor: John Coker @@ -1796,35 +2118,35 @@ AeroTech_G79_1.eng AeroTech_G80.eng Manufacturer: AeroTech - Designation: G80NT-10A + Designation: G80T Data Format: RASP Data Source: cert Contributor: John Coker AeroTech_G80.rse Manufacturer: AeroTech - Designation: G80NT-10A + Designation: G80T Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_G80_1.eng Manufacturer: AeroTech - Designation: G80NT-10A + Designation: G80T Data Format: RASP Data Source: cert Contributor: John DeMar AeroTech_G80_2.eng Manufacturer: AeroTech - Designation: G80NT-10A + Designation: G80T Data Format: RASP Data Source: cert Contributor: John DeMar AeroTech_G80_3.eng Manufacturer: AeroTech - Designation: G80NT-10A + Designation: G80T Data Format: RASP Data Source: cert Contributor: John DeMar @@ -1845,7 +2167,7 @@ AeroTech_H112.rse AeroTech_H115.eng Manufacturer: AeroTech - Designation: H115DM + Designation: HP-H115DM Data Format: RASP Data Source: cert Contributor: Mark Koelsch @@ -1894,7 +2216,7 @@ AeroTech_H128.rse AeroTech_H135.eng Manufacturer: AeroTech - Designation: H135W + Designation: HP-H135W Data Format: RASP Data Source: cert Contributor: Robert Belknap @@ -1936,7 +2258,7 @@ AeroTech_H170.rse AeroTech_H178.eng Manufacturer: AeroTech - Designation: H178DM-14A + Designation: H178DM Data Format: RASP Data Source: mfr Contributor: Mark Koelsch @@ -1955,9 +2277,16 @@ AeroTech_H180.rse Data Source: user Contributor: John Coker +AeroTech_H182.eng + Manufacturer: AeroTech + Designation: HP-H182R + Data Format: RASP + Data Source: user + Contributor: Mike Caplinger + AeroTech_H195.eng Manufacturer: AeroTech - Designation: H195NT-10A + Designation: HP-H195NT Data Format: RASP Data Source: cert Contributor: John Coker @@ -2055,10 +2384,10 @@ AeroTech_H268.rse AeroTech_H45.eng Manufacturer: AeroTech - Designation: H45W + Designation: HP-H45W Data Format: RASP - Data Source: cert - Contributor: John Coker + Data Source: user + Contributor: Mike Caplinger AeroTech_H45.rse Manufacturer: AeroTech @@ -2067,6 +2396,13 @@ AeroTech_H45.rse Data Source: user Contributor: John Coker +AeroTech_H45_1.eng + Manufacturer: AeroTech + Designation: H45W + Data Format: RASP + Data Source: cert + Contributor: John Coker + AeroTech_H55.eng Manufacturer: AeroTech Designation: H55W @@ -2081,16 +2417,23 @@ AeroTech_H55.rse Data Source: user Contributor: John Coker +AeroTech_H550.eng + Manufacturer: AeroTech + Designation: HP-H550ST + Data Format: RASP + Data Source: cert + Contributor: Mark Koelsch + AeroTech_H669.eng Manufacturer: AeroTech - Designation: H669N-P + Designation: H669N Data Format: RASP Data Source: user Contributor: Greg Gardner AeroTech_H669.rse Manufacturer: AeroTech - Designation: H669N-P + Designation: H669N Data Format: RockSim Data Source: user Contributor: John Coker @@ -2139,14 +2482,14 @@ AeroTech_H97.rse AeroTech_H999.eng Manufacturer: AeroTech - Designation: H999 + Designation: H999N Data Format: RASP Data Source: user Contributor: Greg Gardner AeroTech_H999.rse Manufacturer: AeroTech - Designation: H999 + Designation: H999N Data Format: RockSim Data Source: user Contributor: John Coker @@ -2167,14 +2510,14 @@ AeroTech_I117.eng AeroTech_I1299.eng Manufacturer: AeroTech - Designation: I1299N-P + Designation: I1299N Data Format: RASP Data Source: user Contributor: Jim Yehle AeroTech_I1299.rse Manufacturer: AeroTech - Designation: I1299N-P + Designation: I1299N Data Format: RockSim Data Source: user Contributor: Jim Yehle @@ -2195,7 +2538,7 @@ AeroTech_I132.rse AeroTech_I140.eng Manufacturer: AeroTech - Designation: I140W + Designation: HP-I140W Data Format: RASP Data Source: mfr Contributor: Mark Koelsch @@ -2270,6 +2613,13 @@ AeroTech_I200.rse Data Source: user Contributor: John Coker +AeroTech_I205.eng + Manufacturer: AeroTech + Designation: HP-I205W + Data Format: RASP + Data Source: user + Contributor: Mike Caplinger + AeroTech_I211.eng Manufacturer: AeroTech Designation: I211W @@ -2342,7 +2692,7 @@ AeroTech_I245.rse AeroTech_I280.eng Manufacturer: AeroTech - Designation: I280DM + Designation: HP-I280DM Data Format: RASP Data Source: mfr Contributor: Mark Koelsch @@ -2503,7 +2853,7 @@ AeroTech_I49.rse AeroTech_I500.eng Manufacturer: AeroTech - Designation: I500T + Designation: HP-I500T Data Format: RASP Data Source: cert Contributor: Mark Koelsch @@ -2545,10 +2895,10 @@ AeroTech_I600.rse AeroTech_I65.eng Manufacturer: AeroTech - Designation: I65W + Designation: HP-I65W Data Format: RASP - Data Source: cert - Contributor: John Coker + Data Source: user + Contributor: Mike Caplinger AeroTech_I65.rse Manufacturer: AeroTech @@ -2557,6 +2907,13 @@ AeroTech_I65.rse Data Source: user Contributor: John Coker +AeroTech_I65_1.eng + Manufacturer: AeroTech + Designation: I65W + Data Format: RASP + Data Source: cert + Contributor: John Coker + AeroTech_J125.eng Manufacturer: AeroTech Designation: J125W @@ -2573,14 +2930,14 @@ AeroTech_J125.rse AeroTech_J1299.eng Manufacturer: AeroTech - Designation: J1299N-P + Designation: J1299N Data Format: RASP Data Source: user Contributor: Greg Gardner AeroTech_J1299.rse Manufacturer: AeroTech - Designation: J1299N-P + Designation: J1299N Data Format: RockSim Data Source: user Contributor: John Coker @@ -2613,6 +2970,27 @@ AeroTech_J145.rse Data Source: user Contributor: John Coker +AeroTech_J170.eng + Manufacturer: AeroTech + Designation: J170H 3-jet std. + Data Format: RASP + Data Source: user + Contributor: Jesus Manuel Recuenco + +AeroTech_J1799.eng + Manufacturer: AeroTech + Designation: J1799N + Data Format: RASP + Data Source: user + Contributor: Greg Gardner + +AeroTech_J1799.rse + Manufacturer: AeroTech + Designation: J1799N + Data Format: RockSim + Data Source: user + Contributor: John Coker + AeroTech_J180.eng Manufacturer: AeroTech Designation: J180T @@ -2627,20 +3005,6 @@ AeroTech_J180.rse Data Source: user Contributor: John Coker -AeroTech_J1999.eng - Manufacturer: AeroTech - Designation: J1999N-P - Data Format: RASP - Data Source: user - Contributor: Greg Gardner - -AeroTech_J1999.rse - Manufacturer: AeroTech - Designation: J1999N-P - Data Format: RockSim - Data Source: user - Contributor: John Coker - AeroTech_J210.eng Manufacturer: AeroTech Designation: J210H 4-jet std. @@ -2678,7 +3042,7 @@ AeroTech_J260.rse AeroTech_J270.eng Manufacturer: AeroTech - Designation: J270W + Designation: HP-J270W Data Format: RASP Data Source: mfr Contributor: Mark Koelsch @@ -2720,42 +3084,42 @@ AeroTech_J340.rse AeroTech_J350.eng Manufacturer: AeroTech - Designation: J350W-L + Designation: J350W Data Format: RASP Data Source: user Contributor: John Coker AeroTech_J350.rse Manufacturer: AeroTech - Designation: J350W + Designation: J350W-OLD Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_J350_1.eng Manufacturer: AeroTech - Designation: J350W + Designation: J350W-OLD Data Format: RASP Data Source: cert Contributor: John Coker AeroTech_J350_1.rse Manufacturer: AeroTech - Designation: J350W-L + Designation: J350W Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_J390.eng Manufacturer: AeroTech - Designation: J390-turbo + Designation: J390H-turbo Data Format: RASP Data Source: user Contributor: John Coker AeroTech_J390.rse Manufacturer: AeroTech - Designation: J390-turbo + Designation: J390H-turbo Data Format: RockSim Data Source: user Contributor: John Coker @@ -2795,6 +3159,13 @@ AeroTech_J420.rse Data Source: user Contributor: John Coker +AeroTech_J425.eng + Manufacturer: AeroTech + Designation: HP-J425R + Data Format: RASP + Data Source: user + Contributor: Mike Caplinger + AeroTech_J460.eng Manufacturer: AeroTech Designation: J460T @@ -2874,14 +3245,14 @@ AeroTech_J575.rse AeroTech_J800.eng Manufacturer: AeroTech - Designation: J800T-PS + Designation: J800T Data Format: RASP Data Source: cert Contributor: John Coker AeroTech_J800.rse Manufacturer: AeroTech - Designation: J800T-PS + Designation: J800T Data Format: RockSim Data Source: user Contributor: John Coker @@ -2923,14 +3294,14 @@ AeroTech_J99.eng AeroTech_K1000.eng Manufacturer: AeroTech - Designation: K1000NT + Designation: K1000T Data Format: RASP Data Source: mfr Contributor: Christopher Kobel AeroTech_K1050.eng Manufacturer: AeroTech - Designation: K1050W-P + Designation: K1050W Data Format: RASP Data Source: mfr Contributor: John Coker @@ -2972,28 +3343,28 @@ AeroTech_K1103.eng AeroTech_K1275.eng Manufacturer: AeroTech - Designation: K1275 + Designation: K1275R Data Format: RASP Data Source: cert Contributor: John Coker AeroTech_K1275.rse Manufacturer: AeroTech - Designation: K1275 + Designation: K1275R Data Format: RockSim Data Source: user Contributor: John Coker AeroTech_K1499.eng Manufacturer: AeroTech - Designation: K1499N-P + Designation: K1499N Data Format: RASP Data Source: user Contributor: Jim Yehle AeroTech_K1499.rse Manufacturer: AeroTech - Designation: K1499N-P + Designation: K1499N Data Format: RockSim Data Source: user Contributor: Jim Yehle @@ -3014,14 +3385,14 @@ AeroTech_K185.rse AeroTech_K1999.eng Manufacturer: AeroTech - Designation: K1999N-P + Designation: K1999N Data Format: RASP Data Source: mfr Contributor: Christopher Kobel AeroTech_K1999.rse Manufacturer: AeroTech - Designation: K1999N-P + Designation: K1999N Data Format: RockSim Data Source: user Contributor: John Coker @@ -3056,14 +3427,14 @@ AeroTech_K270.rse AeroTech_K375.eng Manufacturer: AeroTech - Designation: K375NW-PS + Designation: K375NW Data Format: RASP Data Source: user Contributor: Christopher Kobel AeroTech_K375.rse Manufacturer: AeroTech - Designation: K375NW-PS + Designation: K375NW Data Format: RockSim Data Source: user Contributor: Robert Geer @@ -3091,7 +3462,7 @@ AeroTech_K458.rse AeroTech_K480.eng Manufacturer: AeroTech - Designation: K480W-PS + Designation: K480W Data Format: RASP Data Source: mfr Contributor: Christopher Kobel @@ -3117,6 +3488,13 @@ AeroTech_K513.eng Data Source: user Contributor: John Coker +AeroTech_K535.eng + Manufacturer: AeroTech + Designation: HP-K535W + Data Format: RASP + Data Source: user + Contributor: Mike Caplinger + AeroTech_K540.rse Manufacturer: AeroTech Designation: K540M @@ -3224,14 +3602,14 @@ AeroTech_K780.rse AeroTech_K805.eng Manufacturer: AeroTech - Designation: K805G-P + Designation: K805G Data Format: RASP Data Source: mfr Contributor: Tom Koszuta AeroTech_K805.rse Manufacturer: AeroTech - Designation: K805G-P + Designation: K805G Data Format: RockSim Data Source: mfr Contributor: J Brent @@ -3250,6 +3628,13 @@ AeroTech_K828.rse Data Source: cert Contributor: Victor Merle Barlow +AeroTech_L1000.eng + Manufacturer: AeroTech + Designation: HP-L1000W + Data Format: RASP + Data Source: user + Contributor: Mike Caplinger + AeroTech_L1040.eng Manufacturer: AeroTech Designation: L1040DM @@ -3287,7 +3672,7 @@ AeroTech_L1150.rse AeroTech_L1170.eng Manufacturer: AeroTech - Designation: L1170 FJ + Designation: L1170FJ Data Format: RASP Data Source: cert Contributor: Mark Koelsch @@ -3467,6 +3852,20 @@ AeroTech_M1315.rse Data Source: user Contributor: John Coker +AeroTech_M1350.eng + Manufacturer: AeroTech + Designation: M1350W + Data Format: RASP + Data Source: cert + Contributor: Mark Koelsch + +AeroTech_M1350_1.eng + Manufacturer: AeroTech + Designation: M1350W + Data Format: RASP + Data Source: user + Contributor: Mike Caplinger + AeroTech_M1419.eng Manufacturer: AeroTech Designation: M1419W @@ -3525,14 +3924,7 @@ AeroTech_M1780.eng AeroTech_M1780_1.eng Manufacturer: AeroTech - Designation: M1780T - Data Format: RASP - Data Source: mfr - Contributor: Mark Koelsch - -AeroTech_M1780_2.eng - Manufacturer: AeroTech - Designation: M1780T + Designation: M1780NT Data Format: RASP Data Source: cert Contributor: Mark Koelsch @@ -3546,14 +3938,14 @@ AeroTech_M1800.eng AeroTech_M1845.eng Manufacturer: AeroTech - Designation: M1845T + Designation: M1845NT Data Format: RASP Data Source: mfr Contributor: John Coker AeroTech_M1850.eng Manufacturer: AeroTech - Designation: M1850W-PS + Designation: M1850W Data Format: RASP Data Source: user Contributor: Greg Gardner @@ -3595,7 +3987,7 @@ AeroTech_M2030.rse AeroTech_M2100.eng Manufacturer: AeroTech - Designation: M2100G-P + Designation: M2100G Data Format: RASP Data Source: user Contributor: John Coker @@ -3644,7 +4036,7 @@ AeroTech_M650.rse AeroTech_M685.eng Manufacturer: AeroTech - Designation: M685W-PS + Designation: M685W Data Format: RASP Data Source: mfr Contributor: Mark Koelsch @@ -3665,14 +4057,14 @@ AeroTech_M750.rse AeroTech_M845.eng Manufacturer: AeroTech - Designation: M845 + Designation: M845H Data Format: RASP Data Source: user Contributor: John Coker AeroTech_M845.rse Manufacturer: AeroTech - Designation: M845 + Designation: M845H Data Format: RockSim Data Source: user Contributor: John Coker @@ -3903,777 +4295,805 @@ Apogee_F10.rse Cesaroni_E22.eng Manufacturer: Cesaroni Technology - Designation: E22-SS-13A + Designation: 24E22-13A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_E22.rse Manufacturer: Cesaroni Technology - Designation: E22-SS-13A + Designation: 24E22-13A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_E31.eng Manufacturer: Cesaroni Technology - Designation: E31-WT-15A + Designation: 26E31-15A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_E31.rse Manufacturer: Cesaroni Technology - Designation: E31-WT-15A + Designation: 26E31-15A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_E75.eng Manufacturer: Cesaroni Technology - Designation: 25-E75-17A + Designation: 25E75-17A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_E75.rse Manufacturer: Cesaroni Technology - Designation: 25-E75-17A + Designation: 25E75-17A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_F120.eng Manufacturer: Cesaroni Technology - Designation: 56-F120-14A + Designation: HP56F120-14A Data Format: RASP Data Source: user Contributor: Andre Choquette Cesaroni_F120.rse Manufacturer: Cesaroni Technology - Designation: 56-F120-14A + Designation: HP56F120-14A Data Format: RockSim Data Source: mfr Contributor: Andre Choquette Cesaroni_F240.eng Manufacturer: Cesaroni Technology - Designation: 68-F240-15A + Designation: HP68F240-15A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_F240.rse Manufacturer: Cesaroni Technology - Designation: 68-F240-15A + Designation: HP68F240-15A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_F29.eng Manufacturer: Cesaroni Technology - Designation: 55-F29-12A + Designation: 55F29-12A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_F29.rse Manufacturer: Cesaroni Technology - Designation: 55-F29-12A + Designation: 55F29-12A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_F30.eng Manufacturer: Cesaroni Technology - Designation: 73-F30-6A + Designation: 73F30-6A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_F30.rse Manufacturer: Cesaroni Technology - Designation: 73-F30-6A + Designation: 73F30-6A Data Format: RockSim Data Source: cert Contributor: Len Bryan +Cesaroni_F31.rse + Manufacturer: Cesaroni Technology + Designation: 56F31-12A + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + +Cesaroni_F32.rse + Manufacturer: Cesaroni Technology + Designation: 53F32-12A + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + Cesaroni_F36.eng Manufacturer: Cesaroni Technology - Designation: 41-F36-11A + Designation: 41F36-11A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_F36.rse Manufacturer: Cesaroni Technology - Designation: 51-F36-14A + Designation: 51F36-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_F36_1.eng Manufacturer: Cesaroni Technology - Designation: 51-F36-14A + Designation: 51F36-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_F36_1.rse Manufacturer: Cesaroni Technology - Designation: 41-F36-11A + Designation: 41F36-11A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_F50.eng Manufacturer: Cesaroni Technology - Designation: F50-SK-13A + Designation: HP60F50-13A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_F50.rse Manufacturer: Cesaroni Technology - Designation: F50-SK-13A + Designation: HP60F50-13A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_F51.eng Manufacturer: Cesaroni Technology - Designation: F51-CL-12A + Designation: 75F51-12A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_F51.rse Manufacturer: Cesaroni Technology - Designation: F51-CL-12A + Designation: 50F51-13A + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + +Cesaroni_F51_1.rse + Manufacturer: Cesaroni Technology + Designation: 75F51-12A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_F59.eng Manufacturer: Cesaroni Technology - Designation: 57-F59-12A + Designation: 57F59-12A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_F59.rse Manufacturer: Cesaroni Technology - Designation: 57-F59-12A + Designation: 57F59-12A Data Format: RockSim Data Source: cert Contributor: Len Bryan +Cesaroni_F70.rse + Manufacturer: Cesaroni Technology + Designation: 53F70-14A + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + Cesaroni_F79.eng Manufacturer: Cesaroni Technology - Designation: 68-F79-13A + Designation: 68F79-13A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_F79.rse Manufacturer: Cesaroni Technology - Designation: 68-F79-13A + Designation: 68F79-13A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_F85.eng Manufacturer: Cesaroni Technology - Designation: 74-F85-15A + Designation: HP75F85-15A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_F85.rse Manufacturer: Cesaroni Technology - Designation: 74-F85-15A + Designation: HP75F85-15A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_G100.eng Manufacturer: Cesaroni Technology - Designation: 114-G100-14A + Designation: HP114G100-14A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_G100.rse Manufacturer: Cesaroni Technology - Designation: 114-G100-14A + Designation: HP114G100-14A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_G106.eng Manufacturer: Cesaroni Technology - Designation: 138-G106-14A + Designation: HP138G106-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_G106.rse Manufacturer: Cesaroni Technology - Designation: 138-G106-14A + Designation: HP138G106-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_G107.eng Manufacturer: Cesaroni Technology - Designation: 139-G107-12A + Designation: HP139G107-12A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_G107.rse Manufacturer: Cesaroni Technology - Designation: 139-G107-12A + Designation: HP139G107-12A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_G115.rse Manufacturer: Cesaroni Technology - Designation: 141 G115-13A + Designation: HP141G115-12A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_G117.eng Manufacturer: Cesaroni Technology - Designation: 142-G117-11A + Designation: HP142G117-11A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_G117.rse Manufacturer: Cesaroni Technology - Designation: 142-G117-11A + Designation: HP142G117-11A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_G118.eng Manufacturer: Cesaroni Technology - Designation: 159-G118-15A + Designation: HP159G118-15A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_G118.rse Manufacturer: Cesaroni Technology - Designation: 159-G118-15A + Designation: HP159G118-15A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_G125.eng Manufacturer: Cesaroni Technology - Designation: 159-G125-RL + Designation: HP159G125-14A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_G125.rse Manufacturer: Cesaroni Technology - Designation: 159-G125-RL + Designation: HP159G125-14A Data Format: RockSim Data Source: cert Contributor: Mark Koelsch Cesaroni_G126.eng Manufacturer: Cesaroni Technology - Designation: 116-G126-13A + Designation: HP116G126-13A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_G126.rse Manufacturer: Cesaroni Technology - Designation: 116-G126-13A + Designation: HP116G126-13A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_G127.eng Manufacturer: Cesaroni Technology - Designation: 137-G127-14A + Designation: HP137G127-14A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_G127.rse Manufacturer: Cesaroni Technology - Designation: 137-G127-14A + Designation: HP137G127-14A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_G131.eng Manufacturer: Cesaroni Technology - Designation: 125-G131-14A + Designation: HP125G131-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_G131.rse Manufacturer: Cesaroni Technology - Designation: 125-G131-14A + Designation: HP125G131-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_G145.eng Manufacturer: Cesaroni Technology - Designation: CTI 140-G145-PK-15A + Designation: HP140G145-15A Data Format: RASP Data Source: user Contributor: Greg Gardner Cesaroni_G145.rse Manufacturer: Cesaroni Technology - Designation: CTI 140-G145-PK-15A + Designation: HP140G145-15A Data Format: RockSim Data Source: cert Contributor: Mark Koelsch Cesaroni_G150.eng Manufacturer: Cesaroni Technology - Designation: 143-G150-13A + Designation: HP143G150-13A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_G150.rse Manufacturer: Cesaroni Technology - Designation: 143-G150-13A + Designation: HP143G150-13A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_G185.rse Manufacturer: Cesaroni Technology - Designation: G185-12A + Designation: HP128G185-12A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_G250.eng Manufacturer: Cesaroni Technology - Designation: 110-G250-14A + Designation: HP110G250-14A Data Format: RASP Data Source: user Contributor: Andre Choquette Cesaroni_G250.rse Manufacturer: Cesaroni Technology - Designation: 110-G250-14A + Designation: HP110G250-14A Data Format: RockSim Data Source: mfr Contributor: Andre Choquette +Cesaroni_G33.rse + Manufacturer: Cesaroni Technology + Designation: 143G33-9A + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + Cesaroni_G46.rse Manufacturer: Cesaroni Technology - Designation: 127 G46-11A + Designation: 127G46-11A Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby Cesaroni_G50.eng Manufacturer: Cesaroni Technology - Designation: 150-G50-IM-15A + Designation: HP150G50-15A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_G50.rse Manufacturer: Cesaroni Technology - Designation: 150-G50-IM-15A + Designation: HP150G50-15A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_G54.eng Manufacturer: Cesaroni Technology - Designation: 159-G54-12A + Designation: HP159G54-12A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_G54.rse Manufacturer: Cesaroni Technology - Designation: 159-G54-12A + Designation: HP159G54-12A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_G57.eng Manufacturer: Cesaroni Technology - Designation: 108-G57-12A + Designation: 108G57-12A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_G57.rse Manufacturer: Cesaroni Technology - Designation: 108-G57-12A + Designation: 108G57-12A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_G58.eng Manufacturer: Cesaroni Technology - Designation: 137-G58-13A + Designation: HP137G58-13A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_G58.rse Manufacturer: Cesaroni Technology - Designation: 137-G58-13A + Designation: HP137G58-13A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_G60.eng Manufacturer: Cesaroni Technology - Designation: 134 G60-14A + Designation: HP134G60-14A Data Format: RASP Data Source: cert Contributor: John Coker Cesaroni_G60.rse Manufacturer: Cesaroni Technology - Designation: 134 G60-14A + Designation: HP134G60-14A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_G65.eng Manufacturer: Cesaroni Technology - Designation: 144-G65-8A + Designation: HP144G65-8A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_G65.rse Manufacturer: Cesaroni Technology - Designation: 144-G65-8A + Designation: HP144G65-8A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_G68.eng Manufacturer: Cesaroni Technology - Designation: 108-G68-13A + Designation: HP108G68-13A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_G68.rse Manufacturer: Cesaroni Technology - Designation: 108-G68-13A + Designation: HP108G68-13A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_G69.eng Manufacturer: Cesaroni Technology - Designation: 121 G69-14A + Designation: HP117G69-14A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_G69.rse Manufacturer: Cesaroni Technology - Designation: 117G69-14A - Data Format: RockSim - Data Source: cert - Contributor: Andre Choquette - -Cesaroni_G69_1.eng - Manufacturer: Cesaroni Technology - Designation: 121 G69-14A - Data Format: RASP - Data Source: user - Contributor: Pete Carr - -Cesaroni_G69_1.rse - Manufacturer: Cesaroni Technology - Designation: 121 G69-14A + Designation: HP117G69-14A Data Format: RockSim Data Source: user Contributor: John Coker +Cesaroni_G69_1.eng + Manufacturer: Cesaroni Technology + Designation: HP117G69-14A + Data Format: RASP + Data Source: user + Contributor: Pete Carr + Cesaroni_G69_2.eng Manufacturer: Cesaroni Technology - Designation: 121 G69-14A + Designation: HP117G69-14A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_G78.eng Manufacturer: Cesaroni Technology - Designation: 141G78-15A + Designation: HP141G78-15A Data Format: RASP Data Source: mfr Contributor: Mike Caplinger Cesaroni_G79.eng Manufacturer: Cesaroni Technology - Designation: 129 G79SS-13A + Designation: HP129G79-13A Data Format: RASP Data Source: user Contributor: Pete Carr Cesaroni_G79.rse Manufacturer: Cesaroni Technology - Designation: 129 G79SS-13A + Designation: HP129G79-13A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_G79_1.eng Manufacturer: Cesaroni Technology - Designation: 129 G79SS-13A + Designation: HP129G79-13A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_G80.eng Manufacturer: Cesaroni Technology - Designation: 93-G80-14A + Designation: HP93G80-14A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_G80.rse Manufacturer: Cesaroni Technology - Designation: 93-G80-14A + Designation: HP93G80-14A Data Format: RockSim Data Source: mfr Contributor: Andre Choquette Cesaroni_G83.eng Manufacturer: Cesaroni Technology - Designation: 107-G83-14A + Designation: HP107G83-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_G83.rse Manufacturer: Cesaroni Technology - Designation: 107-G83-14A + Designation: HP107G83-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_G84.eng Manufacturer: Cesaroni Technology - Designation: 131-G84-10A + Designation: HP131G84-10A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_G84.rse Manufacturer: Cesaroni Technology - Designation: 131-G84-10A + Designation: HP131G84-10A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_G88.eng Manufacturer: Cesaroni Technology - Designation: 84-G88-11A + Designation: HP84G88-11A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_G88.rse Manufacturer: Cesaroni Technology - Designation: 84-G88-11A + Designation: HP84G88-11A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H100.eng Manufacturer: Cesaroni Technology - Designation: 286-H100-15A + Designation: 286H100-15A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H100.rse Manufacturer: Cesaroni Technology - Designation: 286-H100-15A + Designation: 286H100-15A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H110.eng Manufacturer: Cesaroni Technology - Designation: 269-H110-14A + Designation: 269H110-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H110.rse Manufacturer: Cesaroni Technology - Designation: 269-H110-14A + Designation: 269H110-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H118.eng Manufacturer: Cesaroni Technology - Designation: 216-H118-12A + Designation: 216H118-12A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H118.rse Manufacturer: Cesaroni Technology - Designation: 216-H118-12A + Designation: 216H118-12A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H120.eng Manufacturer: Cesaroni Technology - Designation: 261 H120-14A + Designation: 261H120-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H120.rse Manufacturer: Cesaroni Technology - Designation: 261 H120-14A + Designation: 261H120-14A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_H123.eng Manufacturer: Cesaroni Technology - Designation: 176-H123-12A + Designation: 176H123-12A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H123.rse Manufacturer: Cesaroni Technology - Designation: 176-H123-12A + Designation: 176H123-12A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H123_1.eng Manufacturer: Cesaroni Technology - Designation: 232 H123-14A + Designation: 232H123-14A Data Format: RASP Data Source: user Contributor: John Coker Cesaroni_H123_1.rse Manufacturer: Cesaroni Technology - Designation: 232 H123-14A + Designation: 232H123-14A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_H123_2.rse Manufacturer: Cesaroni Technology - Designation: 232 H123-14A + Designation: 232H123-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H125.eng Manufacturer: Cesaroni Technology - Designation: 266 H125-12A + Designation: 266H125-12A Data Format: RASP Data Source: mfr Contributor: Rich Thompson Cesaroni_H125.rse Manufacturer: Cesaroni Technology - Designation: 266 H125-12A + Designation: 266H125-12A Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby Cesaroni_H133.eng Manufacturer: Cesaroni Technology - Designation: 163-H133-14A + Designation: 163H133-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H133.rse Manufacturer: Cesaroni Technology - Designation: 163-H133-14A + Designation: 163H133-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H135.eng Manufacturer: Cesaroni Technology - Designation: 217-H135-12A + Designation: 217H135-12A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H135.rse Manufacturer: Cesaroni Technology - Designation: 217-H135-12A + Designation: 217H135-12A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H140.eng Manufacturer: Cesaroni Technology - Designation: 268-H140-11A + Designation: 268H140-12A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H140.rse Manufacturer: Cesaroni Technology - Designation: 268-H140-11A + Designation: 268H140-12A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H143.eng Manufacturer: Cesaroni Technology - Designation: 247 H143SS-13A + Designation: 247H143-13A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_H143.rse Manufacturer: Cesaroni Technology - Designation: 247 H143SS-13A + Designation: 247H143-13A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_H151.eng Manufacturer: Cesaroni Technology - Designation: 207-H151-RL-15A + Designation: 207H151-15A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_H151.rse Manufacturer: Cesaroni Technology - Designation: 207-H151-RL-15A + Designation: 207H151-15A Data Format: RockSim Data Source: cert Contributor: Andre Choquette @@ -4708,371 +5128,385 @@ Cesaroni_H153.rse Cesaroni_H159.eng Manufacturer: Cesaroni Technology - Designation: 298-H159-GR-15A + Designation: 298H159-15A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_H159.rse Manufacturer: Cesaroni Technology - Designation: 298-H159-GR-15A + Designation: 298H159-15A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_H160.eng Manufacturer: Cesaroni Technology - Designation: 312-H160-12A + Designation: 312H160-12A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H160.rse Manufacturer: Cesaroni Technology - Designation: 312-H160-12A + Designation: 312H160-12A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H160_1.rse Manufacturer: Cesaroni Technology - Designation: 220-H160-SK-14A + Designation: 220H160-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H163.eng Manufacturer: Cesaroni Technology - Designation: 166-H163-14A + Designation: 166H163-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H163.rse Manufacturer: Cesaroni Technology - Designation: 166-H163-14A + Designation: 166H163-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H170.eng Manufacturer: Cesaroni Technology - Designation: 217-H170-14A + Designation: 217H170-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H170.rse Manufacturer: Cesaroni Technology - Designation: 217-H170-14A + Designation: 217H170-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H175.eng Manufacturer: Cesaroni Technology - Designation: 166-H175-14A + Designation: 166H175-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H175.rse Manufacturer: Cesaroni Technology - Designation: 166-H175-14A + Designation: 166H175-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H180.eng Manufacturer: Cesaroni Technology - Designation: 258-H180-14A + Designation: 258H180-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H180.rse Manufacturer: Cesaroni Technology - Designation: 258-H180-14A + Designation: 258H180-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H194.eng Manufacturer: Cesaroni Technology - Designation: 260-H194-14A + Designation: 260H194-14A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_H194.rse Manufacturer: Cesaroni Technology - Designation: 260-H194-14A + Designation: 260H194-14A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_H200.eng Manufacturer: Cesaroni Technology - Designation: 261-H200-14A + Designation: 261H200-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H200.rse Manufacturer: Cesaroni Technology - Designation: 261-H200-14A + Designation: 261H200-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H225.rse Manufacturer: Cesaroni Technology - Designation: 273 H225-14A + Designation: 273H225-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H226.eng Manufacturer: Cesaroni Technology - Designation: 305-H226-14A + Designation: 305H226-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H226.rse Manufacturer: Cesaroni Technology - Designation: 305-H226-14A + Designation: 305H226-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H233.eng Manufacturer: Cesaroni Technology - Designation: 311-H233-RL-14A + Designation: 311H233-14A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_H233.rse Manufacturer: Cesaroni Technology - Designation: 311-H233-RL-14A + Designation: 311H233-14A Data Format: RockSim Data Source: cert Contributor: Mark Koelsch Cesaroni_H237.eng Manufacturer: Cesaroni Technology - Designation: 206-H237-13A + Designation: 206H237-13A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H237.rse Manufacturer: Cesaroni Technology - Designation: 206-H237-13A + Designation: 206H237-13A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H255.eng Manufacturer: Cesaroni Technology - Designation: 315-H255-14A + Designation: 315H255-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H255.rse Manufacturer: Cesaroni Technology - Designation: 315-H255-14A + Designation: 315H255-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H255_1.eng Manufacturer: Cesaroni Technology - Designation: 229-H255-14A + Designation: 229H255-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H255_1.rse Manufacturer: Cesaroni Technology - Designation: 229-H255-14A + Designation: 229H255-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H295.eng Manufacturer: Cesaroni Technology - Designation: 253-H295-13A + Designation: 253H295-13A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H295.rse Manufacturer: Cesaroni Technology - Designation: 253-H295-13A + Designation: 253H295-13A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H340.eng Manufacturer: Cesaroni Technology - Designation: 287-H340-14A + Designation: 287H340-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H340.rse Manufacturer: Cesaroni Technology - Designation: 287-H340-14A + Designation: 287H340-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H399.eng Manufacturer: Cesaroni Technology - Designation: 282-H399-12A + Designation: 282H399-12A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H399.rse Manufacturer: Cesaroni Technology - Designation: 282-H399-12A + Designation: 282H399-12A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H400.rse Manufacturer: Cesaroni Technology - Designation: H400-14A + Designation: 225H400-13A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_H410.eng Manufacturer: Cesaroni Technology - Designation: 168-H410-14A + Designation: 168H410-14A Data Format: RASP Data Source: user Contributor: Andre Choquette Cesaroni_H410.rse Manufacturer: Cesaroni Technology - Designation: 168-H410-14A + Designation: 168H410-14A Data Format: RockSim Data Source: mfr Contributor: Andre Choquette +Cesaroni_H42.rse + Manufacturer: Cesaroni Technology + Designation: 186H42-10A + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + +Cesaroni_H53.rse + Manufacturer: Cesaroni Technology + Designation: 234H53-12A + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + Cesaroni_H54.eng Manufacturer: Cesaroni Technology - Designation: 168-H54-10A + Designation: 168H54-10A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H54.rse Manufacturer: Cesaroni Technology - Designation: 168-H54-10A + Designation: 168H54-10A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H565.eng Manufacturer: Cesaroni Technology - Designation: H565 + Designation: 320H565-14A Data Format: RASP Data Source: user Contributor: John Coker Cesaroni_H565.rse Manufacturer: Cesaroni Technology - Designation: H565 + Designation: 320H565-14A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_H87.eng Manufacturer: Cesaroni Technology - Designation: 168 H87-12A + Designation: 168H87-12A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H87.rse Manufacturer: Cesaroni Technology - Designation: 168 H87-12A + Designation: 168H87-12A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_H90.eng Manufacturer: Cesaroni Technology - Designation: 164-H90-12A + Designation: 164H90-12A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_H90.rse Manufacturer: Cesaroni Technology - Designation: 164-H90-12A + Designation: 164H90-12A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_I100.eng Manufacturer: Cesaroni Technology - Designation: 614-I100-17A + Designation: 614I100-17A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_I100.rse Manufacturer: Cesaroni Technology - Designation: 614-I100-17A + Designation: 614I100-17A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_I120.eng Manufacturer: Cesaroni Technology - Designation: 502-I120-15A + Designation: 502I120-15A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_I120.rse Manufacturer: Cesaroni Technology - Designation: 502-I120-15A + Designation: 502I120-15A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_I125.eng Manufacturer: Cesaroni Technology - Designation: 567-I125-WH/LB + Designation: 567I125-10A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_I125.rse Manufacturer: Cesaroni Technology - Designation: 567-I125-WH/LB + Designation: 567I125-10A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_I140.eng Manufacturer: Cesaroni Technology - Designation: 396-I140-14A + Designation: 396I140-14A Data Format: RASP Data Source: user Contributor: Andre Choquette Cesaroni_I140.rse Manufacturer: Cesaroni Technology - Designation: 396-I140-14A + Designation: 396I140-14A Data Format: RockSim Data Source: mfr Contributor: Andre Choquette @@ -5093,35 +5527,35 @@ Cesaroni_I150.rse Cesaroni_I165.eng Manufacturer: Cesaroni Technology - Designation: CTI 518-I165-17A + Designation: 518I165-17A Data Format: RASP Data Source: cert Contributor: Mark Koelsch Cesaroni_I170.eng Manufacturer: Cesaroni Technology - Designation: 382 I170-14A + Designation: 382I170-14A Data Format: RASP Data Source: cert Contributor: John Coker Cesaroni_I170.rse Manufacturer: Cesaroni Technology - Designation: 382 I170-14A + Designation: 382I170-14A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_I175.eng Manufacturer: Cesaroni Technology - Designation: 411-I175-14A + Designation: 411I175-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_I175.rse Manufacturer: Cesaroni Technology - Designation: 411-I175-14A + Designation: 411I175-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan @@ -5142,21 +5576,21 @@ Cesaroni_I180.rse Cesaroni_I195.rse Manufacturer: Cesaroni Technology - Designation: 396 I195-16A + Designation: 396I195-16A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_I204.eng Manufacturer: Cesaroni Technology - Designation: 348-I204-13A + Designation: 348I204-13A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_I204.rse Manufacturer: Cesaroni Technology - Designation: 348-I204-13A + Designation: 348I204-13A Data Format: RockSim Data Source: cert Contributor: Len Bryan @@ -5177,28 +5611,28 @@ Cesaroni_I205.rse Cesaroni_I212.eng Manufacturer: Cesaroni Technology - Designation: 364 I212SS-14A + Designation: 364I212-14A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_I212.rse Manufacturer: Cesaroni Technology - Designation: 364 I212SS-14A + Designation: 364I212-14A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_I216.eng Manufacturer: Cesaroni Technology - Designation: 636-I216-CL-14A + Designation: 636I216-14A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_I216.rse Manufacturer: Cesaroni Technology - Designation: 636-I216-CL-14A + Designation: 636I216-14A Data Format: RockSim Data Source: cert Contributor: Len Bryan @@ -5217,30 +5651,16 @@ Cesaroni_I218.rse Data Source: cert Contributor: Andre Choquette -Cesaroni_I223.eng - Manufacturer: Cesaroni Technology - Designation: 434I223-14A - Data Format: RASP - Data Source: cert - Contributor: Andre Choquette - -Cesaroni_I223.rse - Manufacturer: Cesaroni Technology - Designation: 434I223-14A - Data Format: RockSim - Data Source: cert - Contributor: Andre Choquette - Cesaroni_I224.eng Manufacturer: Cesaroni Technology - Designation: 381-I224-15A + Designation: 381I224-15A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_I224.rse Manufacturer: Cesaroni Technology - Designation: 381-I224-15A + Designation: 381I224-15A Data Format: RockSim Data Source: cert Contributor: Andre Choquette @@ -5275,81 +5695,67 @@ Cesaroni_I240.rse Cesaroni_I242.eng Manufacturer: Cesaroni Technology - Designation: 548-I242-15A + Designation: 548I242-15A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_I242.rse Manufacturer: Cesaroni Technology - Designation: 548-I242-15A + Designation: 548I242-15A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_I243.eng Manufacturer: Cesaroni Technology - Designation: 382-I243-13A + Designation: 382I243-13A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_I243.rse Manufacturer: Cesaroni Technology - Designation: 382-I243-13A + Designation: 382I243-13A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_I255.rse Manufacturer: Cesaroni Technology - Designation: 517 I255-16A + Designation: 517I255-16A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_I285.eng Manufacturer: Cesaroni Technology - Designation: I285 + Designation: 512I285-15A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_I285.rse Manufacturer: Cesaroni Technology - Designation: I285 + Designation: 512I285-15A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_I287.eng Manufacturer: Cesaroni Technology - Designation: 486 I287SS-15A + Designation: 486I287-15A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_I287.rse Manufacturer: Cesaroni Technology - Designation: 486 I287SS-15A + Designation: 486I287-15A Data Format: RockSim Data Source: user Contributor: John Coker -Cesaroni_I297.eng - Manufacturer: Cesaroni Technology - Designation: 543I297-15A - Data Format: RASP - Data Source: cert - Contributor: Andre Choquette - -Cesaroni_I297.rse - Manufacturer: Cesaroni Technology - Designation: 543I297-15A - Data Format: RockSim - Data Source: cert - Contributor: Andre Choquette - Cesaroni_I303.eng Manufacturer: Cesaroni Technology Designation: 538I303-16A @@ -5366,21 +5772,21 @@ Cesaroni_I303.rse Cesaroni_I345.rse Manufacturer: Cesaroni Technology - Designation: 408 I345-15A + Designation: 408I345-15A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_I350.eng Manufacturer: Cesaroni Technology - Designation: 601 I350SS-16A + Designation: 601I350-16A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_I350.rse Manufacturer: Cesaroni Technology - Designation: 601 I350SS-16A + Designation: 601I350-16A Data Format: RockSim Data Source: user Contributor: John Coker @@ -5401,119 +5807,133 @@ Cesaroni_I360.rse Cesaroni_I445.eng Manufacturer: Cesaroni Technology - Designation: 475-I445-16A + Designation: 475I445-16A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_I445.rse Manufacturer: Cesaroni Technology - Designation: 475-I445-16A + Designation: 475I445-16A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_I470.rse Manufacturer: Cesaroni Technology - Designation: 540 I470-15A + Designation: 540I470-15A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_I540.eng Manufacturer: Cesaroni Technology - Designation: 634I540WT + Designation: 634I540-16A Data Format: RASP Data Source: cert Contributor: John Coker Cesaroni_I540.rse Manufacturer: Cesaroni Technology - Designation: 634I540WT + Designation: 634I540-16A Data Format: RockSim Data Source: user Contributor: John Coker +Cesaroni_I55.rse + Manufacturer: Cesaroni Technology + Designation: 395I55-9A + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + Cesaroni_I566.rse Manufacturer: Cesaroni Technology - Designation: I566-16A + Designation: 370I566-15A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_I800.rse Manufacturer: Cesaroni Technology - Designation: I800-16A + Designation: 419I800-15A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_J1055.rse Manufacturer: Cesaroni Technology - Designation: 747 J1055-17A + Designation: 747J1055-17A Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby -Cesaroni_J1365.rse - Manufacturer: Cesaroni Technology - Designation: 932 J1365-P - Data Format: RockSim - Data Source: user - Contributor: John Coker - Cesaroni_J140.eng Manufacturer: Cesaroni Technology - Designation: 1211-J140-P + Designation: 1211J140-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_J140.rse Manufacturer: Cesaroni Technology - Designation: 1211-J140-P + Designation: 1211J140-P Data Format: RockSim Data Source: cert Contributor: Len Bryan +Cesaroni_J145.rse + Manufacturer: Cesaroni Technology + Designation: 699J145-19A + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + +Cesaroni_J150.rse + Manufacturer: Cesaroni Technology + Designation: 949J150-P + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + Cesaroni_J1520.rse Manufacturer: Cesaroni Technology - Designation: 1092 J1520-17A + Designation: 1093J1520-17A Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby Cesaroni_J210.eng Manufacturer: Cesaroni Technology - Designation: 836 J210-16A + Designation: 836J210-16A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_J210.rse Manufacturer: Cesaroni Technology - Designation: 836 J210-16A + Designation: 836J210-16A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_J240.rse Manufacturer: Cesaroni Technology - Designation: 806 J240-16A + Designation: 806J240-16A Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby Cesaroni_J244.eng Manufacturer: Cesaroni Technology - Designation: 867-J244-14A + Designation: 867J244-14A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_J244.rse Manufacturer: Cesaroni Technology - Designation: 867-J244-14A + Designation: 867J244-14A Data Format: RockSim Data Source: cert Contributor: Andre Choquette @@ -5534,56 +5954,56 @@ Cesaroni_J250.rse Cesaroni_J270.eng Manufacturer: Cesaroni Technology - Designation: 650-J270-13A + Designation: 650J270-13A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_J270.rse Manufacturer: Cesaroni Technology - Designation: 650-J270-13A + Designation: 650J270-13A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_J280.eng Manufacturer: Cesaroni Technology - Designation: J280SS + Designation: 716J280-16A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_J280.rse Manufacturer: Cesaroni Technology - Designation: J280SS + Designation: 716J280-16A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_J285.eng Manufacturer: Cesaroni Technology - Designation: 648 J285-15A + Designation: 648J285-15A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_J285.rse Manufacturer: Cesaroni Technology - Designation: 648 J285-15A + Designation: 648J285-15A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_J290.eng Manufacturer: Cesaroni Technology - Designation: 684-J290-15A + Designation: 684J290-15A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_J290.rse Manufacturer: Cesaroni Technology - Designation: 684-J290-15A + Designation: 684J290-15A Data Format: RockSim Data Source: cert Contributor: Len Bryan @@ -5604,14 +6024,14 @@ Cesaroni_J293.rse Cesaroni_J295.eng Manufacturer: Cesaroni Technology - Designation: 1195 J295-15A + Designation: 1195J295-16A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_J295.rse Manufacturer: Cesaroni Technology - Designation: 1195 J295-15A + Designation: 1195J295-16A Data Format: RockSim Data Source: user Contributor: John Coker @@ -5632,63 +6052,56 @@ Cesaroni_J300.rse Cesaroni_J316.eng Manufacturer: Cesaroni Technology - Designation: J316-PK-17A + Designation: 654J316-17A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_J316.rse Manufacturer: Cesaroni Technology - Designation: J316-PK-17A + Designation: 654J316-17A Data Format: RockSim Data Source: cert Contributor: Andre Choquette -Cesaroni_J325.rse - Manufacturer: Cesaroni Technology - Designation: 1099 J325-P - Data Format: RockSim - Data Source: user - Contributor: John Coker - Cesaroni_J330.eng Manufacturer: Cesaroni Technology - Designation: 765 J330-16A + Designation: 765J330-16A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_J330.rse Manufacturer: Cesaroni Technology - Designation: 765 J330-16A + Designation: 765J330-16A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_J335.rse Manufacturer: Cesaroni Technology - Designation: 649 J335-15A + Designation: 649J335-15A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_J354.eng Manufacturer: Cesaroni Technology - Designation: 819-J354-16A + Designation: 819J354-16A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_J354.rse Manufacturer: Cesaroni Technology - Designation: 819-J354-16A + Designation: 819J354-16A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_J355.rse Manufacturer: Cesaroni Technology - Designation: 1190 J355-16A + Designation: 1190J355-17A Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby @@ -5709,14 +6122,14 @@ Cesaroni_J357.rse Cesaroni_J360.eng Manufacturer: Cesaroni Technology - Designation: 1016J360-16A + Designation: 1016J360-15A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_J360.rse Manufacturer: Cesaroni Technology - Designation: 1016J360-16A + Designation: 1016J360-15A Data Format: RockSim Data Source: cert Contributor: Andre Choquette @@ -5737,14 +6150,14 @@ Cesaroni_J360_1.rse Cesaroni_J380.eng Manufacturer: Cesaroni Technology - Designation: 1043 J380SS-16A + Designation: 1043J380-16A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_J380.rse Manufacturer: Cesaroni Technology - Designation: 1043 J380SS-16A + Designation: 1043J380-16A Data Format: RockSim Data Source: user Contributor: John Coker @@ -5765,70 +6178,56 @@ Cesaroni_J381.rse Cesaroni_J394.eng Manufacturer: Cesaroni Technology - Designation: 970-J394-13A + Designation: 970J394-13A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_J394.rse Manufacturer: Cesaroni Technology - Designation: 970-J394-13A + Designation: 970J394-13A Data Format: RockSim Data Source: cert Contributor: Len Bryan -Cesaroni_J395.rse - Manufacturer: Cesaroni Technology - Designation: 1079 J395-P - Data Format: RockSim - Data Source: user - Contributor: John Coker - Cesaroni_J400.eng Manufacturer: Cesaroni Technology - Designation: J400SS + Designation: 700J400-16A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_J400.rse Manufacturer: Cesaroni Technology - Designation: J400SS - Data Format: RockSim - Data Source: user - Contributor: John Coker - -Cesaroni_J401.rse - Manufacturer: Cesaroni Technology - Designation: 977 J401-P + Designation: 700J400-16A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_J410.eng Manufacturer: Cesaroni Technology - Designation: 774 J410-16A + Designation: 774J410-16A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_J410.rse Manufacturer: Cesaroni Technology - Designation: 774 J410-16A + Designation: 774J410-16A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_J420.eng Manufacturer: Cesaroni Technology - Designation: 1008-J420-15A + Designation: 1008J420-15A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_J420.rse Manufacturer: Cesaroni Technology - Designation: 1008-J420-15A + Designation: 1008J420-15A Data Format: RockSim Data Source: cert Contributor: Len Bryan @@ -5842,28 +6241,14 @@ Cesaroni_J425.eng Cesaroni_J430.eng Manufacturer: Cesaroni Technology - Designation: 821-J430-18A + Designation: 821J430-18A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_J430.rse Manufacturer: Cesaroni Technology - Designation: 821-J430-18A - Data Format: RockSim - Data Source: cert - Contributor: Len Bryan - -Cesaroni_J440.eng - Manufacturer: Cesaroni Technology - Designation: 1109-J440-P - Data Format: RASP - Data Source: cert - Contributor: Len Bryan - -Cesaroni_J440.rse - Manufacturer: Cesaroni Technology - Designation: 1109-J440-P + Designation: 821J430-18A Data Format: RockSim Data Source: cert Contributor: Len Bryan @@ -5884,39 +6269,18 @@ Cesaroni_J449.rse Cesaroni_J453.eng Manufacturer: Cesaroni Technology - Designation: J453-WH-16A + Designation: 1013J453-16A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_J453.rse Manufacturer: Cesaroni Technology - Designation: J453-WH-16A + Designation: 1013J453-16A Data Format: RockSim Data Source: cert Contributor: Andre Choquette -Cesaroni_J475.eng - Manufacturer: Cesaroni Technology - Designation: 1233-J475-P - Data Format: RASP - Data Source: cert - Contributor: Len Bryan - -Cesaroni_J475.rse - Manufacturer: Cesaroni Technology - Designation: 1233-J475-P - Data Format: RockSim - Data Source: cert - Contributor: Len Bryan - -Cesaroni_J475_1.rse - Manufacturer: Cesaroni Technology - Designation: 1025-J475-P - Data Format: RockSim - Data Source: user - Contributor: John Coker - Cesaroni_J520.eng Manufacturer: Cesaroni Technology Designation: 848J520-16A @@ -5933,14 +6297,14 @@ Cesaroni_J520.rse Cesaroni_J530.eng Manufacturer: Cesaroni Technology - Designation: 1115-J530-15A + Designation: 1115J530-15A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_J530.rse Manufacturer: Cesaroni Technology - Designation: 1115-J530-15A + Designation: 1115J530-15A Data Format: RockSim Data Source: cert Contributor: Len Bryan @@ -5987,352 +6351,296 @@ Cesaroni_J600.rse Data Source: cert Contributor: Andre Choquette -Cesaroni_J745.rse - Manufacturer: Cesaroni Technology - Designation: 1196 J745-P - Data Format: RockSim - Data Source: user - Contributor: John Coker - Cesaroni_J760.eng Manufacturer: Cesaroni Technology - Designation: 1266-J760-19A + Designation: 1266J760-19A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_J760.rse Manufacturer: Cesaroni Technology - Designation: 1266-J760-19A + Designation: 1266J760-19A Data Format: RockSim Data Source: cert Contributor: Len Bryan -Cesaroni_K1075.eng +Cesaroni_J94.rse Manufacturer: Cesaroni Technology - Designation: 2245-K1075-P - Data Format: RASP - Data Source: cert - Contributor: Len Bryan - -Cesaroni_K1075.rse - Manufacturer: Cesaroni Technology - Designation: 2245-K1075-P + Designation: 644J94-P Data Format: RockSim Data Source: cert - Contributor: Len Bryan + Contributor: Andre Choquette Cesaroni_K1085.rse Manufacturer: Cesaroni Technology - Designation: K1085WT-P + Designation: 2411K1085-P Data Format: RockSim Data Source: user Contributor: John Coker -Cesaroni_K1130.eng - Manufacturer: Cesaroni Technology - Designation: 2551-K1130-P - Data Format: RASP - Data Source: cert - Contributor: Len Bryan - -Cesaroni_K1130.rse - Manufacturer: Cesaroni Technology - Designation: 2551-K1130-P - Data Format: RockSim - Data Source: cert - Contributor: Len Bryan - Cesaroni_K1200.rse Manufacturer: Cesaroni Technology - Designation: K1200-16A + Designation: 2014K1200-16A Data Format: RockSim Data Source: user Contributor: John Coker -Cesaroni_K1250.eng - Manufacturer: Cesaroni Technology - Designation: 1951-K1250-P - Data Format: RASP - Data Source: cert - Contributor: Len Bryan - -Cesaroni_K1250.rse - Manufacturer: Cesaroni Technology - Designation: 1951-K1250-P - Data Format: RockSim - Data Source: cert - Contributor: Len Bryan - Cesaroni_K1440.rse Manufacturer: Cesaroni Technology - Designation: K1440-17A + Designation: 2372K1440-17A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_K160.eng Manufacturer: Cesaroni Technology - Designation: 1526-K160-6 + Designation: 1526K160-6 Data Format: RASP Data Source: user Contributor: Andre Choquette Cesaroni_K160.rse Manufacturer: Cesaroni Technology - Designation: 1526-K160-6 + Designation: 1526K160-6 Data Format: RockSim Data Source: mfr Contributor: Andre Choquette Cesaroni_K1620.rse Manufacturer: Cesaroni Technology - Designation: 2440 K1620-P + Designation: 2440K1620-P Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby -Cesaroni_K1720.rse - Manufacturer: Cesaroni Technology - Designation: 1176 K1720-P - Data Format: RockSim - Data Source: user - Contributor: John Coker - Cesaroni_K2000.eng Manufacturer: Cesaroni Technology - Designation: K2000-VM-P + Designation: 2329K2000-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_K2000.rse Manufacturer: Cesaroni Technology - Designation: K2000-VM-P + Designation: 2329K2000-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_K2045.eng Manufacturer: Cesaroni Technology - Designation: 1408 K2045-17A + Designation: 1408K2045-17A Data Format: RASP Data Source: user Contributor: Karl Baumheckel Cesaroni_K2045.rse Manufacturer: Cesaroni Technology - Designation: 1408 K2045-17A + Designation: 1408K2045-17A Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby Cesaroni_K260.eng Manufacturer: Cesaroni Technology - Designation: 2285-K260-P + Designation: 2285K260-P Data Format: RASP Data Source: mfr Contributor: Andre Choquette Cesaroni_K260.rse Manufacturer: Cesaroni Technology - Designation: 2285-K260-P + Designation: 2285K260-P Data Format: RockSim Data Source: mfr Contributor: Andre Choquette Cesaroni_K261.eng Manufacturer: Cesaroni Technology - Designation: 2021-K261-P + Designation: 2021K261-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_K261.rse Manufacturer: Cesaroni Technology - Designation: 2021-K261-P + Designation: 2021K261-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_K300.eng Manufacturer: Cesaroni Technology - Designation: 2546-K300-P + Designation: 2546K300-P Data Format: RASP Data Source: mfr Contributor: Andre Choquette Cesaroni_K300.rse Manufacturer: Cesaroni Technology - Designation: 2546-K300-P + Designation: 2546K300-P Data Format: RockSim Data Source: mfr Contributor: Andre Choquette Cesaroni_K360.eng Manufacturer: Cesaroni Technology - Designation: 1281-K360-13A + Designation: 1281K360-13A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_K360.rse Manufacturer: Cesaroni Technology - Designation: 1281-K360-13A + Designation: 1281K360-13A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_K400.eng Manufacturer: Cesaroni Technology - Designation: 1597-K400-14A + Designation: 1597K400-14A Data Format: RASP Data Source: user Contributor: Andre Choquette Cesaroni_K400.rse Manufacturer: Cesaroni Technology - Designation: 1597-K400-14A + Designation: 1597K400-14A Data Format: RockSim Data Source: mfr Contributor: Andre Choquette Cesaroni_K445.eng Manufacturer: Cesaroni Technology - Designation: 1635 K445-A + Designation: 1635K445-17A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_K445.rse Manufacturer: Cesaroni Technology - Designation: 1635 K445-A + Designation: 1635K445-17A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_K454.eng Manufacturer: Cesaroni Technology - Designation: 1364-K454-19A + Designation: 1364K454-19A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_K454.rse Manufacturer: Cesaroni Technology - Designation: 1364-K454-19A + Designation: 1364K454-19A Data Format: RockSim Data Source: cert Contributor: Len Bryan -Cesaroni_K455.rse - Manufacturer: Cesaroni Technology - Designation: 1483 K455-P - Data Format: RockSim - Data Source: user - Contributor: John Coker - Cesaroni_K490.eng Manufacturer: Cesaroni Technology - Designation: CTI 1990-K490-16A + Designation: 1990K490-16A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_K490.rse Manufacturer: Cesaroni Technology - Designation: CTI 1990-K490-16A + Designation: 1990K490-16A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_K500.rse Manufacturer: Cesaroni Technology - Designation: 1596 K500-18A + Designation: 1596K500-18A Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby Cesaroni_K510.eng Manufacturer: Cesaroni Technology - Designation: 2486 K510-P-U + Designation: 2486K510-P Data Format: RASP Data Source: mfr Contributor: Len Lekx Cesaroni_K510.rse Manufacturer: Cesaroni Technology - Designation: 2486 K510-P-U + Designation: 2486K510-P Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_K510_1.eng Manufacturer: Cesaroni Technology - Designation: 2486 K510-P-U + Designation: 2486K510-P Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_K515.eng Manufacturer: Cesaroni Technology - Designation: 1654-K515-16A + Designation: 1654K515-16A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_K515.rse Manufacturer: Cesaroni Technology - Designation: 1654-K515-16A + Designation: 1654K515-16A Data Format: RockSim Data Source: cert Contributor: Len Bryan +Cesaroni_K520.rse + Manufacturer: Cesaroni Technology + Designation: 1711K520-17A + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + Cesaroni_K530.eng Manufacturer: Cesaroni Technology - Designation: 1412 K530SS-16A + Designation: 1412K530-16A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_K530.rse Manufacturer: Cesaroni Technology - Designation: 1412 K530SS-16A - Data Format: RockSim - Data Source: user - Contributor: John Coker - -Cesaroni_K535.rse - Manufacturer: Cesaroni Technology - Designation: 1442 K535-P + Designation: 1412K530-16A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_K555.eng Manufacturer: Cesaroni Technology - Designation: 2406-K555_P + Designation: 2406K555-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_K555.rse Manufacturer: Cesaroni Technology - Designation: 2406-K555_P + Designation: 2406K555-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_K570.eng Manufacturer: Cesaroni Technology - Designation: 2060 K570-A + Designation: 2060K570-17A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_K570.rse Manufacturer: Cesaroni Technology - Designation: 2060 K570-A + Designation: 2060K570-17A Data Format: RockSim Data Source: user Contributor: John Coker @@ -6351,33 +6659,19 @@ Cesaroni_K575.rse Data Source: user Contributor: John Coker -Cesaroni_K580.eng - Manufacturer: Cesaroni Technology - Designation: 1852 K580-P - Data Format: RASP - Data Source: user - Contributor: Jesus Manuel Recuenco - Cesaroni_K590.rse Manufacturer: Cesaroni Technology - Designation: 1337 K590-P + Designation: 2398K590-15A Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby -Cesaroni_K610.eng +Cesaroni_K600.rse Manufacturer: Cesaroni Technology - Designation: 1531-K610-P - Data Format: RASP - Data Source: cert - Contributor: Len Bryan - -Cesaroni_K610.rse - Manufacturer: Cesaroni Technology - Designation: 1531-K610-P + Designation: 2130K600-17A Data Format: RockSim Data Source: cert - Contributor: Len Bryan + Contributor: Andre Choquette Cesaroni_K630.eng Manufacturer: Cesaroni Technology @@ -6395,147 +6689,119 @@ Cesaroni_K630.rse Cesaroni_K635.rse Manufacturer: Cesaroni Technology - Designation: 1994 K635-17A + Designation: 1994K635-17A Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby Cesaroni_K650.eng Manufacturer: Cesaroni Technology - Designation: K650-PK-21A + Designation: 1997K650-21A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_K650.rse Manufacturer: Cesaroni Technology - Designation: K650-PK-21A + Designation: 1997K650-21A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_K650_1.eng Manufacturer: Cesaroni Technology - Designation: 1750 K650SS-16A + Designation: 1750K650-16A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_K650_1.rse Manufacturer: Cesaroni Technology - Designation: 1750 K650SS-16A + Designation: 1750K650-16A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_K660.eng Manufacturer: Cesaroni Technology - Designation: 2437 K660-17A + Designation: 2437K660-17A Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_K660.rse Manufacturer: Cesaroni Technology - Designation: 2437 K660-17A + Designation: 2437K660-17A Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_K661.eng Manufacturer: Cesaroni Technology - Designation: K661-BS-P + Designation: 2430K661-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_K661.rse Manufacturer: Cesaroni Technology - Designation: K661-BS-P + Designation: 2430K661-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette -Cesaroni_K665.rse - Manufacturer: Cesaroni Technology - Designation: 1379 K665-P - Data Format: RockSim - Data Source: user - Contributor: John Coker - -Cesaroni_K671.rse - Manufacturer: Cesaroni Technology - Designation: 1806 K671-P - Data Format: RockSim - Data Source: user - Contributor: John Coker - Cesaroni_K675.eng Manufacturer: Cesaroni Technology - Designation: 2010-K675-18A + Designation: 2010K675-18A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_K675.rse Manufacturer: Cesaroni Technology - Designation: 2010-K675-18A + Designation: 2010K675-18A Data Format: RockSim Data Source: cert Contributor: Len Bryan -Cesaroni_K701.rse +Cesaroni_K711.rse Manufacturer: Cesaroni Technology - Designation: 1660 K701-P - Data Format: RockSim - Data Source: user - Contributor: John Coker - -Cesaroni_K710.eng - Manufacturer: Cesaroni Technology - Designation: 1791-K710-P - Data Format: RASP - Data Source: cert - Contributor: Len Bryan - -Cesaroni_K710.rse - Manufacturer: Cesaroni Technology - Designation: 1791-K710-P + Designation: 2377K711-18A Data Format: RockSim Data Source: cert - Contributor: Len Bryan + Contributor: Andre Choquette Cesaroni_K735.eng Manufacturer: Cesaroni Technology - Designation: K735-SK-P + Designation: 1955K735-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_K735.rse Manufacturer: Cesaroni Technology - Designation: K735-SK-P + Designation: 1955K735-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_K740.eng Manufacturer: Cesaroni Technology - Designation: 1874-K740-18A + Designation: 1874K740-18A Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_K740.rse Manufacturer: Cesaroni Technology - Designation: 1874-K740-18A + Designation: 1874K740-18A Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_K750.rse Manufacturer: Cesaroni Technology - Designation: 2352 K750-18A + Designation: 2352K750-18A Data Format: RockSim Data Source: mfr Contributor: Craig Rutherford @@ -6556,77 +6822,63 @@ Cesaroni_K780.rse Cesaroni_K815.eng Manufacturer: Cesaroni Technology - Designation: 2304-K815-P + Designation: 2304K815-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_K815.rse Manufacturer: Cesaroni Technology - Designation: 2304-K815-P + Designation: 2304K815-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_K820.eng Manufacturer: Cesaroni Technology - Designation: 2383-K820-17A + Designation: 2383K820-17A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_K820.rse Manufacturer: Cesaroni Technology - Designation: 2383-K820-17A + Designation: 2383K820-17A Data Format: RockSim Data Source: cert Contributor: Len Bryan -Cesaroni_K855.rse - Manufacturer: Cesaroni Technology - Designation: 1725 K855-P - Data Format: RockSim - Data Source: user - Contributor: John Coker - -Cesaroni_K935.eng - Manufacturer: Cesaroni Technology - Designation: 1581 K935-P - Data Format: RASP - Data Source: user - Contributor: Jesus Manuel Recuenco - Cesaroni_K940.eng Manufacturer: Cesaroni Technology - Designation: 1633-K940-18A + Designation: 1633K940-18A Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_K940.rse Manufacturer: Cesaroni Technology - Designation: 1633-K940-18A + Designation: 1633K940-18A Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_L1030.rse Manufacturer: Cesaroni Technology - Designation: 2788 L1030-P + Designation: 2788L1030-P Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby Cesaroni_L1050.eng Manufacturer: Cesaroni Technology - Designation: L1050-BS-P + Designation: 3727L1050-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_L1050.rse Manufacturer: Cesaroni Technology - Designation: L1050-BS-P + Designation: 3727L1050-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette @@ -6647,287 +6899,287 @@ Cesaroni_L1090.rse Cesaroni_L1115.eng Manufacturer: Cesaroni Technology - Designation: 5015 L1115-P-U + Designation: 5103L1115-P Data Format: RASP Data Source: mfr Contributor: Len Lekx Cesaroni_L1115.rse Manufacturer: Cesaroni Technology - Designation: 5015 L1115-P-U + Designation: 5103L1115-P Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_L1115_1.eng Manufacturer: Cesaroni Technology - Designation: 5015 L1115-P-U + Designation: 5103L1115-P Data Format: RASP Data Source: mfr Contributor: Casey Hatch -Cesaroni_L1276.eng - Manufacturer: Cesaroni Technology - Designation: L1276RR-P - Data Format: RASP - Data Source: cert - Contributor: Andre Choquette - -Cesaroni_L1276.rse - Manufacturer: Cesaroni Technology - Designation: L1276RR-P - Data Format: RockSim - Data Source: cert - Contributor: Andre Choquette - -Cesaroni_L1290.eng - Manufacturer: Cesaroni Technology - Designation: 4701-L1290-P - Data Format: RASP - Data Source: cert - Contributor: Andre Choquette - -Cesaroni_L1290.rse - Manufacturer: Cesaroni Technology - Designation: 4701-L1290-P - Data Format: RockSim - Data Source: cert - Contributor: Andre Choquette - Cesaroni_L1350.eng Manufacturer: Cesaroni Technology - Designation: L1350-CS-P + Designation: 4263L1350-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_L1350.rse Manufacturer: Cesaroni Technology - Designation: L1350-CS-P + Designation: 4263L1350-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_L1355.eng Manufacturer: Cesaroni Technology - Designation: 4025-L1355-P + Designation: 4025L1355-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_L1355.rse Manufacturer: Cesaroni Technology - Designation: 4025-L1355-P + Designation: 4025L1355-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_L1395.eng Manufacturer: Cesaroni Technology - Designation: 4895-L1395-P + Designation: 4895L1395-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_L1395.rse Manufacturer: Cesaroni Technology - Designation: 4895-L1395-P + Designation: 4895L1395-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_L1410.eng Manufacturer: Cesaroni Technology - Designation: 4828-L1410-P + Designation: 4828L1410-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_L1410.rse Manufacturer: Cesaroni Technology - Designation: 4828-L1410-P + Designation: 4828L1410-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_L1685.eng Manufacturer: Cesaroni Technology - Designation: 5069-L1685-P + Designation: 5069L1685-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_L1685.rse Manufacturer: Cesaroni Technology - Designation: 5069-L1685-P + Designation: 5069L1685-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_L1720.rse Manufacturer: Cesaroni Technology - Designation: L1720WT-P + Designation: 3659L1720-P Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_L2375.rse Manufacturer: Cesaroni Technology - Designation: L2375WT-P + Designation: 4878L2375-P Data Format: RockSim Data Source: user Contributor: John Coker +Cesaroni_L265.eng + Manufacturer: Cesaroni Technology + Designation: 2645L265-P + Data Format: RASP + Data Source: user + Contributor: Andrew Wimmer + +Cesaroni_L265.rse + Manufacturer: Cesaroni Technology + Designation: 2645L265-P + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + Cesaroni_L3150.rse Manufacturer: Cesaroni Technology - Designation: 4807 L3150-P + Designation: 4807L3150-P Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby Cesaroni_L3200.eng Manufacturer: Cesaroni Technology - Designation: L3200-VM-P + Designation: 3300L3200-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_L3200.rse Manufacturer: Cesaroni Technology - Designation: L3200-VM-P + Designation: 3300L3200-P + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + +Cesaroni_L395.eng + Manufacturer: Cesaroni Technology + Designation: 4937L395-P + Data Format: RASP + Data Source: user + Contributor: Mark Stumbaugh + +Cesaroni_L395.rse + Manufacturer: Cesaroni Technology + Designation: 4937L395-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_L585.eng Manufacturer: Cesaroni Technology - Designation: 2653-L585-P + Designation: 2653L585-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_L585.rse Manufacturer: Cesaroni Technology - Designation: 2653-L585-P + Designation: 2653L585-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_L610.eng Manufacturer: Cesaroni Technology - Designation: 4842 L610-P + Designation: 4855L610-P Data Format: RASP Data Source: cert Contributor: John Coker Cesaroni_L610.rse Manufacturer: Cesaroni Technology - Designation: 4842 L610-P + Designation: 4855L610-P Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_L640.eng Manufacturer: Cesaroni Technology - Designation: 2772-L640-P + Designation: 2772L640-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_L640.rse Manufacturer: Cesaroni Technology - Designation: 2772-L640-P + Designation: 2772L640-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_L645.eng Manufacturer: Cesaroni Technology - Designation: L645-GR-P + Designation: 3419L645-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_L645.rse Manufacturer: Cesaroni Technology - Designation: L645-GR-P + Designation: 3419L645-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_L730.eng Manufacturer: Cesaroni Technology - Designation: 2765 L730-P + Designation: 2765L730-P Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_L730.rse Manufacturer: Cesaroni Technology - Designation: 2765 L730-P + Designation: 2765L730-P Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_L800.eng Manufacturer: Cesaroni Technology - Designation: 3757 L800-P-U + Designation: 3757L800-P Data Format: RASP Data Source: mfr Contributor: Len Lekx Cesaroni_L800.rse Manufacturer: Cesaroni Technology - Designation: 3757 L800-P-U + Designation: 3757L800-P Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_L800_1.eng Manufacturer: Cesaroni Technology - Designation: 3757 L800-P-U + Designation: 3757L800-P Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_L805.eng Manufacturer: Cesaroni Technology - Designation: L805-WH-P + Designation: 2833L805-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_L805.rse Manufacturer: Cesaroni Technology - Designation: L805-WH-P + Designation: 2833L805-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_L820.eng Manufacturer: Cesaroni Technology - Designation: 2946-L820-P + Designation: 2946L820-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_L820.rse Manufacturer: Cesaroni Technology - Designation: 2946-L820-P + Designation: 2946L820-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_L851.eng Manufacturer: Cesaroni Technology - Designation: 3683-L851-P + Designation: 3683L851-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_L851.rse Manufacturer: Cesaroni Technology - Designation: 3683-L851-P + Designation: 3683L851-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette @@ -6948,81 +7200,81 @@ Cesaroni_L890.rse Cesaroni_L910.eng Manufacturer: Cesaroni Technology - Designation: L910-CS-P + Designation: 2856L910-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_L910.rse Manufacturer: Cesaroni Technology - Designation: L910-CS-P + Designation: 2856L910-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_L935.eng Manufacturer: Cesaroni Technology - Designation: 3147-L935-P + Designation: 3147L935-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_L935.rse Manufacturer: Cesaroni Technology - Designation: 3147-L935-P + Designation: 3147L935-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette -Cesaroni_L985.rse - Manufacturer: Cesaroni Technology - Designation: 2665 L985-P - Data Format: RockSim - Data Source: user - Contributor: John Coker - Cesaroni_L990.eng Manufacturer: Cesaroni Technology - Designation: 2771-L990-P + Designation: 2771L990-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_L990.rse Manufacturer: Cesaroni Technology - Designation: 2771-L990-P + Designation: 2771L990-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_L995.eng Manufacturer: Cesaroni Technology - Designation: 3618-L995-P + Designation: 3618L995-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_L995.rse Manufacturer: Cesaroni Technology - Designation: 3618-L995-P + Designation: 3618L995-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_M1060.eng Manufacturer: Cesaroni Technology - Designation: 7441 M1060-P + Designation: 7313M1060-P Data Format: RASP Data Source: cert Contributor: John Coker Cesaroni_M1060.rse Manufacturer: Cesaroni Technology - Designation: 7441 M1060-P + Designation: 7313M1060-P Data Format: RockSim Data Source: user Contributor: John Coker +Cesaroni_M1101.rse + Manufacturer: Cesaroni Technology + Designation: 5198M1101-P + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + Cesaroni_M1160.eng Manufacturer: Cesaroni Technology Designation: 5880M1160-P @@ -7039,63 +7291,63 @@ Cesaroni_M1160.rse Cesaroni_M1230.eng Manufacturer: Cesaroni Technology - Designation: 5506-M1230-IM-P + Designation: 5506M1230-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M1230.rse Manufacturer: Cesaroni Technology - Designation: 5506-M1230-IM-P + Designation: 5506M1230-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M1290.eng Manufacturer: Cesaroni Technology - Designation: 7649-M1290-P + Designation: 7469M1290-P Data Format: RASP Data Source: mfr Contributor: Andre Choquette Cesaroni_M1290.rse Manufacturer: Cesaroni Technology - Designation: 7649-M1290-P + Designation: 7469M1290-P Data Format: RockSim Data Source: mfr Contributor: Andre Choquette Cesaroni_M1300.eng Manufacturer: Cesaroni Technology - Designation: 6438-M1300-P + Designation: 6438M1300-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M1300.rse Manufacturer: Cesaroni Technology - Designation: 6438-M1300-P + Designation: 6438M1300-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M1400.eng Manufacturer: Cesaroni Technology - Designation: 6251 M1400-P-U + Designation: 6248M1400-P Data Format: RASP Data Source: mfr Contributor: Len Lekx Cesaroni_M1400.rse Manufacturer: Cesaroni Technology - Designation: 6251 M1400-P-U + Designation: 6248M1400-P Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_M1400_1.eng Manufacturer: Cesaroni Technology - Designation: 6251 M1400-P-U + Designation: 6248M1400-P Data Format: RASP Data Source: mfr Contributor: Casey Hatch @@ -7109,182 +7361,168 @@ Cesaroni_M1401.eng Cesaroni_M1450.eng Manufacturer: Cesaroni Technology - Designation: 9955 M1450-P + Designation: 9955M1450-P Data Format: RASP Data Source: cert Contributor: John Coker Cesaroni_M1450.rse Manufacturer: Cesaroni Technology - Designation: 9955 M1450-P + Designation: 9955M1450-P Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_M1520.eng Manufacturer: Cesaroni Technology - Designation: 7579-M1520-BS-P + Designation: 7579M1520-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M1520.rse Manufacturer: Cesaroni Technology - Designation: 7579-M1520-BS-P + Designation: 7579M1520-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M1540.eng Manufacturer: Cesaroni Technology - Designation: 6819-M1540-P + Designation: 6819M1540-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_M1540.rse Manufacturer: Cesaroni Technology - Designation: 6819-M1540-P + Designation: 6819M1540-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_M1545.eng Manufacturer: Cesaroni Technology - Designation: 8187-M1545-P + Designation: 8187M1545-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_M1545.rse Manufacturer: Cesaroni Technology - Designation: 8187-M1545-P + Designation: 8187M1545-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_M1560.eng Manufacturer: Cesaroni Technology - Designation: 5342-M1560-P + Designation: 5342M1560-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M1560.rse Manufacturer: Cesaroni Technology - Designation: 5342-M1560-P + Designation: 5342M1560-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M1590.eng Manufacturer: Cesaroni Technology - Designation: 7545-M1590-P + Designation: 7545M1590-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M1590.rse Manufacturer: Cesaroni Technology - Designation: 7545-M1590-P - Data Format: RockSim - Data Source: cert - Contributor: Andre Choquette - -Cesaroni_M1630.eng - Manufacturer: Cesaroni Technology - Designation: 8212-M1630-P - Data Format: RASP - Data Source: cert - Contributor: Andre Choquette - -Cesaroni_M1630.rse - Manufacturer: Cesaroni Technology - Designation: 8212-M1630-P + Designation: 7545M1590-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M1670.eng Manufacturer: Cesaroni Technology - Designation: 6026-M1670-P + Designation: 6026M1670-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_M1670.rse Manufacturer: Cesaroni Technology - Designation: 6026-M1670-P + Designation: 6026M1670-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_M1675.eng Manufacturer: Cesaroni Technology - Designation: 6162-M1675-P + Designation: 6162M1675-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M1675.rse Manufacturer: Cesaroni Technology - Designation: 6162-M1675-P + Designation: 6162M1675-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M1770.rse Manufacturer: Cesaroni Technology - Designation: 5933-M1770-SK + Designation: 5933M1770-P Data Format: RockSim Data Source: cert Contributor: Mark Koelsch Cesaroni_M1770_1.rse Manufacturer: Cesaroni Technology - Designation: 5933-M1770-SK + Designation: 5933M1770-P Data Format: RockSim Data Source: cert Contributor: Mark Koelsch Cesaroni_M1790.eng Manufacturer: Cesaroni Technology - Designation: 8088-M1790-SK-P + Designation: 8088M1790-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M1790.rse Manufacturer: Cesaroni Technology - Designation: 8088-M1790-SK-P + Designation: 8088M1790-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M1800.eng Manufacturer: Cesaroni Technology - Designation: 9870-M1800-BS-P + Designation: 9870M1800-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M1800.rse Manufacturer: Cesaroni Technology - Designation: 9870-M1800-BS-P + Designation: 9870M1800-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M1810.eng Manufacturer: Cesaroni Technology - Designation: 6128-M1810-RL-P + Designation: 6128M1810-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_M1810.rse Manufacturer: Cesaroni Technology - Designation: 6128-M1810-RL-P + Designation: 6128M1810-P Data Format: RockSim Data Source: cert Contributor: Len Bryan @@ -7305,539 +7543,532 @@ Cesaroni_M1830.rse Cesaroni_M1890.rse Manufacturer: Cesaroni Technology - Designation: 9876 M1890-P + Designation: 9876M1890-P Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby Cesaroni_M2020.eng Manufacturer: Cesaroni Technology - Designation: 8429-M2020-P + Designation: 8429M2020-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_M2020.rse Manufacturer: Cesaroni Technology - Designation: 8429-M2020-P + Designation: 8429M2020-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_M2045.eng Manufacturer: Cesaroni Technology - Designation: 7388-M2045-BS-P + Designation: 7388M2045-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M2045.rse Manufacturer: Cesaroni Technology - Designation: 7388-M2045-BS-P - Data Format: RockSim - Data Source: cert - Contributor: Andre Choquette - -Cesaroni_M2050.eng - Manufacturer: Cesaroni Technology - Designation: 6774-M2050-SK-P - Data Format: RASP - Data Source: cert - Contributor: Andre Choquette - -Cesaroni_M2050.rse - Manufacturer: Cesaroni Technology - Designation: 6774-M2050-SK-P + Designation: 7388M2045-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M2075.eng Manufacturer: Cesaroni Technology - Designation: 6287-M2075-P + Designation: 6287M2075-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M2075.rse Manufacturer: Cesaroni Technology - Designation: 6287-M2075-P + Designation: 6287M2075-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M2080.eng Manufacturer: Cesaroni Technology - Designation: 6827-M2080-P + Designation: 6827M2080-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_M2080.rse Manufacturer: Cesaroni Technology - Designation: 6827-M2080-P + Designation: 6827M2080-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_M2150.eng Manufacturer: Cesaroni Technology - Designation: 7455-M2150-RL-P + Designation: 7455M2150-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M2150.rse Manufacturer: Cesaroni Technology - Designation: 7455-M2150-RL-P + Designation: 7455M2150-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M2245.eng Manufacturer: Cesaroni Technology - Designation: 9977-M2245-IM-P + Designation: 9977M2245-P Data Format: RASP Data Source: cert Contributor: Mark Koelsch Cesaroni_M2245.rse Manufacturer: Cesaroni Technology - Designation: 9977-M2245-IM-P + Designation: 9977M2245-P Data Format: RockSim Data Source: cert Contributor: Mark Koelsch Cesaroni_M2250.eng Manufacturer: Cesaroni Technology - Designation: 5472-M2250-P + Designation: 5472M2250-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M2250.rse Manufacturer: Cesaroni Technology - Designation: 5472-M2250-P + Designation: 5472M2250-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M2505.eng Manufacturer: Cesaroni Technology - Designation: 7450 M2505-P + Designation: 7450M2505-P Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_M2505.rse Manufacturer: Cesaroni Technology - Designation: 7450 M2505-P + Designation: 7450M2505-P Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_M3100.eng Manufacturer: Cesaroni Technology - Designation: 6118-M3100-P + Designation: 6118M3100-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M3100.rse Manufacturer: Cesaroni Technology - Designation: 6118-M3100-P + Designation: 6118M3100-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M3400.eng Manufacturer: Cesaroni Technology - Designation: 9994-M3400-P + Designation: 9994M3400-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M3400.rse Manufacturer: Cesaroni Technology - Designation: 9994-M3400-P + Designation: 9994M3400-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M3700.eng Manufacturer: Cesaroni Technology - Designation: 6800-M3700-P + Designation: 6800M3700-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M3700.rse Manufacturer: Cesaroni Technology - Designation: 6800-M3700-P + Designation: 6800M3700-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M4770.rse Manufacturer: Cesaroni Technology - Designation: 7312 M4770-P + Designation: 7312M4770-P Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby Cesaroni_M520.eng Manufacturer: Cesaroni Technology - Designation: 7400 M520-P + Designation: 7441M520-P Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_M520.rse Manufacturer: Cesaroni Technology - Designation: 7400 M520-P + Designation: 7441M520-P Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_M6400.eng Manufacturer: Cesaroni Technology - Designation: 8634-M6400-P + Designation: 8634M6400-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M6400.rse Manufacturer: Cesaroni Technology - Designation: 8634-M6400-P + Designation: 8634M6400-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_M795.eng Manufacturer: Cesaroni Technology - Designation: 10133 M795-P + Designation: 10133M795-P Data Format: RASP Data Source: cert Contributor: John Coker Cesaroni_M795.rse Manufacturer: Cesaroni Technology - Designation: 10133 M795-P + Designation: 10133M795-P Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_M840.eng Manufacturer: Cesaroni Technology - Designation: 7521-M840-P + Designation: 7521M840-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_M840.rse Manufacturer: Cesaroni Technology - Designation: 7521-M840-P + Designation: 7521M840-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_N10000.eng Manufacturer: Cesaroni Technology - Designation: 10347-N10000-P + Designation: 10347N10000-P Data Format: RASP Data Source: user Contributor: Andre Choquette Cesaroni_N10000.rse Manufacturer: Cesaroni Technology - Designation: 10347-N10000-P + Designation: 10347N10000-P Data Format: RockSim Data Source: mfr Contributor: Andre Choquette Cesaroni_N1100.eng Manufacturer: Cesaroni Technology - Designation: 14005 N1100-P + Designation: 14046N1100-P Data Format: RASP Data Source: cert Contributor: John Coker Cesaroni_N1100.rse Manufacturer: Cesaroni Technology - Designation: 14005 N1100-P + Designation: 14046N1100-P Data Format: RockSim Data Source: user Contributor: John Coker +Cesaroni_N1560.rse + Manufacturer: Cesaroni Technology + Designation: 16803N1560-P + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + Cesaroni_N1800.eng Manufacturer: Cesaroni Technology - Designation: 0367-N1800-P + Designation: 10367N1800-P Data Format: RASP Data Source: mfr Contributor: Andre Choquette Cesaroni_N1800.rse Manufacturer: Cesaroni Technology - Designation: 0367-N1800-P + Designation: 10367N1800-P Data Format: RockSim Data Source: mfr Contributor: Andre Choquette Cesaroni_N1975.eng Manufacturer: Cesaroni Technology - Designation: 14272-N1975-P + Designation: 14272N1975-P Data Format: RASP Data Source: user Contributor: Andre Choquette Cesaroni_N1975.rse Manufacturer: Cesaroni Technology - Designation: 14272-N1975-P + Designation: 14272N1975-P Data Format: RockSim Data Source: mfr Contributor: Andre Choquette Cesaroni_N2200.eng Manufacturer: Cesaroni Technology - Designation: CTI N2200-PK-P + Designation: 12066N2200-P Data Format: RASP Data Source: user Contributor: Greg Gardner Cesaroni_N2200.rse Manufacturer: Cesaroni Technology - Designation: CTI N2200-PK-P + Designation: 12066N2200-P Data Format: RockSim Data Source: cert Contributor: Mark Koelsch Cesaroni_N2500.eng Manufacturer: Cesaroni Technology - Designation: 13766 N2500-P + Designation: 13767N2500-P Data Format: RASP Data Source: mfr Contributor: Casey Hatch Cesaroni_N2500.rse Manufacturer: Cesaroni Technology - Designation: 13766 N2500-P + Designation: 13767N2500-P Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_N2501.eng Manufacturer: Cesaroni Technology - Designation: 15227-N2501-P + Designation: 15227N2501-P Data Format: RASP Data Source: mfr Contributor: Andre Choquette Cesaroni_N2501.rse Manufacturer: Cesaroni Technology - Designation: 15227-N2501-P + Designation: 15227N2501-P Data Format: RockSim Data Source: mfr Contributor: Andre Choquette Cesaroni_N2540.eng Manufacturer: Cesaroni Technology - Designation: N2540-GR-P + Designation: 17907N2540-P Data Format: RASP Data Source: user Contributor: Howard Smart Cesaroni_N2540.rse Manufacturer: Cesaroni Technology - Designation: N2540-GR-P + Designation: 17907N2540-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_N2600.eng Manufacturer: Cesaroni Technology - Designation: 11077-N2600-SK-P + Designation: 11077N2600-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_N2600.rse Manufacturer: Cesaroni Technology - Designation: 11077-N2600-SK-P + Designation: 11077N2600-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_N2850.eng Manufacturer: Cesaroni Technology - Designation: 13767-N2850-BS-P + Designation: 13767N2850-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_N2850.rse Manufacturer: Cesaroni Technology - Designation: 13767-N2850-BS-P + Designation: 13767N2850-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_N2900.eng Manufacturer: Cesaroni Technology - Designation: 17613-N2900-CL-P + Designation: 17613N2900-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_N2900.rse Manufacturer: Cesaroni Technology - Designation: 17613-N2900-CL-P + Designation: 17613N2900-P Data Format: RockSim Data Source: user Contributor: Andre Choquette Cesaroni_N3180.rse Manufacturer: Cesaroni Technology - Designation: 14200 N3180-P + Designation: 14200N3180-P Data Format: RockSim Data Source: mfr Contributor: Thomas Raithby Cesaroni_N3301.eng Manufacturer: Cesaroni Technology - Designation: 19318-N3301-P + Designation: 19318N3301-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_N3301.rse Manufacturer: Cesaroni Technology - Designation: 19318-N3301-P + Designation: 19318N3301-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_N3400.eng Manufacturer: Cesaroni Technology - Designation: 14263-N3400-P + Designation: 14263N3400-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_N3400.rse Manufacturer: Cesaroni Technology - Designation: 14263-N3400-P + Designation: 14263N3400-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_N3800.eng Manufacturer: Cesaroni Technology - Designation: 17631-N3800-P + Designation: 17632N3800-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_N3800.rse Manufacturer: Cesaroni Technology - Designation: 17631-N3800-P + Designation: 17632N3800-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_N4100.eng Manufacturer: Cesaroni Technology - Designation: 17790-N4100-P + Designation: 17790N4100-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_N4100.rse Manufacturer: Cesaroni Technology - Designation: 17790-N4100-P + Designation: 17790N4100-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_N5600.eng Manufacturer: Cesaroni Technology - Designation: N5600WT + Designation: 13628N5600-P Data Format: RASP Data Source: cert Contributor: Mark Koelsch Cesaroni_N5600.rse Manufacturer: Cesaroni Technology - Designation: N5600WT + Designation: 13628N5600-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_N5800.eng Manufacturer: Cesaroni Technology - Designation: 20146-N5800-P + Designation: 20146N5800-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_N5800.rse Manufacturer: Cesaroni Technology - Designation: 20146-N5800-P + Designation: 20146N5800-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_O25000.eng Manufacturer: Cesaroni Technology - Designation: 30795-O25000-P + Designation: 30795O25000-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_O25000.rse Manufacturer: Cesaroni Technology - Designation: 30795-O25000-P + Designation: 30795O25000-P Data Format: RockSim Data Source: user Contributor: Andre Choquette Cesaroni_O3400.eng Manufacturer: Cesaroni Technology - Designation: 21062-O3400-P + Designation: 21062O3400-P Data Format: RASP Data Source: cert Contributor: Andre Choquette Cesaroni_O3400.rse Manufacturer: Cesaroni Technology - Designation: 21062-O3400-P + Designation: 21062O3400-P Data Format: RockSim Data Source: cert Contributor: Andre Choquette Cesaroni_O3700.eng Manufacturer: Cesaroni Technology - Designation: 29920-O3700-P + Designation: 29920O3700-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_O3700.rse Manufacturer: Cesaroni Technology - Designation: 29920-O3700-P + Designation: 29920O3700-P Data Format: RockSim Data Source: cert Contributor: Len Bryan Cesaroni_O4900.eng Manufacturer: Cesaroni Technology - Designation: 37148-O4900-P + Designation: 37148O4900-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_O4900.rse Manufacturer: Cesaroni Technology - Designation: 37148-O4900-P + Designation: 37148O4900-P Data Format: RockSim Data Source: cert Contributor: Len Bryan @@ -7858,28 +8089,28 @@ Cesaroni_O5100.rse Cesaroni_O5800.eng Manufacturer: Cesaroni Technology - Designation: 30605 O5800-P + Designation: 30600O5800-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_O5800.rse Manufacturer: Cesaroni Technology - Designation: 30605 O5800-P + Designation: 30600O5800-P Data Format: RockSim Data Source: user Contributor: John Coker Cesaroni_O8000.eng Manufacturer: Cesaroni Technology - Designation: 40960 O8000-P + Designation: 4096O8000-P Data Format: RASP Data Source: cert Contributor: Len Bryan Cesaroni_O8000.rse Manufacturer: Cesaroni Technology - Designation: 40960 O8000-P + Designation: 4096O8000-P Data Format: RockSim Data Source: user Contributor: John Coker @@ -9571,6 +9802,13 @@ GR_M1665.eng Data Source: mfr Contributor: John Coker +GR_O2700.eng + Manufacturer: Gorilla Rocket Motors + Designation: O2700BL + Data Format: RASP + Data Source: cert + Contributor: Mark Koelsch + Hypertek_I130.eng Manufacturer: Hypertek Designation: 300CC098J - I130 @@ -10203,18 +10441,32 @@ KBA_M2900.rse KBA_M3500.eng Manufacturer: Kosdon by AeroTech - Designation: M3500R-P + Designation: M3500R Data Format: RASP Data Source: cert Contributor: John Coker KBA_M3500.rse Manufacturer: Kosdon by AeroTech - Designation: M3500R-P + Designation: M3500R Data Format: RockSim Data Source: mfr Contributor: John Coker +Kosdon_G65.eng + Manufacturer: Kosdon TRM + Designation: G65DH + Data Format: RASP + Data Source: cert + Contributor: Mark Koelsch + +Kosdon_H155.eng + Manufacturer: Kosdon TRM + Designation: H155F + Data Format: RASP + Data Source: cert + Contributor: Mark Koelsch + Kosdon_I560.eng Manufacturer: Kosdon TRM Designation: I560F @@ -10397,6 +10649,13 @@ Loki_J175.rse Data Source: user Contributor: John Coker +Loki_J300.eng + Manufacturer: Loki Research + Designation: J300 LR + Data Format: RASP + Data Source: cert + Contributor: Mark Koelsch + Loki_J320.eng Manufacturer: Loki Research Designation: J320-LR @@ -10670,6 +10929,16 @@ Loki_N3800.rse Data Source: mfr Contributor: Mark Koelsch +Mfr_Motor1007.eng + Data Format: RASP + Data Source: mfr + Contributor: Mark Koelsch + +Mfr_Motor643.rse + Data Format: RockSim + Data Source: cert + Contributor: Andre Choquette + PML_F50.eng Manufacturer: Public Missiles, Ltd. Designation: F50T @@ -10719,6 +10988,13 @@ PP_J140.eng Data Source: user Contributor: John Coker +Quest_A3.eng + Manufacturer: Quest Aerospace + Designation: A3T + Data Format: RASP + Data Source: cert + Contributor: Howard Smart + Quest_A6.eng Manufacturer: Quest Aerospace Designation: A6 @@ -10803,6 +11079,13 @@ Quest_D8.eng Data Source: cert Contributor: John Coker +Quest_Micro_Maxx.eng + Manufacturer: Quest Aerospace + Designation: Micro Maxx II + Data Format: RASP + Data Source: cert + Contributor: John Coker + Quest_Micro_Maxx.rse Manufacturer: Quest Aerospace Designation: Micro Maxx @@ -10810,20 +11093,27 @@ Quest_Micro_Maxx.rse Data Source: user Contributor: John Coker -Quest_Micro_Maxx_II.eng +Quest_Micro_Maxx_1.eng Manufacturer: Quest Aerospace - Designation: Micro Maxx II + Designation: Micro Maxx Data Format: RASP - Data Source: user - Contributor: Bernard Cawley + Data Source: cert + Contributor: John Coker -Quest_Micro_Maxx_II.rse +Quest_Micro_Maxx_1.rse Manufacturer: Quest Aerospace Designation: Micro Maxx II Data Format: RockSim Data Source: user Contributor: John Coker +Quest_Micro_Maxx_2.eng + Manufacturer: Quest Aerospace + Designation: Micro Maxx II + Data Format: RASP + Data Source: user + Contributor: Bernard Cawley + RATT_H70.eng Manufacturer: R.A.T.T. Works Designation: H70 @@ -10971,6 +11261,27 @@ Roadrunner_G80.rse Data Source: mfr Contributor: Roadrunner Rocketry +SCR_A3.rse + Manufacturer: Southern Cross Rocketry + Designation: SCR-A8 + Data Format: RockSim + Data Source: mfr + Contributor: John Coker + +SCR_B4.rse + Manufacturer: Southern Cross Rocketry + Designation: SCR-B6 + Data Format: RockSim + Data Source: mfr + Contributor: John Coker + +SCR_C3.rse + Manufacturer: Southern Cross Rocketry + Designation: SCR-C6 + Data Format: RockSim + Data Source: mfr + Contributor: John Coker + SkyR_G125.eng Manufacturer: Sky Ripper Systems Designation: G125 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_I223.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_I223.eng new file mode 100644 index 000000000..76ee91688 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_I223.eng @@ -0,0 +1,16 @@ +; CTI Pro38-4G 434 I223 Skidmark 14A +I223SK 38 302 5-7-9-11-14 0.266 0.494 CTI + 0.016 199.183 + 0.024 260.157 + 0.07 207.313 + 0.148 227.637 + 0.425 244.71 + 0.721 254.466 + 1.015 256.905 + 1.3 248.775 + 1.459 240.645 + 1.615 234.954 + 1.712 195.931 + 1.782 119.51 + 1.9 24.39 + 1.984 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_I223.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_I223.rse new file mode 100644 index 000000000..30e13e05d --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_I223.rse @@ -0,0 +1,29 @@ + + + + CTI Pro38-4G 434 I223 Skidmark 14A + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_I297.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_I297.eng new file mode 100644 index 000000000..d9a3fd855 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_I297.eng @@ -0,0 +1,19 @@ +; CTI Pro38-5G 543 I297 Skidmark 15A +I297SM 38 360 6-8-10-12-15 0.329 0.591 CTI + 0.013 340.903 + 0.036 375.121 + 0.069 354.844 + 0.129 335.834 + 0.281 338.369 + 0.662 344.705 + 0.855 344.705 + 1.084 329.498 + 1.295 319.359 + 1.359 313.023 + 1.447 314.29 + 1.534 269.935 + 1.637 119.126 + 1.681 69.701 + 1.74 40.554 + 1.846 12.673 + 1.943 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_I297.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_I297.rse new file mode 100644 index 000000000..748785378 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_I297.rse @@ -0,0 +1,32 @@ + + + + CTI Pro38-5G 543 I297 Skidmark 15A + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J1365.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J1365.rse new file mode 100644 index 000000000..1ed5e9705 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J1365.rse @@ -0,0 +1,49 @@ + + + +Input by Tim Van Milligan for RockSim users. Used John Coker's ThrustCruve +Tracer program. Thrust curve from the AMW web site and CAR/NAR/TRA certified +rocket motor list dated 9/28/08. The total weight was estimated based on +similar motors such as the J325TT, J395RR, and the J401BB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J325.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J325.rse new file mode 100644 index 000000000..16a9cb26a --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J325.rse @@ -0,0 +1,44 @@ + + + + Entered by Tim Van Milligan for RockSim users. Used ThrustCurve Tracer by John +Coker. Data from CAR web site, thrust curve from AMW web site. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J395.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J395.rse new file mode 100644 index 000000000..78e06660c --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J395.rse @@ -0,0 +1,67 @@ + + + + Entered by Tim Van Milligan for RockSim users. Used ThrustCurve Tracer by John +Coker. Data from CAR web site, thrust curve from AMW web site. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J400.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J400.rse index e77e573f7..75e0e6968 100644 --- a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J400.rse +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J400.rse @@ -1,42 +1,61 @@ - - -AMW J400 RASP.ENG file made from NAR published data -File produced April 19, 2004 -The total impulse, peak thrust, average thrust and burn time are -the same as the averaged static test data on the NAR web site in -the certification file. The curve drawn with these data points is as -close to the certification curve as can be with such a limited -number of points (32) allowed with wRASP up to v1.6. + + +Entered by Tim Van Milligan for RockSim users. Used ThrustCurve Tracer by John +Coker. Data from CAR web site, thrust curve from AMW web site. - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J400_1.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J400_1.rse new file mode 100644 index 000000000..e77e573f7 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J400_1.rse @@ -0,0 +1,42 @@ + + + +AMW J400 RASP.ENG file made from NAR published data +File produced April 19, 2004 +The total impulse, peak thrust, average thrust and burn time are +the same as the averaged static test data on the NAR web site in +the certification file. The curve drawn with these data points is as +close to the certification curve as can be with such a limited +number of points (32) allowed with wRASP up to v1.6. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J440.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J440.eng index 40adabd84..54d1f807e 100644 --- a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J440.eng +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J440.eng @@ -1,27 +1,16 @@ -;Animal Motor Works 38-640 -J440BB 38 369 20 0.3853 0.6985 AMW -0.007 468.505 -0.022 509.996 -0.037 527.687 -0.052 532.792 -0.082 530.181 -0.127 525.586 -0.202 521.566 -0.277 519.840 -0.352 521.522 -0.426 525.414 -0.501 531.248 -0.576 538.724 -0.651 541.761 -0.726 538.508 -0.801 531.072 -0.876 516.175 -0.950 494.942 -1.025 477.251 -1.100 433.297 -1.175 313.900 -1.250 187.467 -1.325 101.546 -1.400 45.751 -1.474 22.083 -1.497 0.000 +J440-BB 54 326 0 0.536 1.229 AMW/ProX +0.01 30 +0.02 700 +0.06 790 +0.1 800 +0.2 760 +0.4 725 +0.6 695 +0.8 680 +1 658 +1.32 600 +1.55 400 +1.7 180 +1.87 175 +2 75 +2.1 0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J440.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J440.rse index 1046b9ab6..2cbbf9c5b 100644 --- a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J440.rse +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J440.rse @@ -1,34 +1,29 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J440_1.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J440_1.eng new file mode 100644 index 000000000..40adabd84 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J440_1.eng @@ -0,0 +1,27 @@ +;Animal Motor Works 38-640 +J440BB 38 369 20 0.3853 0.6985 AMW +0.007 468.505 +0.022 509.996 +0.037 527.687 +0.052 532.792 +0.082 530.181 +0.127 525.586 +0.202 521.566 +0.277 519.840 +0.352 521.522 +0.426 525.414 +0.501 531.248 +0.576 538.724 +0.651 541.761 +0.726 538.508 +0.801 531.072 +0.876 516.175 +0.950 494.942 +1.025 477.251 +1.100 433.297 +1.175 313.900 +1.250 187.467 +1.325 101.546 +1.400 45.751 +1.474 22.083 +1.497 0.000 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J440_1.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J440_1.rse new file mode 100644 index 000000000..1046b9ab6 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J440_1.rse @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J475.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J475.eng new file mode 100644 index 000000000..92f798a16 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J475.eng @@ -0,0 +1,23 @@ +J475-BB 54 403 0 0.714 1.493 AMW/ProX +0.03 30 +0.04 500 +0.075 600 +0.1 515 +0.2 530 +0.4 540 +0.6 535 +0.8 535 +1 530 +1.2 520 +1.4 510 +1.6 500 +1.8 490 +2 480 +2.2 490 +2.28 450 +2.43 180 +2.5 100 +2.6 60 +2.8 28 +3 10 +3.2 0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J475.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J475.rse new file mode 100644 index 000000000..c5810da34 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J475.rse @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J475_1.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J475_1.rse new file mode 100644 index 000000000..5785fc859 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J475_1.rse @@ -0,0 +1,71 @@ + + + +Entered by Tim Van Milligan for RockSim users. Used ThrustCurve Tracer by John +Coker. Data from CAR web site, thrust curve from AMW web site. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J745.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J745.rse new file mode 100644 index 000000000..995c03ff3 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_J745.rse @@ -0,0 +1,75 @@ + + + +Entered by Tim Van Milligan for RockSim users. Used ThrustCurve Tracer by John +Coker. Data from CAR web site, thrust curve from AMW web site. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1075.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1075.eng index 6a1cbb416..11597221f 100644 --- a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1075.eng +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1075.eng @@ -1,39 +1,41 @@ -; -;Animal Motor Works K1075 RASP.ENG file made from NAR data -;File produced Feb 22, 2003 -;The total impulse, peak thrust, average thrust and burn time are -;the same as the averaged static test data on the NAR web site in -;the certification file. The curve drawn with these data points is as -;close to the certification curve as can be with such a limited -;number of points (32) allowed with wRASP up to v1.6. -K1075GG 54 726 100 1.3999 2.6658 Animal_Motor_Works -0.009 672.664 -0.015 963.511 -0.022 860.518 -0.047 987.857 -0.075 975.835 -0.106 921.332 -0.215 958.001 -0.529 1092.05 -0.878 1220.29 -1.077 1269.39 -1.158 1311.47 -1.235 1293.43 -1.448 1330.5 -1.577 1318.48 -1.672 1319.48 -1.721 1337.52 -1.759 1337.52 -1.805 1337.52 -1.829 1331.5 -1.856 1384.67 -1.889 1277.4 -1.906 1216.29 -1.938 1052.98 -1.96 871.338 -1.988 659.239 -2.027 453.352 -2.062 301.967 -2.115 138.46 -2.168 41.608 -2.2 0 +; AMW 54-2500 Skidmark Plugged +2245-K1075-SK-P 54 728 P 1.259 2.6388 CTI + 0.0070 1574.366 + 0.012 1038.184 + 0.017 1476.101 + 0.024 1083.044 + 0.029 1365.02 + 0.034 1117.223 + 0.041 1266.756 + 0.046 1162.083 + 0.049 1226.168 + 0.069 1159.947 + 0.107 1130.04 + 0.151 1108.678 + 0.21 1100.134 + 0.274 1102.27 + 0.332 1102.27 + 0.432 1115.087 + 0.523 1119.359 + 0.611 1132.176 + 0.674 1140.721 + 0.766 1149.266 + 0.881 1159.947 + 0.979 1179.172 + 1.141 1191.989 + 1.257 1189.853 + 1.379 1191.989 + 1.504 1202.67 + 1.599 1211.215 + 1.67 1232.577 + 1.744 1249.666 + 1.772 1226.168 + 1.802 1155.674 + 1.841 993.324 + 1.888 736.983 + 1.944 455.007 + 2.002 267.023 + 2.065 128.171 + 2.11 68.358 + 2.149 34.179 + 2.198 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1075.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1075.rse index 8f22b5d92..e4bfa0b69 100644 --- a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1075.rse +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1075.rse @@ -1,47 +1,54 @@ - - -Animal Motor Works K1075 RASP.ENG file made from NAR data -File produced Feb 22, 2003 -The total impulse, peak thrust, average thrust and burn time are -the same as the averaged static test data on the NAR web site in -the certification file. The curve drawn with these data points is as -close to the certification curve as can be with such a limited -number of points (32) allowed with wRASP up to v1.6. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + AMW 54-2500 Skidmark Plugged + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1075_1.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1075_1.eng new file mode 100644 index 000000000..6a1cbb416 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1075_1.eng @@ -0,0 +1,39 @@ +; +;Animal Motor Works K1075 RASP.ENG file made from NAR data +;File produced Feb 22, 2003 +;The total impulse, peak thrust, average thrust and burn time are +;the same as the averaged static test data on the NAR web site in +;the certification file. The curve drawn with these data points is as +;close to the certification curve as can be with such a limited +;number of points (32) allowed with wRASP up to v1.6. +K1075GG 54 726 100 1.3999 2.6658 Animal_Motor_Works +0.009 672.664 +0.015 963.511 +0.022 860.518 +0.047 987.857 +0.075 975.835 +0.106 921.332 +0.215 958.001 +0.529 1092.05 +0.878 1220.29 +1.077 1269.39 +1.158 1311.47 +1.235 1293.43 +1.448 1330.5 +1.577 1318.48 +1.672 1319.48 +1.721 1337.52 +1.759 1337.52 +1.805 1337.52 +1.829 1331.5 +1.856 1384.67 +1.889 1277.4 +1.906 1216.29 +1.938 1052.98 +1.96 871.338 +1.988 659.239 +2.027 453.352 +2.062 301.967 +2.115 138.46 +2.168 41.608 +2.2 0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1075_1.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1075_1.rse new file mode 100644 index 000000000..8f22b5d92 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1075_1.rse @@ -0,0 +1,47 @@ + + + +Animal Motor Works K1075 RASP.ENG file made from NAR data +File produced Feb 22, 2003 +The total impulse, peak thrust, average thrust and burn time are +the same as the averaged static test data on the NAR web site in +the certification file. The curve drawn with these data points is as +close to the certification curve as can be with such a limited +number of points (32) allowed with wRASP up to v1.6. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1130.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1130.eng new file mode 100644 index 000000000..80fb6e188 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1130.eng @@ -0,0 +1,18 @@ +; Blue Baboon +K1130-BB 54 728 0 1.359 2.574 AMW/ProX +0.01 1000 +0.013 1490 +0.02 1548 +0.04 1500 +0.09 1335 +0.2 1325 +1 1325 +1.5 1325 +1.63 1345 +1.7 1155 +1.8 805 +1.9 685 +2 475 +2.1 315 +2.2 145 +2.3 0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1130.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1130.rse new file mode 100644 index 000000000..46c6f6b22 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1130.rse @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1250.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1250.eng new file mode 100644 index 000000000..ee6b3a269 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1250.eng @@ -0,0 +1,18 @@ +K1250-WW 54 491 0 0.925 1.815 AMW/ProX +0.01 600 +0.02 1400 +0.03 1610 +0.05 1360 +0.07 1410 +0.1 1440 +0.15 1470 +0.2 1480 +0.4 1480 +0.8 1395 +1.28 1185 +1.36 985 +1.4 680 +1.45 570 +1.5 210 +1.6 60 +1.7 0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1250.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1250.rse new file mode 100644 index 000000000..00369aad5 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1250.rse @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1720.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1720.rse new file mode 100644 index 000000000..d07a1eb69 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K1720.rse @@ -0,0 +1,65 @@ + + + +Input by Tim Van Milligan for RockSim users. Used John Coker's ThrustCruve +Tracer program. Thrust curve from the AMW web site and CAR/NAR/TRA certified +rocket motor list dated 9/28/08. The total weight was estimated based on +similar motors such as the K455TT, K535RR and K665BB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K455.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K455.rse new file mode 100644 index 000000000..5517d6ca4 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K455.rse @@ -0,0 +1,59 @@ + + + +Entered by Tim Van Milligan for RockSim users. Used ThrustCurve Tracer by John +Coker. Data from CAR web site, thrust curve from AMW web site. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K535.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K535.rse new file mode 100644 index 000000000..9830181a7 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K535.rse @@ -0,0 +1,85 @@ + + + +Entered by Tim Van Milligan for RockSim users. Used ThrustCurve Tracer by John +Coker. Data from CAR web site, thrust curve from AMW web site. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K580.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K580.eng new file mode 100644 index 000000000..0d67f6e01 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K580.eng @@ -0,0 +1,48 @@ +;Created by Jesus Manuel Recuenco Andres 2011 +;with Tctracer v1.0 +K580 54.0 491.00 1000 0.89500 1.82300 Cesaroni + 0.02 624.92 + 0.03 1076.60 + 0.07 846.73 + 0.12 884.56 + 0.20 855.46 + 0.29 840.91 + 0.39 835.09 + 0.48 822.58 + 0.56 808.60 + 0.66 800.62 + 0.74 784.64 + 0.83 776.66 + 0.90 762.68 + 0.96 760.68 + 1.03 748.71 + 1.10 734.32 + 1.14 713.24 + 1.18 720.75 + 1.27 704.78 + 1.35 682.82 + 1.43 666.85 + 1.51 650.87 + 1.59 632.91 + 1.67 622.92 + 1.73 604.95 + 1.79 598.96 + 1.86 579.00 + 1.94 561.03 + 1.99 559.03 + 2.03 539.07 + 2.09 533.08 + 2.16 517.11 + 2.24 507.12 + 2.31 491.15 + 2.39 477.18 + 2.45 463.20 + 2.51 442.28 + 2.55 407.36 + 2.60 360.81 + 2.65 320.07 + 2.69 276.42 + 2.76 232.78 + 2.82 194.95 + 2.96 122.21 + 3.20 0.00 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K610.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K610.eng new file mode 100644 index 000000000..1a15953df --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K610.eng @@ -0,0 +1,21 @@ +; Skidmark +K610-SK 54 491 0 0.866 1.765 AMW/ProX +0.01 300 +0.02 745 +0.035 650 +0.06 560 +0.12 635 +0.21 670 +0.4 695 +0.7 700 +1 690 +1.35 665 +1.7 630 +2.05 585 +2.19 590 +2.24 500 +2.3 350 +2.4 205 +2.5 60 +2.6 15 +2.7 0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K610.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K610.rse new file mode 100644 index 000000000..13eba8ff8 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K610.rse @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K665.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K665.rse new file mode 100644 index 000000000..8d04058fa --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K665.rse @@ -0,0 +1,58 @@ + + + +Entered by Tim Van Milligan for RockSim users. Used ThrustCurve Tracer by John +Coker. Data from CAR web site, thrust curve from AMW web site. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K670.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K670.rse index f3bf721c2..974c7d7a6 100644 --- a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K670.rse +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K670.rse @@ -1,42 +1,87 @@ - - -AMW K670 RASP.ENG file made from NAR published data -File produced SEPT 4, 2002 -The total impulse, peak thrust, average thrust and burn time are -the same as the averaged static test data on the NAR web site in -the certification file. The curve drawn with these data points is as -close to the certification curve as can be with such a limited -number of points (32) allowed with wRASP up to v1.6. + + +Entered by Tim Van Milligan for RockSim users. Used ThrustCurve Tracer by John +Coker. Data from CAR web site, thrust curve from AMW web site. - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K670_1.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K670_1.rse new file mode 100644 index 000000000..f3bf721c2 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K670_1.rse @@ -0,0 +1,42 @@ + + + +AMW K670 RASP.ENG file made from NAR published data +File produced SEPT 4, 2002 +The total impulse, peak thrust, average thrust and burn time are +the same as the averaged static test data on the NAR web site in +the certification file. The curve drawn with these data points is as +close to the certification curve as can be with such a limited +number of points (32) allowed with wRASP up to v1.6. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K700.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K700.rse index e5a478d2e..497e720da 100644 --- a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K700.rse +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K700.rse @@ -1,44 +1,62 @@ - - -AMW K700 RASP.ENG file made from NAR published data -File produced April 19, 2004 -The total impulse, peak thrust, average thrust and burn time are -the same as the averaged static test data on the NAR web site in -the certification file. The curve drawn with these data points is as -close to the certification curve as can be with such a limited -number of points (32) allowed with wRASP up to v1.6. + + +Entered by Tim Van Milligan for RockSim users. Used ThrustCurve Tracer by John +Coker. Data from CAR web site, thrust curve from AMW web site. - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K700_1.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K700_1.rse new file mode 100644 index 000000000..e5a478d2e --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K700_1.rse @@ -0,0 +1,44 @@ + + + +AMW K700 RASP.ENG file made from NAR published data +File produced April 19, 2004 +The total impulse, peak thrust, average thrust and burn time are +the same as the averaged static test data on the NAR web site in +the certification file. The curve drawn with these data points is as +close to the certification curve as can be with such a limited +number of points (32) allowed with wRASP up to v1.6. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K710.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K710.eng new file mode 100644 index 000000000..aebb07b7f --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K710.eng @@ -0,0 +1,17 @@ +K710-BB 54 491 0 0.902 1.812 AMW/ProX +0.01 500 +0.02 850 +0.025 910 +0.03 840 +0.06 860 +0.12 875 +0.2 875 +0.3 872 +1.1 815 +1.85 740 +1.95 720 +2.2 295 +2.37 280 +2.5 90 +2.6 20 +2.8 0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K710.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K710.rse new file mode 100644 index 000000000..4a6765b67 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K710.rse @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K855.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K855.rse new file mode 100644 index 000000000..70f45ac3e --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K855.rse @@ -0,0 +1,61 @@ + + + +Entered by Tim Van Milligan for RockSim users. Used ThrustCurve Tracer by John +Coker. Data from CAR web site, thrust curve from AMW web site. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K935.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K935.eng new file mode 100644 index 000000000..2595afbe2 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_K935.eng @@ -0,0 +1,48 @@ +;Created by Jesus Manuel Recuenco Andres 2011 +;with Tctracer v1.0 +K935 54.0 403.00 1000 0.73200 1.50800 Cesaroni + 0.01 1072.70 + 0.02 1043.71 + 0.04 974.21 + 0.07 1015.94 + 0.10 1029.21 + 0.14 1040.97 + 0.17 1049.51 + 0.22 1059.74 + 0.25 1064.00 + 0.29 1070.18 + 0.34 1072.70 + 0.39 1072.26 + 0.42 1069.80 + 0.45 1072.70 + 0.49 1069.80 + 0.52 1070.18 + 0.58 1064.00 + 0.64 1059.74 + 0.70 1055.30 + 0.76 1045.14 + 0.81 1035.01 + 0.85 1029.21 + 0.88 1022.20 + 0.91 1017.62 + 0.94 1014.72 + 0.97 1008.92 + 1.00 1003.42 + 1.06 985.72 + 1.12 965.87 + 1.16 950.93 + 1.21 936.66 + 1.26 919.04 + 1.30 903.29 + 1.34 890.05 + 1.38 876.17 + 1.43 861.06 + 1.48 846.96 + 1.51 719.71 + 1.54 619.58 + 1.56 510.26 + 1.58 415.14 + 1.60 295.72 + 1.63 181.49 + 1.66 66.76 + 1.70 0.00 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_L1276.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_L1276.eng new file mode 100644 index 000000000..0048f388a --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_L1276.eng @@ -0,0 +1,24 @@ +; AMX/ProX 2729L1276 RR +L1276RR 54 728 P 1.475 2.96 AMW + 0.015 76.924 + 0.017 692.317 + 0.026 1495.003 + 0.037 1244.164 + 0.052 1401.357 + 0.084 1307.71 + 0.127 1307.71 + 0.181 1367.911 + 0.289 1401.357 + 0.384 1408.046 + 0.807 1421.424 + 0.993 1461.558 + 1.215 1491.659 + 1.673 1474.936 + 1.727 1384.634 + 1.798 1083.627 + 1.947 531.78 + 1.986 351.175 + 2.047 177.26 + 2.092 93.647 + 2.144 33.445 + 2.185 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_L1276.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_L1276.rse new file mode 100644 index 000000000..47a1b0e3d --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_L1276.rse @@ -0,0 +1,37 @@ + + + + AMX/ProX 2729L1276 RR + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_L1290.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_L1290.eng new file mode 100644 index 000000000..002018207 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_L1290.eng @@ -0,0 +1,21 @@ +; ABC-76-6000 4701L1290-SK P +L1290-SK 76 785 P 3.047 5.399 CTI + 0.022 117.623 + 0.081 786.023 + 0.11 797.226 + 0.176 1226.645 + 0.691 1357.337 + 1.231 1461.891 + 1.761 1476.828 + 2.008 1467.493 + 2.311 1417.082 + 2.835 1299.459 + 3.101 1235.98 + 3.167 1230.379 + 3.34 1321.863 + 3.373 1286.39 + 3.532 365.94 + 3.602 201.64 + 3.734 91.485 + 3.782 69.08 + 3.8 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_L1290.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_L1290.rse new file mode 100644 index 000000000..19fbd18f8 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_L1290.rse @@ -0,0 +1,34 @@ + + + + ABC-76-6000 4701L1290-SK P + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_L985.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_L985.rse new file mode 100644 index 000000000..c80564c7f --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_L985.rse @@ -0,0 +1,56 @@ + + + +Entered by Tim Van Milligan for RockSim users. Used ThrustCurve Tracer by John +Coker. Data from CAR web site, thrust curve from AMW web site. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_M1630.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_M1630.eng new file mode 100644 index 000000000..3fac301f4 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_M1630.eng @@ -0,0 +1,19 @@ +; AMW75-7600 8212M1630-TT/DT P +M1630-TT 75 1039 P 4.349 7.237 CTI + 0.0030 147.481 + 0.032 2040.948 + 0.078 3235.069 + 0.158 3368.278 + 0.463 3258.856 + 0.647 2992.439 + 0.949 2697.477 + 1.052 2040.948 + 1.101 1883.952 + 1.392 1907.739 + 1.786 1812.59 + 3.6 1327.33 + 3.899 875.372 + 4.595 347.294 + 4.857 195.056 + 4.891 166.511 + 4.9 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_M1630.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_M1630.rse new file mode 100644 index 000000000..40587d748 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_M1630.rse @@ -0,0 +1,32 @@ + + + + AMW75-7600 8212M1630-TT/DT P + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_M2050.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_M2050.eng new file mode 100644 index 000000000..ca86e60e0 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_M2050.eng @@ -0,0 +1,16 @@ +; AMX75-7600 6774-M2050-SK P +M2050-BS 75 1039 P 4.172 7.1290000000000004 ABC + 0.038 2152.81 + 0.833 2506.091 + 1.189 2539.211 + 1.546 2500.571 + 1.775 2415.011 + 1.907 2279.77 + 2.168 2086.569 + 2.401 1973.409 + 2.616 1909.929 + 2.776 1871.288 + 2.918 1203.365 + 3.056 706.563 + 3.309 135.241 + 3.4 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_M2050.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_M2050.rse new file mode 100644 index 000000000..618abfc69 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AMW_M2050.rse @@ -0,0 +1,29 @@ + + + + AMX75-7600 6774-M2050-SK P + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_C3.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_C3.eng new file mode 100644 index 000000000..d7f6c7152 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_C3.eng @@ -0,0 +1,31 @@ +; Aerotech C3.4-PT RASP.ENG file made from NAR published data +; File produced, 2013 +; The total impulse, peak thrust, average thrust and burn time are +; the same as the averaged static test data on the NAR web site in +; the certification file. The curve drawn with these data points is as +; close to the certification curve as can be with such a limited +; number of points (32) allowed with wRASP up to v1.6. +C3.4 18 72 0, .0052 .0239 A +0.023 3.188 +0.028 5.669 +0.093 9.080 +0.235 8.208 +0.427 6.881 +0.513 6.188 +0.600 5.438 +0.666 4.803 +0.762 3.649 +0.838 2.668 +0.970 2.149 +1.228 1.918 +1.522 1.918 +1.800 1.860 +2.013 1.745 +2.068 2.034 +2.134 1.803 +2.326 1.803 +2.509 1.745 +2.645 1.687 +2.721 1.457 +2.807 0.879 +2.860 0.000 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_D2.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_D2.eng new file mode 100644 index 000000000..7d6ad4e71 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_D2.eng @@ -0,0 +1,34 @@ +; Aerotech D2.3-PT RASP.ENG file made from NAR published data +; File produced, 2013 +; The total impulse, peak thrust, average thrust and burn time are +; the same as the averaged static test data on the NAR web site in +; the certification file. The curve drawn with these data points is as +; close to the certification curve as can be with such a limited +; number of points (32) allowed with wRASP up to v1.6. +D2.3 18 72 0, .0107 .0293 A +0.020 5.071 +0.039 9.478 +0.093 10.140 +0.184 9.478 +0.275 8.429 +0.438 6.820 +0.657 4.372 +0.747 3.392 +0.838 2.413 +1.056 2.064 +1.365 1.923 +1.892 1.783 +2.528 1.713 +2.946 1.713 +3.219 1.643 +4.091 1.573 +4.727 1.573 +5.218 1.573 +5.636 1.573 +6.217 1.573 +6.726 1.433 +7.199 1.503 +7.635 1.363 +7.907 1.224 +8.016 0.734 +8.140 0.000 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_F20.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_F20.eng index 18edb2748..7d746e75b 100644 --- a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_F20.eng +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_F20.eng @@ -1,35 +1,39 @@ -; -; -F20EJ 29 83 4-7 0.03 0.0746 AeroTech -0.01 52.08 -0.03 49.81 -0.06 46.98 -0.1 45.56 -0.15 44.49 -0.18 45.55 -0.21 43.42 -0.24 43.78 -0.32 43.77 -0.36 44.11 -0.44 43.04 -0.45 40.58 -0.53 39.86 -0.62 38.08 -0.76 36.3 -0.8 37.35 -0.84 34.88 -0.89 36.99 -0.9 33.46 -1.03 30.61 -1.06 32.02 -1.09 29.55 -1.23 26 -1.32 22.45 -1.35 23.16 -1.36 21.39 -1.58 16.42 -1.8 11.1 -2.01 6.48 -2.19 3.63 -2.39 1.13 -2.68 0 +; Aerotech F20 RASP.ENG file made from NAR published data +; File produced July 4, 2007 +; The total impulse, peak thrust, average thrust and burn time are +; the same as the averaged static test data on the NAR web site in +; the certification file. The curve drawn with these data points is as +; close to the certification curve as can be with such a limited +; number of points (32) allowed with wRASP up to v1.6. +F20 29 83 4-7 .0300 .0801 A +0.023 16.431 +0.043 28.538 +0.062 36.691 +0.078 40.330 +0.120 37.677 +0.167 36.933 +0.213 36.931 +0.298 36.432 +0.318 37.173 +0.333 35.689 +0.368 36.182 +0.395 35.192 +0.430 36.426 +0.446 37.166 +0.481 34.447 +0.554 34.443 +0.946 30.964 +0.965 29.481 +1.008 29.726 +1.062 27.746 +1.097 27.497 +1.136 26.260 +1.310 20.568 +1.360 19.824 +1.438 17.349 +1.465 17.348 +1.527 15.121 +1.597 13.882 +1.810 9.176 +1.969 6.203 +2.490 0.000 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_F20_1.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_F20_1.eng new file mode 100644 index 000000000..18edb2748 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_F20_1.eng @@ -0,0 +1,35 @@ +; +; +F20EJ 29 83 4-7 0.03 0.0746 AeroTech +0.01 52.08 +0.03 49.81 +0.06 46.98 +0.1 45.56 +0.15 44.49 +0.18 45.55 +0.21 43.42 +0.24 43.78 +0.32 43.77 +0.36 44.11 +0.44 43.04 +0.45 40.58 +0.53 39.86 +0.62 38.08 +0.76 36.3 +0.8 37.35 +0.84 34.88 +0.89 36.99 +0.9 33.46 +1.03 30.61 +1.06 32.02 +1.09 29.55 +1.23 26 +1.32 22.45 +1.35 23.16 +1.36 21.39 +1.58 16.42 +1.8 11.1 +2.01 6.48 +2.19 3.63 +2.39 1.13 +2.68 0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_G64.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_G64.eng index d3f077a39..9ebc0b9f3 100644 --- a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_G64.eng +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_G64.eng @@ -1,38 +1,32 @@ -; -;Aerotech G64 RASP.ENG file made from NAR published data -;File produced July 4, 2000 -;The total impulse, peak thrust, average thrust and burn time are -;the same as the averaged static test data on the NAR web site in -;the certification file. The curve drawn with these data points is as -;close to the certification curve as can be with such a limited -;number of points (32) allowed with wRASP up to v1.6. -G64 29 124 4-8-10 0.0625 0.1512 AT -0.014 54.325 -0.032 81.488 -0.059 98.31 -0.101 85.021 -0.165 83.847 -0.274 85.614 -0.37 87.39 -0.476 86.798 -0.503 91.516 -0.517 85.614 -0.585 83.847 -0.723 80.896 -0.745 82.07 -0.773 77.945 -0.883 75.576 -0.988 74.401 -1.093 69.673 -1.262 61.412 -1.28 61.994 -1.326 58.451 -1.372 54.907 -1.422 47.238 -1.505 34.841 -1.591 23.027 -1.701 13.581 -1.829 7.085 -1.902 4.133 -1.966 1.771 -2.09 0 +; Aerotech G64 Bifurcated RASP.ENG file made from data Supplied by Aerotech +; File produced August 10 by Tim Barr +; The curve drawn with these data points is as +; close to the test curve as can be with such a limited +; number of points (32) allowed with wRASP up to v1.6. +G64BF 29 124 4-8-10 0.0625 0.1512 AERO +0.01 9.5637 +0.02 60.0510 +0.03 77.4880 +0.04 90.3211 +0.05 98.8061 +0.06 102.9986 +0.07 105.9789 +0.08 108.1140 +0.09 108.0695 +0.10 106.4237 +0.15 104.0773 +0.25 103.3222 +0.35 100.4053 +0.45 95.4399 +0.55 90.4957 +0.65 85.0522 +0.75 79.2640 +0.95 67.6591 +1.15 53.0840 +1.35 38.1535 +1.55 23.7201 +1.75 11.4636 +1.95 4.6295 +2.15 1.4518 +2.35 0.1101 +2.44 0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_H182.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_H182.eng new file mode 100644 index 000000000..bacab0f50 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_H182.eng @@ -0,0 +1,15 @@ +; From AT DMS announcement May 2014. +H182 29 203.2 14 0.115 0.20700000000000002 AT + 0.007 82.404 + 0.031 159.208 + 0.091 158.408 + 0.186 182.409 + 0.5 192.009 + 0.904 188.809 + 1.054 175.209 + 1.106 180.809 + 1.144 200.81 + 1.163 162.408 + 1.201 36.802 + 1.212 16.801 + 1.235 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_H45_1.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_H45_1.eng new file mode 100644 index 000000000..b8b3ad9cf --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_H45_1.eng @@ -0,0 +1,13 @@ +; From AT DMS announcement May 2014. +H45 38 202.7 10 0.18 0.364 AT + 0.04 84.004 + 0.854 86.004 + 1.377 84.804 + 2.046 79.204 + 2.69 66.003 + 3.286 51.603 + 4.414 28.401 + 5.042 16.001 + 5.429 9.2 + 6.113 6.4 + 6.186 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_H550.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_H550.eng new file mode 100644 index 000000000..107da6468 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_H550.eng @@ -0,0 +1,41 @@ +; AT H550 ST DMS +H550 38 206 14 0.176 0.316 AT + 0.008 445.411 + 0.009 533.786 + 0.01 565.601 + 0.013 586.812 + 0.015 623.34 + 0.021 639.837 + 0.036 606.843 + 0.045 629.232 + 0.057 615.092 + 0.061 635.123 + 0.067 619.805 + 0.101 637.48 + 0.116 622.162 + 0.157 643.372 + 0.174 623.34 + 0.196 623.34 + 0.205 639.837 + 0.231 631.588 + 0.234 618.627 + 0.255 611.557 + 0.268 628.053 + 0.314 595.06 + 0.334 600.952 + 0.362 571.493 + 0.386 565.601 + 0.401 556.175 + 0.426 518.468 + 0.445 503.15 + 0.493 447.768 + 0.505 447.768 + 0.511 456.016 + 0.519 451.303 + 0.535 357.036 + 0.545 266.304 + 0.551 179.107 + 0.559 91.91 + 0.565 42.42 + 0.572 12.962 + 0.579 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_I205.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_I205.eng new file mode 100644 index 000000000..f1130bdd1 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_I205.eng @@ -0,0 +1,17 @@ +; From AT DMS announcement May 2014. +I205 29 304.8 14 0.188 0.315 AT + 0.008 377.299 + 0.028 241.932 + 0.36 256.333 + 0.711 246.252 + 0.861 233.292 + 1.121 230.411 + 1.146 214.571 + 1.242 211.69 + 1.349 141.127 + 1.404 125.286 + 1.489 72.004 + 1.602 41.762 + 1.712 11.521 + 1.787 12.961 + 1.892 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_I65_1.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_I65_1.eng new file mode 100644 index 000000000..4808b3e45 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_I65_1.eng @@ -0,0 +1,15 @@ +; From AT DMS announcement May 2014. +I65 54 218 10 0.377 0.752 AT + 0.023 148.274 + 0.211 196.341 + 0.398 167.827 + 0.797 149.903 + 1.395 135.239 + 2.238 122.204 + 3.199 99.392 + 4.711 69.249 + 5.367 48.882 + 6.246 29.329 + 6.926 15.479 + 7.395 11.406 + 8.496 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_J1799.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_J1799.eng new file mode 100644 index 000000000..b5777469b --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_J1799.eng @@ -0,0 +1,37 @@ +; +; AT 54-1280 +; Greg Gardner - 09/15/06 +J1999N 54 314 0 0.5574 1.111 AT +0.01 830 +0.02 1716 +0.03 1787 +0.04 1873 +0.05 1896 +0.06 1918 +0.07 1984 +0.08 2007 +0.09 2051 +0.10 2058 +0.12 2090 +0.14 2098 +0.16 2135 +0.18 2138 +0.20 2142 +0.25 2146 +0.30 2150 +0.35 2146 +0.40 2138 +0.45 2096 +0.50 1974 +0.55 1864 +0.57 1829 +0.59 1815 +0.60 1762 +0.61 1673 +0.62 1085 +0.63 490 +0.64 190 +0.65 81 +0.66 31 +0.67 0 +; diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_J1799.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_J1799.rse new file mode 100644 index 000000000..ffdb24a89 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_J1799.rse @@ -0,0 +1,44 @@ + + + +AT 54-852 +Greg Gardner - 09/15/06 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_J425.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_J425.eng new file mode 100644 index 000000000..e2eb7c451 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_J425.eng @@ -0,0 +1,15 @@ +; From AT DMS announcement May 2014. +J425 38 356.4 14 0.364 0.631 AT + 0.018 267.857 + 0.062 368.062 + 0.242 420.092 + 0.524 443.216 + 0.902 452.851 + 1.225 448.997 + 1.389 433.581 + 1.502 452.851 + 1.53 420.092 + 1.542 356.5 + 1.599 67.446 + 1.618 28.905 + 1.648 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_K535.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_K535.eng new file mode 100644 index 000000000..ba6dc007f --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_K535.eng @@ -0,0 +1,21 @@ +; revised per AT post on TRF 5/19/14 +K535 54 358.1 14 0.745 1.264 AT + 0.015 467.288 + 0.063 642.221 + 0.104 613.465 + 0.23 627.843 + 0.419 620.654 + 0.883 623.05 + 1.335 599.087 + 1.646 555.953 + 1.843 500.837 + 2.017 450.513 + 2.258 404.983 + 2.488 366.641 + 2.6 230.049 + 2.611 172.537 + 2.648 124.61 + 2.696 81.476 + 2.789 40.738 + 2.837 9.585 + 2.952 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_L1000.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_L1000.eng new file mode 100644 index 000000000..4ee0a57e9 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_L1000.eng @@ -0,0 +1,26 @@ +; per AT announcement 5/8/14 +L1000 54 635 18 1.4000000000000001 2.194 AT + 0.004 10.664 + 0.011 1268.961 + 0.04 1322.279 + 0.195 1226.307 + 0.249 1268.961 + 0.296 1242.303 + 0.372 1252.966 + 0.416 1215.644 + 0.6 1226.307 + 0.788 1215.644 + 1.066 1183.653 + 1.261 1167.658 + 1.507 1125.004 + 1.746 1087.681 + 1.865 1050.359 + 1.995 1045.027 + 2.093 911.733 + 2.158 746.448 + 2.263 554.504 + 2.389 405.215 + 2.577 191.944 + 2.693 85.308 + 2.761 42.654 + 3.0 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_M1350.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_M1350.eng new file mode 100644 index 000000000..f1384209c --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_M1350.eng @@ -0,0 +1,26 @@ +; AT M1350W DMS +M1350W 75 622 p 1.97 4.808 AT + 0.03 1428.886 + 0.044 1724.734 + 0.056 1548.484 + 0.078 1620.873 + 0.115 1589.399 + 0.178 1642.904 + 0.455 1749.913 + 0.496 1724.734 + 0.54 1737.324 + 1.132 1746.766 + 1.499 1731.029 + 1.639 1715.292 + 2.505 1334.466 + 3.086 1051.207 + 3.179 985.113 + 3.227 928.461 + 3.315 670.38 + 3.419 446.92 + 3.46 396.563 + 3.545 298.996 + 3.697 173.103 + 3.737 173.103 + 3.845 81.83 + 3.996 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_M1350_1.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_M1350_1.eng new file mode 100644 index 000000000..2eba410b7 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/AeroTech_M1350_1.eng @@ -0,0 +1,19 @@ +; from TMT cert letter 22 Jun 2014 +M1350 75 622 P 1.97 4.808 AT + 0.058 1591.743 + 0.45 1758.762 + 0.501 1723.334 + 0.717 1756.231 + 1.022 1758.762 + 1.651 1723.334 + 2.03 1561.376 + 2.213 1467.744 + 2.707 1245.052 + 3.029 1090.686 + 3.171 997.054 + 3.255 908.483 + 3.343 640.24 + 3.448 412.487 + 3.702 169.55 + 3.915 43.02 + 4.0 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesarioni_G69.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesarioni_G69.rse new file mode 100644 index 000000000..b66247895 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesarioni_G69.rse @@ -0,0 +1,34 @@ + + + + CTI Pro38-1G 117 G69SK - 14A + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_F32.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_F32.rse new file mode 100644 index 000000000..0211713ca --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_F32.rse @@ -0,0 +1,29 @@ + + + + CTI 53-F32-WH-12A + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_F51.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_F51.rse index 737d1a9e6..f9bcffd40 100644 --- a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_F51.rse +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_F51.rse @@ -1,25 +1,31 @@ - - Classic 24mm 3G -75-F51-CL-12A - + + CTI 50-F51-BS-13A - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_F51_1.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_F51_1.rse new file mode 100644 index 000000000..737d1a9e6 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_F51_1.rse @@ -0,0 +1,26 @@ + + + + Classic 24mm 3G +75-F51-CL-12A + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_F70.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_F70.rse new file mode 100644 index 000000000..98a6918a5 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_F70.rse @@ -0,0 +1,27 @@ + + + + CTI 53-F70-WT-14A + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_G33.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_G33.rse new file mode 100644 index 000000000..9aed79bc6 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_G33.rse @@ -0,0 +1,27 @@ + + + + CTI 143-G33-MY-9A + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_G69.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_G69.rse index b66247895..18693ec17 100644 --- a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_G69.rse +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_G69.rse @@ -1,34 +1,27 @@ - - CTI Pro38-1G 117 G69SK - 14A - - - - - - - - - - - - - - - - - - - - - - - + +Replaced by G46-Classic + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_G69SK.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_G69SK.rse new file mode 100644 index 000000000..b66247895 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_G69SK.rse @@ -0,0 +1,34 @@ + + + + CTI Pro38-1G 117 G69SK - 14A + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_H42.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_H42.rse new file mode 100644 index 000000000..9873259db --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_H42.rse @@ -0,0 +1,27 @@ + + + + CTI 186-H42-MY-10A + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_H53.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_H53.rse new file mode 100644 index 000000000..e07212e6e --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_H53.rse @@ -0,0 +1,28 @@ + + + + CTI 234-H53-MY-12A + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_I55.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_I55.rse new file mode 100644 index 000000000..8aafe86a5 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_I55.rse @@ -0,0 +1,29 @@ + + + + CTI 395-I55-MY-9A + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_J145.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_J145.rse new file mode 100644 index 000000000..0e43e8fdb --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_J145.rse @@ -0,0 +1,25 @@ + + + + CTI 699-J145-SK-LB-19A + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_J150.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_J150.rse new file mode 100644 index 000000000..02022bd05 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_J150.rse @@ -0,0 +1,27 @@ + + + + CTI 949-J150-MY-P + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_J94.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_J94.rse new file mode 100644 index 000000000..080ad02c8 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_J94.rse @@ -0,0 +1,29 @@ + + + + CTI 644-J94-MY-P + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_K520.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_K520.rse new file mode 100644 index 000000000..c7829a05b --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_K520.rse @@ -0,0 +1,25 @@ + + + + CTI 1711-K520-WH-17A + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_K600.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_K600.rse new file mode 100644 index 000000000..f99327193 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_K600.rse @@ -0,0 +1,27 @@ + + + + CTI 2130-K600-WH-17A + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_K711.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_K711.rse new file mode 100644 index 000000000..eb774f259 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_K711.rse @@ -0,0 +1,26 @@ + + + + CTI 2377-K711-WH-18A + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_L265.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_L265.eng new file mode 100644 index 000000000..f0a55e400 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_L265.eng @@ -0,0 +1,30 @@ +L265 54 649 P 1.603 2.481 CTI +0.056 471 +0.149 421.196 +0.28 426.63 +0.644 391.304 +0.961 375.906 +1.408 350.543 +1.837 335.145 +2.266 332.428 +3.227 318.841 +4.663 313.406 +5.82 317.029 +6.072 312.5 +6.333 279.891 +6.529 257.246 +6.79 248.188 +7.163 223.732 +7.527 189.312 +7.909 141.304 +8.002 145.833 +8.198 122.283 +8.441 97.826 +8.637 81.522 +8.954 79.71 +9.373 59.783 +9.672 36.232 +10.017 17.21 +10.549 15.399 +11.015 10.87 +11.472 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_L265.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_L265.rse new file mode 100644 index 000000000..9acd1b268 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_L265.rse @@ -0,0 +1,27 @@ + + + + CTI 2645-L265-MY-P + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_L395.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_L395.eng new file mode 100644 index 000000000..4180574ec --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_L395.eng @@ -0,0 +1,16 @@ +; CTI L395 long burn Mellow Propellant +; Not many data points. +; Made from the data in the Rocksim file below +L395 75 757 P 2.218 5.706 CTI +0.04 484.229 +0.129 484.229 +0.209 578.734 +0.547 553.644 +2.043 511.828 +7.329 439.068 +8.632 424.014 +9.573 297.73 +11.399 100.358 +12.445 30.108 +12.501 0 +; diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_L395.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_L395.rse new file mode 100644 index 000000000..0768359c5 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_L395.rse @@ -0,0 +1,26 @@ + + + + CTI 4937-L395-MY-P + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_M1101.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_M1101.rse new file mode 100644 index 000000000..b816d594d --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_M1101.rse @@ -0,0 +1,26 @@ + + + + CTI 5198-M1101-WH-P + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_N1560.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_N1560.rse new file mode 100644 index 000000000..e15bae9a4 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Cesaroni_N1560.rse @@ -0,0 +1,26 @@ + + + + CTI 16803-N1560-WH-MB-P + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Kosdon_G65.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Kosdon_G65.eng new file mode 100644 index 000000000..c53b17f77 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Kosdon_G65.eng @@ -0,0 +1,17 @@ +G65-DH 29 205.7 11 0.093 0.218 Kosdon + 0.028 31.802 + 0.049 70.288 + 0.082 58.742 + 0.142 64.414 + 0.716 79.606 + 1.179 88.721 + 1.568 75.352 + 1.606 74.34 + 1.611 68.06 + 1.704 57.122 + 1.773 45.981 + 1.812 30.181 + 1.853 18.838 + 1.894 11.343 + 1.936 5.469 + 2.026 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Kosdon_H155.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Kosdon_H155.eng new file mode 100644 index 000000000..aff0610c9 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Kosdon_H155.eng @@ -0,0 +1,35 @@ +H155F 28.4 205.7 7 0.081 0.20600000000000002 Kosdon + 0.005 39.948 + 0.009 78.254 + 0.025 121.759 + 0.032 123.948 + 0.057 123.401 + 0.081 123.948 + 0.121 124.222 + 0.172 129.421 + 0.201 131.883 + 0.296 135.44 + 0.337 137.903 + 0.397 138.723 + 0.436 134.619 + 0.493 139.271 + 0.552 135.44 + 0.599 138.997 + 0.691 137.629 + 0.796 135.44 + 0.888 132.978 + 0.935 129.147 + 0.971 130.789 + 0.991 128.6 + 1.015 112.183 + 1.057 89.199 + 1.093 67.31 + 1.152 44.599 + 1.192 32.56 + 1.236 21.342 + 1.264 16.417 + 1.291 12.586 + 1.312 10.124 + 1.352 5.746 + 1.393 2.736 + 1.465 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Loki_J175.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Loki_J175.rse new file mode 100644 index 000000000..aef205f3a --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Loki_J175.rse @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Loki_J300.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Loki_J300.eng new file mode 100644 index 000000000..677e90e94 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Loki_J300.eng @@ -0,0 +1,25 @@ +J300LR 54 327 P 0.62 1.315 Loki + 0.015 78.248 + 0.025 89.305 + 0.06 358.069 + 0.076 395.492 + 0.111 403.147 + 0.176 381.033 + 0.287 365.724 + 0.504 363.172 + 0.998 361.471 + 1.497 363.172 + 2.001 344.461 + 2.227 331.703 + 2.504 310.44 + 2.993 270.465 + 3.255 242.398 + 3.502 222.836 + 3.578 222.836 + 3.643 190.516 + 3.699 134.382 + 3.724 118.222 + 3.8 106.315 + 3.926 44.227 + 3.996 29.768 + 4.278 0.0 diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Quest_A3.eng b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Quest_A3.eng new file mode 100644 index 000000000..27b627e96 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/Quest_A3.eng @@ -0,0 +1,27 @@ +;Quest A3T +;File produced by Howard Smart from NAR certification thrust curve +;9 May 2014 +A3T 13 55 2-4 0.0036 0.009 Q +0.0925926 0.494186 +0.123457 0.988372 +0.192901 2.73256 +0.243056 1.51163 +0.25463 1.2936 +0.281636 1.13372 +0.320216 1.03198 +0.37037 0.901163 +0.401235 0.799419 +0.455247 0.843023 +0.505401 0.799419 +0.748457 0.784884 +0.841049 0.799419 +0.914352 0.65407 +1.00309 0.712209 +1.25386 0.625 +1.50077 0.697674 +1.7554 0.741279 +2.00231 0.770349 +2.05633 0.741279 +2.07562 0.56686 +2.1 0 +; diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/SCR_A3.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/SCR_A3.rse new file mode 100644 index 000000000..5e4f94e06 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/SCR_A3.rse @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/SCR_B4.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/SCR_B4.rse new file mode 100644 index 000000000..9680f7e5a --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/SCR_B4.rse @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + diff --git a/core/resources-src/datafiles/thrustcurves/thrustcurve.org/SCR_C3.rse b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/SCR_C3.rse new file mode 100644 index 000000000..2e72864e5 --- /dev/null +++ b/core/resources-src/datafiles/thrustcurves/thrustcurve.org/SCR_C3.rse @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + diff --git a/core/resources/build.properties b/core/resources/build.properties index e0fbe417d..0c1acc11b 100644 --- a/core/resources/build.properties +++ b/core/resources/build.properties @@ -1,7 +1,7 @@ # The OpenRocket build version -build.version=14.03dev +build.version=14.11dev # The source of the package. When building a package for a specific diff --git a/core/resources/datafiles/thrustcurves/thrustcurves.ser b/core/resources/datafiles/thrustcurves/thrustcurves.ser index 0e0905418..f9226e989 100644 Binary files a/core/resources/datafiles/thrustcurves/thrustcurves.ser and b/core/resources/datafiles/thrustcurves/thrustcurves.ser differ diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index ad0d9e245..79979c423 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -265,6 +265,8 @@ pref.dlg.opengl.lbl.useFBO = Use Off-screen Rendering pref.dlg.lbl.Positiontoinsert = Position to insert new body components: pref.dlg.lbl.Confirmdeletion = Confirm deletion of simulations: +pref.dlg.checkbox.Runsimulations = Run out-dated simulations when you open the simulation tab. +pref.dlg.checkbox.Updateestimates = Update estimated flight parameters in design window pref.dlg.lbl.User-definedthrust = User-defined thrust curves: pref.dlg.lbl.Windspeed = Wind speed pref.dlg.Allthrustcurvefiles = All thrust curve files (*.eng; *.rse; *.zip; directories) @@ -274,6 +276,10 @@ pref.dlg.ZIParchives = ZIP archives (*.zip) pref.dlg.checkbox.Checkupdates = Check for software updates at startup pref.dlg.ttip.Checkupdatesnow = Check for software updates now pref.dlg.lbl.Selectprefunits = Select your preferred units: +pref.dlg.lbl.Rocketinfofontsize = Size of text in rocket design panel: +pref.dlg.PrefFontSmall = Small +pref.dlg.PrefFontMedium = Medium +pref.dlg.PrefFontLarge = Large pref.dlg.lbl.Rocketdimensions = Rocket dimensions: pref.dlg.lbl.Linedensity = Line density: pref.dlg.lbl.Motordimensions = Motor dimensions: @@ -434,6 +440,8 @@ simpanel.col.Motors = Motors simpanel.col.Configuration = Configuration simpanel.col.Velocityoffrod = Velocity off rod simpanel.col.Velocityatdeploy = Velocity at deployment +simpanel.col.OptimumCoastTime = Optimum delay +simpanel.col.OptimumCoastTime.ttip = The time between last motor burnout and maximum possible altitude. simpanel.col.Apogee = Apogee simpanel.col.Maxvelocity = Max. velocity simpanel.col.Maxacceleration = Max. acceleration @@ -923,6 +931,7 @@ MassComponentCfg.tab.ttip.Radialpos = Radial position configuration MassComponentCfg.lbl.Radialdistance = Radial distance: MassComponentCfg.lbl.Radialdirection = Radial direction: MassComponentCfg.but.Reset = Reset +MassComponentCfg.lbl.type = Mass type ! MotorConfig MotorCfg.checkbox.compmotormount = This component is a motor mount @@ -1129,7 +1138,8 @@ TCMotorSelPan.btn.close = Close PlotDialog.CheckBox.Showdatapoints = Show data points PlotDialog.lbl.Chart = left click drag to zoom area. mouse wheel to zoom. ctrl-mouse wheel to zoom x axis only. ctrl-left click drag to pan. right click drag to zoom dynamically. - +ComponentTree.ttip.massoverride = mass override +ComponentTree.ttip.cgoverride = cg override ! "main" prefix is used for the main application dialog # FIXME: Rename the description keys @@ -1328,7 +1338,14 @@ TrapezoidFinSet.TrapezoidFinSet = Trapezoidal fin set ! FreeformFinSet FreeformFinSet.FreeformFinSet = Freeform fin set !MassComponent -MassComponent.MassComponent = Mass component +MassComponent.MassComponent = Unspecified +MassComponent.Altimeter = Altimeter +MassComponent.FlightComputer = Flight computer +MassComponent.DeploymentCharge = Deployment charge +MassComponent.Tracker = Tracker +MassComponent.Payload = Payload +MassComponent.RecoveryHardware = Recovery hardware +MassComponent.Battery = Battery ! Parachute Parachute.Parachute = Parachute ! ShockCord @@ -1544,7 +1561,6 @@ Warning.SUPERSONIC = Body calculations may not be entirely accurate at supersoni Warning.RECOVERY_LAUNCH_ROD = Recovery device device deployed while on the launch guide. Warning.RECOVERY_HIGH_SPEED = Recovery device deployment at high speed Warning.TUMBLE_UNDER_THRUST = Stage began to tumble under thrust. -Warning.TUMBLE_BEFORE_APOGEE = Sustainer became unstable before apogee. ! Scale dialog diff --git a/core/resources/l10n/messages_uk_UA.properties b/core/resources/l10n/messages_uk_UA.properties new file mode 100644 index 000000000..e08bdba37 --- /dev/null +++ b/core/resources/l10n/messages_uk_UA.properties @@ -0,0 +1,1953 @@ +# +# English base translation file +# +# Should you need to add new logical keys here is the proposed method +# +# className.ComponentType.componentName +# +# +# Text tokens within braces should not be translated, e.g. +# "The file '{filename}' exists." +# They are pieces that are inserted dynamically. +# +# \u0412\u0434\u0430\u043B\u0438\u0442\u0438 \u0430\u0431\u043E \u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 +# + + +! Set to the name of the current translation file (used for debugging purposes) +debug.currentFile = messages.properties + +! RocketActions +RocketActions.checkbox.Donotaskmeagain = \u0411\u0456\u043B\u044C\u0448\u0435 \u043D\u0435 \u043F\u0438\u0442\u0430\u0442\u0438 +RocketActions.lbl.Youcanchangedefop = \u0412\u0438 \u043C\u043E\u0436\u0435\u0442\u0435 \u0437\u043C\u0456\u043D\u0438\u0442\u0438 \u0442\u0438\u043F\u043E\u0432\u0443 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044E \u0432 \u043E\u043F\u0446\u0438\u044F\u0445. +RocketActions.showConfirmDialog.lbl1 = \u0412\u0434\u0430\u043B\u0438\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0443 \u0441\u0438\u043C\u0443\u043B\u044F\u0446\u0456\u044E? +RocketActions.showConfirmDialog.lbl2 = \u0426\u044F \u043E\u043F\u0435\u0440\u0430\u0446\u0456\u044F \u043D\u0435 \u043C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u0432\u0456\u0434\u043C\u0456\u043D\u0435\u043D\u0430. +RocketActions.showConfirmDialog.title = \u0412\u0434\u0430\u043B\u0438\u0442\u0438 \u0441\u0438\u043C\u0443\u043B\u044F\u0446\u0456\u044E +RocketActions.DelCompAct.Delete = \u0412\u0434\u0430\u043B\u0438\u0442\u0438 +RocketActions.DelCompAct.ttip.Delete = \u0412\u0434\u0430\u043B\u0438\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0443 \u0447\u0430\u0441\u0442\u0438\u043D\u0443. +RocketActions.DelSimuAct.Delete = \u0412\u0434\u0430\u043B\u0438\u0442\u0438 +RocketActions.DelSimuAct.ttip.Delete = \u0412\u0434\u0430\u043B\u0438\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0443 \u0441\u0438\u043C\u0443\u043B\u044F\u0446\u0456\u044E. +RocketActions.DelAct.Delete = \u0412\u0434\u0430\u043B\u0438\u0442\u0438 +RocketActions.DelAct.ttip.Delete = \u0412\u0434\u0430\u043B\u0438\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0443 \u0447\u0430\u0441\u0442\u0438\u043D\u0443 \u0430\u0431\u043E \u0441\u0438\u043C\u0443\u043B\u044F\u0446\u0456\u044E. +RocketActions.CutAction.Cut = \u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438 +RocketActions.CutAction.ttip.Cut = \u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438 \u0446\u044E \u0447\u0430\u0441\u0442\u0438\u043D\u0443 \u0430\u0431\u043E \u0441\u0438\u043C\u0443\u043B\u044F\u0446\u0456\u044E \u0432 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0456\u043D\u0443 \u0442\u0430 \u0432\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0437 \u0446\u0456\u0439 \u043C\u043E\u0434\u0435\u043B\u0456 +RocketActions.CopyAct.Copy = Copy +RocketActions.CopyAct.ttip.Copy = Copy this component (and subcomponents) to the clipboard. +RocketActions.PasteAct.Paste = Paste +RocketActions.PasteAct.ttip.Paste = Paste the component or simulation on the clipboard to the design. +RocketActions.EditAct.Edit = Edit +RocketActions.EditAct.ttip.Edit = Edit the selected component. +RocketActions.NewStageAct.Newstage = New stage +RocketActions.NewStageAct.ttip.Newstage = Add a new stage to the rocket design. +RocketActions.ActBoosterstage = Booster stage +RocketActions.MoveUpAct.Moveup = Move up +RocketActions.MoveUpAct.ttip.Moveup = Move this component upwards. +RocketActions.MoveDownAct.Movedown = Move down +RocketActions.MoveDownAct.ttip.Movedown = Move this component downwards. + +! RocketPanel +RocketPanel.FigTypeAct.Sideview = Side view +RocketPanel.FigTypeAct.Backview = Back view +RocketPanel.FigTypeAct.Figure3D = 3D Figure +RocketPanel.FigTypeAct.Finished = 3D Finished +RocketPanel.FigTypeAct.Unfinished = 3D Unfinished + + +RocketPanel.lbl.Flightcfg = Flight configuration: +RocketPanel.lbl.infoMessage = Click to select    Shift+click to select other    Double-click to edit    Click+drag to move +RocketPanel.lbl.ViewType = View Type: + +! BasicFrame +BasicFrame.tab.Rocketdesign = Rocket design +BasicFrame.tab.Flightconfig = Motors & Configuration +BasicFrame.tab.Flightsim = Flight simulations +BasicFrame.title.Addnewcomp = Add new component +BasicFrame.dlg.lbl1 = Design ' +BasicFrame.dlg.lbl2 = ' has not been saved. +BasicFrame.dlg.lbl3 = Do you want to save it? +BasicFrame.dlg.title = Design not saved +BasicFrame.StageName.Sustainer = Sustainer +BasicFrame.WarningDialog.txt1 = The following problems were encountered while opening +BasicFrame.WarningDialog.txt2 = Some design features may not have been loaded correctly. +BasicFrame.WarningDialog.title = Warnings while opening file + + +! General error messages used in multiple contexts +error.fileExists.title = File exists +error.fileExists.desc = File '{filename}' exists. Do you want to overwrite it? + +error.writing.title = Error writing file +error.writing.desc = An error occurred while writing to the file: +Configuration.lbl.override = This parameter can be overridden in each flight configuration. + + +! Labels used in buttons of dialog windows +# TODO: Rename these to "btn.xxx" +button.ok = OK +button.cancel = Cancel +button.close = Close + +! Common labels used in buttons of dialog windows +dlg.but.ok = OK +dlg.but.cancel = Cancel +dlg.but.close = Close + +! General file type names +filetypes.pdf = PDF files (*.pdf) +BasicFrame.SimpleFileFilter1 = All rocket designs (*.ork; *.rkt) +BasicFrame.SimpleFileFilter2 = OpenRocket designs (*.ork) +BasicFrame.SimpleFileFilter3 = RockSim designs (*.rkt) +BasicFrame.SimpleFileFilter4 = OpenRocket presets (*.orc) +filetypes.images = Image files + + +! About Dialog +AboutDialog.lbl.version = Version +! The texts below provide additional credits for the translation maintainer +! - In AboutDialog.lbl.translation replace "English" with the current language. +! - AboutDialog.lbl.translator is the translator / group name (may be empty) +! - AboutDialog.lbl.translatorWebsite is a URL to the translator / group (may be empty) +! - AboutDialog.lbl.translatorIcon is the file name of an icon under pix/translators/ (may be empty) +AboutDialog.lbl.translation = English translation by: +AboutDialog.lbl.translator = +AboutDialog.lbl.translatorWebsite = +AboutDialog.lbl.translatorIcon = + + +! Print dialog +PrintDialog.title = Print or export +PrintDialog.but.previewAndPrint = Preview & Print +PrintDialog.checkbox.showByStage = Show by stage +PrintDialog.lbl.selectElements = Select elements to include: +printdlg.but.saveaspdf = Save as PDF +printdlg.but.preview = Preview +printdlg.but.settings = Settings +PrintDialog.error.preview.title = Unable to open preview +PrintDialog.error.preview.desc1 = Unable to open PDF preview. +PrintDialog.error.preview.desc2 = Please use the "Save as PDF" option instead. + +!PrintSettingsDialog +PrintSettingsDialog.title = Print settings +PrintSettingsDialog.lbl.Templatefillcolor = Template fill color: +PrintSettingsDialog.lbl.Templatebordercolor = Template border color: +PrintSettingsDialog.lbl.Papersize = Paper size: +PrintSettingsDialog.lbl.Paperorientation = Paper orientation: +PrintSettingsDialog.but.Reset = Reset +PrintSettingsDialog.but.Close = Close + + +! Bug Report dialog +bugreport.dlg.title = Bug report +bugreport.dlg.but.Sendbugreport = Send bug report +bugreport.dlg.but.Sendbugreport.Ttip = Automatically send the bug report to the OpenRocket developers. +bugreport.dlg.successmsg1 = Bug report successfully sent. +bugreport.dlg.successmsg2 = Thank you for helping make OpenRocket better! +bugreport.dlg.successmsg3 = Bug report sent +bugreport.dlg.connectedInternet = If connected to the Internet, you can simply click Send bug report. +bugreport.dlg.otherwise = Otherwise, send the text below to the address: +bugreport.lbl.Theinformation = The information above may be included in a public bug report. Make sure it does not contain any sensitive information you do not want to be made public. +bugreport.dlg.failedmsg1 = OpenRocket was unable to send the bug report: +bugreport.dlg.failedmsg2 = Please send the report manually to +bugreport.dlg.failedmsg3 = Error sending report +bugreport.reportDialog.txt = You can report a bug in OpenRocket by filling in and submitting the form below.
You can also report bugs and include attachments on the project web site. +bugreport.reportDialog.txt2 = Please include a short description about what you were doing when the exception occurred. +bugreport.dlg.provideDescription = Please provide a description of the bug first. +bugreport.dlg.provideDescription.title = Bug description missing + + +! Debug log dialog +debuglogdlg.but.clear = Clear +debuglogdlg.OpenRocketdebuglog = OpenRocket debug log +debuglogdlg.Displayloglines = Display log lines: +debuglogdlg.Follow = Follow +debuglogdlg.col.Time = Time +debuglogdlg.col.Level = Level +debuglogdlg.col.Location = Location +debuglogdlg.col.Message = Message +debuglogdlg.lbl.Loglinenbr = Log line number: +debuglogdlg.lbl.Time = Time: +debuglogdlg.lbl.Level = Level: +debuglogdlg.lbl.Location = Location: +debuglogdlg.lbl.Logmessage = Log message: +debuglogdlg.lbl.Stacktrace = Stack trace: + + +! MotorChooserDialog +MotorChooserDialog.title = Select a rocket motor + +! Edit Motor configuration dialog +edtmotorconfdlg.col.configuration = Configuration +edtmotorconfdlg.but.Removeconfiguration = Remove Configuration +edtmotorconfdlg.but.Renameconfiguration = Rename Configuration +edtmotorconfdlg.but.Newconfiguration = New Configuration +edtmotorconfdlg.but.Copyconfiguration = Copy Configuration +edtmotorconfdlg.title.Editmotorconf = Edit Flight configurations +edtmotorconfdlg.title.Renameconf = Rename Flight Configuration +edtmotorconfdlg.title.Selectdeploymentconf = Select Deployment Configuration +edtmotorconfdlg.title.Selectignitionconf = Select Ignition Configuration +edtmotorconfdlg.title.Selectseparationconf = Select Separation Configuration +edtmotorconfdlg.lbl.Selectedconf = Selected flight configuration: +edtmotorconfdlg.selectcomp = Select which components function as motor mounts: +edtmotorconfdlg.lbl.Configname = Configuration name: +edtmotorconfdlg.lbl.Motortab = Motors +edtmotorconfdlg.lbl.Recoverytab = Recovery +edtmotorconfdlg.lbl.Stagetab = Stages +edtmotorconfdlg.tbl.None = None +edtmotorconfdlg.tbl.Motorheader = Motor +edtmotorconfdlg.tbl.Mountheader = Motor Mount +edtmotorconfdlg.tbl.Ignitionheader = Ignition +edtmotorconfdlg.but.Resetdeployment = Reset to default +edtmotorconfdlg.but.Selectdeployment = Select deployment +edtmotorconfdlg.tbl.Recoveryheader = Recovery Device +edtmotorconfdlg.tbl.Deploymentheader = Deployment +edtmotorconfdlg.but.Resetseparation = Reset to default +edtmotorconfdlg.but.Selectseparation = Select separation +edtmotorconfdlg.tbl.Stageheader = Stage +edtmotorconfdlg.tbl.Separationheader = Separation + +! Rename FlightConfiguration Dialog +RenameConfigDialog.title = Rename Configuration +RenameConfigDialog.lbl.name = Name for flight configuration: +RenameConfigDialog.but.reset = Reset to default + +! Example design dialog +exdesigndlg.but.open = Open +exdesigndlg.lbl.Selectexample = Select example designs to open: +exdesigndlg.lbl.Openexampledesign = Open example design +exdesigndlg.lbl.Exampledesignsnotfound = Example designs could not be found. +exdesigndlg.lbl.Examplesnotfound = Examples not found + + +! Material edit panel +matedtpan.but.new = New +matedtpan.but.edit = Edit +matedtpan.but.delete = Delete +matedtpan.but.revertall = Revert all +matedtpan.col.Material = Material +matedtpan.col.Type = Type +matedtpan.col.Density = Density +matedtpan.col.but.ttip.New = Add a new material +matedtpan.title.Addcustmaterial = Add a custom material +matedtpan.but.ttip.edit = Edit an existing material +matedtpan.title.Editmaterial = Edit material +matedtpan.title2.Editmaterial = The built-in materials cannot be modified. +matedtpan.but.ttip.delete = Delete a user-defined material +matedtpan.but.ttip.revertall = Delete all user-defined materials +matedtpan.title.Deletealluser-defined = Delete all user-defined materials? +matedtpan.title.Revertall = Revert all? +matedtpan.lbl.edtmaterials = Editing materials will not affect existing rocket designs. + +!MaterialModel +MaterialModel.title.Material = Material +MaterialModel.title.Defcustmat = Define custom material + + +! Preference dialog +pref.dlg.but.add = Add +pref.dlg.but.reset = Reset +pref.dlg.but.checknow = Check now +pref.dlg.but.openlast = Open last design file on startup +pref.dlg.but.defaultmetric = Default metric +pref.dlg.but.defaultimperial = Default imperial +pref.dlg.title.Preferences = Preferences +pref.dlg.tab.Units = Units +pref.dlg.tab.Defaultunits = Default units +pref.dlg.tab.Materials = Materials +pref.dlg.tab.Custommaterials = Custom materials +pref.dlg.tab.Options = Options +pref.dlg.tab.Miscellaneousoptions = Miscellaneous options + +pref.dlg.tab.Graphics = Graphics +pref.dlg.lbl.DecalEditor = Graphics Editor +pref.dlg.opengl.lbl.title = 3D Graphics +pref.dlg.opengl.but.enableGL = Enable 3D Graphics +pref.dlg.opengl.but.enableAA = Enable Antialiasing +pref.dlg.opengl.lbl.useFBO = Use Off-screen Rendering + + +pref.dlg.lbl.Positiontoinsert = Position to insert new body components: +pref.dlg.lbl.Confirmdeletion = Confirm deletion of simulations: +pref.dlg.lbl.User-definedthrust = User-defined thrust curves: +pref.dlg.lbl.Windspeed = Wind speed +pref.dlg.Allthrustcurvefiles = All thrust curve files (*.eng; *.rse; *.zip; directories) +pref.dlg.RASPfiles = RASP motor files (*.eng) +pref.dlg.RockSimfiles = RockSim engine files (*.rse) +pref.dlg.ZIParchives = ZIP archives (*.zip) +pref.dlg.checkbox.Checkupdates = Check for software updates at startup +pref.dlg.ttip.Checkupdatesnow = Check for software updates now +pref.dlg.lbl.Selectprefunits = Select your preferred units: +pref.dlg.lbl.Rocketdimensions = Rocket dimensions: +pref.dlg.lbl.Linedensity = Line density: +pref.dlg.lbl.Motordimensions = Motor dimensions: +pref.dlg.lbl.Surfacedensity = Surface density: +pref.dlg.lbl.Distance = Distance: +pref.dlg.lbl.Bulkdensity = Bulk density: +pref.dlg.lbl.Velocity = Velocity: +pref.dlg.lbl.Surfaceroughness = Surface roughness: +pref.dlg.lbl.Acceleration = Acceleration: +pref.dlg.lbl.Area = Area: +pref.dlg.lbl.Mass = Mass: +pref.dlg.lbl.Angle = Angle: +pref.dlg.lbl.Force = Force: +pref.dlg.lbl.Rollrate = Roll rate: +pref.dlg.lbl.Totalimpulse = Total impulse: +pref.dlg.lbl.Temperature = Temperature: +pref.dlg.lbl.Momentofinertia = Moment of inertia: +pref.dlg.lbl.Pressure = Pressure: +pref.dlg.lbl.Stability = Stability: +pref.dlg.lbl.FlightTime = Flight time: +pref.dlg.lbl.effect1 = The effects will take place the next time you open a window. +pref.dlg.lbl.Checkingupdates = Checking for updates... +pref.dlg.lbl.msg1 = An error occurred while communicating with the server. +pref.dlg.lbl.msg2 = Unable to retrieve update information +pref.dlg.lbl.msg3 = You are running the latest version of OpenRocket. +pref.dlg.lbl.msg4 = No updates available +pref.dlg.PrefChoiseSelector1 = Always ask +pref.dlg.PrefChoiseSelector2 = Insert in middle +pref.dlg.PrefChoiseSelector3 = Add to end +pref.dlg.PrefBooleanSelector1 = Delete +pref.dlg.PrefBooleanSelector2 = Confirm +pref.dlg.Add = Add +pref.dlg.DescriptionArea.Adddirectories = Add directories, RASP motor files (*.eng), RockSim engine files (*.rse) or ZIP archives separated by a semicolon (;) to load external thrust curves. Changes will take effect the next time you start OpenRocket. + +PreferencesDialog.lbl.language = Interface language: +PreferencesDialog.languages.default = System default +PreferencesDialog.lbl.languageEffect = The language will change the next time you start OpenRocket. + +! Simulation edit dialog +simedtdlg.but.runsimulation = Run simulation +simedtdlg.but.resettodefault = Reset to default +simedtdlg.but.savedefault = Save as default +simedtdlg.but.add = Add +simedtdlg.but.remove = Remove +simedtdlg.title.Editsim = Edit simulation +simedtdlg.lbl.Simname = Simulation name: +simedtdlg.tab.Launchcond = Launch conditions +simedtdlg.tab.Simopt = Simulation options +simedtdlg.tab.Plotdata = Plot data +simedtdlg.tab.CustomExpressions = Custom expressions +simedtdlg.tab.Exportdata = Export data +simedtdlg.lbl.Flightcfg = Flight configuration: +simedtdlg.lbl.ttip.Flightcfg = Select the flight configuration to use. +simedtdlg.combo.ttip.Flightcfg = Select the flight configuration to use. +simedtdlg.lbl.Wind = Wind +simedtdlg.lbl.Averwindspeed = Average windspeed: +simedtdlg.lbl.ttip.Averwindspeed = The average windspeed relative to the ground. +simedtdlg.lbl.Stddeviation = Standard deviation: +simedtdlg.lbl.ttip.Stddeviation = The standard deviation of the windspeed.
The windspeed is within twice the standard deviation from the average for 95% of the time. +simedtdlg.lbl.Turbulenceintensity = Turbulence intensity: +simedtdlg.lbl.ttip.Turbulenceintensity1 = The turbulence intensity is the standard deviation divided by the average windspeed.
+simedtdlg.lbl.ttip.Turbulenceintensity2 = Typical values range from +simedtdlg.lbl.ttip.Turbulenceintensity3 = to +simedtdlg.border.Atmoscond = Atmospheric conditions +simedtdlg.checkbox.InterStdAtmosphere = Use International Standard Atmosphere +simedtdlg.checkbox.ttip.InterStdAtmosphere1 = Select to use the International Standard Atmosphere model.
This model has a temperature of +simedtdlg.checkbox.ttip.InterStdAtmosphere2 = and a pressure of +simedtdlg.checkbox.ttip.InterStdAtmosphere3 = at sea level. +simedtdlg.lbl.Temperature = Temperature: +simedtdlg.lbl.ttip.Temperature = The temperature at the launch site. +simedtdlg.lbl.Pressure = Pressure: +simedtdlg.lbl.ttip.Pressure = The atmospheric pressure at the launch site. +simedtdlg.lbl.Launchsite = Launch site +simedtdlg.lbl.Latitude = Latitude: +simedtdlg.lbl.ttip.Latitude = The launch site latitude affects the gravitational pull of Earth.
Positive values are on the Northern hemisphere, negative values on the Southern hemisphere. + +simedtdlg.lbl.Longitude = Longitude: +simedtdlg.lbl.ttip.Longitude = Required for weather prediction and elevation models. + +simedtdlg.lbl.Altitude = Altitude: +simedtdlg.lbl.ttip.Altitude = The launch altitude above mean sea level.
This affects the position of the rocket in the atmospheric model. +simedtdlg.border.Launchrod = Launch rod +simedtdlg.lbl.Length = Length: +simedtdlg.lbl.ttip.Length = The length of the launch rod. +simedtdlg.lbl.Angle = Angle: +simedtdlg.lbl.ttip.Angle = The angle of the launch rod from vertical. +simedtdlg.lbl.Direction = Direction: +simedtdlg.lbl.ttip.Direction1 = Direction of the launch rod relative to the wind.
+simedtdlg.lbl.ttip.Direction2 = = towards the wind, +simedtdlg.lbl.ttip.Direction3 = = downwind. +simedtdlg.border.Simopt = Simulator options +simedtdlg.lbl.Calcmethod = Calculation method: +simedtdlg.lbl.ttip.Calcmethod = The Extended Barrowman method calculates aerodynamic forces according
to the Barrowman equations extended to accommodate more components. +simedtdlg.lbl.ExtBarrowman = Extended Barrowman +simedtdlg.lbl.Simmethod = Simulation method: +simedtdlg.lbl.ttip.Simmethod1 = The six degree-of-freedom simulator allows the rocket total freedom during flight.
+simedtdlg.lbl.ttip.Simmethod2 = Integration is performed using a 4th order Runge-Kutta 4 numerical integration. +simedtdlg.lbl.GeodeticMethod = Geodetic calculations: +simedtdlg.lbl.ttip.GeodeticMethodTip = Relate to the calculation of coordinates on the earth. This also enables coriolis effect computations. +simedtdlg.lbl.Timestep = Time step: +simedtdlg.lbl.ttip.Timestep1 = The time between simulation steps.
A smaller time step results in a more accurate but slower simulation.
+simedtdlg.lbl.ttip.Timestep2 = The 4th order simulation method is quite accurate with a time step of +simedtdlg.but.ttip.resettodefault = Reset the time step to its default value ( +simedtdlg.border.Simlist = Simulator listeners +simedtdlg.txt.longA1 = Simulation listeners is an advanced feature that allows user-written code to listen to and interact with the simulation. +simedtdlg.txt.longA2 = For details on writing simulation listeners, see the OpenRocket technical documentation. +simedtdlg.lbl.Curlist = Current listeners: +simedtdlg.lbl.Addsimlist = Add simulation listener +simedtdlg.lbl.Noflightdata = No flight data available. +simedtdlg.lbl.runsimfirst = Please run the simulation first. +simedtdlg.chart.Simflight = Simulated flight +simedtdlg.dlg.Simres = Simulation results +simedtdlg.IntensityDesc.None = None +simedtdlg.IntensityDesc.Verylow = Very low +simedtdlg.IntensityDesc.Low = Low +simedtdlg.IntensityDesc.Medium = Medium +simedtdlg.IntensityDesc.High = High +simedtdlg.IntensityDesc.Veryhigh = Very high +simedtdlg.IntensityDesc.Extreme = Extreme + +SimulationEditDialog.btn.plot = Plot +SimulationEditDialog.btn.export = Export +SimulationEditDialog.btn.edit = Edit +SimulationEditDialog.btn.simulate = Simulate +SimulationEditDialog.btn.simulateAndPlot = Simulate & Plot + +GeodeticComputationStrategy.flat.name = Flat Earth +GeodeticComputationStrategy.flat.desc = Perform computations with a flat Earth approximation. Sufficient for low-altitude flights. +GeodeticComputationStrategy.spherical.name = Spherical approximation +GeodeticComputationStrategy.spherical.desc = Perform geodetic computations assuming a spherical Earth.
This is sufficiently accurate for almost all purposes. +GeodeticComputationStrategy.wgs84.name = WGS84 ellipsoid +GeodeticComputationStrategy.wgs84.desc = Perform geodetic computations on the WGS84 reference ellipsoid using Vincenty's method.
Slower and unnecessary in most cases. + + + + +! Simulation Panel +simpanel.but.newsimulation = New simulation +simpanel.but.editsimulation = Edit simulation +simpanel.but.runsimulations = Run simulations +simpanel.but.deletesimulations = Delete simulations +simpanel.but.plotexport = Plot / export +simpanel.but.ttip.newsimulation = Add a new simulation +simpanel.but.ttip.editsim = Edit the selected simulation +simpanel.but.ttip.runsimu = Re-run the selected simulations +simpanel.but.ttip.deletesim = Delete the selected simulations +simpanel.checkbox.donotask = Do not ask me again +simpanel.lbl.defpref = You can change the default operation in the preferences. +simpanel.dlg.lbl.DeleteSim1 = Delete the selected simulations? +simpanel.dlg.lbl.DeleteSim2 = This operation cannot be undone. +simpanel.dlg.lbl.DeleteSim3 = Delete simulations +simpanel.col.Name = Name +simpanel.col.Motors = Motors +simpanel.col.Configuration = Configuration +simpanel.col.Velocityoffrod = Velocity off rod +simpanel.col.Velocityatdeploy = Velocity at deployment +simpanel.col.OptimumCoastTime = Optimum delay +simpanel.col.OptimumCoastTime.ttip = The time between last motor burnout and maximum possible altitude. +simpanel.col.Apogee = Apogee +simpanel.col.Maxvelocity = Max. velocity +simpanel.col.Maxacceleration = Max. acceleration +simpanel.col.Timetoapogee = Time to apogee +simpanel.col.Flighttime = Flight time +simpanel.col.Groundhitvelocity = Ground hit velocity +simpanel.ttip.uptodate = Up to date +simpanel.ttip.loaded = Data loaded from a file +simpanel.ttip.outdated = Data is out of date
Click Run simulations to simulate. +simpanel.ttip.external = Imported data +simpanel.ttip.notSimulated = Not simulated yet
Click Run simulations to simulate. +simpanel.ttip.noData = No simulation data available. +simpanel.ttip.noWarnings = No warnings. +simpanel.ttip.warnings = Warnings: + +! SimulationRunDialog +SimuRunDlg.title.RunSim = Running simulations... +SimuRunDlg.lbl.Running = Running ... +SimuRunDlg.lbl.Simutime = Simulation time: +SimuRunDlg.lbl.Altitude = Altitude: +SimuRunDlg.lbl.Velocity = Velocity: +SimuRunDlg.msg.Unabletosim = Unable to simulate: +SimuRunDlg.msg.errorOccurred = An error occurred during the simulation: + +BasicEventSimulationEngine.error.noMotorsDefined = No motors defined in the simulation. +BasicEventSimulationEngine.error.earlyMotorBurnout = Motor burnout without liftoff. +BasicEventSimulationEngine.error.noIgnition = No motors ignited. +BasicEventSimulationEngine.error.NaNResult = Simulation resulted in not-a-number (NaN) value, please report a bug. + + +RK4SimulationStepper.error.valuesTooLarge = Simulation values exceeded limits. Try selecting a shorter time step. + +SimulationModifierTree.OptimizationParameters = Optimization Parameters + +! SimulationExportPanel +SimExpPan.desc = Comma Separated Files (*.csv) +SimExpPan.border.Vartoexport = Variables to export +SimExpPan.border.Stage = Stage to export +SimExpPan.but.Selectall = Select all +SimExpPan.but.Selectnone = Select none +SimExpPan.border.Fieldsep = Field separator +SimExpPan.lbl.Fieldsepstr = Field separator string: +SimExpPan.lbl.longA1 = The string used to separate the fields in the exported file.
+SimExpPan.lbl.longA2 = Use ',' for a Comma Separated Values (CSV) file. +SimExpPan.checkbox.Includesimudesc = Include simulation description +SimExpPan.checkbox.ttip.Includesimudesc = Include a comment at the beginning of the file describing the simulation. +SimExpPan.border.Comments = Comments +SimExpPan.checkbox.Includefielddesc = Include field descriptions +SimExpPan.checkbox.ttip.Includefielddesc = Include a comment line with the descriptions of the exported variables. +SimExpPan.checkbox.Incflightevents = Include flight events +SimExpPan.checkbox.ttip.Incflightevents = Include a comment line for every flight event. +SimExpPan.lbl.Commentchar = Comment character: +SimExpPan.lbl.ttip.Commentchar = The character(s) that mark a comment line. +SimExpPan.Fileexists.desc1 = File \" +SimExpPan.Fileexists.desc2 = \" exists. Overwrite? +SimExpPan.Fileexists.title = File exists +SimExpPan.ExportingVar.desc1 = Exporting 1 variable out of +SimExpPan.ExportingVar.desc2 = Exporting +SimExpPan.ExportingVar.desc3 = variables out of +SimExpPan.Col.Variable = Variable +SimExpPan.Col.Unit = Unit + + +CsvOptionPanel.separator.space = SPACE +CsvOptionPanel.separator.tab = TAB + + +! Custom expression general stuff +customExpression.Name = Name +customExpression.Symbol = Symbol +customExpression.Expression = Expression +customExpression.Units = Units +customExpression.Operator = Operator +customExpression.Description = Description + +! Custom expression panel +customExpressionPanel.but.NewExpression = New expression +customExpressionPanel.but.ttip.NewExpression = Add a new custom expression +customExpressionPanel.but.Import = Import +customExpressionPanel.but.ttip.Import = Import custom expressions from another .ork file +customExpressionPanel.lbl.UpdateNote = You must run the simulation before data will be available for plotting. +customExpressionPanel.lbl.CalcNote = Expressions will be calculated in the order shown. +customExpressionPanel.lbl.CustomExpressions = Custom Expressions +customExpression.Units.but.ttip.Remove = Remove this expression +customExpression.Units.but.ttip.Edit = Edit this expression +customExpression.Units.but.ttip.MoveUp = Move expression up in calculation order +customExpression.Units.but.ttip.MoveDown = Move expression down in calculation order + + +! Custom expression builder window +ExpressionBuilderDialog.title = Expression Builder +ExpressionBuilderDialog.InsertVariable = Insert Variable +ExpressionBuilderDialog.InsertOperator = Insert Operator +ExpressionBuilderDialog.led.ttip.Name = Name must not have already been used +ExpressionBuilderDialog.led.ttip.Symbol = Symbol must not have already been used +ExpressionBuilderDialog.led.ttip.Expression = Expression must use only known symbols and operators +ExpressionBuilderDialog.CopyToOtherSimulations = Copy to other simulations +ExpressionBuilderDialog.CopyToOtherSimulations.ttip = Make a copy of this expression in other simulations in this document.
Will not overwrite or modify any existing expressions in other simulations. + +! Custom expression variable selector +CustomVariableSelector.title = Variable Selector + +! Custom operator selector +CustomOperatorSelector.title = Operator Selector + +! Operators +Operator.plus = Addition +Operator.minus = Subtraction +Operator.star = Multiplication +Operator.div = Division +Operator.mod = Modulo +Operator.pow = Exponentiation +Operator.abs = Absolute value +Operator.ceil = Ceiling (next integer value) +Operator.floor = Floor (previous integer value) +Operator.sqrt = Square root +Operator.cbrt = Cubic root +Operator.exp = Euler\'s number raised to the value (e^x) +Operator.ln = Natural logarithm +Operator.sin = Sine +Operator.cos = Cosine +Operator.tan = Tangent +Operator.asin = Arc sine +Operator.acos = Arc cosine +Operator.atan = Arc tangent +Operator.hsin = Hyperbolic sine +Operator.hcos = Hyperbolic cosine +Operator.htan = Hyperbolic tangent +Operator.log10 = Base 10 logarithm +Operator.round = Round to nearest integer value +Operator.random = Random number between zero and given value +Operator.expm1 = The same as exp(x)-1, but more accurate for small x +Operator.mean = The arithmetic mean of a given range +Operator.min = The minimum value in a given range +Operator.max = The maximum value in a given range +Operator.var = The variance of a given range +Operator.stdev = The standard deviation of a given range +Operator.rms = The root-mean-squared value of a given range +Operator.lclip = Clips a value (1st parameter) to be no less than a given value (2nd parameter) +Operator.uclip = Clips a value (1st parameter) to be no greater than a given value (2nd parameter) +Operator.binf = Gives the fraction of values in a given range (1st parameter) inside a bin with given lower (2nd parameter) and upper (3rd parameter) bounds +Operator.trapz = Integrates the given range using trapezoidal integration +Operator.tnear = Find the time corresponding to the point in a range (1st parameter) nearest to a given value (2nd parameter) + +! MotorPlot +MotorPlot.title.Motorplot = Motor plot +MotorPlot.but.Select = Select +MotorPlot.Chart.Motorthrustcurve = Motor thrust curve +MotorPlot.Chart.Time = Time / s +MotorPlot.Chart.Thrust = Thrust / N +MotorPlot.txt.Designation = Designation: +MotorPlot.txt.Manufacturer = Manufacturer: +MotorPlot.txt.Type = Type: +MotorPlot.txt.Delays = Delays: +MotorPlot.txt.Comment = Comment:\n + +! Simulation plot panel +simplotpanel.lbl.Presetplotconf = Preset plot configurations: +simplotpanel.lbl.Xaxistype = X axis type: +simplotpanel.lbl.Unit = Unit: +simplotpanel.lbl.Yaxistypes = Y axis types: +simplotpanel.lbl.Flightevents = Flight events: +simplotpanel.but.All = All +simplotpanel.but.None = None +simplotpanel.but.NewYaxisplottype = New Y axis plot type +simplotpanel.lbl.Axis = Axis: +simplotpanel.but.ttip.Removethisplot = Remove this plot +simplotpanel.Desc = The data will be plotted in time order even if the X axis type is not time. +simplotpanel.OptionPane.lbl1 = A maximum of 15 plots is allowed. +simplotpanel.OptionPane.lbl2 = Cannot add plot +simplotpanel.AUTO_NAME = Auto +simplotpanel.LEFT_NAME = Left +simplotpanel.RIGHT_NAME = Right +simplotpanel.CUSTOM = Custom +SimulationPlotPanel.error.noPlotSelected = Please add one or more variables to plot on the Y-axis. +SimulationPlotPanel.error.noPlotSelected.title = Nothing to plot + +! Component add buttons +compaddbuttons.Bodycompandfinsets = Body components and fin sets +compaddbuttons.Nosecone = Nose cone +compaddbuttons.Bodytube = Body tube +compaddbuttons.Transition = Transition +compaddbuttons.Trapezoidal = Trapezoidal +compaddbuttons.Elliptical = Elliptical +compaddbuttons.Freeform = Freeform +compaddbuttons.Launchlug = Launch lug +compaddbuttons.Innercomponent = Inner component +compaddbuttons.Innertube = Inner tube +compaddbuttons.Coupler = Coupler +compaddbuttons.Centeringring = Centering\nring +compaddbuttons.Bulkhead = Bulkhead +compaddbuttons.Engineblock = Engine\nblock +compaddbuttons.Massobjects = Mass objects +compaddbuttons.Parachute = Parachute +compaddbuttons.Streamer = Streamer +compaddbuttons.Shockcord = Shock cord +compaddbuttons.Masscomponent = Mass\ncomponent +compaddbuttons.Donotaskmeagain = Do not ask me again +compaddbuttons.Selectcomppos = Select component position +compaddbuttons.lbl.Youcanchange = You can change the default operation in the preferences. +compaddbuttons.lbl.insertcomp = Insert the component after the current component or as the last component? +compaddbuttons.askPosition.Inserthere = Insert here +compaddbuttons.askPosition.Addtotheend = Add to the end +compaddbuttons.askPosition.Cancel = Cancel + +! Component Analysis Dialog +componentanalysisdlg.componentanalysis = Component analysis +componentanalysisdlg.lbl.winddir = Wind direction: +componentanalysisdlg.TitledBorder.warnings = Warnings: +componentanalysisdlg.ToggleBut.worst = Worst +componentanalysisdlg.lbl.angleofattack = Angle of attack: +componentanalysisdlg.lbl.machnumber = Mach number: +componentanalysisdlg.lbl.rollrate = Roll rate: +componentanalysisdlg.lbl.activestages = Active stages: +componentanalysisdlg.lbl.motorconf = Motor configuration: +componentanalysisdlg.TabStability.Col = Component +componentanalysisdlg.TabStability.Col.CG = CG +componentanalysisdlg.TabStability.Col.Mass = Mass +componentanalysisdlg.TabStability.Col.CP = CP +componentanalysisdlg.TabStability = Stability +componentanalysisdlg.TabStability.ttip = Stability information +componentanalysisdlg.dragTableModel.Col.Component = Component +componentanalysisdlg.dragTableModel.Col.Pressure = Pressure CD +componentanalysisdlg.dragTableModel.Col.Base = Base CD +componentanalysisdlg.dragTableModel.Col.friction = Friction CD +componentanalysisdlg.dragTableModel.Col.total = Total CD +componentanalysisdlg.dragTabchar = Drag characteristics +componentanalysisdlg.dragTabchar.ttip = Drag characteristics +componentanalysisdlg.rollTableModel.Col.component = Component +componentanalysisdlg.rollTableModel.Col.rollforc = Roll forcing coefficient +componentanalysisdlg.rollTableModel.Col.rolldamp = Roll damping coefficient +componentanalysisdlg.rollTableModel.Col.total = Total Cl +componentanalysisdlg.rollTableModel = Roll dynamics +componentanalysisdlg.rollTableModel.ttip = Roll dynamics +componentanalysisdlg.println.closingmethod = Closing method called: +componentanalysisdlg.println.settingnam = SETTING NAN VALUES +componentanalysisdlg.lbl.reflenght = Reference length: +componentanalysisdlg.lbl.refarea = Reference area: +!componentanalysisdlg.But.close =Close +componentanalysisdlg.TabStability.Col.Component = Component +componentanalysisdlg.TOTAL = Total +componentanalysisdlg.noWarnings = No warnings. + +! Custom Material dialog +custmatdlg.title.Custommaterial = Custom material +custmatdlg.lbl.Materialname = Material name: +custmatdlg.lbl.Materialtype = Material type: +custmatdlg.lbl.Materialdensity = Material density: +custmatdlg.checkbox.Addmaterial = Add material to database + + +! Ring Component Config +ringcompcfg.OuterRadius = OuterRadius +ringcompcfg.Automatic = Automatic +ringcompcfg.InnerRadius = InnerRadius +ringcompcfg.Thickness = Thickness +ringcompcfg.Length = Length +ringcompcfg.Positionrelativeto = Position relative to: +ringcompcfg.plus = plus +ringcompcfg.PositionValue = PositionValue +ringcompcfg.Radialdistance = Radial distance: +ringcompcfg.Distancefrom = Distance from the rocket centerline +ringcompcfg.Radialdirection = Radial direction: +ringcompcfg.radialdirectionfrom = The radial direction from the rocket centerline +ringcompcfg.but.Reset = Reset +ringcompcfg.but.Resetcomponant = Reset the component to the rocket centerline +ringcompcfg.EngineBlock.desc = An engine block stops the motor from moving forwards in the motor mount tube.

In order to add a motor, create a body tube or inner tube and mark it as a motor mount in the Motor tab. +ringcompcfg.note.desc = Note: An inner tube will not affect the aerodynamics of the rocket even if it is located outside of the body tube. + + +! Body Tube Config +BodyTubecfg.lbl.Bodytubelength = Body tube length: +BodyTubecfg.lbl.Outerdiameter = Outer diameter: +BodyTubecfg.lbl.Innerdiameter = Inner diameter: +BodyTubecfg.lbl.Wallthickness = Wall thickness: +BodyTubecfg.tab.General = General +BodyTubecfg.tab.Generalproperties = General properties +BodyTubecfg.tab.Motor = Motor +BodyTubecfg.tab.Motormountconf = Motor mount configuration +BodyTubecfg.checkbox.Automatic = Automatic +BodyTubecfg.checkbox.Filled = Filled + +! FinSetConfig +FinSetConfig.tab.Fintabs = Fin tabs +FinSetConfig.tab.Through-the-wall = Through-the-wall fin tabs +FinSetConfig.but.Converttofreeform = Convert to freeform +FinSetConfig.but.Converttofreeform.ttip = Convert this fin set into a freeform fin set +FinSetConfig.Convertfinset = Convert fin set +FinSetConfig.but.Splitfins = Split fins +FinSetConfig.but.Splitfins.ttip = Split the fin set into separate fins +FinSetConfig.but.AutoCalc = Calculate automatically +FinSetConfig.lbl.Through-the-wall = Through-the-wall fin tabs: +FinSetConfig.lbl.Tablength = Tab length: +FinSetConfig.ttip.Tablength = The length of the fin tab. +FinSetConfig.lbl.Tabheight = Tab height: +FinSetConfig.ttip.Tabheight = The spanwise height of the fin tab. +FinSetConfig.lbl.Tabposition = Tab position: +FinSetConfig.ttip.Tabposition = The position of the fin tab. +FinSetConfig.lbl.relativeto = relative to + +!FinMarkingGuide +FinMarkingGuide.lbl.Front = Front + +! MotorDatabaseLoadingDialog +MotorDbLoadDlg.title = Loading motors +MotorDbLoadDlg.Loadingmotors = Loading motors... + +! AppearanceConfig +AppearanceCfg.lbl.Appearance = Appearance +AppearanceCfg.lbl.Usedefault = Use default +AppearanceCfg.but.edit = Edit +AppearanceCfg.but.savedefault = Save as default appearance +AppearanceCfg.lbl.Texture = Texture: +AppearanceCfg.lbl.shine = Shine: +AppearanceCfg.lbl.color.Color = Color: +AppearanceCfg.lbl.color.diffuse = Diffuse Color: +AppearanceCfg.lbl.color.ambient = Ambient Color: +AppearanceCfg.lbl.color.specular = Specular Color: +AppearanceCfg.lbl.texture.scale = Scale: +AppearanceCfg.lbl.texture.offset = Offset: +AppearanceCfg.lbl.texture.center = Center: +AppearanceCfg.lbl.texture.rotation = Rotation: +AppearanceCfg.lbl.texture.repeat = Repeat: + +! Texture Wrap Modes +TextureWrap.Repeat = Repeat +TextureWrap.Mirror = Repeat & Mirror +TextureWrap.Clamp = Clamp Edge Pixels +TextureWrap.Sticker = Sticker + +! RocketConfig +RocketCfg.lbl.Designname = Design name: +RocketCfg.lbl.Designer = Designer: +RocketCfg.lbl.Comments = Comments: +RocketCfg.lbl.Revisionhistory = Revision history: +RocketCfg.lbl.Material = Material: + +! ShockCordConfig +ShockCordCfg.lbl.Shockcordlength = Shock cord length: + +! RocketComponentConfig +RocketCompCfg.lbl.Componentname = Component name: +RocketCompCfg.ttip.Thecomponentname = The component name. +RocketCompCfg.tab.Override = Override +RocketCompCfg.tab.MassandCGoverride = Mass and CG override options +RocketCompCfg.tab.Figure = Figure +RocketCompCfg.tab.Figstyleopt = Figure style options +RocketCompCfg.tab.Comment = Comment +RocketCompCfg.tab.Specifyacomment = Specify a comment for the component +RocketCompCfg.tab.Appearance = Appearance +RocketCompCfg.lbl.Mass = Mass: +RocketCompCfg.lbl.Componentmass = Component mass: +RocketCompCfg.lbl.overriddento = (overridden to +RocketCompCfg.lbl.overriddenby = (overridden by +RocketCompCfg.lbl.Componentmaterial = Component material: +RocketCompCfg.lbl.Componentfinish = Component finish: +RocketCompCfg.lbl.ttip.componentmaterialaffects = The component material affects the weight of the component. +RocketCompCfg.combo.ttip.componentmaterialaffects = The component material affects the weight of the component. +RocketCompCfg.lbl.longA1 = The component finish affects the aerodynamic drag of the component.
+RocketCompCfg.lbl.longA2 = The value indicated is the average roughness height of the surface. +RocketCompCfg.but.Setforall = Set for all +RocketCompCfg.but.ttip.Setforall = Set this finish for all components of the rocket. +RocketCompCfg.lbl.Overridemassorcenter = Override the mass or center of gravity of the +RocketCompCfg.checkbox.Overridemass = Override mass: +RocketCompCfg.checkbox.Overridecenterofgrav = Override center of gravity: +RocketCompCfg.checkbox.OverridemassandCG = Override mass and CG of all subcomponents +RocketCompCfg.lbl.longB1 = The overridden mass does not include motors.
+RocketCompCfg.lbl.longB2 = The center of gravity is measured from the front end of the +RocketCompCfg.lbl.Commentsonthe = Comments on the +RocketCompCfg.lbl.Figurestyle = Figure style: +RocketCompCfg.lbl.Componentcolor = Component color: +RocketCompCfg.lbl.Choosecolor = Choose color +RocketCompCfg.checkbox.Usedefaultcolor = Use default color +RocketCompCfg.lbl.Complinestyle = Component line style: +RocketCompCfg.but.Saveasdefstyle = Save as default style +RocketCompCfg.lbl.Diameter = Diameter: +RocketCompCfg.lbl.Length = Length: +RocketCompCfg.lbl.Thickness = Thickness: +RocketCompCfg.checkbox.Endcapped = End capped +RocketCompCfg.ttip.Endcapped = Whether the end of the shoulder is capped. +RocketCompCfg.title.Noseconeshoulder = Nose cone shoulder +RocketCompCfg.title.Aftshoulder = Aft shoulder +RocketCompCfg.border.Foreshoulder = Fore shoulder +!RocketCompCfg.lbl.Length = Length: + +! BulkheadConfig +BulkheadCfg.tab.Diameter = Diameter: +BulkheadCfg.tab.Thickness = Thickness: +BulkheadCfg.tab.General = General +BulkheadCfg.tab.Generalproperties = General properties + +!CenteringRingConfig +CenteringRingCfg.tab.Outerdiam = Outer diameter: +CenteringRingCfg.tab.Innerdiam = Inner diameter: +CenteringRingCfg.tab.Thickness = Thickness: +CenteringRingCfg.tab.General = General +CenteringRingCfg.tab.Generalproperties = General properties + +!ComponentConfigDialog +ComponentCfgDlg.configuration = configuration +ComponentCfgDlg.configuration1 = +ComponentCfgDlg.Modify = Modify + +!StageConfig +StageConfig.tab.Separation = Separation +StageConfig.tab.Separation.ttip = Stage separation options +StageConfig.separation.lbl.title = Select when this stage separates: +StageConfig.separation.lbl.plus = plus +StageConfig.separation.lbl.seconds = seconds + +!EllipticalFinSetConfig +EllipticalFinSetCfg.Nbroffins = Number of fins: +EllipticalFinSetCfg.Rotation = Rotation: +EllipticalFinSetCfg.Fincant = Fin cant: +EllipticalFinSetCfg.Rootchord = Root chord: +EllipticalFinSetCfg.Height = Height: +EllipticalFinSetCfg.Positionrelativeto = Position relative to: +EllipticalFinSetCfg.plus = plus +EllipticalFinSetCfg.FincrossSection = Fin cross section: +EllipticalFinSetCfg.Thickness = Thickness: +EllipticalFinSetCfg.General = General +EllipticalFinSetCfg.Generalproperties = General properties +EllipticalFinSetCfg.ttip.Fincant = The angle that the fins are canted with respect to the rocket body. + +!FreeformFinSetConfig +FreeformFinSetCfg.tab.General = General +FreeformFinSetCfg.tab.ttip.General = General properties +FreeformFinSetCfg.tab.Shape = Shape +FreeformFinSetCfg.tab.ttip.Finshape = Fin shape +FreeformFinSetCfg.lbl.Numberoffins = Number of fins: +FreeformFinSetCfg.lbl.Finrotation = Fin rotation: +FreeformFinSetCfg.lbl.Fincant = Fin cant: +FreeformFinSetCfg.lbl.ttip.Fincant = The angle that the fins are canted with respect to the rocket body. +FreeformFinSetCfg.lbl.Posrelativeto = Position relative to: +FreeformFinSetCfg.lbl.plus = plus +FreeformFinSetCfg.lbl.FincrossSection = Fin cross section: +FreeformFinSetCfg.lbl.Thickness = Thickness: +! doubleClick1 + 2 form the message "Double-click to edit", split approximately at the middle +FreeformFinSetConfig.lbl.doubleClick1 = Double-click +FreeformFinSetConfig.lbl.doubleClick2 = to edit +FreeformFinSetConfig.lbl.clickDrag = Click+drag: Add and move points +FreeformFinSetConfig.lbl.ctrlClick = Ctrl+click: Remove point +FreeformFinSetConfig.lbl.scaleFin = Scale Fin + + +!InnerTubeConfig +InnerTubeCfg.tab.Motor = Motor +InnerTubeCfg.tab.ttip.Motor = Motor mount configuration +InnerTubeCfg.tab.Cluster = Cluster +InnerTubeCfg.tab.ttip.Cluster = Cluster configuration +InnerTubeCfg.tab.Radialpos = Radial position +InnerTubeCfg.tab.ttip.Radialpos = Radial position +InnerTubeCfg.lbl.Selectclustercfg = Select cluster configuration: +InnerTubeCfg.lbl.TubeSep = Tube separation: +InnerTubeCfg.lbl.ttip.TubeSep = The separation of the tubes, 1.0 = touching each other +InnerTubeCfg.lbl.Rotation = Rotation: +InnerTubeCfg.lbl.ttip.Rotation = Rotation angle of the cluster configuration +InnerTubeCfg.lbl.Rotangle = Rotation angle of the cluster configuration +InnerTubeCfg.but.Splitcluster = Split cluster +InnerTubeCfg.lbl.longA1 = Split the cluster into separate components.
+InnerTubeCfg.lbl.longA2 = This also duplicates all components attached to this inner tube. +InnerTubeCfg.but.Resetsettings = Reset settings +InnerTubeCfg.but.ttip.Resetsettings = Reset the separation and rotation to the default values + +! LaunchLugConfig +LaunchLugCfg.lbl.Length = Length: +LaunchLugCfg.lbl.Outerdiam = Outer diameter: +LaunchLugCfg.lbl.Innerdiam = Inner diameter: +LaunchLugCfg.lbl.Thickness = Thickness: +LaunchLugCfg.lbl.Radialpos = Radial position: +LaunchLugCfg.lbl.Posrelativeto = Position relative to: +LaunchLugCfg.lbl.plus = plus +LaunchLugCfg.tab.General = General +LaunchLugCfg.tab.Generalprop = General properties + +! MassComponentConfig +MassComponentCfg.lbl.Mass = Mass: +MassComponentCfg.lbl.Density = Approximate density: +MassComponentCfg.lbl.Length = Length: +MassComponentCfg.lbl.Diameter = Diameter: +MassComponentCfg.lbl.PosRelativeto = Position relative to: +MassComponentCfg.lbl.plus = plus +MassComponentCfg.tab.General = General +MassComponentCfg.tab.ttip.General = General properties +MassComponentCfg.tab.Radialpos = Radial position +MassComponentCfg.tab.ttip.Radialpos = Radial position configuration +MassComponentCfg.lbl.Radialdistance = Radial distance: +MassComponentCfg.lbl.Radialdirection = Radial direction: +MassComponentCfg.but.Reset = Reset + +! MotorConfig +MotorCfg.checkbox.compmotormount = This component is a motor mount +MotorCfg.lbl.Flightcfg = Flight configuration: +MotorCfg.but.New = New +MotorCfg.but.FlightcfgEdit = Edit +MotorCfg.lbl.Currentmotor = Current motor: +MotorCfg.lbl.Motoroverhang = Motor overhang: +MotorCfg.lbl.Ignitionat = Ignition at: +MotorCfg.lbl.plus = plus +MotorCfg.lbl.seconds = seconds +MotorCfg.lbl.longA1 = The current design has only one stage. +MotorCfg.lbl.longA2 = Stages can be added by clicking \"New stage\". +MotorCfg.lbl.longB1 = The current design has +MotorCfg.lbl.longB2 = stages. +MotorCfg.but.Selectmotor = Select motor +MotorCfg.but.Removemotor = Remove motor +MotorCfg.lbl.motorLabel = None + +! NoseConeConfig +NoseConeCfg.lbl.Noseconeshape = Nose cone shape: +NoseConeCfg.lbl.Shapeparam = Shape parameter: +NoseConeCfg.lbl.Noseconelength = Nose cone length: +NoseConeCfg.lbl.Basediam = Base diameter: +NoseConeCfg.checkbox.Automatic = Automatic +NoseConeCfg.lbl.Wallthickness = Wall thickness: +NoseConeCfg.checkbox.Filled = Filled +NoseConeCfg.tab.General = General +NoseConeCfg.tab.ttip.General = General properties +NoseConeCfg.tab.Shoulder = Shoulder +NoseConeCfg.tab.ttip.Shoulder = Shoulder properties + +! ParachuteConfig +ParachuteCfg.lbl.Canopy = Canopy: +ParachuteCfg.lbl.Diameter = Diameter: +ParachuteCfg.lbl.Material = Material: +ParachuteCfg.combo.MaterialModel = The component material affects the weight of the component. +ParachuteCfg.lbl.longA1 = Drag coefficient CD: +ParachuteCfg.lbl.longB1 = The drag coefficient relative to the total area of the parachute.
+ParachuteCfg.lbl.longB2 = A larger drag coefficient yields a slowed descent rate. +ParachuteCfg.lbl.longB3 = A typical value for parachutes is 0.8. +ParachuteCfg.but.Reset = Reset +ParachuteCfg.lbl.Shroudlines = Shroud lines: +ParachuteCfg.lbl.Numberoflines = Number of lines: +ParachuteCfg.lbl.Linelength = Line length: +ParachuteCfg.lbl.Material = Material: +ParachuteCfg.lbl.Posrelativeto = Position relative to: +ParachuteCfg.lbl.plus = plus +ParachuteCfg.lbl.Packedlength = Packed length: +ParachuteCfg.lbl.Packeddiam = Packed diameter: +ParachuteCfg.lbl.Deploysat = Deploys at: +ParachuteCfg.lbl.seconds = seconds +ParachuteCfg.lbl.Altitude = Altitude: +ParachuteCfg.tab.General = General +ParachuteCfg.tab.ttip.General = General properties +ParachuteCfg.tab.Radialpos = Radial position +ParachuteCfg.tab.ttip.Radialpos = Radial position configuration +ParachuteCfg.lbl.Radialdistance = Radial distance: +ParachuteCfg.lbl.Radialdirection = Radial direction: +ParachuteCfg.but.Reset = Reset +ParachuteCfg.lbl.plusdelay = plus + +! ShockCordConfig +ShockCordCfg.lbl.Shockcordlength = Shock cord length: +ShockCordCfg.lbl.Shockcordmaterial = Shock cord material: +ShockCordCfg.lbl.Posrelativeto = Position relative to: +ShockCordCfg.lbl.plus = plus +ShockCordCfg.lbl.Packedlength = Packed length: +ShockCordCfg.lbl.Packeddiam = Packed diameter: +ShockCordCfg.tab.General = General +ShockCordCfg.tab.ttip.General = General properties + +!SleeveConfig +SleeveCfg.tab.Outerdiam = Outer diameter: +SleeveCfg.tab.Innerdiam = Inner diameter: +SleeveCfg.tab.Wallthickness = Wall thickness: +SleeveCfg.tab.Length = Length: +SleeveCfg.tab.General = General +SleeveCfg.tab.Generalproperties = General properties + +! StreamerConfig +StreamerCfg.lbl.Striplength = Strip length: +StreamerCfg.lbl.Stripwidth = Strip width: +StreamerCfg.lbl.Striparea = Strip area: +StreamerCfg.lbl.Aspectratio = Aspect ratio: +StreamerCfg.lbl.Material = Material: +StreamerCfg.combo.ttip.MaterialModel = The component material affects the weight of the component. +StreamerCfg.lbl.longA1 = Drag coefficient CD: +StreamerCfg.lbl.longB1 = The drag coefficient relative to the total area of the streamer.
+StreamerCfg.lbl.longB2 = A larger drag coefficient yields a slowed descent rate. +StreamerCfg.lbl.Automatic = Automatic +StreamerCfg.lbl.longC1 = The drag coefficient is relative to the area of the streamer. +StreamerCfg.lbl.Posrelativeto = Position relative to: +StreamerCfg.lbl.plus = plus +StreamerCfg.lbl.Packedlength = Packed length: +StreamerCfg.lbl.Packeddiam = Packed diameter: +StreamerCfg.lbl.Deploysat = Deploys at: +StreamerCfg.lbl.seconds = seconds +StreamerCfg.lbl.Altitude = Altitude: +StreamerCfg.tab.General = General +StreamerCfg.tab.ttip.General = General properties +StreamerCfg.tab.Radialpos = Radial position +StreamerCfg.tab.ttip.Radialpos = Radial position configuration +StreamerCfg.lbl.Radialdistance = Radial distance: +StreamerCfg.lbl.Radialdirection = Radial direction: +StreamerCfg.but.Reset = Reset +StreamerCfg.lbl.plusdelay = plus + +! ThicknessRingComponentConfig +ThicknessRingCompCfg.tab.Outerdiam = Outer diameter: +ThicknessRingCompCfg.tab.Innerdiam = Inner diameter: +ThicknessRingCompCfg.tab.Wallthickness = Wall thickness: +ThicknessRingCompCfg.tab.Length = Length: +ThicknessRingCompCfg.tab.General = General +ThicknessRingCompCfg.tab.Generalprop = General properties + +! TransitionConfig +TransitionCfg.lbl.Transitionshape = Transition shape: +TransitionCfg.checkbox.Clipped = Clipped +TransitionCfg.lbl.Shapeparam = Shape parameter: +TransitionCfg.lbl.Transitionlength = Transition length: +TransitionCfg.lbl.Forediam = Fore diameter: +TransitionCfg.checkbox.Automatic = Automatic +TransitionCfg.lbl.Aftdiam = Aft diameter: +TransitionCfg.lbl.Wallthickness = Wall thickness: +TransitionCfg.checkbox.Filled = Filled +TransitionCfg.tab.General = General +TransitionCfg.tab.Generalproperties = General properties +TransitionCfg.tab.Shoulder = Shoulder +TransitionCfg.tab.Shoulderproperties = Shoulder properties + +! TrapezoidFinSetConfig +TrapezoidFinSetCfg.lbl.Nbroffins = Number of fins: +TrapezoidFinSetCfg.lbl.ttip.Nbroffins = The number of fins in the fin set. +TrapezoidFinSetCfg.lbl.Finrotation = Fin rotation: +TrapezoidFinSetCfg.lbl.ttip.Finrotation = The angle of the first fin in the fin set. +TrapezoidFinSetCfg.lbl.Fincant = Fin cant: +TrapezoidFinSetCfg.lbl.ttip.Fincant =The angle that the fins are canted with respect to the rocket body. +TrapezoidFinSetCfg.lbl.Rootchord = Root chord: +TrapezoidFinSetCfg.lbl.Tipchord = Tip chord: +TrapezoidFinSetCfg.lbl.Height = Height: +TrapezoidFinSetCfg.lbl.Sweeplength = Sweep length: +TrapezoidFinSetCfg.lbl.Sweepangle = Sweep angle: +TrapezoidFinSetCfg.lbl.FincrossSection = Fin cross section: +TrapezoidFinSetCfg.lbl.Thickness = Thickness: +TrapezoidFinSetCfg.lbl.Posrelativeto = Position relative to: +TrapezoidFinSetCfg.lbl.plus = plus +TrapezoidFinSetCfg.tab.General = General +TrapezoidFinSetCfg.tab.Generalproperties = General properties + +! StorageOptionChooser +StorageOptChooser.lbl.Simdatatostore = Simulated data to store: +StorageOptChooser.rdbut.Allsimdata = All simulated data +StorageOptChooser.lbl.longA1 = Store all simulated data.
+StorageOptChooser.lbl.longA2 = This can result in very large files! +StorageOptChooser.rdbut.Every = Every +StorageOptChooser.lbl.longB1 = Store plottable values approximately this far apart.
+StorageOptChooser.lbl.longB2 = Larger values result in smaller files. +StorageOptChooser.lbl.seconds = seconds +StorageOptChooser.rdbut.Onlyprimfig = Only primary figures +StorageOptChooser.lbl.longC1 = Store only the values shown in the summary table.
+StorageOptChooser.lbl.longC2 = This results in the smallest files. +StorageOptChooser.lbl.longD1 = An estimate on how large the resulting file would be with the present options. +StorageOptChooser.ttip.Saveopt = Save options +StorageOptChooser.lbl.Estfilesize = Estimated file size: +StorageOptChooser.lbl.Saveopt = Save options + +! ThrustCurveMotorSelectionPanel +TCMotorSelPan.lbl.Selrocketmotor = Select rocket motor: +TCMotorSelPan.checkbox.hideSimilar = Hide very similar thrust curves +TCMotorSelPan.checkbox.hideUsed = Hide motors already used in the mount +TCMotorSelPan.checkbox.limitlength = Limit motor length to mount length +TCMotorSelPan.checkbox.limitdiameter = Limit motor diameter to mount diameter +TCMotorSelPan.btn.details = Show Details +TCMotorSelPan.btn.filter = Filter Motors +TCMotorSelPan.MotorSize = Motor Dimensions +TCMotorSelPan.Diameter = Diameter +TCMotorSelPan.Length = Length +TCMotorSelPan.MotorMountDimensions = Motor mount dimensions: +TCMotorSelPan.lbl.Search = Search: +TCMotorSelPan.lbl.Selectthrustcurve = Select thrust curve: +TCMotorSelPan.lbl.Ejectionchargedelay = Ejection charge delay: +TCMotorSelPan.equalsIgnoreCase.None = None +TCMotorSelPan.lbl.NumberofsecondsorNone = (Number of seconds or \"None\") +TCMotorSelPan.lbl.Totalimpulse = Total impulse: +TCMotorSelPan.lbl.Avgthrust = Avg. thrust: +TCMotorSelPan.lbl.Maxthrust = Max. thrust: +TCMotorSelPan.lbl.Burntime = Burn time: +TCMotorSelPan.lbl.Launchmass = Launch mass: +TCMotorSelPan.lbl.Emptymass = Empty mass: +TCMotorSelPan.lbl.Datapoints = Data points: +TCMotorSelPan.lbl.Digest = Digest: +TCMotorSelPan.title.Thrustcurve = Thrust curve: +TCMotorSelPan.title.Thrust = Thrust +TCMotorSelPan.delayBox.None = None +TCMotorSelPan.noDescription = No description available. +TCMotorSelPan.btn.checkAll = Select All +TCMotorSelPan.btn.checkNone = Clear All +TCMotorSelPan.btn.close = Close + + + +! PlotDialog +PlotDialog.CheckBox.Showdatapoints = Show data points +PlotDialog.lbl.Chart = left click drag to zoom area. mouse wheel to zoom. ctrl-mouse wheel to zoom x axis only. ctrl-left click drag to pan. right click drag to zoom dynamically. + +ComponentTree.ttip.massoverride = mass override +ComponentTree.ttip.cgoverride = cg override +! "main" prefix is used for the main application dialog + +# FIXME: Rename the description keys + +main.menu.file = File +main.menu.file.desc = File-handling related tasks +main.menu.file.new = New +main.menu.file.new.desc = Create a new rocket design +main.menu.file.open = Open... +BasicFrame.item.Openrocketdesign = Open a rocket design +main.menu.file.openRecent = Open Recent... +BasicFrame.item.Openrecentrocketdesign = Open a recent rocket design +main.menu.file.openExample = Open example... +BasicFrame.item.Openexamplerocketdesign = Open an example rocket design +main.menu.file.save = Save +BasicFrame.item.SavecurRocketdesign = Save the current rocket design +main.menu.file.saveAs = Save as... +BasicFrame.item.SavecurRocketdesnewfile = Save the current rocket design to a new file +main.menu.file.print = Print / Export PDF... +main.menu.file.print.desc = Print or save as PDF the parts list and fin templates +main.menu.file.close = Close +BasicFrame.item.Closedesign = Close the current rocket design +main.menu.file.quit = Quit +BasicFrame.item.Quitprogram = Quit the program +main.menu.file.exportDecal = Export Decal +main.menu.file.exportDecal.desc = Export a decal from the current rocket design to a file for editing. + +main.menu.edit = Edit +BasicFrame.menu.Rocketedt = Rocket editing +main.menu.edit.undo = Undo +main.menu.edit.undo.desc = Undo the previous operation +main.menu.edit.redo = Redo +main.menu.edit.redo.desc = Redo the previously undone operation +main.menu.edit.cut = Cut +main.menu.edit.copy = Copy +main.menu.edit.paste = Paste +main.menu.edit.delete = Delete +main.menu.edit.resize = Scale... +main.menu.edit.resize.desc = Scale parts of the rocket design +main.menu.edit.editpreset= Edit Component Preset File +main.menu.edit.preferences = Preferences +main.menu.edit.preferences.desc = Setup the application preferences + +main.menu.analyze = Tools +main.menu.analyze.desc = Rocket analysis +main.menu.analyze.componentAnalysis = Component analysis +main.menu.analyze.componentAnalysis.desc = Analyze the rocket components separately +main.menu.analyze.optimization = Rocket optimization +main.menu.analyze.optimization.desc = General rocket design optimization +main.menu.analyze.customExpressions = Custom expressions +main.menu.analyze.customExpressions.desc = Define new flight data types by writing custom mathematical expressions + +main.menu.help = Help +main.menu.help.desc = Information about OpenRocket +main.menu.help.tours = Guided tours +main.menu.help.tours.desc = Take guided tours on OpenRocket +main.menu.help.license = License +main.menu.help.license.desc = OpenRocket license information +main.menu.help.bugReport = Bug report +main.menu.help.bugReport.desc = Information about reporting bugs in OpenRocket +main.menu.help.debugLog = Debug log +main.menu.help.debugLog.desc = View the OpenRocket debug log +main.menu.help.about = About +main.menu.help.about.desc = Copyright details about OpenRocket + +main.menu.debug = Debug +main.menu.debug.whatisthismenu = What is this menu? +main.menu.debug.createtestrocket = Create test rocket + +! database +! Translate here all material database +! + +Material.CUSTOM = Custom + +! Material database +Databases.materials.types.Bulk = Bulk +Databases.materials.types.Line = Line +Databases.materials.types.Surface = Surface + +! BULK_MATERIAL +material.acrylic = Acrylic +material.aluminum = Aluminum +material.balsa = Balsa +material.basswood = Basswood +material.birch = Birch +material.brass = Brass +material.cardboard = Cardboard +material.carbon_fiber = Carbon fiber +material.cork = Cork +material.depron_xps = Depron (XPS) +material.fiberglass = Fiberglass +material.kraft_phenolic = Kraft phenolic +material.maple = Maple +material.paper_office = Paper (office) +material.pine = Pine +material.plywood_birch = Plywood (birch) +material.polycarbonate_lexan = Polycarbonate (Lexan) +material.polystyrene = Polystyrene +material.pvc = PVC +material.spruce = Spruce +material.steel = Steel +material.styrofoam_generic_eps = Styrofoam (generic EPS) +material.styrofoam_blue_foam_xps = Styrofoam \"Blue foam\" (XPS) +material.titanium = Titanium +material.quantum_tubing = Quantum tubing +material.blue_tube = Blue tube +!SURFACE_MATERIAL +material.ripstop_nylon = Ripstop nylon +material.mylar = Mylar +material.polyethylene_thin = Polyethylene (thin) +material.polyethylene_heavy = Polyethylene (heavy) +material.silk = Silk +material.paper_office = Paper (office) +material.cellophane = Cellophane +material.crepe_paper = Cr\u00eape paper +! LINE_MATERIAL +material.thread_heavy_duty = Thread (heavy-duty) +material.elastic_cord_round_2_mm_1_16_in = Elastic cord (round 2 mm, 1/16 in) +material.elastic_cord_flat_6_mm_1_4_in = Elastic cord (flat 6 mm, 1/4 in) +material.elastic_cord_flat_12_mm_1_2_in = Elastic cord (flat 12 mm, 1/2 in) +material.elastic_cord_flat_19_mm_3_4_in = Elastic cord (flat 19 mm, 3/4 in) +material.elastic_cord_flat_25_mm_1_in = Elastic cord (flat 25 mm, 1 in) +material.braided_nylon_2_mm_1_16_in = Braided nylon (2 mm, 1/16 in) +material.braided_nylon_3_mm_1_8_in = Braided nylon (3 mm, 1/8 in) +material.tubular_nylon_11_mm_7_16_in = Tubular nylon (11 mm, 7/16 in) +material.tubular_nylon_14_mm_9_16_in = Tubular nylon (14 mm, 9/16 in) +material.tubular_nylon_25_mm_1_in = Tubular nylon (25 mm, 1 in) + +! ExternalComponent +ExternalComponent.Rough = Rough +ExternalComponent.Unfinished = Unfinished +ExternalComponent.Regularpaint = Regular paint +ExternalComponent.Smoothpaint = Smooth paint +ExternalComponent.Polished = Polished + +! LineStyle +LineStyle.Solid = Solid +LineStyle.Dashed = Dashed +LineStyle.Dotted = Dotted +LineStyle.Dash-dotted = Dash-dotted +LineStyle.Defaultstyle = Default style + +! Shape +Shape.Conical = Conical +Shape.Conical.desc1 = A conical nose cone has a profile of a triangle. +Shape.Conical.desc2 = A conical transition has straight sides. +Shape.Ogive = Ogive +Shape.Ogive.desc1 = An ogive nose cone has a profile that is a segment of a circle. The shape parameter value 1 produces a tangent ogive, which has a smooth transition to the body tube, values less than 1 produce secant ogives. +Shape.Ogive.desc2 = An ogive transition has a profile that is a segment of a circle. The shape parameter value 1 produces a tangent ogive, which has a smooth transition to the body tube at the aft end, values less than 1 produce secant ogives. +Shape.Ellipsoid = Ellipsoid +Shape.Ellipsoid.desc1 = An ellipsoidal nose cone has a profile of a half-ellipse with major axes of lengths 2×Length and Diameter. +Shape.Ellipsoid.desc2 = An ellipsoidal transition has a profile of a half-ellipse with major axes of lengths 2×Length and Diameter. If the transition is not clipped, then the profile is extended at the center by the corresponding radius. +Shape.Powerseries = Power series +Shape.Powerseries.desc1 = A power series nose cone has a profile of Radius × (x / Length)k where k is the shape parameter. For k=0.5 this is a \u00bd-power or parabolic nose cone, for k=0.75 a \u00be-power, and for k=1 a conical nose cone. +Shape.Powerseries.desc2 = A power series transition has a profile of Radius × (x / Length)k where k is the shape parameter. For k=0.5 the transition is \u00bd-power or parabolic, for k=0.75 a \u00be-power, and for k=1 conical. +Shape.Parabolicseries = Parabolic series +Shape.Parabolicseries.desc1 = A parabolic series nose cone has a profile of a parabola. The shape parameter defines the segment of the parabola to utilize. The shape parameter 1.0 produces a full parabola which is tangent to the body tube, 0.75 produces a 3/4 parabola, 0.5 procudes a 1/2 parabola and 0 produces a conical nose cone. +Shape.Parabolicseries.desc2 = A parabolic series transition has a profile of a parabola. The shape parameter defines the segment of the parabola to utilize. The shape parameter 1.0 produces a full parabola which is tangent to the body tube at the aft end, 0.75 produces a 3/4 parabola, 0.5 procudes a 1/2 parabola and 0 produces a conical transition. +Shape.Haackseries = Haack series +Shape.Haackseries.desc1 = The Haack series nose cones are designed to minimize drag. The shape parameter 0 produces an LD-Haack or Von Karman nose cone, which minimizes drag for fixed length and diameter, while a value of 0.333 produces an LV-Haack nose cone, which minimizes drag for fixed length and volume. +Shape.Haackseries.desc2 = The Haack series nose cones are designed to minimize drag. These transition shapes are their equivalents, but do not necessarily produce optimal drag for transitions. The shape parameter 0 produces an LD-Haack or Von Karman shape, while a value of 0.333 produces an LV-Haack shape. + + +! RocketComponent +RocketComponent.Position.TOP = Top of the parent component +RocketComponent.Position.MIDDLE = Middle of the parent component +RocketComponent.Position.BOTTOM = Bottom of the parent component +RocketComponent.Position.AFTER = After the parent component +RocketComponent.Position.ABSOLUTE = Tip of the nose cone + +! LaunchLug +LaunchLug.Launchlug = Launch lug +! NoseCone +NoseCone.NoseCone = Nose cone +! Transition +Transition.Transition = Transition +!Stage +Stage.Stage = Stage + +Stage.SeparationEvent.UPPER_IGNITION = Upper stage motor ignition +Stage.SeparationEvent.IGNITION = Current stage motor ignition +Stage.SeparationEvent.BURNOUT = Current stage motor burnout +Stage.SeparationEvent.EJECTION = Current stage ejection charge +Stage.SeparationEvent.LAUNCH = Launch +Stage.SeparationEvent.NEVER = Never + +! BodyTube +BodyTube.BodyTube = Body tube +! TubeCoupler +TubeCoupler.TubeCoupler = Tube coupler +!InnerTube +InnerTube.InnerTube = Inner Tube +! TrapezoidFinSet +TrapezoidFinSet.TrapezoidFinSet = Trapezoidal fin set +! FreeformFinSet +FreeformFinSet.FreeformFinSet = Freeform fin set +!MassComponent +MassComponent.MassComponent = Mass component +! Parachute +Parachute.Parachute = Parachute +! ShockCord +ShockCord.ShockCord = Shock cord +! Bulkhead +Bulkhead.Bulkhead = Bulkhead +! CenteringRing +CenteringRing.CenteringRing = Centering ring +! EngineBlock +EngineBlock.EngineBlock = Engine block +! Streamer +Streamer.Streamer = Streamer +! Sleeve +Sleeve.Sleeve = Sleeve + +!Rocket +Rocket.motorCount.Nomotor = No motors +Rocket.motorCount.noStageMotors = None +Rocket.compname.Rocket = Rocket + +!MotorMount +MotorMount.IgnitionEvent.AUTOMATIC = Automatic (launch or ejection charge) +MotorMount.IgnitionEvent.LAUNCH = Launch +MotorMount.IgnitionEvent.EJECTION_CHARGE = First ejection charge of previous stage +MotorMount.IgnitionEvent.BURNOUT = First burnout of previous stage +MotorMount.IgnitionEvent.NEVER = Never + +MotorMount.IgnitionEvent.short.AUTOMATIC = Automatic +MotorMount.IgnitionEvent.short.LAUNCH = Launch +MotorMount.IgnitionEvent.short.EJECTION_CHARGE = Ejection charge +MotorMount.IgnitionEvent.short.BURNOUT = Burnout +MotorMount.IgnitionEvent.short.NEVER = Never + + +!ComponentIcons +ComponentIcons.Nosecone = Nose cone +ComponentIcons.Bodytube = Body tube +ComponentIcons.Transition = Transition +ComponentIcons.Trapezoidalfinset = Trapezoidal fin set +ComponentIcons.Ellipticalfinset = Elliptical fin set +ComponentIcons.Freeformfinset = Freeform fin set +ComponentIcons.Launchlug = Launch lug +ComponentIcons.Innertube = Inner tube +ComponentIcons.Tubecoupler = Tube coupler +ComponentIcons.Centeringring = Centering ring +ComponentIcons.Bulkhead = Bulk head +ComponentIcons.Engineblock = Engine block +ComponentIcons.Parachute = Parachute +ComponentIcons.Streamer = Streamer +ComponentIcons.Shockcord = Shock cord +ComponentIcons.Masscomponent = Mass component +ComponentIcons.disabled = (disabled) + +! StageAction +StageAction.Stage = Stage + +! RecoveryDevice +RecoveryDevice.DeployEvent.LAUNCH = Launch (plus NN seconds) +RecoveryDevice.DeployEvent.EJECTION = First ejection charge of this stage +RecoveryDevice.DeployEvent.APOGEE = Apogee +RecoveryDevice.DeployEvent.ALTITUDE = Specific altitude during descent +RecoveryDevice.DeployEvent.CURRENT_STAGE_SEPARATION = Current stage separation +RecoveryDevice.DeployEvent.LOWER_STAGE_SEPARATION = Lower stage separation +RecoveryDevice.DeployEvent.NEVER = Never + +RecoveryDevice.DeployEvent.short.LAUNCH = Launch +RecoveryDevice.DeployEvent.short.EJECTION = Ejection charge +RecoveryDevice.DeployEvent.short.APOGEE = Apogee +RecoveryDevice.DeployEvent.short.ALTITUDE = Altitude +RecoveryDevice.DeployEvent.short.CURRENT_STAGE_SEPARATION = Current stage separation +RecoveryDevice.DeployEvent.short.LOWER_STAGE_SEPARATION = Lower stage separation +RecoveryDevice.DeployEvent.short.NEVER = Never + + +! FlightEvent +FlightEvent.Type.LAUNCH = Launch +FlightEvent.Type.IGNITION = Motor ignition +FlightEvent.Type.LIFTOFF = Lift-off +FlightEvent.Type.LAUNCHROD = Launch rod clearance +FlightEvent.Type.BURNOUT = Motor burnout +FlightEvent.Type.EJECTION_CHARGE = Ejection charge +FlightEvent.Type.STAGE_SEPARATION = Stage separation +FlightEvent.Type.APOGEE = Apogee +FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Recovery device deployment +FlightEvent.Type.GROUND_HIT = Ground hit +FlightEvent.Type.SIMULATION_END = Simulation end +FlightEvent.Type.ALTITUDE = Altitude change +FlightEvent.Type.TUMBLE = Tumbling +FlightEvent.Type.EXCEPTION = Exception + +! ThrustCurveMotorColumns +TCurveMotorCol.MANUFACTURER = Manufacturer +TCurveMotorCol.DESIGNATION = Designation +TCurveMotorCol.TYPE = Type +TCurveMotorCol.DIAMETER = Diameter +TCurveMotorCol.LENGTH = Length +TCurveMotorCol.TOTAL_IMPULSE = Total Impulse + +TCurveMotor.ttip.diameter = Diameter: +TCurveMotor.ttip.length = Length: +TCurveMotor.ttip.maxThrust = Maximum thrust: +TCurveMotor.ttip.avgThrust = Average thrust: +TCurveMotor.ttip.burnTime = Burn time: +TCurveMotor.ttip.totalImpulse = Total impulse: +TCurveMotor.ttip.launchMass = Launch mass: +TCurveMotor.ttip.emptyMass = Empty mass: + +! RocketInfo +RocketInfo.lengthLine.Length = Length +RocketInfo.lengthLine.maxdiameter = , max. diameter +RocketInfo.massText1 = Mass with motors +RocketInfo.massText2 = Mass with no motors +RocketInfo.at = at M= +RocketInfo.cgText = CG: +RocketInfo.cpText = CP: +RocketInfo.stabText = Stability: +RocketInfo.Warning = Warning: +RocketInfo.Calculating = Calculating... +RocketInfo.Apogee = Apogee: +RocketInfo.Maxvelocity = Max. velocity: +RocketInfo.Maxacceleration = Max. acceleration: +RocketInfo.apogeeValue = N/A +RocketInfo.Mach = (Mach +RocketInfo.velocityValue = N/A +RocketInfo.accelerationValue = N/A + +! FinSet +FinSet.CrossSection.SQUARE = Square +FinSet.CrossSection.ROUNDED = Rounded +FinSet.CrossSection.AIRFOIL = Airfoil +FinSet.TabRelativePosition.FRONT = Root chord leading edge +FinSet.TabRelativePosition.CENTER = Root chord midpoint +FinSet.TabRelativePosition.END = Root chord trailing edge + +! FlightDataType +FlightDataType.TYPE_TIME = Time +FlightDataType.TYPE_ALTITUDE = Altitude +FlightDataType.TYPE_VELOCITY_Z = Vertical velocity +FlightDataType.TYPE_ACCELERATION_Z = Vertical acceleration +FlightDataType.TYPE_VELOCITY_TOTAL = Total velocity +FlightDataType.TYPE_ACCELERATION_TOTAL = Total acceleration +FlightDataType.TYPE_POSITION_X = Position upwind +FlightDataType.TYPE_POSITION_Y = Position parallel to wind +FlightDataType.TYPE_POSITION_XY = Lateral distance +FlightDataType.TYPE_POSITION_DIRECTION = Lateral direction +FlightDataType.TYPE_VELOCITY_XY = Lateral velocity +FlightDataType.TYPE_ACCELERATION_XY = Lateral acceleration +FlightDataType.TYPE_AOA = Angle of attack +FlightDataType.TYPE_ROLL_RATE = Roll rate +FlightDataType.TYPE_PITCH_RATE = Pitch rate +FlightDataType.TYPE_YAW_RATE = Yaw rate +FlightDataType.TYPE_MASS = Mass +FlightDataType.TYPE_PROPELLANT_MASS = Propellant mass +FlightDataType.TYPE_LONGITUDINAL_INERTIA = Longitudinal moment of inertia +FlightDataType.TYPE_ROTATIONAL_INERTIA = Rotational moment of inertia +FlightDataType.TYPE_CP_LOCATION = CP location +FlightDataType.TYPE_CG_LOCATION = CG location +FlightDataType.TYPE_STABILITY = Stability margin calibers +FlightDataType.TYPE_MACH_NUMBER = Mach number +FlightDataType.TYPE_REYNOLDS_NUMBER = Reynolds number +FlightDataType.TYPE_THRUST_FORCE = Thrust +FlightDataType.TYPE_DRAG_FORCE = Drag force +FlightDataType.TYPE_DRAG_COEFF = Drag coefficient +FlightDataType.TYPE_AXIAL_DRAG_COEFF = Axial drag coefficient +FlightDataType.TYPE_FRICTION_DRAG_COEFF = Friction drag coefficient +FlightDataType.TYPE_PRESSURE_DRAG_COEFF = Pressure drag coefficient +FlightDataType.TYPE_BASE_DRAG_COEFF = Base drag coefficient +FlightDataType.TYPE_NORMAL_FORCE_COEFF = Normal force coefficient +FlightDataType.TYPE_PITCH_MOMENT_COEFF = Pitch moment coefficient +FlightDataType.TYPE_YAW_MOMENT_COEFF = Yaw moment coefficient +FlightDataType.TYPE_SIDE_FORCE_COEFF = Side force coefficient +FlightDataType.TYPE_ROLL_MOMENT_COEFF = Roll moment coefficient +FlightDataType.TYPE_ROLL_FORCING_COEFF = Roll forcing coefficient +FlightDataType.TYPE_ROLL_DAMPING_COEFF = Roll damping coefficient +FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF = Pitch damping coefficient +FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF = Yaw damping coefficient +FlightDataType.TYPE_REFERENCE_LENGTH = Reference length +FlightDataType.TYPE_REFERENCE_AREA = Reference area +FlightDataType.TYPE_ORIENTATION_THETA = Vertical orientation (zenith) +FlightDataType.TYPE_ORIENTATION_PHI = Lateral orientation (azimuth) +FlightDataType.TYPE_WIND_VELOCITY = Wind velocity +FlightDataType.TYPE_AIR_TEMPERATURE = Air temperature +FlightDataType.TYPE_AIR_PRESSURE = Air pressure +FlightDataType.TYPE_SPEED_OF_SOUND = Speed of sound +FlightDataType.TYPE_TIME_STEP = Simulation time step +FlightDataType.TYPE_COMPUTATION_TIME = Computation time +FlightDataType.TYPE_LATITUDE = Latitude +FlightDataType.TYPE_LONGITUDE = Longitude +FlightDataType.TYPE_CORIOLIS_ACCELERATION = Coriolis acceleration +FlightDataType.TYPE_GRAVITY = Gravitational acceleration + +! PlotConfiguration +PlotConfiguration.Verticalmotion = Vertical motion vs. time +PlotConfiguration.Totalmotion = Total motion vs. time +PlotConfiguration.Flightside = Flight side profile +PlotConfiguration.Stability = Stability vs. time +PlotConfiguration.Dragcoef = Drag coefficients vs. Mach number +PlotConfiguration.Rollcharacteristics = Roll characteristics +PlotConfiguration.Angleofattack = Angle of attack and orientation vs. time +PlotConfiguration.Simulationtime = Simulation time step and computation time + +! Warning +Warning.LargeAOA.str1 = Large angle of attack encountered. +Warning.LargeAOA.str2 = Large angle of attack encountered ( +Warning.DISCONTINUITY = Discontinuity in rocket body diameter. +Warning.THICK_FIN = Thick fins may not be modeled accurately. +Warning.JAGGED_EDGED_FIN = Jagged-edged fin predictions may be inaccurate. +Warning.LISTENERS_AFFECTED = Listeners modified the flight simulation +Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Recovery device opened while motor still burning. +Warning.FILE_INVALID_PARAMETER = Invalid parameter encountered, ignoring. +Warning.PARALLEL_FINS = Too many parallel fins +Warning.SUPERSONIC = Body calculations may not be entirely accurate at supersonic speeds. +Warning.RECOVERY_LAUNCH_ROD = Recovery device device deployed while on the launch guide. +Warning.RECOVERY_HIGH_SPEED = Recovery device deployment at high speed +Warning.TUMBLE_UNDER_THRUST = Stage began to tumble under thrust. + + +! Scale dialog +ScaleDialog.lbl.scaleRocket = Entire rocket +ScaleDialog.lbl.scaleSubselection = Selection and all subcomponents +ScaleDialog.lbl.scaleSelection = Only selected component +ScaleDialog.title = Scale design +ScaleDialog.lbl.scale = Scale: +ScaleDialog.lbl.scale.ttip = Select whether to scale the entire design or only the selected component +ScaleDialog.lbl.scaling = Scaling to apply: +ScaleDialog.lbl.scaling.ttip = Resulting size, values above 100% grow and values below 100% shrink the design. +! The scaleFrom/scaleTo pair creates a phrase "Scale from [...] to [...]" +ScaleDialog.lbl.scaleFrom = Scale from +ScaleDialog.lbl.scaleTo = to +ScaleDialog.lbl.scaleFromTo.ttip = Define the scaling based on an original and resulting length. +ScaleDialog.checkbox.scaleMass = Update explicit mass values +ScaleDialog.checkbox.scaleMass.ttip = Scale mass component and override mass values by the cube of the scaling factor +ScaleDialog.button.scale = Scale +ScaleDialog.undo.scaleRocket = Scale rocket +ScaleDialog.undo.scaleComponent = Scale component +ScaleDialog.undo.scaleComponents = Scale components + +!icons +Icons.Undo = Undo +Icons.Redo = Redo + +OpenRocketPrintable.Partsdetail = Parts detail +OpenRocketPrintable.Fintemplates = Fin templates +OpenRocketPrintable.Transitiontemplates = Transition templates +OpenRocketPrintable.Noseconetemplates = Nose Cone templates +OpenRocketPrintable.Finmarkingguide = Fin marking guide +OpenRocketPrintable.DesignReport = Design Report +OpenRocketPrintable.Centeringringtemplates = Centering Ring templates + +OpenRocketDocument.Redo = Redo +OpenRocketDocument.Undo = Undo + +!EllipticalFinSet +EllipticalFinSet.Ellipticalfinset = Elliptical fin set + +! Optimization + +! Modifiers + +optimization.modifier.nosecone.length = Length +optimization.modifier.nosecone.length.desc = Optimize the nose cone length. +optimization.modifier.nosecone.diameter = Diameter +optimization.modifier.nosecone.diameter.desc = Optimize the nose cone base diameter. +optimization.modifier.nosecone.thickness = Thickness +optimization.modifier.nosecone.thickness.desc = Optimize the nose cone wall thickness. +optimization.modifier.nosecone.shapeparameter = Shape parameter +optimization.modifier.nosecone.shapeparameter.desc = Optimize the nose cone shape parameter. + +optimization.modifier.transition.length = Length +optimization.modifier.transition.length.desc = Optimize the transition length. +optimization.modifier.transition.forediameter = Fore diameter +optimization.modifier.transition.forediameter.desc = Optimize the transition fore diameter. +optimization.modifier.transition.aftdiameter = Aft diameter +optimization.modifier.transition.aftdiameter.desc = Optimize the transition aft diameter. +optimization.modifier.transition.thickness = Thickness +optimization.modifier.transition.thickness.desc = Optimize the transition wall thickness. +optimization.modifier.transition.shapeparameter = Shape parameter +optimization.modifier.transition.shapeparameter.desc = Optimize the transition shape parameter. + +optimization.modifier.bodytube.length = Length +optimization.modifier.bodytube.length.desc = Optimize the body tube length. +optimization.modifier.bodytube.outerDiameter = Outer diameter +optimization.modifier.bodytube.outerDiameter.desc = Optimize the body tube outer diameter while maintaining the wall thickness. +optimization.modifier.bodytube.thickness = Thickness +optimization.modifier.bodytube.thickness.desc = Optimize the body tube wall thickness. + +optimization.modifier.trapezoidfinset.rootChord = Root chord +optimization.modifier.trapezoidfinset.rootChord.desc = Optimize the root chord length of the fin set (length of fin at the rocket body). +optimization.modifier.trapezoidfinset.tipChord = Tip chord +optimization.modifier.trapezoidfinset.tipChord.desc = Optimize the tip chord length of the fin set (length of fin at outer edge). +optimization.modifier.trapezoidfinset.sweep = Sweep +optimization.modifier.trapezoidfinset.sweep.desc = Optimize the sweep of the fin set (distance that the leading edge sweeps backwards). +optimization.modifier.trapezoidfinset.height = Height +optimization.modifier.trapezoidfinset.height.desc = Optimize the height (semi-span) of the fin set. + +optimization.modifier.ellipticalfinset.length = Root chord +optimization.modifier.ellipticalfinset.length.desc = Optimize the root chord length of the fin set. +optimization.modifier.ellipticalfinset.height = Height +optimization.modifier.ellipticalfinset.height.desc = Optimize the height (semi-span) of the fin set. + +optimization.modifier.finset.cant = Cant angle +optimization.modifier.finset.cant.desc = Optimize the cant angle of the fin set. +optimization.modifier.finset.position = Position +optimization.modifier.finset.position.desc = Optimize the fin set position along the rocket body. + +optimization.modifier.launchlug.length = Length +optimization.modifier.launchlug.length.desc = Optimize the launch lug length. +optimization.modifier.launchlug.outerDiameter = Outer diameter +optimization.modifier.launchlug.outerDiameter.desc = Optimize the outer diameter of the launch lug. +optimization.modifier.launchlug.thickness = Thickness +optimization.modifier.launchlug.thickness.desc = Optimize the launch lug thickness while keeping the outer diameter constant. +optimization.modifier.launchlug.position = Position +optimization.modifier.launchlug.position.desc = Optimize the launch lug position along the rocket body. + + +optimization.modifier.internalcomponent.position = Position +optimization.modifier.internalcomponent.position.desc = Optimize the position of the component relative to the parent component. + +optimization.modifier.masscomponent.mass = Mass +optimization.modifier.masscomponent.mass.desc = Optimize the mass of the mass component. + +optimization.modifier.parachute.diameter = Diameter +optimization.modifier.parachute.diameter.desc = Optimize the parachute canopy diameter. +optimization.modifier.parachute.coefficient = Drag coefficient +optimization.modifier.parachute.coefficient.desc = Optimize the drag coefficient of the parachute. Typical parachutes have a drag coefficient of about 0.8. + +optimization.modifier.streamer.length = Length +optimization.modifier.streamer.length.desc = Optimize the length of the streamer. +optimization.modifier.streamer.width = Width +optimization.modifier.streamer.width.desc = Optimize the width of the streamer. +optimization.modifier.streamer.aspectRatio = Aspect ratio +optimization.modifier.streamer.aspectRatio.desc = Optimize the aspect ratio of the streamer (length/width). You should NOT select streamer length or width at the same time with the aspect ratio. +optimization.modifier.streamer.coefficient = Drag coefficient +optimization.modifier.streamer.coefficient.desc = Optimize the drag coefficient of the streamer. + +optimization.modifier.recoverydevice.deployDelay = Deployment delay +optimization.modifier.recoverydevice.deployDelay.desc = Optimize the deployment delay of the recovery device. +optimization.modifier.recoverydevice.deployAltitude = Deployment altitude +optimization.modifier.recoverydevice.deployAltitude.desc = Optimize the deployment altitude of the recovery device. + +optimization.modifier.rocketcomponent.overrideMass = Override mass +optimization.modifier.rocketcomponent.overrideMass.desc = Optimize the overridden mass of the component. +optimization.modifier.rocketcomponent.overrideCG = Override CG +optimization.modifier.rocketcomponent.overrideCG.desc = Optimize the overridden center of gravity of the component. + +optimization.modifier.motormount.overhang = Motor overhang +optimization.modifier.motormount.overhang.desc = Optimize the motor overhang. +optimization.modifier.motormount.delay = Motor ignition delay +optimization.modifier.motormount.delay.desc = Optimize the motor ignition delay. + + + + +! General rocket design optimization dialog + +GeneralOptimizationDialog.title = Rocket optimization +GeneralOptimizationDialog.goal.maximize = Maximize value +GeneralOptimizationDialog.goal.minimize = Minimize value +GeneralOptimizationDialog.goal.seek = Seek value of +GeneralOptimizationDialog.btn.start = Start optimization +GeneralOptimizationDialog.btn.stop = Stop optimization +GeneralOptimizationDialog.lbl.paramsToOptimize = Parameters to optimize: +GeneralOptimizationDialog.btn.add = Add +GeneralOptimizationDialog.btn.add.ttip = Add the selected parameter to the optimization +GeneralOptimizationDialog.btn.remove = Remove +GeneralOptimizationDialog.btn.remove.ttip = Remove the selected parameter from the optimization +GeneralOptimizationDialog.btn.removeAll = Remove all +GeneralOptimizationDialog.btn.removeAll.ttip = Remove all parameters from the optimization +GeneralOptimizationDialog.lbl.availableParams = Available parameters: +GeneralOptimizationDialog.lbl.optimizationOpts = Optimization options +GeneralOptimizationDialog.lbl.optimizeSim = Optimize simulation: +GeneralOptimizationDialog.lbl.optimizeSim.ttip = Select which simulation to optimize +GeneralOptimizationDialog.lbl.optimizeValue = Optimized value: +GeneralOptimizationDialog.lbl.optimizeValue.ttip = Select what value is to be optimized +GeneralOptimizationDialog.lbl.optimizeGoal = Optimization goal: +GeneralOptimizationDialog.lbl.optimizeGoal.ttip = Select the goal of the optimization +GeneralOptimizationDialog.lbl.optimizeGoalValue.ttip = Custom value to seek +GeneralOptimizationDialog.lbl.requireStability = Required stability +GeneralOptimizationDialog.lbl.requireMinStability = Minimum stability: +GeneralOptimizationDialog.lbl.requireMinStability.ttip = Require a minimum static stability margin for the design +GeneralOptimizationDialog.lbl.requireMaxStability = Maximum stability: +GeneralOptimizationDialog.lbl.requireMaxStability.ttip = Require a maximum static stability margin for the design +GeneralOptimizationDialog.status.bestValue = Best value: +GeneralOptimizationDialog.status.bestValue.ttip = Best optimization value found so far. +GeneralOptimizationDialog.status.stepCount = Step count: +GeneralOptimizationDialog.status.stepCount.ttip = Number of optimization steps that have been performed. +GeneralOptimizationDialog.status.evalCount = Evaluations: +GeneralOptimizationDialog.status.evalCount.ttip = Total number of function evaluations (simulations) that have been performed. +GeneralOptimizationDialog.status.stepSize = Step size: +GeneralOptimizationDialog.status.stepSize.ttip = Current optimization step size (relative to the optimization parameter ranges) +GeneralOptimizationDialog.btn.plotPath = Plot path +GeneralOptimizationDialog.btn.plotPath.ttip = Plot the optimization path (one and two dimensional optimization only) +GeneralOptimizationDialog.btn.save = Save path +GeneralOptimizationDialog.btn.save.ttip = Save the results of the function evaluations (simulations) as a CSV file. +GeneralOptimizationDialog.btn.apply = Apply optimization +GeneralOptimizationDialog.btn.apply.ttip = Apply the optimization results to the rocket design +GeneralOptimizationDialog.btn.reset = Reset +GeneralOptimizationDialog.btn.reset.ttip = Reset the rocket design to the current rocket design +GeneralOptimizationDialog.btn.close = Close +GeneralOptimizationDialog.btn.close.ttip = Close the dialog without modifying the rocket design +GeneralOptimizationDialog.error.selectParams.text = First select some parameters to optimize from the available parameters. +GeneralOptimizationDialog.error.selectParams.title = Select optimization parameters +GeneralOptimizationDialog.error.optimizationFailure.text = The optimization failed to run: +GeneralOptimizationDialog.error.optimizationFailure.title = Optimization failed +GeneralOptimizationDialog.undoText = Apply optimization +GeneralOptimizationDialog.basicSimulationName = Basic simulation +GeneralOptimizationDialog.noSimulationName = No simulation +GeneralOptimizationDialog.table.col.parameter = Parameter +GeneralOptimizationDialog.table.col.current = Current +GeneralOptimizationDialog.table.col.min = Minimum +GeneralOptimizationDialog.table.col.max = Maximum +GeneralOptimizationDialog.export.header = Include header line +GeneralOptimizationDialog.export.header.ttip = Include a header line as the first line containing the field descriptions. +GeneralOptimizationDialog.export.stability = Stability + + +! Dialog for plotting optimization results +OptimizationPlotDialog.title = Optimization results +OptimizationPlotDialog.lbl.zoomInstructions = Click and drag down+right to zoom in, up+left to zoom out +OptimizationPlotDialog.plot1d.title = Optimization result +OptimizationPlotDialog.plot1d.series = Optimization result +OptimizationPlotDialog.plot2d.title = Optimization path +OptimizationPlotDialog.plot2d.path = Optimization path +OptimizationPlotDialog.plot2d.evals = Evaluations +OptimizationPlotDialog.plot.ttip.stability = Stability: +OptimizationPlotDialog.plot.label.optimum = Optimum + +! Optimization parameters +MaximumAltitudeParameter.name = Apogee altitude +MaximumVelocityParameter.name = Maximum velocity +MaximumAccelerationParameter.name = Maximum acceleration +StabilityParameter.name = Stability +GroundHitVelocityParameter.name = Ground hit speed +LandingDistanceParameter.name = Landing distance +TotalFlightTimeParameter.name = Total flight time +DeploymentVelocityParameter.name = Velocity at parachute deployment + + +! Compass directions drawn on a compass rose. +CompassRose.lbl.north = N +CompassRose.lbl.east = E +CompassRose.lbl.south = S +CompassRose.lbl.west = W + +! Compass directions with subdirections. These might not be localized even if the directions on the compass rose are. +CompassSelectionButton.lbl.N = N +CompassSelectionButton.lbl.NE = NE +CompassSelectionButton.lbl.E = E +CompassSelectionButton.lbl.SE = SE +CompassSelectionButton.lbl.S = S +CompassSelectionButton.lbl.SW = SW +CompassSelectionButton.lbl.W = W +CompassSelectionButton.lbl.NW = NW + + +SlideShowDialog.btn.next = Next +SlideShowDialog.btn.prev = Previous + +SlideShowLinkListener.error.title = Guided tour not found +SlideShowLinkListener.error.msg = Sorry, the selected tour has not yet been written. + +GuidedTourSelectionDialog.title = Guided tours +GuidedTourSelectionDialog.lbl.selectTour = Select guided tour: +GuidedTourSelectionDialog.lbl.description = Tour description: +GuidedTourSelectionDialog.lbl.length = Number of slides: +GuidedTourSelectionDialog.btn.start = Start tour! + + +! Custom Fin BMP Importer +CustomFinImport.button.label = Import from image +CustomFinImport.badFinImage = Invalid fin image. Make sure the fin is a solid black or dark color and touching the bottom of the image. +CustomFinImport.errorLoadingFile = Error loading file: +CustomFinImport.errorParsingFile = Error parsing fin image: +CustomFinImport.undo = Import freeform fin set +CustomFinImport.error.title = Error loading fin profile +CustomFinImport.error.badimage = Could not deduce fin shape from image. +CustomFinImport.description = The image will be converted internally to black and white image (black for the fin), so make sure you use a solid dark color for the fin, and white or a light color for the background. The fin must be touching the bottom of the image, which is the base of the fin. + + +PresetModel.lbl.select = Select preset +PresetModel.lbl.database = From database... + +DecalModel.lbl.select = +DecalModel.lbl.choose = From file... + +! Export Decal Dialog +ExportDecalDialog.title = Export Decal +ExportDecalDialog.decalList.lbl = Decal +ExportDecalDialog.exception = Unable to write decal to file ''{0}'' + +! Component Preset Chooser Dialog +ComponentPresetChooserDialog.title = Choose component preset +ComponentPresetChooserDialog.filter.label = Filter by text: +ComponentPresetChooserDialog.checkbox.filterAftDiameter = Match aft diameter +ComponentPresetChooserDialog.checkbox.filterForeDiameter = Match fore diameter +ComponentPresetChooserDialog.menu.sortAsc = Sort Ascending +ComponentPresetChooserDialog.menu.sortDesc = Sort Descending +ComponentPresetChooserDialog.menu.units = Units +ComponentPresetChooserDialog.checkbox.showAllCompatible = Show all compatible +ComponentPresetChooserDialog.lbl.favorites = Select to add preset to drop-down menu +table.column.Favorite = Favorite +table.column.Manufacturer = Manufacturer +table.column.PartNo = Part Number +table.column.Description = Description +table.column.Type = Type +table.column.Length = Length +table.column.Width = Width +table.column.InnerDiameter = Inner Diameter +table.column.OuterDiameter = Outer Diameter +table.column.AftOuterDiameter = Aft Outer Diameter +table.column.AftShoulderLength = Aft Shoulder Length +table.column.AftShoulderDiameter = Aft Shoulder Diameter +table.column.ForeShoulderLength = Fore Shoulder Length +table.column.ForeShoulderDiameter = Fore Shoulder Diameter +table.column.ForeOuterDiameter = Fore Outer Diameter +table.column.Shape = Shape +table.column.Material = Material +table.column.Finish = Finish +table.column.Thickness = Thickness +table.column.Filled = Filled +table.column.Mass = Mass +table.column.Diameter = Diameter +table.column.Sides = Sides +table.column.LineCount = Line Count +table.column.LineLength = Line Length +table.column.LineMaterial = Line Material + +! Edit Decal Dialog +EditDecalDialog.title = Edit decal +EditDecalDialog.lbl.prompt = Show Prompt +EditDecalDialog.lbl.select = Select Editor +EditDecalDialog.lbl.system = Use Default Editor +EditDecalDialog.lbl.cmdline = Command Line +EditDecalDialog.lbl.cmdline.help = The filename will be subsituted for ''%%'' +EditDecalDialog.lbl.always = Always use these settings +EditDecalDialog.btn.chooser = Select Graphics Editor Program +EditDecalHelper.createFileException = Cannot create temporary file {0} +EditDecalHelper.launchSystemEditorException = Cannot launch system graphics editor +EditDecalHelper.launchCustomEditorException = Cannot launch graphics editor with command ''{0}'' +EditDecalHelper.editPreferencesHelp = The editor used can be modified in the Preferences dialog. + +MotorConfigurationPanel.lbl.motorMounts = Motor mounts: +MotorConfigurationPanel.lbl.motorConfiguration = Motor configurations: +MotorConfigurationPanel.btn.removeMotor = Remove motor +MotorConfigurationPanel.btn.selectMotor = Select motor +MotorConfigurationPanel.btn.selectIgnition = Select ignition +MotorConfigurationPanel.btn.resetIgnition = Reset ignition +MotorConfigurationPanel.lbl.nomotors = No motor mounts defined. Select one or more tubes from the list on the left as motor mounts. + +MotorConfigurationTableModel.table.ignition.default = Default ({0}) +RecoveryConfigurationPanel.table.deployment.default = Default ({0}) +SeparationConfigurationPanel.table.separation.default = Default ({0}) + +IgnitionSelectionDialog.opt.title = Which flight configurations are affected: +IgnitionSelectionDialog.opt.default = Change all configurations using the default ignition event +IgnitionSelectionDialog.opt.override = Override for the {0} flight configuration only + +DeploymentSelectionDialog.opt.title = Which flight configurations are affected: +DeploymentSelectionDialog.opt.default = Change all configuration using the default deployment event +DeploymentSelectionDialog.opt.override = Override for the {0} flight configuration only + +SeparationSelectionDialog.opt.title = Which flight configurations are affected: +SeparationSelectionDialog.opt.default = Change all configuration using the default separation event +SeparationSelectionDialog.opt.override = Override for the {0} flight configuration only + +MotorConfigurationPanel.description = Select the motors and motor ignition events of the selected flight configuration.
Motor mounts: Select which components function as motor mounts.
Motor configurations: Select the motor and ignition event for each motor mount. + +MotorDescriptionSubstitutor.description = Motors in the configuration + + +!Photo Panel +PhotoFrame.title = Photo Studio +PhotoFrame.desc = Create realistic 3D images of the rocket +PhotoFrame.menu.file.save = Save Image... +PhotoFrame.fileFilter.png = PNG Image +PhotoFrame.menu.edit.copy = Copy Image +PhotoFrame.menu.edit.copy.desc = Copy image to clipboard +PhotoFrame.menu.edit.settings = Photo Settings +PhotoFrame.menu.window = Window +PhotoFrame.menu.window.size = Size +PhotoFrame.menu.window.size.portrait = {0} Portrait + +!Photo Settings +PhotoSettingsConfig.title = Settings +PhotoSettingsConfig.colorChooser.title = Color Chooser + +PhotoSettingsConfig.tab.orientation = Orientation +PhotoSettingsConfig.lbl.rocket = Rocket +PhotoSettingsConfig.lbl.pitch = Pitch +PhotoSettingsConfig.lbl.yaw = Yaw +PhotoSettingsConfig.lbl.roll = Roll +PhotoSettingsConfig.lbl.advance = Advance +PhotoSettingsConfig.lbl.camera = Camera +PhotoSettingsConfig.lbl.vAz = View Azimuth +PhotoSettingsConfig.lbl.vAlt = View Altitude +PhotoSettingsConfig.lbl.vDist = View Distance +PhotoSettingsConfig.lbl.fov = FoV + +PhotoSettingsConfig.tab.environment = Environment +PhotoSettingsConfig.lbl.light = Light +PhotoSettingsConfig.lbl.sun = Sun Light +PhotoSettingsConfig.lbl.amb = Ambiance +PhotoSettingsConfig.lbl.lightAz = Light Azimuth +PhotoSettingsConfig.lbl.lightAlt = Light Altitude +PhotoSettingsConfig.lbl.sky = Sky +PhotoSettingsConfig.lbl.skyColor = Sky Color +PhotoSettingsConfig.lbl.skyImage = Sky Image +PhotoSettingsConfig.lbl.skyCredit = Image Credit: + +PhotoSettingsConfig.tab.effects = Effects +PhotoSettingsConfig.lbl.smokeFlame = Smoke & Flame +PhotoSettingsConfig.lbl.smoke = Smoke +PhotoSettingsConfig.lbl.smokeOpacity = Smoke Opacity +PhotoSettingsConfig.lbl.flame = Flame +PhotoSettingsConfig.lbl.flameAspect = Flame Aspect Ratio +PhotoSettingsConfig.lbl.sparks = Sparks +PhotoSettingsConfig.lbl.sparkConcentration = Spark Concentration +PhotoSettingsConfig.lbl.sparkWeight = Spark Weight +PhotoSettingsConfig.lbl.exhaustScale = Exhaust Scale +PhotoSettingsConfig.lbl.effects = Effects +PhotoSettingsConfig.lbl.speed = Speed diff --git a/core/resources/l10n/messages_zh_CN.properties b/core/resources/l10n/messages_zh_CN.properties index 8903c5962..ff0bf23f8 100644 --- a/core/resources/l10n/messages_zh_CN.properties +++ b/core/resources/l10n/messages_zh_CN.properties @@ -1,3 +1,4 @@ +#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/) #Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) # # Simplified Chinese translation file @@ -17,90 +18,95 @@ ! - AboutDialog.lbl.translator is the translator / group name (may be empty) ! - AboutDialog.lbl.translatorWebsite is a URL to the translator / group (may be empty) ! - AboutDialog.lbl.translatorIcon is the file name of an icon under pix/translators/ (may be empty) -AboutDialog.lbl.translation = \u7b80\u4f53\u4e2d\u6587\u7ffb\u8bd1: +AboutDialog.lbl.translation = \u7B80\u4F53\u4E2D\u6587\u7FFB\u8BD1: AboutDialog.lbl.translator = Yilun Zhu AboutDialog.lbl.translatorIcon = logoKCSASimplifiedChinese.png AboutDialog.lbl.translatorWebsite = http://sa.kechuang.org/ ! About Dialog -AboutDialog.lbl.version = \u7248\u672c +AboutDialog.lbl.version = \u7248\u672C -AppearanceCfg.but.edit = \u7f16\u8f91 -AppearanceCfg.but.savedefault = \u8bbe\u4e3a\u9ed8\u8ba4\u5916\u89c2 +AppearanceCfg.but.edit = \u7F16\u8F91 +AppearanceCfg.but.savedefault = \u8BBE\u4E3A\u9ED8\u8BA4\u5916\u89C2 ! AppearanceConfig -AppearanceCfg.lbl.Appearance = \u5916\u89c2 -AppearanceCfg.lbl.Texture = \u7eb9\u7406: -AppearanceCfg.lbl.Usedefault = \u4f7f\u7528\u9ed8\u8ba4 -AppearanceCfg.lbl.color.Color = \u8272\u5f69: -AppearanceCfg.lbl.color.ambient = \u73af\u5883\u8272: -AppearanceCfg.lbl.color.diffuse = \u6269\u6563\u8272\u5f69: -AppearanceCfg.lbl.color.specular = \u9ad8\u5149\u989c\u8272: -AppearanceCfg.lbl.shine = \u5149\u4eae: -AppearanceCfg.lbl.texture.center = \u5c45\u4e2d: -AppearanceCfg.lbl.texture.offset = \u4f4d\u79fb: -AppearanceCfg.lbl.texture.repeat = \u91cd\u590d: -AppearanceCfg.lbl.texture.rotation = \u65cb\u8f6c: -AppearanceCfg.lbl.texture.scale = \u7f29\u653e: +AppearanceCfg.lbl.Appearance = \u5916\u89C2 +AppearanceCfg.lbl.Texture = \u7EB9\u7406: +AppearanceCfg.lbl.Usedefault = \u4F7F\u7528\u9ED8\u8BA4 +AppearanceCfg.lbl.color.Color = \u8272\u5F69: +AppearanceCfg.lbl.color.ambient = \u73AF\u5883\u8272: +AppearanceCfg.lbl.color.diffuse = \u6269\u6563\u8272\u5F69: +AppearanceCfg.lbl.color.specular = \u9AD8\u5149\u989C\u8272: +AppearanceCfg.lbl.shine = \u5149\u4EAE: +AppearanceCfg.lbl.texture.center = \u5C45\u4E2D: +AppearanceCfg.lbl.texture.offset = \u4F4D\u79FB: +AppearanceCfg.lbl.texture.repeat = \u91CD\u590D: +AppearanceCfg.lbl.texture.rotation = \u65CB\u8F6C: +AppearanceCfg.lbl.texture.scale = \u7F29\u653E: -BasicFrame.SimpleFileFilter1 = \u652f\u6301\u7684\u706b\u7bad\u8bbe\u8ba1\u7a3f(*.ork; *.rkt) -BasicFrame.SimpleFileFilter2 = OpenRocket\u8bbe\u8ba1\u7a3f(*.ork) -BasicFrame.SimpleFileFilter3 = RockSim\u8bbe\u8ba1\u7a3f(*.rkt) -BasicFrame.SimpleFileFilter4 = OpenRocket\u914d\u7f6e(*.orc) -BasicFrame.StageName.Sustainer = \u4e3b\u53d1\u52a8\u673a -BasicFrame.WarningDialog.title = \u6253\u5f00\u6587\u4ef6\u65f6\u8b66\u544a -BasicFrame.WarningDialog.txt1 = \u6253\u5f00\u8bbe\u8ba1\u7a3f\u65f6\u9047\u5230\u4ee5\u4e0b\u95ee\u9898 -BasicFrame.WarningDialog.txt2 = \u67d0\u4e9b\u8bbe\u8ba1\u5185\u5bb9\u6ca1\u6709\u88ab\u6b63\u786e\u8f7d\u5165 -BasicFrame.dlg.lbl1 = \u8bbe\u8ba1\u7a3f ' -BasicFrame.dlg.lbl2 = ' \u5c1a\u672a\u4fdd\u5b58 -BasicFrame.dlg.lbl3 = \u662f\u5426\u4fdd\u5b58? -BasicFrame.dlg.title = \u653e\u5f03\u4fdd\u5b58 -BasicFrame.item.Closedesign = \u5173\u95ed\u5f53\u524d\u8bbe\u8ba1\u7a3f -BasicFrame.item.Openexamplerocketdesign = \u6253\u5f00\u8303\u4f8b\u8bbe\u8ba1\u7a3f -BasicFrame.item.Openrecentrocketdesign = \u6253\u5f00\u6700\u8fd1\u706b\u7bad\u8bbe\u8ba1\u7a3f -BasicFrame.item.Openrocketdesign = \u6253\u5f00\u706b\u7bad\u8bbe\u8ba1\u7a3f -BasicFrame.item.Quitprogram = \u9000\u51faOpenRocket\u7a0b\u5e8f -BasicFrame.item.SavecurRocketdesign = \u4fdd\u5b58\u5f53\u524d\u8bbe\u8ba1\u7a3f -BasicFrame.item.SavecurRocketdesnewfile = \u4fdd\u5b58\u5f53\u524d\u8bbe\u8ba1\u7a3f\u5230\u65b0\u6587\u4ef6 -BasicFrame.menu.Rocketedt = \u7f16\u8f91\u706b\u7bad\u8bbe\u8ba1 -BasicFrame.tab.Flightconfig = \u7ec4\u4ef6\u8bbe\u7f6e -BasicFrame.tab.Flightsim = \u98de\u884c\u4eff\u771f +BasicEventSimulationEngine.error.NaNResult = \u6A21\u62DF\u7ED3\u679C\u5E76\u4E0D\u662F\u4E2A\u6570\u503C,\u8BF7\u6C47\u62A5bug +BasicEventSimulationEngine.error.earlyMotorBurnout = \u53D1\u52A8\u673A\u8D77\u98DE\u524D\u5DF2\u71C3\u5C3D. +BasicEventSimulationEngine.error.noIgnition = \u53D1\u52A8\u673A\u672A\u70B9\u706B +BasicEventSimulationEngine.error.noMotorsDefined = \u53D1\u52A8\u673A\u672A\u5B9A\u4E49 + +BasicFrame.SimpleFileFilter1 = \u652F\u6301\u7684\u706B\u7BAD\u8BBE\u8BA1\u7A3F(*.ork; *.rkt) +BasicFrame.SimpleFileFilter2 = OpenRocket\u8BBE\u8BA1\u7A3F(*.ork) +BasicFrame.SimpleFileFilter3 = RockSim\u8BBE\u8BA1\u7A3F(*.rkt) +BasicFrame.SimpleFileFilter4 = OpenRocket\u914D\u7F6E(*.orc) +BasicFrame.StageName.Sustainer = \u4E3B\u53D1\u52A8\u673A +BasicFrame.WarningDialog.title = \u6253\u5F00\u6587\u4EF6\u65F6\u8B66\u544A +BasicFrame.WarningDialog.txt1 = \u6253\u5F00\u8BBE\u8BA1\u7A3F\u65F6\u9047\u5230\u4EE5\u4E0B\u95EE\u9898 +BasicFrame.WarningDialog.txt2 = \u67D0\u4E9B\u8BBE\u8BA1\u5185\u5BB9\u6CA1\u6709\u88AB\u6B63\u786E\u8F7D\u5165 +BasicFrame.dlg.lbl1 = \u8BBE\u8BA1\u7A3F ' +BasicFrame.dlg.lbl2 = ' \u5C1A\u672A\u4FDD\u5B58 +BasicFrame.dlg.lbl3 = \u662F\u5426\u4FDD\u5B58? +BasicFrame.dlg.title = \u653E\u5F03\u4FDD\u5B58 +BasicFrame.item.Closedesign = \u5173\u95ED\u5F53\u524D\u8BBE\u8BA1\u7A3F +BasicFrame.item.Openexamplerocketdesign = \u6253\u5F00\u8303\u4F8B\u8BBE\u8BA1\u7A3F +BasicFrame.item.Openrecentrocketdesign = \u6253\u5F00\u6700\u8FD1\u706B\u7BAD\u8BBE\u8BA1\u7A3F +BasicFrame.item.Openrocketdesign = \u6253\u5F00\u706B\u7BAD\u8BBE\u8BA1\u7A3F +BasicFrame.item.Quitprogram = \u9000\u51FA\u7A0B\u5E8F +BasicFrame.item.SavecurRocketdesign = \u4FDD\u5B58\u5F53\u524D\u8BBE\u8BA1\u7A3F +BasicFrame.item.SavecurRocketdesnewfile = \u4FDD\u5B58\u5F53\u524D\u8BBE\u8BA1\u7A3F\u5230\u65B0\u6587\u4EF6 +BasicFrame.menu.Rocketedt = \u7F16\u8F91\u706B\u7BAD\u8BBE\u8BA1 +BasicFrame.tab.Flightconfig = \u7EC4\u4EF6\u8BBE\u7F6E +BasicFrame.tab.Flightsim = \u98DE\u884C\u4EFF\u771F ! BasicFrame -BasicFrame.tab.Rocketdesign = \u706b\u7bad\u8bbe\u8ba1 -BasicFrame.title.Addnewcomp = \u6dfb\u52a0\u65b0\u7ec4\u4ef6 +BasicFrame.tab.Rocketdesign = \u706B\u7BAD\u8BBE\u8BA1 +BasicFrame.title.Addnewcomp = \u6DFB\u52A0\u65B0\u7EC4\u4EF6 ! BodyTube -BodyTube.BodyTube = \u7bad\u4f53 +BodyTube.BodyTube = \u7BAD\u4F53 -BodyTubecfg.checkbox.Automatic = \u81ea\u52a8 -BodyTubecfg.checkbox.Filled = \u5b9e\u5fc3 +BodyTubecfg.checkbox.Automatic = \u81EA\u52A8 +BodyTubecfg.checkbox.Filled = \u5B9E\u5FC3 ! Body Tube Config -BodyTubecfg.lbl.Bodytubelength = \u7bad\u4f53\u957f\u5ea6: -BodyTubecfg.lbl.Innerdiameter = \u5185\u76f4\u5f84: -BodyTubecfg.lbl.Outerdiameter = \u5916\u76f4\u5f84: -BodyTubecfg.lbl.Wallthickness = \u58c1\u539a: -BodyTubecfg.tab.General = \u5e38\u89c4 -BodyTubecfg.tab.Generalproperties = \u5e38\u89c4\u5c5e\u6027 -BodyTubecfg.tab.Motor = \u53d1\u52a8\u673a -BodyTubecfg.tab.Motormountconf = \u53d1\u52a8\u673a\u5ea7\u8bbe\u7f6e +BodyTubecfg.lbl.Bodytubelength = \u7BAD\u4F53\u957F\u5EA6: +BodyTubecfg.lbl.Innerdiameter = \u5185\u76F4\u5F84: +BodyTubecfg.lbl.Outerdiameter = \u5916\u76F4\u5F84: +BodyTubecfg.lbl.Wallthickness = \u58C1\u539A: +BodyTubecfg.tab.General = \u5E38\u89C4 +BodyTubecfg.tab.Generalproperties = \u5E38\u89C4\u5C5E\u6027 +BodyTubecfg.tab.Motor = \u53D1\u52A8\u673A +BodyTubecfg.tab.Motormountconf = \u53D1\u52A8\u673A\u5EA7\u8BBE\u7F6E ! Bulkhead -Bulkhead.Bulkhead = \u9694\u677f +Bulkhead.Bulkhead = \u9694\u677F !RocketCompCfg.lbl.Length = \u957f\u5ea6: ! BulkheadConfig -BulkheadCfg.tab.Diameter = \u76f4\u5f84: -BulkheadCfg.tab.General = \u5e38\u89c4 -BulkheadCfg.tab.Generalproperties = \u5e38\u89c4\u5c5e\u6027 -BulkheadCfg.tab.Thickness = \u539a\u5ea6: +BulkheadCfg.tab.Diameter = \u76F4\u5F84: +BulkheadCfg.tab.General = \u5E38\u89C4 +BulkheadCfg.tab.Generalproperties = \u5E38\u89C4\u5C5E\u6027 +BulkheadCfg.tab.Thickness = \u539A\u5EA6: ! CenteringRing -CenteringRing.CenteringRing = \u4e2d\u5fc3\u73af +CenteringRing.CenteringRing = \u4E2D\u5FC3\u73AF -CenteringRingCfg.tab.General = \u5e38\u89c4 -CenteringRingCfg.tab.Generalproperties = \u5e38\u89c4\u5c5e\u6027 -CenteringRingCfg.tab.Innerdiam = \u5185\u76f4\u5f84: +CenteringRingCfg.tab.General = \u5E38\u89C4 +CenteringRingCfg.tab.Generalproperties = \u5E38\u89C4\u5C5E\u6027 +CenteringRingCfg.tab.Innerdiam = \u5185\u76F4\u5F84: !CenteringRingConfig -CenteringRingCfg.tab.Outerdiam = \u5916\u76f4\u5f84: -CenteringRingCfg.tab.Thickness = \u539a\u5ea6: +CenteringRingCfg.tab.Outerdiam = \u5916\u76F4\u5F84: +CenteringRingCfg.tab.Thickness = \u539A\u5EA6: CompassRose.lbl.east = E ! Compass directions drawn on a compass rose. @@ -118,1723 +124,1744 @@ CompassSelectionButton.lbl.SE = SE CompassSelectionButton.lbl.SW = SW CompassSelectionButton.lbl.W = W -ComponentCfgDlg.Modify = \u4fee\u6539 +ComponentCfgDlg.Modify = \u4FEE\u6539 !ComponentConfigDialog -ComponentCfgDlg.configuration = \u8bbe\u7f6e +ComponentCfgDlg.configuration = \u8BBE\u7F6E -ComponentIcons.Bodytube = \u7bad\u4f53 -ComponentIcons.Bulkhead = \u9694\u677f -ComponentIcons.Centeringring = \u4e2d\u5fc3\u73af -ComponentIcons.Ellipticalfinset = \u692d\u5706\u7a33\u5b9a\u7ffc -ComponentIcons.Engineblock = \u53d1\u52a8\u673a -ComponentIcons.Freeformfinset = \u66f2\u9762\u7a33\u5b9a\u7ffc -ComponentIcons.Innertube = \u5185\u7ba1 -ComponentIcons.Launchlug = \u53d1\u5c04\u8854\u5957 -ComponentIcons.Masscomponent = \u8d28\u91cf\u7ec4\u4ef6 +ComponentIcons.Bodytube = \u7BAD\u4F53 +ComponentIcons.Bulkhead = \u9694\u677F +ComponentIcons.Centeringring = \u4E2D\u5FC3\u73AF +ComponentIcons.Ellipticalfinset = \u692D\u5706\u7A33\u5B9A\u7FFC +ComponentIcons.Engineblock = \u53D1\u52A8\u673A +ComponentIcons.Freeformfinset = \u66F2\u9762\u7A33\u5B9A\u7FFC +ComponentIcons.Innertube = \u5185\u7BA1 +ComponentIcons.Launchlug = \u53D1\u5C04\u8854\u5957 +ComponentIcons.Masscomponent = \u8D28\u91CF\u7EC4\u4EF6 !ComponentIcons ComponentIcons.Nosecone = \u5934\u9525 -ComponentIcons.Parachute = \u964d\u843d\u4f1e -ComponentIcons.Shockcord = \u51cf\u9707\u7d22 -ComponentIcons.Streamer = \u98d8\u5e26 -ComponentIcons.Transition = \u7ea7\u95f4\u6bb5 -ComponentIcons.Trapezoidalfinset = \u68af\u5f62\u7a33\u5b9a\u7ffc -ComponentIcons.Tubecoupler = \u8fde\u63a5\u5668 -ComponentIcons.disabled = (\u5df2\u7981\u7528) +ComponentIcons.Parachute = \u964D\u843D\u4F1E +ComponentIcons.Shockcord = \u51CF\u9707\u7D22 +ComponentIcons.Streamer = \u98D8\u5E26 +ComponentIcons.Transition = \u7EA7\u95F4\u6BB5 +ComponentIcons.Trapezoidalfinset = \u68AF\u5F62\u7A33\u5B9A\u7FFC +ComponentIcons.Tubecoupler = \u8FDE\u63A5\u5668 +ComponentIcons.disabled = (\u5DF2\u7981\u7528) -ComponentPresetChooserDialog.checkbox.filterAftDiameter = \u5339\u914d\u540e\u76f4\u5f84 -ComponentPresetChooserDialog.checkbox.filterForeDiameter = \u5339\u914d\u524d\u76f4\u5f84 -ComponentPresetChooserDialog.checkbox.showAllCompatible = \u663e\u793a\u6240\u6709\u517c\u5bb9\u7ec4\u4ef6 -ComponentPresetChooserDialog.filter.label = \u6587\u672c\u8fc7\u6ee4: -ComponentPresetChooserDialog.lbl.favorites = \u6dfb\u52a0\u5230\u9884\u8bbe\u4e0b\u62c9\u6846 -ComponentPresetChooserDialog.menu.sortAsc = \u5347\u5e8f -ComponentPresetChooserDialog.menu.sortDesc = \u964d\u5e8f -ComponentPresetChooserDialog.menu.units = \u5355\u4f4d +ComponentPresetChooserDialog.checkbox.filterAftDiameter = \u5339\u914D\u540E\u76F4\u5F84 +ComponentPresetChooserDialog.checkbox.filterForeDiameter = \u5339\u914D\u524D\u76F4\u5F84 +ComponentPresetChooserDialog.checkbox.showAllCompatible = \u663E\u793A\u6240\u6709\u517C\u5BB9\u7EC4\u4EF6 +ComponentPresetChooserDialog.filter.label = \u6587\u672C\u8FC7\u6EE4: +ComponentPresetChooserDialog.lbl.favorites = \u6DFB\u52A0\u5230\u9884\u8BBE\u4E0B\u62C9\u6846 +ComponentPresetChooserDialog.menu.sortAsc = \u5347\u5E8F +ComponentPresetChooserDialog.menu.sortDesc = \u964D\u5E8F +ComponentPresetChooserDialog.menu.units = \u5355\u4F4D ! Component Preset Chooser Dialog -ComponentPresetChooserDialog.title = \u9009\u62e9\u7ec4\u4ef6\u9884\u8bbe +ComponentPresetChooserDialog.title = \u9009\u62E9\u7EC4\u4EF6\u9884\u8BBE -Configuration.lbl.override = \u8be5\u53c2\u6570\u53ef\u5728\u4e0d\u540c\u7684\u8bbe\u7f6e\u6587\u4ef6\u4e2d\u88ab\u8986\u5199. +ComponentTree.ttip.cgoverride = \u8986\u5199\u91CD\u5FC3 +ComponentTree.ttip.massoverride = \u8986\u5199\u91CD\u91CF -CsvOptionPanel.separator.space = \u7a7a\u683c -CsvOptionPanel.separator.tab = \u5236\u8868\u7b26(Tab) +Configuration.lbl.override = \u8BE5\u53C2\u6570\u53EF\u5728\u4E0D\u540C\u7684\u8BBE\u7F6E\u6587\u4EF6\u4E2D\u88AB\u8986\u5199. -CustomFinImport.badFinImage = \u65e0\u6548\u5c3e\u7ffc\u56fe\u7247. \u8bf7\u786e\u8ba4\u7a33\u5b9a\u7ffc\u533a\u57df\u4e3a\u6df1\u8272\u5e76\u4e14\u548c\u56fe\u7247\u5e95\u8fb9\u63a5\u58e4. +CsvOptionPanel.separator.space = \u7A7A\u683C +CsvOptionPanel.separator.tab = \u5236\u8868\u7B26(Tab) + +CustomFinImport.badFinImage = \u65E0\u6548\u5C3E\u7FFC\u56FE\u7247. \u8BF7\u786E\u8BA4\u7A33\u5B9A\u7FFC\u533A\u57DF\u4E3A\u6DF1\u8272\u5E76\u4E14\u548C\u56FE\u7247\u5E95\u8FB9\u63A5\u58E4. ! Custom Fin BMP Importer -CustomFinImport.button.label = \u5bfc\u5165\u56fe\u7247\u6587\u4ef6 -CustomFinImport.description = \u56fe\u50cf\u5c06\u4f1a\u88ab\u8f6c\u6362\u4e3a\u9ed1\u767d\u56fe\u50cf(\u7a33\u5b9a\u7ffc\u4e3a\u9ed1\u8272\u533a\u57df), \u8bf7\u4fdd\u8bc1\u6df1\u8272\u533a\u57df\u4e3a\u7a33\u5b9a\u7ffc, \u6d45\u8272\u533a\u57df\u4e3a\u80cc\u666f. \u7a33\u5b9a\u7ffc\u5fc5\u987b\u548c\u56fe\u7247\u5e95\u8fb9\u63a5\u58e4\uff0c\u63a5\u89e6\u533a\u57df\u5373\u662f\u7a33\u5b9a\u7ffc\u4e0e\u7bad\u4f53\u7684\u8fde\u63a5\u70b9. -CustomFinImport.error.badimage = \u65e0\u6cd5\u4ece\u56fe\u50cf\u7f29\u51cf\u7a33\u5b9a\u7ffc\u5f62\u72b6. -CustomFinImport.error.title = \u8bfb\u53d6\u7ffc\u6570\u636e\u51fa\u9519 -CustomFinImport.errorLoadingFile = \u6587\u4ef6\u8bfb\u53d6\u9519\u8bef: -CustomFinImport.errorParsingFile = \u89e3\u6790\u5c3e\u7ffc\u56fe\u7247\u662f\u53d1\u751f\u9519\u8bef: -CustomFinImport.undo = \u5bfc\u5165\u66f2\u9762\u7a33\u5b9a\u7ffc\u5f62\u72b6 +CustomFinImport.button.label = \u5BFC\u5165\u56FE\u7247\u6587\u4EF6 +CustomFinImport.description = \u56FE\u50CF\u5C06\u4F1A\u88AB\u8F6C\u6362\u4E3A\u9ED1\u767D\u56FE\u50CF(\u7A33\u5B9A\u7FFC\u4E3A\u9ED1\u8272\u533A\u57DF), \u8BF7\u4FDD\u8BC1\u6DF1\u8272\u533A\u57DF\u4E3A\u7A33\u5B9A\u7FFC, \u6D45\u8272\u533A\u57DF\u4E3A\u80CC\u666F. \u7A33\u5B9A\u7FFC\u5FC5\u987B\u548C\u56FE\u7247\u5E95\u8FB9\u63A5\u58E4\uFF0C\u63A5\u89E6\u533A\u57DF\u5373\u662F\u7A33\u5B9A\u7FFC\u4E0E\u7BAD\u4F53\u7684\u8FDE\u63A5\u70B9. +CustomFinImport.error.badimage = \u65E0\u6CD5\u4ECE\u56FE\u50CF\u63A8\u6D4B\u7A33\u5B9A\u7FFC\u5F62\u72B6. +CustomFinImport.error.title = \u8BFB\u53D6\u7FFC\u6570\u636E\u51FA\u9519 +CustomFinImport.errorLoadingFile = \u6587\u4EF6\u8BFB\u53D6\u9519\u8BEF: +CustomFinImport.errorParsingFile = \u89E3\u6790\u5C3E\u7FFC\u56FE\u7247\u662F\u53D1\u751F\u9519\u8BEF: +CustomFinImport.undo = \u5BFC\u5165\u66F2\u9762\u7A33\u5B9A\u7FFC\u5F62\u72B6 ! Custom operator selector -CustomOperatorSelector.title = \u9009\u62e9\u7b97\u5b50 +CustomOperatorSelector.title = \u9009\u62E9\u7B97\u5B50 ! Custom expression variable selector -CustomVariableSelector.title = \u9009\u62e9\u53d8\u91cf +CustomVariableSelector.title = \u9009\u62E9\u53D8\u91CF ! Material database -Databases.materials.types.Bulk = \u4f53 -Databases.materials.types.Line = \u7ebf +Databases.materials.types.Bulk = \u4F53 +Databases.materials.types.Line = \u7EBF Databases.materials.types.Surface = \u9762 -DecalModel.lbl.choose = \u4ece\u6587\u4ef6... -DecalModel.lbl.select = <\u65e0> +DecalModel.lbl.choose = \u4ECE\u6587\u4EF6... +DecalModel.lbl.select = <\u65E0> -DeploymentSelectionDialog.opt.default = \u6839\u636e\u9ed8\u8ba4\u91ca\u653e\u4e8b\u4ef6\u66f4\u65b0\u6240\u6709\u914d\u7f6e -DeploymentSelectionDialog.opt.override = \u4ec5\u66f4\u65b0 {0} \u98de\u884c\u914d\u7f6e -DeploymentSelectionDialog.opt.title = \u53d7\u5230\u5f71\u54cd\u7684\u98de\u884c\u914d\u7f6e: +DeploymentSelectionDialog.opt.default = \u6839\u636E\u9ED8\u8BA4\u91CA\u653E\u4E8B\u4EF6\u66F4\u65B0\u6240\u6709\u914D\u7F6E +DeploymentSelectionDialog.opt.override = \u4EC5\u66F4\u65B0 {0} \u98DE\u884C\u914D\u7F6E +DeploymentSelectionDialog.opt.title = \u53D7\u5230\u5F71\u54CD\u7684\u98DE\u884C\u914D\u7F6E: -DeploymentVelocityParameter.name = \u964d\u843d\u4f1e\u91ca\u653e\u65f6\u901f\u5ea6 +DeploymentVelocityParameter.name = \u964D\u843D\u4F1E\u91CA\u653E\u65F6\u901F\u5EA6 -EditDecalDialog.btn.chooser = \u9009\u62e9\u56fe\u7247\u7f16\u8f91\u7a0b\u5e8f -EditDecalDialog.lbl.always = \u603b\u4f7f\u7528\u8fd9\u4e9b\u8bbe\u7f6e -EditDecalDialog.lbl.cmdline = \u547d\u4ee4\u884c -EditDecalDialog.lbl.cmdline.help = \u6587\u4ef6\u540d\u5c06\u88ab\u8f6c\u6362\u4e3a ''%%'' -EditDecalDialog.lbl.prompt = \u8be2\u95ee\u7528\u6237 -EditDecalDialog.lbl.select = \u9009\u62e9\u7f16\u8f91\u5668 -EditDecalDialog.lbl.system = \u4f7f\u7528\u9ed8\u8ba4\u7f16\u8f91\u5668 +EditDecalDialog.btn.chooser = \u9009\u62E9\u56FE\u7247\u7F16\u8F91\u7A0B\u5E8F +EditDecalDialog.lbl.always = \u603B\u4F7F\u7528\u8FD9\u4E9B\u8BBE\u7F6E +EditDecalDialog.lbl.cmdline = \u547D\u4EE4\u884C +EditDecalDialog.lbl.cmdline.help = \u6587\u4EF6\u540D\u5C06\u88AB\u8F6C\u6362\u4E3A ''%%'' +EditDecalDialog.lbl.prompt = \u8BE2\u95EE\u7528\u6237 +EditDecalDialog.lbl.select = \u9009\u62E9\u7F16\u8F91\u5668 +EditDecalDialog.lbl.system = \u4F7F\u7528\u9ED8\u8BA4\u7F16\u8F91\u5668 ! Edit Decal Dialog -EditDecalDialog.title = \u7f16\u8f91\u8d34\u82b1 +EditDecalDialog.title = \u7F16\u8F91\u8D34\u82B1 -EditDecalHelper.createFileException = \u65e0\u6cd5\u521b\u5efa\u4e34\u65f6\u6587\u4ef6 {0} -EditDecalHelper.editPreferencesHelp = \u56fe\u7247\u7f16\u8f91\u7a0b\u5e8f\u53ef\u4ee5\u5728\u9996\u9009\u9879\u4e2d\u4fee\u6539. -EditDecalHelper.launchCustomEditorException = C\u65e0\u6cd5\u6839\u636e\u547d\u4ee4 ''{0}'' \u6765\u542f\u52a8\u56fe\u7247\u7f16\u8f91\u7a0b\u5e8f -EditDecalHelper.launchSystemEditorException = \u65e0\u6cd5\u542f\u52a8\u7cfb\u7edf\u56fe\u7247\u7f16\u8f91\u7a0b\u5e8f +EditDecalHelper.createFileException = \u65E0\u6CD5\u521B\u5EFA\u4E34\u65F6\u6587\u4EF6 {0} +EditDecalHelper.editPreferencesHelp = \u56FE\u7247\u7F16\u8F91\u7A0B\u5E8F\u53EF\u4EE5\u5728\u9996\u9009\u9879\u4E2D\u4FEE\u6539. +EditDecalHelper.launchCustomEditorException = \u65E0\u6CD5\u6839\u636E\u53C2\u6570 ''{0}'' \u6765\u542F\u52A8\u56FE\u7247\u7F16\u8F91\u7A0B\u5E8F +EditDecalHelper.launchSystemEditorException = \u65E0\u6CD5\u542F\u52A8\u7CFB\u7EDF\u56FE\u7247\u7F16\u8F91\u7A0B\u5E8F !EllipticalFinSet -EllipticalFinSet.Ellipticalfinset = \u692d\u5706\u7a33\u5b9a\u7ffc +EllipticalFinSet.Ellipticalfinset = \u692D\u5706\u7A33\u5B9A\u7FFC -EllipticalFinSetCfg.Fincant = \u7a33\u5b9a\u7ffc\u9762\u89d2: -EllipticalFinSetCfg.FincrossSection = \u7a33\u5b9a\u7ffc\u6a2a\u622a\u9762: -EllipticalFinSetCfg.General = \u5e38\u89c4 -EllipticalFinSetCfg.Generalproperties = \u5e38\u89c4\u5c5e\u6027 -EllipticalFinSetCfg.Height = \u9ad8\u5ea6: +EllipticalFinSetCfg.Fincant = \u7A33\u5B9A\u7FFC\u9762\u89D2: +EllipticalFinSetCfg.FincrossSection = \u7A33\u5B9A\u7FFC\u6A2A\u622A\u9762: +EllipticalFinSetCfg.General = \u5E38\u89C4 +EllipticalFinSetCfg.Generalproperties = \u5E38\u89C4\u5C5E\u6027 +EllipticalFinSetCfg.Height = \u9AD8\u5EA6: !EllipticalFinSetConfig -EllipticalFinSetCfg.Nbroffins = \u7a33\u5b9a\u7ffc\u6570\u91cf: -EllipticalFinSetCfg.Positionrelativeto = \u76f8\u5bf9\u4f4d\u7f6e: -EllipticalFinSetCfg.Rootchord = \u7ffc\u6839\u5f26\u957f: -EllipticalFinSetCfg.Rotation = \u65cb\u5ea6: -EllipticalFinSetCfg.Thickness = \u539a\u5ea6: -EllipticalFinSetCfg.plus = \u52a0 -EllipticalFinSetCfg.ttip.Fincant = \u7a33\u5b9a\u7ffc\u7ffc\u9762\u4e0e\u7bad\u4f53\u4e4b\u95f4\u7684\u5939\u89d2. +EllipticalFinSetCfg.Nbroffins = \u7A33\u5B9A\u7FFC\u6570\u91CF: +EllipticalFinSetCfg.Positionrelativeto = \u76F8\u5BF9\u4F4D\u7F6E: +EllipticalFinSetCfg.Rootchord = \u7FFC\u6839\u5F26\u957F: +EllipticalFinSetCfg.Rotation = \u65CB\u5EA6: +EllipticalFinSetCfg.Thickness = \u539A\u5EA6: +EllipticalFinSetCfg.plus = \u52A0 +EllipticalFinSetCfg.ttip.Fincant = \u7A33\u5B9A\u7FFC\u7FFC\u9762\u4E0E\u7BAD\u4F53\u4E4B\u95F4\u7684\u5939\u89D2. ! EngineBlock -EngineBlock.EngineBlock = \u53d1\u52a8\u673a +EngineBlock.EngineBlock = \u53D1\u52A8\u673A\u5757 -ExportDecalDialog.decalList.lbl = \u8d34\u82b1 -ExportDecalDialog.exception = \u65e0\u6cd5\u4fdd\u5b58\u8d34\u82b1\u5230\u6587\u4ef6 ''{0}'' +ExportDecalDialog.decalList.lbl = \u8D34\u82B1 +ExportDecalDialog.exception = \u65E0\u6CD5\u4FDD\u5B58\u8D34\u82B1\u5230\u6587\u4EF6 ''{0}'' ! Export Decal Dialog -ExportDecalDialog.title = \u5bfc\u51fa\u8d34\u82b1 +ExportDecalDialog.title = \u5BFC\u51FA\u8D34\u82B1 -ExpressionBuilderDialog.CopyToOtherSimulations = \u590d\u5236\u5230\u5176\u4ed6\u4eff\u771f -ExpressionBuilderDialog.CopyToOtherSimulations.ttip = \u5c06\u8868\u8fbe\u5f0f\u590d\u5236\u5230\u5176\u4ed6\u8bbe\u8ba1\u7a3f.
\u4e0d\u4f1a\u8986\u76d6\u5df2\u5b58\u5728\u7684\u8868\u8fbe\u5f0f. -ExpressionBuilderDialog.InsertOperator = \u63d2\u5165\u7b97\u5b50 -ExpressionBuilderDialog.InsertVariable = \u63d2\u5165\u53d8\u91cf -ExpressionBuilderDialog.led.ttip.Expression = \u8868\u8fbe\u5f0f\u5fc5\u987b\u4f7f\u7528\u5b9a\u4e49\u8fc7\u7684\u7b26\u53f7\u548c\u7b97\u5b50 -ExpressionBuilderDialog.led.ttip.Name = \u540d\u79f0\u4e0d\u80fd\u91cd\u590d -ExpressionBuilderDialog.led.ttip.Symbol = \u7b26\u53f7\u4e0d\u80fd\u91cd\u590d +ExpressionBuilderDialog.CopyToOtherSimulations = \u590D\u5236\u5230\u5176\u4ED6\u4EFF\u771F +ExpressionBuilderDialog.CopyToOtherSimulations.ttip = \u5C06\u8868\u8FBE\u5F0F\u590D\u5236\u5230\u5176\u4ED6\u8BBE\u8BA1\u7A3F.
\u4E0D\u4F1A\u8986\u76D6\u5DF2\u5B58\u5728\u7684\u8868\u8FBE\u5F0F. +ExpressionBuilderDialog.InsertOperator = \u63D2\u5165\u7B97\u5B50 +ExpressionBuilderDialog.InsertVariable = \u63D2\u5165\u53D8\u91CF +ExpressionBuilderDialog.led.ttip.Expression = \u8868\u8FBE\u5F0F\u5FC5\u987B\u4F7F\u7528\u5B9A\u4E49\u8FC7\u7684\u7B26\u53F7\u548C\u7B97\u5B50 +ExpressionBuilderDialog.led.ttip.Name = \u540D\u79F0\u4E0D\u80FD\u91CD\u590D +ExpressionBuilderDialog.led.ttip.Symbol = \u7B26\u53F7\u4E0D\u80FD\u91CD\u590D ! Custom expression builder window -ExpressionBuilderDialog.title = \u8868\u8fbe\u5f0f\u751f\u6210\u5668 +ExpressionBuilderDialog.title = \u8868\u8FBE\u5F0F\u751F\u6210\u5668 -ExternalComponent.Polished = \u629b\u5149\u7684 -ExternalComponent.Regularpaint = \u666e\u901a\u6d82\u6599 +ExternalComponent.Polished = \u629B\u5149 +ExternalComponent.Regularpaint = \u666E\u901A\u6D82\u6599 ! ExternalComponent -ExternalComponent.Rough = \u7c97\u7cd9 -ExternalComponent.Smoothpaint = \u5149\u6ed1\u6d82\u6599 -ExternalComponent.Unfinished = \u7c97\u52a0\u5de5 +ExternalComponent.Rough = \u7C97\u7CD9 +ExternalComponent.Smoothpaint = \u5149\u6ED1\u6D82\u6599 +ExternalComponent.Unfinished = \u7C97\u52A0\u5DE5 !FinMarkingGuide -FinMarkingGuide.lbl.Front = \u524d +FinMarkingGuide.lbl.Front = \u524D -FinSet.CrossSection.AIRFOIL = \u7ffc\u578b -FinSet.CrossSection.ROUNDED = \u5706\u5f62 +FinSet.CrossSection.AIRFOIL = \u7FFC\u578B +FinSet.CrossSection.ROUNDED = \u5706\u5F62 ! FinSet -FinSet.CrossSection.SQUARE = \u65b9\u5f62 -FinSet.TabRelativePosition.CENTER = \u7ffc\u6839\u5f26\u4e2d\u70b9 -FinSet.TabRelativePosition.END = \u7ffc\u6839\u5f26\u540e\u7f18 -FinSet.TabRelativePosition.FRONT = \u7ffc\u6839\u5f26\u524d\u7f18 +FinSet.CrossSection.SQUARE = \u77E9\u5F62 +FinSet.TabRelativePosition.CENTER = \u7FFC\u6839\u5F26\u4E2D\u70B9 +FinSet.TabRelativePosition.END = \u7FFC\u6839\u5F26\u540E\u7F18 +FinSet.TabRelativePosition.FRONT = \u7FFC\u6839\u5F26\u524D\u7F18 -FinSetConfig.Convertfinset = \u8f6c\u6362\u7ffc -FinSetConfig.but.AutoCalc = \u81ea\u52a8\u8ba1\u7b97 -FinSetConfig.but.Converttofreeform = \u8f6c\u4e3a\u81ea\u7531\u66f2\u9762 -FinSetConfig.but.Converttofreeform.ttip = \u5c06\u7ffc\u8f6c\u6362\u4e3a\u81ea\u7531\u66f2\u9762\u7ffc -FinSetConfig.but.Splitfins = \u5206\u79bb\u7ffc -FinSetConfig.but.Splitfins.ttip = \u5c06\u4e00\u4e2a\u7ffc\u5206\u6210\u591a\u4e2a\u7ffc -FinSetConfig.lbl.Tabheight = \u677f\u9ad8: -FinSetConfig.lbl.Tablength = \u677f\u957f: -FinSetConfig.lbl.Tabposition = \u4f4d\u7f6e: -FinSetConfig.lbl.Through-the-wall = \u7a7f\u8fc7\u7ba1\u58c1\u7684\u5c3e\u7ffc: -FinSetConfig.lbl.relativeto = \u76f8\u5bf9\u4e8e +FinSetConfig.Convertfinset = \u8F6C\u6362\u7FFC +FinSetConfig.but.AutoCalc = \u81EA\u52A8\u8BA1\u7B97 +FinSetConfig.but.Converttofreeform = \u8F6C\u4E3A\u81EA\u7531\u66F2\u9762 +FinSetConfig.but.Converttofreeform.ttip = \u5C06\u7FFC\u8F6C\u6362\u4E3A\u81EA\u7531\u66F2\u9762\u7FFC +FinSetConfig.but.Splitfins = \u5206\u79BB\u7FFC +FinSetConfig.but.Splitfins.ttip = \u5C06\u4E00\u4E2A\u7FFC\u5206\u6210\u591A\u4E2A\u7FFC +FinSetConfig.lbl.Tabheight = \u677F\u9AD8: +FinSetConfig.lbl.Tablength = \u677F\u957F: +FinSetConfig.lbl.Tabposition = \u4F4D\u7F6E: +FinSetConfig.lbl.Through-the-wall = \u7A7F\u8FC7\u7BA1\u58C1\u7684\u5C3E\u7FFC: +FinSetConfig.lbl.relativeto = \u76F8\u5BF9\u4E8E ! FinSetConfig -FinSetConfig.tab.Fintabs = \u7a33\u5b9a\u7ffc -FinSetConfig.tab.Through-the-wall = \u7a7f\u8fc7\u7ba1\u58c1\u7684\u5c3e\u7ffc -FinSetConfig.ttip.Tabheight = \u7ffc\u5c55\u65b9\u5411\u7684\u9ad8\u5ea6. -FinSetConfig.ttip.Tablength = \u7ffc\u677f\u7684\u957f\u5ea6. -FinSetConfig.ttip.Tabposition = \u7ffc\u677f\u7684\u4f4d\u7f6e. +FinSetConfig.tab.Fintabs = \u7A33\u5B9A\u7FFC +FinSetConfig.tab.Through-the-wall = \u7A7F\u8FC7\u7BA1\u58C1\u7684\u5C3E\u7FFC +FinSetConfig.ttip.Tabheight = \u7FFC\u5C55\u65B9\u5411\u7684\u9AD8\u5EA6. +FinSetConfig.ttip.Tablength = \u7FFC\u677F\u7684\u957F\u5EA6. +FinSetConfig.ttip.Tabposition = \u7FFC\u677F\u7684\u4F4D\u7F6E. -FlightDataType.TYPE_ACCELERATION_TOTAL = \u603b\u52a0\u901f\u5ea6 -FlightDataType.TYPE_ACCELERATION_XY = \u6a2a\u5411\u52a0\u901f\u5ea6 -FlightDataType.TYPE_ACCELERATION_Z = \u5782\u76f4\u52a0\u901f\u5ea6 -FlightDataType.TYPE_AIR_PRESSURE = \u7a7a\u6c14\u538b\u529b -FlightDataType.TYPE_AIR_TEMPERATURE = \u7a7a\u6c14\u6e29\u5ea6 -FlightDataType.TYPE_ALTITUDE = \u9ad8\u5ea6 -FlightDataType.TYPE_AOA = \u653b\u89d2 -FlightDataType.TYPE_AXIAL_DRAG_COEFF = \u8f74\u5411\u963b\u529b\u7cfb\u6570 -FlightDataType.TYPE_BASE_DRAG_COEFF = \u57fa\u51c6\u963b\u529b\u7cfb\u6570 -FlightDataType.TYPE_CG_LOCATION = CG \u91cd\u5fc3\u4f4d\u7f6e -FlightDataType.TYPE_COMPUTATION_TIME = \u8ba1\u7b97\u65f6\u95f4 -FlightDataType.TYPE_CORIOLIS_ACCELERATION = \u79d1\u91cc\u5965\u5229\u52a0\u901f\u5ea6 -FlightDataType.TYPE_CP_LOCATION = CP \u538b\u5fc3\u4f4d\u7f6e -FlightDataType.TYPE_DRAG_COEFF = \u963b\u529b\u7cfb\u6570 -FlightDataType.TYPE_DRAG_FORCE = \u963b\u529b -FlightDataType.TYPE_FRICTION_DRAG_COEFF = \u6469\u64e6\u963b\u529b\u7cfb\u6570 -FlightDataType.TYPE_GRAVITY = \u91cd\u529b\u52a0\u901f\u5ea6 -FlightDataType.TYPE_LATITUDE = \u7eac\u5ea6: -FlightDataType.TYPE_LONGITUDE = \u7ecf\u5ea6: -FlightDataType.TYPE_LONGITUDINAL_INERTIA = \u7eb5\u5411\u8f6c\u52a8\u60ef\u91cf -FlightDataType.TYPE_MACH_NUMBER = \u9a6c\u8d6b\u6570 -FlightDataType.TYPE_MASS = \u8d28\u91cf -FlightDataType.TYPE_NORMAL_FORCE_COEFF = \u6cd5\u5411\u529b\u7cfb\u6570 -FlightDataType.TYPE_ORIENTATION_PHI = \u4fa7\u5411\u65b9\u5411 (azimuth) -FlightDataType.TYPE_ORIENTATION_THETA = \u5782\u76f4\u65b9\u5411 (zenith) -FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF = \u4fef\u4ef0\u963b\u5c3c\u7cfb\u6570 -FlightDataType.TYPE_PITCH_MOMENT_COEFF = \u4fef\u4ef0\u529b\u77e9\u7cfb\u6570 -FlightDataType.TYPE_PITCH_RATE = \u4fef\u4ef0\u89d2\u901f\u5ea6 -FlightDataType.TYPE_POSITION_DIRECTION = \u6a2a\u5411\u65b9\u5411 -FlightDataType.TYPE_POSITION_X = \u8fce\u98ce\u4f4d\u7f6e -FlightDataType.TYPE_POSITION_XY = \u6a2a\u5411\u8de8\u8ddd -FlightDataType.TYPE_POSITION_Y = \u5e73\u884c\u98ce\u4f4d\u7f6e -FlightDataType.TYPE_PRESSURE_DRAG_COEFF = \u538b\u5dee\u963b\u529b\u7cfb\u6570 -FlightDataType.TYPE_PROPELLANT_MASS = \u63a8\u8fdb\u5242\u8d28\u91cf -FlightDataType.TYPE_REFERENCE_AREA = \u53c2\u8003\u9762\u79ef -FlightDataType.TYPE_REFERENCE_LENGTH = \u53c2\u8003\u957f\u5ea6 -FlightDataType.TYPE_REYNOLDS_NUMBER = \u96f7\u8bfa\u6570 -FlightDataType.TYPE_ROLL_DAMPING_COEFF = \u6eda\u8f6c\u963b\u5c3c\u7cfb\u6570 -FlightDataType.TYPE_ROLL_FORCING_COEFF = \u6eda\u8f6c\u529b\u7cfb\u6570 -FlightDataType.TYPE_ROLL_MOMENT_COEFF = \u6eda\u8f6c\u529b\u77e9\u7cfb\u6570 -FlightDataType.TYPE_ROLL_RATE = \u6eda\u8f6c\u89d2\u901f\u5ea6 -FlightDataType.TYPE_ROTATIONAL_INERTIA = \u6a2a\u5411\u8f6c\u52a8\u60ef\u91cf -FlightDataType.TYPE_SIDE_FORCE_COEFF = \u4fa7\u5411\u529b\u7cfb\u6570 -FlightDataType.TYPE_SPEED_OF_SOUND = \u58f0\u901f -FlightDataType.TYPE_STABILITY = \u7a33\u5b9a\u88d5\u91cf -FlightDataType.TYPE_THRUST_FORCE = \u63a8\u529b +FlightDataType.TYPE_ACCELERATION_TOTAL = \u603B\u52A0\u901F\u5EA6 +FlightDataType.TYPE_ACCELERATION_XY = \u6A2A\u5411\u52A0\u901F\u5EA6 +FlightDataType.TYPE_ACCELERATION_Z = \u5782\u76F4\u52A0\u901F\u5EA6 +FlightDataType.TYPE_AIR_PRESSURE = \u7A7A\u6C14\u538B\u529B +FlightDataType.TYPE_AIR_TEMPERATURE = \u7A7A\u6C14\u6E29\u5EA6 +FlightDataType.TYPE_ALTITUDE = \u9AD8\u5EA6 +FlightDataType.TYPE_AOA = \u653B\u89D2 +FlightDataType.TYPE_AXIAL_DRAG_COEFF = \u8F74\u5411\u963B\u529B\u7CFB\u6570 +FlightDataType.TYPE_BASE_DRAG_COEFF = \u57FA\u51C6\u963B\u529B\u7CFB\u6570 +FlightDataType.TYPE_CG_LOCATION = CG \u91CD\u5FC3\u4F4D\u7F6E +FlightDataType.TYPE_COMPUTATION_TIME = \u8BA1\u7B97\u65F6\u95F4 +FlightDataType.TYPE_CORIOLIS_ACCELERATION = \u79D1\u91CC\u5965\u5229\u52A0\u901F\u5EA6 +FlightDataType.TYPE_CP_LOCATION = CP \u538B\u5FC3\u4F4D\u7F6E +FlightDataType.TYPE_DRAG_COEFF = \u963B\u529B\u7CFB\u6570 +FlightDataType.TYPE_DRAG_FORCE = \u963B\u529B +FlightDataType.TYPE_FRICTION_DRAG_COEFF = \u6469\u64E6\u963B\u529B\u7CFB\u6570 +FlightDataType.TYPE_GRAVITY = \u91CD\u529B\u52A0\u901F\u5EA6 +FlightDataType.TYPE_LATITUDE = \u7EAC\u5EA6 +FlightDataType.TYPE_LONGITUDE = \u7ECF\u5EA6 +FlightDataType.TYPE_LONGITUDINAL_INERTIA = \u7EB5\u5411\u8F6C\u52A8\u60EF\u91CF +FlightDataType.TYPE_MACH_NUMBER = \u9A6C\u8D6B\u6570 +FlightDataType.TYPE_MASS = \u8D28\u91CF +FlightDataType.TYPE_NORMAL_FORCE_COEFF = \u6CD5\u5411\u529B\u7CFB\u6570 +FlightDataType.TYPE_ORIENTATION_PHI = \u6C34\u5E73\u65B9\u5411 (\u65B9\u4F4D\u89D2) +FlightDataType.TYPE_ORIENTATION_THETA = \u5782\u76F4\u65B9\u5411 (\u5929\u9876\u89D2) +FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF = \u4FEF\u4EF0\u963B\u5C3C\u7CFB\u6570 +FlightDataType.TYPE_PITCH_MOMENT_COEFF = \u4FEF\u4EF0\u529B\u77E9\u7CFB\u6570 +FlightDataType.TYPE_PITCH_RATE = \u4FEF\u4EF0\u89D2\u901F\u5EA6 +FlightDataType.TYPE_POSITION_DIRECTION = \u6C34\u5E73\u65B9\u5411 +FlightDataType.TYPE_POSITION_X = \u8FCE\u98CE\u4F4D\u7F6E +FlightDataType.TYPE_POSITION_XY = \u6A2A\u5411\u8DE8\u8DDD +FlightDataType.TYPE_POSITION_Y = \u5E73\u884C\u98CE\u4F4D\u7F6E +FlightDataType.TYPE_PRESSURE_DRAG_COEFF = \u538B\u5DEE\u963B\u529B\u7CFB\u6570 +FlightDataType.TYPE_PROPELLANT_MASS = \u63A8\u8FDB\u5242\u8D28\u91CF +FlightDataType.TYPE_REFERENCE_AREA = \u53C2\u8003\u9762\u79EF +FlightDataType.TYPE_REFERENCE_LENGTH = \u53C2\u8003\u957F\u5EA6 +FlightDataType.TYPE_REYNOLDS_NUMBER = \u96F7\u8BFA\u6570 +FlightDataType.TYPE_ROLL_DAMPING_COEFF = \u6EDA\u8F6C\u963B\u5C3C\u7CFB\u6570 +FlightDataType.TYPE_ROLL_FORCING_COEFF = \u6EDA\u8F6C\u529B\u7CFB\u6570 +FlightDataType.TYPE_ROLL_MOMENT_COEFF = \u6EDA\u8F6C\u529B\u77E9\u7CFB\u6570 +FlightDataType.TYPE_ROLL_RATE = \u6EDA\u8F6C\u89D2\u901F\u5EA6 +FlightDataType.TYPE_ROTATIONAL_INERTIA = \u6A2A\u5411\u8F6C\u52A8\u60EF\u91CF +FlightDataType.TYPE_SIDE_FORCE_COEFF = \u4FA7\u5411\u529B\u7CFB\u6570 +FlightDataType.TYPE_SPEED_OF_SOUND = \u97F3\u901F +FlightDataType.TYPE_STABILITY = \u7A33\u5B9A\u88D5\u91CF +FlightDataType.TYPE_THRUST_FORCE = \u63A8\u529B ! FlightDataType -FlightDataType.TYPE_TIME = \u65f6\u95f4 -FlightDataType.TYPE_TIME_STEP = \u6a21\u62df\u65f6\u95f4\u6b65 -FlightDataType.TYPE_VELOCITY_TOTAL = \u603b\u901f\u5ea6 -FlightDataType.TYPE_VELOCITY_XY = \u6a2a\u5411\u901f\u5ea6 -FlightDataType.TYPE_VELOCITY_Z = \u5782\u76f4\u901f\u5ea6 -FlightDataType.TYPE_WIND_VELOCITY = \u98ce\u901f -FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF = \u504f\u822a\u963b\u5c3c\u7cfb\u6570 -FlightDataType.TYPE_YAW_MOMENT_COEFF = \u504f\u822a\u529b\u77e9\u7cfb\u6570 -FlightDataType.TYPE_YAW_RATE = \u504f\u822a\u89d2\u901f\u5ea6 +FlightDataType.TYPE_TIME = \u65F6\u95F4 +FlightDataType.TYPE_TIME_STEP = \u6A21\u62DF\u65F6\u95F4\u6B65 +FlightDataType.TYPE_VELOCITY_TOTAL = \u603B\u901F\u5EA6 +FlightDataType.TYPE_VELOCITY_XY = \u6A2A\u5411\u901F\u5EA6 +FlightDataType.TYPE_VELOCITY_Z = \u5782\u76F4\u901F\u5EA6 +FlightDataType.TYPE_WIND_VELOCITY = \u98CE\u901F +FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF = \u504F\u822A\u963B\u5C3C\u7CFB\u6570 +FlightDataType.TYPE_YAW_MOMENT_COEFF = \u504F\u822A\u529B\u77E9\u7CFB\u6570 +FlightDataType.TYPE_YAW_RATE = \u504F\u822A\u89D2\u901F\u5EA6 -FlightEvent.Type.ALTITUDE = \u9ad8\u5ea6\u53d8\u5316 -FlightEvent.Type.APOGEE = \u6700\u9ad8\u70b9 -FlightEvent.Type.BURNOUT = \u53d1\u52a8\u673a\u70e7\u5c3d -FlightEvent.Type.EJECTION_CHARGE = \u5f39\u5c04 -FlightEvent.Type.EXCEPTION = \u5f02\u5e38 -FlightEvent.Type.GROUND_HIT = \u649e\u51fb\u5730\u9762 -FlightEvent.Type.IGNITION = \u53d1\u52a8\u673a\u70b9\u706b +FlightEvent.Type.ALTITUDE = \u9AD8\u5EA6\u53D8\u5316 +FlightEvent.Type.APOGEE = \u6700\u9AD8\u70B9 +FlightEvent.Type.BURNOUT = \u53D1\u52A8\u673A\u70E7\u5C3D +FlightEvent.Type.EJECTION_CHARGE = \u5F39\u5C04 +FlightEvent.Type.EXCEPTION = \u5F02\u5E38 +FlightEvent.Type.GROUND_HIT = \u7740\u5730 +FlightEvent.Type.IGNITION = \u53D1\u52A8\u673A\u70B9\u706B ! FlightEvent -FlightEvent.Type.LAUNCH = \u53d1\u5c04 -FlightEvent.Type.LAUNCHROD = \u79bb\u67b6 -FlightEvent.Type.LIFTOFF = \u8d77\u98de -FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = \u56de\u6536\u88c5\u7f6e\u542f\u52a8 -FlightEvent.Type.SIMULATION_END = \u4eff\u771f\u7ed3\u675f -FlightEvent.Type.STAGE_SEPARATION = \u7ea7\u95f4\u5206\u79bb -FlightEvent.Type.TUMBLE = \u7ffb\u6eda +FlightEvent.Type.LAUNCH = \u53D1\u5C04 +FlightEvent.Type.LAUNCHROD = \u79BB\u67B6 +FlightEvent.Type.LIFTOFF = \u8D77\u98DE +FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = \u56DE\u6536\u88C5\u7F6E\u542F\u52A8 +FlightEvent.Type.SIMULATION_END = \u4EFF\u771F\u7ED3\u675F +FlightEvent.Type.STAGE_SEPARATION = \u7EA7\u95F4\u5206\u79BB +FlightEvent.Type.TUMBLE = \u7FFB\u6EDA ! FreeformFinSet -FreeformFinSet.FreeformFinSet = \u81ea\u7531\u66f2\u9762\u7a33\u5b9a\u7ffc +FreeformFinSet.FreeformFinSet = \u81EA\u7531\u66F2\u9762\u7A33\u5B9A\u7FFC -FreeformFinSetCfg.lbl.Fincant = \u7a33\u5b9a\u7ffc\u9762\u89d2: -FreeformFinSetCfg.lbl.FincrossSection = \u7a33\u5b9a\u7ffc\u6a2a\u5207\u9762: -FreeformFinSetCfg.lbl.Finrotation = \u7a33\u5b9a\u7ffc\u65cb\u5ea6: -FreeformFinSetCfg.lbl.Numberoffins = \u7a33\u5b9a\u7ffc\u6570\u91cf: -FreeformFinSetCfg.lbl.Posrelativeto = \u76f8\u5bf9\u4f4d\u7f6e: -FreeformFinSetCfg.lbl.Thickness = \u539a\u5ea6: -FreeformFinSetCfg.lbl.plus = \u52a0 -FreeformFinSetCfg.lbl.ttip.Fincant = \u7a33\u5b9a\u7ffc\u7ffc\u9762\u4e0e\u7bad\u4f53\u4e4b\u95f4\u7684\u5939\u89d2. +FreeformFinSetCfg.lbl.Fincant = \u7A33\u5B9A\u7FFC\u9762\u89D2: +FreeformFinSetCfg.lbl.FincrossSection = \u7A33\u5B9A\u7FFC\u6A2A\u5207\u9762: +FreeformFinSetCfg.lbl.Finrotation = \u7A33\u5B9A\u7FFC\u65CB\u5EA6: +FreeformFinSetCfg.lbl.Numberoffins = \u7A33\u5B9A\u7FFC\u6570\u91CF: +FreeformFinSetCfg.lbl.Posrelativeto = \u76F8\u5BF9\u4F4D\u7F6E: +FreeformFinSetCfg.lbl.Thickness = \u539A\u5EA6: +FreeformFinSetCfg.lbl.plus = \u52A0 +FreeformFinSetCfg.lbl.ttip.Fincant = \u7A33\u5B9A\u7FFC\u7FFC\u9762\u4E0E\u7BAD\u4F53\u4E4B\u95F4\u7684\u5939\u89D2. !FreeformFinSetConfig -FreeformFinSetCfg.tab.General = \u5e38\u89c4 -FreeformFinSetCfg.tab.Shape = \u5f62\u72b6 -FreeformFinSetCfg.tab.ttip.Finshape = \u7a33\u5b9a\u7ffc\u5f62\u72b6 -FreeformFinSetCfg.tab.ttip.General = \u5e38\u89c4\u5c5e\u6027 +FreeformFinSetCfg.tab.General = \u5E38\u89C4 +FreeformFinSetCfg.tab.Shape = \u5F62\u72B6 +FreeformFinSetCfg.tab.ttip.Finshape = \u7A33\u5B9A\u7FFC\u5F62\u72B6 +FreeformFinSetCfg.tab.ttip.General = \u5E38\u89C4\u5C5E\u6027 -FreeformFinSetConfig.lbl.clickDrag = \u5355\u51fb+\u62d6\u62fd: \u6dfb\u52a0,\u79fb\u52a8\u70b9 -FreeformFinSetConfig.lbl.ctrlClick = Ctrl+\u5355\u51fb: \u5220\u9664\u70b9 +FreeformFinSetConfig.lbl.clickDrag = \u5355\u51FB+\u62D6\u62FD: \u6DFB\u52A0,\u79FB\u52A8\u70B9 +FreeformFinSetConfig.lbl.ctrlClick = Ctrl+\u5355\u51FB: \u5220\u9664\u70B9 ! doubleClick1 + 2 form the message "Double-click to edit", split approximately at the middle -FreeformFinSetConfig.lbl.doubleClick1 = \u53cc\u51fb -FreeformFinSetConfig.lbl.doubleClick2 = \u7f16\u8f91 -FreeformFinSetConfig.lbl.scaleFin = \u7f29\u653e\u7a33\u5b9a\u7ffc +FreeformFinSetConfig.lbl.doubleClick1 = \u53CC\u51FB +FreeformFinSetConfig.lbl.doubleClick2 = \u7F16\u8F91 +FreeformFinSetConfig.lbl.scaleFin = \u7F29\u653E\u7A33\u5B9A\u7FFC -GeneralOptimizationDialog.basicSimulationName = \u57fa\u672c\u4eff\u771f -GeneralOptimizationDialog.btn.add = \u6dfb\u52a0 -GeneralOptimizationDialog.btn.add.ttip = \u6dfb\u52a0\u9009\u62e9\u53c2\u6570\u5230\u4f18\u5316\u5217\u8868 -GeneralOptimizationDialog.btn.apply = \u5e94\u7528\u4f18\u5316 -GeneralOptimizationDialog.btn.apply.ttip = \u5e94\u7528\u4f18\u5316\u7ed3\u679c\u5230\u706b\u7bad\u8bbe\u8ba1\u4e2d -GeneralOptimizationDialog.btn.close = \u5173\u95ed -GeneralOptimizationDialog.btn.close.ttip = \u5173\u95ed\u7a97\u53e3\u4e0d\u6539\u53d8\u706b\u7bad\u8bbe\u8ba1 -GeneralOptimizationDialog.btn.plotPath = \u7ed8\u5236\u4f18\u5316\u8def\u5f84 -GeneralOptimizationDialog.btn.plotPath.ttip = \u7ed8\u5236\u4f18\u5316\u8def\u5f84 (\u4ec5\u4f7f\u75281\u7ef4\u548c2\u7ef4\u4f18\u5316) -GeneralOptimizationDialog.btn.remove = \u79fb\u9664 -GeneralOptimizationDialog.btn.remove.ttip = \u79fb\u9664\u4f18\u5316\u5217\u8868\u4e2d\u7684\u53c2\u6570 -GeneralOptimizationDialog.btn.removeAll = \u79fb\u9664\u6240\u6709 -GeneralOptimizationDialog.btn.removeAll.ttip = \u79fb\u9664\u4f18\u5316\u5217\u8868\u4e2d\u7684\u6240\u6709\u53c2\u6570 -GeneralOptimizationDialog.btn.reset = \u91cd\u7f6e -GeneralOptimizationDialog.btn.reset.ttip = \u91cd\u7f6e\u706b\u7bad\u8bbe\u8ba1\u4e3a\u5f53\u524d\u706b\u7bad\u8bbe\u8ba1 -GeneralOptimizationDialog.btn.save = \u4fdd\u5b58\u4f18\u5316\u8def\u5f84 -GeneralOptimizationDialog.btn.save.ttip = \u4fdd\u5b58\u6a21\u62df\u7684\u51fd\u6570\u8ba1\u7b97\u503c\u5230 CSV \u6587\u4ef6. -GeneralOptimizationDialog.btn.start = \u5f00\u59cb\u53c2\u6570\u4f18\u5316 -GeneralOptimizationDialog.btn.stop = \u505c\u6b62\u53c2\u6570\u4f18\u5316 -GeneralOptimizationDialog.error.optimizationFailure.text = \u4f18\u5316\u8fd0\u884c\u5931\u8d25: -GeneralOptimizationDialog.error.optimizationFailure.title = \u4f18\u5316\u5931\u8d25 -GeneralOptimizationDialog.error.selectParams.text = \u8bf7\u9996\u5148\u9009\u62e9\u53ef\u7528\u4f18\u5316\u53c2\u6570. -GeneralOptimizationDialog.error.selectParams.title = \u786e\u5b9a\u4f18\u5316\u53c2\u6570 -GeneralOptimizationDialog.export.header = \u5305\u62ec\u6807\u9898\u884c -GeneralOptimizationDialog.export.header.ttip = \u6807\u9898\u884c\u8bb0\u5f55\u4e86\u6570\u636e\u57df\u63cf\u8ff0. -GeneralOptimizationDialog.export.stability = \u7a33\u5b9a\u6027 -GeneralOptimizationDialog.goal.maximize = \u6700\u5927\u503c -GeneralOptimizationDialog.goal.minimize = \u6700\u5c0f\u503c -GeneralOptimizationDialog.goal.seek = \u76ee\u6807\u503c -GeneralOptimizationDialog.lbl.availableParams = \u53ef\u7528\u53c2\u6570: -GeneralOptimizationDialog.lbl.optimizationOpts = \u4f18\u5316\u9009\u9879 -GeneralOptimizationDialog.lbl.optimizeGoal = \u4f18\u5316\u76ee\u6807: -GeneralOptimizationDialog.lbl.optimizeGoal.ttip = \u9009\u62e9\u9700\u8981\u4f18\u5316\u7684\u76ee\u6807 -GeneralOptimizationDialog.lbl.optimizeGoalValue.ttip = \u786e\u5b9a\u76ee\u6807\u503c -GeneralOptimizationDialog.lbl.optimizeSim = \u4f18\u5316\u4eff\u771f: -GeneralOptimizationDialog.lbl.optimizeSim.ttip = \u9009\u62e9\u9700\u8981\u4f18\u5316\u7684\u4eff\u771f -GeneralOptimizationDialog.lbl.optimizeValue = \u4f18\u5316\u6307\u6807: -GeneralOptimizationDialog.lbl.optimizeValue.ttip = \u9009\u62e9\u9700\u8981\u4f18\u5316\u7684\u6307\u6807 -GeneralOptimizationDialog.lbl.paramsToOptimize = \u4f18\u5316\u53c2\u6570: -GeneralOptimizationDialog.lbl.requireMaxStability = \u6700\u5927\u7a33\u5b9a\u6027: -GeneralOptimizationDialog.lbl.requireMaxStability.ttip = \u9700\u8981\u5b9a\u4e49\u8bbe\u8ba1\u7684\u6700\u5927\u9759\u7a33\u5b9a\u6027\u8fb9\u754c -GeneralOptimizationDialog.lbl.requireMinStability = \u6700\u5c0f\u7a33\u5b9a\u6027: -GeneralOptimizationDialog.lbl.requireMinStability.ttip = \u9700\u8981\u5b9a\u4e49\u8bbe\u8ba1\u7684\u6700\u5c0f\u9759\u7a33\u5b9a\u6027\u8fb9\u754c -GeneralOptimizationDialog.lbl.requireStability = \u7a33\u5b9a\u6027\u9700\u6c42 -GeneralOptimizationDialog.noSimulationName = \u6ca1\u6709\u4eff\u771f -GeneralOptimizationDialog.status.bestValue = \u6700\u4f73\u503c: -GeneralOptimizationDialog.status.bestValue.ttip = \u76ee\u524d\u5f97\u5230\u7684\u6700\u4f73\u4f18\u5316\u503c. -GeneralOptimizationDialog.status.evalCount = \u8bc4\u4f30\u6b21\u6570: -GeneralOptimizationDialog.status.evalCount.ttip = \u5df2\u6267\u884c\u7684\u8bc4\u4f30\u6b21\u6570. -GeneralOptimizationDialog.status.stepCount = \u4f18\u5316\u6b65\u6570: -GeneralOptimizationDialog.status.stepCount.ttip = \u5df2\u6267\u884c\u7684\u4f18\u5316\u6b65\u6570. -GeneralOptimizationDialog.status.stepSize = \u6b65\u957f\u5927\u5c0f: -GeneralOptimizationDialog.status.stepSize.ttip = \u76ee\u524d\u4f18\u5316\u6b65\u957f\u5927\u5c0f (\u76f8\u5bf9\u4e8e\u4f18\u5316\u53c2\u6570\u8303\u56f4) -GeneralOptimizationDialog.table.col.current = \u76ee\u524d\u503c -GeneralOptimizationDialog.table.col.max = \u6700\u5927\u503c -GeneralOptimizationDialog.table.col.min = \u6700\u5c0f\u503c -GeneralOptimizationDialog.table.col.parameter = \u53c2\u6570 +GeneralOptimizationDialog.basicSimulationName = \u57FA\u672C\u4EFF\u771F +GeneralOptimizationDialog.btn.add = \u6DFB\u52A0 +GeneralOptimizationDialog.btn.add.ttip = \u6DFB\u52A0\u9009\u62E9\u53C2\u6570\u5230\u4F18\u5316\u5217\u8868 +GeneralOptimizationDialog.btn.apply = \u5E94\u7528\u4F18\u5316 +GeneralOptimizationDialog.btn.apply.ttip = \u5E94\u7528\u4F18\u5316\u7ED3\u679C\u5230\u706B\u7BAD\u8BBE\u8BA1\u4E2D +GeneralOptimizationDialog.btn.close = \u5173\u95ED +GeneralOptimizationDialog.btn.close.ttip = \u5173\u95ED\u7A97\u53E3\u4E0D\u6539\u53D8\u706B\u7BAD\u8BBE\u8BA1 +GeneralOptimizationDialog.btn.plotPath = \u7ED8\u5236\u4F18\u5316\u8DEF\u5F84 +GeneralOptimizationDialog.btn.plotPath.ttip = \u7ED8\u5236\u4F18\u5316\u8DEF\u5F84 (\u4EC5\u4F7F\u75281\u7EF4\u548C2\u7EF4\u4F18\u5316) +GeneralOptimizationDialog.btn.remove = \u79FB\u9664 +GeneralOptimizationDialog.btn.remove.ttip = \u79FB\u9664\u4F18\u5316\u5217\u8868\u4E2D\u7684\u53C2\u6570 +GeneralOptimizationDialog.btn.removeAll = \u79FB\u9664\u6240\u6709 +GeneralOptimizationDialog.btn.removeAll.ttip = \u79FB\u9664\u4F18\u5316\u5217\u8868\u4E2D\u7684\u6240\u6709\u53C2\u6570 +GeneralOptimizationDialog.btn.reset = \u91CD\u7F6E +GeneralOptimizationDialog.btn.reset.ttip = \u91CD\u7F6E\u706B\u7BAD\u8BBE\u8BA1\u4E3A\u5F53\u524D\u706B\u7BAD\u8BBE\u8BA1 +GeneralOptimizationDialog.btn.save = \u4FDD\u5B58\u4F18\u5316\u8DEF\u5F84 +GeneralOptimizationDialog.btn.save.ttip = \u4FDD\u5B58\u6A21\u62DF\u7684\u51FD\u6570\u8BA1\u7B97\u503C\u5230 CSV \u6587\u4EF6. +GeneralOptimizationDialog.btn.start = \u5F00\u59CB\u53C2\u6570\u4F18\u5316 +GeneralOptimizationDialog.btn.stop = \u505C\u6B62\u53C2\u6570\u4F18\u5316 +GeneralOptimizationDialog.error.optimizationFailure.text = \u65E0\u6CD5\u8FD0\u884C\u4F18\u5316: +GeneralOptimizationDialog.error.optimizationFailure.title = \u4F18\u5316\u5931\u8D25 +GeneralOptimizationDialog.error.selectParams.text = \u8BF7\u9996\u5148\u9009\u62E9\u53EF\u7528\u4F18\u5316\u53C2\u6570. +GeneralOptimizationDialog.error.selectParams.title = \u786E\u5B9A\u4F18\u5316\u53C2\u6570 +GeneralOptimizationDialog.export.header = \u5305\u62EC\u6807\u9898\u884C +GeneralOptimizationDialog.export.header.ttip = \u6807\u9898\u884C\u8BB0\u5F55\u4E86\u6570\u636E\u57DF\u63CF\u8FF0. +GeneralOptimizationDialog.export.stability = \u7A33\u5B9A\u6027 +GeneralOptimizationDialog.goal.maximize = \u6700\u5927\u503C +GeneralOptimizationDialog.goal.minimize = \u6700\u5C0F\u503C +GeneralOptimizationDialog.goal.seek = \u76EE\u6807\u503C +GeneralOptimizationDialog.lbl.availableParams = \u53EF\u7528\u53C2\u6570: +GeneralOptimizationDialog.lbl.optimizationOpts = \u4F18\u5316\u9009\u9879 +GeneralOptimizationDialog.lbl.optimizeGoal = \u4F18\u5316\u76EE\u6807: +GeneralOptimizationDialog.lbl.optimizeGoal.ttip = \u9009\u62E9\u9700\u8981\u4F18\u5316\u7684\u76EE\u6807 +GeneralOptimizationDialog.lbl.optimizeGoalValue.ttip = \u786E\u5B9A\u76EE\u6807\u503C +GeneralOptimizationDialog.lbl.optimizeSim = \u4F18\u5316\u4EFF\u771F: +GeneralOptimizationDialog.lbl.optimizeSim.ttip = \u9009\u62E9\u9700\u8981\u4F18\u5316\u7684\u4EFF\u771F +GeneralOptimizationDialog.lbl.optimizeValue = \u4F18\u5316\u6307\u6807: +GeneralOptimizationDialog.lbl.optimizeValue.ttip = \u9009\u62E9\u9700\u8981\u4F18\u5316\u7684\u6307\u6807 +GeneralOptimizationDialog.lbl.paramsToOptimize = \u4F18\u5316\u53C2\u6570: +GeneralOptimizationDialog.lbl.requireMaxStability = \u6700\u5927\u7A33\u5B9A\u6027: +GeneralOptimizationDialog.lbl.requireMaxStability.ttip = \u9700\u8981\u5B9A\u4E49\u8BBE\u8BA1\u7684\u6700\u5927\u9759\u7A33\u5B9A\u6027\u8FB9\u754C +GeneralOptimizationDialog.lbl.requireMinStability = \u6700\u5C0F\u7A33\u5B9A\u6027: +GeneralOptimizationDialog.lbl.requireMinStability.ttip = \u9700\u8981\u5B9A\u4E49\u8BBE\u8BA1\u7684\u6700\u5C0F\u9759\u7A33\u5B9A\u6027\u8FB9\u754C +GeneralOptimizationDialog.lbl.requireStability = \u7A33\u5B9A\u6027\u9700\u6C42 +GeneralOptimizationDialog.noSimulationName = \u6CA1\u6709\u4EFF\u771F +GeneralOptimizationDialog.status.bestValue = \u6700\u4F73\u503C: +GeneralOptimizationDialog.status.bestValue.ttip = \u76EE\u524D\u5F97\u5230\u7684\u6700\u4F73\u4F18\u5316\u503C. +GeneralOptimizationDialog.status.evalCount = \u8BC4\u4F30\u6B21\u6570: +GeneralOptimizationDialog.status.evalCount.ttip = \u5DF2\u6267\u884C\u7684\u8BC4\u4F30\u6B21\u6570. +GeneralOptimizationDialog.status.stepCount = \u4F18\u5316\u6B65\u6570: +GeneralOptimizationDialog.status.stepCount.ttip = \u5DF2\u6267\u884C\u7684\u4F18\u5316\u6B65\u6570. +GeneralOptimizationDialog.status.stepSize = \u6B65\u957F\u5927\u5C0F: +GeneralOptimizationDialog.status.stepSize.ttip = \u76EE\u524D\u4F18\u5316\u6B65\u957F\u5927\u5C0F (\u76F8\u5BF9\u4E8E\u4F18\u5316\u53C2\u6570\u8303\u56F4) +GeneralOptimizationDialog.table.col.current = \u76EE\u524D\u503C +GeneralOptimizationDialog.table.col.max = \u6700\u5927\u503C +GeneralOptimizationDialog.table.col.min = \u6700\u5C0F\u503C +GeneralOptimizationDialog.table.col.parameter = \u53C2\u6570 ! General rocket design optimization dialog -GeneralOptimizationDialog.title = \u706b\u7bad\u4f18\u5316 -GeneralOptimizationDialog.undoText = \u5e94\u7528\u4f18\u5316 +GeneralOptimizationDialog.title = \u706B\u7BAD\u4F18\u5316 +GeneralOptimizationDialog.undoText = \u5E94\u7528\u4F18\u5316 -GeodeticComputationStrategy.flat.desc = \u5728\u8ba1\u7b97\u65f6\u628a\u5730\u9762\u5f53\u6210\u5e73\u9762, \u9002\u7528\u4e8e\u4f4e\u7a7a\u98de\u884c. -GeodeticComputationStrategy.flat.name = \u5e73\u9762\u5730\u7403 -GeodeticComputationStrategy.spherical.desc = \u8ba1\u7b97\u5927\u5730\u6d4b\u91cf\u65f6\u4f7f\u7528\u7403\u5f62\u5730\u7403.
\u5bf9\u51e0\u4e4e\u6216\u6709\u7684\u8ba1\u7b97\u60c5\u51b5\u90fd\u5f88\u7cbe\u786e. -GeodeticComputationStrategy.spherical.name = \u7403\u5f62 -GeodeticComputationStrategy.wgs84.desc = \u8ba1\u7b97\u5927\u5730\u6d4b\u91cf\u65f6\u4f7f\u7528\u4f7f\u7528WGS84\u4ee5\u53caVincenty\u8ddd\u79bb\u516c\u5f0f.
\u975e\u5e38\u6162. -GeodeticComputationStrategy.wgs84.name = WGS84 \u692d\u5706 +GeodeticComputationStrategy.flat.desc = \u5728\u8BA1\u7B97\u65F6\u628A\u5730\u9762\u5F53\u6210\u5E73\u9762, \u9002\u7528\u4E8E\u4F4E\u7A7A\u98DE\u884C. +GeodeticComputationStrategy.flat.name = \u5E73\u9762\u5730\u7403 +GeodeticComputationStrategy.spherical.desc = \u8BA1\u7B97\u5927\u5730\u6D4B\u91CF\u65F6\u4F7F\u7528\u7403\u5F62\u5730\u7403.
\u5BF9\u51E0\u4E4E\u6240\u6709\u7684\u8BA1\u7B97\u60C5\u51B5\u90FD\u5F88\u7CBE\u786E. +GeodeticComputationStrategy.spherical.name = \u7403\u5F62 +GeodeticComputationStrategy.wgs84.desc = \u8BA1\u7B97\u5927\u5730\u6D4B\u91CF\u65F6\u4F7F\u7528\u4F7F\u7528WGS84\u4EE5\u53CAVincenty\u8DDD\u79BB\u516C\u5F0F.
\u975E\u5E38\u6162. +GeodeticComputationStrategy.wgs84.name = WGS84 \u692D\u5706 -GroundHitVelocityParameter.name = \u649e\u51fb\u5730\u9762\u901f\u5ea6 +GroundHitVelocityParameter.name = \u7740\u5730\u901F\u5EA6 -GuidedTourSelectionDialog.btn.start = \u5f00\u59cb\u6559\u7a0b! -GuidedTourSelectionDialog.lbl.description = \u6559\u7a0b\u63cf\u8ff0: -GuidedTourSelectionDialog.lbl.length = \u5e7b\u706f\u7247\u9875\u6570: -GuidedTourSelectionDialog.lbl.selectTour = \u9009\u62e9\u6307\u5bfc\u6559\u7a0b: -GuidedTourSelectionDialog.title = \u6307\u5bfc\u6559\u7a0b +GuidedTourSelectionDialog.btn.start = \u5F00\u59CB\u6559\u7A0B! +GuidedTourSelectionDialog.lbl.description = \u6559\u7A0B\u8BF4\u660E: +GuidedTourSelectionDialog.lbl.length = \u5E7B\u706F\u7247\u9875\u6570: +GuidedTourSelectionDialog.lbl.selectTour = \u9009\u62E9\u6307\u5BFC\u6559\u7A0B: +GuidedTourSelectionDialog.title = \u6307\u5BFC\u6559\u7A0B -Icons.Redo = \u91cd\u505a +Icons.Redo = \u91CD\u505A !icons -Icons.Undo = \u64a4\u9500 +Icons.Undo = \u64A4\u9500 -IgnitionSelectionDialog.opt.default = \u6839\u636e\u9ed8\u8ba4\u70b9\u706b\u4e8b\u4ef6\u66f4\u65b0\u6240\u6709\u914d\u7f6e -IgnitionSelectionDialog.opt.override = \u4ec5\u66f4\u65b0 {0} \u98de\u884c\u914d\u7f6e -IgnitionSelectionDialog.opt.title = \u53d7\u5230\u5f71\u54cd\u7684\u98de\u884c\u914d\u7f6e: +IgnitionSelectionDialog.opt.default = \u6839\u636E\u9ED8\u8BA4\u70B9\u706B\u4E8B\u4EF6\u66F4\u65B0\u6240\u6709\u914D\u7F6E +IgnitionSelectionDialog.opt.override = \u4EC5\u66F4\u65B0 {0} \u98DE\u884C\u914D\u7F6E +IgnitionSelectionDialog.opt.title = \u53D7\u5230\u5F71\u54CD\u7684\u98DE\u884C\u914D\u7F6E: !InnerTube -InnerTube.InnerTube = \u5185\u7ba1 +InnerTube.InnerTube = \u5185\u7BA1 -InnerTubeCfg.but.Resetsettings = \u91cd\u7f6e\u8bbe\u7f6e -InnerTubeCfg.but.Splitcluster = \u62c6\u5206\u7c07 -InnerTubeCfg.but.ttip.Resetsettings = \u64a4\u9500\u62c6\u5206,\u65cb\u8f6c,\u6062\u590d\u5230\u6700\u521d\u503c -InnerTubeCfg.lbl.Rotangle = \u8bbe\u7f6e\u7c07\u7684\u65cb\u5ea6\u89d2 -InnerTubeCfg.lbl.Rotation = \u65cb\u5ea6: -InnerTubeCfg.lbl.Selectclustercfg = \u9009\u62e9\u7c07\u8bbe\u7f6e: -InnerTubeCfg.lbl.TubeSep = \u7bad\u4f53\u5206\u6bb5: -InnerTubeCfg.lbl.longA1 = \u5c06\u7c07\u62c6\u5206\u6210\u4e0d\u540c\u7684\u7ec4\u4ef6.
-InnerTubeCfg.lbl.longA2 = \u5e76\u4f1a\u590d\u5236\u5185\u7ba1\u7684\u5168\u90e8\u90e8\u4ef6. -InnerTubeCfg.lbl.ttip.Rotation = \u8bbe\u7f6e\u7c07\u7684\u65cb\u5ea6\u89d2 -InnerTubeCfg.lbl.ttip.TubeSep = \u8bbe\u7f6e\u7bad\u4f53\u5206\u6bb5, 1.0 = \u7d27\u90bb -InnerTubeCfg.tab.Cluster = \u7c07 +InnerTubeCfg.but.Resetsettings = \u91CD\u7F6E\u8BBE\u7F6E +InnerTubeCfg.but.Splitcluster = \u62C6\u5206\u7C07 +InnerTubeCfg.but.ttip.Resetsettings = \u64A4\u9500\u62C6\u5206\u65CB\u8F6C\u5230\u6700\u521D\u503C +InnerTubeCfg.lbl.Rotangle = \u8BBE\u7F6E\u7C07\u7684\u65CB\u5EA6\u89D2 +InnerTubeCfg.lbl.Rotation = \u65CB\u5EA6: +InnerTubeCfg.lbl.Selectclustercfg = \u9009\u62E9\u7C07\u8BBE\u7F6E: +InnerTubeCfg.lbl.TubeSep = \u7BAD\u4F53\u5206\u6BB5: +InnerTubeCfg.lbl.longA1 = \u5C06\u7C07\u62C6\u5206\u6210\u4E0D\u540C\u7684\u7EC4\u4EF6.
+InnerTubeCfg.lbl.longA2 = \u4E5F\u4F1A\u5236\u5185\u7BA1\u7684\u5168\u90E8\u90E8\u4EF6. +InnerTubeCfg.lbl.ttip.Rotation = \u8BBE\u7F6E\u7C07\u7684\u65CB\u5EA6\u89D2 +InnerTubeCfg.lbl.ttip.TubeSep = \u8BBE\u7F6E\u7BAD\u4F53\u5206\u6BB5, 1.0 = \u7D27\u90BB +InnerTubeCfg.tab.Cluster = \u7C07 !InnerTubeConfig -InnerTubeCfg.tab.Motor = \u53d1\u52a8\u673a -InnerTubeCfg.tab.Radialpos = \u5f84\u5411\u4f4d\u7f6e -InnerTubeCfg.tab.ttip.Cluster = \u7c07\u8bbe\u7f6e -InnerTubeCfg.tab.ttip.Motor = \u53d1\u52a8\u673a\u5ea7\u8bbe\u7f6e -InnerTubeCfg.tab.ttip.Radialpos = \u5f84\u5411\u4f4d\u7f6e +InnerTubeCfg.tab.Motor = \u53D1\u52A8\u673A +InnerTubeCfg.tab.Radialpos = \u5F84\u5411\u4F4D\u7F6E +InnerTubeCfg.tab.ttip.Cluster = \u7C07\u8BBE\u7F6E +InnerTubeCfg.tab.ttip.Motor = \u53D1\u52A8\u673A\u5EA7\u8BBE\u7F6E +InnerTubeCfg.tab.ttip.Radialpos = \u5F84\u5411\u4F4D\u7F6E -LandingDistanceParameter.name = \u843d\u5730\u8ddd\u79bb +LandingDistanceParameter.name = \u843D\u5730\u8DDD\u79BB ! LaunchLug -LaunchLug.Launchlug = \u53d1\u5c04\u8854\u5957 +LaunchLug.Launchlug = \u53D1\u5C04\u8854\u5957 -LaunchLugCfg.lbl.Innerdiam = \u5185\u76f4\u5f84: +LaunchLugCfg.lbl.Innerdiam = \u5185\u76F4\u5F84: ! LaunchLugConfig -LaunchLugCfg.lbl.Length = \u957f\u5ea6: -LaunchLugCfg.lbl.Outerdiam = \u5916\u76f4\u5f84: -LaunchLugCfg.lbl.Posrelativeto = \u76f8\u5bf9\u4f4d\u7f6e: -LaunchLugCfg.lbl.Radialpos = \u5f84\u5411\u4f4d\u7f6e: -LaunchLugCfg.lbl.Thickness = \u539a\u5ea6: -LaunchLugCfg.lbl.plus = \u52a0 -LaunchLugCfg.tab.General = \u5e38\u89c4 -LaunchLugCfg.tab.Generalprop = \u5e38\u89c4\u5c5e\u6027 +LaunchLugCfg.lbl.Length = \u957F\u5EA6: +LaunchLugCfg.lbl.Outerdiam = \u5916\u76F4\u5F84: +LaunchLugCfg.lbl.Posrelativeto = \u76F8\u5BF9\u4F4D\u7F6E: +LaunchLugCfg.lbl.Radialpos = \u5F84\u5411\u4F4D\u7F6E: +LaunchLugCfg.lbl.Thickness = \u539A\u5EA6: +LaunchLugCfg.lbl.plus = \u52A0 +LaunchLugCfg.tab.General = \u5E38\u89C4 +LaunchLugCfg.tab.Generalprop = \u5E38\u89C4\u5C5E\u6027 -LineStyle.Dash-dotted = \u70b9\u5212\u7ebf -LineStyle.Dashed = \u865a\u7ebf -LineStyle.Defaultstyle = \u9ed8\u8ba4\u6837\u5f0f -LineStyle.Dotted = \u70b9\u865a\u7ebf +LineStyle.Dash-dotted = \u70B9\u5212\u7EBF +LineStyle.Dashed = \u865A\u7EBF +LineStyle.Defaultstyle = \u9ED8\u8BA4\u6837\u5F0F +LineStyle.Dotted = \u70B9\u865A\u7EBF ! LineStyle -LineStyle.Solid = \u5b9e\u7ebf +LineStyle.Solid = \u5B9E\u7EBF !MassComponent -MassComponent.MassComponent = \u8d28\u91cf\u7ec4\u4ef6 +MassComponent.MassComponent = \u8D28\u91CF\u7EC4\u4EF6 -MassComponentCfg.but.Reset = \u91cd\u7f6e -MassComponentCfg.lbl.Density = \u8fd1\u4f3c\u5bc6\u5ea6: -MassComponentCfg.lbl.Diameter = \u76f4\u5f84: -MassComponentCfg.lbl.Length = \u957f\u5ea6: +MassComponentCfg.but.Reset = \u91CD\u7F6E +MassComponentCfg.lbl.Density = \u8FD1\u4F3C\u5BC6\u5EA6: +MassComponentCfg.lbl.Diameter = \u76F4\u5F84: +MassComponentCfg.lbl.Length = \u957F\u5EA6: ! MassComponentConfig -MassComponentCfg.lbl.Mass = \u8d28\u91cf: -MassComponentCfg.lbl.PosRelativeto = \u76f8\u5bf9\u4f4d\u7f6e: -MassComponentCfg.lbl.Radialdirection = \u5f84\u5411\u65b9\u5411: -MassComponentCfg.lbl.Radialdistance = \u5f84\u5411\u8ddd\u79bb: -MassComponentCfg.lbl.plus = \u52a0 -MassComponentCfg.tab.General = \u5e38\u89c4 -MassComponentCfg.tab.Radialpos = \u5f84\u5411\u4f4d\u7f6e -MassComponentCfg.tab.ttip.General = \u5e38\u89c4\u5c5e\u6027 -MassComponentCfg.tab.ttip.Radialpos = \u5f84\u5411\u4f4d\u7f6e\u8bbe\u7f6e +MassComponentCfg.lbl.Mass = \u8D28\u91CF: +MassComponentCfg.lbl.PosRelativeto = \u76F8\u5BF9\u4F4D\u7F6E: +MassComponentCfg.lbl.Radialdirection = \u5F84\u5411\u65B9\u5411: +MassComponentCfg.lbl.Radialdistance = \u5F84\u5411\u8DDD\u79BB: +MassComponentCfg.lbl.plus = \u52A0 +MassComponentCfg.tab.General = \u5E38\u89C4 +MassComponentCfg.tab.Radialpos = \u5F84\u5411\u4F4D\u7F6E +MassComponentCfg.tab.ttip.General = \u5E38\u89C4\u5C5E\u6027 +MassComponentCfg.tab.ttip.Radialpos = \u5F84\u5411\u4F4D\u7F6E\u8BBE\u7F6E ! database ! Translate here all material database ! -Material.CUSTOM = \u81ea\u5b9a\u4e49 +Material.CUSTOM = \u81EA\u5B9A\u4E49 -MaterialModel.title.Defcustmat = \u8bbe\u7f6e\u81ea\u5b9a\u4e49\u6750\u6599 +MaterialModel.title.Defcustmat = \u8BBE\u7F6E\u81EA\u5B9A\u4E49\u6750\u6599 !MaterialModel MaterialModel.title.Material = \u6750\u6599 -MaximumAccelerationParameter.name = \u6700\u5927\u52a0\u901f\u5ea6 +MaximumAccelerationParameter.name = \u6700\u5927\u52A0\u901F\u5EA6 ! Optimization parameters -MaximumAltitudeParameter.name = \u6700\u9ad8\u70b9\u9ad8\u5ea6 +MaximumAltitudeParameter.name = \u6700\u9AD8\u70B9\u9AD8\u5EA6 -MaximumVelocityParameter.name = \u6700\u5927\u901f\u5ea6 +MaximumVelocityParameter.name = \u6700\u5927\u901F\u5EA6 -MotorCfg.but.FlightcfgEdit = \u7f16\u8f91 -MotorCfg.but.New = \u65b0\u5efa -MotorCfg.but.Removemotor = \u79fb\u9664\u53d1\u52a8\u673a -MotorCfg.but.Selectmotor = \u9009\u62e9\u53d1\u52a8\u673a +MotorCfg.but.FlightcfgEdit = \u7F16\u8F91 +MotorCfg.but.New = \u65B0\u5EFA +MotorCfg.but.Removemotor = \u79FB\u9664\u53D1\u52A8\u673A +MotorCfg.but.Selectmotor = \u9009\u62E9\u53D1\u52A8\u673A ! MotorConfig -MotorCfg.checkbox.compmotormount = \u8be5\u7ec4\u4ef6\u4e3a\u53d1\u52a8\u673a\u5ea7 -MotorCfg.lbl.Currentmotor = \u5f53\u524d\u53d1\u52a8\u673a: -MotorCfg.lbl.Flightcfg = \u98de\u884c\u914d\u7f6e: -MotorCfg.lbl.Ignitionat = \u70b9\u706b\u65f6\u523b: -MotorCfg.lbl.Motoroverhang = \u53d1\u52a8\u673a\u7a81\u51fa: -MotorCfg.lbl.longA1 = \u5f53\u524d\u8bbe\u8ba1\u7a3f\u4e3a\u5355\u7ea7\u706b\u7bad. -MotorCfg.lbl.longA2 = \u70b9\u51fb"\u65b0\u5efa\u7ea7"\u5efa\u7acb\u65b0\u7684\u706b\u7bad\u7ea7. -MotorCfg.lbl.longB1 = \u5f53\u524d\u8bbe\u8ba1\u7a3f\u6709 -MotorCfg.lbl.longB2 = \u4e2a\u706b\u7bad\u7ea7. -MotorCfg.lbl.motorLabel = \u65e0 -MotorCfg.lbl.plus = \u52a0 -MotorCfg.lbl.seconds = \u79d2 +MotorCfg.checkbox.compmotormount = \u8BE5\u7EC4\u4EF6\u4E3A\u53D1\u52A8\u673A\u5EA7 +MotorCfg.lbl.Currentmotor = \u5F53\u524D\u53D1\u52A8\u673A: +MotorCfg.lbl.Flightcfg = \u98DE\u884C\u914D\u7F6E: +MotorCfg.lbl.Ignitionat = \u70B9\u706B\u65F6\u523B: +MotorCfg.lbl.Motoroverhang = \u53D1\u52A8\u673A\u7A81\u51FA: +MotorCfg.lbl.longA1 = \u5F53\u524D\u8BBE\u8BA1\u7A3F\u4E3A\u5355\u7EA7\u706B\u7BAD. +MotorCfg.lbl.longA2 = \u70B9\u51FB"\u65B0\u5EFA\u7EA7"\u5EFA\u7ACB\u65B0\u7684\u706B\u7BAD\u7EA7. +MotorCfg.lbl.longB1 = \u5F53\u524D\u8BBE\u8BA1\u7A3F\u6709 +MotorCfg.lbl.longB2 = \u4E2A\u706B\u7BAD\u7EA7. +MotorCfg.lbl.motorLabel = \u65E0 +MotorCfg.lbl.plus = \u52A0 +MotorCfg.lbl.seconds = \u79D2 ! MotorChooserDialog -MotorChooserDialog.title = \u9009\u62e9\u706b\u7bad\u53d1\u52a8\u673a +MotorChooserDialog.title = \u9009\u62E9\u706B\u7BAD\u53D1\u52A8\u673A -MotorConfigurationPanel.btn.removeMotor = \u79fb\u9664\u53d1\u52a8\u673a -MotorConfigurationPanel.btn.resetIgnition = \u91cd\u7f6e\u70b9\u706b -MotorConfigurationPanel.btn.selectIgnition = \u9009\u62e9\u70b9\u706b -MotorConfigurationPanel.btn.selectMotor = \u9009\u62e9\u53d1\u52a8\u673a -MotorConfigurationPanel.description = \u9009\u62e9\u53d1\u52a8\u673a\u4ee5\u53ca\u70b9\u706b\u4e8b\u4ef6\u5e94\u7528\u4e0e\u5f53\u524d\u914d\u7f6e.
\u53d1\u52a8\u673a\u5ea7: \u9009\u62e9\u4f5c\u4e3a\u53d1\u52a8\u673a\u5ea7\u7684\u7ec4\u4ef6.
\u53d1\u52a8\u673a\u914d\u7f6e: \u4e3a\u6bcf\u4e00\u4e2a\u53d1\u52a8\u673a\u5ea7\u9009\u62e9\u53d1\u52a8\u673a\u53ca\u70b9\u706b\u4e8b\u4ef6. -MotorConfigurationPanel.lbl.motorConfiguration = \u53d1\u52a8\u673a\u914d\u7f6e: -MotorConfigurationPanel.lbl.motorMounts = \u53d1\u52a8\u673a\u5ea7: +MotorConfigurationPanel.btn.removeMotor = \u79FB\u9664\u53D1\u52A8\u673A +MotorConfigurationPanel.btn.resetIgnition = \u91CD\u7F6E\u70B9\u706B +MotorConfigurationPanel.btn.selectIgnition = \u9009\u62E9\u70B9\u706B +MotorConfigurationPanel.btn.selectMotor = \u9009\u62E9\u53D1\u52A8\u673A +MotorConfigurationPanel.description = \u9009\u62E9\u53D1\u52A8\u673A\u4EE5\u53CA\u70B9\u706B\u4E8B\u4EF6\u5E94\u7528\u4E0E\u5F53\u524D\u914D\u7F6E.
\u53D1\u52A8\u673A\u5EA7: \u9009\u62E9\u4F5C\u4E3A\u53D1\u52A8\u673A\u5EA7\u7684\u7EC4\u4EF6.
\u53D1\u52A8\u673A\u914D\u7F6E: \u4E3A\u6BCF\u4E00\u4E2A\u53D1\u52A8\u673A\u5EA7\u9009\u62E9\u53D1\u52A8\u673A\u53CA\u70B9\u706B\u4E8B\u4EF6. +MotorConfigurationPanel.lbl.motorConfiguration = \u53D1\u52A8\u673A\u914D\u7F6E: +MotorConfigurationPanel.lbl.motorMounts = \u53D1\u52A8\u673A\u5EA7: +MotorConfigurationPanel.lbl.nomotors = \u65E0\u53D1\u52A8\u673A\u5EA7.\u8BF7\u5148\u5728\u5DE6\u4FA7\u9009\u62E9\u7BAD\u4F53\u4F5C\u4E3A\u53D1\u52A8\u673A\u5EA7. -MotorConfigurationTableModel.table.ignition.default = \u9ed8\u8ba4 ({0}) +MotorConfigurationTableModel.table.ignition.default = \u9ED8\u8BA4 ({0}) -MotorDbLoadDlg.Loadingmotors = \u6b63\u5728\u8bfb\u53d6\u53d1\u52a8\u673a\u6570\u636e... +MotorDbLoadDlg.Loadingmotors = \u6B63\u5728\u8BFB\u53D6\u53D1\u52A8\u673A\u6570\u636E... ! MotorDatabaseLoadingDialog -MotorDbLoadDlg.title = \u8bfb\u53d6\u53d1\u52a8\u673a\u6570\u636e +MotorDbLoadDlg.title = \u8BFB\u53D6\u53D1\u52A8\u673A\u6570\u636E -MotorDescriptionSubstitutor.description = \u914d\u7f6e\u9009\u9879\u4e2d\u7684\u53d1\u52a8\u673a +MotorDescriptionSubstitutor.description = \u914D\u7F6E\u9009\u9879\u4E2D\u7684\u53D1\u52A8\u673A !MotorMount -MotorMount.IgnitionEvent.AUTOMATIC = \u81ea\u52a8 (\u53d1\u5c04\u6216\u5f39\u5c04) -MotorMount.IgnitionEvent.BURNOUT = \u524d\u7ea7\u7b2c\u4e00\u6b21\u71c3\u5c3d -MotorMount.IgnitionEvent.EJECTION_CHARGE = \u524d\u7ea7\u7b2c\u4e00\u6b21\u5f39\u5c04 -MotorMount.IgnitionEvent.LAUNCH = \u53d1\u5c04 -MotorMount.IgnitionEvent.NEVER = \u4ece\u4e0d -MotorMount.IgnitionEvent.short.AUTOMATIC = \u81ea\u52a8 -MotorMount.IgnitionEvent.short.BURNOUT = \u70e7\u5c3d -MotorMount.IgnitionEvent.short.EJECTION_CHARGE = \u5f39\u5c04 -MotorMount.IgnitionEvent.short.LAUNCH = \u53d1\u5c04 -MotorMount.IgnitionEvent.short.NEVER = \u4ece\u4e0d +MotorMount.IgnitionEvent.AUTOMATIC = \u81EA\u52A8 (\u53D1\u5C04\u6216\u5F39\u5C04) +MotorMount.IgnitionEvent.BURNOUT = \u524D\u7EA7\u7B2C\u4E00\u6B21\u71C3\u5C3D +MotorMount.IgnitionEvent.EJECTION_CHARGE = \u524D\u7EA7\u7B2C\u4E00\u6B21\u5F39\u5C04 +MotorMount.IgnitionEvent.LAUNCH = \u53D1\u5C04 +MotorMount.IgnitionEvent.NEVER = \u4ECE\u4E0D +MotorMount.IgnitionEvent.short.AUTOMATIC = \u81EA\u52A8 +MotorMount.IgnitionEvent.short.BURNOUT = \u70E7\u5C3D +MotorMount.IgnitionEvent.short.EJECTION_CHARGE = \u5F39\u5C04 +MotorMount.IgnitionEvent.short.LAUNCH = \u53D1\u5C04 +MotorMount.IgnitionEvent.short.NEVER = \u4ECE\u4E0D -MotorPlot.Chart.Motorthrustcurve = \u53d1\u52a8\u673a\u63a8\u529b\u66f2\u7ebf -MotorPlot.Chart.Thrust = \u63a8\u529b / N -MotorPlot.Chart.Time = \u65f6\u95f4 / s -MotorPlot.but.Select = \u9009\u62e9 +MotorPlot.Chart.Motorthrustcurve = \u53D1\u52A8\u673A\u63A8\u529B\u66F2\u7EBF +MotorPlot.Chart.Thrust = \u63A8\u529B / N +MotorPlot.Chart.Time = \u65F6\u95F4 / s +MotorPlot.but.Select = \u9009\u62E9 ! MotorPlot -MotorPlot.title.Motorplot = \u53d1\u52a8\u673a\u56fe\u8868 -MotorPlot.txt.Comment = \u6ce8\u91ca:\n -MotorPlot.txt.Delays = \u5ef6\u65f6: -MotorPlot.txt.Designation = \u578b\u53f7: +MotorPlot.title.Motorplot = \u53D1\u52A8\u673A\u56FE\u8868 +MotorPlot.txt.Comment = \u6CE8\u91CA:\n +MotorPlot.txt.Delays = \u5EF6\u65F6: +MotorPlot.txt.Designation = \u578B\u53F7: MotorPlot.txt.Manufacturer = \u5236\u9020\u5546: -MotorPlot.txt.Type = \u7c7b\u522b: +MotorPlot.txt.Type = \u7C7B\u522B: ! NoseCone NoseCone.NoseCone = \u5934\u9525 -NoseConeCfg.checkbox.Automatic = \u81ea\u52a8 -NoseConeCfg.checkbox.Filled = \u5b9e\u5fc3 -NoseConeCfg.lbl.Basediam = \u5e95\u5ea7\u76f4\u5f84: -NoseConeCfg.lbl.Noseconelength = \u5934\u9525\u957f\u5ea6: +NoseConeCfg.checkbox.Automatic = \u81EA\u52A8 +NoseConeCfg.checkbox.Filled = \u5B9E\u5FC3 +NoseConeCfg.lbl.Basediam = \u5E95\u5EA7\u76F4\u5F84: +NoseConeCfg.lbl.Noseconelength = \u5934\u9525\u957F\u5EA6: ! NoseConeConfig -NoseConeCfg.lbl.Noseconeshape = \u5934\u9525\u5916\u5f62: -NoseConeCfg.lbl.Shapeparam = \u5916\u5f62\u53c2\u6570: -NoseConeCfg.lbl.Wallthickness = \u58c1\u539a: -NoseConeCfg.tab.General = \u5e38\u89c4 -NoseConeCfg.tab.Shoulder = \u8fde\u63a5\u5904 -NoseConeCfg.tab.ttip.General = \u5e38\u89c4\u5c5e\u6027 -NoseConeCfg.tab.ttip.Shoulder = \u8fde\u63a5\u5904\u5c5e\u6027 +NoseConeCfg.lbl.Noseconeshape = \u5934\u9525\u5916\u5F62: +NoseConeCfg.lbl.Shapeparam = \u5916\u5F62\u53C2\u6570: +NoseConeCfg.lbl.Wallthickness = \u58C1\u539A: +NoseConeCfg.tab.General = \u5E38\u89C4 +NoseConeCfg.tab.Shoulder = \u8FDE\u63A5\u5904 +NoseConeCfg.tab.ttip.General = \u5E38\u89C4\u5C5E\u6027 +NoseConeCfg.tab.ttip.Shoulder = \u8FDE\u63A5\u5904\u5C5E\u6027 -OpenRocketDocument.Redo = \u64a4\u9500 -OpenRocketDocument.Undo = \u91cd\u505a +OpenRocketDocument.Redo = \u64A4\u9500 +OpenRocketDocument.Undo = \u91CD\u505A -OpenRocketPrintable.Centeringringtemplates = \u4e2d\u5fc3\u73af\u6a21\u677f -OpenRocketPrintable.DesignReport = \u8bbe\u8ba1\u62a5\u544a -OpenRocketPrintable.Finmarkingguide = \u5c3e\u7ffc\u5236\u4f5c\u5411\u5bfc -OpenRocketPrintable.Fintemplates = \u5c3e\u7ffc\u6a21\u677f -OpenRocketPrintable.Noseconetemplates = \u5934\u9525\u6a21\u677f -OpenRocketPrintable.Partsdetail = \u90e8\u4ef6\u4fe1\u606f -OpenRocketPrintable.Transitiontemplates = \u7ea7\u95f4\u6bb5\u6a21\u677f +OpenRocketPrintable.Centeringringtemplates = \u4E2D\u5FC3\u73AF\u6A21\u677F +OpenRocketPrintable.DesignReport = \u8BBE\u8BA1\u62A5\u544A +OpenRocketPrintable.Finmarkingguide = \u5C3E\u7FFC\u5236\u4F5C\u5411\u5BFC +OpenRocketPrintable.Fintemplates = \u5C3E\u7FFC\u6A21\u677F +OpenRocketPrintable.Noseconetemplates = \u5934\u9525\u6A21\u677F +OpenRocketPrintable.Partsdetail = \u90E8\u4EF6\u4FE1\u606F +OpenRocketPrintable.Transitiontemplates = \u7EA7\u95F4\u6BB5\u6A21\u677F -Operator.abs = \u7edd\u5bf9\u503c -Operator.acos = \u53cd\u4f59\u5f26 ArcCos -Operator.asin = \u53cd\u6b63\u5f26 ArcSin -Operator.atan = \u53cd\u6b63\u5207 ArcTan -Operator.binf = \u7ed9\u51fa\u6570\u503c(\u53c2\u65701)\u76f8\u5bf9\u4e8e\u4e0b\u754c(\u53c2\u65702)\u548c\u4e0a\u754c(\u53c2\u65703)\u7684\u6bd4\u4f8b -Operator.cbrt = \u7acb\u65b9\u6839 -Operator.ceil = \u5411\u4e0a\u53d6\u6574 -Operator.cos = \u4f59\u5f26 Cos +Operator.abs = \u7EDD\u5BF9\u503C +Operator.acos = \u53CD\u4F59\u5F26 ArcCos +Operator.asin = \u53CD\u6B63\u5F26 ArcSin +Operator.atan = \u53CD\u6B63\u5207 ArcTan +Operator.binf = \u7ED9\u51FA\u6570\u503C(\u53C2\u65701)\u76F8\u5BF9\u4E8E\u4E0B\u754C(\u53C2\u65702)\u548C\u4E0A\u754C(\u53C2\u65703)\u7684\u6BD4\u4F8B +Operator.cbrt = \u7ACB\u65B9\u6839 +Operator.ceil = \u5411\u4E0A\u53D6\u6574 +Operator.cos = \u4F59\u5F26 Cos Operator.div = \u9664 -Operator.exp = \u6307\u6570\u51fd\u6570 (e^x) -Operator.expm1 = \u548c exp(x)-1 \u4e00\u6837, \u4f46\u5bf9\u4e8e\u8f83\u5c0f\u7684\u6570\u5b57x\u66f4\u7cbe\u786e -Operator.floor = \u5411\u4e0b\u53d6\u6574 -Operator.hcos = \u53cc\u66f2\u4f59\u5f26 Cosh -Operator.hsin = \u53cc\u66f2\u6b63\u5f26 Sinh -Operator.htan = \u53cc\u66f2\u6b63\u5207 Tanh -Operator.lclip = \u9650\u5236\u6570\u503c(\u53c2\u65701)\u4e0d\u5c0f\u4e8e\u53e6\u4e00\u4e2a\u6570\u503c(\u53c2\u65702) -Operator.ln = \u81ea\u7136\u5bf9\u6570 -Operator.log10 = \u5e38\u7528\u5bf9\u6570 (\u5e95\u6570\u4e3a10) -Operator.max = \u53d6\u6700\u5927\u503c -Operator.mean = \u7b97\u672f\u5e73\u5747\u6570 -Operator.min = \u53d6\u6700\u5c0f\u503c -Operator.minus = \u51cf -Operator.mod = \u6a21 +Operator.exp = \u6307\u6570\u51FD\u6570 (e^x) +Operator.expm1 = \u548C exp(x)-1 \u4E00\u6837, \u4F46\u5BF9\u4E8E\u8F83\u5C0F\u7684\u6570\u5B57x\u66F4\u7CBE\u786E +Operator.floor = \u5411\u4E0B\u53D6\u6574 +Operator.hcos = \u53CC\u66F2\u4F59\u5F26 Cosh +Operator.hsin = \u53CC\u66F2\u6B63\u5F26 Sinh +Operator.htan = \u53CC\u66F2\u6B63\u5207 Tanh +Operator.lclip = \u9650\u5236\u6570\u503C(\u53C2\u65701)\u4E0D\u5C0F\u4E8E\u53E6\u4E00\u4E2A\u6570\u503C(\u53C2\u65702) +Operator.ln = \u81EA\u7136\u5BF9\u6570 +Operator.log10 = \u5E38\u7528\u5BF9\u6570 (\u5E95\u6570\u4E3A10) +Operator.max = \u53D6\u6700\u5927\u503C +Operator.mean = \u7B97\u672F\u5E73\u5747\u6570 +Operator.min = \u53D6\u6700\u5C0F\u503C +Operator.minus = \u51CF +Operator.mod = \u6A21 ! Operators -Operator.plus = \u52a0 +Operator.plus = \u52A0 Operator.pow = \u6307\u6570 -Operator.random = \u4ea7\u751f\u4e00\u4e2a\u4ecb\u4e8e0\u5230\u8bbe\u5b9a\u503c\u4e4b\u95f4\u7684\u968f\u673a\u6570 -Operator.rms = \u5747\u65b9\u6839 -Operator.round = \u56db\u820d\u4e94\u5165 -Operator.sin = \u6b63\u5f26 Sin -Operator.sqrt = \u5e73\u65b9\u6839 -Operator.star = \u4e58 -Operator.stdev = \u6807\u51c6\u5dee -Operator.tan = \u6b63\u5207 Tan -Operator.tnear = \u7ed9\u51fa\u6570\u636e\u70b9(\u53c2\u65701)\u6700\u63a5\u8fd1\u6570\u503c(\u53c2\u65702)\u7684\u65f6\u95f4 -Operator.trapz = \u5bf9\u4e8e\u7ed9\u5b9a\u8303\u56f4\u4f7f\u7528\u68af\u5f62\u79ef\u5206 -Operator.uclip = \u9650\u5236\u6570\u503c(\u53c2\u65701)\u4e0d\u5927\u4e8e\u53e6\u4e00\u4e2a\u6570\u503c(\u53c2\u65702) -Operator.var = \u65b9\u5dee +Operator.random = \u4EA7\u751F\u4E00\u4E2A\u4ECB\u4E8E0\u5230\u8BBE\u5B9A\u503C\u4E4B\u95F4\u7684\u968F\u673A\u6570 +Operator.rms = \u5747\u65B9\u6839 +Operator.round = \u56DB\u820D\u4E94\u5165 +Operator.sin = \u6B63\u5F26 Sin +Operator.sqrt = \u5E73\u65B9\u6839 +Operator.star = \u4E58 +Operator.stdev = \u6807\u51C6\u5DEE +Operator.tan = \u6B63\u5207 Tan +Operator.tnear = \u7ED9\u51FA\u6570\u636E\u70B9(\u53C2\u65701)\u6700\u63A5\u8FD1\u6570\u503C(\u53C2\u65702)\u7684\u65F6\u95F4 +Operator.trapz = \u5BF9\u4E8E\u7ED9\u5B9A\u8303\u56F4\u4F7F\u7528\u68AF\u5F62\u79EF\u5206 +Operator.uclip = \u9650\u5236\u6570\u503C(\u53C2\u65701)\u4E0D\u5927\u4E8E\u53E6\u4E00\u4E2A\u6570\u503C(\u53C2\u65702) +Operator.var = \u65B9\u5DEE -OptimizationPlotDialog.lbl.zoomInstructions = \u70b9\u4e2d\u540c\u65f6\u5411\u53f3\u62d6\u52a8\u653e\u5927, \u5411\u5de6\u62d6\u52a8\u7f29\u5c0f -OptimizationPlotDialog.plot.label.optimum = \u6700\u4f18\u503c -OptimizationPlotDialog.plot.ttip.stability = \u7a33\u5b9a\u6027: -OptimizationPlotDialog.plot1d.series = \u4f18\u5316\u7ed3\u679c -OptimizationPlotDialog.plot1d.title = \u4f18\u5316\u7ed3\u679c -OptimizationPlotDialog.plot2d.evals = \u76ee\u6807\u51fd\u6570\u8ba1\u7b97 -OptimizationPlotDialog.plot2d.path = \u4f18\u5316\u8def\u5f84 -OptimizationPlotDialog.plot2d.title = \u4f18\u5316\u8def\u5f84 +OptimizationPlotDialog.lbl.zoomInstructions = \u70B9\u4E2D\u540C\u65F6\u5411\u53F3\u62D6\u52A8\u653E\u5927, \u5411\u5DE6\u62D6\u52A8\u7F29\u5C0F +OptimizationPlotDialog.plot.label.optimum = \u6700\u4F18\u503C +OptimizationPlotDialog.plot.ttip.stability = \u7A33\u5B9A\u6027: +OptimizationPlotDialog.plot1d.series = \u4F18\u5316\u7ED3\u679C +OptimizationPlotDialog.plot1d.title = \u4F18\u5316\u7ED3\u679C +OptimizationPlotDialog.plot2d.evals = \u76EE\u6807\u51FD\u6570\u8BA1\u7B97 +OptimizationPlotDialog.plot2d.path = \u4F18\u5316\u8DEF\u5F84 +OptimizationPlotDialog.plot2d.title = \u4F18\u5316\u8DEF\u5F84 ! Dialog for plotting optimization results -OptimizationPlotDialog.title = \u4f18\u5316\u7ed3\u679c +OptimizationPlotDialog.title = \u4F18\u5316\u7ED3\u679C ! Parachute -Parachute.Parachute = \u964d\u843d\u4f1e +Parachute.Parachute = \u964D\u843D\u4F1E -ParachuteCfg.but.Reset = \u91cd\u7f6e -ParachuteCfg.combo.MaterialModel = \u6750\u6599\u4f1a\u5f71\u54cd\u7ec4\u4ef6\u91cd\u91cf. -ParachuteCfg.lbl.Altitude = \u9ad8\u5ea6: +ParachuteCfg.but.Reset = \u91CD\u7F6E +ParachuteCfg.combo.MaterialModel = \u6750\u6599\u4F1A\u5F71\u54CD\u7EC4\u4EF6\u91CD\u91CF. +ParachuteCfg.lbl.Altitude = \u9AD8\u5EA6: ! ParachuteConfig -ParachuteCfg.lbl.Canopy = \u4f1e\u8863: -ParachuteCfg.lbl.Deploysat = \u5c55\u5f00\u65f6\u673a: -ParachuteCfg.lbl.Diameter = \u76f4\u5f84: -ParachuteCfg.lbl.Linelength = \u957f\u5ea6: +ParachuteCfg.lbl.Canopy = \u4F1E\u8863: +ParachuteCfg.lbl.Deploysat = \u5C55\u5F00\u65F6\u673A: +ParachuteCfg.lbl.Diameter = \u76F4\u5F84: +ParachuteCfg.lbl.Linelength = \u957F\u5EA6: ParachuteCfg.lbl.Material = \u6750\u6599: -ParachuteCfg.lbl.Numberoflines = \u540a\u7d22\u6570\u91cf: -ParachuteCfg.lbl.Packeddiam = \u4f1e\u5305\u76f4\u5f84: -ParachuteCfg.lbl.Packedlength = \u4f1e\u5305\u957f\u5ea6: -ParachuteCfg.lbl.Posrelativeto = \u76f8\u5bf9\u4f4d\u7f6e: -ParachuteCfg.lbl.Radialdirection = \u5f84\u5411\u65b9\u5411: -ParachuteCfg.lbl.Radialdistance = \u5f84\u5411\u8ddd\u79bb: -ParachuteCfg.lbl.Shroudlines = \u540a\u7d22: -ParachuteCfg.lbl.longA1 = \u963b\u529b\u7cfb\u6570 CD: -ParachuteCfg.lbl.longB1 = \u963b\u529b\u7cfb\u6570\u7531\u964d\u843d\u4f1e\u9762\u79ef\u51b3\u5b9a.
-ParachuteCfg.lbl.longB2 = \u9ad8\u963b\u529b\u7cfb\u6570\u80fd\u653e\u7f13\u4e0b\u964d\u901f\u7387. -ParachuteCfg.lbl.longB3 = \u964d\u843d\u4f1e\u7684\u963b\u529b\u7cfb\u6570\u901a\u5e38\u4e3a0.8. -ParachuteCfg.lbl.plus = \u52a0 -ParachuteCfg.lbl.plusdelay = \u52a0 -ParachuteCfg.lbl.seconds = \u79d2 -ParachuteCfg.tab.General = \u5e38\u89c4 -ParachuteCfg.tab.Radialpos = \u5f84\u5411\u4f4d\u7f6e -ParachuteCfg.tab.ttip.General = \u5e38\u89c4\u5c5e\u6027 -ParachuteCfg.tab.ttip.Radialpos = \u5f84\u5411\u4f4d\u7f6e\u8bbe\u7f6e +ParachuteCfg.lbl.Numberoflines = \u540A\u7D22\u6570\u91CF: +ParachuteCfg.lbl.Packeddiam = \u4F1E\u5305\u76F4\u5F84: +ParachuteCfg.lbl.Packedlength = \u4F1E\u5305\u957F\u5EA6: +ParachuteCfg.lbl.Posrelativeto = \u76F8\u5BF9\u4F4D\u7F6E: +ParachuteCfg.lbl.Radialdirection = \u5F84\u5411\u65B9\u5411: +ParachuteCfg.lbl.Radialdistance = \u5F84\u5411\u8DDD\u79BB: +ParachuteCfg.lbl.Shroudlines = \u540A\u7D22: +ParachuteCfg.lbl.longA1 = \u963B\u529B\u7CFB\u6570 CD: +ParachuteCfg.lbl.longB1 = \u963B\u529B\u7CFB\u6570\u7531\u964D\u843D\u4F1E\u9762\u79EF\u51B3\u5B9A.
+ParachuteCfg.lbl.longB2 = \u9AD8\u963B\u529B\u7CFB\u6570\u80FD\u653E\u7F13\u4E0B\u964D\u901F\u7387. +ParachuteCfg.lbl.longB3 = \u964D\u843D\u4F1E\u7684\u963B\u529B\u7CFB\u6570\u901A\u5E38\u4E3A0.8. +ParachuteCfg.lbl.plus = \u52A0 +ParachuteCfg.lbl.plusdelay = \u52A0 +ParachuteCfg.lbl.seconds = \u79D2 +ParachuteCfg.tab.General = \u5E38\u89C4 +ParachuteCfg.tab.Radialpos = \u5F84\u5411\u4F4D\u7F6E +ParachuteCfg.tab.ttip.General = \u5E38\u89C4\u5C5E\u6027 +ParachuteCfg.tab.ttip.Radialpos = \u5F84\u5411\u4F4D\u7F6E\u8BBE\u7F6E -PlotConfiguration.Angleofattack = \u653b\u89d2\u548c\u65b9\u5411 vs. \u65f6\u95f4 -PlotConfiguration.Dragcoef = \u963b\u529b\u7cfb\u6570 vs. \u9a6c\u8d6b\u6570 -PlotConfiguration.Flightside = \u98de\u884c\u4fa7\u89c6\u5256\u9762 -PlotConfiguration.Rollcharacteristics = \u6eda\u8f6c\u7279\u5f81 -PlotConfiguration.Simulationtime = \u6a21\u62df\u65f6\u95f4\u6b65\u957f vs. \u8ba1\u7b97\u65f6\u95f4 -PlotConfiguration.Stability = \u7a33\u5b9a\u6027 vs. \u65f6\u95f4 -PlotConfiguration.Totalmotion = \u603b\u4f53\u4f4d\u79fb vs. \u65f6\u95f4 +PhotoFrame.desc = \u521B\u5EFA\u706B\u7BAD\u5199\u5B9E3D\u56FE +PhotoFrame.fileFilter.png = PNG\u56FE\u50CF +PhotoFrame.menu.edit.copy = \u590D\u5236\u56FE\u7247 +PhotoFrame.menu.edit.copy.desc = \u590D\u5236\u56FE\u7247\u5230\u526A\u8D34\u677F +PhotoFrame.menu.edit.settings = \u56FE\u50CF\u8BBE\u7F6E +PhotoFrame.menu.file.save = \u4FDD\u5B58\u56FE\u50CF... +PhotoFrame.menu.window = \u7A97\u53E3 +PhotoFrame.menu.window.size = \u5927\u5C0F +PhotoFrame.menu.window.size.portrait = {0} \u76F8\u7247 +PhotoFrame.title = \u7167\u76F8\u9986 + +PhotoSettingsConfig.colorChooser.title = \u9009\u8272\u5668 +PhotoSettingsConfig.tab.effects = \u7279\u6548 +PhotoSettingsConfig.tab.environment = \u73AF\u5883 +PhotoSettingsConfig.tab.orientation = \u65B9\u5411 +PhotoSettingsConfig.title = \u8BBE\u7F6E + +PlotConfiguration.Angleofattack = \u653B\u89D2\u548C\u65B9\u5411 vs. \u65F6\u95F4 +PlotConfiguration.Dragcoef = \u963B\u529B\u7CFB\u6570 vs. \u9A6C\u8D6B\u6570 +PlotConfiguration.Flightside = \u98DE\u884C\u4FA7\u89C6\u5256\u9762 +PlotConfiguration.Rollcharacteristics = \u6EDA\u8F6C\u7279\u5F81 +PlotConfiguration.Simulationtime = \u6A21\u62DF\u65F6\u95F4\u6B65\u957F vs. \u8BA1\u7B97\u65F6\u95F4 +PlotConfiguration.Stability = \u7A33\u5B9A\u6027 vs. \u65F6\u95F4 +PlotConfiguration.Totalmotion = \u603B\u4F53\u4F4D\u79FB vs. \u65F6\u95F4 ! PlotConfiguration -PlotConfiguration.Verticalmotion = \u5782\u76f4\u8fd0\u52a8 vs. \u65f6\u95f4 +PlotConfiguration.Verticalmotion = \u5782\u76F4\u8FD0\u52A8 vs. \u65F6\u95F4 ! PlotDialog -PlotDialog.CheckBox.Showdatapoints = \u663e\u793a\u6570\u636e\u70b9 -PlotDialog.lbl.Chart = \u5de6\u952e\u62d6\u62fd\u79fb\u52a8\u6570\u636e\u533a. \u6eda\u8f6e\u7f29\u653e. ctrl-\u6eda\u8f6e\u4ec5\u7f29\u653eX\u8f74. ctrl-\u5de6\u952e\u62d6\u62fd\u79fb\u52a8\u89c6\u56fe. \u53f3\u952e\u8fc7\u62fd\u8c03\u6574\u663e\u793a\u5927\u5c0f. +PlotDialog.CheckBox.Showdatapoints = \u663E\u793A\u6570\u636E\u70B9 +PlotDialog.lbl.Chart = \u5DE6\u952E\u62D6\u62FD\u79FB\u52A8\u6570\u636E\u533A. \u6EDA\u8F6E\u7F29\u653E. ctrl-\u6EDA\u8F6E\u4EC5\u7F29\u653EX\u8F74. ctrl-\u5DE6\u952E\u62D6\u62FD\u79FB\u52A8\u89C6\u56FE. \u53F3\u952E\u8FC7\u62FD\u8C03\u6574\u663E\u793A\u5927\u5C0F. -PreferencesDialog.languages.default = \u7cfb\u7edf\u9ed8\u8ba4 -PreferencesDialog.lbl.language = \u754c\u9762\u8bed\u8a00: -PreferencesDialog.lbl.languageEffect = \u8bed\u8a00\u8bbe\u7f6e\u5c06\u4f1a\u5728OpenRocket\u4e0b\u6b21\u542f\u52a8\u65f6\u751f\u6548 +PreferencesDialog.languages.default = \u7CFB\u7EDF\u9ED8\u8BA4 +PreferencesDialog.lbl.language = \u754C\u9762\u8BED\u8A00: +PreferencesDialog.lbl.languageEffect = \u8BED\u8A00\u8BBE\u7F6E\u5C06\u5728OpenRocket\u91CD\u542F\u540E\u751F\u6548 -PresetModel.lbl.database = \u4ece\u6570\u636e\u5e93... -PresetModel.lbl.select = \u9009\u62e9\u9884\u8bbe +PresetModel.lbl.database = \u4ECE\u6570\u636E\u5E93... +PresetModel.lbl.select = \u9009\u62E9\u9884\u8BBE -PrintDialog.but.previewAndPrint = \u9884\u89c8 & \u6253\u5370 -PrintDialog.checkbox.showByStage = \u6309\u7ea7\u663e\u793a -PrintDialog.error.preview.desc1 = \u65e0\u6cd5\u6253\u5f00PDF\u9884\u89c8 -PrintDialog.error.preview.desc2 = \u8bf7\u6539\u7528"\u4fdd\u5b58\u4e3aPDF"\u9009\u9879 -PrintDialog.error.preview.title = \u65e0\u6cd5\u6253\u5f00\u9884\u89c8 -PrintDialog.lbl.selectElements = \u9009\u62e9\u4ee5\u4e0b\u5143\u7d20: +PrintDialog.but.previewAndPrint = \u9884\u89C8 & \u6253\u5370 +PrintDialog.checkbox.showByStage = \u6309\u7EA7\u663E\u793A +PrintDialog.error.preview.desc1 = \u65E0\u6CD5\u6253\u5F00PDF\u9884\u89C8 +PrintDialog.error.preview.desc2 = \u8BF7\u6539\u7528"\u4FDD\u5B58\u4E3APDF"\u9009\u9879 +PrintDialog.error.preview.title = \u65E0\u6CD5\u6253\u5F00\u9884\u89C8 +PrintDialog.lbl.selectElements = \u9009\u62E9\u4EE5\u4E0B\u5143\u7D20: ! Print dialog -PrintDialog.title = \u6253\u5370\u6216\u5bfc\u51fa +PrintDialog.title = \u6253\u5370\u6216\u5BFC\u51FA -PrintSettingsDialog.but.Close = \u5173\u95ed -PrintSettingsDialog.but.Reset = \u91cd\u7f6e -PrintSettingsDialog.lbl.Paperorientation = \u6253\u5370\u65b9\u5411: -PrintSettingsDialog.lbl.Papersize = \u7eb8\u5f20\u5927\u5c0f: -PrintSettingsDialog.lbl.Templatebordercolor = \u6a21\u677f\u80cc\u666f\u8272: -PrintSettingsDialog.lbl.Templatefillcolor = \u6a21\u677f\u5b9e\u5fc3\u8272: +PrintSettingsDialog.but.Close = \u5173\u95ED +PrintSettingsDialog.but.Reset = \u91CD\u7F6E +PrintSettingsDialog.lbl.Paperorientation = \u6253\u5370\u65B9\u5411: +PrintSettingsDialog.lbl.Papersize = \u7EB8\u5F20\u5927\u5C0F: +PrintSettingsDialog.lbl.Templatebordercolor = \u6A21\u677F\u80CC\u666F\u8272: +PrintSettingsDialog.lbl.Templatefillcolor = \u6A21\u677F\u5B9E\u5FC3\u8272: !PrintSettingsDialog -PrintSettingsDialog.title = \u6253\u5370\u8bbe\u7f6e +PrintSettingsDialog.title = \u6253\u5370\u8BBE\u7F6E -RK4SimulationStepper.error.valuesTooLarge = \u4eff\u771f\u6570\u503c\u8d85\u51fa\u9650\u5236. \u8bf7\u7f29\u5c0f\u65f6\u95f4\u6b65\u957f. +RK4SimulationStepper.error.valuesTooLarge = \u4EFF\u771F\u6570\u503C\u8D85\u51FA\u9650\u5236. \u8BF7\u7F29\u5C0F\u65F6\u95F4\u6B65\u957F. -RecoveryConfigurationPanel.table.deployment.default = \u9ed8\u8ba4 ({0}) +RecoveryConfigurationPanel.table.deployment.default = \u9ED8\u8BA4 ({0}) -RecoveryDevice.DeployEvent.ALTITUDE = \u6307\u5b9a\u4e0b\u964d\u9ad8\u5ea6 -RecoveryDevice.DeployEvent.APOGEE = \u6700\u9ad8\u70b9 -RecoveryDevice.DeployEvent.CURRENT_STAGE_SEPARATION = \u5f53\u524d\u7ea7\u95f4\u5206\u79bb -RecoveryDevice.DeployEvent.EJECTION = \u672c\u7ea7\u7b2c\u4e00\u6b21\u5f39\u5c04 +RecoveryDevice.DeployEvent.ALTITUDE = \u6307\u5B9A\u4E0B\u964D\u9AD8\u5EA6 +RecoveryDevice.DeployEvent.APOGEE = \u6700\u9AD8\u70B9 +RecoveryDevice.DeployEvent.CURRENT_STAGE_SEPARATION = \u5F53\u524D\u7EA7\u95F4\u5206\u79BB +RecoveryDevice.DeployEvent.EJECTION = \u672C\u7EA7\u7B2C\u4E00\u6B21\u5F39\u5C04 ! RecoveryDevice -RecoveryDevice.DeployEvent.LAUNCH = \u53d1\u5c04 (\u52a0 NN \u79d2) -RecoveryDevice.DeployEvent.LOWER_STAGE_SEPARATION = \u6b21\u7ea7\u7ea7\u95f4\u5206\u79bb -RecoveryDevice.DeployEvent.NEVER = \u4ece\u4e0d -RecoveryDevice.DeployEvent.short.ALTITUDE = \u9ad8\u5ea6 -RecoveryDevice.DeployEvent.short.APOGEE = \u6700\u9ad8\u70b9 -RecoveryDevice.DeployEvent.short.CURRENT_STAGE_SEPARATION = \u5f53\u524d\u7ea7\u95f4\u5206\u79bb -RecoveryDevice.DeployEvent.short.EJECTION = \u5f39\u5c04 -RecoveryDevice.DeployEvent.short.LAUNCH = \u53d1\u5c04 -RecoveryDevice.DeployEvent.short.LOWER_STAGE_SEPARATION = \u6b21\u7ea7\u7ea7\u95f4\u5206\u79bb -RecoveryDevice.DeployEvent.short.NEVER = \u4ece\u4e0d +RecoveryDevice.DeployEvent.LAUNCH = \u53D1\u5C04 (\u52A0 NN \u79D2) +RecoveryDevice.DeployEvent.LOWER_STAGE_SEPARATION = \u6B21\u7EA7\u7EA7\u95F4\u5206\u79BB +RecoveryDevice.DeployEvent.NEVER = \u4ECE\u4E0D +RecoveryDevice.DeployEvent.short.ALTITUDE = \u9AD8\u5EA6 +RecoveryDevice.DeployEvent.short.APOGEE = \u6700\u9AD8\u70B9 +RecoveryDevice.DeployEvent.short.CURRENT_STAGE_SEPARATION = \u5F53\u524D\u7EA7\u95F4\u5206\u79BB +RecoveryDevice.DeployEvent.short.EJECTION = \u5F39\u5C04 +RecoveryDevice.DeployEvent.short.LAUNCH = \u53D1\u5C04 +RecoveryDevice.DeployEvent.short.LOWER_STAGE_SEPARATION = \u6B21\u7EA7\u7EA7\u95F4\u5206\u79BB +RecoveryDevice.DeployEvent.short.NEVER = \u4ECE\u4E0D -RenameConfigDialog.but.reset = \u91cd\u7f6e\u5230\u9ed8\u8ba4\u503c -RenameConfigDialog.lbl.name = \u98de\u884c\u914d\u7f6e\u540d\u79f0: +RenameConfigDialog.but.reset = \u91CD\u7F6E\u5230\u9ED8\u8BA4\u503C +RenameConfigDialog.lbl.name = \u98DE\u884C\u914D\u7F6E\u540D\u79F0: ! Rename FlightConfiguration Dialog -RenameConfigDialog.title = \u91cd\u547d\u540d\u914d\u7f6e +RenameConfigDialog.title = \u91CD\u547D\u540D\u914D\u7F6E -Rocket.compname.Rocket = \u706b\u7bad +Rocket.compname.Rocket = \u706B\u7BAD !Rocket -Rocket.motorCount.Nomotor = [\u65e0\u53d1\u52a8\u673a] -Rocket.motorCount.noStageMotors = [\u65e0\u5206\u7ea7\u53d1\u52a8\u673a] +Rocket.motorCount.Nomotor = [\u65E0\u53D1\u52A8\u673A] +Rocket.motorCount.noStageMotors = [\u65E0\u5206\u7EA7\u53D1\u52A8\u673A] -RocketActions.ActBoosterstage = \u52a9\u63a8\u7ea7 -RocketActions.CopyAct.Copy = \u590d\u5236 -RocketActions.CopyAct.ttip.Copy = \u590d\u5236\u7ec4\u4ef6 (\u53ca\u5b50\u7ec4\u4ef6) \u5230\u526a\u8d34\u677f -RocketActions.CutAction.Cut = \u526a\u5207 -RocketActions.CutAction.ttip.Cut = \u526a\u5207\u7ec4\u4ef6\u6216\u4eff\u771f\u5230\u526a\u5207\u677f\u5e76\u4ece\u8bbe\u8ba1\u4e2d\u79fb\u9664 +RocketActions.ActBoosterstage = \u52A9\u63A8\u7EA7 +RocketActions.CopyAct.Copy = \u590D\u5236 +RocketActions.CopyAct.ttip.Copy = \u590D\u5236\u7EC4\u4EF6 (\u53CA\u5B50\u7EC4\u4EF6) \u5230\u526A\u8D34\u677F +RocketActions.CutAction.Cut = \u526A\u5207 +RocketActions.CutAction.ttip.Cut = \u526A\u5207\u7EC4\u4EF6\u6216\u4EFF\u771F\u5230\u526A\u5207\u677F\u5E76\u4ECE\u8BBE\u8BA1\u4E2D\u79FB\u9664 RocketActions.DelAct.Delete = \u5220\u9664 -RocketActions.DelAct.ttip.Delete = \u5220\u9664\u9009\u5b9a\u90e8\u4ef6\u6216\u4eff\u771f +RocketActions.DelAct.ttip.Delete = \u5220\u9664\u9009\u5B9A\u90E8\u4EF6\u6216\u4EFF\u771F RocketActions.DelCompAct.Delete = \u5220\u9664 -RocketActions.DelCompAct.ttip.Delete = \u5220\u9664\u9009\u5b9a\u7ec4\u4ef6 +RocketActions.DelCompAct.ttip.Delete = \u5220\u9664\u9009\u5B9A\u7EC4\u4EF6 RocketActions.DelSimuAct.Delete = \u5220\u9664 -RocketActions.DelSimuAct.ttip.Delete = \u5220\u9664\u9009\u5b9a\u4eff\u771f -RocketActions.EditAct.Edit = \u7f16\u8f91 -RocketActions.EditAct.ttip.Edit = \u7f16\u8f91\u9009\u4e2d\u7ec4\u4ef6 -RocketActions.MoveDownAct.Movedown = \u5411\u4e0b\u79fb\u52a8 -RocketActions.MoveDownAct.ttip.Movedown = \u5411\u4e0b\u79fb\u52a8\u8be5\u90e8\u4ef6 -RocketActions.MoveUpAct.Moveup = \u5411\u4e0a\u79fb\u52a8 -RocketActions.MoveUpAct.ttip.Moveup = \u5411\u4e0a\u79fb\u52a8\u8be5\u90e8\u4ef6 -RocketActions.NewStageAct.Newstage = \u65b0\u5efa\u4e00\u7ea7 -RocketActions.NewStageAct.ttip.Newstage = \u5728\u8bbe\u8ba1\u4e2d\u65b0\u5efa\u4e00\u7ea7 -RocketActions.PasteAct.Paste = \u7c98\u8d34 -RocketActions.PasteAct.ttip.Paste = \u5c06\u526a\u8d34\u677f\u91cc\u7684\u90e8\u4ef6\u6216\u4eff\u771f\u7c98\u8d34\u5230\u8be5\u8bbe\u8ba1\u4e2d +RocketActions.DelSimuAct.ttip.Delete = \u5220\u9664\u9009\u5B9A\u4EFF\u771F +RocketActions.EditAct.Edit = \u7F16\u8F91 +RocketActions.EditAct.ttip.Edit = \u7F16\u8F91\u9009\u4E2D\u7EC4\u4EF6 +RocketActions.MoveDownAct.Movedown = \u5411\u4E0B\u79FB\u52A8 +RocketActions.MoveDownAct.ttip.Movedown = \u5411\u4E0B\u79FB\u52A8\u8BE5\u90E8\u4EF6 +RocketActions.MoveUpAct.Moveup = \u5411\u4E0A\u79FB\u52A8 +RocketActions.MoveUpAct.ttip.Moveup = \u5411\u4E0A\u79FB\u52A8\u8BE5\u90E8\u4EF6 +RocketActions.NewStageAct.Newstage = \u65B0\u5EFA\u4E00\u7EA7 +RocketActions.NewStageAct.ttip.Newstage = \u5728\u8BBE\u8BA1\u4E2D\u65B0\u5EFA\u4E00\u7EA7 +RocketActions.PasteAct.Paste = \u7C98\u8D34 +RocketActions.PasteAct.ttip.Paste = \u5C06\u526A\u8D34\u677F\u91CC\u7684\u90E8\u4EF6\u6216\u4EFF\u771F\u7C98\u8D34\u5230\u8BE5\u8BBE\u8BA1\u4E2D ! RocketActions -RocketActions.checkbox.Donotaskmeagain = \u4e0d\u518d\u63d0\u793a -RocketActions.lbl.Youcanchangedefop = \u4f60\u53ef\u4ee5\u4fee\u6539\u7f3a\u7701\u8bbe\u7f6e -RocketActions.showConfirmDialog.lbl1 = \u5220\u9664\u9009\u5b9a\u4eff\u771f? -RocketActions.showConfirmDialog.lbl2 = \u8be5\u64cd\u4f5c\u65e0\u6cd5\u64a4\u9500 -RocketActions.showConfirmDialog.title = \u5220\u9664\u4eff\u771f +RocketActions.checkbox.Donotaskmeagain = \u4E0D\u518D\u63D0\u793A +RocketActions.lbl.Youcanchangedefop = \u4F60\u53EF\u4EE5\u4FEE\u6539\u7F3A\u7701\u8BBE\u7F6E +RocketActions.showConfirmDialog.lbl1 = \u5220\u9664\u9009\u5B9A\u4EFF\u771F? +RocketActions.showConfirmDialog.lbl2 = \u8BE5\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500 +RocketActions.showConfirmDialog.title = \u5220\u9664\u4EFF\u771F -RocketCfg.lbl.Comments = \u6ce8\u91ca: -RocketCfg.lbl.Designer = \u8bbe\u8ba1\u4eba: +RocketCfg.lbl.Comments = \u6CE8\u91CA: +RocketCfg.lbl.Designer = \u8BBE\u8BA1\u4EBA: ! RocketConfig -RocketCfg.lbl.Designname = \u8bbe\u8ba1\u7a3f\u540d\u79f0: +RocketCfg.lbl.Designname = \u8BBE\u8BA1\u7A3F\u540D\u79F0: RocketCfg.lbl.Material = \u6750\u6599: -RocketCfg.lbl.Revisionhistory = \u4fee\u8ba2\u5386\u53f2: +RocketCfg.lbl.Revisionhistory = \u4FEE\u8BA2\u5386\u53F2: -RocketCompCfg.border.Foreshoulder = \u540e\u8fde\u63a5\u5904 -RocketCompCfg.but.Saveasdefstyle = \u4fdd\u5b58\u4e3a\u9ed8\u8ba4\u6837\u5f0f -RocketCompCfg.but.Setforall = \u8bbe\u7f6e\u6240\u6709 -RocketCompCfg.but.ttip.Setforall = \u5bf9\u6240\u6709\u7684\u7ec4\u4ef6\u4f7f\u7528\u540c\u79cd\u8868\u9762\u5904\u7406. -RocketCompCfg.checkbox.Endcapped = \u6709\u7aef\u76d6 -RocketCompCfg.checkbox.Overridecenterofgrav = \u8986\u5199\u91cd\u5fc3: -RocketCompCfg.checkbox.Overridemass = \u8986\u5199\u8d28\u91cf: -RocketCompCfg.checkbox.OverridemassandCG = \u8986\u5199\u6240\u6709\u7ec4\u4ef6\u7684\u91cd\u91cf\u548c\u91cd\u5fc3 -RocketCompCfg.checkbox.Usedefaultcolor = \u9ed8\u8ba4\u989c\u8272 -RocketCompCfg.combo.ttip.componentmaterialaffects = \u7ec4\u4ef6\u6750\u6599\u5c06\u4f1a\u5f71\u54cd\u5230\u7ec4\u4ef6\u91cd\u91cf. -RocketCompCfg.lbl.Choosecolor = \u989c\u8272\u9009\u62e9 -RocketCompCfg.lbl.Commentsonthe = \u6ce8\u91ca -RocketCompCfg.lbl.Complinestyle = \u7ec4\u4ef6\u7ebf\u578b: -RocketCompCfg.lbl.Componentcolor = \u7ec4\u4ef6\u989c\u8272: -RocketCompCfg.lbl.Componentfinish = \u7ec4\u4ef6\u8868\u9762\u5904\u7406: -RocketCompCfg.lbl.Componentmass = \u7ec4\u4ef6\u8d28\u91cf: -RocketCompCfg.lbl.Componentmaterial = \u7ec4\u4ef6\u6750\u6599: +RocketCompCfg.border.Foreshoulder = \u540E\u8FDE\u63A5\u5904 +RocketCompCfg.but.Saveasdefstyle = \u4FDD\u5B58\u4E3A\u9ED8\u8BA4\u6837\u5F0F +RocketCompCfg.but.Setforall = \u8BBE\u7F6E\u6240\u6709 +RocketCompCfg.but.ttip.Setforall = \u5BF9\u6240\u6709\u7684\u7EC4\u4EF6\u4F7F\u7528\u540C\u79CD\u8868\u9762\u5904\u7406. +RocketCompCfg.checkbox.Endcapped = \u6709\u7AEF\u76D6 +RocketCompCfg.checkbox.Overridecenterofgrav = \u8986\u5199\u91CD\u5FC3: +RocketCompCfg.checkbox.Overridemass = \u8986\u5199\u8D28\u91CF: +RocketCompCfg.checkbox.OverridemassandCG = \u8986\u5199\u6240\u6709\u7EC4\u4EF6\u7684\u91CD\u91CF\u548C\u91CD\u5FC3 +RocketCompCfg.checkbox.Usedefaultcolor = \u9ED8\u8BA4\u989C\u8272 +RocketCompCfg.combo.ttip.componentmaterialaffects = \u7EC4\u4EF6\u6750\u6599\u5C06\u4F1A\u5F71\u54CD\u5230\u7EC4\u4EF6\u91CD\u91CF. +RocketCompCfg.lbl.Choosecolor = \u989C\u8272\u9009\u62E9 +RocketCompCfg.lbl.Commentsonthe = \u6CE8\u91CA +RocketCompCfg.lbl.Complinestyle = \u7EC4\u4EF6\u7EBF\u578B: +RocketCompCfg.lbl.Componentcolor = \u7EC4\u4EF6\u989C\u8272: +RocketCompCfg.lbl.Componentfinish = \u7EC4\u4EF6\u8868\u9762\u5904\u7406: +RocketCompCfg.lbl.Componentmass = \u7EC4\u4EF6\u8D28\u91CF: +RocketCompCfg.lbl.Componentmaterial = \u7EC4\u4EF6\u6750\u6599: ! RocketComponentConfig -RocketCompCfg.lbl.Componentname = \u7ec4\u4ef6\u540d\u79f0: -RocketCompCfg.lbl.Diameter = \u76f4\u5f84: -RocketCompCfg.lbl.Figurestyle = \u6837\u5f0f: -RocketCompCfg.lbl.Length = \u957f\u5ea6: -RocketCompCfg.lbl.Mass = \u8d28\u91cf: -RocketCompCfg.lbl.Overridemassorcenter = \u8986\u5199\u91cd\u91cf\u6216\u91cd\u5fc3 -RocketCompCfg.lbl.Thickness = \u539a\u5ea6: -RocketCompCfg.lbl.longA1 = \u8868\u9762\u5904\u7406\u5c06\u4f1a\u5f71\u54cd\u5230\u7ec4\u4ef6\u7684\u7a7a\u6c14\u52a8\u529b.
-RocketCompCfg.lbl.longA2 = \u8be5\u6570\u503c\u4e3a\u5e73\u5747\u8868\u9762\u7c97\u7cd9\u5ea6. -RocketCompCfg.lbl.longB1 = \u8986\u5199\u8d28\u91cf\u4e0d\u5305\u62ec\u53d1\u52a8\u673a.
-RocketCompCfg.lbl.longB2 = \u91cd\u5fc3\u4ece\u5934\u90e8\u5f00\u59cb\u8ba1\u7b97 -RocketCompCfg.lbl.overriddenby = (\u88ab\u8986\u5199 +RocketCompCfg.lbl.Componentname = \u7EC4\u4EF6\u540D\u79F0: +RocketCompCfg.lbl.Diameter = \u76F4\u5F84: +RocketCompCfg.lbl.Figurestyle = \u6837\u5F0F: +RocketCompCfg.lbl.Length = \u957F\u5EA6: +RocketCompCfg.lbl.Mass = \u8D28\u91CF: +RocketCompCfg.lbl.Overridemassorcenter = \u8986\u5199\u91CD\u91CF\u6216\u91CD\u5FC3 +RocketCompCfg.lbl.Thickness = \u539A\u5EA6: +RocketCompCfg.lbl.longA1 = \u8868\u9762\u5904\u7406\u5C06\u4F1A\u5F71\u54CD\u5230\u7EC4\u4EF6\u7684\u7A7A\u6C14\u52A8\u529B.
+RocketCompCfg.lbl.longA2 = \u8BE5\u6570\u503C\u4E3A\u5E73\u5747\u8868\u9762\u7C97\u7CD9\u5EA6. +RocketCompCfg.lbl.longB1 = \u8986\u5199\u8D28\u91CF\u4E0D\u5305\u62EC\u53D1\u52A8\u673A.
+RocketCompCfg.lbl.longB2 = \u91CD\u5FC3\u4ECE\u5934\u90E8\u5F00\u59CB\u8BA1\u7B97 +RocketCompCfg.lbl.overriddenby = (\u88AB\u8986\u5199 RocketCompCfg.lbl.overriddento = (\u8986\u5199\u5230 -RocketCompCfg.lbl.ttip.componentmaterialaffects = \u7ec4\u4ef6\u6750\u6599\u5c06\u4f1a\u5f71\u54cd\u5230\u7ec4\u4ef6\u91cd\u91cf. -RocketCompCfg.tab.Appearance = \u5916\u89c2 -RocketCompCfg.tab.Comment = \u6ce8\u91ca -RocketCompCfg.tab.Figstyleopt = \u6837\u5f0f\u9009\u9879 -RocketCompCfg.tab.Figure = \u6837\u5f0f -RocketCompCfg.tab.MassandCGoverride = \u8d28\u91cf\u53ca\u91cd\u5fc3\u9009\u9879 +RocketCompCfg.lbl.ttip.componentmaterialaffects = \u7EC4\u4EF6\u6750\u6599\u5C06\u4F1A\u5F71\u54CD\u5230\u7EC4\u4EF6\u91CD\u91CF. +RocketCompCfg.tab.Appearance = \u5916\u89C2 +RocketCompCfg.tab.Comment = \u6CE8\u91CA +RocketCompCfg.tab.Figstyleopt = \u6837\u5F0F\u9009\u9879 +RocketCompCfg.tab.Figure = \u6837\u5F0F +RocketCompCfg.tab.MassandCGoverride = \u8D28\u91CF\u53CA\u91CD\u5FC3\u9009\u9879 RocketCompCfg.tab.Override = \u8986\u5199 -RocketCompCfg.tab.Specifyacomment = \u7ec4\u4ef6\u6ce8\u91ca -RocketCompCfg.title.Aftshoulder = \u524d\u8fde\u63a5\u5904 -RocketCompCfg.title.Noseconeshoulder = \u5934\u9525\u8fde\u63a5\u5904 -RocketCompCfg.ttip.Endcapped = \u8fde\u63a5\u5904\u7ec8\u7aef\u662f\u5426\u6709\u76d6. -RocketCompCfg.ttip.Thecomponentname = \u7ec4\u4ef6\u540d\u79f0. +RocketCompCfg.tab.Specifyacomment = \u7EC4\u4EF6\u6CE8\u91CA +RocketCompCfg.title.Aftshoulder = \u524D\u8FDE\u63A5\u5904 +RocketCompCfg.title.Noseconeshoulder = \u5934\u9525\u8FDE\u63A5\u5904 +RocketCompCfg.ttip.Endcapped = \u8FDE\u63A5\u5904\u7EC8\u7AEF\u662F\u5426\u6709\u76D6. +RocketCompCfg.ttip.Thecomponentname = \u7EC4\u4EF6\u540D\u79F0. -RocketComponent.Position.ABSOLUTE = \u5934\u9525\u5c16\u7aef -RocketComponent.Position.AFTER = \u7236\u7ec4\u4ef6\u4e4b\u540e -RocketComponent.Position.BOTTOM = \u7236\u7ec4\u4ef6\u5e95\u90e8 -RocketComponent.Position.MIDDLE = \u7236\u7ec4\u4ef6\u4e2d\u90e8 +RocketComponent.Position.ABSOLUTE = \u5934\u9525\u5C16\u7AEF +RocketComponent.Position.AFTER = \u7236\u7EC4\u4EF6\u4E4B\u540E +RocketComponent.Position.BOTTOM = \u7236\u7EC4\u4EF6\u5E95\u90E8 +RocketComponent.Position.MIDDLE = \u7236\u7EC4\u4EF6\u4E2D\u90E8 ! RocketComponent -RocketComponent.Position.TOP = \u7236\u7ec4\u4ef6\u9876\u90e8 +RocketComponent.Position.TOP = \u7236\u7EC4\u4EF6\u9876\u90E8 -RocketInfo.Apogee = \u6700\u9ad8\u70b9: -RocketInfo.Calculating = \u8ba1\u7b97\u4e2d... -RocketInfo.Mach = (\u9a6c\u8d6b -RocketInfo.Maxacceleration = \u6700\u5927\u52a0\u901f\u5ea6: -RocketInfo.Maxvelocity = \u6700\u5927\u901f\u5ea6: -RocketInfo.Warning = \u8b66\u544a: +RocketInfo.Apogee = \u6700\u9AD8\u70B9: +RocketInfo.Calculating = \u8BA1\u7B97\u4E2D... +RocketInfo.Mach = (\u9A6C\u8D6B +RocketInfo.Maxacceleration = \u6700\u5927\u52A0\u901F\u5EA6: +RocketInfo.Maxvelocity = \u6700\u5927\u901F\u5EA6: +RocketInfo.Warning = \u8B66\u544A: RocketInfo.accelerationValue = N/A RocketInfo.apogeeValue = N/A -RocketInfo.at = \u4f4d\u7f6e(\u7c73) -RocketInfo.cgText = CG(\u91cd\u5fc3): -RocketInfo.cpText = CP(\u538b\u5fc3): +RocketInfo.at = \u4F4D\u7F6E(\u7C73) +RocketInfo.cgText = CG(\u91CD\u5FC3): +RocketInfo.cpText = CP(\u538B\u5FC3): ! RocketInfo -RocketInfo.lengthLine.Length = \u957f\u5ea6 -RocketInfo.lengthLine.maxdiameter = , \u6700\u5927\u76f4\u5f84 -RocketInfo.massText1 = \u542b\u53d1\u52a8\u673a\u7684\u603b\u8d28\u91cf -RocketInfo.massText2 = \u4e0d\u542b\u53d1\u52a8\u673a\u7684\u51c0\u8d28\u91cf -RocketInfo.stabText = \u7a33\u5b9a\u6027: +RocketInfo.lengthLine.Length = \u957F\u5EA6 +RocketInfo.lengthLine.maxdiameter = , \u6700\u5927\u76F4\u5F84 +RocketInfo.massText1 = \u542B\u53D1\u52A8\u673A\u7684\u603B\u8D28\u91CF +RocketInfo.massText2 = \u4E0D\u542B\u53D1\u52A8\u673A\u7684\u51C0\u8D28\u91CF +RocketInfo.stabText = \u7A33\u5B9A\u6027: RocketInfo.velocityValue = N/A -RocketPanel.FigTypeAct.Backview = \u540e\u89c6\u56fe -RocketPanel.FigTypeAct.Figure3D = \u4e09\u7ef4\u56fe -RocketPanel.FigTypeAct.Finished = \u4e09\u7ef4\u7cbe\u7ec6\u56fe +RocketPanel.FigTypeAct.Backview = \u540E\u89C6\u56FE +RocketPanel.FigTypeAct.Figure3D = \u4E09\u7EF4\u56FE +RocketPanel.FigTypeAct.Finished = \u4E09\u7EF4\u7CBE\u7EC6\u56FE ! RocketPanel -RocketPanel.FigTypeAct.Sideview = \u4fa7\u89c6\u56fe -RocketPanel.FigTypeAct.Unfinished = \u4e09\u7ef4\u8349\u56fe -RocketPanel.lbl.Flightcfg = \u98de\u884c\u914d\u7f6e: -RocketPanel.lbl.ViewType = \u89c6\u56fe\u7c7b\u578b: -RocketPanel.lbl.infoMessage = \u5355\u51fb\u9009\u62e9    Shift+\u5355\u51fb\u9009\u62e9\u5176\u4ed6    \u53cc\u51fb\u7f16\u8f91    \u5355\u51fb+\u62d6\u52a8\u79fb\u52a8\u7ec4\u4ef6 +RocketPanel.FigTypeAct.Sideview = \u4FA7\u89C6\u56FE +RocketPanel.FigTypeAct.Unfinished = \u4E09\u7EF4\u8349\u56FE +RocketPanel.lbl.Flightcfg = \u98DE\u884C\u914D\u7F6E: +RocketPanel.lbl.ViewType = \u89C6\u56FE\u7C7B\u578B: +RocketPanel.lbl.infoMessage = \u5355\u51FB\u9009\u62E9    Shift+\u5355\u51FB\u9009\u62E9\u5176\u4ED6    \u53CC\u51FB\u7F16\u8F91    \u5355\u51FB+\u62D6\u52A8\u79FB\u52A8\u7EC4\u4EF6 -ScaleDialog.button.scale = \u7f29\u653e -ScaleDialog.checkbox.scaleMass = \u66f4\u65b0\u8d28\u91cf\u503c -ScaleDialog.checkbox.scaleMass.ttip = \u6839\u636e\u539f\u59cb\u7f29\u653e\u503c, \u7acb\u65b9\u5173\u7cfb\u7f29\u653e\u7ec4\u4ef6\u8d28\u91cf -ScaleDialog.lbl.scale = \u7f29\u653e: -ScaleDialog.lbl.scale.ttip = \u9009\u62e9\u7f29\u653e\u6574\u4e2a\u8bbe\u8ba1\u56fe\u6216\u4ec5\u7f29\u653e\u9009\u4e2d\u7ec4\u4ef6 +ScaleDialog.button.scale = \u7F29\u653E +ScaleDialog.checkbox.scaleMass = \u66F4\u65B0\u8D28\u91CF\u503C +ScaleDialog.checkbox.scaleMass.ttip = \u6839\u636E\u539F\u59CB\u7F29\u653E\u503C, \u7ACB\u65B9\u5173\u7CFB\u7F29\u653E\u7EC4\u4EF6\u8D28\u91CF +ScaleDialog.lbl.scale = \u7F29\u653E: +ScaleDialog.lbl.scale.ttip = \u9009\u62E9\u7F29\u653E\u6574\u4E2A\u8BBE\u8BA1\u56FE\u6216\u4EC5\u7F29\u653E\u9009\u4E2D\u7EC4\u4EF6 ! The scaleFrom/scaleTo pair creates a phrase "Scale from [...] to [...]" -ScaleDialog.lbl.scaleFrom = \u7f29\u653e\u81ea -ScaleDialog.lbl.scaleFromTo.ttip = \u6839\u636e\u539f\u59cb\u5927\u5c0f\u548c\u76ee\u6807\u5927\u5c0f\u786e\u5b9a\u7f29\u653e\u6bd4\u4f8b. +ScaleDialog.lbl.scaleFrom = \u7F29\u653E\u81EA +ScaleDialog.lbl.scaleFromTo.ttip = \u6839\u636E\u539F\u59CB\u5927\u5C0F\u548C\u76EE\u6807\u5927\u5C0F\u786E\u5B9A\u7F29\u653E\u6BD4\u4F8B. ! Scale dialog -ScaleDialog.lbl.scaleRocket = \u6574\u4e2a\u706b\u7bad -ScaleDialog.lbl.scaleSelection = \u4ec5\u9009\u4e2d\u7ec4\u4ef6 -ScaleDialog.lbl.scaleSubselection = \u9009\u4e2d\u7ec4\u4ef6\u53ca\u6240\u6709\u5b50\u7ec4\u4ef6 +ScaleDialog.lbl.scaleRocket = \u6574\u4E2A\u706B\u7BAD +ScaleDialog.lbl.scaleSelection = \u4EC5\u9009\u4E2D\u7EC4\u4EF6 +ScaleDialog.lbl.scaleSubselection = \u9009\u4E2D\u7EC4\u4EF6\u53CA\u6240\u6709\u5B50\u7EC4\u4EF6 ScaleDialog.lbl.scaleTo = \u5230 -ScaleDialog.lbl.scaling = \u7f29\u653e\u6bd4\u4f8b: -ScaleDialog.lbl.scaling.ttip = \u5927\u4e8e100%\u8868\u793a\u653e\u5927, \u5c0f\u4e8e100%\u8868\u793a\u7f29\u5c0f. -ScaleDialog.title = \u7f29\u653e -ScaleDialog.undo.scaleComponent = \u7f29\u653e\u5355\u4e2a\u7ec4\u4ef6 -ScaleDialog.undo.scaleComponents = \u7f29\u653e\u591a\u4e2a\u7ec4\u4ef6 -ScaleDialog.undo.scaleRocket = \u7f29\u653e\u706b\u7bad +ScaleDialog.lbl.scaling = \u7F29\u653E\u6BD4\u4F8B: +ScaleDialog.lbl.scaling.ttip = \u5927\u4E8E100%\u8868\u793A\u653E\u5927, \u5C0F\u4E8E100%\u8868\u793A\u7F29\u5C0F. +ScaleDialog.title = \u7F29\u653E +ScaleDialog.undo.scaleComponent = \u7F29\u653E\u5355\u4E2A\u7EC4\u4EF6 +ScaleDialog.undo.scaleComponents = \u7F29\u653E\u591A\u4E2A\u7EC4\u4EF6 +ScaleDialog.undo.scaleRocket = \u7F29\u653E\u706B\u7BAD -SeparationConfigurationPanel.table.separation.default = \u9ed8\u8ba4 ({0}) +SeparationConfigurationPanel.table.separation.default = \u9ED8\u8BA4 ({0}) -SeparationSelectionDialog.opt.default = \u6839\u636e\u9ed8\u8ba4\u5206\u79bb\u4e8b\u4ef6\u66f4\u65b0\u6240\u6709\u914d\u7f6e -SeparationSelectionDialog.opt.override = \u4ec5\u66f4\u65b0 {0} \u98de\u884c\u914d\u7f6e -SeparationSelectionDialog.opt.title = \u53d7\u5230\u5f71\u54cd\u7684\u98de\u884c\u914d\u7f6e: +SeparationSelectionDialog.opt.default = \u6839\u636E\u9ED8\u8BA4\u5206\u79BB\u4E8B\u4EF6\u66F4\u65B0\u6240\u6709\u914D\u7F6E +SeparationSelectionDialog.opt.override = \u4EC5\u66F4\u65B0 {0} \u98DE\u884C\u914D\u7F6E +SeparationSelectionDialog.opt.title = \u53D7\u5230\u5F71\u54CD\u7684\u98DE\u884C\u914D\u7F6E: ! Shape Shape.Conical = \u5706\u9525 -Shape.Conical.desc1 = \u5706\u9525\u5934\u9525\u90e8\u9762\u56fe\u4e3a\u4e09\u89d2\u5f62. -Shape.Conical.desc2 = \u5706\u9525\u7ea7\u95f4\u6bb5\u4e3a\u76f4\u7ebf. -Shape.Ellipsoid = \u692d\u5706\u4f53 -Shape.Ellipsoid.desc1 = \u692d\u5706\u5934\u9525\u7684\u90e8\u9762\u56fe\u4e3a\u534a\u692d\u5706, \u957f\u8f74\u662f\u77ed\u8f74\u7684\u4e24\u500d. -Shape.Ellipsoid.desc2 = \u692d\u5706\u7ea7\u95f4\u6bb5\u4e3a\u534a\u692d\u5706, \u957f\u8f74\u662f\u77ed\u8f74\u7684\u4e24\u500d. \u82e5\u672a\u88c1\u526a, \u90e8\u9762\u56fe\u5c06\u5339\u914d\u76f8\u5e94\u534a\u5f84. -Shape.Haackseries = Haack\u66f2\u7ebf -Shape.Haackseries.desc1 = Haack\u7ea7\u6570\u5934\u9525\u7528\u4e8e\u6700\u5c0f\u5316\u963b\u529b, \u5f62\u72b6\u53c2\u65700\u4ea7\u751fLD-Haack\u6216\u8005\u51af\u5361\u95e8\u5934\u9525, \u5bf9\u4e8e\u65e2\u5b9a\u7684\u957f\u5ea6\u548c\u76f4\u5f84\u963b\u529b\u6700\u5c0f; \u5f62\u72b6\u53c2\u65700.333\u4ea7\u751fLV-Haack\u5934\u9525, \u5bf9\u4e8e\u65e2\u5b9a\u7684\u957f\u5ea6\u548c\u4f53\u79ef\u963b\u529b\u6700\u5c0f. -Shape.Haackseries.desc2 = Haack\u7ea7\u6570\u5934\u9525\u7528\u4e8e\u6700\u5c0f\u5316\u963b\u529b, \u5f62\u72b6\u53c2\u65700\u4ea7\u751fLD-Haack\u6216\u8005\u51af\u5361\u95e8\u5934\u9525, \u5bf9\u4e8e\u65e2\u5b9a\u7684\u957f\u5ea6\u548c\u76f4\u5f84\u963b\u529b\u6700\u5c0f; \u5f62\u72b6\u53c2\u65700.333\u4ea7\u751fLV-Haack\u5934\u9525, \u5bf9\u4e8e\u65e2\u5b9a\u7684\u957f\u5ea6\u548c\u4f53\u79ef\u963b\u529b\u6700\u5c0f. -Shape.Ogive = \u5c16\u9876\u62f1 -Shape.Ogive.desc1 = \u5c16\u9876\u5934\u9525\u7684\u90e8\u9762\u56fe\u4e3a\u5706\u5f27\u5207\u6bb5. \u5f62\u72b6\u53c2\u65701\u4e3a\u5207\u9762\u5c16\u62f1, \u548c\u7bad\u4f53\u5e73\u6ed1\u8fc7\u6e21, \u53c2\u6570\u5c0f\u4e8e1\u4e3a\u5272\u9762\u5c16\u62f1. -Shape.Ogive.desc2 = \u5c16\u9876\u7ea7\u95f4\u6bb5\u4e3a\u5706\u5f27\u5207\u6bb5. \u5f62\u72b6\u53c2\u65701\u4e3a\u5207\u9762\u5c16\u62f1, \u548c\u540e\u7aef\u7bad\u4f53\u5e73\u6ed1\u8fc7\u6e21, \u53c2\u6570\u5c0f\u4e8e1\u4e3a\u5272\u9762\u5c16\u62f1. -Shape.Parabolicseries = \u629b\u7269\u7ebf -Shape.Parabolicseries.desc1 = \u629b\u7269\u7ebf\u5934\u9525\u90e8\u9762\u56fe\u4e3a\u629b\u7269\u7ebf. \u53c2\u6570\u51b3\u5b9a\u4e86\u629b\u7269\u7ebf\u7684\u5f62\u72b6. \u53c2\u65701.0\u4e3a\u5168\u629b\u7269\u7ebf, \u4e0e\u7bad\u4f53\u76f8\u5207, 0.75\u4e3a3/4 \u629b\u7269\u7ebf, 0.5 \u4e3a1/2 \u629b\u7269\u7ebf, 0\u4e3a\u5706\u9525. -Shape.Parabolicseries.desc2 = \u629b\u7269\u7ebf\u7ea7\u95f4\u6bb5\u4e3a\u629b\u7269\u7ebf. \u53c2\u6570\u51b3\u5b9a\u4e86\u629b\u7269\u7ebf\u7684\u5f62\u72b6. \u53c2\u65701.0\u4e3a\u5168\u629b\u7269\u7ebf, \u4e0e\u7bad\u4f53\u76f8\u5207, 0.75\u4e3a3/4 \u629b\u7269\u7ebf, 0.5 \u4e3a1/2 \u629b\u7269\u7ebf, 0\u4e3a\u5706\u9525. -Shape.Powerseries = \u5e42\u7ea7\u6570 -Shape.Powerseries.desc1 = \u5e42\u7ea7\u6570\u5934\u9525\u90e8\u9762\u56fe\u662f\u7531\u534a\u5f84 × (x / \u957f\u5ea6)k, \u5176\u4e2dk\u662f\u5f62\u72b6\u53c2\u6570. k=0.5\u65f6\u4e3a\u00bd\u5e42\u5373\u629b\u7269\u7ebf, k=0.75\u65f6\u4e3a\u00be\u5e42, k=1\u65f6\u4e3a\u5706\u9525. -Shape.Powerseries.desc2 = \u5e42\u7ea7\u6570\u7ea7\u95f4\u6bb5\u662f\u7531\u534a\u5f84 × (x / \u957f\u5ea6)k, \u5176\u4e2dk\u662f\u5f62\u72b6\u53c2\u6570. k=0.5\u65f6\u4e3a\u00bd\u5e42\u5373\u629b\u7269\u7ebf, k=0.75\u65f6\u4e3a\u00be\u5e42, k=1\u65f6\u4e3a\u5706\u9525. +Shape.Conical.desc1 = \u5706\u9525\u5934\u9525\u90E8\u9762\u56FE\u4E3A\u4E09\u89D2\u5F62. +Shape.Conical.desc2 = \u5706\u9525\u7EA7\u95F4\u6BB5\u4E3A\u76F4\u7EBF. +Shape.Ellipsoid = \u692D\u5706\u4F53 +Shape.Ellipsoid.desc1 = \u692D\u5706\u5934\u9525\u7684\u90E8\u9762\u56FE\u4E3A\u534A\u692D\u5706, \u957F\u8F74\u662F\u77ED\u8F74\u7684\u4E24\u500D. +Shape.Ellipsoid.desc2 = \u692D\u5706\u7EA7\u95F4\u6BB5\u4E3A\u534A\u692D\u5706, \u957F\u8F74\u662F\u77ED\u8F74\u7684\u4E24\u500D. \u82E5\u672A\u88C1\u526A, \u90E8\u9762\u56FE\u5C06\u5339\u914D\u76F8\u5E94\u534A\u5F84. +Shape.Haackseries = Haack\u66F2\u7EBF +Shape.Haackseries.desc1 = Haack\u7EA7\u6570\u5934\u9525\u7528\u4E8E\u6700\u5C0F\u5316\u963B\u529B, \u5F62\u72B6\u53C2\u65700\u4EA7\u751FLD-Haack\u6216\u8005\u51AF\u5361\u95E8\u5934\u9525, \u5BF9\u4E8E\u65E2\u5B9A\u7684\u957F\u5EA6\u548C\u76F4\u5F84\u963B\u529B\u6700\u5C0F; \u5F62\u72B6\u53C2\u65700.333\u4EA7\u751FLV-Haack\u5934\u9525, \u5BF9\u4E8E\u65E2\u5B9A\u7684\u957F\u5EA6\u548C\u4F53\u79EF\u963B\u529B\u6700\u5C0F. +Shape.Haackseries.desc2 = Haack\u7EA7\u6570\u5934\u9525\u7528\u4E8E\u6700\u5C0F\u5316\u963B\u529B, \u5F62\u72B6\u53C2\u65700\u4EA7\u751FLD-Haack\u6216\u8005\u51AF\u5361\u95E8\u5934\u9525, \u5BF9\u4E8E\u65E2\u5B9A\u7684\u957F\u5EA6\u548C\u76F4\u5F84\u963B\u529B\u6700\u5C0F; \u5F62\u72B6\u53C2\u65700.333\u4EA7\u751FLV-Haack\u5934\u9525, \u5BF9\u4E8E\u65E2\u5B9A\u7684\u957F\u5EA6\u548C\u4F53\u79EF\u963B\u529B\u6700\u5C0F. +Shape.Ogive = \u5C16\u9876\u62F1 +Shape.Ogive.desc1 = \u5C16\u9876\u5934\u9525\u7684\u90E8\u9762\u56FE\u4E3A\u5706\u5F27\u5207\u6BB5. \u5F62\u72B6\u53C2\u65701\u4E3A\u5207\u9762\u5C16\u62F1, \u548C\u7BAD\u4F53\u5E73\u6ED1\u8FC7\u6E21, \u53C2\u6570\u5C0F\u4E8E1\u4E3A\u5272\u9762\u5C16\u62F1. +Shape.Ogive.desc2 = \u5C16\u9876\u7EA7\u95F4\u6BB5\u4E3A\u5706\u5F27\u5207\u6BB5. \u5F62\u72B6\u53C2\u65701\u4E3A\u5207\u9762\u5C16\u62F1, \u548C\u540E\u7AEF\u7BAD\u4F53\u5E73\u6ED1\u8FC7\u6E21, \u53C2\u6570\u5C0F\u4E8E1\u4E3A\u5272\u9762\u5C16\u62F1. +Shape.Parabolicseries = \u629B\u7269\u7EBF +Shape.Parabolicseries.desc1 = \u629B\u7269\u7EBF\u5934\u9525\u90E8\u9762\u56FE\u4E3A\u629B\u7269\u7EBF. \u53C2\u6570\u51B3\u5B9A\u4E86\u629B\u7269\u7EBF\u7684\u5F62\u72B6. \u53C2\u65701.0\u4E3A\u5168\u629B\u7269\u7EBF, \u4E0E\u7BAD\u4F53\u76F8\u5207, 0.75\u4E3A3/4 \u629B\u7269\u7EBF, 0.5 \u4E3A1/2 \u629B\u7269\u7EBF, 0\u4E3A\u5706\u9525. +Shape.Parabolicseries.desc2 = \u629B\u7269\u7EBF\u7EA7\u95F4\u6BB5\u4E3A\u629B\u7269\u7EBF. \u53C2\u6570\u51B3\u5B9A\u4E86\u629B\u7269\u7EBF\u7684\u5F62\u72B6. \u53C2\u65701.0\u4E3A\u5168\u629B\u7269\u7EBF, \u4E0E\u7BAD\u4F53\u76F8\u5207, 0.75\u4E3A3/4 \u629B\u7269\u7EBF, 0.5 \u4E3A1/2 \u629B\u7269\u7EBF, 0\u4E3A\u5706\u9525. +Shape.Powerseries = \u5E42\u7EA7\u6570 +Shape.Powerseries.desc1 = \u5E42\u7EA7\u6570\u5934\u9525\u90E8\u9762\u56FE\u662F\u7531\u534A\u5F84 × (x / \u957F\u5EA6)k, \u5176\u4E2Dk\u662F\u5F62\u72B6\u53C2\u6570. k=0.5\u65F6\u4E3A\u00BD\u5E42\u5373\u629B\u7269\u7EBF, k=0.75\u65F6\u4E3A\u00BE\u5E42, k=1\u65F6\u4E3A\u5706\u9525. +Shape.Powerseries.desc2 = \u5E42\u7EA7\u6570\u7EA7\u95F4\u6BB5\u662F\u7531\u534A\u5F84 × (x / \u957F\u5EA6)k, \u5176\u4E2Dk\u662F\u5F62\u72B6\u53C2\u6570. k=0.5\u65F6\u4E3A\u00BD\u5E42\u5373\u629B\u7269\u7EBF, k=0.75\u65F6\u4E3A\u00BE\u5E42, k=1\u65F6\u4E3A\u5706\u9525. ! ShockCord -ShockCord.ShockCord = \u51cf\u9707\u7d22 +ShockCord.ShockCord = \u51CF\u9707\u7D22 -ShockCordCfg.lbl.Packeddiam = \u4f1e\u5305\u76f4\u5f84: -ShockCordCfg.lbl.Packedlength = \u4f1e\u5305\u957f\u5ea6: -ShockCordCfg.lbl.Posrelativeto = \u76f8\u5bf9\u4f4d\u7f6e: +ShockCordCfg.lbl.Packeddiam = \u4F1E\u5305\u76F4\u5F84: +ShockCordCfg.lbl.Packedlength = \u4F1E\u5305\u957F\u5EA6: +ShockCordCfg.lbl.Posrelativeto = \u76F8\u5BF9\u4F4D\u7F6E: ! ShockCordConfig -ShockCordCfg.lbl.Shockcordlength = \u51cf\u9707\u7d22\u957f\u5ea6: -ShockCordCfg.lbl.Shockcordmaterial = \u51cf\u9707\u7d22\u6750\u6599: -ShockCordCfg.lbl.plus = \u52a0 -ShockCordCfg.tab.General = \u5e38\u89c4 -ShockCordCfg.tab.ttip.General = \u5e38\u89c4\u5c5e\u6027 +ShockCordCfg.lbl.Shockcordlength = \u51CF\u9707\u7D22\u957F\u5EA6: +ShockCordCfg.lbl.Shockcordmaterial = \u51CF\u9707\u7D22\u6750\u6599: +ShockCordCfg.lbl.plus = \u52A0 +ShockCordCfg.tab.General = \u5E38\u89C4 +ShockCordCfg.tab.ttip.General = \u5E38\u89C4\u5C5E\u6027 -SimExpPan.Col.Unit = \u5355\u4f4d -SimExpPan.Col.Variable = \u53d8\u91cf -SimExpPan.ExportingVar.desc1 = \u8f93\u51fa1\u4e2a\u53d8\u91cf\uff0c\u5171\u8ba1 -SimExpPan.ExportingVar.desc2 = \u8f93\u51fa -SimExpPan.ExportingVar.desc3 = \u4e2a\u53d8\u91cf, \u5171\u8ba1 -SimExpPan.Fileexists.desc1 = \u6587\u4ef6 " -SimExpPan.Fileexists.desc2 = " \u5df2\u5b58\u5728. \u8986\u76d6? -SimExpPan.Fileexists.title = \u6587\u4ef6\u5df2\u5b58\u5728 -SimExpPan.border.Comments = \u6ce8\u91ca -SimExpPan.border.Fieldsep = \u6570\u636e\u5206\u9694\u7b26 -SimExpPan.border.Stage = \u5bfc\u51fa\u706b\u7bad\u7ea7 -SimExpPan.border.Vartoexport = \u5bfc\u51fa\u53d8\u91cf +SimExpPan.Col.Unit = \u5355\u4F4D +SimExpPan.Col.Variable = \u53D8\u91CF +SimExpPan.ExportingVar.desc1 = \u8F93\u51FA1\u4E2A\u53D8\u91CF\uFF0C\u5171\u8BA1 +SimExpPan.ExportingVar.desc2 = \u8F93\u51FA +SimExpPan.ExportingVar.desc3 = \u4E2A\u53D8\u91CF, \u5171\u8BA1 +SimExpPan.Fileexists.desc1 = \u6587\u4EF6 " +SimExpPan.Fileexists.desc2 = " \u5DF2\u5B58\u5728. \u8986\u76D6? +SimExpPan.Fileexists.title = \u6587\u4EF6\u5DF2\u5B58\u5728 +SimExpPan.border.Comments = \u6CE8\u91CA +SimExpPan.border.Fieldsep = \u6570\u636E\u5206\u9694\u7B26 +SimExpPan.border.Stage = \u5BFC\u51FA\u706B\u7BAD\u7EA7 +SimExpPan.border.Vartoexport = \u5BFC\u51FA\u53D8\u91CF SimExpPan.but.Selectall = \u5168\u9009 -SimExpPan.but.Selectnone = \u53d6\u6d88\u5168\u9009 -SimExpPan.checkbox.Incflightevents = \u98de\u884c\u4e8b\u4ef6 -SimExpPan.checkbox.Includefielddesc = \u6570\u636e\u57df\u63cf\u8ff0 -SimExpPan.checkbox.Includesimudesc = \u4eff\u771f\u63cf\u8ff0 -SimExpPan.checkbox.ttip.Incflightevents = \u6ce8\u91ca\u884c\u7528\u4e8e\u63cf\u8ff0\u98de\u884c\u4e8b\u4ef6. -SimExpPan.checkbox.ttip.Includefielddesc = \u6ce8\u91ca\u884c\u7528\u4e8e\u63cf\u8ff0\u8f93\u51fa\u53d8\u91cf. -SimExpPan.checkbox.ttip.Includesimudesc = \u5728\u6587\u4ef6\u5934\u52a0\u4e0a\u6ce8\u91ca\u884c\u7528\u4e8e\u63cf\u8ff0\u4eff\u771f\u5185\u5bb9. +SimExpPan.but.Selectnone = \u53D6\u6D88\u5168\u9009 +SimExpPan.checkbox.Incflightevents = \u98DE\u884C\u4E8B\u4EF6 +SimExpPan.checkbox.Includefielddesc = \u6570\u636E\u57DF\u63CF\u8FF0 +SimExpPan.checkbox.Includesimudesc = \u4EFF\u771F\u63CF\u8FF0 +SimExpPan.checkbox.ttip.Incflightevents = \u6CE8\u91CA\u884C\u7528\u4E8E\u63CF\u8FF0\u98DE\u884C\u4E8B\u4EF6. +SimExpPan.checkbox.ttip.Includefielddesc = \u6CE8\u91CA\u884C\u7528\u4E8E\u63CF\u8FF0\u8F93\u51FA\u53D8\u91CF. +SimExpPan.checkbox.ttip.Includesimudesc = \u5728\u6587\u4EF6\u5934\u52A0\u4E0A\u6CE8\u91CA\u884C\u7528\u4E8E\u63CF\u8FF0\u4EFF\u771F\u5185\u5BB9. ! SimulationExportPanel -SimExpPan.desc = CSV\u6570\u636e\u6587\u4ef6 (*.csv) -SimExpPan.lbl.Commentchar = \u6ce8\u91ca\u6807\u8bc6\u7b26: -SimExpPan.lbl.Fieldsepstr = \u6570\u636e\u5206\u9694\u5b57\u7b26\u4e32: -SimExpPan.lbl.longA1 = \u5b57\u7b26\u4e32\u7528\u4e8e\u5206\u9694\u8f93\u51fa\u6587\u4ef6\u4e2d\u7684\u6570\u636e\u57df.
-SimExpPan.lbl.longA2 = \u4f7f\u7528 ',' \u4f5c\u4e3aCSV\u6570\u636e\u7684\u5206\u9694\u7b26. -SimExpPan.lbl.ttip.Commentchar = \u7528\u4e8e\u6807\u8bb0\u6ce8\u91ca\u884c\u7684\u6807\u8bc6\u7b26. +SimExpPan.desc = CSV\u6570\u636E\u6587\u4EF6 (*.csv) +SimExpPan.lbl.Commentchar = \u6CE8\u91CA\u6807\u8BC6\u7B26: +SimExpPan.lbl.Fieldsepstr = \u6570\u636E\u5206\u9694\u5B57\u7B26\u4E32: +SimExpPan.lbl.longA1 = \u5B57\u7B26\u4E32\u7528\u4E8E\u5206\u9694\u8F93\u51FA\u6587\u4EF6\u4E2D\u7684\u6570\u636E\u57DF.
+SimExpPan.lbl.longA2 = \u4F7F\u7528 ',' \u4F5C\u4E3ACSV\u6570\u636E\u7684\u5206\u9694\u7B26. +SimExpPan.lbl.ttip.Commentchar = \u7528\u4E8E\u6807\u8BB0\u6CE8\u91CA\u884C\u7684\u6807\u8BC6\u7B26. -SimuRunDlg.lbl.Altitude = \u9ad8\u5ea6: -SimuRunDlg.lbl.Running = \u6b63\u5728\u4eff\u771f ... -SimuRunDlg.lbl.Simutime = \u4eff\u771f\u65f6\u95f4: -SimuRunDlg.lbl.Velocity = \u901f\u5ea6: -SimuRunDlg.msg.Unabletosim = \u65e0\u6cd5\u8fd0\u884c\u4eff\u771f: -SimuRunDlg.msg.errorOccurred = \u4eff\u771f\u65f6\u51fa\u73b0\u9519\u8bef: +SimuRunDlg.lbl.Altitude = \u9AD8\u5EA6: +SimuRunDlg.lbl.Running = \u6B63\u5728\u4EFF\u771F ... +SimuRunDlg.lbl.Simutime = \u4EFF\u771F\u65F6\u95F4: +SimuRunDlg.lbl.Velocity = \u901F\u5EA6: +SimuRunDlg.msg.Unabletosim = \u65E0\u6CD5\u8FD0\u884C\u4EFF\u771F: +SimuRunDlg.msg.errorOccurred = \u4EFF\u771F\u65F6\u51FA\u73B0\u9519\u8BEF: ! SimulationRunDialog -SimuRunDlg.title.RunSim = \u8fd0\u884c\u4eff\u771f... +SimuRunDlg.title.RunSim = \u8FD0\u884C\u4EFF\u771F... -SimulationEditDialog.btn.edit = \u7f16\u8f91 -SimulationEditDialog.btn.export = \u5bfc\u51fa -SimulationEditDialog.btn.plot = \u6570\u636e\u56fe -SimulationEditDialog.btn.simulate = \u4eff\u771f -SimulationEditDialog.btn.simulateAndPlot = \u4eff\u771f & \u6570\u636e\u56fe +SimulationEditDialog.btn.edit = \u7F16\u8F91 +SimulationEditDialog.btn.export = \u5BFC\u51FA +SimulationEditDialog.btn.plot = \u6570\u636E\u56FE +SimulationEditDialog.btn.simulate = \u4EFF\u771F +SimulationEditDialog.btn.simulateAndPlot = \u4EFF\u771F & \u6570\u636E\u56FE -SimulationModifierTree.OptimizationParameters = \u4f18\u5316\u53c2\u6570 +SimulationModifierTree.OptimizationParameters = \u4F18\u5316\u53C2\u6570 -SimulationPlotPanel.error.noPlotSelected = \u8bf7\u5728Y\u8f74\u6dfb\u52a0\u81f3\u5c111\u4e2a\u53d8\u91cf. -SimulationPlotPanel.error.noPlotSelected.title = \u6ca1\u6709\u6570\u636e +SimulationPlotPanel.error.noPlotSelected = \u8BF7\u5728Y\u8F74\u6DFB\u52A0\u81F3\u5C111\u4E2A\u53D8\u91CF. +SimulationPlotPanel.error.noPlotSelected.title = \u6CA1\u6709\u6570\u636E ! Sleeve -Sleeve.Sleeve = \u5c01\u5957 +Sleeve.Sleeve = \u5C01\u5957 -SleeveCfg.tab.General = \u5e38\u89c4 -SleeveCfg.tab.Generalproperties = \u5e38\u89c4\u5c5e\u6027 -SleeveCfg.tab.Innerdiam = \u5957\u7ba1\u5185\u76f4\u5f84: -SleeveCfg.tab.Length = \u957f\u5ea6: +SleeveCfg.tab.General = \u5E38\u89C4 +SleeveCfg.tab.Generalproperties = \u5E38\u89C4\u5C5E\u6027 +SleeveCfg.tab.Innerdiam = \u5957\u7BA1\u5185\u76F4\u5F84: +SleeveCfg.tab.Length = \u957F\u5EA6: !SleeveConfig -SleeveCfg.tab.Outerdiam = \u5957\u7ba1\u5916\u76f4\u5f84: -SleeveCfg.tab.Wallthickness = \u58c1\u539a: +SleeveCfg.tab.Outerdiam = \u5957\u7BA1\u5916\u76F4\u5F84: +SleeveCfg.tab.Wallthickness = \u58C1\u539A: -SlideShowDialog.btn.next = \u4e0b\u4e00\u9875 -SlideShowDialog.btn.prev = \u4e0a\u4e00\u9875 +SlideShowDialog.btn.next = \u4E0B\u4E00\u9875 +SlideShowDialog.btn.prev = \u4E0A\u4E00\u9875 -SlideShowLinkListener.error.msg = \u5f88\u62b1\u6b49, \u6240\u9009\u7684\u6559\u7a0b\u8fd8\u672a\u5b8c\u6210. -SlideShowLinkListener.error.title = \u6ca1\u6709\u627e\u5230\u76f8\u5173\u6559\u7a0b +SlideShowLinkListener.error.msg = \u5F88\u62B1\u6B49, \u6240\u9009\u7684\u6559\u7A0B\u8FD8\u672A\u5B8C\u6210. +SlideShowLinkListener.error.title = \u6CA1\u6709\u627E\u5230\u76F8\u5173\u6559\u7A0B -StabilityParameter.name = \u7a33\u5b9a\u6027 +StabilityParameter.name = \u7A33\u5B9A\u6027 -Stage.SeparationEvent.BURNOUT = \u672c\u7ea7\u53d1\u52a8\u673a\u71c3\u5c3d -Stage.SeparationEvent.EJECTION = \u672c\u7ea7\u5f39\u5c04 -Stage.SeparationEvent.IGNITION = \u672c\u7ea7\u53d1\u52a8\u673a\u70b9\u706b -Stage.SeparationEvent.LAUNCH = \u53d1\u5c04 -Stage.SeparationEvent.NEVER = \u4ece\u4e0d -Stage.SeparationEvent.UPPER_IGNITION = \u4e0a\u7ea7\u53d1\u52a8\u673a\u70b9\u706b +Stage.SeparationEvent.BURNOUT = \u672C\u7EA7\u53D1\u52A8\u673A\u71C3\u5C3D +Stage.SeparationEvent.EJECTION = \u672C\u7EA7\u5F39\u5C04 +Stage.SeparationEvent.IGNITION = \u672C\u7EA7\u53D1\u52A8\u673A\u70B9\u706B +Stage.SeparationEvent.LAUNCH = \u53D1\u5C04 +Stage.SeparationEvent.NEVER = \u4ECE\u4E0D +Stage.SeparationEvent.UPPER_IGNITION = \u4E0A\u7EA7\u53D1\u52A8\u673A\u70B9\u706B !Stage -Stage.Stage = \u706b\u7bad\u7ea7 +Stage.Stage = \u706B\u7BAD\u7EA7 ! StageAction -StageAction.Stage = \u7ea7 +StageAction.Stage = \u7EA7 -StageConfig.separation.lbl.plus = \u52a0 -StageConfig.separation.lbl.seconds = \u79d2 -StageConfig.separation.lbl.title = \u8bbe\u5b9a\u5206\u79bb\u65f6\u673a: +StageConfig.separation.lbl.plus = \u52A0 +StageConfig.separation.lbl.seconds = \u79D2 +StageConfig.separation.lbl.title = \u8BBE\u5B9A\u5206\u79BB\u65F6\u673A: !StageConfig -StageConfig.tab.Separation = \u5206\u79bb -StageConfig.tab.Separation.ttip = \u591a\u7ea7\u5206\u79bb\u9009\u9879 +StageConfig.tab.Separation = \u5206\u79BB +StageConfig.tab.Separation.ttip = \u591A\u7EA7\u5206\u79BB\u9009\u9879 -StorageOptChooser.lbl.Estfilesize = \u9884\u8ba1\u6587\u4ef6\u4f53\u79ef: -StorageOptChooser.lbl.Saveopt = \u4fdd\u5b58\u9009\u9879 +StorageOptChooser.lbl.Estfilesize = \u9884\u8BA1\u6587\u4EF6\u4F53\u79EF: +StorageOptChooser.lbl.Saveopt = \u4FDD\u5B58\u9009\u9879 ! StorageOptionChooser -StorageOptChooser.lbl.Simdatatostore = \u4fdd\u5b58\u4eff\u771f\u6570\u636e: -StorageOptChooser.lbl.longA1 = \u4fdd\u5b58\u6240\u6709\u4eff\u771f\u6570\u636e.
-StorageOptChooser.lbl.longA2 = \u6587\u4ef6\u4f53\u79ef\u4f1a\u5f88\u5927! -StorageOptChooser.lbl.longB1 = \u6bcf\u9694\u6570\u4e2a\u6570\u636e\u4fdd\u5b58\u4e00\u6b21.
-StorageOptChooser.lbl.longB2 = \u95f4\u9694\u8d8a\u5927\u6587\u4ef6\u4f53\u79ef\u8d8a\u5c0f. -StorageOptChooser.lbl.longC1 = \u4ec5\u4fdd\u7559\u7b80\u62a5\u8868\u683c\u4e2d\u663e\u793a\u7684\u6570\u636e.
-StorageOptChooser.lbl.longC2 = \u6587\u4ef6\u4f53\u79ef\u6700\u5c0f. -StorageOptChooser.lbl.longD1 = \u6839\u636e\u5f53\u524d\u8bbe\u7f6e\u6765\u4f30\u8ba1\u751f\u6210\u6587\u4ef6\u5927\u5927\u5c0f. -StorageOptChooser.lbl.seconds = \u79d2 -StorageOptChooser.rdbut.Allsimdata = \u6240\u6709\u4eff\u771f\u6570\u636e -StorageOptChooser.rdbut.Every = \u6bcf\u4e00\u4e2a -StorageOptChooser.rdbut.Onlyprimfig = \u4ec5\u4fdd\u7559\u4e3b\u8981\u6570\u636e -StorageOptChooser.ttip.Saveopt = \u4fdd\u5b58\u9009\u9879 +StorageOptChooser.lbl.Simdatatostore = \u4FDD\u5B58\u4EFF\u771F\u6570\u636E: +StorageOptChooser.lbl.longA1 = \u4FDD\u5B58\u6240\u6709\u4EFF\u771F\u6570\u636E.
+StorageOptChooser.lbl.longA2 = \u6587\u4EF6\u4F53\u79EF\u4F1A\u5F88\u5927! +StorageOptChooser.lbl.longB1 = \u6BCF\u9694\u6570\u4E2A\u6570\u636E\u4FDD\u5B58\u4E00\u6B21.
+StorageOptChooser.lbl.longB2 = \u95F4\u9694\u8D8A\u5927\u6587\u4EF6\u4F53\u79EF\u8D8A\u5C0F. +StorageOptChooser.lbl.longC1 = \u4EC5\u4FDD\u7559\u7B80\u62A5\u8868\u683C\u4E2D\u663E\u793A\u7684\u6570\u636E.
+StorageOptChooser.lbl.longC2 = \u6587\u4EF6\u4F53\u79EF\u6700\u5C0F. +StorageOptChooser.lbl.longD1 = \u6839\u636E\u5F53\u524D\u8BBE\u7F6E\u6765\u4F30\u8BA1\u751F\u6210\u6587\u4EF6\u5927\u5927\u5C0F. +StorageOptChooser.lbl.seconds = \u79D2 +StorageOptChooser.rdbut.Allsimdata = \u6240\u6709\u4EFF\u771F\u6570\u636E +StorageOptChooser.rdbut.Every = \u6BCF\u4E00\u4E2A +StorageOptChooser.rdbut.Onlyprimfig = \u4EC5\u4FDD\u7559\u4E3B\u8981\u6570\u636E +StorageOptChooser.ttip.Saveopt = \u4FDD\u5B58\u9009\u9879 ! Streamer -Streamer.Streamer = \u5f69\u5e26 +Streamer.Streamer = \u5F69\u5E26 -StreamerCfg.but.Reset = \u91cd\u7f6e -StreamerCfg.combo.ttip.MaterialModel = \u6750\u6599\u4f1a\u5f71\u54cd\u7ec4\u4ef6\u91cd\u91cf. -StreamerCfg.lbl.Altitude = \u9ad8\u5ea6: -StreamerCfg.lbl.Aspectratio = \u9ad8\u5bbd\u6bd4: -StreamerCfg.lbl.Automatic = \u81ea\u52a8 -StreamerCfg.lbl.Deploysat = \u5c55\u5f00\u65f6\u673a: +StreamerCfg.but.Reset = \u91CD\u7F6E +StreamerCfg.combo.ttip.MaterialModel = \u6750\u6599\u4F1A\u5F71\u54CD\u7EC4\u4EF6\u91CD\u91CF. +StreamerCfg.lbl.Altitude = \u9AD8\u5EA6: +StreamerCfg.lbl.Aspectratio = \u9AD8\u5BBD\u6BD4: +StreamerCfg.lbl.Automatic = \u81EA\u52A8 +StreamerCfg.lbl.Deploysat = \u5C55\u5F00\u65F6\u673A: StreamerCfg.lbl.Material = \u6750\u6599: -StreamerCfg.lbl.Packeddiam = \u98d8\u5e26\u5305\u76f4\u5f84: -StreamerCfg.lbl.Packedlength = \u98d8\u5e26\u5305\u957f\u5ea6: -StreamerCfg.lbl.Posrelativeto = \u76f8\u5bf9\u4f4d\u7f6e: -StreamerCfg.lbl.Radialdirection = \u5f84\u5411\u65b9\u5411: -StreamerCfg.lbl.Radialdistance = \u5f84\u5411\u8ddd\u79bb: -StreamerCfg.lbl.Striparea = \u98d8\u5e26\u9762\u79ef: +StreamerCfg.lbl.Packeddiam = \u98D8\u5E26\u5305\u76F4\u5F84: +StreamerCfg.lbl.Packedlength = \u98D8\u5E26\u5305\u957F\u5EA6: +StreamerCfg.lbl.Posrelativeto = \u76F8\u5BF9\u4F4D\u7F6E: +StreamerCfg.lbl.Radialdirection = \u5F84\u5411\u65B9\u5411: +StreamerCfg.lbl.Radialdistance = \u5F84\u5411\u8DDD\u79BB: +StreamerCfg.lbl.Striparea = \u98D8\u5E26\u9762\u79EF: ! StreamerConfig -StreamerCfg.lbl.Striplength = \u98d8\u5e26\u957f\u5ea6: -StreamerCfg.lbl.Stripwidth = \u98d8\u5e26\u5bbd\u5ea6: -StreamerCfg.lbl.longA1 = \u963b\u529b\u7cfb\u6570 CD: -StreamerCfg.lbl.longB1 = \u963b\u529b\u7cfb\u6570\u7531\u98d8\u5e26\u9762\u79ef\u51b3\u5b9a.
-StreamerCfg.lbl.longB2 = \u9ad8\u963b\u529b\u7cfb\u6570\u80fd\u653e\u7f13\u4e0b\u964d\u901f\u7387. -StreamerCfg.lbl.longC1 = \u963b\u529b\u7cfb\u6570\u7531\u98d8\u5e26\u9762\u79ef\u51b3\u5b9a. -StreamerCfg.lbl.plus = \u52a0 -StreamerCfg.lbl.plusdelay = \u52a0 -StreamerCfg.lbl.seconds = \u79d2 -StreamerCfg.tab.General = \u5e38\u89c4 -StreamerCfg.tab.Radialpos = \u5f84\u5411\u4f4d\u7f6e -StreamerCfg.tab.ttip.General = \u5e38\u89c4\u5c5e\u6027 -StreamerCfg.tab.ttip.Radialpos = \u5f84\u5411\u4f4d\u7f6e\u8bbe\u7f6e +StreamerCfg.lbl.Striplength = \u98D8\u5E26\u957F\u5EA6: +StreamerCfg.lbl.Stripwidth = \u98D8\u5E26\u5BBD\u5EA6: +StreamerCfg.lbl.longA1 = \u963B\u529B\u7CFB\u6570 CD: +StreamerCfg.lbl.longB1 = \u963B\u529B\u7CFB\u6570\u7531\u98D8\u5E26\u9762\u79EF\u51B3\u5B9A.
+StreamerCfg.lbl.longB2 = \u9AD8\u963B\u529B\u7CFB\u6570\u80FD\u653E\u7F13\u4E0B\u964D\u901F\u7387. +StreamerCfg.lbl.longC1 = \u963B\u529B\u7CFB\u6570\u7531\u98D8\u5E26\u9762\u79EF\u51B3\u5B9A. +StreamerCfg.lbl.plus = \u52A0 +StreamerCfg.lbl.plusdelay = \u52A0 +StreamerCfg.lbl.seconds = \u79D2 +StreamerCfg.tab.General = \u5E38\u89C4 +StreamerCfg.tab.Radialpos = \u5F84\u5411\u4F4D\u7F6E +StreamerCfg.tab.ttip.General = \u5E38\u89C4\u5C5E\u6027 +StreamerCfg.tab.ttip.Radialpos = \u5F84\u5411\u4F4D\u7F6E\u8BBE\u7F6E -TCMotorSelPan.Diameter = \u76f4\u5f84 -TCMotorSelPan.Length = \u957f\u5ea6 -TCMotorSelPan.MotorMountDimensions = \u53d1\u52a8\u673a\u5ea7\u5c3a\u5bf8: -TCMotorSelPan.MotorSize = \u53d1\u52a8\u673a\u5c3a\u5bf8 +TCMotorSelPan.Diameter = \u76F4\u5F84 +TCMotorSelPan.Length = \u957F\u5EA6 +TCMotorSelPan.MotorMountDimensions = \u53D1\u52A8\u673A\u5EA7\u5C3A\u5BF8: +TCMotorSelPan.MotorSize = \u53D1\u52A8\u673A\u5C3A\u5BF8 TCMotorSelPan.btn.checkAll = \u5168\u9009 -TCMotorSelPan.btn.checkNone = \u5168\u6e05\u7a7a -TCMotorSelPan.btn.close = \u5173\u95ed -TCMotorSelPan.btn.details = \u663e\u793a\u8be6\u60c5 -TCMotorSelPan.btn.filter = \u7b5b\u9009\u53d1\u52a8\u673a -TCMotorSelPan.checkbox.hideSimilar = \u9690\u85cf\u76f8\u4f3c\u7684\u63a8\u529b\u66f2\u7ebf -TCMotorSelPan.checkbox.hideUsed = \u9690\u85cf\u5df2\u4f7f\u7528\u7684\u53d1\u52a8\u673a -TCMotorSelPan.checkbox.limitdiameter = \u76f4\u5f84\u4e0d\u8d85\u8fc7\u5f53\u524d\u53d1\u52a8\u673a\u5ea7\u76f4\u5f84 -TCMotorSelPan.checkbox.limitlength = \u957f\u5ea6\u4e0d\u8d85\u8fc7\u5f53\u524d\u53d1\u52a8\u673a\u5ea7\u957f\u5ea6 -TCMotorSelPan.delayBox.None = \u65e0 -TCMotorSelPan.equalsIgnoreCase.None = \u65e0 -TCMotorSelPan.lbl.Avgthrust = \u5e73\u5747\u63a8\u529b: -TCMotorSelPan.lbl.Burntime = \u71c3\u70e7\u65f6\u95f4: -TCMotorSelPan.lbl.Datapoints = \u6570\u636e\u70b9: +TCMotorSelPan.btn.checkNone = \u5168\u6E05\u7A7A +TCMotorSelPan.btn.close = \u5173\u95ED +TCMotorSelPan.btn.details = \u663E\u793A\u8BE6\u60C5 +TCMotorSelPan.btn.filter = \u7B5B\u9009\u53D1\u52A8\u673A +TCMotorSelPan.checkbox.hideSimilar = \u9690\u85CF\u76F8\u4F3C\u7684\u63A8\u529B\u66F2\u7EBF +TCMotorSelPan.checkbox.hideUsed = \u9690\u85CF\u5DF2\u4F7F\u7528\u7684\u53D1\u52A8\u673A +TCMotorSelPan.checkbox.limitdiameter = \u76F4\u5F84\u4E0D\u8D85\u8FC7\u5F53\u524D\u53D1\u52A8\u673A\u5EA7\u76F4\u5F84 +TCMotorSelPan.checkbox.limitlength = \u957F\u5EA6\u4E0D\u8D85\u8FC7\u5F53\u524D\u53D1\u52A8\u673A\u5EA7\u957F\u5EA6 +TCMotorSelPan.delayBox.None = \u65E0 +TCMotorSelPan.equalsIgnoreCase.None = \u65E0 +TCMotorSelPan.lbl.Avgthrust = \u5E73\u5747\u63A8\u529B: +TCMotorSelPan.lbl.Burntime = \u71C3\u70E7\u65F6\u95F4: +TCMotorSelPan.lbl.Datapoints = \u6570\u636E\u70B9: TCMotorSelPan.lbl.Digest = \u6458\u8981: -TCMotorSelPan.lbl.Ejectionchargedelay = \u5f39\u5c04\u5ef6\u65f6: -TCMotorSelPan.lbl.Emptymass = \u71c3\u5c3d\u8d28\u91cf: -TCMotorSelPan.lbl.Launchmass = \u53d1\u5c04\u8d28\u91cf: -TCMotorSelPan.lbl.Maxthrust = \u6700\u5927\u63a8\u529b: -TCMotorSelPan.lbl.NumberofsecondsorNone = (\u79d2\u6570\u6216"\u65e0") -TCMotorSelPan.lbl.Search = \u641c\u7d22: -TCMotorSelPan.lbl.Selectthrustcurve = \u9009\u62e9\u63a8\u529b\u66f2\u7ebf: +TCMotorSelPan.lbl.Ejectionchargedelay = \u5F39\u5C04\u5EF6\u65F6: +TCMotorSelPan.lbl.Emptymass = \u71C3\u5C3D\u8D28\u91CF: +TCMotorSelPan.lbl.Launchmass = \u53D1\u5C04\u8D28\u91CF: +TCMotorSelPan.lbl.Maxthrust = \u6700\u5927\u63A8\u529B: +TCMotorSelPan.lbl.NumberofsecondsorNone = (\u79D2\u6570\u6216"\u65E0") +TCMotorSelPan.lbl.Search = \u641C\u7D22: +TCMotorSelPan.lbl.Selectthrustcurve = \u9009\u62E9\u63A8\u529B\u66F2\u7EBF: ! ThrustCurveMotorSelectionPanel -TCMotorSelPan.lbl.Selrocketmotor = \u9009\u62e9\u706b\u7bad\u53d1\u52a8\u673a: -TCMotorSelPan.lbl.Totalimpulse = \u603b\u51b2\u91cf: -TCMotorSelPan.noDescription = \u63cf\u8ff0\u4e0d\u53ef\u7528. -TCMotorSelPan.title.Thrust = \u63a8\u529b -TCMotorSelPan.title.Thrustcurve = \u63a8\u529b\u66f2\u7ebf: +TCMotorSelPan.lbl.Selrocketmotor = \u9009\u62E9\u706B\u7BAD\u53D1\u52A8\u673A: +TCMotorSelPan.lbl.Totalimpulse = \u603B\u51B2\u91CF: +TCMotorSelPan.noDescription = \u63CF\u8FF0\u4E0D\u53EF\u7528. +TCMotorSelPan.title.Thrust = \u63A8\u529B +TCMotorSelPan.title.Thrustcurve = \u63A8\u529B\u66F2\u7EBF: -TCurveMotor.ttip.avgThrust = \u5e73\u5747\u63a8\u529b: -TCurveMotor.ttip.burnTime = \u71c3\u70e7\u65f6\u95f4: -TCurveMotor.ttip.diameter = \u76f4\u5f84: -TCurveMotor.ttip.emptyMass = \u71c3\u5c3d\u8d28\u91cf: -TCurveMotor.ttip.launchMass = \u53d1\u5c04\u8d28\u91cf: -TCurveMotor.ttip.length = \u957f\u5ea6: -TCurveMotor.ttip.maxThrust = \u6700\u5927\u63a8\u529b: -TCurveMotor.ttip.totalImpulse = \u603b\u51b2\u529b: +TCurveMotor.ttip.avgThrust = \u5E73\u5747\u63A8\u529B: +TCurveMotor.ttip.burnTime = \u71C3\u70E7\u65F6\u95F4: +TCurveMotor.ttip.diameter = \u76F4\u5F84: +TCurveMotor.ttip.emptyMass = \u71C3\u5C3D\u8D28\u91CF: +TCurveMotor.ttip.launchMass = \u53D1\u5C04\u8D28\u91CF: +TCurveMotor.ttip.length = \u957F\u5EA6: +TCurveMotor.ttip.maxThrust = \u6700\u5927\u63A8\u529B: +TCurveMotor.ttip.totalImpulse = \u603B\u51B2\u529B: -TCurveMotorCol.DESIGNATION = \u540d\u79f0 -TCurveMotorCol.DIAMETER = \u76f4\u5f84 -TCurveMotorCol.LENGTH = \u957f\u5ea6 +TCurveMotorCol.DESIGNATION = \u540D\u79F0 +TCurveMotorCol.DIAMETER = \u76F4\u5F84 +TCurveMotorCol.LENGTH = \u957F\u5EA6 ! ThrustCurveMotorColumns TCurveMotorCol.MANUFACTURER = \u5236\u9020\u5546 -TCurveMotorCol.TOTAL_IMPULSE = \u603b\u51b2 -TCurveMotorCol.TYPE = \u7c7b\u578b +TCurveMotorCol.TOTAL_IMPULSE = \u603B\u51B2 +TCurveMotorCol.TYPE = \u7C7B\u578B -TextureWrap.Clamp = \u56fa\u5b9a\u8fb9\u7f18\u50cf\u7d20 -TextureWrap.Mirror = \u91cd\u590d & \u955c\u50cf +TextureWrap.Clamp = \u56FA\u5B9A\u8FB9\u7F18\u50CF\u7D20 +TextureWrap.Mirror = \u91CD\u590D & \u955C\u50CF ! Texture Wrap Modes -TextureWrap.Repeat = \u91cd\u590d -TextureWrap.Sticker = \u8d34\u7eb8 +TextureWrap.Repeat = \u91CD\u590D +TextureWrap.Sticker = \u8D34\u7EB8 -ThicknessRingCompCfg.tab.General = \u5e38\u89c4 -ThicknessRingCompCfg.tab.Generalprop = \u5e38\u89c4\u5c5e\u6027 -ThicknessRingCompCfg.tab.Innerdiam = \u5185\u76f4\u5f84: -ThicknessRingCompCfg.tab.Length = \u957f\u5ea6: +ThicknessRingCompCfg.tab.General = \u5E38\u89C4 +ThicknessRingCompCfg.tab.Generalprop = \u5E38\u89C4\u5C5E\u6027 +ThicknessRingCompCfg.tab.Innerdiam = \u5185\u76F4\u5F84: +ThicknessRingCompCfg.tab.Length = \u957F\u5EA6: ! ThicknessRingComponentConfig -ThicknessRingCompCfg.tab.Outerdiam = \u5916\u76f4\u5f84: -ThicknessRingCompCfg.tab.Wallthickness = \u58c1\u539a: +ThicknessRingCompCfg.tab.Outerdiam = \u5916\u76F4\u5F84: +ThicknessRingCompCfg.tab.Wallthickness = \u58C1\u539A: -TotalFlightTimeParameter.name = \u603b\u98de\u884c\u65f6\u95f4 +TotalFlightTimeParameter.name = \u603B\u98DE\u884C\u65F6\u95F4 ! Transition -Transition.Transition = \u7ea7\u95f4\u6bb5 +Transition.Transition = \u7EA7\u95F4\u6BB5 -TransitionCfg.checkbox.Automatic = \u81ea\u52a8 -TransitionCfg.checkbox.Clipped = \u88c1\u526a -TransitionCfg.checkbox.Filled = \u5b9e\u5fc3 -TransitionCfg.lbl.Aftdiam = \u540e\u76f4\u5f84: -TransitionCfg.lbl.Forediam = \u524d\u76f4\u5f84 -TransitionCfg.lbl.Shapeparam = \u5f62\u72b6\u53c2\u6570: -TransitionCfg.lbl.Transitionlength = \u7ea7\u95f4\u6bb5\u76f4\u5f84: +TransitionCfg.checkbox.Automatic = \u81EA\u52A8 +TransitionCfg.checkbox.Clipped = \u88C1\u526A +TransitionCfg.checkbox.Filled = \u5B9E\u5FC3 +TransitionCfg.lbl.Aftdiam = \u540E\u76F4\u5F84: +TransitionCfg.lbl.Forediam = \u524D\u76F4\u5F84 +TransitionCfg.lbl.Shapeparam = \u5F62\u72B6\u53C2\u6570: +TransitionCfg.lbl.Transitionlength = \u7EA7\u95F4\u6BB5\u76F4\u5F84: ! TransitionConfig -TransitionCfg.lbl.Transitionshape = \u7ea7\u95f4\u6bb5\u5f62\u72b6: -TransitionCfg.lbl.Wallthickness = \u58c1\u539a: -TransitionCfg.tab.General = \u5e38\u89c4 -TransitionCfg.tab.Generalproperties = \u5e38\u89c4\u5c5e\u6027 -TransitionCfg.tab.Shoulder = \u8fde\u63a5\u5904 -TransitionCfg.tab.Shoulderproperties = \u8fde\u63a5\u5904\u5c5e\u6027 +TransitionCfg.lbl.Transitionshape = \u7EA7\u95F4\u6BB5\u5F62\u72B6: +TransitionCfg.lbl.Wallthickness = \u58C1\u539A: +TransitionCfg.tab.General = \u5E38\u89C4 +TransitionCfg.tab.Generalproperties = \u5E38\u89C4\u5C5E\u6027 +TransitionCfg.tab.Shoulder = \u8FDE\u63A5\u5904 +TransitionCfg.tab.Shoulderproperties = \u8FDE\u63A5\u5904\u5C5E\u6027 ! TrapezoidFinSet -TrapezoidFinSet.TrapezoidFinSet = \u68af\u5f62\u7a33\u5b9a\u7ffc +TrapezoidFinSet.TrapezoidFinSet = \u68AF\u5F62\u7A33\u5B9A\u7FFC -TrapezoidFinSetCfg.lbl.Fincant = \u7a33\u5b9a\u7ffc\u9762\u89d2: -TrapezoidFinSetCfg.lbl.FincrossSection = \u7a33\u5b9a\u7ffc\u6a2a\u622a\u9762: -TrapezoidFinSetCfg.lbl.Finrotation = \u7a33\u5b9a\u7ffc\u65cb\u89d2: -TrapezoidFinSetCfg.lbl.Height = \u9ad8\u5ea6: +TrapezoidFinSetCfg.lbl.Fincant = \u7A33\u5B9A\u7FFC\u9762\u89D2: +TrapezoidFinSetCfg.lbl.FincrossSection = \u7A33\u5B9A\u7FFC\u6A2A\u622A\u9762: +TrapezoidFinSetCfg.lbl.Finrotation = \u7A33\u5B9A\u7FFC\u65CB\u89D2: +TrapezoidFinSetCfg.lbl.Height = \u9AD8\u5EA6: ! TrapezoidFinSetConfig -TrapezoidFinSetCfg.lbl.Nbroffins = \u7a33\u5b9a\u7ffc\u6570\u91cf: -TrapezoidFinSetCfg.lbl.Posrelativeto = \u76f8\u5bf9\u4f4d\u7f6e: -TrapezoidFinSetCfg.lbl.Rootchord = \u7ffc\u6839\u5f26: -TrapezoidFinSetCfg.lbl.Sweepangle = \u540e\u63a0\u89d2: -TrapezoidFinSetCfg.lbl.Sweeplength = \u540e\u63a0\u957f\u5ea6: -TrapezoidFinSetCfg.lbl.Thickness = \u539a\u5ea6: -TrapezoidFinSetCfg.lbl.Tipchord = \u7ffc\u68a2\u5f26: -TrapezoidFinSetCfg.lbl.plus = \u52a0 -TrapezoidFinSetCfg.lbl.ttip.Fincant = \u7a33\u5b9a\u7ffc\u7ffc\u9762\u4e0e\u7bad\u4f53\u4e4b\u95f4\u7684\u5939\u89d2. -TrapezoidFinSetCfg.lbl.ttip.Finrotation = \u7a33\u5b9a\u7ffc\u7ec4\u5408\u91cc\u7b2c\u4e00\u7247\u7684\u89d2\u5ea6 -TrapezoidFinSetCfg.lbl.ttip.Nbroffins = \u68af\u5f62\u7a33\u5b9a\u7ffc\u7684\u6570\u91cf. -TrapezoidFinSetCfg.tab.General = \u5e38\u89c4 -TrapezoidFinSetCfg.tab.Generalproperties = \u5e38\u89c4\u5c5e\u6027 +TrapezoidFinSetCfg.lbl.Nbroffins = \u7A33\u5B9A\u7FFC\u6570\u91CF: +TrapezoidFinSetCfg.lbl.Posrelativeto = \u76F8\u5BF9\u4F4D\u7F6E: +TrapezoidFinSetCfg.lbl.Rootchord = \u7FFC\u6839\u5F26: +TrapezoidFinSetCfg.lbl.Sweepangle = \u540E\u63A0\u89D2: +TrapezoidFinSetCfg.lbl.Sweeplength = \u540E\u63A0\u957F\u5EA6: +TrapezoidFinSetCfg.lbl.Thickness = \u539A\u5EA6: +TrapezoidFinSetCfg.lbl.Tipchord = \u7FFC\u68A2\u5F26: +TrapezoidFinSetCfg.lbl.plus = \u52A0 +TrapezoidFinSetCfg.lbl.ttip.Fincant = \u7A33\u5B9A\u7FFC\u7FFC\u9762\u4E0E\u7BAD\u4F53\u4E4B\u95F4\u7684\u5939\u89D2. +TrapezoidFinSetCfg.lbl.ttip.Finrotation = \u7A33\u5B9A\u7FFC\u7EC4\u5408\u91CC\u7B2C\u4E00\u7247\u7684\u89D2\u5EA6 +TrapezoidFinSetCfg.lbl.ttip.Nbroffins = \u68AF\u5F62\u7A33\u5B9A\u7FFC\u7684\u6570\u91CF. +TrapezoidFinSetCfg.tab.General = \u5E38\u89C4 +TrapezoidFinSetCfg.tab.Generalproperties = \u5E38\u89C4\u5C5E\u6027 ! TubeCoupler -TubeCoupler.TubeCoupler = \u8fde\u63a5\u5668 +TubeCoupler.TubeCoupler = \u8FDE\u63A5\u5668 -Warning.DISCONTINUITY = \u7bad\u4f53\u76f4\u5f84\u4e0d\u8fde\u7eed. -Warning.FILE_INVALID_PARAMETER = \u65e0\u6548\u53c2\u6570, \u5ffd\u7565. -Warning.JAGGED_EDGED_FIN = \u952f\u9f7f\u7ffc\u9884\u6d4b\u53ef\u80fd\u4e0d\u51c6\u786e. -Warning.LISTENERS_AFFECTED = \u76d1\u542c\u5668\u4fee\u6539\u4e86\u98de\u884c\u4eff\u771f +Warning.DISCONTINUITY = \u7BAD\u4F53\u76F4\u5F84\u4E0D\u8FDE\u7EED. +Warning.FILE_INVALID_PARAMETER = \u65E0\u6548\u53C2\u6570, \u5FFD\u7565. +Warning.JAGGED_EDGED_FIN = \u952F\u9F7F\u7FFC\u9884\u6D4B\u53EF\u80FD\u4E0D\u51C6\u786E. +Warning.LISTENERS_AFFECTED = \u76D1\u542C\u5668\u4FEE\u6539\u4E86\u98DE\u884C\u4EFF\u771F ! Warning -Warning.LargeAOA.str1 = \u653b\u89d2\u592a\u5927. -Warning.LargeAOA.str2 = \u653b\u89d2\u592a\u5927 ( -Warning.PARALLEL_FINS = \u592a\u591a\u5e73\u884c\u7684\u5c3e\u7ffc -Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = \u5728\u5f15\u64ce\u4ecd\u7136\u5de5\u4f5c\u7684\u65f6\u5019\u56de\u6536\u8bbe\u5907\u6253\u5f00. -Warning.RECOVERY_HIGH_SPEED = \u56de\u6536\u88c5\u7f6e\u5206\u79bb\u65f6\u901f\u5ea6\u592a\u9ad8 -Warning.RECOVERY_LAUNCH_ROD = \u56de\u6536\u88c5\u7f6e\u5728\u53d1\u5c04\u67b6\u4e0a\u89e6\u53d1. -Warning.SUPERSONIC = \u8d85\u97f3\u901f\u73af\u5883\u4e0b\u7684\u8ba1\u7b97\u7ed3\u679c\u53ef\u80fd\u4e0d\u51c6\u786e. -Warning.THICK_FIN = \u539a\u7ffc\u6a21\u578b\u53ef\u80fd\u4e0d\u51c6\u786e. +Warning.LargeAOA.str1 = \u653B\u89D2\u592A\u5927. +Warning.LargeAOA.str2 = \u653B\u89D2\u592A\u5927 ( +Warning.PARALLEL_FINS = \u592A\u591A\u5E73\u884C\u7684\u5C3E\u7FFC +Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = \u5728\u5F15\u64CE\u4ECD\u7136\u5DE5\u4F5C\u7684\u65F6\u5019\u56DE\u6536\u8BBE\u5907\u6253\u5F00. +Warning.RECOVERY_HIGH_SPEED = \u56DE\u6536\u88C5\u7F6E\u5206\u79BB\u65F6\u901F\u5EA6\u592A\u9AD8 +Warning.RECOVERY_LAUNCH_ROD = \u56DE\u6536\u88C5\u7F6E\u5728\u53D1\u5C04\u67B6\u4E0A\u89E6\u53D1. +Warning.SUPERSONIC = \u8D85\u97F3\u901F\u73AF\u5883\u4E0B\u7684\u8BA1\u7B97\u7ED3\u679C\u53EF\u80FD\u4E0D\u51C6\u786E. +Warning.THICK_FIN = \u539A\u7FFC\u6A21\u578B\u53EF\u80FD\u4E0D\u51C6\u786E. -bugreport.dlg.but.Sendbugreport = \u53d1\u9001\u9519\u8bef\u62a5\u544a -bugreport.dlg.but.Sendbugreport.Ttip = \u81ea\u52a8\u53d1\u9001\u9519\u8bef\u62a5\u544a\u7ed9OpenRocket\u5f00\u53d1\u7ec4 -bugreport.dlg.connectedInternet = \u5982\u679c\u8fde\u63a5\u5230\u4e92\u8054\u7f51\uff0c\u70b9\u51fb\u53d1\u9001\u9519\u8bef\u62a5\u544a\u5373\u53ef -bugreport.dlg.failedmsg1 = OpenRocket\u65e0\u6cd5\u53d1\u9001\u9519\u8bef\u62a5\u544a: -bugreport.dlg.failedmsg2 = \u8bf7\u624b\u52a8\u53d1\u9001\u9519\u8bef\u62a5\u544a\u81f3 -bugreport.dlg.failedmsg3 = \u53d1\u9001\u65f6\u53d1\u751f\u9519\u8bef -bugreport.dlg.otherwise = \u5426\u5219\u8bf7\u5c06\u9519\u8bef\u62a5\u544a\u53d1\u9001\u5230: -bugreport.dlg.provideDescription = \u8bf7\u9996\u5148\u63d0\u4f9b\u9519\u8bef\u63cf\u8ff0. -bugreport.dlg.provideDescription.title = \u7f3a\u5c11\u9519\u8bef\u63cf\u8ff0 -bugreport.dlg.successmsg1 = \u9519\u8bef\u62a5\u544a\u5df2\u53d1\u9001 -bugreport.dlg.successmsg2 = \u611f\u8c22\u60a8\u5bf9OpenRocket\u7684\u652f\u6301\uff01 -bugreport.dlg.successmsg3 = \u9519\u8bef\u62a5\u544a\u5df2\u53d1\u9001 +bugreport.dlg.but.Sendbugreport = \u53D1\u9001\u9519\u8BEF\u62A5\u544A +bugreport.dlg.but.Sendbugreport.Ttip = \u81EA\u52A8\u53D1\u9001\u9519\u8BEF\u62A5\u544A\u7ED9OpenRocket\u5F00\u53D1\u7EC4 +bugreport.dlg.connectedInternet = \u5982\u679C\u8FDE\u63A5\u5230\u4E92\u8054\u7F51\uFF0C\u70B9\u51FB\u53D1\u9001\u9519\u8BEF\u62A5\u544A\u5373\u53EF +bugreport.dlg.failedmsg1 = OpenRocket\u65E0\u6CD5\u53D1\u9001\u9519\u8BEF\u62A5\u544A: +bugreport.dlg.failedmsg2 = \u8BF7\u624B\u52A8\u53D1\u9001\u9519\u8BEF\u62A5\u544A\u81F3 +bugreport.dlg.failedmsg3 = \u53D1\u9001\u65F6\u53D1\u751F\u9519\u8BEF +bugreport.dlg.otherwise = \u5426\u5219\u8BF7\u5C06\u9519\u8BEF\u62A5\u544A\u53D1\u9001\u5230: +bugreport.dlg.provideDescription = \u8BF7\u9996\u5148\u63D0\u4F9B\u9519\u8BEF\u63CF\u8FF0. +bugreport.dlg.provideDescription.title = \u7F3A\u5C11\u9519\u8BEF\u63CF\u8FF0 +bugreport.dlg.successmsg1 = \u9519\u8BEF\u62A5\u544A\u5DF2\u53D1\u9001 +bugreport.dlg.successmsg2 = \u611F\u8C22\u60A8\u5BF9OpenRocket\u7684\u652F\u6301\uFF01 +bugreport.dlg.successmsg3 = \u9519\u8BEF\u62A5\u544A\u5DF2\u53D1\u9001 ! Bug Report dialog -bugreport.dlg.title = \u9519\u8bef\u62a5\u544a -bugreport.lbl.Theinformation = \u4ee5\u4e0a\u4fe1\u606f\u53ef\u80fd\u4f1a\u88ab\u5199\u5165\u9519\u8bef\u62a5\u544a\u4e2d. \u8bf7\u786e\u8ba4\u6ca1\u6709\u5305\u542b\u4efb\u4f55\u60a8\u4e0d\u613f\u610f\u516c\u5f00\u7684\u654f\u611f\u4fe1\u606f -bugreport.reportDialog.txt = \u60a8\u53ef\u4ee5\u586b\u5199\u5e76\u53d1\u9001\u4ee5\u4e0b\u8868\u683c\u5411OpenRocket\u62a5\u544a\u9519\u8bef
\u60a8\u4e5f\u53ef\u4ee5\u5728OpenRocket\u7f51\u7ad9\u62a5\u544a\u9519\u8bef\u5e76\u9644\u4e0a\u76f8\u5173\u6587\u4ef6 -bugreport.reportDialog.txt2 = \u8bf7\u7b80\u8ff0\u5f53\u5f02\u5e38\u53d1\u751f\u7684\u65f6\u5019\u60a8\u6b63\u5728\u505a\u4ec0\u4e48 +bugreport.dlg.title = \u9519\u8BEF\u62A5\u544A +bugreport.lbl.Theinformation = \u4EE5\u4E0A\u4FE1\u606F\u53EF\u80FD\u4F1A\u88AB\u5199\u5165\u9519\u8BEF\u62A5\u544A\u4E2D. \u8BF7\u786E\u8BA4\u6CA1\u6709\u5305\u542B\u4EFB\u4F55\u60A8\u4E0D\u613F\u610F\u516C\u5F00\u7684\u654F\u611F\u4FE1\u606F +bugreport.reportDialog.txt = \u60A8\u53EF\u4EE5\u586B\u5199\u5E76\u53D1\u9001\u4EE5\u4E0B\u8868\u683C\u5411OpenRocket\u62A5\u544A\u9519\u8BEF
\u60A8\u4E5F\u53EF\u4EE5\u5728OpenRocket\u7F51\u7AD9\u62A5\u544A\u9519\u8BEF\u5E76\u9644\u4E0A\u76F8\u5173\u6587\u4EF6 +bugreport.reportDialog.txt2 = \u8BF7\u7B80\u8FF0\u5F53\u5F02\u5E38\u53D1\u751F\u7684\u65F6\u5019\u60A8\u6B63\u5728\u505A\u4EC0\u4E48 -button.cancel = \u53d6\u6d88 -button.close = \u5173\u95ed +button.cancel = \u53D6\u6D88 +button.close = \u5173\u95ED ! Labels used in buttons of dialog windows # TODO: Rename these to "btn.xxx" button.ok = OK ! Component add buttons -compaddbuttons.Bodycompandfinsets = \u7bad\u4f53\u90e8\u4ef6\u548c\u7a33\u5b9a\u7ffc -compaddbuttons.Bodytube = \u7bad\u4f53 -compaddbuttons.Bulkhead = \u9694\u677f -compaddbuttons.Centeringring = \u4e2d\u5fc3\u73af -compaddbuttons.Coupler = \u8fde\u63a5\u5668 -compaddbuttons.Donotaskmeagain = \u4e0d\u518d\u8be2\u95ee -compaddbuttons.Elliptical = \u692d\u5706\u7a33\u5b9a\u7ffc -compaddbuttons.Engineblock = \u53d1\u52a8\u673a -compaddbuttons.Freeform = \u81ea\u7531\u66f2\u9762 -compaddbuttons.Innercomponent = \u5185\u90e8\u90e8\u4ef6 -compaddbuttons.Innertube = \u5185\u7b52 -compaddbuttons.Launchlug = \u53d1\u5c04\u5957\u67c4 -compaddbuttons.Masscomponent = \u4e3b\u8f7d\u8377 -compaddbuttons.Massobjects = \u8f7d\u8377\u90e8\u4ef6 +compaddbuttons.Bodycompandfinsets = \u7BAD\u4F53\u90E8\u4EF6\u548C\u7A33\u5B9A\u7FFC +compaddbuttons.Bodytube = \u7BAD\u4F53 +compaddbuttons.Bulkhead = \u9694\u677F +compaddbuttons.Centeringring = \u4E2D\u5FC3\u73AF +compaddbuttons.Coupler = \u8FDE\u63A5\u5668 +compaddbuttons.Donotaskmeagain = \u4E0D\u518D\u8BE2\u95EE +compaddbuttons.Elliptical = \u692D\u5706\u7A33\u5B9A\u7FFC +compaddbuttons.Engineblock = \u53D1\u52A8\u673A +compaddbuttons.Freeform = \u81EA\u7531\u66F2\u9762 +compaddbuttons.Innercomponent = \u5185\u90E8\u90E8\u4EF6 +compaddbuttons.Innertube = \u5185\u7B52 +compaddbuttons.Launchlug = \u53D1\u5C04\u5957\u67C4 +compaddbuttons.Masscomponent = \u4E3B\u8F7D\u8377 +compaddbuttons.Massobjects = \u8F7D\u8377\u90E8\u4EF6 compaddbuttons.Nosecone = \u5934\u9525 -compaddbuttons.Parachute = \u964d\u843d\u4f1e -compaddbuttons.Selectcomppos = \u9009\u62e9\u90e8\u4ef6\u4f4d\u7f6e -compaddbuttons.Shockcord = \u51cf\u9707\u7d22 -compaddbuttons.Streamer = \u98d8\u5e26 -compaddbuttons.Transition = \u7ea7\u95f4\u6bb5 -compaddbuttons.Trapezoidal = \u68af\u5f62\u7a33\u5b9a\u7ffc -compaddbuttons.askPosition.Addtotheend = \u5728\u5c3e\u90e8\u6dfb\u52a0 -compaddbuttons.askPosition.Cancel = \u53d6\u6d88 -compaddbuttons.askPosition.Inserthere = \u5728\u6b64\u63d2\u5165 -compaddbuttons.lbl.Youcanchange = \u4f60\u53ef\u4ee5\u5728\u9996\u9009\u9879\u4e2d\u8bbe\u5b9a\u9ed8\u8ba4\u64cd\u4f5c. -compaddbuttons.lbl.insertcomp = \u7d27\u63a5\u5f53\u524d\u7ec4\u4ef6\u6dfb\u52a0\u65b0\u7ec4\u4ef6\u6216\u5728\u5c3e\u90e8\u6dfb\u52a0\u65b0\u7ec4\u4ef6 +compaddbuttons.Parachute = \u964D\u843D\u4F1E +compaddbuttons.Selectcomppos = \u9009\u62E9\u90E8\u4EF6\u4F4D\u7F6E +compaddbuttons.Shockcord = \u51CF\u9707\u7D22 +compaddbuttons.Streamer = \u98D8\u5E26 +compaddbuttons.Transition = \u7EA7\u95F4\u6BB5 +compaddbuttons.Trapezoidal = \u68AF\u5F62\u7A33\u5B9A\u7FFC +compaddbuttons.askPosition.Addtotheend = \u5728\u5C3E\u90E8\u6DFB\u52A0 +compaddbuttons.askPosition.Cancel = \u53D6\u6D88 +compaddbuttons.askPosition.Inserthere = \u5728\u6B64\u63D2\u5165 +compaddbuttons.lbl.Youcanchange = \u4F60\u53EF\u4EE5\u5728\u9996\u9009\u9879\u4E2D\u8BBE\u5B9A\u9ED8\u8BA4\u64CD\u4F5C. +compaddbuttons.lbl.insertcomp = \u7D27\u63A5\u5F53\u524D\u7EC4\u4EF6\u6DFB\u52A0\u65B0\u7EC4\u4EF6\u6216\u5728\u5C3E\u90E8\u6DFB\u52A0\u65B0\u7EC4\u4EF6 -componentanalysisdlg.TOTAL = \u603b\u5171 -componentanalysisdlg.TabStability = \u7a33\u5b9a\u6027 -componentanalysisdlg.TabStability.Col = \u7ec4\u4ef6 -componentanalysisdlg.TabStability.Col.CG = \u91cd\u5fc3 -componentanalysisdlg.TabStability.Col.CP = \u538b\u5fc3 +componentanalysisdlg.TOTAL = \u603B\u5171 +componentanalysisdlg.TabStability = \u7A33\u5B9A\u6027 +componentanalysisdlg.TabStability.Col = \u7EC4\u4EF6 +componentanalysisdlg.TabStability.Col.CG = \u91CD\u5FC3 +componentanalysisdlg.TabStability.Col.CP = \u538B\u5FC3 !componentanalysisdlg.But.close = \u5173\u95ed -componentanalysisdlg.TabStability.Col.Component = \u7ec4\u4ef6 -componentanalysisdlg.TabStability.Col.Mass = \u8d28\u91cf -componentanalysisdlg.TabStability.ttip = \u7a33\u5b9a\u6027\u4fe1\u606f -componentanalysisdlg.TitledBorder.warnings = \u8b66\u544a: -componentanalysisdlg.ToggleBut.worst = \u6700\u574f\u60c5\u51b5 +componentanalysisdlg.TabStability.Col.Component = \u7EC4\u4EF6 +componentanalysisdlg.TabStability.Col.Mass = \u8D28\u91CF +componentanalysisdlg.TabStability.ttip = \u7A33\u5B9A\u6027\u4FE1\u606F +componentanalysisdlg.TitledBorder.warnings = \u8B66\u544A: +componentanalysisdlg.ToggleBut.worst = \u6700\u574F\u60C5\u51B5 ! Component Analysis Dialog -componentanalysisdlg.componentanalysis = \u7ec4\u4ef6\u5206\u6790 -componentanalysisdlg.dragTabchar = \u963b\u529b\u7279\u6027 -componentanalysisdlg.dragTabchar.ttip = \u963b\u529b\u7279\u6027 -componentanalysisdlg.dragTableModel.Col.Base = \u57fa\u51c6 CD -componentanalysisdlg.dragTableModel.Col.Component = \u7ec4\u4ef6 -componentanalysisdlg.dragTableModel.Col.Pressure = \u538b\u529b CD -componentanalysisdlg.dragTableModel.Col.friction = \u6469\u64e6 CD -componentanalysisdlg.dragTableModel.Col.total = \u603b CD -componentanalysisdlg.lbl.activestages = \u6709\u6548\u7ea7: -componentanalysisdlg.lbl.angleofattack = \u653b\u89d2: -componentanalysisdlg.lbl.machnumber = \u9a6c\u8d6b: -componentanalysisdlg.lbl.motorconf = \u53d1\u52a8\u673a\u8bbe\u7f6e: -componentanalysisdlg.lbl.refarea = \u53c2\u8003\u9762\u79ef: -componentanalysisdlg.lbl.reflenght = \u53c2\u8003\u957f\u5ea6: -componentanalysisdlg.lbl.rollrate = \u89d2\u901f\u5ea6: -componentanalysisdlg.lbl.winddir = \u98ce\u5411: -componentanalysisdlg.noWarnings = \u6ca1\u6709\u8b66\u544a. -componentanalysisdlg.println.closingmethod = \u8c03\u7528\u5173\u95ed\u4e8b\u4ef6: -componentanalysisdlg.println.settingnam = \u8bbe\u7f6e\u975e\u6570\u5b57\u503c -componentanalysisdlg.rollTableModel = \u6eda\u8f6c\u52a8\u529b\u5b66 -componentanalysisdlg.rollTableModel.Col.component = \u7ec4\u4ef6 -componentanalysisdlg.rollTableModel.Col.rolldamp = \u6eda\u8f6c\u963b\u5c3c\u7cfb\u6570 -componentanalysisdlg.rollTableModel.Col.rollforc = \u6eda\u8f6c\u529b\u7cfb\u6570 -componentanalysisdlg.rollTableModel.Col.total = \u603b Cl -componentanalysisdlg.rollTableModel.ttip = \u6eda\u8f6c\u52a8\u529b\u5b66 +componentanalysisdlg.componentanalysis = \u7EC4\u4EF6\u5206\u6790 +componentanalysisdlg.dragTabchar = \u963B\u529B\u7279\u6027 +componentanalysisdlg.dragTabchar.ttip = \u963B\u529B\u7279\u6027 +componentanalysisdlg.dragTableModel.Col.Base = \u57FA\u51C6 CD +componentanalysisdlg.dragTableModel.Col.Component = \u7EC4\u4EF6 +componentanalysisdlg.dragTableModel.Col.Pressure = \u538B\u529B CD +componentanalysisdlg.dragTableModel.Col.friction = \u6469\u64E6 CD +componentanalysisdlg.dragTableModel.Col.total = \u603B CD +componentanalysisdlg.lbl.activestages = \u6709\u6548\u7EA7: +componentanalysisdlg.lbl.angleofattack = \u653B\u89D2: +componentanalysisdlg.lbl.machnumber = \u9A6C\u8D6B: +componentanalysisdlg.lbl.motorconf = \u53D1\u52A8\u673A\u8BBE\u7F6E: +componentanalysisdlg.lbl.refarea = \u53C2\u8003\u9762\u79EF: +componentanalysisdlg.lbl.reflenght = \u53C2\u8003\u957F\u5EA6: +componentanalysisdlg.lbl.rollrate = \u89D2\u901F\u5EA6: +componentanalysisdlg.lbl.winddir = \u98CE\u5411: +componentanalysisdlg.noWarnings = \u6CA1\u6709\u8B66\u544A. +componentanalysisdlg.println.closingmethod = \u8C03\u7528\u5173\u95ED\u4E8B\u4EF6: +componentanalysisdlg.println.settingnam = \u8BBE\u7F6E\u975E\u6570\u5B57\u503C +componentanalysisdlg.rollTableModel = \u6EDA\u8F6C\u52A8\u529B\u5B66 +componentanalysisdlg.rollTableModel.Col.component = \u7EC4\u4EF6 +componentanalysisdlg.rollTableModel.Col.rolldamp = \u6EDA\u8F6C\u963B\u5C3C\u7CFB\u6570 +componentanalysisdlg.rollTableModel.Col.rollforc = \u6EDA\u8F6C\u529B\u7CFB\u6570 +componentanalysisdlg.rollTableModel.Col.total = \u603B Cl +componentanalysisdlg.rollTableModel.ttip = \u6EDA\u8F6C\u52A8\u529B\u5B66 -custmatdlg.checkbox.Addmaterial = \u6dfb\u52a0\u6750\u6599\u5230\u6570\u636e\u5e93 -custmatdlg.lbl.Materialdensity = \u6750\u6599\u5bc6\u5ea6: -custmatdlg.lbl.Materialname = \u6750\u6599\u540d\u79f0: -custmatdlg.lbl.Materialtype = \u6750\u6599\u7c7b\u578b: +custmatdlg.checkbox.Addmaterial = \u6DFB\u52A0\u6750\u6599\u5230\u6570\u636E\u5E93 +custmatdlg.lbl.Materialdensity = \u6750\u6599\u5BC6\u5EA6: +custmatdlg.lbl.Materialname = \u6750\u6599\u540D\u79F0: +custmatdlg.lbl.Materialtype = \u6750\u6599\u7C7B\u578B: ! Custom Material dialog -custmatdlg.title.Custommaterial = \u81ea\u5b9a\u4e49\u6750\u6599 +custmatdlg.title.Custommaterial = \u81EA\u5B9A\u4E49\u6750\u6599 -customExpression.Description = \u63cf\u8ff0 -customExpression.Expression = \u8868\u8fbe\u5f0f +customExpression.Description = \u63CF\u8FF0 +customExpression.Expression = \u8868\u8FBE\u5F0F ! Custom expression general stuff -customExpression.Name = \u540d\u79f0 -customExpression.Operator = \u7b97\u5b50 -customExpression.Symbol = \u7b26\u53f7 -customExpression.Units = \u5355\u4f4d -customExpression.Units.but.ttip.Edit = \u7f16\u8f91\u8868\u8fbe\u5f0f -customExpression.Units.but.ttip.MoveDown = \u5ef6\u540e\u8868\u8fbe\u5f0f\u8ba1\u7b97\u987a\u5e8f -customExpression.Units.but.ttip.MoveUp = \u63d0\u524d\u8868\u8fbe\u5f0f\u8ba1\u7b97\u987a\u5e8f -customExpression.Units.but.ttip.Remove = \u79fb\u9664\u8868\u8fbe\u5f0f +customExpression.Name = \u540D\u79F0 +customExpression.Operator = \u7B97\u5B50 +customExpression.Symbol = \u7B26\u53F7 +customExpression.Units = \u5355\u4F4D +customExpression.Units.but.ttip.Edit = \u7F16\u8F91\u8868\u8FBE\u5F0F +customExpression.Units.but.ttip.MoveDown = \u5EF6\u540E\u8868\u8FBE\u5F0F\u8BA1\u7B97\u987A\u5E8F +customExpression.Units.but.ttip.MoveUp = \u63D0\u524D\u8868\u8FBE\u5F0F\u8BA1\u7B97\u987A\u5E8F +customExpression.Units.but.ttip.Remove = \u79FB\u9664\u8868\u8FBE\u5F0F -customExpressionPanel.but.Import = \u5bfc\u5165 +customExpressionPanel.but.Import = \u5BFC\u5165 ! Custom expression panel -customExpressionPanel.but.NewExpression = \u65b0\u5efa\u8868\u8fbe\u5f0f -customExpressionPanel.but.ttip.Import = \u4ece\u5916\u90e8.ork\u6587\u4ef6\u5bfc\u5165\u8868\u8fbe\u5f0f -customExpressionPanel.but.ttip.NewExpression = \u65b0\u5efa\u4e00\u4e2a\u81ea\u5b9a\u4e49\u8868\u8fbe\u5f0f -customExpressionPanel.lbl.CalcNote = \u8868\u8fbe\u5f0f\u5c06\u6309\u663e\u793a\u987a\u5e8f\u8fdb\u884c\u8ba1\u7b97. -customExpressionPanel.lbl.CustomExpressions = \u81ea\u5b9a\u4e49\u8868\u8fbe\u5f0f -customExpressionPanel.lbl.UpdateNote = \u8bf7\u5148\u8fd0\u884c\u4eff\u771f, \u7136\u540e\u518d\u7ed8\u56fe. +customExpressionPanel.but.NewExpression = \u65B0\u5EFA\u8868\u8FBE\u5F0F +customExpressionPanel.but.ttip.Import = \u4ECE\u5916\u90E8.ork\u6587\u4EF6\u5BFC\u5165\u8868\u8FBE\u5F0F +customExpressionPanel.but.ttip.NewExpression = \u65B0\u5EFA\u4E00\u4E2A\u81EA\u5B9A\u4E49\u8868\u8FBE\u5F0F +customExpressionPanel.lbl.CalcNote = \u8868\u8FBE\u5F0F\u5C06\u6309\u663E\u793A\u987A\u5E8F\u8FDB\u884C\u8BA1\u7B97. +customExpressionPanel.lbl.CustomExpressions = \u81EA\u5B9A\u4E49\u8868\u8FBE\u5F0F +customExpressionPanel.lbl.UpdateNote = \u8BF7\u5148\u8FD0\u884C\u4EFF\u771F, \u7136\u540E\u518D\u7ED8\u56FE. debug.currentFile = messages_zh_CN.properties -debuglogdlg.Displayloglines = \u663e\u793a\u8bb0\u5f55\u884c: -debuglogdlg.Follow = \u8ddf\u8e2a -debuglogdlg.OpenRocketdebuglog = OpenRocket \u8c03\u8bd5\u8bb0\u5f55 +debuglogdlg.Displayloglines = \u663E\u793A\u8BB0\u5F55\u884C: +debuglogdlg.Follow = \u8DDF\u8E2A +debuglogdlg.OpenRocketdebuglog = OpenRocket \u8C03\u8BD5\u8BB0\u5F55 ! Debug log dialog -debuglogdlg.but.clear = \u6e05\u7a7a -debuglogdlg.col.Level = \u7ea7\u522b -debuglogdlg.col.Location = \u4f4d\u7f6e -debuglogdlg.col.Message = \u4fe1\u606f -debuglogdlg.col.Time = \u65f6\u95f4 -debuglogdlg.lbl.Level = \u7ea7\u522b: -debuglogdlg.lbl.Location = \u4f4d\u7f6e: -debuglogdlg.lbl.Loglinenbr = \u8c03\u8bd5\u4fe1\u606f\u884c: -debuglogdlg.lbl.Logmessage = \u8c03\u8bd5\u4fe1\u606f: -debuglogdlg.lbl.Stacktrace = \u5806\u6808\u8ddf\u8e2a: -debuglogdlg.lbl.Time = \u65f6\u95f4: +debuglogdlg.but.clear = \u6E05\u7A7A +debuglogdlg.col.Level = \u7EA7\u522B +debuglogdlg.col.Location = \u4F4D\u7F6E +debuglogdlg.col.Message = \u4FE1\u606F +debuglogdlg.col.Time = \u65F6\u95F4 +debuglogdlg.lbl.Level = \u7EA7\u522B: +debuglogdlg.lbl.Location = \u4F4D\u7F6E: +debuglogdlg.lbl.Loglinenbr = \u8C03\u8BD5\u4FE1\u606F\u884C: +debuglogdlg.lbl.Logmessage = \u8C03\u8BD5\u4FE1\u606F: +debuglogdlg.lbl.Stacktrace = \u5806\u6808\u8DDF\u8E2A: +debuglogdlg.lbl.Time = \u65F6\u95F4: -dlg.but.cancel = \u53d6\u6d88 -dlg.but.close = \u5173\u95ed +dlg.but.cancel = \u53D6\u6D88 +dlg.but.close = \u5173\u95ED ! Common labels used in buttons of dialog windows dlg.but.ok = OK -edtmotorconfdlg.but.Copyconfiguration = \u590d\u5236 -edtmotorconfdlg.but.Newconfiguration = \u65b0\u5efa +edtmotorconfdlg.but.Copyconfiguration = \u590D\u5236 +edtmotorconfdlg.but.Newconfiguration = \u65B0\u5EFA ! Edit Motor configuration dialog -edtmotorconfdlg.but.Removeconfiguration = \u79fb\u9664 -edtmotorconfdlg.but.Renameconfiguration = \u91cd\u547d\u540d -edtmotorconfdlg.but.Resetdeployment = \u91cd\u7f6e\u5230\u9ed8\u8ba4\u503c -edtmotorconfdlg.but.Resetseparation = \u91cd\u7f6e\u5230\u9ed8\u8ba4\u503c -edtmotorconfdlg.but.Selectdeployment = \u9009\u62e9\u90e8\u7f72 -edtmotorconfdlg.but.Selectseparation = \u9009\u62e9\u8131\u79bb -edtmotorconfdlg.col.configuration = \u914d\u7f6e -edtmotorconfdlg.lbl.Configname = \u914d\u7f6e\u540d\u79f0: -edtmotorconfdlg.lbl.Motortab = \u53d1\u52a8\u673a -edtmotorconfdlg.lbl.Recoverytab = \u56de\u6536 -edtmotorconfdlg.lbl.Selectedconf = \u9009\u62e9\u98de\u884c\u914d\u7f6e: -edtmotorconfdlg.lbl.Stagetab = \u7ea7 -edtmotorconfdlg.selectcomp = \u6307\u5b9a\u53d1\u52a8\u673a\u5ea7\u7ec4\u4ef6: -edtmotorconfdlg.tbl.Deploymentheader = \u90e8\u7f72 -edtmotorconfdlg.tbl.Ignitionheader = \u70b9\u706b -edtmotorconfdlg.tbl.Motorheader = \u53d1\u52a8\u673a -edtmotorconfdlg.tbl.Mountheader = \u53d1\u52a8\u673a\u5ea7 -edtmotorconfdlg.tbl.None = \u65e0 -edtmotorconfdlg.tbl.Recoveryheader = \u56de\u6536\u8bbe\u5907 -edtmotorconfdlg.tbl.Separationheader = \u5206\u79bb -edtmotorconfdlg.tbl.Stageheader = \u7ea7 -edtmotorconfdlg.title.Editmotorconf = \u7f16\u8f91\u98de\u884c\u914d\u7f6e -edtmotorconfdlg.title.Renameconf = \u91cd\u547d\u540d\u98de\u884c\u914d\u7f6e -edtmotorconfdlg.title.Selectdeploymentconf = \u9009\u62e9\u90e8\u7f72\u914d\u7f6e -edtmotorconfdlg.title.Selectignitionconf = \u9009\u62e9\u70b9\u706b\u914d\u7f6e -edtmotorconfdlg.title.Selectseparationconf = \u9009\u62e9\u5206\u79bb\u914d\u7f6e +edtmotorconfdlg.but.Removeconfiguration = \u79FB\u9664 +edtmotorconfdlg.but.Renameconfiguration = \u91CD\u547D\u540D +edtmotorconfdlg.but.Resetdeployment = \u91CD\u7F6E\u5230\u9ED8\u8BA4\u503C +edtmotorconfdlg.but.Resetseparation = \u91CD\u7F6E\u5230\u9ED8\u8BA4\u503C +edtmotorconfdlg.but.Selectdeployment = \u9009\u62E9\u90E8\u7F72 +edtmotorconfdlg.but.Selectseparation = \u9009\u62E9\u8131\u79BB +edtmotorconfdlg.col.configuration = \u914D\u7F6E +edtmotorconfdlg.lbl.Configname = \u914D\u7F6E\u540D\u79F0: +edtmotorconfdlg.lbl.Motortab = \u53D1\u52A8\u673A +edtmotorconfdlg.lbl.Recoverytab = \u56DE\u6536 +edtmotorconfdlg.lbl.Selectedconf = \u9009\u62E9\u98DE\u884C\u914D\u7F6E: +edtmotorconfdlg.lbl.Stagetab = \u7EA7 +edtmotorconfdlg.selectcomp = \u6307\u5B9A\u53D1\u52A8\u673A\u5EA7\u7EC4\u4EF6: +edtmotorconfdlg.tbl.Deploymentheader = \u90E8\u7F72 +edtmotorconfdlg.tbl.Ignitionheader = \u70B9\u706B +edtmotorconfdlg.tbl.Motorheader = \u53D1\u52A8\u673A +edtmotorconfdlg.tbl.Mountheader = \u53D1\u52A8\u673A\u5EA7 +edtmotorconfdlg.tbl.None = \u65E0 +edtmotorconfdlg.tbl.Recoveryheader = \u56DE\u6536\u8BBE\u5907 +edtmotorconfdlg.tbl.Separationheader = \u5206\u79BB +edtmotorconfdlg.tbl.Stageheader = \u7EA7 +edtmotorconfdlg.title.Editmotorconf = \u7F16\u8F91\u98DE\u884C\u914D\u7F6E +edtmotorconfdlg.title.Renameconf = \u91CD\u547D\u540D\u98DE\u884C\u914D\u7F6E +edtmotorconfdlg.title.Selectdeploymentconf = \u9009\u62E9\u90E8\u7F72\u914D\u7F6E +edtmotorconfdlg.title.Selectignitionconf = \u9009\u62E9\u70B9\u706B\u914D\u7F6E +edtmotorconfdlg.title.Selectseparationconf = \u9009\u62E9\u5206\u79BB\u914D\u7F6E -error.fileExists.desc = \u6587\u4ef6 '{filename}' \u5df2\u5b58\u5728\uff0c\u8986\u76d6? +error.fileExists.desc = \u6587\u4EF6 '{filename}' \u5DF2\u5B58\u5728\uFF0C\u8986\u76D6? ! General error messages used in multiple contexts -error.fileExists.title = \u6587\u4ef6\u5df2\u5b58\u5728 -error.writing.desc = \u4fdd\u5b58\u6587\u4ef6\u65f6\u53d1\u751f\u9519\u8bef: -error.writing.title = \u6587\u4ef6\u5199\u5165\u5931\u8d25 +error.fileExists.title = \u6587\u4EF6\u5DF2\u5B58\u5728 +error.writing.desc = \u4FDD\u5B58\u6587\u4EF6\u65F6\u53D1\u751F\u9519\u8BEF: +error.writing.title = \u6587\u4EF6\u5199\u5165\u5931\u8D25 ! Example design dialog -exdesigndlg.but.open = \u6253\u5f00 -exdesigndlg.lbl.Exampledesignsnotfound = \u8303\u4f8b\u8bbe\u8ba1\u7a3f\u672a\u627e\u5230 -exdesigndlg.lbl.Examplesnotfound = \u8303\u4f8b\u672a\u627e\u5230 -exdesigndlg.lbl.Openexampledesign = \u6253\u5f00\u8303\u4f8b\u8bbe\u8ba1\u7a3f -exdesigndlg.lbl.Selectexample = \u9009\u62e9\u8303\u4f8b\u8bbe\u8ba1\u7a3f: +exdesigndlg.but.open = \u6253\u5F00 +exdesigndlg.lbl.Exampledesignsnotfound = \u8303\u4F8B\u8BBE\u8BA1\u7A3F\u672A\u627E\u5230 +exdesigndlg.lbl.Examplesnotfound = \u8303\u4F8B\u672A\u627E\u5230 +exdesigndlg.lbl.Openexampledesign = \u6253\u5F00\u8303\u4F8B\u8BBE\u8BA1\u7A3F +exdesigndlg.lbl.Selectexample = \u9009\u62E9\u8303\u4F8B\u8BBE\u8BA1\u7A3F: -filetypes.images = \u56fe\u50cf\u6587\u4ef6 +filetypes.images = \u56FE\u50CF\u6587\u4EF6 ! General file type names -filetypes.pdf = PDF \u6587\u4ef6 (*.pdf) +filetypes.pdf = PDF \u6587\u4EF6 (*.pdf) main.menu.analyze = \u5206\u6790 -main.menu.analyze.componentAnalysis = \u7ec4\u4ef6\u5206\u6790 -main.menu.analyze.componentAnalysis.desc = \u4ec5\u5206\u6790\u706b\u7bad\u90e8\u4ef6 -main.menu.analyze.customExpressions = \u81ea\u5b9a\u4e49\u8868\u8fbe\u5f0f -main.menu.analyze.customExpressions.desc = \u901a\u8fc7\u81ea\u5b9a\u4e49\u7684\u6570\u5b66\u8868\u8fbe\u5f0f\u6765\u5b9a\u4e49\u65b0\u7684\u98de\u884c\u6570\u636e\u7c7b\u578b -main.menu.analyze.desc = \u706b\u7bad\u5206\u6790 -main.menu.analyze.optimization = \u706b\u7bad\u4f18\u5316 -main.menu.analyze.optimization.desc = \u5e38\u89c4\u706b\u7bad\u8bbe\u8ba1\u4f18\u5316 -main.menu.debug = \u8c03\u8bd5 -main.menu.debug.createtestrocket = \u5efa\u7acb\u6d4b\u8bd5\u706b\u7bad -main.menu.debug.whatisthismenu = \u8fd9\u662f\u4ec0\u4e48\u83dc\u5355? -main.menu.edit = \u7f16\u8f91 -main.menu.edit.copy = \u590d\u5236 -main.menu.edit.cut = \u526a\u5207 +main.menu.analyze.componentAnalysis = \u7EC4\u4EF6\u5206\u6790 +main.menu.analyze.componentAnalysis.desc = \u4EC5\u5206\u6790\u706B\u7BAD\u90E8\u4EF6 +main.menu.analyze.customExpressions = \u81EA\u5B9A\u4E49\u8868\u8FBE\u5F0F +main.menu.analyze.customExpressions.desc = \u901A\u8FC7\u81EA\u5B9A\u4E49\u7684\u6570\u5B66\u8868\u8FBE\u5F0F\u6765\u5B9A\u4E49\u65B0\u7684\u98DE\u884C\u6570\u636E\u7C7B\u578B +main.menu.analyze.desc = \u706B\u7BAD\u5206\u6790 +main.menu.analyze.optimization = \u706B\u7BAD\u4F18\u5316 +main.menu.analyze.optimization.desc = \u5E38\u89C4\u706B\u7BAD\u8BBE\u8BA1\u4F18\u5316 +main.menu.debug = \u8C03\u8BD5 +main.menu.debug.createtestrocket = \u5EFA\u7ACB\u6D4B\u8BD5\u706B\u7BAD +main.menu.debug.whatisthismenu = \u8FD9\u662F\u4EC0\u4E48\u83DC\u5355? +main.menu.edit = \u7F16\u8F91 +main.menu.edit.copy = \u590D\u5236 +main.menu.edit.cut = \u526A\u5207 main.menu.edit.delete = \u5220\u9664 -main.menu.edit.editpreset = \u7f16\u8f91\u7ec4\u4ef6\u9884\u8bbe\u6587\u4ef6 -main.menu.edit.paste = \u7c98\u8d34 +main.menu.edit.editpreset = \u7F16\u8F91\u7EC4\u4EF6\u9884\u8BBE\u6587\u4EF6 +main.menu.edit.paste = \u7C98\u8D34 main.menu.edit.preferences = \u9996\u9009\u9879 -main.menu.edit.preferences.desc = \u4fee\u6539\u5e94\u7528\u7a0b\u5e8f\u9996\u9009\u9879 -main.menu.edit.redo = \u91cd\u505a -main.menu.edit.redo.desc = \u91cd\u505a\u64cd\u4f5c -main.menu.edit.resize = \u7f29\u653e... -main.menu.edit.resize.desc = \u7f29\u653e\u706b\u7bad\u8bbe\u8ba1\u7a3f -main.menu.edit.undo = \u64a4\u9500 -main.menu.edit.undo.desc = \u64a4\u9500\u64cd\u4f5c +main.menu.edit.preferences.desc = \u4FEE\u6539\u5E94\u7528\u7A0B\u5E8F\u9996\u9009\u9879 +main.menu.edit.redo = \u91CD\u505A +main.menu.edit.redo.desc = \u91CD\u505A\u64CD\u4F5C +main.menu.edit.resize = \u7F29\u653E... +main.menu.edit.resize.desc = \u7F29\u653E\u706B\u7BAD\u8BBE\u8BA1\u7A3F +main.menu.edit.undo = \u64A4\u9500 +main.menu.edit.undo.desc = \u64A4\u9500\u64CD\u4F5C ! "main" prefix is used for the main application dialog # FIXME: Rename the description keys -main.menu.file = \u6587\u4ef6 -main.menu.file.close = \u5173\u95ed -main.menu.file.desc = \u6587\u4ef6\u5904\u7406\u4efb\u52a1 -main.menu.file.exportDecal = \u5bfc\u51fa\u8d34\u82b1 -main.menu.file.exportDecal.desc = \u5bfc\u51fa\u5f53\u524d\u8bbe\u8ba1\u7a3f\u7684\u8d34\u82b1\u4f9b\u5916\u90e8\u7a0b\u5e8f\u4fee\u6539\u7f16\u8f91. -main.menu.file.new = \u65b0\u5efa -main.menu.file.new.desc = \u65b0\u5efa\u706b\u7bad\u8bbe\u8ba1\u7a3f -main.menu.file.open = \u6253\u5f00... -main.menu.file.openExample = \u6253\u5f00\u8303\u4f8b... -main.menu.file.openRecent = \u6700\u8fd1\u6253\u5f00... -main.menu.file.print = \u6253\u5370/\u5bfc\u51faPDF... -main.menu.file.print.desc = \u5c06\u5404\u4e2a\u7ec4\u4ef6\u6253\u5370\u6216\u4fdd\u5b58\u4e3aPDF\u6587\u4ef6 -main.menu.file.quit = \u9000\u51fa -main.menu.file.save = \u4fdd\u5b58 -main.menu.file.saveAs = \u53e6\u5b58\u4e3a... -main.menu.help = \u5e2e\u52a9 -main.menu.help.about = \u5173\u4e8e -main.menu.help.about.desc = OpenRocket\u7248\u6743\u4fe1\u606f -main.menu.help.bugReport = \u9519\u8bef\u62a5\u544a -main.menu.help.bugReport.desc = \u5173\u4e8e\u5982\u4f55\u62a5\u544aOpenRocket\u4e2d\u7684\u9519\u8bef -main.menu.help.debugLog = \u8c03\u8bd5\u65e5\u5fd7 -main.menu.help.debugLog.desc = \u67e5\u770bOpenRocket\u8c03\u8bd5\u65e5\u5fd7 -main.menu.help.desc = OpenRocket\u76f8\u5173\u4fe1\u606f -main.menu.help.license = \u8bb8\u53ef\u8bc1 -main.menu.help.license.desc = OpenRocket \u8bb8\u53ef\u8bc1\u4fe1\u606f -main.menu.help.tours = \u6559\u7a0b -main.menu.help.tours.desc = OpenRocket\u76f8\u5173\u6559\u7a0b +main.menu.file = \u6587\u4EF6 +main.menu.file.close = \u5173\u95ED +main.menu.file.desc = \u6587\u4EF6\u5904\u7406\u4EFB\u52A1 +main.menu.file.exportDecal = \u5BFC\u51FA\u8D34\u82B1 +main.menu.file.exportDecal.desc = \u5BFC\u51FA\u5F53\u524D\u8BBE\u8BA1\u7A3F\u7684\u8D34\u82B1\u4F9B\u5916\u90E8\u7A0B\u5E8F\u4FEE\u6539\u7F16\u8F91. +main.menu.file.new = \u65B0\u5EFA +main.menu.file.new.desc = \u65B0\u5EFA\u706B\u7BAD\u8BBE\u8BA1\u7A3F +main.menu.file.open = \u6253\u5F00... +main.menu.file.openExample = \u6253\u5F00\u8303\u4F8B... +main.menu.file.openRecent = \u6700\u8FD1\u6253\u5F00... +main.menu.file.print = \u6253\u5370/\u5BFC\u51FAPDF... +main.menu.file.print.desc = \u5C06\u5404\u4E2A\u7EC4\u4EF6\u6253\u5370\u6216\u4FDD\u5B58\u4E3APDF\u6587\u4EF6 +main.menu.file.quit = \u9000\u51FA +main.menu.file.save = \u4FDD\u5B58 +main.menu.file.saveAs = \u53E6\u5B58\u4E3A... +main.menu.help = \u5E2E\u52A9 +main.menu.help.about = \u5173\u4E8E +main.menu.help.about.desc = OpenRocket\u7248\u6743\u4FE1\u606F +main.menu.help.bugReport = \u9519\u8BEF\u62A5\u544A +main.menu.help.bugReport.desc = \u5173\u4E8E\u5982\u4F55\u62A5\u544AOpenRocket\u4E2D\u7684\u9519\u8BEF +main.menu.help.debugLog = \u8C03\u8BD5\u65E5\u5FD7 +main.menu.help.debugLog.desc = \u67E5\u770BOpenRocket\u8C03\u8BD5\u65E5\u5FD7 +main.menu.help.desc = OpenRocket\u76F8\u5173\u4FE1\u606F +main.menu.help.license = \u8BB8\u53EF\u8BC1 +main.menu.help.license.desc = OpenRocket \u8BB8\u53EF\u8BC1\u4FE1\u606F +main.menu.help.tours = \u6559\u7A0B +main.menu.help.tours.desc = OpenRocket\u76F8\u5173\u6559\u7A0B matedtpan.but.delete = \u5220\u9664 -matedtpan.but.edit = \u7f16\u8f91 +matedtpan.but.edit = \u7F16\u8F91 ! Material edit panel -matedtpan.but.new = \u65b0\u5efa -matedtpan.but.revertall = \u6062\u590d\u6240\u6709 -matedtpan.but.ttip.delete = \u5220\u9664\u81ea\u5b9a\u4e49\u6750\u6599 -matedtpan.but.ttip.edit = \u7f16\u8f91\u5df2\u5b58\u5728\u7684\u6750\u6599 -matedtpan.but.ttip.revertall = \u5220\u9664\u6240\u6709\u81ea\u5b9a\u4e49\u6750\u6599 -matedtpan.col.Density = \u5bc6\u5ea6 +matedtpan.but.new = \u65B0\u5EFA +matedtpan.but.revertall = \u6062\u590D\u6240\u6709 +matedtpan.but.ttip.delete = \u5220\u9664\u81EA\u5B9A\u4E49\u6750\u6599 +matedtpan.but.ttip.edit = \u7F16\u8F91\u5DF2\u5B58\u5728\u7684\u6750\u6599 +matedtpan.but.ttip.revertall = \u5220\u9664\u6240\u6709\u81EA\u5B9A\u4E49\u6750\u6599 +matedtpan.col.Density = \u5BC6\u5EA6 matedtpan.col.Material = \u6750\u6599 -matedtpan.col.Type = \u7c7b\u578b -matedtpan.col.but.ttip.New = \u65b0\u52a0\u4e00\u79cd\u65b0\u7684\u6750\u6599 -matedtpan.lbl.edtmaterials = \u7f16\u8f91\u6750\u6599\u4e0d\u4f1a\u5f71\u54cd\u5f53\u524d\u7684\u706b\u7bad\u8bbe\u8ba1 -matedtpan.title.Addcustmaterial = \u65b0\u52a0\u81ea\u5b9a\u4e49\u6750\u6599 -matedtpan.title.Deletealluser-defined = \u5220\u9664\u6240\u6709\u81ea\u5b9a\u4e49\u6750\u6599? -matedtpan.title.Editmaterial = \u7f16\u8f91\u6750\u6599\u53c2\u6570 -matedtpan.title.Revertall = \u5168\u90e8\u590d\u539f? -matedtpan.title2.Editmaterial = \u65e0\u6cd5\u4fee\u6539\u5185\u5efa\u6750\u6599 +matedtpan.col.Type = \u7C7B\u578B +matedtpan.col.but.ttip.New = \u65B0\u52A0\u4E00\u79CD\u65B0\u7684\u6750\u6599 +matedtpan.lbl.edtmaterials = \u7F16\u8F91\u6750\u6599\u4E0D\u4F1A\u5F71\u54CD\u5F53\u524D\u7684\u706B\u7BAD\u8BBE\u8BA1 +matedtpan.title.Addcustmaterial = \u65B0\u52A0\u81EA\u5B9A\u4E49\u6750\u6599 +matedtpan.title.Deletealluser-defined = \u5220\u9664\u6240\u6709\u81EA\u5B9A\u4E49\u6750\u6599? +matedtpan.title.Editmaterial = \u7F16\u8F91\u6750\u6599\u53C2\u6570 +matedtpan.title.Revertall = \u5168\u90E8\u590D\u539F? +matedtpan.title2.Editmaterial = \u65E0\u6CD5\u4FEE\u6539\u5185\u5EFA\u6750\u6599 ! BULK_MATERIAL -material.acrylic = \u4e9a\u514b\u529b -material.aluminum = \u94dd -material.balsa = \u8f7b\u6728 +material.acrylic = \u4E9A\u514B\u529B +material.aluminum = \u94DD +material.balsa = \u8F7B\u6728 material.basswood = \u6934\u6728 material.birch = \u6866\u6728 material.blue_tube = Blue tube -material.braided_nylon_2_mm_1_16_in = \u5c3c\u9f99\u7f16\u7ec7\u7ef3 (2 mm, 1/16 in) -material.braided_nylon_3_mm_1_8_in = \u5c3c\u9f99\u7f16\u7ec7\u7ef3 (3 mm, 1/8 in) -material.brass = \u9ec4\u94dc -material.carbon_fiber = \u78b3\u7ea4\u7ef4 -material.cardboard = \u786c\u7eb8\u677f -material.cellophane = \u73bb\u7483\u7eb8 -material.cork = \u8f6f\u6728 -material.crepe_paper = \u76b1\u7eb9\u7eb8 -material.depron_xps = Depron(\u6324\u5851\u805a\u82ef\u4e59\u70ef) -material.elastic_cord_flat_12_mm_1_2_in = \u677e\u7d27\u7ef3 (\u6241 12 mm, 1/2 in) -material.elastic_cord_flat_19_mm_3_4_in = \u677e\u7d27\u7ef3 (\u6241 19 mm, 3/4 in) -material.elastic_cord_flat_25_mm_1_in = \u677e\u7d27\u7ef3 (\u6241 25 mm, 1 in) -material.elastic_cord_flat_6_mm_1_4_in = \u677e\u7d27\u7ef3 (\u6241 6 mm, 1/4 in) -material.elastic_cord_round_2_mm_1_16_in = \u677e\u7d27\u7ef3 (\u5706 2 mm, 1/16 in) -material.fiberglass = \u73bb\u7483\u7ea4\u7ef4 +material.braided_nylon_2_mm_1_16_in = \u5C3C\u9F99\u7F16\u7EC7\u7EF3 (2 mm, 1/16 in) +material.braided_nylon_3_mm_1_8_in = \u5C3C\u9F99\u7F16\u7EC7\u7EF3 (3 mm, 1/8 in) +material.brass = \u9EC4\u94DC +material.carbon_fiber = \u78B3\u7EA4\u7EF4 +material.cardboard = \u786C\u7EB8\u677F +material.cellophane = \u73BB\u7483\u7EB8 +material.cork = \u8F6F\u6728 +material.crepe_paper = \u76B1\u7EB9\u7EB8 +material.depron_xps = Depron(\u6324\u5851\u805A\u82EF\u4E59\u70EF) +material.elastic_cord_flat_12_mm_1_2_in = \u677E\u7D27\u7EF3 (\u6241 12 mm, 1/2 in) +material.elastic_cord_flat_19_mm_3_4_in = \u677E\u7D27\u7EF3 (\u6241 19 mm, 3/4 in) +material.elastic_cord_flat_25_mm_1_in = \u677E\u7D27\u7EF3 (\u6241 25 mm, 1 in) +material.elastic_cord_flat_6_mm_1_4_in = \u677E\u7D27\u7EF3 (\u6241 6 mm, 1/4 in) +material.elastic_cord_round_2_mm_1_16_in = \u677E\u7D27\u7EF3 (\u5706 2 mm, 1/16 in) +material.fiberglass = \u73BB\u7483\u7EA4\u7EF4 material.kraft_phenolic = Kraft phenolic -material.maple = \u67ab\u6728 -material.mylar = \u805a\u916f\u8584\u819c (\u805a\u4e59\u70ef\u5bf9\u82ef\u4e8c\u9178) -material.paper_office = \u529e\u516c\u7eb8 -material.pine = \u677e\u6728 -material.plywood_birch = \u80f6\u5408\u677f(\u6866\u6728) -material.polycarbonate_lexan = \u805a\u78b3\u9178\u916f(Lexan) -material.polyethylene_heavy = \u805a\u4e59\u70ef (\u539a\u91cd) -material.polyethylene_thin = \u805a\u4e59\u70ef (\u8f7b\u8584) -material.polystyrene = \u805a\u82ef\u4e59\u70ef +material.maple = \u67AB\u6728 +material.mylar = \u805A\u916F\u8584\u819C (\u805A\u4E59\u70EF\u5BF9\u82EF\u4E8C\u9178) +material.paper_office = \u529E\u516C\u7EB8 +material.pine = \u677E\u6728 +material.plywood_birch = \u80F6\u5408\u677F(\u6866\u6728) +material.polycarbonate_lexan = \u805A\u78B3\u9178\u916F(Lexan) +material.polyethylene_heavy = \u805A\u4E59\u70EF (\u539A\u91CD) +material.polyethylene_thin = \u805A\u4E59\u70EF (\u8F7B\u8584) +material.polystyrene = \u805A\u82EF\u4E59\u70EF material.pvc = PVC material.quantum_tubing = Quantum tubing !SURFACE_MATERIAL -material.ripstop_nylon = \u683c\u5b50\u5c3c\u9f99 -material.silk = \u4e1d\u7ef8 +material.ripstop_nylon = \u683C\u5B50\u5C3C\u9F99 +material.silk = \u4E1D\u7EF8 material.spruce = \u6749\u6728 -material.steel = \u94a2\u94c1 -material.styrofoam_blue_foam_xps = \u6324\u5851\u805a\u82ef\u4e59\u70ef "Blue foam" -material.styrofoam_generic_eps = \u53d1\u6ce1\u805a\u82ef\u4e59\u70ef +material.steel = \u94A2\u94C1 +material.styrofoam_blue_foam_xps = \u6324\u5851\u805A\u82EF\u4E59\u70EF "Blue foam" +material.styrofoam_generic_eps = \u53D1\u6CE1\u805A\u82EF\u4E59\u70EF ! LINE_MATERIAL -material.thread_heavy_duty = \u7ebf (\u5927\u8f7d\u91cd) -material.titanium = \u949b -material.tubular_nylon_11_mm_7_16_in = \u5c3c\u9f99\u7f16\u7ec7\u5e26 (11 mm, 7/16 in) -material.tubular_nylon_14_mm_9_16_in = \u5c3c\u9f99\u7f16\u7ec7\u5e26 (14 mm, 9/16 in) -material.tubular_nylon_25_mm_1_in = \u5c3c\u9f99\u7f16\u7ec7\u5e26 (25 mm, 1 in) +material.thread_heavy_duty = \u7EBF (\u5927\u8F7D\u91CD) +material.titanium = \u949B +material.tubular_nylon_11_mm_7_16_in = \u5C3C\u9F99\u7F16\u7EC7\u5E26 (11 mm, 7/16 in) +material.tubular_nylon_14_mm_9_16_in = \u5C3C\u9F99\u7F16\u7EC7\u5E26 (14 mm, 9/16 in) +material.tubular_nylon_25_mm_1_in = \u5C3C\u9F99\u7F16\u7EC7\u5E26 (25 mm, 1 in) -optimization.modifier.bodytube.length = \u957f\u5ea6 -optimization.modifier.bodytube.length.desc = \u4f18\u5316\u7bad\u4f53\u957f\u5ea6. -optimization.modifier.bodytube.outerDiameter = \u5916\u76f4\u5f84 -optimization.modifier.bodytube.outerDiameter.desc = \u4f18\u5316\u7bad\u7b52\u5916\u76f4\u5f84, \u540c\u65f6\u4fdd\u6301\u58c1\u539a\u5ea6\u4e0d\u53d8. -optimization.modifier.bodytube.thickness = \u539a\u5ea6 -optimization.modifier.bodytube.thickness.desc = \u4f18\u5316\u7bad\u7b52\u58c1\u539a\u5ea6. -optimization.modifier.ellipticalfinset.height = \u9ad8\u5ea6 -optimization.modifier.ellipticalfinset.height.desc = \u4f18\u5316\u7a33\u5b9a\u7ffc\u9ad8\u5ea6 (\u534a\u7ffc\u5c55). -optimization.modifier.ellipticalfinset.length = \u7ffc\u6839\u5f26 -optimization.modifier.ellipticalfinset.length.desc = \u4f18\u5316\u7ffc\u6839\u5f26\u957f\u5ea6. -optimization.modifier.finset.cant = \u9762\u89d2\u89d2\u5ea6 -optimization.modifier.finset.cant.desc = \u4f18\u5316\u7a33\u5b9a\u7ffc\u9762\u89d2\u89d2\u5ea6. -optimization.modifier.finset.position = \u4f4d\u7f6e -optimization.modifier.finset.position.desc = \u4f18\u5316\u7a33\u5b9a\u7ffc\u5b89\u88c5\u4e8e\u7bad\u4f53\u7684\u4f4d\u7f6e. -optimization.modifier.internalcomponent.position = \u4f4d\u7f6e -optimization.modifier.internalcomponent.position.desc = \u4f18\u5316\u7ec4\u4ef6\u76f8\u5bf9\u4e8e\u7236\u7ec4\u4ef6\u7684\u4f4d\u7f6e. -optimization.modifier.launchlug.length = \u957f\u5ea6 -optimization.modifier.launchlug.length.desc = \u4f18\u5316\u53d1\u5c04\u5bfc\u5411\u7b52\u957f\u5ea6. -optimization.modifier.launchlug.outerDiameter = \u5916\u76f4\u5f84 -optimization.modifier.launchlug.outerDiameter.desc = \u4f18\u5316\u53d1\u5c04\u5bfc\u5411\u7b52\u7684\u5916\u76f4\u5f84. -optimization.modifier.launchlug.position = \u4f4d\u7f6e -optimization.modifier.launchlug.position.desc = \u4f18\u5316\u5bfc\u5411\u7b52\u5728\u7bad\u4f53\u4e0a\u7684\u4f4d\u7f6e. -optimization.modifier.launchlug.thickness = \u539a\u5ea6 -optimization.modifier.launchlug.thickness.desc = \u4f18\u5316\u5bfc\u5411\u7b52\u539a\u5ea6\u4f46\u662f\u4fdd\u6301\u5916\u76f4\u5f84. -optimization.modifier.masscomponent.mass = \u8d28\u91cf -optimization.modifier.masscomponent.mass.desc = \u4f18\u5316\u8d28\u91cf\u7ec4\u4ef6. -optimization.modifier.motormount.delay = \u53d1\u52a8\u673a\u70b9\u706b\u5ef6\u65f6 -optimization.modifier.motormount.delay.desc = \u4f18\u5316\u53d1\u52a8\u673a\u70b9\u706b\u5ef6\u65f6. -optimization.modifier.motormount.overhang = \u53d1\u52a8\u673a\u7a81\u51fa -optimization.modifier.motormount.overhang.desc = \u4f18\u5316\u53d1\u52a8\u673a\u7a81\u51fa. -optimization.modifier.nosecone.diameter = \u76f4\u5f84 -optimization.modifier.nosecone.diameter.desc = \u4f18\u5316\u5934\u9525\u76f4\u5f84. +optimization.modifier.bodytube.length = \u957F\u5EA6 +optimization.modifier.bodytube.length.desc = \u4F18\u5316\u7BAD\u4F53\u957F\u5EA6. +optimization.modifier.bodytube.outerDiameter = \u5916\u76F4\u5F84 +optimization.modifier.bodytube.outerDiameter.desc = \u4F18\u5316\u7BAD\u7B52\u5916\u76F4\u5F84, \u540C\u65F6\u4FDD\u6301\u58C1\u539A\u5EA6\u4E0D\u53D8. +optimization.modifier.bodytube.thickness = \u539A\u5EA6 +optimization.modifier.bodytube.thickness.desc = \u4F18\u5316\u7BAD\u7B52\u58C1\u539A\u5EA6. +optimization.modifier.ellipticalfinset.height = \u9AD8\u5EA6 +optimization.modifier.ellipticalfinset.height.desc = \u4F18\u5316\u7A33\u5B9A\u7FFC\u9AD8\u5EA6 (\u534A\u7FFC\u5C55). +optimization.modifier.ellipticalfinset.length = \u7FFC\u6839\u5F26 +optimization.modifier.ellipticalfinset.length.desc = \u4F18\u5316\u7FFC\u6839\u5F26\u957F\u5EA6. +optimization.modifier.finset.cant = \u9762\u89D2\u89D2\u5EA6 +optimization.modifier.finset.cant.desc = \u4F18\u5316\u7A33\u5B9A\u7FFC\u9762\u89D2\u89D2\u5EA6. +optimization.modifier.finset.position = \u4F4D\u7F6E +optimization.modifier.finset.position.desc = \u4F18\u5316\u7A33\u5B9A\u7FFC\u5B89\u88C5\u4E8E\u7BAD\u4F53\u7684\u4F4D\u7F6E. +optimization.modifier.internalcomponent.position = \u4F4D\u7F6E +optimization.modifier.internalcomponent.position.desc = \u4F18\u5316\u7EC4\u4EF6\u76F8\u5BF9\u4E8E\u7236\u7EC4\u4EF6\u7684\u4F4D\u7F6E. +optimization.modifier.launchlug.length = \u957F\u5EA6 +optimization.modifier.launchlug.length.desc = \u4F18\u5316\u53D1\u5C04\u5BFC\u5411\u7B52\u957F\u5EA6. +optimization.modifier.launchlug.outerDiameter = \u5916\u76F4\u5F84 +optimization.modifier.launchlug.outerDiameter.desc = \u4F18\u5316\u53D1\u5C04\u5BFC\u5411\u7B52\u7684\u5916\u76F4\u5F84. +optimization.modifier.launchlug.position = \u4F4D\u7F6E +optimization.modifier.launchlug.position.desc = \u4F18\u5316\u5BFC\u5411\u7B52\u5728\u7BAD\u4F53\u4E0A\u7684\u4F4D\u7F6E. +optimization.modifier.launchlug.thickness = \u539A\u5EA6 +optimization.modifier.launchlug.thickness.desc = \u4F18\u5316\u5BFC\u5411\u7B52\u539A\u5EA6\u4F46\u662F\u4FDD\u6301\u5916\u76F4\u5F84. +optimization.modifier.masscomponent.mass = \u8D28\u91CF +optimization.modifier.masscomponent.mass.desc = \u4F18\u5316\u8D28\u91CF\u7EC4\u4EF6. +optimization.modifier.motormount.delay = \u53D1\u52A8\u673A\u70B9\u706B\u5EF6\u65F6 +optimization.modifier.motormount.delay.desc = \u4F18\u5316\u53D1\u52A8\u673A\u70B9\u706B\u5EF6\u65F6. +optimization.modifier.motormount.overhang = \u53D1\u52A8\u673A\u7A81\u51FA +optimization.modifier.motormount.overhang.desc = \u4F18\u5316\u53D1\u52A8\u673A\u7A81\u51FA. +optimization.modifier.nosecone.diameter = \u76F4\u5F84 +optimization.modifier.nosecone.diameter.desc = \u4F18\u5316\u5934\u9525\u76F4\u5F84. ! Optimization ! Modifiers -optimization.modifier.nosecone.length = \u957f\u5ea6 -optimization.modifier.nosecone.length.desc = \u4f18\u5316\u5934\u9525\u957f\u5ea6. -optimization.modifier.nosecone.shapeparameter = \u5916\u5f62\u53c2\u6570 -optimization.modifier.nosecone.shapeparameter.desc = \u4f18\u5316\u5934\u9525\u5916\u5f62\u53c2\u6570. -optimization.modifier.nosecone.thickness = \u539a\u5ea6 -optimization.modifier.nosecone.thickness.desc = \u4f18\u5316\u5934\u9525\u58c1\u539a\u5ea6. -optimization.modifier.parachute.coefficient = \u963b\u529b\u7cfb\u6570 -optimization.modifier.parachute.coefficient.desc = \u4f18\u5316\u964d\u843d\u4f1e\u963b\u529b\u7cfb\u6570. \u964d\u843d\u4f1e\u963b\u529b\u7cfb\u6570\u4e00\u822c\u4e3a0.8. -optimization.modifier.parachute.diameter = \u76f4\u5f84 -optimization.modifier.parachute.diameter.desc = \u4f18\u5316\u964d\u843d\u4f1e\u4f1e\u8863\u76f4\u5f84. -optimization.modifier.recoverydevice.deployAltitude = \u6fc0\u53d1\u9ad8\u5ea6 -optimization.modifier.recoverydevice.deployAltitude.desc = \u4f18\u5316\u56de\u6536\u8bbe\u5907\u6fc0\u53d1\u9ad8\u5ea6. -optimization.modifier.recoverydevice.deployDelay = \u6fc0\u53d1\u5ef6\u65f6 -optimization.modifier.recoverydevice.deployDelay.desc = \u4f18\u5316\u56de\u6536\u8bbe\u5907\u6fc0\u53d1\u5ef6\u65f6. -optimization.modifier.rocketcomponent.overrideCG = \u8986\u5199\u91cd\u5fc3 -optimization.modifier.rocketcomponent.overrideCG.desc = \u4f18\u5316\u7ec4\u4ef6\u8986\u5199\u91cd\u5fc3. -optimization.modifier.rocketcomponent.overrideMass = \u8986\u5199\u8d28\u91cf -optimization.modifier.rocketcomponent.overrideMass.desc = \u4f18\u5316\u7ec4\u4ef6\u8986\u5199\u8d28\u91cf. -optimization.modifier.streamer.aspectRatio = \u957f\u5bbd\u6bd4 -optimization.modifier.streamer.aspectRatio.desc = \u4f18\u5316\u98d8\u5e26\u957f\u5bbd\u6bd4 (\u957f\u5ea6/\u5bbd\u5ea6). \u8be5\u6570\u503c\u4e0d\u80fd\u540c\u65f6\u5e94\u7528\u5728\u957f\u5ea6\u6216\u8005\u5bbd\u5ea6\u4e0a. -optimization.modifier.streamer.coefficient = \u963b\u529b\u7cfb\u6570 -optimization.modifier.streamer.coefficient.desc = \u4f18\u5316\u98d8\u5e26\u963b\u529b\u7cfb\u6570. -optimization.modifier.streamer.length = \u957f\u5ea6 -optimization.modifier.streamer.length.desc = \u4f18\u5316\u98d8\u5e26\u957f\u5ea6. -optimization.modifier.streamer.width = \u5bbd\u5ea6 -optimization.modifier.streamer.width.desc = \u4f18\u5316\u98d8\u5e26\u5bbd\u5ea6. -optimization.modifier.transition.aftdiameter = \u540e\u76f4\u5f84 -optimization.modifier.transition.aftdiameter.desc = \u4f18\u5316\u7ea7\u95f4\u6bb5\u540e\u76f4\u5f84. -optimization.modifier.transition.forediameter = \u524d\u76f4\u5f84 -optimization.modifier.transition.forediameter.desc = \u4f18\u5316\u7ea7\u95f4\u6bb5\u524d\u76f4\u5f84. -optimization.modifier.transition.length = \u957f\u5ea6 -optimization.modifier.transition.length.desc = \u4f18\u5316\u7ea7\u95f4\u6bb5\u957f\u5ea6. -optimization.modifier.transition.shapeparameter = \u5916\u5f62\u53c2\u6570 -optimization.modifier.transition.shapeparameter.desc = \u4f18\u5316\u7ea7\u95f4\u6bb5\u5916\u5f62\u53c2\u6570. -optimization.modifier.transition.thickness = \u539a\u5ea6 -optimization.modifier.transition.thickness.desc = \u4f18\u5316\u7ea7\u95f4\u6bb5\u58c1\u539a\u5ea6. -optimization.modifier.trapezoidfinset.height = \u9ad8\u5ea6 -optimization.modifier.trapezoidfinset.height.desc = \u4f18\u5316\u7a33\u5b9a\u7ffc\u9ad8\u5ea6 (\u534a\u7ffc\u5c55). -optimization.modifier.trapezoidfinset.rootChord = \u7ffc\u6839\u5f26 -optimization.modifier.trapezoidfinset.rootChord.desc = \u4f18\u5316\u7ffc\u6839\u5f26\u957f\u5ea6 (\u7a33\u5b9a\u7ffc\u4e0e\u7bad\u4f53\u76f8\u63a5\u7684\u8fb9\u7684\u957f\u5ea6). -optimization.modifier.trapezoidfinset.sweep = \u63a0\u7ffc -optimization.modifier.trapezoidfinset.sweep.desc = \u4f18\u5316\u7a33\u5b9a\u7ffc\u63a0\u7ffc\u957f\u5ea6 (\u63a0\u7ffc\u524d\u7f18\u5411\u540e\u4f38\u5c55\u7684\u957f\u5ea6). -optimization.modifier.trapezoidfinset.tipChord = \u7ffc\u68a2\u5f26 -optimization.modifier.trapezoidfinset.tipChord.desc = \u4f18\u5316\u7ffc\u68a2\u5f26\u957f\u5ea6 (\u7a33\u5b9a\u7ffc\u5916\u7f18\u957f\u5ea6). +optimization.modifier.nosecone.length = \u957F\u5EA6 +optimization.modifier.nosecone.length.desc = \u4F18\u5316\u5934\u9525\u957F\u5EA6. +optimization.modifier.nosecone.shapeparameter = \u5916\u5F62\u53C2\u6570 +optimization.modifier.nosecone.shapeparameter.desc = \u4F18\u5316\u5934\u9525\u5916\u5F62\u53C2\u6570. +optimization.modifier.nosecone.thickness = \u539A\u5EA6 +optimization.modifier.nosecone.thickness.desc = \u4F18\u5316\u5934\u9525\u58C1\u539A\u5EA6. +optimization.modifier.parachute.coefficient = \u963B\u529B\u7CFB\u6570 +optimization.modifier.parachute.coefficient.desc = \u4F18\u5316\u964D\u843D\u4F1E\u963B\u529B\u7CFB\u6570. \u964D\u843D\u4F1E\u963B\u529B\u7CFB\u6570\u4E00\u822C\u4E3A0.8. +optimization.modifier.parachute.diameter = \u76F4\u5F84 +optimization.modifier.parachute.diameter.desc = \u4F18\u5316\u964D\u843D\u4F1E\u4F1E\u8863\u76F4\u5F84. +optimization.modifier.recoverydevice.deployAltitude = \u6FC0\u53D1\u9AD8\u5EA6 +optimization.modifier.recoverydevice.deployAltitude.desc = \u4F18\u5316\u56DE\u6536\u8BBE\u5907\u6FC0\u53D1\u9AD8\u5EA6. +optimization.modifier.recoverydevice.deployDelay = \u6FC0\u53D1\u5EF6\u65F6 +optimization.modifier.recoverydevice.deployDelay.desc = \u4F18\u5316\u56DE\u6536\u8BBE\u5907\u6FC0\u53D1\u5EF6\u65F6. +optimization.modifier.rocketcomponent.overrideCG = \u8986\u5199\u91CD\u5FC3 +optimization.modifier.rocketcomponent.overrideCG.desc = \u4F18\u5316\u7EC4\u4EF6\u8986\u5199\u91CD\u5FC3. +optimization.modifier.rocketcomponent.overrideMass = \u8986\u5199\u8D28\u91CF +optimization.modifier.rocketcomponent.overrideMass.desc = \u4F18\u5316\u7EC4\u4EF6\u8986\u5199\u8D28\u91CF. +optimization.modifier.streamer.aspectRatio = \u957F\u5BBD\u6BD4 +optimization.modifier.streamer.aspectRatio.desc = \u4F18\u5316\u98D8\u5E26\u957F\u5BBD\u6BD4 (\u957F\u5EA6/\u5BBD\u5EA6). \u8BE5\u6570\u503C\u4E0D\u80FD\u540C\u65F6\u5E94\u7528\u5728\u957F\u5EA6\u6216\u8005\u5BBD\u5EA6\u4E0A. +optimization.modifier.streamer.coefficient = \u963B\u529B\u7CFB\u6570 +optimization.modifier.streamer.coefficient.desc = \u4F18\u5316\u98D8\u5E26\u963B\u529B\u7CFB\u6570. +optimization.modifier.streamer.length = \u957F\u5EA6 +optimization.modifier.streamer.length.desc = \u4F18\u5316\u98D8\u5E26\u957F\u5EA6. +optimization.modifier.streamer.width = \u5BBD\u5EA6 +optimization.modifier.streamer.width.desc = \u4F18\u5316\u98D8\u5E26\u5BBD\u5EA6. +optimization.modifier.transition.aftdiameter = \u540E\u76F4\u5F84 +optimization.modifier.transition.aftdiameter.desc = \u4F18\u5316\u7EA7\u95F4\u6BB5\u540E\u76F4\u5F84. +optimization.modifier.transition.forediameter = \u524D\u76F4\u5F84 +optimization.modifier.transition.forediameter.desc = \u4F18\u5316\u7EA7\u95F4\u6BB5\u524D\u76F4\u5F84. +optimization.modifier.transition.length = \u957F\u5EA6 +optimization.modifier.transition.length.desc = \u4F18\u5316\u7EA7\u95F4\u6BB5\u957F\u5EA6. +optimization.modifier.transition.shapeparameter = \u5916\u5F62\u53C2\u6570 +optimization.modifier.transition.shapeparameter.desc = \u4F18\u5316\u7EA7\u95F4\u6BB5\u5916\u5F62\u53C2\u6570. +optimization.modifier.transition.thickness = \u539A\u5EA6 +optimization.modifier.transition.thickness.desc = \u4F18\u5316\u7EA7\u95F4\u6BB5\u58C1\u539A\u5EA6. +optimization.modifier.trapezoidfinset.height = \u9AD8\u5EA6 +optimization.modifier.trapezoidfinset.height.desc = \u4F18\u5316\u7A33\u5B9A\u7FFC\u9AD8\u5EA6 (\u534A\u7FFC\u5C55). +optimization.modifier.trapezoidfinset.rootChord = \u7FFC\u6839\u5F26 +optimization.modifier.trapezoidfinset.rootChord.desc = \u4F18\u5316\u7FFC\u6839\u5F26\u957F\u5EA6 (\u7A33\u5B9A\u7FFC\u4E0E\u7BAD\u4F53\u76F8\u63A5\u7684\u8FB9\u7684\u957F\u5EA6). +optimization.modifier.trapezoidfinset.sweep = \u63A0\u7FFC +optimization.modifier.trapezoidfinset.sweep.desc = \u4F18\u5316\u7A33\u5B9A\u7FFC\u63A0\u7FFC\u957F\u5EA6 (\u63A0\u7FFC\u524D\u7F18\u5411\u540E\u4F38\u5C55\u7684\u957F\u5EA6). +optimization.modifier.trapezoidfinset.tipChord = \u7FFC\u68A2\u5F26 +optimization.modifier.trapezoidfinset.tipChord.desc = \u4F18\u5316\u7FFC\u68A2\u5F26\u957F\u5EA6 (\u7A33\u5B9A\u7FFC\u5916\u7F18\u957F\u5EA6). -pref.dlg.Add = \u6dfb\u52a0 -pref.dlg.Allthrustcurvefiles = \u652f\u6301\u7684\u63a8\u529b\u66f2\u7ebf\u6587\u4ef6(*.eng; *.rse; *.zip; \u6587\u4ef6\u5939) -pref.dlg.DescriptionArea.Adddirectories = \u4efb\u4f55\u65b0\u6dfb\u52a0\u7684RASP\u53d1\u52a8\u673a\u6587\u4ef6(*.eng), RockSim\u53d1\u52a8\u673a\u6587\u4ef6(*.rse), ZIP\u538b\u7f29\u5305\u6216\u6587\u4ef6\u5939\u6240\u5305\u542b\u7684\u63a8\u529b\u66f2\u7ebf\u5c06\u5728\u4e0b\u6b21\u542f\u52a8OpenRocket\u540e\u751f\u6548 +pref.dlg.Add = \u6DFB\u52A0 +pref.dlg.Allthrustcurvefiles = \u652F\u6301\u7684\u63A8\u529B\u66F2\u7EBF\u6587\u4EF6(*.eng; *.rse; *.zip; \u6587\u4EF6\u5939) +pref.dlg.DescriptionArea.Adddirectories = \u4EFB\u4F55\u65B0\u6DFB\u52A0\u7684RASP\u53D1\u52A8\u673A\u6587\u4EF6(*.eng), RockSim\u53D1\u52A8\u673A\u6587\u4EF6(*.rse), ZIP\u538B\u7F29\u5305\u6216\u6587\u4EF6\u5939\u6240\u5305\u542B\u7684\u63A8\u529B\u66F2\u7EBF\u5C06\u5728\u4E0B\u6B21\u542F\u52A8OpenRocket\u540E\u751F\u6548 pref.dlg.PrefBooleanSelector1 = \u5220\u9664 -pref.dlg.PrefBooleanSelector2 = \u786e\u8ba4 -pref.dlg.PrefChoiseSelector1 = \u603b\u662f\u8be2\u95ee -pref.dlg.PrefChoiseSelector2 = \u63d2\u5728\u4e2d\u95f4 -pref.dlg.PrefChoiseSelector3 = \u63d2\u5728\u6700\u540e -pref.dlg.RASPfiles = RASP\u53d1\u52a8\u673a\u6587\u4ef6(*.eng) -pref.dlg.RockSimfiles = RockSim\u53d1\u52a8\u673a\u6587\u4ef6(*.rse) -pref.dlg.ZIParchives = ZIP\u538b\u7f29\u5305(*.zip) +pref.dlg.PrefBooleanSelector2 = \u786E\u8BA4 +pref.dlg.PrefChoiseSelector1 = \u603B\u662F\u8BE2\u95EE +pref.dlg.PrefChoiseSelector2 = \u63D2\u5728\u4E2D\u95F4 +pref.dlg.PrefChoiseSelector3 = \u63D2\u5728\u6700\u540E +pref.dlg.RASPfiles = RASP\u53D1\u52A8\u673A\u6587\u4EF6(*.eng) +pref.dlg.RockSimfiles = RockSim\u53D1\u52A8\u673A\u6587\u4EF6(*.rse) +pref.dlg.ZIParchives = ZIP\u538B\u7F29\u5305(*.zip) ! Preference dialog -pref.dlg.but.add = \u589e\u52a0 -pref.dlg.but.checknow = \u68c0\u67e5 -pref.dlg.but.defaultimperial = \u7f3a\u7701\u82f1\u5236 -pref.dlg.but.defaultmetric = \u7f3a\u7701\u516c\u5236 -pref.dlg.but.openlast = \u5728\u542f\u52a8\u7684\u65f6\u5019\u6253\u5f00\u4e0a\u6b21\u8bbe\u8ba1 -pref.dlg.but.reset = \u91cd\u7f6e -pref.dlg.checkbox.Checkupdates = \u542f\u52a8\u65f6\u68c0\u67e5\u66f4\u65b0 -pref.dlg.lbl.Acceleration = \u52a0\u901f\u5ea6: -pref.dlg.lbl.Angle = \u89d2\u5ea6: -pref.dlg.lbl.Area = \u9762\u79ef: -pref.dlg.lbl.Bulkdensity = \u4f53\u79ef\u5bc6\u5ea6: -pref.dlg.lbl.Checkingupdates = \u6b63\u5728\u68c0\u67e5\u66f4\u65b0... -pref.dlg.lbl.Confirmdeletion = \u786e\u8ba4\u5220\u9664\u4eff\u771f: -pref.dlg.lbl.DecalEditor = \u56fe\u50cf\u7f16\u8f91\u5668 -pref.dlg.lbl.Distance = \u8ddd\u79bb: -pref.dlg.lbl.FlightTime = \u98de\u884c\u65f6\u95f4: -pref.dlg.lbl.Force = \u529b: -pref.dlg.lbl.Linedensity = \u7ebf\u6027\u5bc6\u5ea6: -pref.dlg.lbl.Mass = \u8d28\u91cf: -pref.dlg.lbl.Momentofinertia = \u8f6c\u52a8\u60ef\u91cf: -pref.dlg.lbl.Motordimensions = \u53d1\u52a8\u673a\u5c3a\u5bf8: -pref.dlg.lbl.Positiontoinsert = \u65b0\u7ec4\u4ef6\u63d2\u5165\u4f4d\u7f6e: -pref.dlg.lbl.Pressure = \u538b\u529b: -pref.dlg.lbl.Rocketdimensions = \u706b\u7bad\u5c3a\u5bf8: -pref.dlg.lbl.Rollrate = \u89d2\u901f\u5ea6: -pref.dlg.lbl.Selectprefunits = \u8bf7\u9009\u62e9\u5355\u4f4d\u5236: -pref.dlg.lbl.Stability = \u7a33\u5b9a\u6027: -pref.dlg.lbl.Surfacedensity = \u8868\u9762\u5bc6\u5ea6: -pref.dlg.lbl.Surfaceroughness = \u8868\u9762\u7c97\u7cd9\u5ea6: -pref.dlg.lbl.Temperature = \u6e29\u5ea6: -pref.dlg.lbl.Totalimpulse = \u603b\u51b2\u91cf: -pref.dlg.lbl.User-definedthrust = \u81ea\u5b9a\u4e49\u63a8\u529b\u66f2\u7ebf: -pref.dlg.lbl.Velocity = \u901f\u7387: -pref.dlg.lbl.Windspeed = \u98ce\u901f -pref.dlg.lbl.effect1 = \u66f4\u6539\u5c06\u5728\u4e0b\u6b21\u542f\u52a8\u7a97\u53e3\u540e\u751f\u6548 -pref.dlg.lbl.msg1 = \u8fde\u63a5\u5230\u670d\u52a1\u5668\u662f\u53d1\u751f\u9519\u8bef -pref.dlg.lbl.msg2 = \u65e0\u6cd5\u83b7\u53d6\u66f4\u65b0\u4fe1\u606f -pref.dlg.lbl.msg3 = \u60a8\u4f7f\u7528\u7684\u5df2\u7ecf\u662fOpenRocket\u6700\u65b0\u7248\u672c -pref.dlg.lbl.msg4 = \u65e0\u53ef\u7528\u66f4\u65b0 -pref.dlg.opengl.but.enableAA = \u542f\u7528\u53cd\u952f\u9f7f -pref.dlg.opengl.but.enableGL = \u542f\u7528\u4e09\u7ef4\u56fe\u50cf -pref.dlg.opengl.lbl.title = \u4e09\u7ef4\u56fe\u50cf -pref.dlg.opengl.lbl.useFBO = \u79bb\u7ebf\u6e32\u67d3 -pref.dlg.tab.Custommaterials = \u81ea\u5b9a\u4e49\u6750\u6599 -pref.dlg.tab.Defaultunits = \u7f3a\u7701\u5355\u4f4d -pref.dlg.tab.Graphics = \u56fe\u50cf +pref.dlg.but.add = \u589E\u52A0 +pref.dlg.but.checknow = \u68C0\u67E5 +pref.dlg.but.defaultimperial = \u7F3A\u7701\u82F1\u5236 +pref.dlg.but.defaultmetric = \u7F3A\u7701\u516C\u5236 +pref.dlg.but.openlast = \u5728\u542F\u52A8\u7684\u65F6\u5019\u6253\u5F00\u4E0A\u6B21\u8BBE\u8BA1 +pref.dlg.but.reset = \u91CD\u7F6E +pref.dlg.checkbox.Checkupdates = \u542F\u52A8\u65F6\u68C0\u67E5\u66F4\u65B0 +pref.dlg.lbl.Acceleration = \u52A0\u901F\u5EA6: +pref.dlg.lbl.Angle = \u89D2\u5EA6: +pref.dlg.lbl.Area = \u9762\u79EF: +pref.dlg.lbl.Bulkdensity = \u4F53\u79EF\u5BC6\u5EA6: +pref.dlg.lbl.Checkingupdates = \u6B63\u5728\u68C0\u67E5\u66F4\u65B0... +pref.dlg.lbl.Confirmdeletion = \u786E\u8BA4\u5220\u9664\u4EFF\u771F: +pref.dlg.lbl.DecalEditor = \u56FE\u50CF\u7F16\u8F91\u5668 +pref.dlg.lbl.Distance = \u8DDD\u79BB: +pref.dlg.lbl.FlightTime = \u98DE\u884C\u65F6\u95F4: +pref.dlg.lbl.Force = \u529B: +pref.dlg.lbl.Linedensity = \u7EBF\u6027\u5BC6\u5EA6: +pref.dlg.lbl.Mass = \u8D28\u91CF: +pref.dlg.lbl.Momentofinertia = \u8F6C\u52A8\u60EF\u91CF: +pref.dlg.lbl.Motordimensions = \u53D1\u52A8\u673A\u5C3A\u5BF8: +pref.dlg.lbl.Positiontoinsert = \u65B0\u7EC4\u4EF6\u63D2\u5165\u4F4D\u7F6E: +pref.dlg.lbl.Pressure = \u538B\u529B: +pref.dlg.lbl.Rocketdimensions = \u706B\u7BAD\u5C3A\u5BF8: +pref.dlg.lbl.Rollrate = \u89D2\u901F\u5EA6: +pref.dlg.lbl.Selectprefunits = \u8BF7\u9009\u62E9\u5355\u4F4D\u5236: +pref.dlg.lbl.Stability = \u7A33\u5B9A\u6027: +pref.dlg.lbl.Surfacedensity = \u8868\u9762\u5BC6\u5EA6: +pref.dlg.lbl.Surfaceroughness = \u8868\u9762\u7C97\u7CD9\u5EA6: +pref.dlg.lbl.Temperature = \u6E29\u5EA6: +pref.dlg.lbl.Totalimpulse = \u603B\u51B2\u91CF: +pref.dlg.lbl.User-definedthrust = \u81EA\u5B9A\u4E49\u63A8\u529B\u66F2\u7EBF: +pref.dlg.lbl.Velocity = \u901F\u7387: +pref.dlg.lbl.Windspeed = \u98CE\u901F +pref.dlg.lbl.effect1 = \u66F4\u6539\u5C06\u5728\u4E0B\u6B21\u542F\u52A8\u7A97\u53E3\u540E\u751F\u6548 +pref.dlg.lbl.msg1 = \u8FDE\u63A5\u5230\u670D\u52A1\u5668\u662F\u53D1\u751F\u9519\u8BEF +pref.dlg.lbl.msg2 = \u65E0\u6CD5\u83B7\u53D6\u66F4\u65B0\u4FE1\u606F +pref.dlg.lbl.msg3 = \u60A8\u4F7F\u7528\u7684\u5DF2\u7ECF\u662FOpenRocket\u6700\u65B0\u7248\u672C +pref.dlg.lbl.msg4 = \u65E0\u53EF\u7528\u66F4\u65B0 +pref.dlg.opengl.but.enableAA = \u542F\u7528\u53CD\u952F\u9F7F +pref.dlg.opengl.but.enableGL = \u542F\u7528\u4E09\u7EF4\u56FE\u50CF +pref.dlg.opengl.lbl.title = \u4E09\u7EF4\u56FE\u50CF +pref.dlg.opengl.lbl.useFBO = \u79BB\u7EBF\u6E32\u67D3 +pref.dlg.tab.Custommaterials = \u81EA\u5B9A\u4E49\u6750\u6599 +pref.dlg.tab.Defaultunits = \u7F3A\u7701\u5355\u4F4D +pref.dlg.tab.Graphics = \u56FE\u50CF pref.dlg.tab.Materials = \u6750\u6599 pref.dlg.tab.Miscellaneousoptions = \u6742\u9879 pref.dlg.tab.Options = \u9009\u9879 -pref.dlg.tab.Units = \u5355\u4f4d\u5236 +pref.dlg.tab.Units = \u5355\u4F4D\u5236 pref.dlg.title.Preferences = \u9996\u9009\u9879 -pref.dlg.ttip.Checkupdatesnow = \u73b0\u5728\u68c0\u67e5\u8f6f\u4ef6\u66f4\u65b0 +pref.dlg.ttip.Checkupdatesnow = \u73B0\u5728\u68C0\u67E5\u8F6F\u4EF6\u66F4\u65B0 -printdlg.but.preview = \u9884\u89c8 -printdlg.but.saveaspdf = \u4fdd\u5b58\u4e3a PDF -printdlg.but.settings = \u8bbe\u7f6e +printdlg.but.preview = \u9884\u89C8 +printdlg.but.saveaspdf = \u4FDD\u5B58\u4E3A PDF +printdlg.but.settings = \u8BBE\u7F6E -ringcompcfg.Automatic = \u81ea\u52a8 -ringcompcfg.Distancefrom = \u5230\u706b\u7bad\u4e2d\u5fc3\u7ebf\u7684\u8ddd\u79bb -ringcompcfg.EngineBlock.desc = \u53d1\u52a8\u673a\u5ea7\u7528\u4e8e\u9632\u6b62\u53d1\u52a8\u673a\u5411\u524d\u7a9c\u51fa\u7bad\u4f53.

\u6dfb\u52a0\u53d1\u52a8\u673a\u524d\u8bf7\u5148\u6dfb\u52a0\u7bad\u4f53\u6216\u5185\u7ba1\u5e76\u5728\u53d1\u52a8\u673a\u9875\u9762\u4e0a\u6807\u8bb0\u4e3a\u53d1\u52a8\u673a\u5ea7. -ringcompcfg.InnerRadius = \u5185\u76f4\u5f84 -ringcompcfg.Length = \u957f\u5ea6 +ringcompcfg.Automatic = \u81EA\u52A8 +ringcompcfg.Distancefrom = \u5230\u706B\u7BAD\u4E2D\u5FC3\u7EBF\u7684\u8DDD\u79BB +ringcompcfg.EngineBlock.desc = \u53D1\u52A8\u673A\u5EA7\u7528\u4E8E\u9632\u6B62\u53D1\u52A8\u673A\u5411\u524D\u7A9C\u51FA\u7BAD\u4F53.

\u6DFB\u52A0\u53D1\u52A8\u673A\u524D\u8BF7\u5148\u6DFB\u52A0\u7BAD\u4F53\u6216\u5185\u7BA1\u5E76\u5728\u53D1\u52A8\u673A\u9875\u9762\u4E0A\u6807\u8BB0\u4E3A\u53D1\u52A8\u673A\u5EA7. +ringcompcfg.InnerRadius = \u5185\u76F4\u5F84 +ringcompcfg.Length = \u957F\u5EA6 ! Ring Component Config -ringcompcfg.OuterRadius = \u5916\u76f4\u5f84 -ringcompcfg.PositionValue = \u4f4d\u7f6e\u503c -ringcompcfg.Positionrelativeto = \u76f8\u5bf9\u4f4d\u7f6e\u81ea: -ringcompcfg.Radialdirection = \u5f84\u5411: -ringcompcfg.Radialdistance = \u5f84\u5411\u8ddd\u79bb: -ringcompcfg.Thickness = \u539a\u5ea6 -ringcompcfg.but.Reset = \u91cd\u7f6e -ringcompcfg.but.Resetcomponant = \u91cd\u7f6e\u6240\u6709\u7ec4\u4ef6\u5bf9\u9f50\u4e2d\u5fc3\u7ebf -ringcompcfg.note.desc = \u6ce8\u610f: \u5185\u7ba1\u4e0d\u4f1a\u5f71\u54cd\u7a7a\u6c14\u52a8\u529b\u5b66(\u5373\u4f7f\u662f\u8d85\u51fa\u7bad\u4f53\u4e5f\u4e0d\u4f1a). -ringcompcfg.plus = \u52a0 -ringcompcfg.radialdirectionfrom = \u4ece\u706b\u7bad\u4e2d\u5fc3\u7ebf\u6cbf\u5f84\u5411 +ringcompcfg.OuterRadius = \u5916\u76F4\u5F84 +ringcompcfg.PositionValue = \u4F4D\u7F6E\u503C +ringcompcfg.Positionrelativeto = \u76F8\u5BF9\u4F4D\u7F6E\u81EA: +ringcompcfg.Radialdirection = \u5F84\u5411: +ringcompcfg.Radialdistance = \u5F84\u5411\u8DDD\u79BB: +ringcompcfg.Thickness = \u539A\u5EA6 +ringcompcfg.but.Reset = \u91CD\u7F6E +ringcompcfg.but.Resetcomponant = \u91CD\u7F6E\u6240\u6709\u7EC4\u4EF6\u5BF9\u9F50\u4E2D\u5FC3\u7EBF +ringcompcfg.note.desc = \u6CE8\u610F: \u5185\u7BA1\u4E0D\u4F1A\u5F71\u54CD\u7A7A\u6C14\u52A8\u529B\u5B66(\u5373\u4F7F\u662F\u8D85\u51FA\u7BAD\u4F53\u4E5F\u4E0D\u4F1A). +ringcompcfg.plus = \u52A0 +ringcompcfg.radialdirectionfrom = \u4ECE\u706B\u7BAD\u4E2D\u5FC3\u7EBF\u6CBF\u5F84\u5411 -simedtdlg.IntensityDesc.Extreme = \u6781\u9ad8 -simedtdlg.IntensityDesc.High = \u9ad8 -simedtdlg.IntensityDesc.Low = \u4f4e -simedtdlg.IntensityDesc.Medium = \u4e2d -simedtdlg.IntensityDesc.None = \u65e0 -simedtdlg.IntensityDesc.Veryhigh = \u5f88\u9ad8 -simedtdlg.IntensityDesc.Verylow = \u5f88\u4f4e -simedtdlg.border.Atmoscond = \u5927\u6c14\u6761\u4ef6 -simedtdlg.border.Launchrod = \u53d1\u5c04\u67b6 -simedtdlg.border.Simlist = \u4eff\u771f\u76d1\u542c\u5668 -simedtdlg.border.Simopt = \u4eff\u771f\u9009\u9879 -simedtdlg.but.add = \u6dfb\u52a0 -simedtdlg.but.remove = \u79fb\u9664 -simedtdlg.but.resettodefault = \u6062\u590d\u9ed8\u8ba4 +simedtdlg.IntensityDesc.Extreme = \u6781\u9AD8 +simedtdlg.IntensityDesc.High = \u9AD8 +simedtdlg.IntensityDesc.Low = \u4F4E +simedtdlg.IntensityDesc.Medium = \u4E2D +simedtdlg.IntensityDesc.None = \u65E0 +simedtdlg.IntensityDesc.Veryhigh = \u5F88\u9AD8 +simedtdlg.IntensityDesc.Verylow = \u5F88\u4F4E +simedtdlg.border.Atmoscond = \u5927\u6C14\u6761\u4EF6 +simedtdlg.border.Launchrod = \u53D1\u5C04\u67B6 +simedtdlg.border.Simlist = \u4EFF\u771F\u76D1\u542C\u5668 +simedtdlg.border.Simopt = \u4EFF\u771F\u9009\u9879 +simedtdlg.but.add = \u6DFB\u52A0 +simedtdlg.but.remove = \u79FB\u9664 +simedtdlg.but.resettodefault = \u6062\u590D\u9ED8\u8BA4 ! Simulation edit dialog -simedtdlg.but.runsimulation = \u8fd0\u884c\u4eff\u771f -simedtdlg.but.savedefault = \u8bbe\u4e3a\u9ed8\u8ba4 -simedtdlg.but.ttip.resettodefault = \u91cd\u7f6e\u65f6\u95f4\u6b65\u957f\u4e3a\u7f3a\u7701\u503c ( -simedtdlg.chart.Simflight = \u5df2\u4eff\u771f\u7684\u98de\u884c -simedtdlg.checkbox.InterStdAtmosphere = \u4f7f\u7528\u56fd\u9645\u6807\u51c6\u5927\u6c14\u6a21\u578b -simedtdlg.checkbox.ttip.InterStdAtmosphere1 = \u9009\u62e9\u4f7f\u7528\u56fd\u9645\u6807\u51c6\u5927\u6c14\u6a21\u578b.
\u8be5\u6a21\u578b\u7684\u5927\u6c14\u6e29\u5ea6\u4e3a -simedtdlg.checkbox.ttip.InterStdAtmosphere2 = , \u5927\u6c14\u538b\u4e3a -simedtdlg.checkbox.ttip.InterStdAtmosphere3 = \u4e14\u5747\u4e3a\u6d77\u5e73\u9762\u503c. -simedtdlg.combo.ttip.Flightcfg = \u9009\u62e9\u8981\u4f7f\u7528\u7684\u98de\u884c\u914d\u7f6e. -simedtdlg.dlg.Simres = \u4eff\u771f\u7ed3\u679c -simedtdlg.lbl.Addsimlist = \u6dfb\u52a0\u4eff\u771f\u76d1\u542c\u5668 -simedtdlg.lbl.Altitude = \u6d77\u62d4\u9ad8\u5ea6: -simedtdlg.lbl.Angle = \u89d2\u5ea6: -simedtdlg.lbl.Averwindspeed = \u5e73\u5747\u98ce\u901f: -simedtdlg.lbl.Calcmethod = \u8ba1\u7b97\u65b9\u6cd5: -simedtdlg.lbl.Curlist = \u5f53\u524d\u7684\u76d1\u542c\u5668 -simedtdlg.lbl.Direction = \u65b9\u5411: +simedtdlg.but.runsimulation = \u8FD0\u884C\u4EFF\u771F +simedtdlg.but.savedefault = \u8BBE\u4E3A\u9ED8\u8BA4 +simedtdlg.but.ttip.resettodefault = \u91CD\u7F6E\u65F6\u95F4\u6B65\u957F\u4E3A\u7F3A\u7701\u503C ( +simedtdlg.chart.Simflight = \u5DF2\u4EFF\u771F\u7684\u98DE\u884C +simedtdlg.checkbox.InterStdAtmosphere = \u4F7F\u7528\u56FD\u9645\u6807\u51C6\u5927\u6C14\u6A21\u578B +simedtdlg.checkbox.ttip.InterStdAtmosphere1 = \u9009\u62E9\u4F7F\u7528\u56FD\u9645\u6807\u51C6\u5927\u6C14\u6A21\u578B.
\u8BE5\u6A21\u578B\u7684\u5927\u6C14\u6E29\u5EA6\u4E3A +simedtdlg.checkbox.ttip.InterStdAtmosphere2 = , \u5927\u6C14\u538B\u4E3A +simedtdlg.checkbox.ttip.InterStdAtmosphere3 = \u4E14\u5747\u4E3A\u6D77\u5E73\u9762\u503C. +simedtdlg.combo.ttip.Flightcfg = \u9009\u62E9\u8981\u4F7F\u7528\u7684\u98DE\u884C\u914D\u7F6E. +simedtdlg.dlg.Simres = \u4EFF\u771F\u7ED3\u679C +simedtdlg.lbl.Addsimlist = \u6DFB\u52A0\u4EFF\u771F\u76D1\u542C\u5668 +simedtdlg.lbl.Altitude = \u6D77\u62D4\u9AD8\u5EA6: +simedtdlg.lbl.Angle = \u89D2\u5EA6: +simedtdlg.lbl.Averwindspeed = \u5E73\u5747\u98CE\u901F: +simedtdlg.lbl.Calcmethod = \u8BA1\u7B97\u65B9\u6CD5: +simedtdlg.lbl.Curlist = \u5F53\u524D\u7684\u76D1\u542C\u5668 +simedtdlg.lbl.Direction = \u65B9\u5411: simedtdlg.lbl.ExtBarrowman = Extended Barrowman -simedtdlg.lbl.Flightcfg = \u98de\u884c\u914d\u7f6e: -simedtdlg.lbl.GeodeticMethod = \u5927\u5730\u6d4b\u91cf\u8ba1\u7b97: -simedtdlg.lbl.Latitude = \u7eac\u5ea6: -simedtdlg.lbl.Launchsite = \u53d1\u5c04\u5730\u70b9 -simedtdlg.lbl.Length = \u957f\u5ea6: -simedtdlg.lbl.Longitude = \u7ecf\u5ea6: -simedtdlg.lbl.Noflightdata = \u65e0\u53ef\u7528\u98de\u884c\u6570\u636e -simedtdlg.lbl.Pressure = \u538b\u529b: -simedtdlg.lbl.Simmethod = \u4eff\u771f\u65b9\u6cd5: -simedtdlg.lbl.Simname = \u4eff\u771f\u540d\u79f0: -simedtdlg.lbl.Stddeviation = \u6807\u51c6\u5dee: -simedtdlg.lbl.Temperature = \u6e29\u5ea6: -simedtdlg.lbl.Timestep = \u65f6\u95f4\u6b65\u957f: -simedtdlg.lbl.Turbulenceintensity = \u6e4d\u6d41\u5f3a\u5ea6: -simedtdlg.lbl.Wind = \u98ce\u573a\u6761\u4ef6 -simedtdlg.lbl.runsimfirst = \u8bf7\u5148\u8fd0\u884c\u4eff\u771f -simedtdlg.lbl.ttip.Altitude = \u53d1\u5c04\u9ad8\u5ea6\u57fa\u4e8e\u6d77\u5e73\u9762.
\u8fd9\u4f1a\u5f71\u54cd\u5927\u6c14\u6a21\u578b\u4e2d\u706b\u7bad\u7684\u4f4d\u7f6e. -simedtdlg.lbl.ttip.Angle = \u53d1\u5c04\u67b6\u76f8\u5bf9\u4e8e\u5782\u76f4\u65b9\u5411\u7684\u89d2\u5ea6 -simedtdlg.lbl.ttip.Averwindspeed = \u76f8\u5bf9\u4e8e\u5730\u9762\u7684\u5e73\u5747\u98ce\u901f -simedtdlg.lbl.ttip.Calcmethod = Extended Barrowman\u7b97\u6cd5\u662f\u901a\u8fc7
\u6269\u5c55Barrowman\u65b9\u7a0b\u5f0f\u6765\u9002\u5e94\u66f4\u591a\u7ec4\u4ef6. -simedtdlg.lbl.ttip.Direction1 = \u53d1\u5c04\u67b6\u76f8\u5bf9\u4e8e\u98ce\u7684\u65b9\u5411.
-simedtdlg.lbl.ttip.Direction2 = = \u9876\u98ce, -simedtdlg.lbl.ttip.Direction3 = = \u987a\u98ce. -simedtdlg.lbl.ttip.Flightcfg = \u9009\u62e9\u8981\u4f7f\u7528\u7684\u98de\u884c\u914d\u7f6e. -simedtdlg.lbl.ttip.GeodeticMethodTip = \u76f8\u5bf9\u4e8e\u5730\u7403\u7684\u5750\u6807\u8ba1\u7b97. \u53ef\u8ba1\u7b97\u79d1\u91cc\u5965\u5229\u6548\u5e94. -simedtdlg.lbl.ttip.Latitude = \u53d1\u5c04\u5730\u70b9\u7684\u7eac\u5ea6\u4f1a\u5f71\u54cd\u5730\u7403\u7684\u5f15\u529b.
\u5317\u534a\u7403\u4e3a\u6b63\u503c,\u5357\u534a\u7403\u4e3a\u8d1f\u503c. -simedtdlg.lbl.ttip.Length = \u53d1\u5c04\u67b6\u7684\u603b\u957f\u5ea6. -simedtdlg.lbl.ttip.Longitude = \u9700\u8981\u5929\u6c14\u9884\u62a5\u4ee5\u53ca\u9ad8\u7a0b\u6a21\u578b. -simedtdlg.lbl.ttip.Pressure = \u53d1\u5c04\u5730\u70b9\u7684\u5927\u6c14\u538b\u529b. -simedtdlg.lbl.ttip.Simmethod1 = 6\u81ea\u7531\u5ea6\u6a21\u62df\u53ef\u4ee5\u6a21\u62df\u706b\u7bad\u7684\u5404\u79cd\u98de\u884c\u60c5\u51b5.
-simedtdlg.lbl.ttip.Simmethod2 = \u79ef\u5206\u65b9\u6cd5\u91c7\u75284\u9636Runge-Kutta\u6570\u503c\u79ef\u5206. -simedtdlg.lbl.ttip.Stddeviation = \u98ce\u901f\u7684\u6807\u51c6\u504f\u5dee.
\u98ce\u901f\u572895%\u7684\u65f6\u95f4\u5185\u5e94\u5904\u4e8e\u4e24\u500d\u7684\u6807\u51c6\u5dee\u4ee5\u5185. -simedtdlg.lbl.ttip.Temperature = \u53d1\u5c04\u5730\u70b9\u7684\u6e29\u5ea6. -simedtdlg.lbl.ttip.Timestep1 = \u4eff\u771f\u6b65\u9aa4\u4e4b\u95f4\u7684\u65f6\u95f4.
\u66f4\u5c0f\u7684\u65f6\u95f4\u6b65\u957f\u8ba1\u7b97\u66f4\u6162, \u7ed3\u679c\u66f4\u7cbe\u786e.
-simedtdlg.lbl.ttip.Timestep2 = 4\u9636\u6a21\u62df\u65b9\u6cd5\u975e\u5e38\u7cbe\u786e\uff0c\u5982\u679c\u65f6\u95f4\u6b65\u957f\u4e3a -simedtdlg.lbl.ttip.Turbulenceintensity1 = \u6e4d\u6d41\u5f3a\u5ea6\u8fd1\u4f3c\u4e3a\u6807\u51c6\u5dee\u9664\u4ee5\u5e73\u5747\u98ce\u901f.
-simedtdlg.lbl.ttip.Turbulenceintensity2 = \u5178\u578b\u53d6\u503c\u8303\u56f4\u662f\u4ece +simedtdlg.lbl.Flightcfg = \u98DE\u884C\u914D\u7F6E: +simedtdlg.lbl.GeodeticMethod = \u5927\u5730\u6D4B\u91CF\u8BA1\u7B97: +simedtdlg.lbl.Latitude = \u7EAC\u5EA6: +simedtdlg.lbl.Launchsite = \u53D1\u5C04\u5730\u70B9 +simedtdlg.lbl.Length = \u957F\u5EA6: +simedtdlg.lbl.Longitude = \u7ECF\u5EA6: +simedtdlg.lbl.Noflightdata = \u65E0\u53EF\u7528\u98DE\u884C\u6570\u636E +simedtdlg.lbl.Pressure = \u538B\u529B: +simedtdlg.lbl.Simmethod = \u4EFF\u771F\u65B9\u6CD5: +simedtdlg.lbl.Simname = \u4EFF\u771F\u540D\u79F0: +simedtdlg.lbl.Stddeviation = \u6807\u51C6\u5DEE: +simedtdlg.lbl.Temperature = \u6E29\u5EA6: +simedtdlg.lbl.Timestep = \u65F6\u95F4\u6B65\u957F: +simedtdlg.lbl.Turbulenceintensity = \u6E4D\u6D41\u5F3A\u5EA6: +simedtdlg.lbl.Wind = \u98CE\u573A\u6761\u4EF6 +simedtdlg.lbl.runsimfirst = \u8BF7\u5148\u8FD0\u884C\u4EFF\u771F +simedtdlg.lbl.ttip.Altitude = \u53D1\u5C04\u9AD8\u5EA6\u57FA\u4E8E\u6D77\u5E73\u9762.
\u8FD9\u4F1A\u5F71\u54CD\u5927\u6C14\u6A21\u578B\u4E2D\u706B\u7BAD\u7684\u4F4D\u7F6E. +simedtdlg.lbl.ttip.Angle = \u53D1\u5C04\u67B6\u76F8\u5BF9\u4E8E\u5782\u76F4\u65B9\u5411\u7684\u89D2\u5EA6 +simedtdlg.lbl.ttip.Averwindspeed = \u76F8\u5BF9\u4E8E\u5730\u9762\u7684\u5E73\u5747\u98CE\u901F +simedtdlg.lbl.ttip.Calcmethod = Extended Barrowman\u7B97\u6CD5\u662F\u901A\u8FC7
\u6269\u5C55Barrowman\u65B9\u7A0B\u5F0F\u6765\u9002\u5E94\u66F4\u591A\u7EC4\u4EF6. +simedtdlg.lbl.ttip.Direction1 = \u53D1\u5C04\u67B6\u76F8\u5BF9\u4E8E\u98CE\u7684\u65B9\u5411.
+simedtdlg.lbl.ttip.Direction2 = = \u9876\u98CE, +simedtdlg.lbl.ttip.Direction3 = = \u987A\u98CE. +simedtdlg.lbl.ttip.Flightcfg = \u9009\u62E9\u8981\u4F7F\u7528\u7684\u98DE\u884C\u914D\u7F6E. +simedtdlg.lbl.ttip.GeodeticMethodTip = \u76F8\u5BF9\u4E8E\u5730\u7403\u7684\u5750\u6807\u8BA1\u7B97. \u53EF\u8BA1\u7B97\u79D1\u91CC\u5965\u5229\u6548\u5E94. +simedtdlg.lbl.ttip.Latitude = \u53D1\u5C04\u5730\u70B9\u7684\u7EAC\u5EA6\u4F1A\u5F71\u54CD\u5730\u7403\u7684\u5F15\u529B.
\u5317\u534A\u7403\u4E3A\u6B63\u503C,\u5357\u534A\u7403\u4E3A\u8D1F\u503C. +simedtdlg.lbl.ttip.Length = \u53D1\u5C04\u67B6\u7684\u603B\u957F\u5EA6. +simedtdlg.lbl.ttip.Longitude = \u9700\u8981\u5929\u6C14\u9884\u62A5\u4EE5\u53CA\u9AD8\u7A0B\u6A21\u578B. +simedtdlg.lbl.ttip.Pressure = \u53D1\u5C04\u5730\u70B9\u7684\u5927\u6C14\u538B\u529B. +simedtdlg.lbl.ttip.Simmethod1 = 6\u81EA\u7531\u5EA6\u6A21\u62DF\u53EF\u4EE5\u6A21\u62DF\u706B\u7BAD\u7684\u5404\u79CD\u98DE\u884C\u60C5\u51B5.
+simedtdlg.lbl.ttip.Simmethod2 = \u79EF\u5206\u65B9\u6CD5\u91C7\u75284\u9636Runge-Kutta\u6570\u503C\u79EF\u5206. +simedtdlg.lbl.ttip.Stddeviation = \u98CE\u901F\u7684\u6807\u51C6\u504F\u5DEE.
\u98CE\u901F\u572895%\u7684\u65F6\u95F4\u5185\u5E94\u5904\u4E8E\u4E24\u500D\u7684\u6807\u51C6\u5DEE\u4EE5\u5185. +simedtdlg.lbl.ttip.Temperature = \u53D1\u5C04\u5730\u70B9\u7684\u6E29\u5EA6. +simedtdlg.lbl.ttip.Timestep1 = \u4EFF\u771F\u6B65\u9AA4\u4E4B\u95F4\u7684\u65F6\u95F4.
\u66F4\u5C0F\u7684\u65F6\u95F4\u6B65\u957F\u8BA1\u7B97\u66F4\u6162, \u7ED3\u679C\u66F4\u7CBE\u786E.
+simedtdlg.lbl.ttip.Timestep2 = 4\u9636\u6A21\u62DF\u65B9\u6CD5\u975E\u5E38\u7CBE\u786E\uFF0C\u5982\u679C\u65F6\u95F4\u6B65\u957F\u4E3A +simedtdlg.lbl.ttip.Turbulenceintensity1 = \u6E4D\u6D41\u5F3A\u5EA6\u8FD1\u4F3C\u4E3A\u6807\u51C6\u5DEE\u9664\u4EE5\u5E73\u5747\u98CE\u901F.
+simedtdlg.lbl.ttip.Turbulenceintensity2 = \u5178\u578B\u53D6\u503C\u8303\u56F4\u662F\u4ECE simedtdlg.lbl.ttip.Turbulenceintensity3 = \u5230 -simedtdlg.tab.CustomExpressions = \u81ea\u5b9a\u4e49\u8868\u8fbe\u5f0f -simedtdlg.tab.Exportdata = \u8f93\u51fa\u6570\u636e -simedtdlg.tab.Launchcond = \u53d1\u5c04\u6761\u4ef6 -simedtdlg.tab.Plotdata = \u6570\u636e\u7ed8\u56fe -simedtdlg.tab.Simopt = \u6a21\u62df\u9009\u9879 -simedtdlg.title.Editsim = \u7f16\u8f91\u4eff\u771f -simedtdlg.txt.longA1 = \u4eff\u771f\u76d1\u542c\u5668(Simulation Listener)\u662f\u4e00\u4e2a\u9ad8\u7ea7\u7279\u6027,\u5141\u8bb8\u7528\u6237\u81ea\u5b9a\u4e49\u4ee3\u7801\u4e0e\u4eff\u771f\u8fc7\u7a0b\u4ea4\u4e92 -simedtdlg.txt.longA2 = \u5173\u4e8e\u4eff\u771f\u76d1\u542c\u5668\u7684\u8be6\u7ec6\u4fe1\u606f,\u8bf7\u53c2\u9605OpenRocket\u76f8\u5173\u6280\u672f\u6587\u6863. +simedtdlg.tab.CustomExpressions = \u81EA\u5B9A\u4E49\u8868\u8FBE\u5F0F +simedtdlg.tab.Exportdata = \u8F93\u51FA\u6570\u636E +simedtdlg.tab.Launchcond = \u53D1\u5C04\u6761\u4EF6 +simedtdlg.tab.Plotdata = \u6570\u636E\u7ED8\u56FE +simedtdlg.tab.Simopt = \u6A21\u62DF\u9009\u9879 +simedtdlg.title.Editsim = \u7F16\u8F91\u4EFF\u771F +simedtdlg.txt.longA1 = \u4EFF\u771F\u76D1\u542C\u5668(Simulation Listener)\u662F\u4E00\u4E2A\u9AD8\u7EA7\u7279\u6027,\u5141\u8BB8\u7528\u6237\u81EA\u5B9A\u4E49\u4EE3\u7801\u4E0E\u4EFF\u771F\u8FC7\u7A0B\u4EA4\u4E92 +simedtdlg.txt.longA2 = \u5173\u4E8E\u4EFF\u771F\u76D1\u542C\u5668\u7684\u8BE6\u7EC6\u4FE1\u606F,\u8BF7\u53C2\u9605OpenRocket\u76F8\u5173\u6280\u672F\u6587\u6863. -simpanel.but.deletesimulations = \u5220\u9664\u4eff\u771f -simpanel.but.editsimulation = \u7f16\u8f91\u4eff\u771f +simpanel.but.deletesimulations = \u5220\u9664\u4EFF\u771F +simpanel.but.editsimulation = \u7F16\u8F91\u4EFF\u771F ! Simulation Panel -simpanel.but.newsimulation = \u65b0\u5efa\u4eff\u771f -simpanel.but.plotexport = \u7ed8\u56fe/\u8f93\u51fa -simpanel.but.runsimulations = \u8fd0\u884c\u4eff\u771f -simpanel.but.ttip.deletesim = \u5220\u9664\u9009\u4e2d\u7684\u4eff\u771f -simpanel.but.ttip.editsim = \u7f16\u8f91\u9009\u4e2d\u7684\u4eff\u771f -simpanel.but.ttip.newsimulation = \u6dfb\u52a0\u4e00\u4e2a\u65b0\u7684\u4eff\u771f -simpanel.but.ttip.runsimu = \u91cd\u65b0\u8fd0\u884c\u9009\u4e2d\u7684\u4eff\u771f -simpanel.checkbox.donotask = \u4e0d\u518d\u8be2\u95ee -simpanel.col.Apogee = \u6700\u9ad8\u70b9 -simpanel.col.Configuration = \u914d\u7f6e -simpanel.col.Flighttime = \u98de\u884c\u65f6\u95f4 -simpanel.col.Groundhitvelocity = \u649e\u51fb\u5730\u9762\u901f\u5ea6 -simpanel.col.Maxacceleration = \u6700\u5927\u52a0\u901f\u5ea6 -simpanel.col.Maxvelocity = \u6700\u5927\u901f\u5ea6 -simpanel.col.Motors = \u53d1\u52a8\u673a -simpanel.col.Name = \u540d\u79f0 -simpanel.col.Timetoapogee = \u6700\u9ad8\u70b9\u65f6\u95f4 -simpanel.col.Velocityatdeploy = \u6709\u6548\u8d1f\u8377\u901f\u5ea6 -simpanel.col.Velocityoffrod = \u79bb\u67b6\u901f\u5ea6 -simpanel.dlg.lbl.DeleteSim1 = \u5220\u9664\u9009\u4e2d\u7684\u4eff\u771f? -simpanel.dlg.lbl.DeleteSim2 = \u8be5\u64cd\u4f5c\u65e0\u6cd5\u64a4\u9500. -simpanel.dlg.lbl.DeleteSim3 = \u5220\u9664\u4eff\u771f -simpanel.lbl.defpref = \u60a8\u53ef\u5728\u9996\u9009\u9879\u4e2d\u4fee\u6539\u9ed8\u8ba4\u64cd\u4f5c. -simpanel.ttip.external = \u5bfc\u5165\u7684\u6570\u636e -simpanel.ttip.loaded = \u4ece\u6587\u4ef6\u8f7d\u5165\u6570\u636e -simpanel.ttip.noData = \u6ca1\u6709\u53ef\u7528\u7684\u4eff\u771f\u6570\u636e. -simpanel.ttip.noWarnings = \u6ca1\u6709\u8b66\u544a. -simpanel.ttip.notSimulated = \u672a\u8fdb\u884c\u8fc7\u4eff\u771f
\u70b9\u51fb\u8fd0\u884c\u4eff\u771f. -simpanel.ttip.outdated = \u6570\u636e\u5df2\u8fc7\u671f
\u70b9\u51fb\u8fd0\u884c\u4eff\u771f\u91cd\u65b0\u8ba1\u7b97. -simpanel.ttip.uptodate = \u6700\u65b0\u7684\u6570\u636e -simpanel.ttip.warnings = \u8b66\u544a: +simpanel.but.newsimulation = \u65B0\u5EFA\u4EFF\u771F +simpanel.but.plotexport = \u7ED8\u56FE/\u8F93\u51FA +simpanel.but.runsimulations = \u8FD0\u884C\u4EFF\u771F +simpanel.but.ttip.deletesim = \u5220\u9664\u9009\u4E2D\u7684\u4EFF\u771F +simpanel.but.ttip.editsim = \u7F16\u8F91\u9009\u4E2D\u7684\u4EFF\u771F +simpanel.but.ttip.newsimulation = \u6DFB\u52A0\u4E00\u4E2A\u65B0\u7684\u4EFF\u771F +simpanel.but.ttip.runsimu = \u91CD\u65B0\u8FD0\u884C\u9009\u4E2D\u7684\u4EFF\u771F +simpanel.checkbox.donotask = \u4E0D\u518D\u8BE2\u95EE +simpanel.col.Apogee = \u6700\u9AD8\u70B9 +simpanel.col.Configuration = \u914D\u7F6E +simpanel.col.Flighttime = \u98DE\u884C\u65F6\u95F4 +simpanel.col.Groundhitvelocity = \u649E\u51FB\u5730\u9762\u901F\u5EA6 +simpanel.col.Maxacceleration = \u6700\u5927\u52A0\u901F\u5EA6 +simpanel.col.Maxvelocity = \u6700\u5927\u901F\u5EA6 +simpanel.col.Motors = \u53D1\u52A8\u673A +simpanel.col.Name = \u540D\u79F0 +simpanel.col.Timetoapogee = \u6700\u9AD8\u70B9\u65F6\u95F4 +simpanel.col.Velocityatdeploy = \u6709\u6548\u8D1F\u8377\u901F\u5EA6 +simpanel.col.Velocityoffrod = \u79BB\u67B6\u901F\u5EA6 +simpanel.dlg.lbl.DeleteSim1 = \u5220\u9664\u9009\u4E2D\u7684\u4EFF\u771F? +simpanel.dlg.lbl.DeleteSim2 = \u8BE5\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500. +simpanel.dlg.lbl.DeleteSim3 = \u5220\u9664\u4EFF\u771F +simpanel.lbl.defpref = \u60A8\u53EF\u5728\u9996\u9009\u9879\u4E2D\u4FEE\u6539\u9ED8\u8BA4\u64CD\u4F5C. +simpanel.ttip.external = \u5BFC\u5165\u7684\u6570\u636E +simpanel.ttip.loaded = \u4ECE\u6587\u4EF6\u8F7D\u5165\u6570\u636E +simpanel.ttip.noData = \u6CA1\u6709\u53EF\u7528\u7684\u4EFF\u771F\u6570\u636E. +simpanel.ttip.noWarnings = \u6CA1\u6709\u8B66\u544A. +simpanel.ttip.notSimulated = \u672A\u8FDB\u884C\u8FC7\u4EFF\u771F
\u70B9\u51FB\u8FD0\u884C\u4EFF\u771F. +simpanel.ttip.outdated = \u6570\u636E\u5DF2\u8FC7\u671F
\u70B9\u51FB\u8FD0\u884C\u4EFF\u771F\u91CD\u65B0\u8BA1\u7B97. +simpanel.ttip.uptodate = \u6700\u65B0\u7684\u6570\u636E +simpanel.ttip.warnings = \u8B66\u544A: -simplotpanel.AUTO_NAME = \u81ea\u52a8 -simplotpanel.CUSTOM = \u81ea\u5b9a\u4e49 -simplotpanel.Desc = \u6570\u636e\u5c06\u6309\u65f6\u95f4\u987a\u5e8f\u7ed8\u5236, \u5373\u4f7fX\u8f74\u4e0d\u662f\u65f6\u95f4. -simplotpanel.LEFT_NAME = \u5de6 -simplotpanel.OptionPane.lbl1 = \u6700\u591a\u7ed8\u523615\u5e45\u56fe. -simplotpanel.OptionPane.lbl2 = \u65e0\u6cd5\u65b0\u589e\u7ed8\u56fe -simplotpanel.RIGHT_NAME = \u53f3 -simplotpanel.but.All = \u5168\u9009\u4e8b\u4ef6 -simplotpanel.but.NewYaxisplottype = \u65b0\u5efaY\u8f74\u7c7b\u522b -simplotpanel.but.None = \u53d6\u6d88\u5168\u9009\u4e8b\u4ef6 -simplotpanel.but.ttip.Removethisplot = \u5220\u9664\u8be5Y\u8f74\u7c7b\u522b -simplotpanel.lbl.Axis = \u8f74: -simplotpanel.lbl.Flightevents = \u98de\u884c\u4e8b\u4ef6: +simplotpanel.AUTO_NAME = \u81EA\u52A8 +simplotpanel.CUSTOM = \u81EA\u5B9A\u4E49 +simplotpanel.Desc = \u6570\u636E\u5C06\u6309\u65F6\u95F4\u987A\u5E8F\u7ED8\u5236, \u5373\u4F7FX\u8F74\u4E0D\u662F\u65F6\u95F4. +simplotpanel.LEFT_NAME = \u5DE6 +simplotpanel.OptionPane.lbl1 = \u6700\u591A\u7ED8\u523615\u5E45\u56FE. +simplotpanel.OptionPane.lbl2 = \u65E0\u6CD5\u65B0\u589E\u7ED8\u56FE +simplotpanel.RIGHT_NAME = \u53F3 +simplotpanel.but.All = \u5168\u9009\u4E8B\u4EF6 +simplotpanel.but.NewYaxisplottype = \u65B0\u5EFAY\u8F74\u7C7B\u522B +simplotpanel.but.None = \u53D6\u6D88\u5168\u9009\u4E8B\u4EF6 +simplotpanel.but.ttip.Removethisplot = \u5220\u9664\u8BE5Y\u8F74\u7C7B\u522B +simplotpanel.lbl.Axis = \u8F74: +simplotpanel.lbl.Flightevents = \u98DE\u884C\u4E8B\u4EF6: ! Simulation plot panel -simplotpanel.lbl.Presetplotconf = \u9884\u8bbe\u7ed8\u56fe\u5e03\u5c40: -simplotpanel.lbl.Unit = \u5355\u4f4d: -simplotpanel.lbl.Xaxistype = X\u8f74\u7c7b\u522b: -simplotpanel.lbl.Yaxistypes = Y\u8f74\u7c7b\u522b: +simplotpanel.lbl.Presetplotconf = \u9884\u8BBE\u7ED8\u56FE\u5E03\u5C40: +simplotpanel.lbl.Unit = \u5355\u4F4D: +simplotpanel.lbl.Xaxistype = X\u8F74\u7C7B\u522B: +simplotpanel.lbl.Yaxistypes = Y\u8F74\u7C7B\u522B: -table.column.AftOuterDiameter = \u524d\u90e8\u5916\u76f4\u5f84 -table.column.AftShoulderDiameter = \u524d\u90e8\u8fde\u63a5\u5668\u76f4\u5f84 -table.column.AftShoulderLength = \u524d\u90e8\u8fde\u63a5\u5668\u957f\u5ea6 -table.column.Description = \u7b80\u4ecb -table.column.Diameter = \u76f4\u5f84 -table.column.Favorite = \u6536\u85cf -table.column.Filled = \u5b9e\u5fc3 +table.column.AftOuterDiameter = \u524D\u90E8\u5916\u76F4\u5F84 +table.column.AftShoulderDiameter = \u524D\u90E8\u8FDE\u63A5\u5668\u76F4\u5F84 +table.column.AftShoulderLength = \u524D\u90E8\u8FDE\u63A5\u5668\u957F\u5EA6 +table.column.Description = \u7B80\u4ECB +table.column.Diameter = \u76F4\u5F84 +table.column.Favorite = \u6536\u85CF +table.column.Filled = \u5B9E\u5FC3 table.column.Finish = \u8868\u9762\u5904\u7406 -table.column.ForeOuterDiameter = \u540e\u90e8\u5916\u76f4\u5f84 -table.column.ForeShoulderDiameter = \u540e\u90e8\u8fde\u63a5\u5668\u76f4\u5f84 -table.column.ForeShoulderLength = \u540e\u90e8\u8fde\u63a5\u5668\u957f\u5ea6 -table.column.InnerDiameter = \u5185\u76f4\u5f84 -table.column.Length = \u957f -table.column.LineCount = \u7ef3\u7d22\u6570\u91cf -table.column.LineLength = \u7ef3\u7d22\u957f\u5ea6 -table.column.LineMaterial = \u7ef3\u7d22\u6750\u6599 +table.column.ForeOuterDiameter = \u540E\u90E8\u5916\u76F4\u5F84 +table.column.ForeShoulderDiameter = \u540E\u90E8\u8FDE\u63A5\u5668\u76F4\u5F84 +table.column.ForeShoulderLength = \u540E\u90E8\u8FDE\u63A5\u5668\u957F\u5EA6 +table.column.InnerDiameter = \u5185\u76F4\u5F84 +table.column.Length = \u957F +table.column.LineCount = \u7EF3\u7D22\u6570\u91CF +table.column.LineLength = \u7EF3\u7D22\u957F\u5EA6 +table.column.LineMaterial = \u7EF3\u7D22\u6750\u6599 table.column.Manufacturer = \u5236\u9020\u5546 -table.column.Mass = \u8d28\u91cf +table.column.Mass = \u8D28\u91CF table.column.Material = \u6750\u6599 -table.column.OuterDiameter = \u5916\u76f4\u5f84 -table.column.PartNo = \u578b\u53f7 -table.column.Shape = \u5f62\u72b6 -table.column.Sides = \u8fb9\u957f -table.column.Thickness = \u539a\u5ea6 -table.column.Type = \u7c7b\u578b -table.column.Width = \u5bbd +table.column.OuterDiameter = \u5916\u76F4\u5F84 +table.column.PartNo = \u578B\u53F7 +table.column.Shape = \u5F62\u72B6 +table.column.Sides = \u8FB9\u957F +table.column.Thickness = \u539A\u5EA6 +table.column.Type = \u7C7B\u578B +table.column.Width = \u5BBD diff --git a/core/resources/pix/icons/cg-override.png b/core/resources/pix/icons/cg-override.png new file mode 100644 index 000000000..e66e3ce10 Binary files /dev/null and b/core/resources/pix/icons/cg-override.png differ diff --git a/core/resources/pix/icons/mass-override.png b/core/resources/pix/icons/mass-override.png new file mode 100755 index 000000000..86cb1d701 Binary files /dev/null and b/core/resources/pix/icons/mass-override.png differ diff --git a/core/resources/pix/translators/logoKCSASimplifiedChinese.png b/core/resources/pix/translators/logoKCSASimplifiedChinese.png index fb860bf6c..29bbb47d4 100644 Binary files a/core/resources/pix/translators/logoKCSASimplifiedChinese.png and b/core/resources/pix/translators/logoKCSASimplifiedChinese.png differ diff --git a/core/src/net/sf/openrocket/aerodynamics/Warning.java b/core/src/net/sf/openrocket/aerodynamics/Warning.java index 44b0a3d85..fc0dcd6cd 100644 --- a/core/src/net/sf/openrocket/aerodynamics/Warning.java +++ b/core/src/net/sf/openrocket/aerodynamics/Warning.java @@ -329,6 +329,4 @@ public abstract class Warning { public static final Warning TUMBLE_UNDER_THRUST = new Other(trans.get("Warning.TUMBLE_UNDER_THRUST")); - public static final Warning TUMBLE_BEFORE_APOGEE = - new Other(trans.get("Warning.TUMBLE_BEFORE_APOGEE")); } diff --git a/core/src/net/sf/openrocket/appearance/defaults/DefaultAppearance.java b/core/src/net/sf/openrocket/appearance/defaults/DefaultAppearance.java index 576580d1c..d0ca34ef2 100644 --- a/core/src/net/sf/openrocket/appearance/defaults/DefaultAppearance.java +++ b/core/src/net/sf/openrocket/appearance/defaults/DefaultAppearance.java @@ -62,6 +62,7 @@ public class DefaultAppearance { private static Appearance ESTES_MOTOR = simple("/datafiles/textures/motors/estes.jpg"); private static Appearance AEROTECH_MOTOR = simple("/datafiles/textures/motors/aerotech.png"); + private static Appearance KLIMA_MOTOR = simple("/datafiles/textures/motors/klima.jpg"); private static Appearance REUSABLE_MOTOR = simpleAlpha(new Color(195, 60, 50), .6f, "/datafiles/textures/motors/reusable.png"); private static HashMap plastics = new HashMap(); @@ -105,6 +106,9 @@ public class DefaultAppearance { if ("AeroTech".equals(tcm.getManufacturer().getSimpleName())) { return AEROTECH_MOTOR; } + if ("Klima".equals(tcm.getManufacturer().getSimpleName())) { + return KLIMA_MOTOR; + } } return REUSABLE_MOTOR; } diff --git a/core/src/net/sf/openrocket/document/Simulation.java b/core/src/net/sf/openrocket/document/Simulation.java index 0b672032e..eebc32532 100644 --- a/core/src/net/sf/openrocket/document/Simulation.java +++ b/core/src/net/sf/openrocket/document/Simulation.java @@ -2,6 +2,7 @@ package net.sf.openrocket.document; import java.util.EventListener; import java.util.EventObject; +import java.util.Iterator; import java.util.List; import net.sf.openrocket.aerodynamics.AerodynamicCalculator; @@ -10,8 +11,14 @@ import net.sf.openrocket.aerodynamics.WarningSet; import net.sf.openrocket.formatting.RocketDescriptor; import net.sf.openrocket.masscalc.BasicMassCalculator; import net.sf.openrocket.masscalc.MassCalculator; +import net.sf.openrocket.motor.Motor; +import net.sf.openrocket.motor.MotorInstanceConfiguration; import net.sf.openrocket.rocketcomponent.Configuration; +import net.sf.openrocket.rocketcomponent.IgnitionConfiguration; +import net.sf.openrocket.rocketcomponent.MotorConfiguration; +import net.sf.openrocket.rocketcomponent.MotorMount; import net.sf.openrocket.rocketcomponent.Rocket; +import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.simulation.BasicEventSimulationEngine; import net.sf.openrocket.simulation.DefaultSimulationOptionFactory; import net.sf.openrocket.simulation.FlightData; @@ -58,7 +65,10 @@ public class Simulation implements ChangeSource, Cloneable { EXTERNAL, /** Not yet simulated */ - NOT_SIMULATED + NOT_SIMULATED, + + /** Can't be simulated, NO_MOTORS **/ + CANT_RUN } private RocketDescriptor descriptor = Application.getInjector().getInstance(RocketDescriptor.class); @@ -251,13 +261,35 @@ public class Simulation implements ChangeSource, Cloneable { */ public Status getStatus() { mutex.verify(); - if (status == Status.UPTODATE || status == Status.LOADED) { - if (rocket.getFunctionalModID() != simulatedRocketID || - !options.equals(simulatedConditions)) - return Status.OUTDATED; + if (rocket.getFunctionalModID() != simulatedRocketID || !options.equals(simulatedConditions)) { + status = Status.OUTDATED; + } } + + //Make sure this simulation has motors. + Configuration c = new Configuration(this.getRocket()); + MotorInstanceConfiguration motors = new MotorInstanceConfiguration(); + c.setFlightConfigurationID(options.getMotorConfigurationID()); + final String flightConfigId = c.getFlightConfigurationID(); + + Iterator iterator = c.motorIterator(); + boolean no_motors = true; + + while (iterator.hasNext()) { + MotorMount mount = iterator.next(); + RocketComponent component = (RocketComponent) mount; + MotorConfiguration motorConfig = mount.getMotorConfiguration().get(flightConfigId); + IgnitionConfiguration ignitionConfig = mount.getIgnitionConfiguration().get(flightConfigId); + Motor motor = motorConfig.getMotor(); + if (motor != null) + no_motors = false; + } + + if (no_motors) + status = Status.CANT_RUN; + return status; } diff --git a/core/src/net/sf/openrocket/file/motor/AbstractMotorLoader.java b/core/src/net/sf/openrocket/file/motor/AbstractMotorLoader.java index 365a47d53..842ce41fd 100644 --- a/core/src/net/sf/openrocket/file/motor/AbstractMotorLoader.java +++ b/core/src/net/sf/openrocket/file/motor/AbstractMotorLoader.java @@ -15,7 +15,7 @@ import net.sf.openrocket.util.MathUtil; public abstract class AbstractMotorLoader implements MotorLoader { - + /** * {@inheritDoc} *

@@ -40,7 +40,6 @@ public abstract class AbstractMotorLoader implements MotorLoader { protected abstract List load(Reader reader, String filename) throws IOException; - /** * Return the default charset to use when loading rocket files of this type. *

@@ -52,11 +51,11 @@ public abstract class AbstractMotorLoader implements MotorLoader { protected abstract Charset getDefaultCharset(); - - + + ////////// Helper methods ////////// - + /** * Calculate the mass of a motor at distinct points in time based on the * initial total mass, propellant weight and thrust. @@ -88,6 +87,7 @@ public abstract class AbstractMotorLoader implements MotorLoader { double f1 = thrust.get(i); double dm = 0.5 * (f0 + f1) * (t1 - t0); + deltam.add(dm); totalMassChange += dm; t0 = t1; @@ -99,13 +99,16 @@ public abstract class AbstractMotorLoader implements MotorLoader { scale = prop / totalMassChange; for (double dm : deltam) { total -= dm * scale; + // to correct negative mass error condition: (caused by rounding errors in the above loop) + if (total < 0) { + total = 0; + } mass.add(total); + } - return mass; } - /** * Helper method to remove a delay (or plugged) from the end of a motor designation, * if present. @@ -121,7 +124,6 @@ public abstract class AbstractMotorLoader implements MotorLoader { } - /** * Helper method to tokenize a string using whitespace as the delimiter. */ @@ -168,7 +170,7 @@ public abstract class AbstractMotorLoader implements MotorLoader { } - + @SuppressWarnings("unchecked") protected static void finalizeThrustCurve(List time, List thrust, List... lists) { diff --git a/core/src/net/sf/openrocket/file/motor/RockSimMotorLoader.java b/core/src/net/sf/openrocket/file/motor/RockSimMotorLoader.java index ec1bd3156..838e2d8fa 100644 --- a/core/src/net/sf/openrocket/file/motor/RockSimMotorLoader.java +++ b/core/src/net/sf/openrocket/file/motor/RockSimMotorLoader.java @@ -135,8 +135,8 @@ public class RockSimMotorLoader extends AbstractMotorLoader { private final double initMass; private final double propMass; private final Motor.Type type; - private boolean calculateMass; - private boolean calculateCG; + private boolean calculateMass = false; + private boolean calculateCG = false; private String description = ""; @@ -324,8 +324,8 @@ public class RockSimMotorLoader extends AbstractMotorLoader { if (time == null || time.size() == 0) throw new SAXException("Illegal motor data"); - finalizeThrustCurve(time, force, mass, cg); + final int n = time.size(); if (hasIllegalValue(mass)) @@ -336,6 +336,7 @@ public class RockSimMotorLoader extends AbstractMotorLoader { if (calculateMass) { mass = calculateMass(time, force, initMass, propMass); } + if (calculateCG) { for (int i = 0; i < n; i++) { cg.set(i, length / 2); diff --git a/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java b/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java index 108c634fa..295c544e7 100644 --- a/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java +++ b/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java @@ -580,6 +580,7 @@ public class OpenRocketSaver extends RocketSaver { StringBuilder sb = new StringBuilder(); sb.append(" 0) sb.append(","); @@ -634,8 +647,6 @@ public class OpenRocketSaver extends RocketSaver { writeln(""); } - - /* TODO: LOW: This is largely duplicated from above! */ private int countFlightDataBranchPoints(FlightDataBranch branch, double timeSkip) { int count = 0; diff --git a/core/src/net/sf/openrocket/file/openrocket/importt/DocumentConfig.java b/core/src/net/sf/openrocket/file/openrocket/importt/DocumentConfig.java index dc14486d0..2e909207d 100644 --- a/core/src/net/sf/openrocket/file/openrocket/importt/DocumentConfig.java +++ b/core/src/net/sf/openrocket/file/openrocket/importt/DocumentConfig.java @@ -314,6 +314,14 @@ class DocumentConfig { // MassComponent setters.put("MassComponent:mass", new DoubleSetter( Reflection.findMethod(MassComponent.class, "setComponentMass", double.class))); + /*setters.put("MassComponent:masscomponenttype", new DoubleSetter( + Reflection.findMethod(MassComponent.class, "setMassComponentType", double.class)));*/ + setters.put("MassComponent:masscomponenttype", new EnumSetter( + Reflection.findMethod(MassComponent.class, "setMassComponentType", MassComponent.MassComponentType.class), + MassComponent.MassComponentType.class)); + /* setters.put("Transition:shape", new EnumSetter( + Reflection.findMethod(Transition.class, "setType", Transition.Shape.class), + Transition.Shape.class));*/ // ShockCord setters.put("ShockCord:cordlength", new DoubleSetter( diff --git a/core/src/net/sf/openrocket/file/openrocket/importt/FlightDataBranchHandler.java b/core/src/net/sf/openrocket/file/openrocket/importt/FlightDataBranchHandler.java index 546ed02f6..e8ea6b80f 100644 --- a/core/src/net/sf/openrocket/file/openrocket/importt/FlightDataBranchHandler.java +++ b/core/src/net/sf/openrocket/file/openrocket/importt/FlightDataBranchHandler.java @@ -42,6 +42,22 @@ class FlightDataBranchHandler extends AbstractElementHandler { branch = new FlightDataBranch(name, types); } + /** + * @param timeToOptimumAltitude + * @see net.sf.openrocket.simulation.FlightDataBranch#setTimeToOptimumAltitude(double) + */ + public void setTimeToOptimumAltitude(double timeToOptimumAltitude) { + branch.setTimeToOptimumAltitude(timeToOptimumAltitude); + } + + /** + * @param optimumAltitude + * @see net.sf.openrocket.simulation.FlightDataBranch#setOptimumAltitude(double) + */ + public void setOptimumAltitude(double optimumAltitude) { + branch.setOptimumAltitude(optimumAltitude); + } + // Find the full flight data type given name only // Note: this way of doing it requires that custom expressions always come before flight data in the file, // not the nicest but this is always the case anyway. diff --git a/core/src/net/sf/openrocket/file/openrocket/importt/FlightDataHandler.java b/core/src/net/sf/openrocket/file/openrocket/importt/FlightDataHandler.java index bb2a78976..5883ba17e 100644 --- a/core/src/net/sf/openrocket/file/openrocket/importt/FlightDataHandler.java +++ b/core/src/net/sf/openrocket/file/openrocket/importt/FlightDataHandler.java @@ -48,6 +48,23 @@ class FlightDataHandler extends AbstractElementHandler { dataHandler = new FlightDataBranchHandler(attributes.get("name"), attributes.get("types"), simHandler, context); + + if (attributes.get("optimumAltitude") != null) { + double optimumAltitude = Double.NaN; + try { + optimumAltitude = Double.parseDouble(attributes.get("optimumAltitude")); + } catch (NumberFormatException ignore) { + } + dataHandler.setOptimumAltitude(optimumAltitude); + } + if (attributes.get("timeToOptimumAltitude") != null) { + double timeToOptimumAltitude = Double.NaN; + try { + timeToOptimumAltitude = Double.parseDouble(attributes.get("timeToOptimumAltitude")); + } catch (NumberFormatException ignore) { + } + dataHandler.setTimeToOptimumAltitude(timeToOptimumAltitude); + } return dataHandler; } diff --git a/core/src/net/sf/openrocket/file/openrocket/savers/MassComponentSaver.java b/core/src/net/sf/openrocket/file/openrocket/savers/MassComponentSaver.java index 093303c26..8cfddff50 100644 --- a/core/src/net/sf/openrocket/file/openrocket/savers/MassComponentSaver.java +++ b/core/src/net/sf/openrocket/file/openrocket/savers/MassComponentSaver.java @@ -2,31 +2,36 @@ package net.sf.openrocket.file.openrocket.savers; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import net.sf.openrocket.rocketcomponent.MassComponent; +import net.sf.openrocket.rocketcomponent.MassComponent.MassComponentType; public class MassComponentSaver extends MassObjectSaver { - + private static final MassComponentSaver instance = new MassComponentSaver(); - + public static List getElements(net.sf.openrocket.rocketcomponent.RocketComponent c) { List list = new ArrayList(); - + list.add(""); instance.addParams(c, list); list.add(""); - + return list; } - + @Override protected void addParams(net.sf.openrocket.rocketcomponent.RocketComponent c, List elements) { super.addParams(c, elements); - + MassComponent mass = (MassComponent) c; - + elements.add("" + mass.getMass() + ""); + + MassComponentType type = mass.getMassComponentType(); + elements.add("" + type.name().toLowerCase(Locale.ENGLISH) + ""); + } - } diff --git a/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java b/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java index 7df686e5a..3efe9f228 100644 --- a/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java +++ b/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java @@ -54,7 +54,7 @@ public class RocketComponentSaver { String name = decal.getImage().getName(); double rotation = decal.getRotation(); EdgeMode edgeMode = decal.getEdgeMode(); - elements.add(""); + elements.add(""); Coordinate center = decal.getCenter(); elements.add("

"); Coordinate offset = decal.getOffset(); diff --git a/core/src/net/sf/openrocket/file/rocksim/RocksimCommonConstants.java b/core/src/net/sf/openrocket/file/rocksim/RocksimCommonConstants.java index bde3d072a..86cc5861d 100644 --- a/core/src/net/sf/openrocket/file/rocksim/RocksimCommonConstants.java +++ b/core/src/net/sf/openrocket/file/rocksim/RocksimCommonConstants.java @@ -9,6 +9,7 @@ public class RocksimCommonConstants { public static final String WALL_THICKNESS = "WallThickness"; public static final String SHAPE_PARAMETER = "ShapeParameter"; public static final String ATTACHED_PARTS = "AttachedParts"; + public static final String SUBASSEMBLY = "SubAssembly"; public static final String BODY_TUBE = "BodyTube"; public static final String FIN_SET = "FinSet"; public static final String CUSTOM_FIN_SET = "CustomFinSet"; diff --git a/core/src/net/sf/openrocket/file/rocksim/importt/AttachedPartsHandler.java b/core/src/net/sf/openrocket/file/rocksim/importt/AttachedPartsHandler.java index 7a909a4c5..3738a160f 100644 --- a/core/src/net/sf/openrocket/file/rocksim/importt/AttachedPartsHandler.java +++ b/core/src/net/sf/openrocket/file/rocksim/importt/AttachedPartsHandler.java @@ -3,8 +3,6 @@ */ package net.sf.openrocket.file.rocksim.importt; -import java.util.HashMap; - import net.sf.openrocket.aerodynamics.WarningSet; import net.sf.openrocket.file.DocumentLoadingContext; import net.sf.openrocket.file.rocksim.RocksimCommonConstants; @@ -12,20 +10,22 @@ import net.sf.openrocket.file.simplesax.AbstractElementHandler; import net.sf.openrocket.file.simplesax.ElementHandler; import net.sf.openrocket.rocketcomponent.RocketComponent; +import java.util.HashMap; + /** - * A SAX handler for the Rocksim AttachedParts XML type. + * A SAX handler for the Rocksim AttachedParts XML type. */ class AttachedPartsHandler extends AbstractElementHandler { private final DocumentLoadingContext context; - + /** The parent component. */ private final RocketComponent component; - + /** * Constructor. - * + * * @param c the parent - * + * * @throws IllegalArgumentException thrown if c is null */ public AttachedPartsHandler(DocumentLoadingContext context, RocketComponent c) throws IllegalArgumentException { @@ -33,10 +33,18 @@ class AttachedPartsHandler extends AbstractElementHandler { throw new IllegalArgumentException("The parent component of any attached part may not be null."); } this.context = context; - component = c; + this.component = c; } - - @Override + + DocumentLoadingContext getContext() { + return context; + } + + RocketComponent getComponent() { + return component; + } + + @Override public ElementHandler openElement(String element, HashMap attributes, WarningSet warnings) { if (RocksimCommonConstants.FIN_SET.equals(element)) { return new FinSetHandler(context, component); @@ -65,6 +73,9 @@ class AttachedPartsHandler extends AbstractElementHandler { if (RocksimCommonConstants.TRANSITION.equals(element)) { return new TransitionHandler(context, component, warnings); } + if (RocksimCommonConstants.SUBASSEMBLY.equals(element)) { + return new SubAssemblyHandler(context, component); + } if (RocksimCommonConstants.TUBE_FIN_SET.equals(element)) { warnings.add("Tube fins are not currently supported. Ignoring."); } diff --git a/core/src/net/sf/openrocket/file/rocksim/importt/SubAssemblyHandler.java b/core/src/net/sf/openrocket/file/rocksim/importt/SubAssemblyHandler.java new file mode 100644 index 000000000..3dbc11628 --- /dev/null +++ b/core/src/net/sf/openrocket/file/rocksim/importt/SubAssemblyHandler.java @@ -0,0 +1,43 @@ + +package net.sf.openrocket.file.rocksim.importt; + +import net.sf.openrocket.aerodynamics.WarningSet; +import net.sf.openrocket.file.DocumentLoadingContext; +import net.sf.openrocket.file.rocksim.RocksimCommonConstants; +import net.sf.openrocket.file.simplesax.ElementHandler; +import net.sf.openrocket.rocketcomponent.RocketComponent; + +import java.util.HashMap; + +/** + * This class handles Rocksim 'SubAssembly' elements. They are similar to 'AttachedParts' (which is why this class is subclassed from + * AttachedPartsHandler) with some key differences. In Rocksim, AttachedParts elements can contain SubAssembly elements, which can in turn + * contain AttachedParts elements. To represent them in OR, SubAssembly elements are treated as children of the stage - much like a nose cone or + * external body tube. + */ +public class SubAssemblyHandler extends AttachedPartsHandler { + + public SubAssemblyHandler(final DocumentLoadingContext context, final RocketComponent c) + throws IllegalArgumentException { + //A bit of a risk here, but assign the subassembly to the stage, not to the component. This is because typically the + //first component within the subassembly will be an external component. + super(context, c.getStage()); + } + + @Override + public ElementHandler openElement(String element, HashMap attributes, WarningSet warnings) { + // We're already part of a subassembly, and then there are attached parts! Can't use an attached parts handler in this situation because + // the AttachedPartsHandler assumes that all body tubes are inner body tubes (Rocksim makes no distinction). OR does not allow things + // like fins to be attached to inner body tubes - which is often what these Rocksim subassemblies contain. So just return this instance + // which treats body tubes as external body tubes. + if (RocksimCommonConstants.ATTACHED_PARTS.equals(element)) { + return this; + } + // The key override of this class - treat body tubes as external body tubes. + else if (RocksimCommonConstants.BODY_TUBE.equals(element)) { + return new BodyTubeHandler(getContext(), getComponent(), warnings); + } + return super.openElement(element, attributes, warnings); + } + +} diff --git a/core/src/net/sf/openrocket/motor/ThrustCurveMotor.java b/core/src/net/sf/openrocket/motor/ThrustCurveMotor.java index 3a0e71a2a..888882af9 100644 --- a/core/src/net/sf/openrocket/motor/ThrustCurveMotor.java +++ b/core/src/net/sf/openrocket/motor/ThrustCurveMotor.java @@ -134,11 +134,14 @@ public class ThrustCurveMotor implements Motor, Comparable, Se if (c.isNaN()) { throw new IllegalArgumentException("Invalid CG " + c); } - if (c.x < 0 || c.x > length) { - throw new IllegalArgumentException("Invalid CG position " + c.x); + if (c.x < 0) { + throw new IllegalArgumentException("Invalid CG position " + String.format("%f", c.x) + ": CG is below the start of the motor."); + } + if (c.x > length) { + throw new IllegalArgumentException("Invalid CG position: " + String.format("%f", c.x) + ": CG is above the end of the motor."); } if (c.weight < 0) { - throw new IllegalArgumentException("Negative mass " + c.weight); + throw new IllegalArgumentException("Negative mass " + c.weight + "at time=" + time[Arrays.asList(cg).indexOf(c)]); } } diff --git a/core/src/net/sf/openrocket/rocketcomponent/Configuration.java b/core/src/net/sf/openrocket/rocketcomponent/Configuration.java index 4cad9533a..e426df1d7 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/Configuration.java +++ b/core/src/net/sf/openrocket/rocketcomponent/Configuration.java @@ -189,11 +189,10 @@ public class Configuration implements Cloneable, ChangeSource, ComponentChangeLi */ public void release() { rocket.removeComponentChangeListener(this); - listenerList = null; + listenerList = new ArrayList(); rocket = null; } - //////////////// Listeners //////////////// @Override diff --git a/core/src/net/sf/openrocket/rocketcomponent/MassComponent.java b/core/src/net/sf/openrocket/rocketcomponent/MassComponent.java index 81e5a63d8..0bfb75c03 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/MassComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/MassComponent.java @@ -15,6 +15,29 @@ public class MassComponent extends MassObject { private double mass = 0; + public static enum MassComponentType { + MASSCOMPONENT(Application.getTranslator().get("MassComponent.MassComponent")), + ALTIMETER(Application.getTranslator().get("MassComponent.Altimeter")), + FLIGHTCOMPUTER(Application.getTranslator().get("MassComponent.FlightComputer")), + DEPLOYMENTCHARGE(Application.getTranslator().get("MassComponent.DeploymentCharge")), + TRACKER(Application.getTranslator().get("MassComponent.Tracker")), + PAYLOAD(Application.getTranslator().get("MassComponent.Payload")), + RECOVERYHARDWARE(Application.getTranslator().get("MassComponent.RecoveryHardware")), + BATTERY(Application.getTranslator().get("MassComponent.Battery")); + + private String title; + + MassComponentType(String title) { + this.title = title; + } + + @Override + public String toString() { + return title; + } + } + + private MassComponentType massComponentType = MassComponentType.MASSCOMPONENT; public MassComponent() { super(); @@ -67,6 +90,21 @@ public class MassComponent extends MassObject { return trans.get("MassComponent.MassComponent"); } + public final MassComponent.MassComponentType getMassComponentType() { + mutex.verify(); + return this.massComponentType; + } + + public void setMassComponentType(MassComponent.MassComponentType compType) { + mutex.verify(); + if (this.massComponentType == compType) { + return; + } + checkState(); + this.massComponentType = compType; + fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE); + } + @Override public boolean allowsChildren() { return false; diff --git a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java index baa175065..30cb2ceaa 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java @@ -1121,6 +1121,19 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab return getComponentMass(); } + /** + * Return the mass of this component and all of its subcomponents. + */ + public final double getSectionMass() { + Double massSubtotal = getMass(); + mutex.verify(); + for (RocketComponent rc : children) { + massSubtotal += rc.getSectionMass(); + } + + return massSubtotal; + } + /** * Return the (possibly overridden) center of gravity and mass. * diff --git a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java index fb8d32020..b7d8889a0 100644 --- a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java +++ b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java @@ -21,6 +21,7 @@ import net.sf.openrocket.simulation.exception.MotorIgnitionException; import net.sf.openrocket.simulation.exception.SimulationException; import net.sf.openrocket.simulation.exception.SimulationLaunchException; import net.sf.openrocket.simulation.listeners.SimulationListenerHelper; +import net.sf.openrocket.simulation.listeners.system.OptimumCoastListener; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.Coordinate; @@ -42,8 +43,8 @@ public class BasicEventSimulationEngine implements SimulationEngine { private SimulationStepper landingStepper = new BasicLandingStepper(); private SimulationStepper tumbleStepper = new BasicTumbleStepper(); - // Constant holding 20 degress in radians. This is the AOA condition - // necessary to transistion to tumbling. + // Constant holding 20 degrees in radians. This is the AOA condition + // necessary to transition to tumbling. private final static double AOA_TUMBLE_CONDITION = Math.PI / 9.0; // The thrust must be below this value for the transition to tumbling. @@ -120,8 +121,6 @@ public class BasicEventSimulationEngine implements SimulationEngine { Coordinate originVelocity = status.getRocketVelocity(); try { - double maxAlt = Double.NEGATIVE_INFINITY; - // Start the simulation while (handleEvents()) { @@ -149,8 +148,8 @@ public class BasicEventSimulationEngine implements SimulationEngine { status.getConfiguration().getRocket(), new Pair(oldAlt, status.getRocketPosition().z))); - if (status.getRocketPosition().z > maxAlt) { - maxAlt = status.getRocketPosition().z; + if (status.getRocketPosition().z > status.getMaxAlt()) { + status.setMaxAlt(status.getRocketPosition().z); } @@ -189,7 +188,8 @@ public class BasicEventSimulationEngine implements SimulationEngine { // Check for apogee - if (!status.isApogeeReached() && status.getRocketPosition().z < maxAlt - 0.01) { + if (!status.isApogeeReached() && status.getRocketPosition().z < status.getMaxAlt() - 0.01) { + status.setMaxAltTime(status.getSimulationTime()); addEvent(new FlightEvent(FlightEvent.Type.APOGEE, status.getSimulationTime(), status.getConfiguration().getRocket())); } @@ -223,12 +223,10 @@ public class BasicEventSimulationEngine implements SimulationEngine { if (wantToTumble) { final boolean tooMuchThrust = t > THRUST_TUMBLE_CONDITION; final boolean isSustainer = status.getConfiguration().isStageActive(0); - final boolean notUntilApogee = isSustainer && !status.isApogeeReached(); + final boolean isApogee = status.isApogeeReached(); if (tooMuchThrust) { status.getWarnings().add(Warning.TUMBLE_UNDER_THRUST); - } else if (notUntilApogee) { - status.getWarnings().add(Warning.TUMBLE_BEFORE_APOGEE); - } else { + } else if (isApogee) { addEvent(new FlightEvent(FlightEvent.Type.TUMBLE, status.getSimulationTime())); status.setTumbling(true); } @@ -464,6 +462,11 @@ public class BasicEventSimulationEngine implements SimulationEngine { // Mark apogee as reached status.setApogeeReached(true); status.getFlightData().addEvent(event); + // This apogee event might be the optimum if recovery has not already happened. + if (status.getSimulationConditions().isCalculateExtras() && status.getDeployedRecoveryDevices().size() == 0) { + status.getFlightData().setOptimumAltitude(status.getMaxAlt()); + status.getFlightData().setTimeToOptimumAltitude(status.getMaxAltTime()); + } break; case RECOVERY_DEVICE_DEPLOYMENT: @@ -501,6 +504,14 @@ public class BasicEventSimulationEngine implements SimulationEngine { status.setLiftoff(true); status.getDeployedRecoveryDevices().add((RecoveryDevice) c); + // If we haven't already reached apogee, then we need to compute the actual coast time + // to determine the optimum altitude. + if (status.getSimulationConditions().isCalculateExtras() && !status.isApogeeReached()) { + FlightData coastStatus = computeCoastTime(); + status.getFlightData().setOptimumAltitude(coastStatus.getMaxAltitude()); + status.getFlightData().setTimeToOptimumAltitude(coastStatus.getTimeToApogee()); + } + this.currentStepper = this.landingStepper; this.status = currentStepper.initialize(status); @@ -601,5 +612,17 @@ public class BasicEventSimulationEngine implements SimulationEngine { } } - + private FlightData computeCoastTime() { + try { + SimulationConditions conds = status.getSimulationConditions().clone(); + conds.getSimulationListenerList().add(OptimumCoastListener.INSTANCE); + BasicEventSimulationEngine e = new BasicEventSimulationEngine(); + + FlightData d = e.simulate(conds); + return d; + } catch (Exception e) { + log.warn("Exception computing coast time: ", e); + return null; + } + } } diff --git a/core/src/net/sf/openrocket/simulation/FlightDataBranch.java b/core/src/net/sf/openrocket/simulation/FlightDataBranch.java index 76bef7642..0f523b2f1 100644 --- a/core/src/net/sf/openrocket/simulation/FlightDataBranch.java +++ b/core/src/net/sf/openrocket/simulation/FlightDataBranch.java @@ -36,7 +36,15 @@ public class FlightDataBranch implements Monitorable { private final Map maxValues = new HashMap(); private final Map minValues = new HashMap(); - + /** + * time for the rocket to reach apogee if the flight had been no recovery deployment + */ + private double timeToOptimumAltitude = Double.NaN; + /** + * Altitude the rocket would reach if there had been no recovery deployment. + */ + private double optimumAltitude = Double.NaN; + private final ArrayList events = new ArrayList(); private Mutable mutable = new Mutable(); @@ -73,12 +81,12 @@ public class FlightDataBranch implements Monitorable { */ public FlightDataBranch() { branchName = "Empty branch"; - for (FlightDataType type : FlightDataType.ALL_TYPES){ + for (FlightDataType type : FlightDataType.ALL_TYPES) { this.setValue(type, Double.NaN); } this.immute(); } - + /** * Adds a new point into the data branch. The value for all types is set to NaN by default. * @@ -115,10 +123,10 @@ public class FlightDataBranch implements Monitorable { } values.put(type, list); minValues.put(type, value); - maxValues.put(type, value); + maxValues.put(type, value); } - if (list.size() > 0){ + if (list.size() > 0) { list.set(list.size() - 1, value); } @@ -219,6 +227,50 @@ public class FlightDataBranch implements Monitorable { } + /** + * @return the timeToOptimumAltitude + */ + public double getTimeToOptimumAltitude() { + return timeToOptimumAltitude; + } + + /** + * @param timeToOptimumAltitude the timeToOptimumAltitude to set + */ + public void setTimeToOptimumAltitude(double timeToOptimumAltitude) { + this.timeToOptimumAltitude = timeToOptimumAltitude; + } + + /** + * @return the optimumAltitude + */ + public double getOptimumAltitude() { + return optimumAltitude; + } + + /** + * @param optimumAltitude the optimumAltitude to set + */ + public void setOptimumAltitude(double optimumAltitude) { + this.optimumAltitude = optimumAltitude; + } + + public double getOptimumDelay() { + + if (Double.isNaN(timeToOptimumAltitude)) { + return Double.NaN; + } + // TODO - we really want the first burnout of this stage. which + // could be computed as the first burnout after the last stage separation event. + // however, that's not quite so concise + FlightEvent e = getLastEvent(FlightEvent.Type.BURNOUT); + if (e != null) { + return timeToOptimumAltitude - e.getTime(); + } + + return Double.NaN; + } + /** * Add a flight event to this branch. * @@ -241,6 +293,34 @@ public class FlightDataBranch implements Monitorable { return events.clone(); } + /** + * Return the first event of the given type. + * @param type + * @return + */ + public FlightEvent getFirstEvent(FlightEvent.Type type) { + for (FlightEvent e : events) { + if (e.getType() == type) { + return e; + } + } + return null; + } + + /** + * Return the last event of the given type. + * @param type + * @return + */ + public FlightEvent getLastEvent(FlightEvent.Type type) { + FlightEvent retval = null; + for (FlightEvent e : events) { + if (e.getType() == type) { + retval = e; + } + } + return retval; + } /** * Make this FlightDataBranch immutable. Any calls to the set methods that would diff --git a/core/src/net/sf/openrocket/simulation/SimulationConditions.java b/core/src/net/sf/openrocket/simulation/SimulationConditions.java index f068db35f..584fea084 100644 --- a/core/src/net/sf/openrocket/simulation/SimulationConditions.java +++ b/core/src/net/sf/openrocket/simulation/SimulationConditions.java @@ -318,7 +318,12 @@ public class SimulationConditions implements Monitorable, Cloneable { public SimulationConditions clone() { try { // TODO: HIGH: Deep clone models - return (SimulationConditions) super.clone(); + SimulationConditions clone = (SimulationConditions) super.clone(); + clone.simulationListeners = new ArrayList(this.simulationListeners.size()); + for (SimulationListener listener : this.simulationListeners) { + clone.simulationListeners.add(listener.clone()); + } + return clone; } catch (CloneNotSupportedException e) { throw new BugException(e); } diff --git a/core/src/net/sf/openrocket/simulation/SimulationStatus.java b/core/src/net/sf/openrocket/simulation/SimulationStatus.java index acff4d4ff..24215b785 100644 --- a/core/src/net/sf/openrocket/simulation/SimulationStatus.java +++ b/core/src/net/sf/openrocket/simulation/SimulationStatus.java @@ -27,10 +27,6 @@ import net.sf.openrocket.util.WorldCoordinate; */ public class SimulationStatus implements Monitorable { - /* - * NOTE! All fields must be added to copyFrom() method!! - */ - private SimulationConditions simulationConditions; private Configuration configuration; private MotorInstanceConfiguration motorConfiguration; @@ -83,6 +79,8 @@ public class SimulationStatus implements Monitorable { /** Available for special purposes by the listeners. */ private final Map extraData = new HashMap(); + double maxAlt = Double.NEGATIVE_INFINITY; + double maxAltTime = 0; private int modID = 0; private int modIDadd = 0; @@ -393,6 +391,24 @@ public class SimulationStatus implements Monitorable { return tumbling; } + public double getMaxAlt() { + return maxAlt; + } + + public void setMaxAlt(double maxAlt) { + this.maxAlt = maxAlt; + this.modID++; + } + + public double getMaxAltTime() { + return maxAltTime; + } + + public void setMaxAltTime(double maxAltTime) { + this.maxAltTime = maxAltTime; + this.modID++; + } + public Set getDeployedRecoveryDevices() { return deployedRecoveryDevices; } diff --git a/core/src/net/sf/openrocket/simulation/listeners/AbstractSimulationListener.java b/core/src/net/sf/openrocket/simulation/listeners/AbstractSimulationListener.java index c3211f90c..0c8a3d32d 100644 --- a/core/src/net/sf/openrocket/simulation/listeners/AbstractSimulationListener.java +++ b/core/src/net/sf/openrocket/simulation/listeners/AbstractSimulationListener.java @@ -72,7 +72,7 @@ public class AbstractSimulationListener implements SimulationListener, Simulatio * Return an array of any flight data types this listener creates. */ @Override - public FlightDataType[] getFlightDataTypes(){ + public FlightDataType[] getFlightDataTypes() { return new FlightDataType[] {}; } @@ -183,4 +183,9 @@ public class AbstractSimulationListener implements SimulationListener, Simulatio return null; } + @Override + public AbstractSimulationListener clone() throws CloneNotSupportedException { + return (AbstractSimulationListener) super.clone(); + } + } diff --git a/core/src/net/sf/openrocket/simulation/listeners/SimulationListener.java b/core/src/net/sf/openrocket/simulation/listeners/SimulationListener.java index ba727f2bb..bdbf90ffc 100644 --- a/core/src/net/sf/openrocket/simulation/listeners/SimulationListener.java +++ b/core/src/net/sf/openrocket/simulation/listeners/SimulationListener.java @@ -4,9 +4,13 @@ import net.sf.openrocket.simulation.FlightDataType; import net.sf.openrocket.simulation.SimulationStatus; import net.sf.openrocket.simulation.exception.SimulationException; - - -public interface SimulationListener { +/** + * Listen to simulation events and possibly take action. + * + * If the implementation maintains any state, it should be properly cloned. + * + */ +public interface SimulationListener extends Cloneable { /** * Get the name of this simulation listener. Ideally this should be localized, as @@ -83,5 +87,5 @@ public interface SimulationListener { */ public FlightDataType[] getFlightDataTypes(); - + public SimulationListener clone() throws CloneNotSupportedException; } diff --git a/core/src/net/sf/openrocket/simulation/listeners/system/OptimumCoastListener.java b/core/src/net/sf/openrocket/simulation/listeners/system/OptimumCoastListener.java new file mode 100644 index 000000000..e6dcdc7aa --- /dev/null +++ b/core/src/net/sf/openrocket/simulation/listeners/system/OptimumCoastListener.java @@ -0,0 +1,38 @@ +package net.sf.openrocket.simulation.listeners.system; + +import net.sf.openrocket.rocketcomponent.RecoveryDevice; +import net.sf.openrocket.simulation.FlightEvent; +import net.sf.openrocket.simulation.SimulationStatus; +import net.sf.openrocket.simulation.exception.SimulationException; +import net.sf.openrocket.simulation.listeners.AbstractSimulationListener; + +/** + * Simulation listener which ignores recovery deployment events and ends the simulation + * when apogee is reached. + * + * @author kevin + * + */ +public class OptimumCoastListener extends AbstractSimulationListener { + + public static final OptimumCoastListener INSTANCE = new OptimumCoastListener(); + + @Override + public boolean handleFlightEvent(SimulationStatus status, FlightEvent event) { + if (event.getType() == FlightEvent.Type.APOGEE) { + status.getEventQueue().add(new FlightEvent(FlightEvent.Type.SIMULATION_END, status.getSimulationTime())); + } + return true; + } + + @Override + public boolean recoveryDeviceDeployment(SimulationStatus status, RecoveryDevice recoveryDevice) throws SimulationException { + return false; + } + + @Override + public boolean isSystemListener() { + return true; + } + +} diff --git a/core/src/net/sf/openrocket/startup/Preferences.java b/core/src/net/sf/openrocket/startup/Preferences.java index 07e9d36c5..0f9c7f3e7 100644 --- a/core/src/net/sf/openrocket/startup/Preferences.java +++ b/core/src/net/sf/openrocket/startup/Preferences.java @@ -30,6 +30,8 @@ public abstract class Preferences { public static final String BODY_COMPONENT_INSERT_POSITION_KEY = "BodyComponentInsertPosition"; public static final String USER_THRUST_CURVES_KEY = "UserThrustCurves"; public static final String CONFIRM_DELETE_SIMULATION = "ConfirmDeleteSimulation"; + public static final String AUTO_RUN_SIMULATIONS = "AutoRunSimulations"; + // Preferences related to data export public static final String EXPORT_FIELD_SEPARATOR = "ExportFieldSeparator"; public static final String EXPORT_SIMULATION_COMMENT = "ExportSimulationComment"; @@ -55,6 +57,8 @@ public abstract class Preferences { public static final String OPENGL_ENABLE_AA = "OpenGL_Antialiasing_Is_Enabled"; public static final String OPENGL_USE_FBO = "OpenGL_Use_FBO"; + public static final String ROCKET_INFO_FONT_SIZE = "RocketInfoFontSize"; + /* * ****************************************************************************************** * @@ -99,11 +103,23 @@ public abstract class Preferences { this.putBoolean(CHECK_UPDATES, check); } + public final boolean getAutoRunSimulations() { + return this.getBoolean(AUTO_RUN_SIMULATIONS, false); + } + + public final void setAutoRunSimulations(boolean check) { + this.putBoolean(AUTO_RUN_SIMULATIONS, check); + } + public final double getDefaultMach() { // TODO: HIGH: implement custom default mach number return 0.3; } + public final float getRocketInfoFontSize() { + return (float) (11.0 + 3 * Application.getPreferences().getChoice(Preferences.ROCKET_INFO_FONT_SIZE, 2, 0)); + } + /** * Enable/Disable the auto-opening of the last edited design file on startup. */ diff --git a/core/src/net/sf/openrocket/unit/UnitGroup.java b/core/src/net/sf/openrocket/unit/UnitGroup.java index 19de190c3..1acf0a6ae 100644 --- a/core/src/net/sf/openrocket/unit/UnitGroup.java +++ b/core/src/net/sf/openrocket/unit/UnitGroup.java @@ -189,6 +189,7 @@ public class UnitGroup { UNITS_VELOCITY.addUnit(new GeneralUnit(1 / 3.6, "km/h")); UNITS_VELOCITY.addUnit(new GeneralUnit(0.3048, "ft/s")); UNITS_VELOCITY.addUnit(new GeneralUnit(0.44704, "mph")); + UNITS_VELOCITY.addUnit(new GeneralUnit(0.51444445, "kt")); UNITS_VELOCITY.setDefaultUnit(0); UNITS_WINDSPEED = new UnitGroup(); @@ -196,6 +197,7 @@ public class UnitGroup { UNITS_WINDSPEED.addUnit(new GeneralUnit(1 / 3.6, "km/h")); UNITS_WINDSPEED.addUnit(new GeneralUnit(0.3048, "ft/s")); UNITS_WINDSPEED.addUnit(new GeneralUnit(0.44704, "mph")); + UNITS_WINDSPEED.addUnit(new GeneralUnit(0.51444445, "kt")); UNITS_WINDSPEED.setDefaultUnit(0); UNITS_ACCELERATION = new UnitGroup(); diff --git a/core/src/net/sf/openrocket/utils/L10nPropertyReport.java b/core/src/net/sf/openrocket/utils/L10nPropertyReport.java index 93c459fcb..0241678a9 100644 --- a/core/src/net/sf/openrocket/utils/L10nPropertyReport.java +++ b/core/src/net/sf/openrocket/utils/L10nPropertyReport.java @@ -10,7 +10,7 @@ import java.util.Properties; public class L10nPropertyReport { - private static String[] supportedLocales = new String[] { "en", "de", "es", "fr", "it", "ru", "cs", "pl", "ja", "pt" }; + private static String[] supportedLocales = new String[] { "en", "de", "es", "fr", "it", "ru", "cs", "pl", "ja", "pt", "tr", "zh_CN", "uk_UA" }; public static void main(String[] args) throws Exception { diff --git a/core/test/net/sf/openrocket/file/motor/TestMotorLoader.java b/core/test/net/sf/openrocket/file/motor/TestMotorLoader.java index dbc23e745..ee8e47978 100644 --- a/core/test/net/sf/openrocket/file/motor/TestMotorLoader.java +++ b/core/test/net/sf/openrocket/file/motor/TestMotorLoader.java @@ -1,6 +1,8 @@ package net.sf.openrocket.file.motor; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import java.io.IOException; import java.io.InputStream; @@ -16,6 +18,7 @@ public class TestMotorLoader { private static final String DIGEST1 = "e523030bc96d5e63313b5723aaea267d"; private static final String DIGEST2 = "6a41f0f10b7283793eb0e6b389753729"; + private static final String DIGEST3 = "e3164a735f9a50500f2725f0a33d246b"; @Test @@ -25,7 +28,7 @@ public class TestMotorLoader { test(loader, "test1.eng", DIGEST1); test(loader, "test2.rse", DIGEST2); test(loader, "test.zip", DIGEST2, DIGEST1); - + test(loader, "test3.rse", DIGEST3); } @Test @@ -38,6 +41,11 @@ public class TestMotorLoader { test(new RockSimMotorLoader(), "test2.rse", DIGEST2); } + @Test + public void testRocksimMotorLoader3() throws IOException { + test(new RockSimMotorLoader(), "test3.rse", DIGEST3); + } + @Test public void testZipMotorLoader() throws IOException { test(new ZipFileMotorLoader(), "test.zip", DIGEST2, DIGEST1); diff --git a/core/test/net/sf/openrocket/file/motor/test3.rse b/core/test/net/sf/openrocket/file/motor/test3.rse new file mode 100644 index 000000000..95a86c555 --- /dev/null +++ b/core/test/net/sf/openrocket/file/motor/test3.rse @@ -0,0 +1,27 @@ + + + + Water Rocket, 90 psi, 800g + + + + + + + + + + + + + + + + + + diff --git a/core/test/net/sf/openrocket/file/rocksim/importt/RocksimLoaderTest.java b/core/test/net/sf/openrocket/file/rocksim/importt/RocksimLoaderTest.java index b7e6976e4..7711c463c 100644 --- a/core/test/net/sf/openrocket/file/rocksim/importt/RocksimLoaderTest.java +++ b/core/test/net/sf/openrocket/file/rocksim/importt/RocksimLoaderTest.java @@ -4,10 +4,6 @@ */ package net.sf.openrocket.file.rocksim.importt; -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; - import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.document.OpenRocketDocumentFactory; import net.sf.openrocket.file.DatabaseMotorFinder; @@ -18,161 +14,225 @@ import net.sf.openrocket.rocketcomponent.LaunchLug; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.Stage; import net.sf.openrocket.util.BaseTestCase.BaseTestCase; - import org.junit.Assert; +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; + /** * RocksimLoader Tester. */ public class RocksimLoaderTest extends BaseTestCase { - - /** - * Test a bug reported via automated bug report. I have been unable to reproduce this bug - * (hanging finset off of an inner body tube) when creating a Rocksim file using Rocksim. The bug - * is reproducible when manually modifying the Rocksim file, which is what is tested here. - */ - @org.junit.Test - public void testFinsOnInnerTube() throws Exception { - RocksimLoader loader = new RocksimLoader(); - InputStream stream = this.getClass().getResourceAsStream("PodFins.rkt"); - Assert.assertNotNull("Could not open PodFins.rkt", stream); - try { - OpenRocketDocument doc = OpenRocketDocumentFactory.createEmptyRocket(); - DocumentLoadingContext context = new DocumentLoadingContext(); - context.setOpenRocketDocument(doc); - context.setMotorFinder(new DatabaseMotorFinder()); - loader.loadFromStream(context, new BufferedInputStream(stream)); - Rocket rocket = doc.getRocket(); - Assert.assertNotNull(rocket); - } catch (IllegalStateException ise) { - Assert.fail(ise.getMessage()); - } - Assert.assertTrue(loader.getWarnings().size() == 2); - } - - /** - * Method: loadFromStream(InputStream source) - * - * @throws Exception thrown if something goes awry - */ - @org.junit.Test - public void testLoadFromStream() throws Exception { - RocksimLoader loader = new RocksimLoader(); - //Stupid single stage rocket - OpenRocketDocument doc = loadRocksimRocket(loader); - InputStream stream; - - Assert.assertNotNull(doc); - Rocket rocket = doc.getRocket(); - Assert.assertNotNull(rocket); - Assert.assertEquals("FooBar Test", doc.getRocket().getName()); - Assert.assertTrue(loader.getWarnings().isEmpty()); - - stream = this.getClass().getResourceAsStream("rocksimTestRocket2.rkt"); - Assert.assertNotNull("Could not open rocksimTestRocket2.rkt", stream); - - doc = OpenRocketDocumentFactory.createEmptyRocket(); - DocumentLoadingContext context = new DocumentLoadingContext(); - context.setOpenRocketDocument(doc); - context.setMotorFinder(new DatabaseMotorFinder()); - loader.loadFromStream(context, new BufferedInputStream(stream)); - - Assert.assertNotNull(doc); - rocket = doc.getRocket(); - Assert.assertNotNull(rocket); - - //Do some simple asserts; the important thing here is just validating that the mass and cg were - //not overridden for each stage. - Assert.assertEquals("Three Stage Everything Included Rocket", doc.getRocket().getName()); - Assert.assertEquals(0, loader.getWarnings().size()); - Assert.assertEquals(3, rocket.getStageCount()); - Stage stage1 = (Stage) rocket.getChild(0); - Assert.assertFalse(stage1.isMassOverridden()); - Assert.assertFalse(stage1.isCGOverridden()); - Stage stage2 = (Stage) rocket.getChild(1); - Assert.assertFalse(stage2.isMassOverridden()); - Assert.assertFalse(stage2.isCGOverridden()); - Stage stage3 = (Stage) rocket.getChild(2); - Assert.assertFalse(stage3.isMassOverridden()); - Assert.assertFalse(stage3.isCGOverridden()); - - stream = this.getClass().getResourceAsStream("rocksimTestRocket3.rkt"); - Assert.assertNotNull("Could not open rocksimTestRocket3.rkt", stream); - - doc = OpenRocketDocumentFactory.createEmptyRocket(); - context = new DocumentLoadingContext(); - context.setOpenRocketDocument(doc); - context.setMotorFinder(new DatabaseMotorFinder()); - loader.loadFromStream(context, new BufferedInputStream(stream)); - - Assert.assertNotNull(doc); - rocket = doc.getRocket(); - Assert.assertNotNull(rocket); - Assert.assertEquals("Three Stage Everything Included Rocket - Override Total Mass/CG", doc.getRocket().getName()); - Assert.assertEquals(3, rocket.getStageCount()); - stage1 = (Stage) rocket.getChild(0); - stage2 = (Stage) rocket.getChild(1); - stage3 = (Stage) rocket.getChild(2); - - //Do some 1st level and simple asserts; the idea here is to not do a deep validation as that - //should have been covered elsewhere. Assert that the stage overrides are correct. - Assert.assertEquals(2, stage1.getChildCount()); - Assert.assertEquals("Nose cone", stage1.getChild(0).getName()); - Assert.assertEquals("Body tube", stage1.getChild(1).getName()); - Assert.assertTrue(stage1.isMassOverridden()); - Assert.assertEquals(0.185d, stage1.getOverrideMass(), 0.001); - Assert.assertTrue(stage1.isCGOverridden()); - Assert.assertEquals(0.3d, stage1.getOverrideCG().x, 0.001); - Assert.assertEquals(4, loader.getWarnings().size()); - - Assert.assertEquals(1, stage2.getChildCount()); - Assert.assertEquals("2nd Stage Tube", stage2.getChild(0).getName()); - Assert.assertTrue(stage2.isMassOverridden()); - Assert.assertEquals(0.21d, stage2.getOverrideMass(), 0.001); - Assert.assertTrue(stage2.isCGOverridden()); - Assert.assertEquals(0.4d, stage2.getOverrideCG().x, 0.001); - - BodyTube bt = (BodyTube) stage2.getChild(0); - LaunchLug ll = (LaunchLug) bt.getChild(6); - Assert.assertEquals(1.22d, ll.getRadialDirection(), 0.001); - - Assert.assertEquals(2, stage3.getChildCount()); - Assert.assertEquals("Transition", stage3.getChild(0).getName()); - Assert.assertEquals("Body tube", stage3.getChild(1).getName()); - Assert.assertTrue(stage2.isMassOverridden()); - Assert.assertEquals(0.33d, stage3.getOverrideMass(), 0.001); - Assert.assertTrue(stage2.isCGOverridden()); - Assert.assertEquals(0.5d, stage3.getOverrideCG().x, 0.001); - } - - public static OpenRocketDocument loadRocksimRocket(RocksimLoader theLoader) throws IOException, RocketLoadException { - InputStream stream = RocksimLoaderTest.class.getResourceAsStream("rocksimTestRocket1.rkt"); - try { - Assert.assertNotNull("Could not open rocksimTestRocket1.rkt", stream); - OpenRocketDocument doc = OpenRocketDocumentFactory.createEmptyRocket(); - DocumentLoadingContext context = new DocumentLoadingContext(); - context.setOpenRocketDocument(doc); - context.setMotorFinder(new DatabaseMotorFinder()); - theLoader.loadFromStream(context, new BufferedInputStream(stream)); - return doc; - } finally { - stream.close(); - } - } - - public static OpenRocketDocument loadRocksimRocket3(RocksimLoader theLoader) throws IOException, RocketLoadException { - InputStream stream = RocksimLoaderTest.class.getResourceAsStream("rocksimTestRocket3.rkt"); - try { - Assert.assertNotNull("Could not open rocksimTestRocket3.rkt", stream); - OpenRocketDocument doc = OpenRocketDocumentFactory.createEmptyRocket(); - DocumentLoadingContext context = new DocumentLoadingContext(); - context.setOpenRocketDocument(doc); - context.setMotorFinder(new DatabaseMotorFinder()); - theLoader.loadFromStream(context, new BufferedInputStream(stream)); - return doc; - } finally { - stream.close(); - } - } - + + /** + * Test a bug reported via automated bug report. I have been unable to reproduce this bug (hanging finset off of an inner body tube) when creating + * a Rocksim file using Rocksim. The bug is reproducible when manually modifying the Rocksim file, which is what is tested here. + */ + @org.junit.Test + public void testFinsOnInnerTube() throws Exception { + RocksimLoader loader = new RocksimLoader(); + InputStream stream = this.getClass().getResourceAsStream("PodFins.rkt"); + Assert.assertNotNull("Could not open PodFins.rkt", stream); + try { + OpenRocketDocument doc = OpenRocketDocumentFactory.createEmptyRocket(); + DocumentLoadingContext context = new DocumentLoadingContext(); + context.setOpenRocketDocument(doc); + context.setMotorFinder(new DatabaseMotorFinder()); + loader.loadFromStream(context, new BufferedInputStream(stream)); + Rocket rocket = doc.getRocket(); + Assert.assertNotNull(rocket); + } + catch (IllegalStateException ise) { + Assert.fail(ise.getMessage()); + } + Assert.assertTrue(loader.getWarnings().size() == 2); + } + + /** + * Method: loadFromStream(InputStream source) + * + * @throws Exception thrown if something goes awry + */ + @org.junit.Test + public void testLoadFromStream() throws Exception { + RocksimLoader loader = new RocksimLoader(); + //Stupid single stage rocket + OpenRocketDocument doc = loadRocksimRocket(loader); + InputStream stream; + + Assert.assertNotNull(doc); + Rocket rocket = doc.getRocket(); + Assert.assertNotNull(rocket); + Assert.assertEquals("FooBar Test", doc.getRocket().getName()); + Assert.assertTrue(loader.getWarnings().isEmpty()); + + stream = this.getClass().getResourceAsStream("rocksimTestRocket2.rkt"); + Assert.assertNotNull("Could not open rocksimTestRocket2.rkt", stream); + + doc = OpenRocketDocumentFactory.createEmptyRocket(); + DocumentLoadingContext context = new DocumentLoadingContext(); + context.setOpenRocketDocument(doc); + context.setMotorFinder(new DatabaseMotorFinder()); + loader.loadFromStream(context, new BufferedInputStream(stream)); + + Assert.assertNotNull(doc); + rocket = doc.getRocket(); + Assert.assertNotNull(rocket); + + //Do some simple asserts; the important thing here is just validating that the mass and cg were + //not overridden for each stage. + Assert.assertEquals("Three Stage Everything Included Rocket", doc.getRocket().getName()); + Assert.assertEquals(0, loader.getWarnings().size()); + Assert.assertEquals(3, rocket.getStageCount()); + Stage stage1 = (Stage) rocket.getChild(0); + Assert.assertFalse(stage1.isMassOverridden()); + Assert.assertFalse(stage1.isCGOverridden()); + Stage stage2 = (Stage) rocket.getChild(1); + Assert.assertFalse(stage2.isMassOverridden()); + Assert.assertFalse(stage2.isCGOverridden()); + Stage stage3 = (Stage) rocket.getChild(2); + Assert.assertFalse(stage3.isMassOverridden()); + Assert.assertFalse(stage3.isCGOverridden()); + + stream = this.getClass().getResourceAsStream("rocksimTestRocket3.rkt"); + Assert.assertNotNull("Could not open rocksimTestRocket3.rkt", stream); + + doc = OpenRocketDocumentFactory.createEmptyRocket(); + context = new DocumentLoadingContext(); + context.setOpenRocketDocument(doc); + context.setMotorFinder(new DatabaseMotorFinder()); + loader.loadFromStream(context, new BufferedInputStream(stream)); + + Assert.assertNotNull(doc); + rocket = doc.getRocket(); + Assert.assertNotNull(rocket); + Assert.assertEquals("Three Stage Everything Included Rocket - Override Total Mass/CG", doc.getRocket().getName()); + Assert.assertEquals(3, rocket.getStageCount()); + stage1 = (Stage) rocket.getChild(0); + stage2 = (Stage) rocket.getChild(1); + stage3 = (Stage) rocket.getChild(2); + + //Do some 1st level and simple asserts; the idea here is to not do a deep validation as that + //should have been covered elsewhere. Assert that the stage overrides are correct. + Assert.assertEquals(2, stage1.getChildCount()); + Assert.assertEquals("Nose cone", stage1.getChild(0).getName()); + Assert.assertEquals("Body tube", stage1.getChild(1).getName()); + Assert.assertTrue(stage1.isMassOverridden()); + Assert.assertEquals(0.185d, stage1.getOverrideMass(), 0.001); + Assert.assertTrue(stage1.isCGOverridden()); + Assert.assertEquals(0.3d, stage1.getOverrideCG().x, 0.001); + Assert.assertEquals(4, loader.getWarnings().size()); + + Assert.assertEquals(1, stage2.getChildCount()); + Assert.assertEquals("2nd Stage Tube", stage2.getChild(0).getName()); + Assert.assertTrue(stage2.isMassOverridden()); + Assert.assertEquals(0.21d, stage2.getOverrideMass(), 0.001); + Assert.assertTrue(stage2.isCGOverridden()); + Assert.assertEquals(0.4d, stage2.getOverrideCG().x, 0.001); + + BodyTube bt = (BodyTube) stage2.getChild(0); + LaunchLug ll = (LaunchLug) bt.getChild(6); + Assert.assertEquals(1.22d, ll.getRadialDirection(), 0.001); + + Assert.assertEquals(2, stage3.getChildCount()); + Assert.assertEquals("Transition", stage3.getChild(0).getName()); + Assert.assertEquals("Body tube", stage3.getChild(1).getName()); + Assert.assertTrue(stage2.isMassOverridden()); + Assert.assertEquals(0.33d, stage3.getOverrideMass(), 0.001); + Assert.assertTrue(stage2.isCGOverridden()); + Assert.assertEquals(0.5d, stage3.getOverrideCG().x, 0.001); + } + + @org.junit.Test + public void testSubAssemblyRocket() throws IOException, RocketLoadException { + RocksimLoader loader = new RocksimLoader(); + //Stupid single stage rocket + OpenRocketDocument doc = loadRocksimSubassemblyRocket(loader); + InputStream stream; + + Assert.assertNotNull(doc); + Rocket rocket = doc.getRocket(); + Assert.assertNotNull(rocket); + Assert.assertEquals("SubAssembly Element Test", doc.getRocket().getName()); + Assert.assertTrue(loader.getWarnings().isEmpty()); + + stream = this.getClass().getResourceAsStream("SubAssemblyTest.rkt"); + Assert.assertNotNull("Could not open SubAssemblyTest.rkt", stream); + + doc = OpenRocketDocumentFactory.createEmptyRocket(); + DocumentLoadingContext context = new DocumentLoadingContext(); + context.setOpenRocketDocument(doc); + context.setMotorFinder(new DatabaseMotorFinder()); + loader.loadFromStream(context, new BufferedInputStream(stream)); + + Assert.assertNotNull(doc); + rocket = doc.getRocket(); + Assert.assertNotNull(rocket); + Assert.assertEquals(1, rocket.getStageCount()); + Stage stage1 = (Stage) rocket.getChild(0); + Assert.assertEquals("Nose cone", stage1.getChild(0).getName()); + Assert.assertEquals("Forward Body tube", stage1.getChild(1).getName()); + Assert.assertEquals("Aft Body tube", stage1.getChild(2).getName()); + + BodyTube subassemblyBodyTube = (BodyTube)stage1.getChild(2); + Assert.assertEquals(8, subassemblyBodyTube.getChildCount()); + Assert.assertEquals("Engine block", subassemblyBodyTube.getChild(0).getName()); + Assert.assertEquals("Fin set-1", subassemblyBodyTube.getChild(1).getName()); + Assert.assertEquals("Fin set", subassemblyBodyTube.getChild(2).getName()); + Assert.assertEquals("Fin set-2", subassemblyBodyTube.getChild(3).getName()); + Assert.assertEquals("Fin set-3", subassemblyBodyTube.getChild(4).getName()); + Assert.assertEquals("Fin set-4", subassemblyBodyTube.getChild(5).getName()); + Assert.assertEquals("Centering ring", subassemblyBodyTube.getChild(6).getName()); + Assert.assertEquals("Centering ring", subassemblyBodyTube.getChild(7).getName()); + } + + public static OpenRocketDocument loadRocksimRocket(RocksimLoader theLoader) throws IOException, RocketLoadException { + InputStream stream = RocksimLoaderTest.class.getResourceAsStream("rocksimTestRocket1.rkt"); + try { + Assert.assertNotNull("Could not open rocksimTestRocket1.rkt", stream); + OpenRocketDocument doc = OpenRocketDocumentFactory.createEmptyRocket(); + DocumentLoadingContext context = new DocumentLoadingContext(); + context.setOpenRocketDocument(doc); + context.setMotorFinder(new DatabaseMotorFinder()); + theLoader.loadFromStream(context, new BufferedInputStream(stream)); + return doc; + } + finally { + stream.close(); + } + } + + public static OpenRocketDocument loadRocksimRocket3(RocksimLoader theLoader) throws IOException, RocketLoadException { + InputStream stream = RocksimLoaderTest.class.getResourceAsStream("rocksimTestRocket3.rkt"); + try { + Assert.assertNotNull("Could not open rocksimTestRocket3.rkt", stream); + OpenRocketDocument doc = OpenRocketDocumentFactory.createEmptyRocket(); + DocumentLoadingContext context = new DocumentLoadingContext(); + context.setOpenRocketDocument(doc); + context.setMotorFinder(new DatabaseMotorFinder()); + theLoader.loadFromStream(context, new BufferedInputStream(stream)); + return doc; + } + finally { + stream.close(); + } + } + + public static OpenRocketDocument loadRocksimSubassemblyRocket(RocksimLoader theLoader) throws IOException, RocketLoadException { + InputStream stream = RocksimLoaderTest.class.getResourceAsStream("SubAssemblyTest.rkt"); + try { + Assert.assertNotNull("Could not open SubAssemblyTest.rkt", stream); + OpenRocketDocument doc = OpenRocketDocumentFactory.createEmptyRocket(); + DocumentLoadingContext context = new DocumentLoadingContext(); + context.setOpenRocketDocument(doc); + context.setMotorFinder(new DatabaseMotorFinder()); + theLoader.loadFromStream(context, new BufferedInputStream(stream)); + return doc; + } + finally { + stream.close(); + } + } + } diff --git a/core/test/net/sf/openrocket/file/rocksim/importt/SubAssemblyTest.rkt b/core/test/net/sf/openrocket/file/rocksim/importt/SubAssemblyTest.rkt new file mode 100644 index 000000000..7bb84f148 --- /dev/null +++ b/core/test/net/sf/openrocket/file/rocksim/importt/SubAssemblyTest.rkt @@ -0,0 +1,483 @@ + + 4 + + + SubAssembly Element Test + 1 + 7 + 0 + 3 + 0 + 3 + 0.0 + 0.0 + 0 + 0 + 0 + 0 + 0 + 0 + 18 + 0.0 + 0.0 + 0.0 + 426.6301716552979 + 0.0 + 0.0 + 0.0 + 0.0 + 1 + 1 + 0 + + + 6.107306539734526 + 1049.21 + Polystyrene PS + Nose cone + 0.0 + 0 + 0.0 + 6.107306539734526 + 53.68748632541546 + 0 + 0.0 + 0.0 + 0 + 76.2 + 0 + 1 + 3 + 1 + 1.00076 + 0.0 + + 24.8006 + 19.1008 + 23.5991 + + + 15.040422946044567 + 1121.29 + Paper + Forward Body tube + 0.0 + 0 + 0.0 + 15.040422946044567 + 228.6 + 0 + 0.0 + 0.0 + 0 + 457.2 + 0 + 2 + 24.892 + 24.13 + 0 + 24.13 + 0.0 + 0 + + + 0.0 + 1121.29 + Paper + Tube coupler + 0.0 + 0 + 120.65 + 0.0 + 31.75 + 0 + 0.0 + 0.0 + 0 + 63.5 + 0 + 3 + 27.8892 + 27.8892 + 4 + 0 + + + 10.038912051168 + 0.00664972 + Mylar + Streamer + 0.0 + 0 + 44.45 + 10.038912051168 + 57.15 + 1 + 0.0 + 0.0 + 0 + 114.3 + 0 + 4 + 114.3 + 0.138 + + + 1.2996672000000002 + 0.0 + + Shock Cord + 187.325 + 1 + 187.325 + 0.0 + 0.0 + 0 + 0.0 + 0.0 + 0 + 12.192000000000002 + 0 + 5 + 0 + + + 2.549 + 0.0 + + Mass object - 2.549 g + 282.575 + 1 + 282.575 + 0.0 + 0.0 + 0 + 0.0 + 0.0 + 0 + 0.0 + 0 + 6 + 0 + + + 1.1277286611933457 + 1121.29 + Paper + Centering ring + 0.0 + 0 + 384.175 + 1.1277286611933457 + 3.175 + 0 + 0.0 + 0.0 + 0 + 6.35 + 0 + 7 + 28.702 + 24.9428 + 0 + 0 + + + 1.1277286611933457 + 1121.29 + Paper + Centering ring + 0.0 + 0 + 358.775 + 1.1277286611933457 + 3.175 + 0 + 0.0 + 0.0 + 0 + 6.35 + 0 + 8 + 28.702 + 24.9428 + 0 + 0 + + + 1.1277286611933457 + 1121.29 + Paper + Centering ring + 0.0 + 0 + 288.925 + 1.1277286611933457 + 3.175 + 0 + 0.0 + 0.0 + 0 + 6.35 + 0 + 9 + 28.702 + 24.9428 + 0 + 0 + + + + + 13.498613632777841 + 1121.29 + Paper + Aft Body tube + 0.0 + 0 + 0.0 + 13.498613632777841 + 165.1 + 0 + 0.0 + 0.0 + 0 + 330.2 + 0 + 10 + 29.8704 + 29.083 + 1 + 29.083 + 12.7 + 0 + + + 1.25084668869137 + 1121.29 + Paper + Engine block + 0.0 + 0 + 252.73000000000002 + 1.25084668869137 + 3.175 + 0 + 0.0 + 0.0 + 0 + 6.35 + 0 + 11 + 29.083 + 24.9428 + 2 + 0 + + + 0.9977479979838839 + 128.148 + Balsa + Fin set-1 + 0.0 + 0 + 257.175 + 0.9977479979838839 + 54.72939060773481 + 0 + 0.0 + 0.0 + 0 + 0.0 + 0 + 12 + 1 + 66.675 + 29.8704 + 50.8 + 67.4141 + 3.175 + 0 + 0 + 0.0 + 0.0 + 0.0 + 1 + 0.0 + + + 2.8874580315239995 + 128.148 + Balsa + Fin set + 0.0 + 0 + 146.05 + 2.8874580315239995 + 61.383333333333326 + 0 + 0.0 + 0.785398 + 0 + 0.0 + 0 + 13 + 4 + 101.6 + 0.0 + 34.925 + 82.55 + 3.175 + 0 + 0 + 0.0 + 0.0 + 0.0 + 1 + 0.0 + + + 0.9977479979838839 + 128.148 + Balsa + Fin set-2 + 0.0 + 0 + 257.175 + 0.9977479979838839 + 54.72939060773481 + 0 + 0.0 + 1.5708 + 0 + 0.0 + 0 + 14 + 1 + 66.675 + 29.8704 + 50.8 + 67.4141 + 3.175 + 0 + 0 + 0.0 + 0.0 + 0.0 + 1 + 0.0 + + + 0.9977479979838839 + 128.148 + Balsa + Fin set-3 + 0.0 + 0 + 257.175 + 0.9977479979838839 + 54.72939060773481 + 0 + 0.0 + 3.14159 + 0 + 0.0 + 0 + 15 + 1 + 66.675 + 29.8704 + 50.8 + 67.4141 + 3.175 + 0 + 0 + 0.0 + 0.0 + 0.0 + 1 + 0.0 + + + 0.9977479979838839 + 128.148 + Balsa + Fin set-4 + 0.0 + 0 + 257.175 + 0.9977479979838839 + 54.72939060773481 + 0 + 0.0 + -1.5708 + 0 + 0.0 + 0 + 16 + 1 + 66.675 + 29.8704 + 50.8 + 67.4141 + 3.175 + 0 + 0 + 0.0 + 0.0 + 0.0 + 1 + 0.0 + + + 1.1277286611933457 + 1121.29 + Paper + Centering ring + 0.0 + 0 + 323.85 + 1.1277286611933457 + 3.175 + 0 + 0.0 + 0.0 + 2 + 6.35 + 0 + 17 + 28.702 + 24.9428 + 0 + 0 + + + 1.1277286611933457 + 1121.29 + Paper + Centering ring + 0.0 + 0 + 282.575 + 1.1277286611933457 + 3.175 + 0 + 0.0 + 0.0 + 2 + 6.35 + 0 + 18 + 28.702 + 24.9428 + 0 + 0 + + + + + + + + + \ No newline at end of file diff --git a/core/web/html/actions/updates.php b/core/web/html/actions/updates.php index ddbde5228..3d6f337e7 100644 --- a/core/web/html/actions/updates.php +++ b/core/web/html/actions/updates.php @@ -80,11 +80,32 @@ header("Content-type: text/plain"); $version = $_GET["version"]; $updates = ""; -$unstable = "14.03"; +$unstable = "14.11"; $stable = "1.0.0"; -if (preg_match("/^13.11.2$/", $version)) { +if (preg_match("/^14.06$/", $version)) { + $updates = "Version: " . $unstable . "\n" . + "6: Updated thrustcurves\n" . + "4: Fixed a few bugs\n" . + ""; +} else if (preg_match("/^14.05$/", $version)) { + $updates = "Version: " . $unstable . "\n" . + "10: Added Knots to windspeed and velocity units\n" . + "6: Updated thrustcurves\n" . + "4: Added Klima motor texture\n" . + "4: Fixed annoying table bug\n" . + ""; +} else if (preg_match("/^14.03$/", $version)) { + $updates = "Version: " . $unstable . "\n" . + "10: Simulations will now compute the optimum delay for the sustainer\n" . + "10: CG and Mass overrides are now indicated in the component tree\n" . + "6: Updated thrustcurves - added Klima and SCR motors and various others\n" . + "4: Removed the preset component Estes PNC-80FB since it was never produced\n" . + "4: Updated 3D libraries\n" . + "4: Bug fixes in motor selection dialog\n". + ""; +} else if (preg_match("/^13.11.2$/", $version)) { $updates = "Version: " . $unstable . "\n" . "10: Realistic in flight 3D photo construction\n" . "6: Updated thrustcurves\n". diff --git a/core/web/html/contact.html b/core/web/html/contact.html index ea3bb212d..ea0eab206 100644 --- a/core/web/html/contact.html +++ b/core/web/html/contact.html @@ -5,7 +5,7 @@ - + +

02.11.2014: Version 14.11 is + released! This release contains very few changes. Thrustcurves have been updated and now include AeroTech DMS motors. A few bugs have been fixed. +

+ +

25.06.2014: Version 14.06 is + released! This release contains very minimal changes. It fixes an annoying bug in tables that many people experience. A texture is added for Klima motors. +

+ +

21.05.2014: Version 14.05 is + released! This release contains some minor features, + bug fixes and updated thrust curves. New motor vendors Klima and Southern + Cross Rocketry are included. The simulation will now compute optimum delay based + on actual coast time. Components with CG and mass overrides are decorated with + an icon in the component tree. +

21.03.2014: Version 14.03 is released! This release contains the @@ -16,6 +31,8 @@ and motor selection windows as well.

+ +

01.01.2014: Version 13.11.2 is released! This release contains bug fixes, usability improvements, and layout fixes. @@ -34,9 +51,6 @@ Chineese translations have been added and Russian translations updated. Updated the 3D libraries, and squashed some bugs introduced by Java 1.7.0_45-b18.

- - -

6.10.2013: Version 13.09.1 is released! This is a bug-fix release, and includes updated 3D libraries and new thrust curves for diff --git a/swing/build.xml b/swing/build.xml index 5b5c4408e..0256084b9 100644 --- a/swing/build.xml +++ b/swing/build.xml @@ -27,7 +27,7 @@ - + diff --git a/swing/lib/jogl/gluegen-rt-natives-linux-amd64.jar b/swing/lib/jogl/gluegen-rt-natives-linux-amd64.jar index 8a565c890..f0d035cc8 100644 Binary files a/swing/lib/jogl/gluegen-rt-natives-linux-amd64.jar and b/swing/lib/jogl/gluegen-rt-natives-linux-amd64.jar differ diff --git a/swing/lib/jogl/gluegen-rt-natives-linux-i586.jar b/swing/lib/jogl/gluegen-rt-natives-linux-i586.jar index 73fef9804..d9f789ec3 100644 Binary files a/swing/lib/jogl/gluegen-rt-natives-linux-i586.jar and b/swing/lib/jogl/gluegen-rt-natives-linux-i586.jar differ diff --git a/swing/lib/jogl/gluegen-rt-natives-macosx-universal.jar b/swing/lib/jogl/gluegen-rt-natives-macosx-universal.jar index a8ea24f06..130731720 100644 Binary files a/swing/lib/jogl/gluegen-rt-natives-macosx-universal.jar and b/swing/lib/jogl/gluegen-rt-natives-macosx-universal.jar differ diff --git a/swing/lib/jogl/gluegen-rt-natives-windows-amd64.jar b/swing/lib/jogl/gluegen-rt-natives-windows-amd64.jar index 8be2607e4..6c5b925b2 100644 Binary files a/swing/lib/jogl/gluegen-rt-natives-windows-amd64.jar and b/swing/lib/jogl/gluegen-rt-natives-windows-amd64.jar differ diff --git a/swing/lib/jogl/gluegen-rt-natives-windows-i586.jar b/swing/lib/jogl/gluegen-rt-natives-windows-i586.jar index d9f263429..814c3b99d 100644 Binary files a/swing/lib/jogl/gluegen-rt-natives-windows-i586.jar and b/swing/lib/jogl/gluegen-rt-natives-windows-i586.jar differ diff --git a/swing/lib/jogl/gluegen-rt.jar b/swing/lib/jogl/gluegen-rt.jar index ee7287ae6..c20455ec7 100644 Binary files a/swing/lib/jogl/gluegen-rt.jar and b/swing/lib/jogl/gluegen-rt.jar differ diff --git a/swing/lib/jogl/jogl-all-natives-linux-amd64.jar b/swing/lib/jogl/jogl-all-natives-linux-amd64.jar index 823cb352e..9bbc12c09 100644 Binary files a/swing/lib/jogl/jogl-all-natives-linux-amd64.jar and b/swing/lib/jogl/jogl-all-natives-linux-amd64.jar differ diff --git a/swing/lib/jogl/jogl-all-natives-linux-i586.jar b/swing/lib/jogl/jogl-all-natives-linux-i586.jar index 73da07f48..f3e92cd63 100644 Binary files a/swing/lib/jogl/jogl-all-natives-linux-i586.jar and b/swing/lib/jogl/jogl-all-natives-linux-i586.jar differ diff --git a/swing/lib/jogl/jogl-all-natives-macosx-universal.jar b/swing/lib/jogl/jogl-all-natives-macosx-universal.jar index 0ff432d97..35f72f55a 100644 Binary files a/swing/lib/jogl/jogl-all-natives-macosx-universal.jar and b/swing/lib/jogl/jogl-all-natives-macosx-universal.jar differ diff --git a/swing/lib/jogl/jogl-all-natives-windows-amd64.jar b/swing/lib/jogl/jogl-all-natives-windows-amd64.jar index ebfab4f05..314434879 100644 Binary files a/swing/lib/jogl/jogl-all-natives-windows-amd64.jar and b/swing/lib/jogl/jogl-all-natives-windows-amd64.jar differ diff --git a/swing/lib/jogl/jogl-all-natives-windows-i586.jar b/swing/lib/jogl/jogl-all-natives-windows-i586.jar index dafaae992..f49d9ce19 100644 Binary files a/swing/lib/jogl/jogl-all-natives-windows-i586.jar and b/swing/lib/jogl/jogl-all-natives-windows-i586.jar differ diff --git a/swing/lib/jogl/jogl-all.jar b/swing/lib/jogl/jogl-all.jar index d86116ca0..1d048da6b 100644 Binary files a/swing/lib/jogl/jogl-all.jar and b/swing/lib/jogl/jogl-all.jar differ diff --git a/swing/resources-src/datafiles/presets/Estes.orc b/swing/resources-src/datafiles/presets/Estes.orc index 47e793998..839719b71 100644 --- a/swing/resources-src/datafiles/presets/Estes.orc +++ b/swing/resources-src/datafiles/presets/Estes.orc @@ -1565,19 +1565,6 @@ PNC-80BB Plastic Nose cone Polystyrene PS - 0.03685438003 - PARABOLIC - 0.06604 - 0.0649732 - 0.044449999999999996 - 0.1016 - 0.003175 - - - Estes - PNC-80FB - Estes PNC-80 Fat Boy profile cone - Polystyrene PS 0.035892 ELLIPSOID 0.06604 diff --git a/swing/resources-src/datafiles/rocksim_components/estes/NCDATA.CSV b/swing/resources-src/datafiles/rocksim_components/estes/NCDATA.CSV index 7b6204894..7b38bcd19 100644 --- a/swing/resources-src/datafiles/rocksim_components/estes/NCDATA.CSV +++ b/swing/resources-src/datafiles/rocksim_components/estes/NCDATA.CSV @@ -26,7 +26,6 @@ Estes,PNC-60L ,Plastic Nose cone,in,2.5,1.637,0,0.75,1.595,0.125,elliptical,holl Estes,PNC-60MS ,Plastic Nose cone,in,2.5,1.637,0,0.75,1.595,0.125,parabolic,hollow,Polystyrene PS,1.625,oz,0.5,0,,,,,,,,,,,,, Estes,PNC-60NA,Plastic Nose cone,in,4.75,1.637,0,0.75,1.595,0.125,ogive,hollow,Polystyrene PS,0,oz,0.6,0,,,,,,,,,,,,, Estes,BNC-70AJ ,Balsa Nose cone,in,4.4,2.217,0,0.75,2.18,0,parabolic,solid,Balsa,2.575,oz,0.85,0,,,,,,,,,,,,, -Estes,PNC-80BB ,Plastic Nose cone,in,4,2.6,0,1.75,2.558,0.125,parabolic,hollow,Polystyrene PS,2.875,oz,1.3,0,,,,,,,,,,,,, -Estes,PNC-80FB,Estes PNC-80 Fat Boy profile cone,mm,101.6,66.04,0,38.1,64.922,3.175,elliptical,hollow,Polystyrene PS,0,g,35.892,0,,,,,,,,,,,,, +Estes,PNC-80BB,Plastic Nose cone,mm,101.6,66.04,0,38.1,64.922,3.175,elliptical,hollow,Polystyrene PS,0,g,35.892,0,,,,,,,,,,,,, Estes,PNC-80K ,Plastic Nose cone,in,8.15,2.6,0,1,2.558,0.125,ogive,hollow,Polystyrene PS,4.575,oz,1.68,0,,,,,,,,,,,,, Estes,PNC-55AO,Elliptical,mm,127,33.655,0,15.24,32.588,2.3876,elliptical,hollow,Polystyrene PS,100.99,g,12.19,0,,,,,,,,,,,,, diff --git a/swing/resources/datafiles/examples/A simple model rocket.ork b/swing/resources/datafiles/examples/A simple model rocket.ork index febaadaeb..2932f25e3 100644 Binary files a/swing/resources/datafiles/examples/A simple model rocket.ork and b/swing/resources/datafiles/examples/A simple model rocket.ork differ diff --git a/swing/resources/datafiles/examples/Apocalypse with decals.ork b/swing/resources/datafiles/examples/Apocalypse with decals.ork index 0b368faad..57c63fdc8 100644 Binary files a/swing/resources/datafiles/examples/Apocalypse with decals.ork and b/swing/resources/datafiles/examples/Apocalypse with decals.ork differ diff --git a/swing/resources/datafiles/examples/Boosted Dart.ork b/swing/resources/datafiles/examples/Boosted Dart.ork index 6638ec6b9..8bd8df078 100644 Binary files a/swing/resources/datafiles/examples/Boosted Dart.ork and b/swing/resources/datafiles/examples/Boosted Dart.ork differ diff --git a/swing/resources/datafiles/examples/Clustered rocket design.ork b/swing/resources/datafiles/examples/Clustered rocket design.ork index 825059deb..b16f089c5 100644 Binary files a/swing/resources/datafiles/examples/Clustered rocket design.ork and b/swing/resources/datafiles/examples/Clustered rocket design.ork differ diff --git a/swing/resources/datafiles/examples/High Power Airstart.ork b/swing/resources/datafiles/examples/High Power Airstart.ork index 87ce4e0d1..edfb6e125 100644 Binary files a/swing/resources/datafiles/examples/High Power Airstart.ork and b/swing/resources/datafiles/examples/High Power Airstart.ork differ diff --git a/swing/resources/datafiles/examples/Hybrid rocket with dual parachute deployment.ork b/swing/resources/datafiles/examples/Hybrid rocket with dual parachute deployment.ork index 19fece7dd..d3c120da4 100644 Binary files a/swing/resources/datafiles/examples/Hybrid rocket with dual parachute deployment.ork and b/swing/resources/datafiles/examples/Hybrid rocket with dual parachute deployment.ork differ diff --git a/swing/resources/datafiles/examples/Preset Usage.ork b/swing/resources/datafiles/examples/Preset Usage.ork index 932e24dcd..358f2f079 100644 Binary files a/swing/resources/datafiles/examples/Preset Usage.ork and b/swing/resources/datafiles/examples/Preset Usage.ork differ diff --git a/swing/resources/datafiles/examples/Roll-stabilized rocket.ork b/swing/resources/datafiles/examples/Roll-stabilized rocket.ork index 35cd43d95..4d7d84a03 100644 Binary files a/swing/resources/datafiles/examples/Roll-stabilized rocket.ork and b/swing/resources/datafiles/examples/Roll-stabilized rocket.ork differ diff --git a/swing/resources/datafiles/examples/Simulation listeners.ork b/swing/resources/datafiles/examples/Simulation listeners.ork index 8c1070fd5..d4fbae528 100644 Binary files a/swing/resources/datafiles/examples/Simulation listeners.ork and b/swing/resources/datafiles/examples/Simulation listeners.ork differ diff --git a/swing/resources/datafiles/examples/TARC Payloader.ork b/swing/resources/datafiles/examples/TARC Payloader.ork index 8508ea1a3..2d9ecbf0f 100644 Binary files a/swing/resources/datafiles/examples/TARC Payloader.ork and b/swing/resources/datafiles/examples/TARC Payloader.ork differ diff --git a/swing/resources/datafiles/examples/Three-stage rocket.ork b/swing/resources/datafiles/examples/Three-stage rocket.ork index 1775c6774..39b3a02f5 100644 Binary files a/swing/resources/datafiles/examples/Three-stage rocket.ork and b/swing/resources/datafiles/examples/Three-stage rocket.ork differ diff --git a/swing/resources/datafiles/presets/system.ser b/swing/resources/datafiles/presets/system.ser index 404e4735a..5342b5a8d 100644 Binary files a/swing/resources/datafiles/presets/system.ser and b/swing/resources/datafiles/presets/system.ser differ diff --git a/swing/resources/datafiles/textures/motors/klima.jpg b/swing/resources/datafiles/textures/motors/klima.jpg new file mode 100644 index 000000000..c5be2761c Binary files /dev/null and b/swing/resources/datafiles/textures/motors/klima.jpg differ diff --git a/swing/src/net/sf/openrocket/gui/adaptors/Column.java b/swing/src/net/sf/openrocket/gui/adaptors/Column.java index 36efe2ace..1c51f98af 100644 --- a/swing/src/net/sf/openrocket/gui/adaptors/Column.java +++ b/swing/src/net/sf/openrocket/gui/adaptors/Column.java @@ -6,6 +6,7 @@ import javax.swing.table.TableColumnModel; public abstract class Column { private final String name; + private final String toolTip; /** * Create a new column with specified name. Additionally, the {@link #getValueAt(int)} @@ -15,6 +16,17 @@ public abstract class Column { */ public Column(String name) { this.name = name; + this.toolTip = null; + } + + /** + * Create a new column with specified name and toolTip. + * + * + */ + public Column(String name, String toolTip ) { + this.name = name; + this.toolTip = toolTip; } /** @@ -87,5 +99,9 @@ public abstract class Column { public Comparator getComparator() { return null; } + + public String getToolTip() { + return toolTip; + } } diff --git a/swing/src/net/sf/openrocket/gui/adaptors/ColumnTable.java b/swing/src/net/sf/openrocket/gui/adaptors/ColumnTable.java new file mode 100644 index 000000000..f0e937345 --- /dev/null +++ b/swing/src/net/sf/openrocket/gui/adaptors/ColumnTable.java @@ -0,0 +1,31 @@ +package net.sf.openrocket.gui.adaptors; + +import java.awt.event.MouseEvent; + +import javax.swing.JTable; +import javax.swing.table.JTableHeader; + +public class ColumnTable extends JTable { + + public ColumnTable( ColumnTableModel model ) { + super(model); + } + + @Override + protected JTableHeader createDefaultTableHeader() { + return new JTableHeader( columnModel ) { + public String getToolTipText(MouseEvent e) { + String tip = null; + java.awt.Point p = e.getPoint(); + int index = columnModel.getColumnIndexAtX(p.x); + if ( index < 0 ) { + return null; + } + int realIndex = columnModel.getColumn(index).getModelIndex(); + tip = ((ColumnTableModel) getModel()).getColumn(realIndex).getToolTip(); + return tip; + } + }; + } + +} diff --git a/swing/src/net/sf/openrocket/gui/adaptors/ValueColumn.java b/swing/src/net/sf/openrocket/gui/adaptors/ValueColumn.java index e2922f0af..052f9b975 100644 --- a/swing/src/net/sf/openrocket/gui/adaptors/ValueColumn.java +++ b/swing/src/net/sf/openrocket/gui/adaptors/ValueColumn.java @@ -15,6 +15,11 @@ public abstract class ValueColumn extends Column { this.unit = unit; } + public ValueColumn( String name, String toolTip, UnitGroup unit ) { + super( name, toolTip ); + this.unit = unit; + } + @Override public Object getValueAt(int row) { Double d = valueAt(row); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java index cf70d463f..b4e277192 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java @@ -32,7 +32,22 @@ public class MassComponentConfig extends RocketComponentConfig { JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); + //// Mass component type + panel.add(new JLabel(trans.get("MassComponentCfg.lbl.type"))); + @SuppressWarnings("unchecked") + JComboBox typecombo = new JComboBox( + new EnumModel(component, "MassComponentType", + new MassComponent.MassComponentType[] { + MassComponent.MassComponentType.MASSCOMPONENT, + MassComponent.MassComponentType.ALTIMETER, + MassComponent.MassComponentType.FLIGHTCOMPUTER, + MassComponent.MassComponentType.DEPLOYMENTCHARGE, + MassComponent.MassComponentType.TRACKER, + MassComponent.MassComponentType.PAYLOAD, + MassComponent.MassComponentType.RECOVERYHARDWARE, + MassComponent.MassComponentType.BATTERY})); + panel.add(typecombo, "spanx, growx, wrap"); //// Mass panel.add(new JLabel(trans.get("MassComponentCfg.lbl.Mass"))); @@ -116,6 +131,7 @@ public class MassComponentConfig extends RocketComponentConfig { new DoubleModel(component.getParent(), "Length"))), "w 100lp, wrap"); + //// General and General properties tabbedPane.insertTab(trans.get("MassComponentCfg.tab.General"), null, panel, trans.get("MassComponentCfg.tab.ttip.General"), 0); diff --git a/swing/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java b/swing/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java index 9a2320bf7..5f2d90b3a 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java @@ -43,6 +43,7 @@ import net.sf.openrocket.aerodynamics.FlightConditions; import net.sf.openrocket.aerodynamics.Warning; import net.sf.openrocket.aerodynamics.WarningSet; import net.sf.openrocket.gui.adaptors.Column; +import net.sf.openrocket.gui.adaptors.ColumnTable; import net.sf.openrocket.gui.adaptors.ColumnTableModel; import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.adaptors.FlightConfigurationModel; @@ -243,7 +244,7 @@ public class ComponentAnalysisDialog extends JDialog implements StateChangeListe } }; - table = new JTable(cpTableModel); + table = new ColumnTable(cpTableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setSelectionBackground(Color.LIGHT_GRAY); table.setSelectionForeground(Color.BLACK); diff --git a/swing/src/net/sf/openrocket/gui/dialogs/DebugLogDialog.java b/swing/src/net/sf/openrocket/gui/dialogs/DebugLogDialog.java index 706014fcf..b39d683bb 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/DebugLogDialog.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/DebugLogDialog.java @@ -40,6 +40,7 @@ import javax.swing.table.TableRowSorter; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.gui.adaptors.Column; +import net.sf.openrocket.gui.adaptors.ColumnTable; import net.sf.openrocket.gui.adaptors.ColumnTableModel; import net.sf.openrocket.gui.components.SelectableLabel; import net.sf.openrocket.gui.util.GUIUtil; @@ -266,7 +267,7 @@ public class DebugLogDialog extends JDialog { } }; - table = new JTable(model); + table = new ColumnTable(model); table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); table.setSelectionBackground(Color.LIGHT_GRAY); table.setSelectionForeground(Color.BLACK); diff --git a/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java b/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java index ff9de619f..7ea640b54 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java @@ -310,6 +310,10 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec } public void setMotorMountAndConfig( MotorMount mount, String currentConfig ) { + selectedMotor = null; + selectedMotorSet = null; + selectedDelay = 0; + ThrustCurveMotor motorToSelect = null; if (currentConfig != null && mount != null) { MotorConfiguration motorConf = mount.getMotorConfiguration().get(currentConfig); @@ -317,21 +321,14 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec selectedDelay = motorConf.getEjectionDelay(); } - selectedMotorSet = null; - // If current motor is not found in db, add a new ThrustCurveMotorSet containing it if (motorToSelect != null) { - for (ThrustCurveMotorSet motorSet : database) { - if (motorSet.getMotors().contains(motorToSelect)) { - selectedMotorSet = motorSet; - break; - } - } - if (selectedMotorSet == null) { + ThrustCurveMotorSet motorSetToSelect = null; + motorSetToSelect = findMotorSet(motorToSelect); + if (motorSetToSelect == null) { database = new ArrayList(database); ThrustCurveMotorSet extra = new ThrustCurveMotorSet(); extra.addMotor(motorToSelect); - selectedMotorSet = extra; database.add(extra); Collections.sort(database); } diff --git a/swing/src/net/sf/openrocket/gui/dialogs/preferences/MaterialEditPanel.java b/swing/src/net/sf/openrocket/gui/dialogs/preferences/MaterialEditPanel.java index 41aecb430..e3b1d1278 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/preferences/MaterialEditPanel.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/preferences/MaterialEditPanel.java @@ -23,6 +23,7 @@ import net.miginfocom.swing.MigLayout; import net.sf.openrocket.database.Database; import net.sf.openrocket.database.Databases; import net.sf.openrocket.gui.adaptors.Column; +import net.sf.openrocket.gui.adaptors.ColumnTable; import net.sf.openrocket.gui.adaptors.ColumnTableModel; import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.components.StyledLabel.Style; @@ -108,7 +109,7 @@ public class MaterialEditPanel extends JPanel { } }; - table = new JTable(model); + table = new ColumnTable(model); model.setColumnWidths(table.getColumnModel()); table.setAutoCreateRowSorter(true); table.setDefaultRenderer(Object.class, new MaterialCellRenderer()); diff --git a/swing/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java b/swing/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java index c76ad6fe0..5fdfa4f60 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java @@ -164,7 +164,7 @@ public class PreferencesDialog extends JDialog { //// Position to insert new body components: panel.add(new JLabel(trans.get("pref.dlg.lbl.Positiontoinsert")), "gapright para"); - panel.add(new JComboBox(new PrefChoiseSelector(Preferences.BODY_COMPONENT_INSERT_POSITION_KEY, + panel.add(new JComboBox(new PrefChoiceSelector(Preferences.BODY_COMPONENT_INSERT_POSITION_KEY, //// Always ask //// Insert in middle //// Add to end @@ -178,8 +178,18 @@ public class PreferencesDialog extends JDialog { //// Delete //// Confirm trans.get("pref.dlg.PrefBooleanSelector1"), - trans.get("pref.dlg.PrefBooleanSelector2"), true)), "wrap 40lp, growx, sg combos"); - + trans.get("pref.dlg.PrefBooleanSelector2"), true)), "wrap, growx, sg combos"); + //// Position to insert new body components: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Rocketinfofontsize")), "gapright para"); + + panel.add(new JComboBox(new PrefChoiceSelector(Preferences.ROCKET_INFO_FONT_SIZE, + //// Small + //// Medium + //// Large + trans.get("pref.dlg.PrefFontSmall"), + trans.get("pref.dlg.PrefFontMedium"), + trans.get("pref.dlg.PrefFontLarge"))), "wrap 40lp, growx, sg combos"); + //// User-defined thrust curves: panel.add(new JLabel(trans.get("pref.dlg.lbl.User-definedthrust")), "spanx, wrap"); final JTextField field = new JTextField(); @@ -285,6 +295,7 @@ public class PreferencesDialog extends JDialog { + //// Check for software updates at startup final JCheckBox softwareUpdateBox = new JCheckBox(trans.get("pref.dlg.checkbox.Checkupdates")); @@ -317,8 +328,32 @@ public class PreferencesDialog extends JDialog { preferences.setAutoOpenLastDesignOnStartup(autoOpenDesignFile.isSelected()); } }); - panel.add(autoOpenDesignFile); + panel.add(autoOpenDesignFile, "wrap, growx, span 2"); + //// Automatically run all simulation out-dated by design changes. + final JCheckBox automaticallyRunSimsBox = + new JCheckBox(trans.get("pref.dlg.checkbox.Runsimulations")); + automaticallyRunSimsBox.setSelected(preferences.getAutoRunSimulations()); + automaticallyRunSimsBox.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + preferences.setAutoRunSimulations(automaticallyRunSimsBox.isSelected()); + } + }); + panel.add(automaticallyRunSimsBox, "wrap, growx, sg combos "); + + //// Update flight estimates in the design window + final JCheckBox updateEstimates = + new JCheckBox(trans.get("pref.dlg.checkbox.Updateestimates")); + updateEstimates.setSelected(preferences.computeFlightInBackground()); + updateEstimates.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + preferences.setComputeFlightInBackground(updateEstimates.isSelected()); + } + }); + panel.add(updateEstimates, "wrap, growx, sg combos "); + return panel; } @@ -673,11 +708,11 @@ public class PreferencesDialog extends JDialog { - private class PrefChoiseSelector extends AbstractListModel implements ComboBoxModel { + private class PrefChoiceSelector extends AbstractListModel implements ComboBoxModel { private final String preference; private final String[] descriptions; - public PrefChoiseSelector(String preference, String... descriptions) { + public PrefChoiceSelector(String preference, String... descriptions) { this.preference = preference; this.descriptions = descriptions; } diff --git a/swing/src/net/sf/openrocket/gui/figureelements/RocketInfo.java b/swing/src/net/sf/openrocket/gui/figureelements/RocketInfo.java index 27849cd2f..16f7cf3f2 100644 --- a/swing/src/net/sf/openrocket/gui/figureelements/RocketInfo.java +++ b/swing/src/net/sf/openrocket/gui/figureelements/RocketInfo.java @@ -77,7 +77,9 @@ public class RocketInfo implements FigureElement { public void paint(Graphics2D myG2, double scale, Rectangle visible) { this.g2 = myG2; this.line = FONT.getLineMetrics("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", - myG2.getFontRenderContext()).getHeight(); + myG2.getFontRenderContext()).getHeight() + + FONT.getLineMetrics("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", + myG2.getFontRenderContext()).getDescent(); x1 = visible.x + MARGIN; x2 = visible.x + visible.width - MARGIN; @@ -429,11 +431,13 @@ public class RocketInfo implements FigureElement { private GlyphVector createText(String text) { - return FONT.createGlyphVector(g2.getFontRenderContext(), text); + float size=Application.getPreferences().getRocketInfoFontSize(); + return (FONT.deriveFont(size)).createGlyphVector(g2.getFontRenderContext(), text); } private GlyphVector createSmallText(String text) { - return SMALLFONT.createGlyphVector(g2.getFontRenderContext(), text); + float size=(float) (Application.getPreferences().getRocketInfoFontSize()-2.0); + return (SMALLFONT.deriveFont(size)).createGlyphVector(g2.getFontRenderContext(), text); } } diff --git a/swing/src/net/sf/openrocket/gui/main/BasicFrame.java b/swing/src/net/sf/openrocket/gui/main/BasicFrame.java index fd8c11272..10fb9e71f 100644 --- a/swing/src/net/sf/openrocket/gui/main/BasicFrame.java +++ b/swing/src/net/sf/openrocket/gui/main/BasicFrame.java @@ -54,6 +54,7 @@ import javax.swing.border.BevelBorder; import javax.swing.border.TitledBorder; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; +import javax.swing.event.ChangeEvent; import javax.swing.tree.DefaultTreeSelectionModel; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; @@ -153,7 +154,7 @@ public class BasicFrame extends JFrame { /** Actions available for rocket modifications */ private final RocketActions actions; - + private SimulationPanel simulationPanel; /** @@ -174,7 +175,7 @@ public class BasicFrame extends JFrame { componentSelectionModel.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); // Obtain the simulation selection model that will be used - SimulationPanel simulationPanel = new SimulationPanel(document); + simulationPanel = new SimulationPanel(document); simulationSelectionModel = simulationPanel.getSimulationListSelectionModel(); // Combine into a DocumentSelectionModel @@ -203,6 +204,11 @@ public class BasicFrame extends JFrame { //// Flight simulations tabbedPane.addTab(trans.get("BasicFrame.tab.Flightsim"), null, simulationPanel); + // Add change listener to catch when the tabs are changed. This is to run simulations + // automagically when the simulation tab is selected. + tabbedPane.addChangeListener(new BasicFrame_changeAdapter(this)); + + vertical.setTopComponent(tabbedPane); @@ -1553,4 +1559,24 @@ public class BasicFrame extends JFrame { return null; } } + + public void stateChanged(ChangeEvent e) { + JTabbedPane tabSource = (JTabbedPane) e.getSource(); + String tab = tabSource.getTitleAt(tabSource.getSelectedIndex()); + if (tab.equals(trans.get("BasicFrame.tab.Flightsim"))) { + simulationPanel.activating(); + } + } } + + +class BasicFrame_changeAdapter implements javax.swing.event.ChangeListener { + BasicFrame adaptee; + + BasicFrame_changeAdapter(BasicFrame adaptee) { + this.adaptee = adaptee; + } + public void stateChanged(ChangeEvent e) { + adaptee.stateChanged(e); + } +} \ No newline at end of file diff --git a/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java b/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java index 4a238463a..a81436995 100644 --- a/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java @@ -35,6 +35,7 @@ import net.sf.openrocket.document.events.DocumentChangeListener; import net.sf.openrocket.document.events.SimulationChangeEvent; import net.sf.openrocket.formatting.RocketDescriptor; import net.sf.openrocket.gui.adaptors.Column; +import net.sf.openrocket.gui.adaptors.ColumnTable; import net.sf.openrocket.gui.adaptors.ColumnTableModel; import net.sf.openrocket.gui.adaptors.ColumnTableRowSorter; import net.sf.openrocket.gui.adaptors.ValueColumn; @@ -43,11 +44,13 @@ import net.sf.openrocket.gui.simulation.SimulationEditDialog; import net.sf.openrocket.gui.simulation.SimulationRunDialog; import net.sf.openrocket.gui.simulation.SimulationWarningDialog; import net.sf.openrocket.gui.util.Icons; +import net.sf.openrocket.gui.util.SwingPreferences; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; import net.sf.openrocket.rocketcomponent.ComponentChangeListener; import net.sf.openrocket.rocketcomponent.Configuration; import net.sf.openrocket.simulation.FlightData; +import net.sf.openrocket.simulation.FlightEvent; import net.sf.openrocket.startup.Application; import net.sf.openrocket.startup.Preferences; import net.sf.openrocket.unit.UnitGroup; @@ -59,37 +62,37 @@ import org.slf4j.LoggerFactory; public class SimulationPanel extends JPanel { private static final Logger log = LoggerFactory.getLogger(SimulationPanel.class); private static final Translator trans = Application.getTranslator(); - - + + private static final Color WARNING_COLOR = Color.RED; private static final String WARNING_TEXT = "\uFF01"; // Fullwidth exclamation mark - + private static final Color OK_COLOR = new Color(60, 150, 0); private static final String OK_TEXT = "\u2714"; // Heavy check mark - - + + private RocketDescriptor descriptor = Application.getInjector().getInstance(RocketDescriptor.class); - - + + private final OpenRocketDocument document; - + private final ColumnTableModel simulationTableModel; private final JTable simulationTable; - + private final JButton editButton; private final JButton runButton; private final JButton deleteButton; private final JButton plotButton; - + public SimulationPanel(OpenRocketDocument doc) { super(new MigLayout("fill", "[grow][][][][][][grow]")); - + this.document = doc; - - - + + + //////// The simulation action buttons - + //// New simulation button { JButton button = new JButton(trans.get("simpanel.but.newsimulation")); @@ -100,19 +103,19 @@ public class SimulationPanel extends JPanel { public void actionPerformed(ActionEvent e) { Simulation sim = new Simulation(document.getRocket()); sim.setName(document.getNextSimulationName()); - + int n = document.getSimulationCount(); document.addSimulation(sim); simulationTableModel.fireTableDataChanged(); simulationTable.clearSelection(); simulationTable.addRowSelectionInterval(n, n); - + openDialog(false, sim); } }); this.add(button, "skip 1, gapright para"); } - + //// Edit simulation button editButton = new JButton(trans.get("simpanel.but.editsimulation")); //// Edit the selected simulation @@ -133,7 +136,7 @@ public class SimulationPanel extends JPanel { } }); this.add(editButton, "gapright para"); - + //// Run simulations runButton = new JButton(trans.get("simpanel.but.runsimulations")); //// Re-run the selected simulations @@ -150,7 +153,7 @@ public class SimulationPanel extends JPanel { selection[i] = simulationTable.convertRowIndexToModel(selection[i]); sims[i] = document.getSimulation(selection[i]); } - + long t = System.currentTimeMillis(); new SimulationRunDialog(SwingUtilities.getWindowAncestor( SimulationPanel.this), document, sims).setVisible(true); @@ -159,7 +162,7 @@ public class SimulationPanel extends JPanel { } }); this.add(runButton, "gapright para"); - + //// Delete simulations button deleteButton = new JButton(trans.get("simpanel.but.deletesimulations")); //// Delete the selected simulations @@ -174,34 +177,34 @@ public class SimulationPanel extends JPanel { // Verify deletion boolean verify = Application.getPreferences().getBoolean(Preferences.CONFIRM_DELETE_SIMULATION, true); if (verify) { - + JPanel panel = new JPanel(new MigLayout()); //// Do not ask me again JCheckBox dontAsk = new JCheckBox(trans.get("simpanel.checkbox.donotask")); panel.add(dontAsk, "wrap"); //// You can change the default operation in the preferences. panel.add(new StyledLabel(trans.get("simpanel.lbl.defpref"), -2)); - + int ret = JOptionPane.showConfirmDialog(SimulationPanel.this, new Object[] { - //// Delete the selected simulations? - trans.get("simpanel.dlg.lbl.DeleteSim1"), - //// This operation cannot be undone. - trans.get("simpanel.dlg.lbl.DeleteSim2"), - "", - panel }, + //// Delete the selected simulations? + trans.get("simpanel.dlg.lbl.DeleteSim1"), + //// This operation cannot be undone. + trans.get("simpanel.dlg.lbl.DeleteSim2"), + "", + panel }, //// Delete simulations trans.get("simpanel.dlg.lbl.DeleteSim3"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (ret != JOptionPane.OK_OPTION) return; - + if (dontAsk.isSelected()) { Application.getPreferences().putBoolean(Preferences.CONFIRM_DELETE_SIMULATION, false); } } - + // Delete simulations for (int i = 0; i < selection.length; i++) { selection[i] = simulationTable.convertRowIndexToModel(selection[i]); @@ -214,7 +217,7 @@ public class SimulationPanel extends JPanel { } }); this.add(deleteButton, "gapright para"); - + //// Plot / export button plotButton = new JButton(trans.get("simpanel.but.plotexport")); // button = new JButton("Plot flight"); @@ -228,58 +231,58 @@ public class SimulationPanel extends JPanel { selected = simulationTable.convertRowIndexToModel(selected); simulationTable.clearSelection(); simulationTable.addRowSelectionInterval(selected, selected); - - + + Simulation sim = document.getSimulations().get(selected); - + if (!sim.hasSimulationData()) { new SimulationRunDialog(SwingUtilities.getWindowAncestor( SimulationPanel.this), document, sim).setVisible(true); } - + fireMaintainSelection(); - + openDialog(true, sim); - + } }); this.add(plotButton, "wrap para"); - - - + + + //////// The simulation table - + simulationTableModel = new ColumnTableModel( - + //// Status and warning column new Column("") { private JLabel label = null; - + @Override public Object getValueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) return null; - + // Initialize the label if (label == null) { label = new StyledLabel(2f); label.setIconTextGap(1); // label.setFont(label.getFont().deriveFont(Font.BOLD)); } - + // Set simulation status icon Simulation.Status status = document.getSimulation(row).getStatus(); label.setIcon(Icons.SIMULATION_STATUS_ICON_MAP.get(status)); - - + + // Set warning marker if (status == Simulation.Status.NOT_SIMULATED || status == Simulation.Status.EXTERNAL) { - + label.setText(""); - + } else { - + WarningSet w = document.getSimulation(row).getSimulatedWarnings(); if (w == null) { label.setText(""); @@ -291,21 +294,21 @@ public class SimulationPanel extends JPanel { label.setText(WARNING_TEXT); } } - + return label; } - + @Override public int getExactWidth() { return 36; } - + @Override public Class getColumnClass() { return JLabel.class; } }, - + //// Simulation name //// Name new Column(trans.get("simpanel.col.Name")) { @@ -315,18 +318,18 @@ public class SimulationPanel extends JPanel { return null; return document.getSimulation(row).getName(); } - + @Override public int getDefaultWidth() { return 125; } - + @Override public Comparator getComparator() { return new AlphanumComparator(); } }, - + //// Simulation configuration new Column(trans.get("simpanel.col.Configuration")) { @Override @@ -336,144 +339,165 @@ public class SimulationPanel extends JPanel { Configuration c = document.getSimulation(row).getConfiguration(); return descriptor.format(c.getRocket(), c.getFlightConfigurationID()); } - + @Override public int getDefaultWidth() { return 125; } }, - + //// Launch rod velocity new ValueColumn(trans.get("simpanel.col.Velocityoffrod"), UnitGroup.UNITS_VELOCITY) { @Override public Double valueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) return null; - + FlightData data = document.getSimulation(row).getSimulatedData(); if (data == null) return null; - + return data.getLaunchRodVelocity(); } - + }, - + //// Apogee new ValueColumn(trans.get("simpanel.col.Apogee"), UnitGroup.UNITS_DISTANCE) { @Override public Double valueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) return null; - + FlightData data = document.getSimulation(row).getSimulatedData(); if (data == null) return null; - + return data.getMaxAltitude(); } }, - + //// Velocity at deployment new ValueColumn(trans.get("simpanel.col.Velocityatdeploy"), UnitGroup.UNITS_VELOCITY) { @Override public Double valueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) return null; - + FlightData data = document.getSimulation(row).getSimulatedData(); if (data == null) return null; - + return data.getDeploymentVelocity(); } }, - + + //// Deployment Time from Apogee + new ValueColumn(trans.get("simpanel.col.OptimumCoastTime"), + trans.get("simpanel.col.OptimumCoastTime.ttip"), + UnitGroup.UNITS_SHORT_TIME) { + @Override + public Double valueAt(int row) { + if (row < 0 || row >= document.getSimulationCount()) + return null; + + FlightData data = document.getSimulation(row).getSimulatedData(); + if (data == null || data.getBranchCount() == 0) + return null; + + double val = data.getBranch(0).getOptimumDelay(); + if ( Double.isNaN(val) ) { + return null; + } + return val; + } + }, + //// Maximum velocity new ValueColumn(trans.get("simpanel.col.Maxvelocity"), UnitGroup.UNITS_VELOCITY) { @Override public Double valueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) return null; - + FlightData data = document.getSimulation(row).getSimulatedData(); if (data == null) return null; - + return data.getMaxVelocity(); } }, - + //// Maximum acceleration new ValueColumn(trans.get("simpanel.col.Maxacceleration"), UnitGroup.UNITS_ACCELERATION) { @Override public Double valueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) return null; - + FlightData data = document.getSimulation(row).getSimulatedData(); if (data == null) return null; - + return data.getMaxAcceleration(); } }, - + //// Time to apogee new ValueColumn(trans.get("simpanel.col.Timetoapogee"), UnitGroup.UNITS_FLIGHT_TIME) { @Override public Double valueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) return null; - + FlightData data = document.getSimulation(row).getSimulatedData(); if (data == null) return null; - + return data.getTimeToApogee(); } }, - + //// Flight time new ValueColumn(trans.get("simpanel.col.Flighttime"), UnitGroup.UNITS_FLIGHT_TIME) { @Override public Double valueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) return null; - + FlightData data = document.getSimulation(row).getSimulatedData(); if (data == null) return null; - + return data.getFlightTime(); } }, - + //// Ground hit velocity new ValueColumn(trans.get("simpanel.col.Groundhitvelocity"), UnitGroup.UNITS_VELOCITY) { @Override public Double valueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) return null; - + FlightData data = document.getSimulation(row).getSimulatedData(); if (data == null) return null; - + return data.getGroundHitVelocity(); } } - + ) { - @Override - public int getRowCount() { - return document.getSimulationCount(); - } - }; - + @Override + public int getRowCount() { + return document.getSimulationCount(); + } + }; + // Override processKeyBinding so that the JTable does not catch // key bindings used in menu accelerators - simulationTable = new JTable(simulationTableModel) { + simulationTable = new ColumnTable(simulationTableModel) { @Override protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, @@ -487,8 +511,8 @@ public class SimulationPanel extends JPanel { simulationTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); simulationTable.setDefaultRenderer(Object.class, new JLabelRenderer()); simulationTableModel.setColumnWidths(simulationTable.getColumnModel()); - - + + // Mouse listener to act on double-clicks simulationTable.addMouseListener(new MouseAdapter() { @Override @@ -499,15 +523,15 @@ public class SimulationPanel extends JPanel { return; } int selected = simulationTable.convertRowIndexToModel(selectedRow); - + int column = simulationTable.columnAtPoint(e.getPoint()); if (column == 0) { SimulationWarningDialog.showWarningDialog(SimulationPanel.this, document.getSimulations().get(selected)); } else { - + simulationTable.clearSelection(); simulationTable.addRowSelectionInterval(selectedRow, selectedRow); - + openDialog(document.getSimulations().get(selected)); } } else { @@ -515,7 +539,7 @@ public class SimulationPanel extends JPanel { } } }); - + document.addDocumentChangeListener(new DocumentChangeListener() { @Override public void documentChanged(DocumentChangeEvent event) { @@ -524,10 +548,10 @@ public class SimulationPanel extends JPanel { simulationTableModel.fireTableDataChanged(); } }); - - - - + + + + // Fire table change event when the rocket changes document.getRocket().addComponentChangeListener(new ComponentChangeListener() { @Override @@ -535,14 +559,14 @@ public class SimulationPanel extends JPanel { fireMaintainSelection(); } }); - - + + JScrollPane scrollpane = new JScrollPane(simulationTable); this.add(scrollpane, "spanx, grow, wrap rel"); - + updateButtonStates(); } - + private void updateButtonStates() { int[] selection = simulationTable.getSelectedRows(); if (selection.length == 0) { @@ -560,13 +584,51 @@ public class SimulationPanel extends JPanel { runButton.setEnabled(true); deleteButton.setEnabled(true); } - + } + + /// when the simulation tab is selected this run outdated simulated if appropriate. + public void activating(){ + if( ((Preferences) Application.getPreferences()).getAutoRunSimulations()){ + int nSims = simulationTable.getRowCount(); + int outdated = 0; + if (nSims == 0) { + return; + } + + for (int i = 0; i < nSims; i++) { + Simulation.Status s = document.getSimulation(simulationTable.convertRowIndexToModel(i)).getStatus(); + if((s==Simulation.Status.NOT_SIMULATED) || + (s==Simulation.Status.OUTDATED)){ + outdated++; + } + } + if(outdated>0){ + Simulation[] sims = new Simulation[outdated]; + + int index=0; + for (int i = 0; i < nSims; i++) { + int t = simulationTable.convertRowIndexToModel(i); + Simulation s = document.getSimulation(t); + if((s.getStatus()==Status.NOT_SIMULATED)||(s.getStatus()==Status.OUTDATED)){ + sims[index] = s; + index++; + } + } + long t = System.currentTimeMillis(); + new SimulationRunDialog(SwingUtilities.getWindowAncestor( + SimulationPanel.this), document, sims).setVisible(true); + log.info("Running simulations took " + (System.currentTimeMillis() - t) + " ms"); + fireMaintainSelection(); + } + } + } + public ListSelectionModel getSimulationListSelectionModel() { return simulationTable.getSelectionModel(); } - + private void openDialog(boolean plotMode, final Simulation... sims) { SimulationEditDialog d = new SimulationEditDialog(SwingUtilities.getWindowAncestor(this), document, sims); if (plotMode) { @@ -575,7 +637,7 @@ public class SimulationPanel extends JPanel { d.setVisible(true); fireMaintainSelection(); } - + private void openDialog(final Simulation sim) { boolean plotMode = false; if (sim.hasSimulationData() && (sim.getStatus() == Status.UPTODATE || sim.getStatus() == Status.EXTERNAL)) { @@ -583,7 +645,7 @@ public class SimulationPanel extends JPanel { } openDialog(plotMode, sim); } - + private void fireMaintainSelection() { int[] selection = simulationTable.getSelectedRows(); simulationTableModel.fireTableDataChanged(); @@ -593,24 +655,24 @@ public class SimulationPanel extends JPanel { simulationTable.addRowSelectionInterval(row, row); } } - + private enum SimulationTableColumns { - + } - + private class JLabelRenderer extends DefaultTableCellRenderer { - + @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { - + if (row < 0 || row >= document.getSimulationCount()) return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); row = table.getRowSorter().convertRowIndexToModel(row); - + // A JLabel is self-contained and has set its own tool tip if (value instanceof JLabel) { JLabel label = (JLabel) value; @@ -619,66 +681,66 @@ public class SimulationPanel extends JPanel { else label.setBackground(table.getBackground()); label.setOpaque(true); - + label.setToolTipText(getSimulationToolTip(document.getSimulation(row))); return label; } - + Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); - + if (component instanceof JComponent) { ((JComponent) component).setToolTipText(getSimulationToolTip( document.getSimulation(row))); } return component; } - + private String getSimulationToolTip(Simulation sim) { String tip; FlightData data = sim.getSimulatedData(); - + tip = "" + sim.getName() + "
"; switch (sim.getStatus()) { case UPTODATE: tip += trans.get("simpanel.ttip.uptodate") + "
"; break; - + case LOADED: tip += trans.get("simpanel.ttip.loaded") + "
"; break; - + case OUTDATED: tip += trans.get("simpanel.ttip.outdated") + "
"; break; - + case EXTERNAL: tip += trans.get("simpanel.ttip.external") + "
"; return tip; - + case NOT_SIMULATED: tip += trans.get("simpanel.ttip.notSimulated"); return tip; } - + if (data == null) { tip += trans.get("simpanel.ttip.noData"); return tip; } WarningSet warnings = data.getWarningSet(); - + if (warnings.isEmpty()) { tip += trans.get("simpanel.ttip.noWarnings"); return tip; } - + tip += trans.get("simpanel.ttip.warnings"); for (Warning w : warnings) { tip += "
" + w.toString(); } - + return tip; } - + } } diff --git a/swing/src/net/sf/openrocket/gui/main/componenttree/ComponentTreeModel.java b/swing/src/net/sf/openrocket/gui/main/componenttree/ComponentTreeModel.java index fe141f612..c80b73561 100644 --- a/swing/src/net/sf/openrocket/gui/main/componenttree/ComponentTreeModel.java +++ b/swing/src/net/sf/openrocket/gui/main/componenttree/ComponentTreeModel.java @@ -138,7 +138,7 @@ public class ComponentTreeModel implements TreeModel, ComponentChangeListener { @Override public void componentChanged(ComponentChangeEvent e) { - if (e.isTreeChange() || e.isUndoChange()) { + if (e.isTreeChange() || e.isUndoChange() || e.isMassChange()) { // Tree must be fully updated also in case of an undo change fireTreeStructureChanged(e.getSource()); if (e.isTreeChange() && e.isUndoChange()) { diff --git a/swing/src/net/sf/openrocket/gui/main/componenttree/ComponentTreeRenderer.java b/swing/src/net/sf/openrocket/gui/main/componenttree/ComponentTreeRenderer.java index de9982b58..2539cc4cb 100644 --- a/swing/src/net/sf/openrocket/gui/main/componenttree/ComponentTreeRenderer.java +++ b/swing/src/net/sf/openrocket/gui/main/componenttree/ComponentTreeRenderer.java @@ -3,17 +3,26 @@ package net.sf.openrocket.gui.main.componenttree; import java.awt.Component; +import java.awt.FlowLayout; +import javax.swing.JLabel; +import javax.swing.JPanel; import javax.swing.JTree; +import javax.swing.UIManager; import javax.swing.tree.DefaultTreeCellRenderer; import net.sf.openrocket.gui.main.ComponentIcons; +import net.sf.openrocket.gui.util.Icons; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.TextUtil; public class ComponentTreeRenderer extends DefaultTreeCellRenderer { + private static final Translator trans = Application.getTranslator(); + @Override public Component getTreeCellRendererComponent( JTree tree, @@ -24,26 +33,59 @@ public class ComponentTreeRenderer extends DefaultTreeCellRenderer { int row, boolean hasFocus1) { - super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus1); + Component comp = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus1); // Set icon setIcon(ComponentIcons.getSmallIcon(value.getClass())); - // Set tooltip RocketComponent c = (RocketComponent) value; + + if ( c.isMassOverridden() || c.isCGOverridden()) { + JPanel p = new JPanel(); + p.setLayout( new FlowLayout( FlowLayout.LEFT, 1,1) ); + p.setBackground( UIManager.getColor("Tree.textBackground")); + p.setForeground( UIManager.getColor("Tree.textForeground")); + p.add(comp/*, BorderLayout.WEST*/); + if ( c.isMassOverridden() ) { + p.add( new JLabel( Icons.MASS_OVERRIDE ) ); + } + if ( c.isCGOverridden() ) { + p.add( new JLabel(Icons.CG_OVERRIDE) ); + } + p.setToolTipText(getToolTip(c)); + comp = p; + } + + // Set tooltip this.setToolTipText(getToolTip(c)); - return this; + return comp; } - private String getToolTip(RocketComponent c) { + private static String getToolTip(RocketComponent c) { StringBuilder sb = new StringBuilder(); sb.append(""); sb.append("").append(c.getName()).append(""); - if (c.isMassive()) { - sb.append(" (").append(UnitGroup.UNITS_MASS.toStringUnit(c.getMass())).append(")"); + if (c.isMassive() || c.isMassOverridden() ) { + sb.append(" (").append(UnitGroup.UNITS_MASS.toStringUnit(c.getMass())); + if(c.getChildCount()>0){ + sb.append(" of ").append(UnitGroup.UNITS_MASS.toStringUnit(c.getSectionMass())).append( " total"); + } + sb.append(")"); + } else { + if((c.getChildCount()>0) && (c.getSectionMass()>0)){ + sb.append(" (").append(UnitGroup.UNITS_MASS.toStringUnit(c.getSectionMass())).append( " total)"); + } + } + + if ( c.isMassOverridden() ) { + sb.append(" ").append(trans.get("ComponentTree.ttip.massoverride")); + } + + if ( c.isCGOverridden() ) { + sb.append(" ").append(trans.get("ComponentTree.ttip.cgoverride")); } String comment = c.getComment().trim(); diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java index 3ef4fe226..7360b41e5 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java @@ -148,7 +148,7 @@ public abstract class FlightConfigurablePanel= table.getRowCount() || col >= table.getColumnCount() ) { return null; } Object tableValue = table.getModel().getValueAt(row, col); diff --git a/swing/src/net/sf/openrocket/gui/print/DesignReport.java b/swing/src/net/sf/openrocket/gui/print/DesignReport.java index 776a79379..550381a1c 100644 --- a/swing/src/net/sf/openrocket/gui/print/DesignReport.java +++ b/swing/src/net/sf/openrocket/gui/print/DesignReport.java @@ -125,6 +125,7 @@ public class DesignReport { private static final String SIZE = "Size"; private static final String ALTITUDE = "Altitude"; private static final String FLIGHT_TIME = "Flight Time"; + private static final String OPTIMUM_DELAY = "Optimum Delay"; private static final String TIME_TO_APOGEE = "Time to Apogee"; private static final String VELOCITY_OFF_PAD = "Velocity off Pad"; private static final String MAX_VELOCITY = "Max Velocity"; @@ -468,6 +469,9 @@ public class DesignReport { labelTable.addCell(ITextHelper.createCell(TIME_TO_APOGEE, 2, 2)); labelTable.addCell(ITextHelper.createCell(flightTimeUnit.toStringUnit(flight.getTimeToApogee()), 2, 2)); + labelTable.addCell(ITextHelper.createCell(OPTIMUM_DELAY, 2, 2)); + labelTable.addCell(ITextHelper.createCell(flightTimeUnit.toStringUnit(flight.getBranch(0).getOptimumDelay()), 2, 2)); + labelTable.addCell(ITextHelper.createCell(VELOCITY_OFF_PAD, 2, 2)); labelTable.addCell(ITextHelper.createCell(velocityUnit.toStringUnit(flight.getLaunchRodVelocity()), 2, 2)); diff --git a/swing/src/net/sf/openrocket/gui/rocketfigure/MassComponentShapes.java b/swing/src/net/sf/openrocket/gui/rocketfigure/MassComponentShapes.java new file mode 100644 index 000000000..20730e33d --- /dev/null +++ b/swing/src/net/sf/openrocket/gui/rocketfigure/MassComponentShapes.java @@ -0,0 +1,237 @@ +package net.sf.openrocket.gui.rocketfigure; + +import java.awt.Shape; +import java.awt.geom.Arc2D; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Path2D; +import java.awt.geom.Rectangle2D; +import java.awt.geom.RoundRectangle2D; +import java.util.Random; + +import net.sf.openrocket.util.Coordinate; +import net.sf.openrocket.util.MathUtil; +import net.sf.openrocket.util.Transformation; + + +public class MassComponentShapes extends RocketComponentShapes { + + public static Shape[] getShapesSide(net.sf.openrocket.rocketcomponent.RocketComponent component, + Transformation transformation) { + net.sf.openrocket.rocketcomponent.MassObject tube = (net.sf.openrocket.rocketcomponent.MassObject)component; + + net.sf.openrocket.rocketcomponent.MassComponent.MassComponentType type = ((net.sf.openrocket.rocketcomponent.MassComponent)component).getMassComponentType(); + + double length = tube.getLength(); + double radius = tube.getRadius(); + double arc = Math.min(length, 2*radius) * 0.7; + Coordinate[] start = transformation.transform(tube.toAbsolute(new Coordinate(0,0,0))); + + Shape[] s = new Shape[start.length]; + for (int i=0; i < start.length; i++) { + s[i] = new RoundRectangle2D.Double(start[i].x*S,(start[i].y-radius)*S, + length*S,2*radius*S,arc*S,arc*S); + } + + switch (type) { + case ALTIMETER: + s = addAltimeterSymbol(s); + break; + case FLIGHTCOMPUTER: + s = addFlightComputerSymbol(s); + break; + case DEPLOYMENTCHARGE: + s = addDeploymentChargeSymbol(s); + break; + case RECOVERYHARDWARE: + s = addRecoveryHardwareSymbol(s); + break; + case PAYLOAD: + s = addPayloadSymbol(s); + break; + case TRACKER: + s = addTrackerSymbol(s); + break; + case BATTERY: + s = addBatterySymbol(s); + break; + case MASSCOMPONENT: + } + + return s; + } + + + public static Shape[] getShapesBack(net.sf.openrocket.rocketcomponent.RocketComponent component, + Transformation transformation) { + net.sf.openrocket.rocketcomponent.MassObject tube = (net.sf.openrocket.rocketcomponent.MassObject)component; + + double or = tube.getRadius(); + + Coordinate[] start = transformation.transform(tube.toAbsolute(new Coordinate(0,0,0))); + + Shape[] s = new Shape[start.length]; + for (int i=0; i < start.length; i++) { + s[i] = new Ellipse2D.Double((start[i].z-or)*S,(start[i].y-or)*S,2*or*S,2*or*S); + } + return s; + } + + private static Shape[] addAltimeterSymbol(Shape[] baseShape){ + int offset=baseShape.length; + Shape[] newShape = new Shape[baseShape.length+1]; + System.arraycopy(baseShape, 0, newShape, 0, baseShape.length); + + Rectangle2D bounds = baseShape[0].getBounds2D(); + Double vMargin = bounds.getHeight()/8.0; + Double hMargin = bounds.getWidth()/2.25; + Double halfArrowWidth=MathUtil.min(hMargin, vMargin); + + Path2D.Double symbol = new Path2D.Double(); + symbol.moveTo(bounds.getCenterX(), bounds.getY()+vMargin); + symbol.lineTo(bounds.getCenterX(), bounds.getY()+7*vMargin); + symbol.lineTo(bounds.getCenterX()-halfArrowWidth, bounds.getY()+6*vMargin); + symbol.lineTo(bounds.getCenterX()+halfArrowWidth, bounds.getY()+6*vMargin); + symbol.lineTo(bounds.getCenterX(), bounds.getY()+7*vMargin); + + newShape[offset]= symbol; + return newShape; + } + + private static Shape[] addFlightComputerSymbol(Shape[] baseShape){ + int pins=12; + int offset=baseShape.length; + Shape[] newShape = new Shape[baseShape.length+1+pins]; + System.arraycopy(baseShape, 0, newShape, 0, baseShape.length); + + Rectangle2D bounds = baseShape[0].getBounds2D(); + + + Double vMargin = bounds.getHeight()/8.0; + Double hMargin = bounds.getWidth()/6.0; + Double pinHeight=vMargin; + Double pinSpacing=(bounds.getWidth()-2*hMargin)/(pins+1); + Double pinWidth=pinSpacing/2; + newShape[offset]=new Rectangle2D.Double(bounds.getX()+hMargin, bounds.getY()+2*vMargin, 4*hMargin,4*vMargin); + for(int i=0; i<(pins/2); i++){ + newShape[i+1+offset]=new Rectangle2D.Double(bounds.getX()+hMargin+2*i*pinSpacing+pinSpacing, bounds.getY()+6*vMargin, pinWidth, pinHeight); + newShape[i+pins/2+1+offset]=new Rectangle2D.Double(bounds.getX()+hMargin+2*i*pinSpacing+pinSpacing, bounds.getY()+vMargin, pinWidth, pinHeight); + } + //newShape[1]=symbol; + return newShape; + } + + private static Shape[] addTrackerSymbol(Shape[] baseShape){ + Shape[] newShape = new Shape[baseShape.length+7]; + int offset=baseShape.length; + System.arraycopy(baseShape, 0, newShape, 0, baseShape.length); + + Rectangle2D bounds = baseShape[0].getBounds2D(); + Double vMargin=bounds.getWidth()/10; + + Double xCenter=bounds.getCenterX(); + Double yCenter=bounds.getCenterY(); + + Double arcExtent = 60.0; + Double arcStart1 = 360-arcExtent/2; + Double arcStart2 = 180-arcExtent/2; + + if(3*vMargin*Math.sin(Math.toRadians(arcExtent/2))>0.9*bounds.getHeight()/2){ + vMargin=0.9*bounds.getHeight()/(6*Math.sin(Math.toRadians(arcExtent/2))); + } + newShape[offset]= new Ellipse2D.Double(xCenter-vMargin/2, yCenter-vMargin/2,vMargin,vMargin); + for(int i=1; i<4; i++){ + newShape[i+offset]= new Arc2D.Double(xCenter-i*vMargin, yCenter-i*vMargin, 2*i*vMargin, 2*i*vMargin, arcStart1,arcExtent,Arc2D.OPEN); + newShape[i+3+offset]= new Arc2D.Double(xCenter-i*vMargin, yCenter-i*vMargin, 2*i*vMargin, 2*i*vMargin, arcStart2,arcExtent,Arc2D.OPEN); + } + return newShape; + } + private static Shape[] addPayloadSymbol(Shape[] baseShape){ + Shape[] newShape = new Shape[baseShape.length+1]; + int offset=baseShape.length; + System.arraycopy(baseShape, 0, newShape, 0, baseShape.length); + + Rectangle2D bounds = baseShape[0].getBounds2D(); + Double vMargin=bounds.getHeight()/10; + Double hMargin=bounds.getWidth()/10; + + + newShape[offset]= new Ellipse2D.Double(bounds.getX()+hMargin, bounds.getY()+vMargin,bounds.getWidth()-2*hMargin,bounds.getHeight()-2*vMargin); + + return newShape; + } + private static Shape[] addRecoveryHardwareSymbol(Shape[] baseShape){ + Shape[] newShape = new Shape[baseShape.length+3]; + int offset=baseShape.length; + System.arraycopy(baseShape, 0, newShape, 0, baseShape.length); + Rectangle2D bounds = baseShape[0].getBounds2D(); + Double vMargin=bounds.getHeight()/8; + Double hMargin=bounds.getWidth()/8; + + + newShape[offset]= new RoundRectangle2D.Double(bounds.getX()+hMargin, bounds.getY()+vMargin,bounds.getWidth()-2*hMargin,bounds.getHeight()-2*vMargin, 15, 5); + newShape[offset+1]= new RoundRectangle2D.Double(bounds.getX()+hMargin+vMargin, bounds.getY()+2*vMargin,bounds.getWidth()-2*hMargin-2*vMargin,bounds.getHeight()-4*vMargin, 15, 5); + newShape[offset+2]= new Rectangle2D.Double(bounds.getCenterX()-1.5*hMargin, bounds.getCenterY()+1.5*vMargin, 3*hMargin, 2*vMargin); + return newShape; + } + + private static Shape[] addDeploymentChargeSymbol(Shape[] baseShape){ + int rays=15; + Shape[] newShape = new Shape[baseShape.length+2]; + int offset=baseShape.length; + System.arraycopy(baseShape, 0, newShape, 0, baseShape.length); + + Rectangle2D bounds = baseShape[0].getBounds2D(); + + Double vMargin=bounds.getWidth()/10; + Double xCenter=bounds.getCenterX(); + Double yCenter=bounds.getCenterY(); + Random rand = new Random(); + + newShape[offset]= new Arc2D.Double(xCenter-2*vMargin, yCenter-2*vMargin,4*vMargin,4*vMargin, 55.0, 180.0, Arc2D.CHORD); + + Path2D.Double explosion = new Path2D.Double(); + newShape[offset+1]=explosion; + + for(int i=1; i0.75*bounds.getWidth()) + chuteDiameter=0.75*bounds.getWidth(); + + newShape[offset]=new Arc2D.Double(bounds.getCenterX()-chuteDiameter/2, bounds.getCenterY()-chuteDiameter/4, + chuteDiameter,chuteDiameter,180.0,180.0,Arc2D.PIE); + Path2D.Double shrouds = new Path2D.Double(); + shrouds.moveTo(bounds.getCenterX()-chuteDiameter/2, bounds.getCenterY()+chuteDiameter/4); + shrouds.lineTo(bounds.getCenterX(), bounds.getCenterY()-3*chuteDiameter/4); + shrouds.lineTo(bounds.getCenterX()+chuteDiameter/2, bounds.getCenterY()+chuteDiameter/4); + + shrouds.moveTo(bounds.getCenterX()-chuteDiameter/4, bounds.getCenterY()+chuteDiameter/4); + shrouds.lineTo(bounds.getCenterX(), bounds.getCenterY()-3*chuteDiameter/4); + shrouds.lineTo(bounds.getCenterX()+chuteDiameter/4, bounds.getCenterY()+chuteDiameter/4); + + shrouds.moveTo(bounds.getCenterX(), bounds.getCenterY()+chuteDiameter/4); + shrouds.lineTo(bounds.getCenterX(), bounds.getCenterY()-3*chuteDiameter/4); + + newShape[offset+1]=shrouds; + return newShape; + } +} diff --git a/swing/src/net/sf/openrocket/gui/rocketfigure/ShockCordShapes.java b/swing/src/net/sf/openrocket/gui/rocketfigure/ShockCordShapes.java new file mode 100644 index 000000000..79ffdb89c --- /dev/null +++ b/swing/src/net/sf/openrocket/gui/rocketfigure/ShockCordShapes.java @@ -0,0 +1,71 @@ +package net.sf.openrocket.gui.rocketfigure; + +import net.sf.openrocket.util.Coordinate; +import net.sf.openrocket.util.Transformation; + +import java.awt.Shape; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Path2D; +import java.awt.geom.Rectangle2D; +import java.awt.geom.RoundRectangle2D; + +public class ShockCordShapes extends RocketComponentShapes { + + public static Shape[] getShapesSide(net.sf.openrocket.rocketcomponent.RocketComponent component, + Transformation transformation) { + net.sf.openrocket.rocketcomponent.MassObject tube = (net.sf.openrocket.rocketcomponent.MassObject)component; + + double length = tube.getLength(); + double radius = tube.getRadius(); + double arc = Math.min(length, 2*radius) * 0.7; + Coordinate[] start = transformation.transform(tube.toAbsolute(new Coordinate(0,0,0))); + + Shape[] s = new Shape[start.length]; + for (int i=0; i < start.length; i++) { + s[i] = new RoundRectangle2D.Double(start[i].x*S,(start[i].y-radius)*S, + length*S,2*radius*S,arc*S,arc*S); + } + return addSymbol(s); + } + + + public static Shape[] getShapesBack(net.sf.openrocket.rocketcomponent.RocketComponent component, + Transformation transformation) { + net.sf.openrocket.rocketcomponent.MassObject tube = (net.sf.openrocket.rocketcomponent.MassObject)component; + + double or = tube.getRadius(); + + Coordinate[] start = transformation.transform(tube.toAbsolute(new Coordinate(0,0,0))); + + Shape[] s = new Shape[start.length]; + for (int i=0; i < start.length; i++) { + s[i] = new Ellipse2D.Double((start[i].z-or)*S,(start[i].y-or)*S,2*or*S,2*or*S); + } + return s; + } + + private static Shape[] addSymbol(Shape[] baseShape){ + int offset=baseShape.length; + Shape[] newShape = new Shape[baseShape.length+1]; + System.arraycopy(baseShape, 0, newShape, 0, baseShape.length); + + Rectangle2D bounds = baseShape[0].getBounds2D(); + + Double left=bounds.getX()+bounds.getWidth()/4; + Double cordWidth=bounds.getWidth()/2; + Double top=bounds.getCenterY(); + Double flutterHeight=bounds.getHeight()/4; + Double flutterWidth=cordWidth/4; + + Path2D.Double streamer= new Path2D.Double(); + streamer.moveTo(left, bounds.getCenterY()); + + for(int i=0; i<4; i++){ + streamer.curveTo(left+(4*i+1)*flutterWidth/4, top+flutterHeight, left+(4*i+1)*flutterWidth/4, top+flutterHeight, left+(4*i+2)*flutterWidth/4, top); + streamer.curveTo(left+(4*i+3)*flutterWidth/4, top-flutterHeight, left+(4*i+3)*flutterWidth/4, top-flutterHeight, left+(4*i+4)*flutterWidth/4, top); + } + + newShape[offset]=streamer; + return newShape; + } +} diff --git a/swing/src/net/sf/openrocket/gui/rocketfigure/StreamerShapes.java b/swing/src/net/sf/openrocket/gui/rocketfigure/StreamerShapes.java new file mode 100644 index 000000000..7a5f41bd9 --- /dev/null +++ b/swing/src/net/sf/openrocket/gui/rocketfigure/StreamerShapes.java @@ -0,0 +1,79 @@ +package net.sf.openrocket.gui.rocketfigure; + +import net.sf.openrocket.util.Coordinate; +import net.sf.openrocket.util.Transformation; + +import java.awt.Shape; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Path2D; +import java.awt.geom.Rectangle2D; +import java.awt.geom.RoundRectangle2D; + +public class StreamerShapes extends RocketComponentShapes { + + public static Shape[] getShapesSide(net.sf.openrocket.rocketcomponent.RocketComponent component, + Transformation transformation) { + net.sf.openrocket.rocketcomponent.MassObject tube = (net.sf.openrocket.rocketcomponent.MassObject)component; + + double length = tube.getLength(); + double radius = tube.getRadius(); + double arc = Math.min(length, 2*radius) * 0.7; + Coordinate[] start = transformation.transform(tube.toAbsolute(new Coordinate(0,0,0))); + + Shape[] s = new Shape[start.length]; + for (int i=0; i < start.length; i++) { + s[i] = new RoundRectangle2D.Double(start[i].x*S,(start[i].y-radius)*S, + length*S,2*radius*S,arc*S,arc*S); + } + return addSymbol(s); + } + + + public static Shape[] getShapesBack(net.sf.openrocket.rocketcomponent.RocketComponent component, + Transformation transformation) { + net.sf.openrocket.rocketcomponent.MassObject tube = (net.sf.openrocket.rocketcomponent.MassObject)component; + + double or = tube.getRadius(); + + Coordinate[] start = transformation.transform(tube.toAbsolute(new Coordinate(0,0,0))); + + Shape[] s = new Shape[start.length]; + for (int i=0; i < start.length; i++) { + s[i] = new Ellipse2D.Double((start[i].z-or)*S,(start[i].y-or)*S,2*or*S,2*or*S); + } + return s; + } + + private static Shape[] addSymbol(Shape[] baseShape){ + int offset=baseShape.length; + Shape[] newShape = new Shape[baseShape.length+1]; + System.arraycopy(baseShape, 0, newShape, 0, baseShape.length); + + Rectangle2D bounds = baseShape[0].getBounds2D(); + + Double left=bounds.getX()+bounds.getWidth()/4; + Double streamerWidth=bounds.getWidth()/2; + Double streamerHeight=bounds.getHeight()/2; + Double top=bounds.getCenterY()+streamerHeight/2; + Double bottom=bounds.getCenterY()-streamerHeight/2; + Double flutterHeight=bounds.getHeight()/16; + Double flutterWidth=streamerWidth/4; + + Path2D.Double streamer= new Path2D.Double(); + streamer.moveTo(left, bottom); //bottom left + streamer.lineTo(left, top); //upper left + for(int i=0; i<4; i++){ + streamer.curveTo(left+(4*i+1)*flutterWidth/4, top+flutterHeight, left+(4*i+1)*flutterWidth/4, top+flutterHeight, left+(4*i+2)*flutterWidth/4, top); + streamer.curveTo(left+(4*i+3)*flutterWidth/4, top-flutterHeight, left+(4*i+3)*flutterWidth/4, top-flutterHeight, left+(4*i+4)*flutterWidth/4, top); + } + streamer.lineTo(left+streamerWidth, bottom); + streamer.moveTo(left, bottom); //bottom left + for(int i=0; i<4; i++){ + streamer.curveTo(left+(4*i+1)*flutterWidth/4, bottom+flutterHeight, left+(4*i+1)*flutterWidth/4, bottom+flutterHeight, left+(4*i+2)*flutterWidth/4, bottom); + streamer.curveTo(left+(4*i+3)*flutterWidth/4, bottom-flutterHeight, left+(4*i+3)*flutterWidth/4, bottom-flutterHeight, left+(4*i+4)*flutterWidth/4, bottom); + } + + newShape[offset]=streamer; + return newShape; + } +} diff --git a/swing/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java b/swing/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java index c458b8e66..d011ea5ec 100644 --- a/swing/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java +++ b/swing/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java @@ -699,15 +699,17 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change } // Start calculation process - extraText.setCalculatingData(true); + if(((SwingPreferences) Application.getPreferences()).computeFlightInBackground()){ + extraText.setCalculatingData(true); + + Rocket duplicate = (Rocket) configuration.getRocket().copy(); + Simulation simulation = ((SwingPreferences) Application.getPreferences()).getBackgroundSimulation(duplicate); + simulation.getOptions().setMotorConfigurationID( + configuration.getFlightConfigurationID()); - Rocket duplicate = (Rocket) configuration.getRocket().copy(); - Simulation simulation = ((SwingPreferences) Application.getPreferences()).getBackgroundSimulation(duplicate); - simulation.getOptions().setMotorConfigurationID( - configuration.getFlightConfigurationID()); - - backgroundSimulationWorker = new BackgroundSimulationWorker(document, simulation); - backgroundSimulationExecutor.execute(backgroundSimulationWorker); + backgroundSimulationWorker = new BackgroundSimulationWorker(document, simulation); + backgroundSimulationExecutor.execute(backgroundSimulationWorker); + } } /** diff --git a/swing/src/net/sf/openrocket/gui/util/Icons.java b/swing/src/net/sf/openrocket/gui/util/Icons.java index 402dab84c..48f1ccf0e 100644 --- a/swing/src/net/sf/openrocket/gui/util/Icons.java +++ b/swing/src/net/sf/openrocket/gui/util/Icons.java @@ -31,6 +31,7 @@ public class Icons { static { HashMap map = new HashMap(); map.put(Simulation.Status.NOT_SIMULATED, loadImageIcon("pix/spheres/gray-16x16.png", "Not simulated")); + map.put(Simulation.Status.CANT_RUN, loadImageIcon("pix/spheres/yellow-16x16.png", "Can't run, no motors assigned.")); map.put(Simulation.Status.UPTODATE, loadImageIcon("pix/spheres/green-16x16.png", "Up to date")); map.put(Simulation.Status.LOADED, loadImageIcon("pix/spheres/yellow-16x16.png", "Loaded from file")); map.put(Simulation.Status.OUTDATED, loadImageIcon("pix/spheres/red-16x16.png", "Out-of-date")); @@ -85,6 +86,9 @@ public class Icons { public static final Icon NOT_FAVORITE = loadImageIcon("pix/icons/star_silver.png", "Not favorite"); public static final Icon FAVORITE = loadImageIcon("pix/icons/star_gold.png", "Favorite"); + public static final Icon CG_OVERRIDE = loadImageIcon("pix/icons/cg-override.png", "CG Override"); + public static final Icon MASS_OVERRIDE = loadImageIcon("pix/icons/mass-override.png", "Mass Override"); + static { log.debug("Icons loaded"); diff --git a/swing/src/net/sf/openrocket/gui/util/SwingPreferences.java b/swing/src/net/sf/openrocket/gui/util/SwingPreferences.java index 50ef74b16..499620c9b 100644 --- a/swing/src/net/sf/openrocket/gui/util/SwingPreferences.java +++ b/swing/src/net/sf/openrocket/gui/util/SwingPreferences.java @@ -46,6 +46,7 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences { list.add(new Locale(lang)); } list.add(new Locale("zh","CN")); + list.add(new Locale("uk","UA")); SUPPORTED_LOCALES = Collections.unmodifiableList(list); } @@ -417,7 +418,11 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences { public boolean computeFlightInBackground() { return PREFNODE.getBoolean("backgroundFlight", true); } - + + public void setComputeFlightInBackground(boolean b) { + PREFNODE.putBoolean("backgroundFlight", b); + } + public Simulation getBackgroundSimulation(Rocket rocket) { Simulation s = new Simulation(rocket); SimulationOptions cond = s.getOptions(); diff --git a/swing/src/net/sf/openrocket/startup/Startup.java b/swing/src/net/sf/openrocket/startup/OpenRocket.java similarity index 98% rename from swing/src/net/sf/openrocket/startup/Startup.java rename to swing/src/net/sf/openrocket/startup/OpenRocket.java index 2bc9754fa..9fb917bbd 100644 --- a/swing/src/net/sf/openrocket/startup/Startup.java +++ b/swing/src/net/sf/openrocket/startup/OpenRocket.java @@ -23,7 +23,7 @@ import net.sf.openrocket.startup.jij.PluginClasspathProvider; * * @author Sampo Niskanen */ -public class Startup { +public class OpenRocket { private static final String STARTUP_CLASS = "net.sf.openrocket.startup.SwingStartup";