Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Kevin Ruland 2015-09-11 17:00:08 -05:00
commit 9493207e2b
56 changed files with 3763 additions and 398 deletions

Binary file not shown.

View File

@ -1,3 +1,5 @@
2015-03-28 Kevin Ruland
* Released version 15.03 See Release Notes for changes.
2014-11-02 Kevin Ruland 2014-11-02 Kevin Ruland
* Released version 14.11 See Release Notes for changes. * Released version 14.11 See Release Notes for changes.

View File

@ -1,3 +1,20 @@
OpenRocket 15.03 (2015-03-28):
------------------------------
OpenRocket now requires Java 1.7 for execution.
New Features:
* Experimental support for tube fins
* Updated thrustcurves
* Scriptable simulation extensions
* Fin fillet mass
* Better icons for different kinds of masses - altimeters, computers, etc.
* Configurable default mach number
* Improved preferences UI
Bug Fixes:
* Always use the correct filename extension when saving
OpenRocket 14.11 (2014-11-02): OpenRocket 14.11 (2014-11-02):
------------------------------ ------------------------------

View File

@ -47,6 +47,6 @@ The following file format versions exist:
1.6: Introduced with OpenRocket 13.04. Added component Appearances (decals & paint) 1.6: Introduced with OpenRocket 13.04. Added component Appearances (decals & paint)
Added configurable parameters to recovery devices, motor ignition and separation. Added configurable parameters to recovery devices, motor ignition and separation.
1.7: Introduced with OpenRocket 15.01. Added simulation extensions and related 1.7: Introduced with OpenRocket 15.03.
configuration. Added simulation extensions and related configuration.
Support for TubeFins.

View File

@ -0,0 +1,26 @@
; TODO: Length and weights taken from F72!!
; Based on
; http://www.aerotech-rocketry.com/customersite/resource_library/Instructions/MR-SU_Instructions/d-f_non-std_su_in_21002.pdf
; Made by Sampo Niskanen
F101T 24 124 5-10-15 0.0368 0.0742 AT
0.04 85.95
0.069 83.4
0.129 86.461
0.202 94.622
0.274 100.743
0.354 104.569
0.443 106.099
0.446 102.783
0.546 96.662
0.575 90.031
0.602 89.011
0.625 84.675
0.671 80.85
0.731 76.259
0.771 58.406
0.807 33.921
0.85 18.108
0.893 11.477
0.942 0.0

View File

@ -1,5 +1,5 @@
Rocket motor simulation data downloaded from ThrustCurve.org. Rocket motor simulation data downloaded from ThrustCurve.org.
This ZIP file contains 1645 simulator data files. This ZIP file contains 1656 simulator data files.
For more info, please see http://www.thrustcurve.org/ For more info, please see http://www.thrustcurve.org/
AMW_I195.eng AMW_I195.eng
@ -7434,14 +7434,14 @@ Cesaroni_M1590.eng
Designation: 7545M1590-P Designation: 7545M1590-P
Data Format: RASP Data Format: RASP
Data Source: cert Data Source: cert
Contributor: Andre Choquette Contributor: Mark Koelsch
Cesaroni_M1590.rse Cesaroni_M1590.rse
Manufacturer: Cesaroni Technology Manufacturer: Cesaroni Technology
Designation: 7545M1590-P Designation: 7545M1590-P
Data Format: RockSim Data Format: RockSim
Data Source: cert Data Source: cert
Contributor: Andre Choquette Contributor: Mark Koelsch
Cesaroni_M1670.eng Cesaroni_M1670.eng
Manufacturer: Cesaroni Technology Manufacturer: Cesaroni Technology
@ -9394,7 +9394,7 @@ Estes_B4.eng
Designation: B4 Designation: B4
Data Format: RASP Data Format: RASP
Data Source: user Data Source: user
Contributor: John Coker Contributor: Nicholas Domansky
Estes_B4.rse Estes_B4.rse
Manufacturer: Estes Industries Manufacturer: Estes Industries
@ -9403,6 +9403,13 @@ Estes_B4.rse
Data Source: user Data Source: user
Contributor: John Coker Contributor: John Coker
Estes_B4_1.eng
Manufacturer: Estes Industries
Designation: B4
Data Format: RASP
Data Source: user
Contributor: John Coker
Estes_B6.eng Estes_B6.eng
Manufacturer: Estes Industries Manufacturer: Estes Industries
Designation: B6 Designation: B6
@ -9450,7 +9457,7 @@ Estes_C6.eng
Designation: C6 Designation: C6
Data Format: RASP Data Format: RASP
Data Source: user Data Source: user
Contributor: John Coker Contributor: Nicholas Domansky
Estes_C6.rse Estes_C6.rse
Manufacturer: Estes Industries Manufacturer: Estes Industries
@ -9459,6 +9466,13 @@ Estes_C6.rse
Data Source: user Data Source: user
Contributor: John Coker Contributor: John Coker
Estes_C6_1.eng
Manufacturer: Estes Industries
Designation: C6
Data Format: RASP
Data Source: user
Contributor: John Coker
Estes_D11.eng Estes_D11.eng
Manufacturer: Estes Industries Manufacturer: Estes Industries
Designation: D11 Designation: D11
@ -9732,6 +9746,13 @@ GR_L1065.eng
Data Source: mfr Data Source: mfr
Contributor: John Coker Contributor: John Coker
GR_L1112.eng
Manufacturer: Gorilla Rocket Motors
Designation: L1112BT
Data Format: RASP
Data Source: cert
Contributor: Mark Koelsch
GR_L1150.rse GR_L1150.rse
Manufacturer: Gorilla Rocket Motors Manufacturer: Gorilla Rocket Motors
Designation: L1150WC Designation: L1150WC
@ -9802,6 +9823,13 @@ GR_M1665.eng
Data Source: mfr Data Source: mfr
Contributor: John Coker Contributor: John Coker
GR_M1952.eng
Manufacturer: Gorilla Rocket Motors
Designation: M1952BT
Data Format: RASP
Data Source: cert
Contributor: Mark Koelsch
GR_O2700.eng GR_O2700.eng
Manufacturer: Gorilla Rocket Motors Manufacturer: Gorilla Rocket Motors
Designation: O2700BL Designation: O2700BL
@ -10635,6 +10663,13 @@ Loki_J1000.rse
Data Source: mfr Data Source: mfr
Contributor: Mark Koelsch Contributor: Mark Koelsch
Loki_J1026.eng
Manufacturer: Loki Research
Designation: J1026 CT
Data Format: RASP
Data Source: cert
Contributor: Mark Koelsch
Loki_J175.eng Loki_J175.eng
Manufacturer: Loki Research Manufacturer: Loki Research
Designation: J175-LW Designation: J175-LW
@ -10754,6 +10789,13 @@ Loki_J820.rse
Data Source: user Data Source: user
Contributor: John Coker Contributor: John Coker
Loki_K1127.eng
Manufacturer: Loki Research
Designation: K1127LB
Data Format: RASP
Data Source: cert
Contributor: Mark Koelsch
Loki_K250.eng Loki_K250.eng
Manufacturer: Loki Research Manufacturer: Loki Research
Designation: K250-LW Designation: K250-LW
@ -10782,6 +10824,13 @@ Loki_K350.rse
Data Source: user Data Source: user
Contributor: John Coker Contributor: John Coker
Loki_K527.eng
Manufacturer: Loki Research
Designation: K527LR
Data Format: RASP
Data Source: cert
Contributor: Mark Koelsch
Loki_K690.eng Loki_K690.eng
Manufacturer: Loki Research Manufacturer: Loki Research
Designation: K690-SF Designation: K690-SF
@ -10852,6 +10901,13 @@ Loki_L780.eng
Data Source: mfr Data Source: mfr
Contributor: John Coker Contributor: John Coker
Loki_L840.eng
Manufacturer: Loki Research
Designation: L840CT
Data Format: RASP
Data Source: cert
Contributor: Mark Koelsch
Loki_L930.eng Loki_L930.eng
Manufacturer: Loki Research Manufacturer: Loki Research
Designation: L930-LW Designation: L930-LW
@ -10873,6 +10929,13 @@ Loki_M1200.eng
Data Source: mfr Data Source: mfr
Contributor: John Coker Contributor: John Coker
Loki_M1650.eng
Manufacturer: Loki Research
Designation: M1650LC
Data Format: RASP
Data Source: cert
Contributor: Mark Koelsch
Loki_M1882.eng Loki_M1882.eng
Manufacturer: Loki Research Manufacturer: Loki Research
Designation: M1882-LW Designation: M1882-LW
@ -10887,6 +10950,13 @@ Loki_M1882.rse
Data Source: user Data Source: user
Contributor: John Coker Contributor: John Coker
Loki_M1969.eng
Manufacturer: Loki Research
Designation: M1969SF
Data Format: RASP
Data Source: cert
Contributor: Mark Koelsch
Loki_M2550.eng Loki_M2550.eng
Manufacturer: Loki Research Manufacturer: Loki Research
Designation: M2550-LB Designation: M2550-LB
@ -10915,6 +10985,13 @@ Loki_M3000.rse
Data Source: mfr Data Source: mfr
Contributor: Mark Koelsch Contributor: Mark Koelsch
Loki_M3464.eng
Manufacturer: Loki Research
Designation: M3464LB
Data Format: RASP
Data Source: cert
Contributor: Mark Koelsch
Loki_M900.rse Loki_M900.rse
Manufacturer: Loki Research Manufacturer: Loki Research
Designation: M900-LR Designation: M900-LR

View File

@ -1,41 +1,19 @@
; G25W-10A 29 152.4 10 0.097 0.17 AT
;Aerotech G25 RASP.ENG file made from NAR published data 0.01 38.046
;File produced July 4, 2000 0.029 21.768
;The total impulse, peak thrust, average thrust and burn time are 0.11 30.475
;the same as the averaged static test data on the NAR web site in 0.239 35.775
;the certification file. The curve drawn with these data points is as 0.496 40.696
;close to the certification curve as can be with such a limited 0.568 42.116
;number of points (32) allowed with wRASP up to v1.6. 0.592 45.429
G25 29 124 5-10-15 0.0625 0.1197 AeroTech 0.749 46.186
0.035 30.499 0.997 45.713
0.047 36.712 1.255 44.198
0.059 41.18 1.498 39.939
0.13 40.669 1.999 31.421
0.177 38.969 2.501 23.093
0.295 38.969 3.006 14.196
0.343 40.947 3.503 7.288
0.413 40.38 3.999 4.07
0.437 38.69 4.371 1.988
0.484 39.824 4.414 0.0
0.532 37.845
0.65 37.557
0.721 38.969
0.803 38.69
0.85 37.279
0.98 39.535
1.063 36.434
1.098 38.124
1.252 37.845
1.37 37.279
1.583 37
1.819 35.3
1.984 33.61
2.185 31.344
2.315 28.809
2.622 24.286
3.024 18.917
3.39 13.838
3.839 7.624
4.323 4.518
4.783 2.541
5.3 0

View File

@ -1,19 +1,41 @@
G25W-10A 29 152.4 10 0.097 0.17 AT ;
0.01 38.046 ;Aerotech G25 RASP.ENG file made from NAR published data
0.029 21.768 ;File produced July 4, 2000
0.11 30.475 ;The total impulse, peak thrust, average thrust and burn time are
0.239 35.775 ;the same as the averaged static test data on the NAR web site in
0.496 40.696 ;the certification file. The curve drawn with these data points is as
0.568 42.116 ;close to the certification curve as can be with such a limited
0.592 45.429 ;number of points (32) allowed with wRASP up to v1.6.
0.749 46.186 G25 29 124 5-10-15 0.0625 0.1197 AeroTech
0.997 45.713 0.035 30.499
1.255 44.198 0.047 36.712
1.498 39.939 0.059 41.18
1.999 31.421 0.13 40.669
2.501 23.093 0.177 38.969
3.006 14.196 0.295 38.969
3.503 7.288 0.343 40.947
3.999 4.07 0.413 40.38
4.371 1.988 0.437 38.69
4.414 0.0 0.484 39.824
0.532 37.845
0.65 37.557
0.721 38.969
0.803 38.69
0.85 37.279
0.98 39.535
1.063 36.434
1.098 38.124
1.252 37.845
1.37 37.279
1.583 37
1.819 35.3
1.984 33.61
2.185 31.344
2.315 28.809
2.622 24.286
3.024 18.917
3.39 13.838
3.839 7.624
4.323 4.518
4.783 2.541
5.3 0

View File

@ -1,30 +1,13 @@
; AeroTech H45W ; From AT DMS announcement May 2014.
; converted from TMT test stand data 1998 (www.tripoli.org) H45 38 202.7 10 0.18 0.364 AT
; provided by ThrustCurve.org (www.thrustcurve.org) 0.04 84.004
H45W 38 194 0 0.193984 0.294784 AT 0.854 86.004
0.141 62.554 1.377 84.804
0.424 63.504 2.046 79.204
0.707 65.913 2.69 66.003
0.992 68.370 3.286 51.603
1.276 69.315 4.414 28.401
1.559 68.523 5.042 16.001
1.843 67.231 5.429 9.2
2.127 65.705 6.113 6.4
2.411 63.154 6.186 0.0
2.695 59.210
2.979 55.600
3.264 50.790
3.547 45.237
3.830 39.835
4.115 34.562
4.399 29.213
4.682 24.720
4.967 20.616
5.251 17.475
5.534 14.498
5.818 12.697
6.102 10.792
6.386 9.229
6.670 7.754
6.954 6.075
7.239 0.000

View File

@ -1,13 +1,30 @@
; From AT DMS announcement May 2014. ; AeroTech H45W
H45 38 202.7 10 0.18 0.364 AT ; converted from TMT test stand data 1998 (www.tripoli.org)
0.04 84.004 ; provided by ThrustCurve.org (www.thrustcurve.org)
0.854 86.004 H45W 38 194 0 0.193984 0.294784 AT
1.377 84.804 0.141 62.554
2.046 79.204 0.424 63.504
2.69 66.003 0.707 65.913
3.286 51.603 0.992 68.370
4.414 28.401 1.276 69.315
5.042 16.001 1.559 68.523
5.429 9.2 1.843 67.231
6.113 6.4 2.127 65.705
6.186 0.0 2.411 63.154
2.695 59.210
2.979 55.600
3.264 50.790
3.547 45.237
3.830 39.835
4.115 34.562
4.399 29.213
4.682 24.720
4.967 20.616
5.251 17.475
5.534 14.498
5.818 12.697
6.102 10.792
6.386 9.229
6.670 7.754
6.954 6.075
7.239 0.000

View File

@ -1,30 +1,15 @@
; AeroTech I65W ; From AT DMS announcement May 2014.
; converted from TMT test stand data 1997 (www.tripoli.org) I65 54 218 10 0.377 0.752 AT
; provided by ThrustCurve.org (www.thrustcurve.org) 0.023 148.274
I65W 54 235 0 0.41216 0.7616 AT 0.211 196.341
0.180 125.414 0.398 167.827
0.544 139.304 0.797 149.903
0.908 145.369 1.395 135.239
1.273 148.283 2.238 122.204
1.638 146.745 3.199 99.392
2.002 139.049 4.711 69.249
2.367 131.200 5.367 48.882
2.731 123.276 6.246 29.329
3.096 113.454 6.926 15.479
3.460 102.368 7.395 11.406
3.825 90.210 8.496 0.0
4.190 78.084
4.554 66.812
4.919 55.780
5.283 47.281
5.648 39.154
6.012 32.528
6.377 27.069
6.742 22.099
7.106 18.095
7.471 14.819
7.835 12.097
8.200 9.763
8.565 7.875
8.929 5.999
9.294 0.000

View File

@ -1,15 +1,30 @@
; From AT DMS announcement May 2014. ; AeroTech I65W
I65 54 218 10 0.377 0.752 AT ; converted from TMT test stand data 1997 (www.tripoli.org)
0.023 148.274 ; provided by ThrustCurve.org (www.thrustcurve.org)
0.211 196.341 I65W 54 235 0 0.41216 0.7616 AT
0.398 167.827 0.180 125.414
0.797 149.903 0.544 139.304
1.395 135.239 0.908 145.369
2.238 122.204 1.273 148.283
3.199 99.392 1.638 146.745
4.711 69.249 2.002 139.049
5.367 48.882 2.367 131.200
6.246 29.329 2.731 123.276
6.926 15.479 3.096 113.454
7.395 11.406 3.460 102.368
8.496 0.0 3.825 90.210
4.190 78.084
4.554 66.812
4.919 55.780
5.283 47.281
5.648 39.154
6.012 32.528
6.377 27.069
6.742 22.099
7.106 18.095
7.471 14.819
7.835 12.097
8.200 9.763
8.565 7.875
8.929 5.999
9.294 0.000

View File

@ -1,37 +1,42 @@
; M1780NT Redesign and recert ; AT M1780NT 1" Core Revised
M1780NT-PS 75 665 P 2.46 4.649 AT M1780NT 75 665 P 2.371 4.606 AT
0.014 1112.055 0.0090 1337.154
0.015 1497.932 0.026 2005.731
0.022 1783.542 0.04 2106.521
0.036 2105.612 0.046 2163.636
0.047 2157.265 0.085 2156.916
0.066 2169.419 0.108 2126.679
0.104 2123.843 0.134 2113.24
0.14 2108.651 0.168 2130.039
0.164 2135.996 0.205 2126.679
0.197 2129.92 0.259 2197.233
0.238 2157.265 0.299 2156.916
0.263 2205.88 0.347 2130.039
0.274 2169.419 0.399 2123.32
0.312 2145.112 0.495 2103.161
0.411 2111.689 0.595 2089.723
0.595 2081.305 0.697 2079.644
0.899 2075.228 0.8 2083.003
1.299 2047.883 0.9 2076.284
1.601 1996.23 0.999 2069.565
1.899 1938.5 1.201 2056.126
2.058 1889.886 1.398 2029.248
2.201 1813.926 1.603 2002.371
2.3 1753.158 1.799 1965.414
2.423 1701.505 1.998 1904.94
2.467 1622.506 2.2 1817.588
2.508 1555.662 2.3 1757.114
2.566 1336.897 2.354 1723.517
2.62 1112.055 2.405 1713.438
2.67 893.29 2.46 1629.446
2.724 668.448 2.502 1558.893
2.755 568.181 2.571 1333.794
2.812 486.144 2.622 1115.415
2.9 267.379 2.67 890.316
2.999 75.96 2.724 665.217
3.029 0.0 2.758 571.146
2.798 507.312
2.83 446.838
2.901 265.415
3.003 73.913
3.035 0.0

View File

@ -1,42 +1,23 @@
; AT M1780NT 1" Core Revised M1780 75 665 P 2.56 4.715 AT
M1780NT 75 665 P 2.371 4.606 AT 0.028 2204.193
0.0090 1337.154 0.118 2566.025
0.026 2005.731 0.173 2566.025
0.04 2106.521 0.341 2214.151
0.046 2163.636 0.44 2144.44
0.085 2156.916 0.636 2114.564
0.108 2126.679 1.34 2134.482
0.134 2113.24 1.395 2204.193
0.168 2130.039 1.648 2121.203
0.205 2126.679 1.841 2041.534
0.259 2197.233 1.874 1895.473
0.299 2156.916 2.127 1643.186
0.347 2130.039 2.353 1517.042
0.399 2123.32 2.584 1460.61
0.495 2103.161 2.672 1347.744
0.595 2089.723 2.763 1068.901
0.697 2079.644 2.829 723.666
0.8 2083.003 2.939 438.183
0.9 2076.284 2.999 292.122
0.999 2069.565 3.101 172.617
1.201 2056.126 3.272 36.515
1.398 2029.248 3.5 0.0
1.603 2002.371
1.799 1965.414
1.998 1904.94
2.2 1817.588
2.3 1757.114
2.354 1723.517
2.405 1713.438
2.46 1629.446
2.502 1558.893
2.571 1333.794
2.622 1115.415
2.67 890.316
2.724 665.217
2.758 571.146
2.798 507.312
2.83 446.838
2.901 265.415
3.003 73.913
3.035 0.0

View File

@ -0,0 +1,27 @@
<engine-database>
<engine-list>
<engine mfg="CTI" code="56-F31-CL-12A" Type="unspecified" dia="24." len="98.0008"
initWt="102." propWt="32." delays="13,9,7,5,3" auto-calc-mass="1"
auto-calc-cg="1" avgThrust="30.41" peakThrust="64.053" throatDia="0."
exitDia="0." Itot="55.589" burn-time="1.83" massFrac="31.37" Isp="177.14"
tDiv="10" tStep="-1." tFix="1" FDiv="10" FStep="-1." FFix="1" mDiv="10"
mStep="-1." mFix="1" cgDiv="10" cgStep="-1." cgFix="1">
<comments>CTI 56-F31-CL-12A</comments>
<data>
<eng-data t="0." f="0." m="32." cg="49."/>
<eng-data t="0.001" f="3.483" m="31.999" cg="49."/>
<eng-data t="0.023" f="64.053" m="31.5714" cg="49."/>
<eng-data t="0.05" f="31.347" m="30.83" cg="49."/>
<eng-data t="0.059" f="28.459" m="30.6751" cg="49."/>
<eng-data t="0.095" f="32.027" m="30.0483" cg="49."/>
<eng-data t="0.212" f="36.189" m="27.7511" cg="49."/>
<eng-data t="0.344" f="37.549" m="24.9496" cg="49."/>
<eng-data t="1.567" f="26.165" m="2.5217" cg="49."/>
<eng-data t="1.631" f="26.93" m="1.54365" cg="49."/>
<eng-data t="1.663" f="25.316" m="1.06244" cg="49."/>
<eng-data t="1.785" f="3.653" m="0.0452111" cg="49."/>
<eng-data t="1.828" f="0." m="0." cg="49."/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -1,21 +1,28 @@
; Pro75-6G 7545M1590-CL P M1590 75 893 P 3.59 6.0760000000000005 CTI
M1590-CL 75 893 P 3.1590000000000003 5.223 CTI 0.053 2045.469
0.028 1210.592 0.119 2130.875
0.059 2024.222 0.133 2220.551
0.163 2235.371 0.226 2305.957
0.214 2302.939 0.363 2241.903
0.492 2153.727 0.438 2177.849
0.767 2091.79 0.571 2130.875
1.015 2103.051 0.748 2092.443
1.335 2083.344 0.973 2088.172
1.571 2029.852 1.225 2100.983
2.366 1779.288 1.433 2079.632
3.488 1534.354 1.597 2032.659
3.755 1030.41 1.995 1883.198
3.895 960.027 2.411 1759.36
4.12 650.341 3.362 1567.197
4.207 591.219 3.491 1533.035
4.44 340.655 3.721 1076.113
4.665 199.888 3.769 1012.059
4.778 90.091 3.871 973.626
3.946 896.761
4.074 687.517
4.132 640.544
4.203 619.192
4.504 294.65
4.641 226.325
4.716 170.812
4.8 0.0 4.8 0.0

View File

@ -1,11 +1,11 @@
<engine-database> <engine-database>
<engine-list> <engine-list>
<engine mfg="CTI" code="M1590-CL" Type="unspecified" dia="75." len="893." initWt="5223." <engine mfg="Cesaroni Technology Inc." code="M1590-CL" Type="reloadable" dia="75."
propWt="3159." delays="0" auto-calc-mass="1" auto-calc-cg="1" avgThrust="1574.92" len="893." initWt="6076." propWt="3590." delays="1000" auto-calc-mass="1"
peakThrust="2302.94" throatDia="0." exitDia="0." Itot="7559.63" burn-time="4.8" auto-calc-cg="1" avgThrust="1574.92" peakThrust="2302.94" throatDia="0."
massFrac="60.48" Isp="244.02" tDiv="10" tStep="-1." tFix="1" FDiv="10" exitDia="0." Itot="7559.63" burn-time="4.8" massFrac="60.48" Isp="244.02"
FStep="-1." FFix="1" mDiv="10" mStep="-1." mFix="1" cgDiv="10" cgStep="-1." tDiv="10" tStep="-1." tFix="1" FDiv="10" FStep="-1." FFix="1" mDiv="10"
cgFix="1"> mStep="-1." mFix="1" cgDiv="10" cgStep="-1." cgFix="1">
<comments>Pro75-6G 7545M1590-CL P</comments> <comments>Pro75-6G 7545M1590-CL P</comments>
<data> <data>
<eng-data t="0." f="0." m="3159." cg="446.5"/> <eng-data t="0." f="0." m="3159." cg="446.5"/>

View File

@ -1,34 +1,31 @@
; ; B4-4
;Estes B4 RASP.ENG file made from NAR published data B4-4 18 70 P 0.006 0.0195 E
;File produced October 3, 2000 0.058 2.361
;The total impulse, peak thrust, average thrust and burn time are 0.102 2.921
;the same as the averaged static test data on the NAR web site in 0.122 3.797
;the certification file. The curve drawn with these data points is as 0.15 5.866
;close to the certification curve as can be with such a limited 0.18 8.373
;number of points (32) allowed with wRASP up to v1.6. 0.199 9.882
B4 18 70 2-4 0.006 0.0189 Estes 0.208 10.88
0.02 0.418 0.216 11.367
0.04 1.673 0.238 11.245
0.065 4.076 0.245 10.832
0.085 6.69 0.262 8.982
0.105 9.304 0.293 6.134
0.119 11.496 0.322 5.306
0.136 12.75 0.357 4.917
0.153 11.916 0.388 4.795
0.173 10.666 0.416 4.746
0.187 9.304 0.46 4.625
0.198 7.214 0.502 4.576
0.207 5.645 0.544 4.357
0.226 4.809 0.575 4.503
0.258 4.182 0.605 4.527
0.326 3.763 0.674 4.552
0.422 3.554 0.731 4.454
0.549 3.345 0.88 4.454
0.665 3.345 0.915 4.503
0.776 3.345 0.96 4.406
0.863 3.345 1.0 4.065
0.94 3.449 1.047 2.556
0.991 3.449 1.049 0.0
1.002 2.404
1.01 1.254
1.03 0

View File

@ -0,0 +1,34 @@
;
;Estes B4 RASP.ENG file made from NAR published data
;File produced October 3, 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.
B4 18 70 2-4 0.006 0.0189 Estes
0.02 0.418
0.04 1.673
0.065 4.076
0.085 6.69
0.105 9.304
0.119 11.496
0.136 12.75
0.153 11.916
0.173 10.666
0.187 9.304
0.198 7.214
0.207 5.645
0.226 4.809
0.258 4.182
0.326 3.763
0.422 3.554
0.549 3.345
0.665 3.345
0.776 3.345
0.863 3.345
0.94 3.449
0.991 3.449
1.002 2.404
1.01 1.254
1.03 0

View File

@ -1,33 +1,23 @@
; ; C6-0
;Estes C6 RASP.ENG file made from NAR published data C6-0 18 70 P 0.012480000000000002 0.0227 E
;File produced October 3, 2000 0.014 0.633
;The total impulse, peak thrust, average thrust and burn time are 0.026 1.533
;the same as the averaged static test data on the NAR web site in 0.067 2.726
;the certification file. The curve drawn with these data points is as 0.099 5.136
;close to the certification curve as can be with such a limited 0.15 9.103
;number of points (32) allowed with wRASP up to v1.6. 0.183 11.465
C6 18 70 0-3-5-7 0.0108 0.0231 Estes 0.207 11.635
0.031 0.946 0.219 11.391
0.092 4.826 0.262 6.377
0.139 9.936 0.333 5.014
0.192 14.09 0.349 5.209
0.209 11.446 0.392 4.722
0.231 7.381 0.475 4.771
0.248 6.151 0.653 4.746
0.292 5.489 0.913 4.673
0.37 4.921 1.366 4.625
0.475 4.448 1.607 4.625
0.671 4.258 1.745 4.868
0.702 4.542 1.978 4.795
0.723 4.164 2.023 0.828
0.85 4.448 2.024 0.0
1.063 4.353
1.211 4.353
1.242 4.069
1.303 4.258
1.468 4.353
1.656 4.448
1.821 4.448
1.834 2.933
1.847 1.325
1.86 0

View File

@ -0,0 +1,33 @@
;
;Estes C6 RASP.ENG file made from NAR published data
;File produced October 3, 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.
C6 18 70 0-3-5-7 0.0108 0.0231 Estes
0.031 0.946
0.092 4.826
0.139 9.936
0.192 14.09
0.209 11.446
0.231 7.381
0.248 6.151
0.292 5.489
0.37 4.921
0.475 4.448
0.671 4.258
0.702 4.542
0.723 4.164
0.85 4.448
1.063 4.353
1.211 4.353
1.242 4.069
1.303 4.258
1.468 4.353
1.656 4.448
1.821 4.448
1.834 2.933
1.847 1.325
1.86 0

View File

@ -0,0 +1,30 @@
L1112BT 75 497.8 P 1.8 3.628 Gorilla
0.05 1131.791
0.071 1174.3
0.113 1176.957
0.176 1211.495
0.263 1293.855
0.397 1145.075
0.493 1129.134
0.786 1182.27
1.062 1254.003
1.078 1232.749
1.229 1275.258
1.308 1254.003
1.492 1283.228
2.002 1293.855
2.236 1299.169
2.345 1283.228
2.545 1227.435
2.608 1198.211
2.688 1190.24
2.759 1206.181
2.809 1168.986
2.884 892.68
2.922 672.167
3.009 504.789
3.223 225.827
3.26 108.928
3.331 37.195
3.44 5.314
3.595 0.0

View File

@ -0,0 +1,33 @@
M1952BT 75 784.9 P 2.97 5.4430000000000005 Gorilla
0.025 1639.097
0.033 2397.644
0.046 2100.59
0.075 2519.648
0.096 2599.215
0.104 2689.392
0.187 2689.392
0.228 2620.434
0.274 2445.384
0.316 2328.685
0.403 2275.64
0.523 2291.553
1.001 2339.294
1.188 2344.598
1.499 2328.685
1.637 2302.162
1.794 2270.335
2.093 2238.508
2.193 2206.681
2.243 2143.027
2.368 1777.015
2.505 1310.217
2.525 1241.258
2.584 1220.04
2.609 1119.254
2.663 960.118
2.733 763.851
2.8 567.584
2.87 413.753
2.987 238.703
3.178 63.654
3.41 0.0

View File

@ -0,0 +1,27 @@
J1026 38 625.5 P 0.616 1.172 Loki
0.019 62.798
0.034 795.446
0.045 1167.004
0.07 1182.703
0.149 1153.921
0.249 1146.071
0.4 1161.77
0.49 1185.32
0.6 1193.17
0.8 1180.087
0.851 1172.237
0.899 1169.62
0.922 1159.154
0.947 1167.004
0.979 1127.755
1.009 1067.573
1.089 669.85
1.13 486.688
1.142 468.371
1.151 408.19
1.161 316.609
1.176 222.411
1.201 128.213
1.227 65.415
1.264 26.166
1.297 0.0

View File

@ -0,0 +1,37 @@
K1127LB 38 625.5 P 0.624 1.172 Loki
0.009 77.978
0.021 1002.962
0.033 1368.654
0.045 1210.008
0.058 1365.965
0.067 1263.786
0.08 1360.587
0.092 1255.719
0.105 1331.009
0.117 1242.275
0.13 1312.186
0.142 1261.097
0.155 1304.12
0.167 1261.097
0.218 1290.675
0.395 1325.631
0.542 1368.654
0.689 1392.854
0.726 1382.098
0.755 1344.453
0.814 1110.518
0.867 949.184
0.874 1099.763
0.883 962.629
0.908 847.006
0.989 548.537
0.997 363.002
1.003 715.249
1.014 494.759
1.048 406.025
1.091 352.247
1.152 228.557
1.198 158.645
1.244 69.912
1.286 32.267
1.37 0.0

View File

@ -0,0 +1,27 @@
K527LR 54 492.1 P 1.0150000000000001 1.973 Loki
0.023 87.866
0.051 624.477
0.06 701.36
0.079 759.414
0.125 707.636
0.176 682.531
0.269 654.288
0.501 649.581
1.01 644.874
1.265 640.167
1.52 646.443
1.701 643.305
2.035 618.201
2.526 567.991
2.827 539.749
2.943 530.335
2.999 513.075
3.04 442.468
3.115 356.171
3.309 219.665
3.481 91.004
3.546 59.623
3.652 43.933
3.791 37.657
3.967 10.983
4.129 0.0

View File

@ -0,0 +1,25 @@
L840CT 75 498 P 2.074 3.748 Loki
0.021 889.644
0.046 1182.485
0.077 1082.4
0.139 978.608
0.303 971.195
0.662 1015.677
1.011 1108.348
1.33 1149.124
1.689 1189.899
1.971 1163.951
2.089 1145.417
2.3 1034.211
2.633 893.351
2.823 822.921
3.455 656.112
3.737 596.803
3.891 585.682
3.984 385.512
4.112 355.858
4.215 203.877
4.292 140.86
4.384 103.792
4.589 63.016
4.8 0.0

View File

@ -0,0 +1,22 @@
M1650LC 76 784.2 P 3.23 5.63 Loki
0.015 1912.965
0.046 3779.835
0.097 3149.862
0.132 2865.606
0.183 2642.811
0.295 2458.429
0.407 2350.873
0.509 2297.095
0.91 2097.347
1.495 1920.648
1.612 1882.235
2.772 1336.771
3.266 1044.832
3.342 960.324
3.398 860.45
3.505 798.989
3.606 629.972
3.81 361.082
3.901 238.16
4.008 153.652
4.613 0.0

View File

@ -0,0 +1,28 @@
M1969SF 75 1038 P 4.266 7.189 Loki
0.036 263.323
0.044 1504.064
0.075 2204.77
0.087 2356.515
0.186 2204.77
0.23 2280.643
0.274 2240.475
0.503 2347.589
1.003 2432.388
1.058 2454.703
1.495 2307.421
2.002 2236.012
2.315 2186.918
2.501 2182.454
2.628 2169.065
2.815 2244.938
2.882 2191.381
3.045 1338.929
3.096 1142.553
3.164 1044.365
3.267 964.029
3.378 807.821
3.5 504.33
3.639 267.786
3.77 102.651
3.881 22.315
3.96 0.0

View File

@ -0,0 +1,25 @@
M3400LB 76 1038.2 P 4.464 7.597 Loki
0.007 4907.495
0.02 4008.216
0.047 3866.9
0.35 3866.9
0.502 3866.9
0.579 3892.594
1.239 4277.999
1.808 4303.693
1.886 4303.693
1.919 4188.071
2.0 3404.414
2.064 2916.234
2.152 2569.369
2.242 2569.369
2.283 2440.901
2.347 1965.567
2.384 1541.621
2.434 1104.829
2.485 835.045
2.545 719.423
2.596 475.333
2.717 205.55
2.862 51.387
2.976 0.0

View File

@ -0,0 +1,35 @@
; @File: q003.txt, @Pts-I: 769, @Pts-O: 31, @Sm: 0, @CO: 0%
; @TI: 0.1991613, @TIa: 0.1991608, @TIe: +0.1%, @ThMax: 1.624927, @ThAvg: 0.255335, @Tb: 0.78
; Exported using ThrustCurveTool, www.ThrustGear.com
MAXXII 0 0 0.76 0.0 0.0 QUEST
0.026 0.0394607
0.036 0.1214556
0.04 0.206028
0.05 0.444676
0.056 0.680251
0.06 0.899565
0.066 1.358816
0.068 1.475611
0.07 1.56653
0.074 1.624927
0.088 1.190166
0.112 0.830955
0.126 0.439917
0.134 0.319751
0.144 0.248959
0.174 0.1656754
0.206 0.1918503
0.258 0.1262147
0.342 0.1601231
0.366 0.1386081
0.384 0.1794569
0.494 0.218422
0.546 0.1540751
0.56 0.178168
0.608 0.1523896
0.682 0.209499
0.698 0.1837202
0.712 0.220206
0.742 0.209003
0.768 0.040353
0.785 0

View File

@ -0,0 +1,35 @@
; @File: q0016.txt, @Pts-I: 815, @Pts-O: 31, @Sm: 0, @CO: 3%
; @TI: 0.1497473, @TIa: 0.1488623, @TIe: -0.06%, @ThMax: 2.09889, @ThAvg: 0.1862529, @Tb: 0.804
; Exported using ThrustCurveTool, www.ThrustGear.com
1/8A0.2 0 0 0.81 0.0 0.0 QUEST
0.016 0.0530363
0.02 0.0985533
0.024 0.176654
0.03 0.415869
0.032 0.434918
0.038 0.657991
0.052 1.247306
0.058 1.453536
0.064 1.700872
0.066 1.755612
0.07 1.951716
0.074 2.06541
0.076 2.09889
0.078 2.09889
0.08 2.02811
0.082 1.911814
0.084 1.619262
0.086 1.151861
0.088 0.728272
0.09 0.433614
0.092 0.292953
0.098 0.217459
0.154 0.224377
0.172 0.150186
0.196 0.0998567
0.23 0.078602
0.414 0.0625608
0.7559 0.082111
0.8219 0.0607562
0.8339 0.0208536
0.834 0

View File

@ -0,0 +1,49 @@
<engine-database>
<engine-list>
<engine FDiv="10" FFix="1" FStep="-1." Isp="60.9" Itot="0.299" Type="single-use" auto-calc-cg="1" auto-calc-mass="1" avgThrust="0.452" burn-time="0.66" cgDiv="10" cgFix="1" cgStep="-1." code="Micro Maxx II" delays="1" dia="6." exitDia="0." initWt="1.2" len="26." mDiv="10" mFix="1" mStep="-1." massFrac="41.67" mfg="Quest" peakThrust="3.21" propWt="0.5" tDiv="10" tFix="1" tStep="-1." throatDia="0.">
<comments>QUEST MICROMAXX II RASP.ENG file made from NAR published data
File produced Dec 29, 2001
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.
</comments>
<data>
<eng-data cg="13." f="0." m="0.5" t="0."/>
<eng-data cg="13." f="0.16" m="0.498928" t="0.008"/>
<eng-data cg="13." f="0.482" m="0.493554" t="0.018"/>
<eng-data cg="13." f="0.993" m="0.486144" t="0.024"/>
<eng-data cg="13." f="1.534" m="0.473451" t="0.03"/>
<eng-data cg="13." f="2.032" m="0.461509" t="0.034"/>
<eng-data cg="13." f="2.397" m="0.454093" t="0.036"/>
<eng-data cg="13." f="2.543" m="0.43755" t="0.04"/>
<eng-data cg="13." f="3.025" m="0.40958" t="0.046"/>
<eng-data cg="13." f="3.21" m="0.37826" t="0.052"/>
<eng-data cg="13." f="2.864" m="0.342664" t="0.059"/>
<eng-data cg="13." f="2.191" m="0.300344" t="0.069"/>
<eng-data cg="13." f="1.094" m="0.270091" t="0.08"/>
<eng-data cg="13." f="0.539" m="0.260521" t="0.087"/>
<eng-data cg="13." f="0.378" m="0.256683" t="0.092"/>
<eng-data cg="13." f="0.304" m="0.248689" t="0.106"/>
<eng-data cg="13." f="0.26" m="0.233107" t="0.139"/>
<eng-data cg="13." f="0.303" m="0.215196" t="0.177"/>
<eng-data cg="13." f="0.287" m="0.192474" t="0.223"/>
<eng-data cg="13." f="0.243" m="0.176944" t="0.258"/>
<eng-data cg="13." f="0.198" m="0.165868" t="0.288"/>
<eng-data cg="13." f="0.27" m="0.143143" t="0.346"/>
<eng-data cg="13." f="0.298" m="0.116513" t="0.402"/>
<eng-data cg="13." f="0.254" m="0.112354" t="0.411"/>
<eng-data cg="13." f="0.312" m="0.10335" t="0.43"/>
<eng-data cg="13." f="0.282" m="0.0859449" t="0.465"/>
<eng-data cg="13." f="0.238" m="0.0694017" t="0.503"/>
<eng-data cg="13." f="0.281" m="0.0637531" t="0.516"/>
<eng-data cg="13." f="0.28" m="0.0421482" t="0.562"/>
<eng-data cg="13." f="0.294" m="0.0137954" t="0.621"/>
<eng-data cg="13." f="0.279" m="0.00420109" t="0.641"/>
<eng-data cg="13." f="0.176" m="0.00191552" t="0.647"/>
<eng-data cg="13." f="0." m="-0." t="0.66"/>
</data>
</engine>
</engine-list>
</engine-database>

View File

@ -0,0 +1,39 @@
; Traced from NAR certification data dated 1-29-2009
MicroMaxxII 6 26 NE-1 5.0E-4 0.0010 Q
0.021 0.015
0.036 0.05
0.043 0.103
0.049 0.198
0.08 1.636
0.092 1.3
0.109 0.995
0.124 0.805
0.133 0.442
0.143 0.301
0.164 0.21
0.186 0.149
0.199 0.183
0.235 0.145
0.256 0.145
0.293 0.149
0.327 0.164
0.367 0.156
0.387 0.175
0.409 0.183
0.431 0.191
0.461 0.21
0.474 0.202
0.49 0.217
0.505 0.175
0.513 0.198
0.537 0.172
0.553 0.175
0.602 0.156
0.623 0.175
0.644 0.183
0.674 0.21
0.689 0.191
0.697 0.229
0.731 0.21
0.753 0.092
0.771 0.0

View File

@ -1,7 +1,7 @@
# The OpenRocket build version # The OpenRocket build version
build.version=14.11dev build.version=15.03dev
# The source of the package. When building a package for a specific # The source of the package. When building a package for a specific

View File

@ -42,7 +42,7 @@ AppearanceCfg.lbl.texture.repeat = \u91CD\u590D:
AppearanceCfg.lbl.texture.rotation = \u65CB\u8F6C: AppearanceCfg.lbl.texture.rotation = \u65CB\u8F6C:
AppearanceCfg.lbl.texture.scale = \u7F29\u653E: AppearanceCfg.lbl.texture.scale = \u7F29\u653E:
BasicEventSimulationEngine.error.NaNResult = \u6A21\u62DF\u7ED3\u679C\u5E76\u4E0D\u662F\u4E2A\u6570\u503C,\u8BF7\u6C47\u62A5bug BasicEventSimulationEngine.error.NaNResult = \u6A21\u62DF\u7ED3\u679C\u975E\u6570\u503C,\u8BF7\u6C47\u62A5bug
BasicEventSimulationEngine.error.earlyMotorBurnout = \u53D1\u52A8\u673A\u8D77\u98DE\u524D\u5DF2\u71C3\u5C3D. BasicEventSimulationEngine.error.earlyMotorBurnout = \u53D1\u52A8\u673A\u8D77\u98DE\u524D\u5DF2\u71C3\u5C3D.
BasicEventSimulationEngine.error.noIgnition = \u53D1\u52A8\u673A\u672A\u70B9\u706B BasicEventSimulationEngine.error.noIgnition = \u53D1\u52A8\u673A\u672A\u70B9\u706B
BasicEventSimulationEngine.error.noMotorsDefined = \u53D1\u52A8\u673A\u672A\u5B9A\u4E49 BasicEventSimulationEngine.error.noMotorsDefined = \u53D1\u52A8\u673A\u672A\u5B9A\u4E49
@ -128,11 +128,15 @@ ComponentCfgDlg.Modify = \u4FEE\u6539
!ComponentConfigDialog !ComponentConfigDialog
ComponentCfgDlg.configuration = \u8BBE\u7F6E ComponentCfgDlg.configuration = \u8BBE\u7F6E
ComponentIcons.Altimeter = \u9AD8\u5EA6\u8BA1
ComponentIcons.Battery = \u7535\u6C60
ComponentIcons.Bodytube = \u7BAD\u4F53 ComponentIcons.Bodytube = \u7BAD\u4F53
ComponentIcons.Bulkhead = \u9694\u677F ComponentIcons.Bulkhead = \u9694\u677F
ComponentIcons.Centeringring = \u4E2D\u5FC3\u73AF ComponentIcons.Centeringring = \u4E2D\u5FC3\u73AF
ComponentIcons.Deploymentcharge = \u5F00\u4F1E\u836F
ComponentIcons.Ellipticalfinset = \u692D\u5706\u7A33\u5B9A\u7FFC ComponentIcons.Ellipticalfinset = \u692D\u5706\u7A33\u5B9A\u7FFC
ComponentIcons.Engineblock = \u53D1\u52A8\u673A ComponentIcons.Engineblock = \u53D1\u52A8\u673A
ComponentIcons.Flightcomputer = \u98DE\u63A7
ComponentIcons.Freeformfinset = \u66F2\u9762\u7A33\u5B9A\u7FFC ComponentIcons.Freeformfinset = \u66F2\u9762\u7A33\u5B9A\u7FFC
ComponentIcons.Innertube = \u5185\u7BA1 ComponentIcons.Innertube = \u5185\u7BA1
ComponentIcons.Launchlug = \u53D1\u5C04\u8854\u5957 ComponentIcons.Launchlug = \u53D1\u5C04\u8854\u5957
@ -140,11 +144,15 @@ ComponentIcons.Masscomponent = \u8D28\u91CF\u7EC4\u4EF6
!ComponentIcons !ComponentIcons
ComponentIcons.Nosecone = \u5934\u9525 ComponentIcons.Nosecone = \u5934\u9525
ComponentIcons.Parachute = \u964D\u843D\u4F1E ComponentIcons.Parachute = \u964D\u843D\u4F1E
ComponentIcons.Payload = \u6709\u6548\u8F7D\u8377
ComponentIcons.Recoveryhardware = \u56DE\u6536\u8BBE\u5907
ComponentIcons.Shockcord = \u51CF\u9707\u7D22 ComponentIcons.Shockcord = \u51CF\u9707\u7D22
ComponentIcons.Streamer = \u98D8\u5E26 ComponentIcons.Streamer = \u98D8\u5E26
ComponentIcons.Tracker = \u8DDF\u8E2A\u5668
ComponentIcons.Transition = \u7EA7\u95F4\u6BB5 ComponentIcons.Transition = \u7EA7\u95F4\u6BB5
ComponentIcons.Trapezoidalfinset = \u68AF\u5F62\u7A33\u5B9A\u7FFC ComponentIcons.Trapezoidalfinset = \u68AF\u5F62\u7A33\u5B9A\u7FFC
ComponentIcons.Tubecoupler = \u8FDE\u63A5\u5668 ComponentIcons.Tubecoupler = \u8FDE\u63A5\u5668
ComponentIcons.Tubefinset = \u7BA1\u5F62\u7FFC
ComponentIcons.disabled = (\u5DF2\u7981\u7528) ComponentIcons.disabled = (\u5DF2\u7981\u7528)
ComponentPresetChooserDialog.checkbox.filterAftDiameter = \u5339\u914D\u540E\u76F4\u5F84 ComponentPresetChooserDialog.checkbox.filterAftDiameter = \u5339\u914D\u540E\u76F4\u5F84
@ -264,6 +272,9 @@ FinSet.TabRelativePosition.CENTER = \u7FFC\u6839\u5F26\u4E2D\u70B9
FinSet.TabRelativePosition.END = \u7FFC\u6839\u5F26\u540E\u7F18 FinSet.TabRelativePosition.END = \u7FFC\u6839\u5F26\u540E\u7F18
FinSet.TabRelativePosition.FRONT = \u7FFC\u6839\u5F26\u524D\u7F18 FinSet.TabRelativePosition.FRONT = \u7FFC\u6839\u5F26\u524D\u7F18
FinSetCfg.lbl.Filletradius = \u63A5\u7F1D\u534A\u5F84:
FinSetCfg.lbl.Finfilletmaterial = \u63A5\u7F1D\u6750\u6599:
FinSetConfig.Convertfinset = \u8F6C\u6362\u7FFC FinSetConfig.Convertfinset = \u8F6C\u6362\u7FFC
FinSetConfig.but.AutoCalc = \u81EA\u52A8\u8BA1\u7B97 FinSetConfig.but.AutoCalc = \u81EA\u52A8\u8BA1\u7B97
FinSetConfig.but.Converttofreeform = \u8F6C\u4E3A\u81EA\u7531\u66F2\u9762 FinSetConfig.but.Converttofreeform = \u8F6C\u4E3A\u81EA\u7531\u66F2\u9762
@ -282,6 +293,10 @@ FinSetConfig.ttip.Tabheight = \u7FFC\u5C55\u65B9\u5411\u7684\u9AD8\u
FinSetConfig.ttip.Tablength = \u7FFC\u677F\u7684\u957F\u5EA6. FinSetConfig.ttip.Tablength = \u7FFC\u677F\u7684\u957F\u5EA6.
FinSetConfig.ttip.Tabposition = \u7FFC\u677F\u7684\u4F4D\u7F6E. FinSetConfig.ttip.Tabposition = \u7FFC\u677F\u7684\u4F4D\u7F6E.
FinsetCfg.ttip.Finfillets1 = <HTML>\u5C06\u9884\u4F30\u8D28\u91CF\u6DFB\u52A0\u5230\u7FFC\u6839\u90E8.<br>
FinsetCfg.ttip.Finfillets2 = \u5047\u5B9A\u63A5\u7F1D\u5185\u51F9\u4E14\u548C\u7BAD\u4F53\u3001\u7FFC\u677F\u76F8\u5207.<br>
FinsetCfg.ttip.Finfillets3 = \u65E0\u63A5\u7F1D\u60C5\u51B5\u4E0B\u5C06\u8BBE\u5B9A\u63A5\u7F1D\u534A\u5F84\u4E3A0.
FlightDataType.TYPE_ACCELERATION_TOTAL = \u603B\u52A0\u901F\u5EA6 FlightDataType.TYPE_ACCELERATION_TOTAL = \u603B\u52A0\u901F\u5EA6
FlightDataType.TYPE_ACCELERATION_XY = \u6A2A\u5411\u52A0\u901F\u5EA6 FlightDataType.TYPE_ACCELERATION_XY = \u6A2A\u5411\u52A0\u901F\u5EA6
FlightDataType.TYPE_ACCELERATION_Z = \u5782\u76F4\u52A0\u901F\u5EA6 FlightDataType.TYPE_ACCELERATION_Z = \u5782\u76F4\u52A0\u901F\u5EA6
@ -508,8 +523,15 @@ LineStyle.Dotted = \u70B9\u865A\u7EBF
! LineStyle ! LineStyle
LineStyle.Solid = \u5B9E\u7EBF LineStyle.Solid = \u5B9E\u7EBF
MassComponent.Altimeter = \u9AD8\u5EA6\u8BA1
MassComponent.Battery = \u7535\u6C60
MassComponent.DeploymentCharge = \u5F00\u4F1E\u836F
MassComponent.FlightComputer = \u98DE\u63A7
!MassComponent !MassComponent
MassComponent.MassComponent = \u8D28\u91CF\u7EC4\u4EF6 MassComponent.MassComponent = \u8D28\u91CF\u7EC4\u4EF6
MassComponent.Payload = \u6709\u6548\u8F7D\u8377
MassComponent.RecoveryHardware = \u56DE\u6536\u8BBE\u5907
MassComponent.Tracker = \u8FFD\u8E2A\u5668
MassComponentCfg.but.Reset = \u91CD\u7F6E MassComponentCfg.but.Reset = \u91CD\u7F6E
MassComponentCfg.lbl.Density = \u8FD1\u4F3C\u5BC6\u5EA6: MassComponentCfg.lbl.Density = \u8FD1\u4F3C\u5BC6\u5EA6:
@ -521,6 +543,7 @@ MassComponentCfg.lbl.PosRelativeto = \u76F8\u5BF9\u4F4D\u7F6E:
MassComponentCfg.lbl.Radialdirection = \u5F84\u5411\u65B9\u5411: MassComponentCfg.lbl.Radialdirection = \u5F84\u5411\u65B9\u5411:
MassComponentCfg.lbl.Radialdistance = \u5F84\u5411\u8DDD\u79BB: MassComponentCfg.lbl.Radialdistance = \u5F84\u5411\u8DDD\u79BB:
MassComponentCfg.lbl.plus = \u52A0 MassComponentCfg.lbl.plus = \u52A0
MassComponentCfg.lbl.type = \u7C7B\u578B
MassComponentCfg.tab.General = \u5E38\u89C4 MassComponentCfg.tab.General = \u5E38\u89C4
MassComponentCfg.tab.Radialpos = \u5F84\u5411\u4F4D\u7F6E MassComponentCfg.tab.Radialpos = \u5F84\u5411\u4F4D\u7F6E
MassComponentCfg.tab.ttip.General = \u5E38\u89C4\u5C5E\u6027 MassComponentCfg.tab.ttip.General = \u5E38\u89C4\u5C5E\u6027
@ -551,7 +574,7 @@ MotorCfg.checkbox.compmotormount = \u8BE5\u7EC4\u4EF6\u4E3A\u53D1\u52A8\u673A\u5
MotorCfg.lbl.Currentmotor = \u5F53\u524D\u53D1\u52A8\u673A: MotorCfg.lbl.Currentmotor = \u5F53\u524D\u53D1\u52A8\u673A:
MotorCfg.lbl.Flightcfg = \u98DE\u884C\u914D\u7F6E: MotorCfg.lbl.Flightcfg = \u98DE\u884C\u914D\u7F6E:
MotorCfg.lbl.Ignitionat = \u70B9\u706B\u65F6\u523B: MotorCfg.lbl.Ignitionat = \u70B9\u706B\u65F6\u523B:
MotorCfg.lbl.Motoroverhang = \u53D1\u52A8\u673A\u7A81\u51FA: MotorCfg.lbl.Motoroverhang = \u53D1\u52A8\u673A\u6A2A\u7F69\u91CF:
MotorCfg.lbl.longA1 = \u5F53\u524D\u8BBE\u8BA1\u7A3F\u4E3A\u5355\u7EA7\u706B\u7BAD. 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.longA2 = \u70B9\u51FB"\u65B0\u5EFA\u7EA7"\u5EFA\u7ACB\u65B0\u7684\u706B\u7BAD\u7EA7.
MotorCfg.lbl.longB1 = \u5F53\u524D\u8BBE\u8BA1\u7A3F\u6709 MotorCfg.lbl.longB1 = \u5F53\u524D\u8BBE\u8BA1\u7A3F\u6709
@ -723,7 +746,37 @@ PhotoFrame.menu.window.size = \u5927\u5C0F
PhotoFrame.menu.window.size.portrait = {0} \u76F8\u7247 PhotoFrame.menu.window.size.portrait = {0} \u76F8\u7247
PhotoFrame.title = \u7167\u76F8\u9986 PhotoFrame.title = \u7167\u76F8\u9986
PhotoSettingsConfig.colorChooser.title = \u9009\u8272\u5668 PhotoSettingsConfig.colorChooser.title = \u9009\u8272\u677F
PhotoSettingsConfig.lbl.advance = \u9AD8\u7EA7
PhotoSettingsConfig.lbl.amb = \u73AF\u5883
PhotoSettingsConfig.lbl.camera = \u76F8\u673A
PhotoSettingsConfig.lbl.effects = \u6548\u679C
PhotoSettingsConfig.lbl.exhaustScale = \u5C3E\u6C14\u5927\u5C0F
PhotoSettingsConfig.lbl.flame = \u706B\u7130
PhotoSettingsConfig.lbl.flameAspect = \u706B\u7130\u5916\u89C2\u89D2\u5EA6
PhotoSettingsConfig.lbl.fov = \u89C6\u573A
PhotoSettingsConfig.lbl.light = \u5149\u7167
PhotoSettingsConfig.lbl.lightAlt = \u5149\u7167\u9AD8\u5EA6
PhotoSettingsConfig.lbl.lightAz = \u5149\u7167\u65B9\u4F4D
PhotoSettingsConfig.lbl.pitch = \u503E\u89D2
PhotoSettingsConfig.lbl.rocket = \u706B\u7BAD
PhotoSettingsConfig.lbl.roll = \u65CB\u8F6C
PhotoSettingsConfig.lbl.sky = \u5929\u7A7A
PhotoSettingsConfig.lbl.skyColor = \u5929\u7A7A\u989C\u8272
PhotoSettingsConfig.lbl.skyCredit = \u56FE\u7247\u6CE8\u89E3
PhotoSettingsConfig.lbl.skyImage = \u5929\u7A7A\u56FE\u7247
PhotoSettingsConfig.lbl.smoke = \u70DF\u96FE
PhotoSettingsConfig.lbl.smokeFlame = \u7130\u70DF
PhotoSettingsConfig.lbl.smokeOpacity = \u70DF\u900F\u660E\u5EA6
PhotoSettingsConfig.lbl.sparkConcentration = \u706B\u661F\u6D53\u5EA6
PhotoSettingsConfig.lbl.sparkWeight = \u706B\u661F\u91CD\u91CF
PhotoSettingsConfig.lbl.sparks = \u706B\u661F
PhotoSettingsConfig.lbl.speed = \u901F\u5EA6
PhotoSettingsConfig.lbl.sun = \u9633\u5149
PhotoSettingsConfig.lbl.vAlt = \u89C6\u9AD8\u5EA6
PhotoSettingsConfig.lbl.vAz = \u89C6\u65B9\u4F4D\u89D2
PhotoSettingsConfig.lbl.vDist = \u89C6\u8DDD
PhotoSettingsConfig.lbl.yaw = \u65CB\u89D2
PhotoSettingsConfig.tab.effects = \u7279\u6548 PhotoSettingsConfig.tab.effects = \u7279\u6548
PhotoSettingsConfig.tab.environment = \u73AF\u5883 PhotoSettingsConfig.tab.environment = \u73AF\u5883
PhotoSettingsConfig.tab.orientation = \u65B9\u5411 PhotoSettingsConfig.tab.orientation = \u65B9\u5411
@ -732,6 +785,7 @@ PhotoSettingsConfig.title = \u8BBE\u7F6E
PlotConfiguration.Angleofattack = \u653B\u89D2\u548C\u65B9\u5411 vs. \u65F6\u95F4 PlotConfiguration.Angleofattack = \u653B\u89D2\u548C\u65B9\u5411 vs. \u65F6\u95F4
PlotConfiguration.Dragcoef = \u963B\u529B\u7CFB\u6570 vs. \u9A6C\u8D6B\u6570 PlotConfiguration.Dragcoef = \u963B\u529B\u7CFB\u6570 vs. \u9A6C\u8D6B\u6570
PlotConfiguration.Flightside = \u98DE\u884C\u4FA7\u89C6\u5256\u9762 PlotConfiguration.Flightside = \u98DE\u884C\u4FA7\u89C6\u5256\u9762
PlotConfiguration.Groundtrack = \u5730\u9762\u822A\u8FF9
PlotConfiguration.Rollcharacteristics = \u6EDA\u8F6C\u7279\u5F81 PlotConfiguration.Rollcharacteristics = \u6EDA\u8F6C\u7279\u5F81
PlotConfiguration.Simulationtime = \u6A21\u62DF\u65F6\u95F4\u6B65\u957F vs. \u8BA1\u7B97\u65F6\u95F4 PlotConfiguration.Simulationtime = \u6A21\u62DF\u65F6\u95F4\u6B65\u957F vs. \u8BA1\u7B97\u65F6\u95F4
PlotConfiguration.Stability = \u7A33\u5B9A\u6027 vs. \u65F6\u95F4 PlotConfiguration.Stability = \u7A33\u5B9A\u6027 vs. \u65F6\u95F4
@ -1015,6 +1069,23 @@ SimulationEditDialog.btn.plot = \u6570\u636E\u56FE
SimulationEditDialog.btn.simulate = \u4EFF\u771F SimulationEditDialog.btn.simulate = \u4EFF\u771F
SimulationEditDialog.btn.simulateAndPlot = \u4EFF\u771F & \u6570\u636E\u56FE SimulationEditDialog.btn.simulateAndPlot = \u4EFF\u771F & \u6570\u636E\u56FE
SimulationExtension.javacode.className = \u5B8C\u6574\u7684Java\u7C7B\u540D:
SimulationExtension.javacode.desc = \u6DFB\u52A0\u81EA\u5B9A\u4E49SimulationListener(\u76D1\u542C\u4E8B\u4EF6)
SimulationExtension.javacode.name = Java\u4EE3\u7801
SimulationExtension.javacode.name.none = \u65E0
SimulationExtension.scripting.desc = \u81EA\u5B9A\u4E49OpenRocket\u6269\u5C55\u811A\u672C.
SimulationExtension.scripting.language.label = \u8BED\u8A00:
SimulationExtension.scripting.name = {language}\u811A\u672C
SimulationExtension.scripting.text.enabled = \u542F\u7528\u811A\u672C
SimulationExtension.scripting.text.enabled.ttip = \u811A\u672C\u53EA\u6709\u5728\u542F\u7528\u540E\u624D\u4F1A\u88AB\u6267\u884C.
SimulationExtension.scripting.text.trusted = \u5728\u672C\u673A\u4E0A\u4FE1\u4EFB\u8BE5\u811A\u672C
SimulationExtension.scripting.text.trusted.clear = \u6E05\u9664\u811A\u672C\u4FE1\u4EFB
SimulationExtension.scripting.text.trusted.clear.ttip = \u6E05\u9664\u5BF9\u6240\u6709\u811A\u672C\u7684\u4FE1\u4EFB
SimulationExtension.scripting.text.trusted.cleared = \u6240\u6709\u811A\u672C\u5DF2\u4E0D\u88AB\u672C\u673A\u4FE1\u4EFB.
SimulationExtension.scripting.text.trusted.cleared.title = \u5DF2\u6E05\u9664
SimulationExtension.scripting.text.trusted.msg = \u4E0D\u53EF\u4FE1\u7684\u811A\u672C\u4F1A\u5728\u8BFB\u53D6\u65F6\u88AB\u7981\u7528
SimulationExtension.scripting.warning.disabled = \u4E0D\u53EF\u4FE1\u811A\u672C\u5DF2\u88AB\u7981\u7528. \u4F60\u9700\u8981\u5728\u4EFF\u771F\u9009\u9879\u4E2D\u624B\u52A8\u542F\u7528.
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 = \u8BF7\u5728Y\u8F74\u6DFB\u52A0\u81F3\u5C111\u4E2A\u53D8\u91CF.
@ -1034,7 +1105,7 @@ SleeveCfg.tab.Wallthickness = \u58C1\u539A:
SlideShowDialog.btn.next = \u4E0B\u4E00\u9875 SlideShowDialog.btn.next = \u4E0B\u4E00\u9875
SlideShowDialog.btn.prev = \u4E0A\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.msg = \u5F88\u9057\u61BE, \u6240\u9009\u7684\u6559\u7A0B\u8FD8\u672A\u88AB\u64B0\u5199.
SlideShowLinkListener.error.title = \u6CA1\u6709\u627E\u5230\u76F8\u5173\u6559\u7A0B SlideShowLinkListener.error.title = \u6CA1\u6709\u627E\u5230\u76F8\u5173\u6559\u7A0B
StabilityParameter.name = \u7A33\u5B9A\u6027 StabilityParameter.name = \u7A33\u5B9A\u6027
@ -1215,6 +1286,17 @@ TrapezoidFinSetCfg.tab.Generalproperties = \u5E38\u89C4\u5C5E\u6027
! TubeCoupler ! TubeCoupler
TubeCoupler.TubeCoupler = \u8FDE\u63A5\u5668 TubeCoupler.TubeCoupler = \u8FDE\u63A5\u5668
TubeFinSet.TubeFinSet = \u7BA1\u5F62\u7FFC
TubeFinSetCfg.checkbox.Automatic = \u81EA\u52A8
TubeFinSetCfg.lbl.Finrotation = \u7FFC\u7FC5\u65CB\u5EA6:
TubeFinSetCfg.lbl.Innerdiam = \u5185\u76F4\u5F84:
TubeFinSetCfg.lbl.Length = \u957F\u5EA6:
TubeFinSetCfg.lbl.Nbroffins = \u7FFC\u6570\u91CF:
TubeFinSetCfg.lbl.Outerdiam = \u5916\u76F4\u5F84:
TubeFinSetCfg.lbl.Thickness = \u539A\u5EA6:
TubeFinSetCfg.lbl.ttip.Finrotation = \u7A33\u5B9A\u7FFC\u7EC4\u5408\u91CC\u7B2C\u4E00\u7247\u7684\u89D2\u5EA6
Warning.DISCONTINUITY = \u7BAD\u4F53\u76F4\u5F84\u4E0D\u8FDE\u7EED. Warning.DISCONTINUITY = \u7BAD\u4F53\u76F4\u5F84\u4E0D\u8FDE\u7EED.
Warning.FILE_INVALID_PARAMETER = \u65E0\u6548\u53C2\u6570, \u5FFD\u7565. 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.JAGGED_EDGED_FIN = \u952F\u9F7F\u7FFC\u9884\u6D4B\u53EF\u80FD\u4E0D\u51C6\u786E.
@ -1228,6 +1310,7 @@ Warning.RECOVERY_HIGH_SPEED = \u56DE\u6536\u88C5\u7F6E\u5206\u79BB
Warning.RECOVERY_LAUNCH_ROD = \u56DE\u6536\u88C5\u7F6E\u5728\u53D1\u5C04\u67B6\u4E0A\u89E6\u53D1. 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.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.THICK_FIN = \u539A\u7FFC\u6A21\u578B\u53EF\u80FD\u4E0D\u51C6\u786E.
Warning.TUMBLE_UNDER_THRUST = \u706B\u7BAD\u7EA7\u5728\u63A8\u529B\u4F5C\u7528\u4E0B\u5F00\u59CB\u503E\u8986.
bugreport.dlg.but.Sendbugreport = \u53D1\u9001\u9519\u8BEF\u62A5\u544A 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.but.Sendbugreport.Ttip = \u81EA\u52A8\u53D1\u9001\u9519\u8BEF\u62A5\u544A\u7ED9OpenRocket\u5F00\u53D1\u7EC4
@ -1275,6 +1358,7 @@ compaddbuttons.Shockcord = \u51CF\u9707\u7D22
compaddbuttons.Streamer = \u98D8\u5E26 compaddbuttons.Streamer = \u98D8\u5E26
compaddbuttons.Transition = \u7EA7\u95F4\u6BB5 compaddbuttons.Transition = \u7EA7\u95F4\u6BB5
compaddbuttons.Trapezoidal = \u68AF\u5F62\u7A33\u5B9A\u7FFC compaddbuttons.Trapezoidal = \u68AF\u5F62\u7A33\u5B9A\u7FFC
compaddbuttons.Tubefin = \u7BA1\u5F62\u7FFC
compaddbuttons.askPosition.Addtotheend = \u5728\u5C3E\u90E8\u6DFB\u52A0 compaddbuttons.askPosition.Addtotheend = \u5728\u5C3E\u90E8\u6DFB\u52A0
compaddbuttons.askPosition.Cancel = \u53D6\u6D88 compaddbuttons.askPosition.Cancel = \u53D6\u6D88
compaddbuttons.askPosition.Inserthere = \u5728\u6B64\u63D2\u5165 compaddbuttons.askPosition.Inserthere = \u5728\u6B64\u63D2\u5165
@ -1417,6 +1501,10 @@ filetypes.images = \u56FE\u50CF\u6587\u4EF6
! General file type names ! General file type names
filetypes.pdf = PDF \u6587\u4EF6 (*.pdf) filetypes.pdf = PDF \u6587\u4EF6 (*.pdf)
generalprefs.languages.default = \u7CFB\u7EDF\u9ED8\u8BA4
generalprefs.lbl.language = \u754C\u9762\u8BED\u8A00
generalprefs.lbl.languageEffect = \u65B0\u7684\u8BED\u8A00\u5C06\u5728\u4E0B\u6B21\u542F\u52A8OpenRocket\u65F6\u751F\u6548.
main.menu.analyze = \u5206\u6790 main.menu.analyze = \u5206\u6790
main.menu.analyze.componentAnalysis = \u7EC4\u4EF6\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.componentAnalysis.desc = \u4EC5\u5206\u6790\u706B\u7BAD\u90E8\u4EF6
@ -1620,12 +1708,15 @@ optimization.modifier.trapezoidfinset.tipChord.desc = \u4F18\u5316\u7FFC\u6
pref.dlg.Add = \u6DFB\u52A0 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.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.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\u65F6\u751F\u6548
pref.dlg.PrefBooleanSelector1 = \u5220\u9664 pref.dlg.PrefBooleanSelector1 = \u5220\u9664
pref.dlg.PrefBooleanSelector2 = \u786E\u8BA4 pref.dlg.PrefBooleanSelector2 = \u786E\u8BA4
pref.dlg.PrefChoiseSelector1 = \u603B\u662F\u8BE2\u95EE pref.dlg.PrefChoiseSelector1 = \u603B\u662F\u8BE2\u95EE
pref.dlg.PrefChoiseSelector2 = \u63D2\u5728\u4E2D\u95F4 pref.dlg.PrefChoiseSelector2 = \u63D2\u5728\u4E2D\u95F4
pref.dlg.PrefChoiseSelector3 = \u63D2\u5728\u6700\u540E pref.dlg.PrefChoiseSelector3 = \u63D2\u5728\u6700\u540E
pref.dlg.PrefFontLarge = \u5927
pref.dlg.PrefFontMedium = \u4E2D
pref.dlg.PrefFontSmall = \u5C0F
pref.dlg.RASPfiles = RASP\u53D1\u52A8\u673A\u6587\u4EF6(*.eng) pref.dlg.RASPfiles = RASP\u53D1\u52A8\u673A\u6587\u4EF6(*.eng)
pref.dlg.RockSimfiles = RockSim\u53D1\u52A8\u673A\u6587\u4EF6(*.rse) pref.dlg.RockSimfiles = RockSim\u53D1\u52A8\u673A\u6587\u4EF6(*.rse)
pref.dlg.ZIParchives = ZIP\u538B\u7F29\u5305(*.zip) pref.dlg.ZIParchives = ZIP\u538B\u7F29\u5305(*.zip)
@ -1637,6 +1728,8 @@ 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.openlast = \u5728\u542F\u52A8\u7684\u65F6\u5019\u6253\u5F00\u4E0A\u6B21\u8BBE\u8BA1
pref.dlg.but.reset = \u91CD\u7F6E pref.dlg.but.reset = \u91CD\u7F6E
pref.dlg.checkbox.Checkupdates = \u542F\u52A8\u65F6\u68C0\u67E5\u66F4\u65B0 pref.dlg.checkbox.Checkupdates = \u542F\u52A8\u65F6\u68C0\u67E5\u66F4\u65B0
pref.dlg.checkbox.Runsimulations = \u5728\u67E5\u770B\u4EFF\u771F\u9762\u677F\u65F6\u91CD\u65B0\u8FD0\u884C\u8FC7\u65F6\u7684\u4EFF\u771F\u9879.
pref.dlg.checkbox.Updateestimates = \u5728\u8BBE\u8BA1\u7A97\u53E3\u66F4\u65B0\u9884\u4F30\u7684\u98DE\u884C\u53C2\u6570.
pref.dlg.lbl.Acceleration = \u52A0\u901F\u5EA6: pref.dlg.lbl.Acceleration = \u52A0\u901F\u5EA6:
pref.dlg.lbl.Angle = \u89D2\u5EA6: pref.dlg.lbl.Angle = \u89D2\u5EA6:
pref.dlg.lbl.Area = \u9762\u79EF: pref.dlg.lbl.Area = \u9762\u79EF:
@ -1654,6 +1747,7 @@ pref.dlg.lbl.Motordimensions = \u53D1\u52A8\u673A\u5C3A\u5BF8:
pref.dlg.lbl.Positiontoinsert = \u65B0\u7EC4\u4EF6\u63D2\u5165\u4F4D\u7F6E: pref.dlg.lbl.Positiontoinsert = \u65B0\u7EC4\u4EF6\u63D2\u5165\u4F4D\u7F6E:
pref.dlg.lbl.Pressure = \u538B\u529B: pref.dlg.lbl.Pressure = \u538B\u529B:
pref.dlg.lbl.Rocketdimensions = \u706B\u7BAD\u5C3A\u5BF8: pref.dlg.lbl.Rocketdimensions = \u706B\u7BAD\u5C3A\u5BF8:
pref.dlg.lbl.Rocketinfofontsize = \u706B\u7BAD\u8BBE\u8BA1\u9762\u677F\u7684\u6587\u5B57\u5927\u5C0F:
pref.dlg.lbl.Rollrate = \u89D2\u901F\u5EA6: pref.dlg.lbl.Rollrate = \u89D2\u901F\u5EA6:
pref.dlg.lbl.Selectprefunits = \u8BF7\u9009\u62E9\u5355\u4F4D\u5236: pref.dlg.lbl.Selectprefunits = \u8BF7\u9009\u62E9\u5355\u4F4D\u5236:
pref.dlg.lbl.Stability = \u7A33\u5B9A\u6027: pref.dlg.lbl.Stability = \u7A33\u5B9A\u6027:
@ -1673,15 +1767,19 @@ pref.dlg.opengl.but.enableAA = \u542F\u7528\u53CD\u952F\u9F7F
pref.dlg.opengl.but.enableGL = \u542F\u7528\u4E09\u7EF4\u56FE\u50CF pref.dlg.opengl.but.enableGL = \u542F\u7528\u4E09\u7EF4\u56FE\u50CF
pref.dlg.opengl.lbl.title = \u4E09\u7EF4\u56FE\u50CF pref.dlg.opengl.lbl.title = \u4E09\u7EF4\u56FE\u50CF
pref.dlg.opengl.lbl.useFBO = \u79BB\u7EBF\u6E32\u67D3 pref.dlg.opengl.lbl.useFBO = \u79BB\u7EBF\u6E32\u67D3
pref.dlg.tab.Colors = \u663E\u793A:
pref.dlg.tab.Custommaterials = \u81EA\u5B9A\u4E49\u6750\u6599 pref.dlg.tab.Custommaterials = \u81EA\u5B9A\u4E49\u6750\u6599
pref.dlg.tab.Defaultunits = \u7F3A\u7701\u5355\u4F4D pref.dlg.tab.Defaultunits = \u7F3A\u7701\u5355\u4F4D
pref.dlg.tab.Graphics = \u56FE\u50CF pref.dlg.tab.Graphics = \u56FE\u50CF
pref.dlg.tab.Launch = \u53D1\u5C04
pref.dlg.tab.Materials = \u6750\u6599 pref.dlg.tab.Materials = \u6750\u6599
pref.dlg.tab.Miscellaneousoptions = \u6742\u9879 pref.dlg.tab.Miscellaneousoptions = \u6742\u9879
pref.dlg.tab.Options = \u9009\u9879 pref.dlg.tab.Options = \u9009\u9879
pref.dlg.tab.Simulation = \u4EFF\u771F
pref.dlg.tab.Units = \u5355\u4F4D\u5236 pref.dlg.tab.Units = \u5355\u4F4D\u5236
pref.dlg.title.Preferences = \u9996\u9009\u9879 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
pref.dlg.ttip.DefaultMach1 = <HTML><b>\u672C\u8BBE\u5B9A\u5C06\u5728\u4E0B\u6B21\u542F\u52A8OpenRocket\u65F6\u751F\u6548.</b> <BR>
printdlg.but.preview = \u9884\u89C8 printdlg.but.preview = \u9884\u89C8
printdlg.but.saveaspdf = \u4FDD\u5B58\u4E3A PDF printdlg.but.saveaspdf = \u4FDD\u5B58\u4E3A PDF
@ -1712,9 +1810,13 @@ simedtdlg.IntensityDesc.Medium = \u4E2D
simedtdlg.IntensityDesc.None = \u65E0 simedtdlg.IntensityDesc.None = \u65E0
simedtdlg.IntensityDesc.Veryhigh = \u5F88\u9AD8 simedtdlg.IntensityDesc.Veryhigh = \u5F88\u9AD8
simedtdlg.IntensityDesc.Verylow = \u5F88\u4F4E simedtdlg.IntensityDesc.Verylow = \u5F88\u4F4E
simedtdlg.SimExt.add = \u6DFB\u52A0\u6269\u5C55
simedtdlg.SimExt.copyExtension = \u590D\u5236\u6269\u5C55
simedtdlg.SimExt.desc = <html><i>\u6A21\u62DF\u6269\u5C55</i> \u80FD\u5728\u6A21\u62DF\u8FC7\u7A0B\u4E2D\u542F\u7528\u9AD8\u7EA7\u7279\u6027\u4EE5\u53CA\u81EA\u5B9A\u4E49\u529F\u80FD. \u6BD4\u5982\u4F60\u53EF\u4EE5\u505A hardware-in-the-loop \u6D4B\u8BD5.
simedtdlg.SimExt.noExtensions = \u65E0\u6269\u5C55\u5B9A\u4E49\u9879.
simedtdlg.border.Atmoscond = \u5927\u6C14\u6761\u4EF6 simedtdlg.border.Atmoscond = \u5927\u6C14\u6761\u4EF6
simedtdlg.border.Launchrod = \u53D1\u5C04\u67B6 simedtdlg.border.Launchrod = \u53D1\u5C04\u67B6
simedtdlg.border.Simlist = \u4EFF\u771F\u76D1\u542C\u5668 simedtdlg.border.SimExt = \u6A21\u62DF\u6269\u5C55
simedtdlg.border.Simopt = \u4EFF\u771F\u9009\u9879 simedtdlg.border.Simopt = \u4EFF\u771F\u9009\u9879
simedtdlg.but.add = \u6DFB\u52A0 simedtdlg.but.add = \u6DFB\u52A0
simedtdlg.but.remove = \u79FB\u9664 simedtdlg.but.remove = \u79FB\u9664
@ -1725,9 +1827,14 @@ simedtdlg.but.savedefault = \u8BBE\u4E3A\u9ED8\u8BA4
simedtdlg.but.ttip.resettodefault = \u91CD\u7F6E\u65F6\u95F4\u6B65\u957F\u4E3A\u7F3A\u7701\u503C ( simedtdlg.but.ttip.resettodefault = \u91CD\u7F6E\u65F6\u95F4\u6B65\u957F\u4E3A\u7F3A\u7701\u503C (
simedtdlg.chart.Simflight = \u5DF2\u4EFF\u771F\u7684\u98DE\u884C simedtdlg.chart.Simflight = \u5DF2\u4EFF\u771F\u7684\u98DE\u884C
simedtdlg.checkbox.InterStdAtmosphere = \u4F7F\u7528\u56FD\u9645\u6807\u51C6\u5927\u6C14\u6A21\u578B simedtdlg.checkbox.InterStdAtmosphere = \u4F7F\u7528\u56FD\u9645\u6807\u51C6\u5927\u6C14\u6A21\u578B
simedtdlg.checkbox.Intowind = \u603B\u662F\u987A\u98CE\u6216\u9006\u98CE\u53D1\u5C04
simedtdlg.checkbox.ttip.InterStdAtmosphere1 = <html>\u9009\u62E9\u4F7F\u7528\u56FD\u9645\u6807\u51C6\u5927\u6C14\u6A21\u578B.<br>\u8BE5\u6A21\u578B\u7684\u5927\u6C14\u6E29\u5EA6\u4E3A simedtdlg.checkbox.ttip.InterStdAtmosphere1 = <html>\u9009\u62E9\u4F7F\u7528\u56FD\u9645\u6807\u51C6\u5927\u6C14\u6A21\u578B.<br>\u8BE5\u6A21\u578B\u7684\u5927\u6C14\u6E29\u5EA6\u4E3A
simedtdlg.checkbox.ttip.InterStdAtmosphere2 = , \u5927\u6C14\u538B\u4E3A simedtdlg.checkbox.ttip.InterStdAtmosphere2 = , \u5927\u6C14\u538B\u4E3A
simedtdlg.checkbox.ttip.InterStdAtmosphere3 = \u4E14\u5747\u4E3A\u6D77\u5E73\u9762\u503C. simedtdlg.checkbox.ttip.InterStdAtmosphere3 = \u4E14\u5747\u4E3A\u6D77\u5E73\u9762\u503C.
simedtdlg.checkbox.ttip.Intowind1 = <html>\u52FE\u9009\u540E\u53D1\u5C04\u6746\u5C06\u4F1A\u6307\u5411\u98CE\u5411.<br>
simedtdlg.checkbox.ttip.Intowind2 = 0\u89D2\u5EA6\u53D1\u5C04\u5373\u53D1\u5C04\u6746\u5782\u76F4\u5411\u4E0A. <br>
simedtdlg.checkbox.ttip.Intowind3 = \u8D1F\u53D1\u5C04\u6746\u89D2\u5EA6\u5C06\u987A\u98CE\u53D1\u5C04.<br>\u53D6\u6D88\u52FE\u9009\u672C\u9879\u540E\u4F60\u53EF\u4EE5\u6307\u5B9A\u4EFB\u610F\u53D1\u5C04\u6746\u89D2\u5EA6.
simedtdlg.checkbox.ttip.Intowind4 = \u53D6\u6D88\u52FE\u9009\u672C\u9879\u540E\u4F60\u53EF\u4EE5\u6307\u5B9A\u4EFB\u610F\u53D1\u5C04\u6746\u89D2\u5EA6.
simedtdlg.combo.ttip.Flightcfg = \u9009\u62E9\u8981\u4F7F\u7528\u7684\u98DE\u884C\u914D\u7F6E. simedtdlg.combo.ttip.Flightcfg = \u9009\u62E9\u8981\u4F7F\u7528\u7684\u98DE\u884C\u914D\u7F6E.
simedtdlg.dlg.Simres = \u4EFF\u771F\u7ED3\u679C simedtdlg.dlg.Simres = \u4EFF\u771F\u7ED3\u679C
simedtdlg.lbl.Addsimlist = \u6DFB\u52A0\u4EFF\u771F\u76D1\u542C\u5668 simedtdlg.lbl.Addsimlist = \u6DFB\u52A0\u4EFF\u771F\u76D1\u542C\u5668
@ -1753,6 +1860,7 @@ simedtdlg.lbl.Temperature = \u6E29\u5EA6:
simedtdlg.lbl.Timestep = \u65F6\u95F4\u6B65\u957F: simedtdlg.lbl.Timestep = \u65F6\u95F4\u6B65\u957F:
simedtdlg.lbl.Turbulenceintensity = \u6E4D\u6D41\u5F3A\u5EA6: simedtdlg.lbl.Turbulenceintensity = \u6E4D\u6D41\u5F3A\u5EA6:
simedtdlg.lbl.Wind = \u98CE\u573A\u6761\u4EF6 simedtdlg.lbl.Wind = \u98CE\u573A\u6761\u4EF6
simedtdlg.lbl.Winddirection = \u98CE\u5411:
simedtdlg.lbl.runsimfirst = \u8BF7\u5148\u8FD0\u884C\u4EFF\u771F simedtdlg.lbl.runsimfirst = \u8BF7\u5148\u8FD0\u884C\u4EFF\u771F
simedtdlg.lbl.ttip.Altitude = <html>\u53D1\u5C04\u9AD8\u5EA6\u57FA\u4E8E\u6D77\u5E73\u9762.<br>\u8FD9\u4F1A\u5F71\u54CD\u5927\u6C14\u6A21\u578B\u4E2D\u706B\u7BAD\u7684\u4F4D\u7F6E. simedtdlg.lbl.ttip.Altitude = <html>\u53D1\u5C04\u9AD8\u5EA6\u57FA\u4E8E\u6D77\u5E73\u9762.<br>\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.Angle = \u53D1\u5C04\u67B6\u76F8\u5BF9\u4E8E\u5782\u76F4\u65B9\u5411\u7684\u89D2\u5EA6
@ -1776,6 +1884,7 @@ simedtdlg.lbl.ttip.Timestep2 = 4\u9636\u6A21\u62DF\u65B9\u6CD5\u9
simedtdlg.lbl.ttip.Turbulenceintensity1 = <html>\u6E4D\u6D41\u5F3A\u5EA6\u8FD1\u4F3C\u4E3A\u6807\u51C6\u5DEE\u9664\u4EE5\u5E73\u5747\u98CE\u901F.<br> simedtdlg.lbl.ttip.Turbulenceintensity1 = <html>\u6E4D\u6D41\u5F3A\u5EA6\u8FD1\u4F3C\u4E3A\u6807\u51C6\u5DEE\u9664\u4EE5\u5E73\u5747\u98CE\u901F.<br>
simedtdlg.lbl.ttip.Turbulenceintensity2 = \u5178\u578B\u53D6\u503C\u8303\u56F4\u662F\u4ECE simedtdlg.lbl.ttip.Turbulenceintensity2 = \u5178\u578B\u53D6\u503C\u8303\u56F4\u662F\u4ECE
simedtdlg.lbl.ttip.Turbulenceintensity3 = \u5230 simedtdlg.lbl.ttip.Turbulenceintensity3 = \u5230
simedtdlg.lbl.ttip.Winddirection = <html>\u98CE\u5411, 0-360\u5EA6. <br>0 \u662F\u5317\u98CE,<br> 90 \u662F\u4E1C\u98CE
simedtdlg.tab.CustomExpressions = \u81EA\u5B9A\u4E49\u8868\u8FBE\u5F0F simedtdlg.tab.CustomExpressions = \u81EA\u5B9A\u4E49\u8868\u8FBE\u5F0F
simedtdlg.tab.Exportdata = \u8F93\u51FA\u6570\u636E simedtdlg.tab.Exportdata = \u8F93\u51FA\u6570\u636E
simedtdlg.tab.Launchcond = \u53D1\u5C04\u6761\u4EF6 simedtdlg.tab.Launchcond = \u53D1\u5C04\u6761\u4EF6
@ -1804,6 +1913,8 @@ simpanel.col.Maxacceleration = \u6700\u5927\u52A0\u901F\u5EA6
simpanel.col.Maxvelocity = \u6700\u5927\u901F\u5EA6 simpanel.col.Maxvelocity = \u6700\u5927\u901F\u5EA6
simpanel.col.Motors = \u53D1\u52A8\u673A simpanel.col.Motors = \u53D1\u52A8\u673A
simpanel.col.Name = \u540D\u79F0 simpanel.col.Name = \u540D\u79F0
simpanel.col.OptimumCoastTime = \u6700\u957F\u5EF6\u6EDE\u65F6\u95F4
simpanel.col.OptimumCoastTime.ttip = \u4ECE\u6700\u540E\u4E00\u7EA7\u53D1\u52A8\u673A\u71C3\u5C3D\u81F3\u8FBE\u5230\u6700\u9AD8\u9AD8\u5EA6\u7684\u65F6\u95F4.
simpanel.col.Timetoapogee = \u6700\u9AD8\u70B9\u65F6\u95F4 simpanel.col.Timetoapogee = \u6700\u9AD8\u70B9\u65F6\u95F4
simpanel.col.Velocityatdeploy = \u6709\u6548\u8D1F\u8377\u901F\u5EA6 simpanel.col.Velocityatdeploy = \u6709\u6548\u8D1F\u8377\u901F\u5EA6
simpanel.col.Velocityoffrod = \u79BB\u67B6\u901F\u5EA6 simpanel.col.Velocityoffrod = \u79BB\u67B6\u901F\u5EA6

View File

@ -84,6 +84,8 @@ public class RocksimCommonConstants {
public static final String RING_TAIL = "RingTail"; public static final String RING_TAIL = "RingTail";
public static final String EXTERNAL_POD = "ExternalPod"; public static final String EXTERNAL_POD = "ExternalPod";
public static final String TEXTURE = "Texture"; public static final String TEXTURE = "Texture";
public static final String TUBE_COUNT = "TubeCount";
public static final String MAX_TUBES_ALLOWED = "MaxTubesAllowed";
/** /**
* Length conversion. Rocksim is in millimeters, OpenRocket in meters. * Length conversion. Rocksim is in millimeters, OpenRocket in meters.

View File

@ -15,6 +15,7 @@ import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.rocketcomponent.Streamer; import net.sf.openrocket.rocketcomponent.Streamer;
import net.sf.openrocket.rocketcomponent.Transition; import net.sf.openrocket.rocketcomponent.Transition;
import net.sf.openrocket.rocketcomponent.TubeCoupler; import net.sf.openrocket.rocketcomponent.TubeCoupler;
import net.sf.openrocket.rocketcomponent.TubeFinSet;
import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAccessorType;
@ -53,10 +54,11 @@ public class BodyTubeDTO extends BasePartDTO implements AttachableParts {
@XmlElementRef(name = RocksimCommonConstants.LAUNCH_LUG, type = LaunchLugDTO.class), @XmlElementRef(name = RocksimCommonConstants.LAUNCH_LUG, type = LaunchLugDTO.class),
@XmlElementRef(name = RocksimCommonConstants.FIN_SET, type = FinSetDTO.class), @XmlElementRef(name = RocksimCommonConstants.FIN_SET, type = FinSetDTO.class),
@XmlElementRef(name = RocksimCommonConstants.CUSTOM_FIN_SET, type = CustomFinSetDTO.class), @XmlElementRef(name = RocksimCommonConstants.CUSTOM_FIN_SET, type = CustomFinSetDTO.class),
@XmlElementRef(name = RocksimCommonConstants.TUBE_FIN_SET, type = TubeFinSetDTO.class),
@XmlElementRef(name = RocksimCommonConstants.STREAMER, type = StreamerDTO.class), @XmlElementRef(name = RocksimCommonConstants.STREAMER, type = StreamerDTO.class),
@XmlElementRef(name = RocksimCommonConstants.PARACHUTE, type = ParachuteDTO.class), @XmlElementRef(name = RocksimCommonConstants.PARACHUTE, type = ParachuteDTO.class),
@XmlElementRef(name = RocksimCommonConstants.MASS_OBJECT, type = MassObjectDTO.class)}) @XmlElementRef(name = RocksimCommonConstants.MASS_OBJECT, type = MassObjectDTO.class)})
List<BasePartDTO> attachedParts = new ArrayList<BasePartDTO>(); List<BasePartDTO> attachedParts = new ArrayList();
/** /**
* Constructor. * Constructor.
@ -121,6 +123,8 @@ public class BodyTubeDTO extends BasePartDTO implements AttachableParts {
attachedParts.add(new CustomFinSetDTO((FreeformFinSet) rocketComponents)); attachedParts.add(new CustomFinSetDTO((FreeformFinSet) rocketComponents));
} else if (rocketComponents instanceof FinSet) { } else if (rocketComponents instanceof FinSet) {
attachedParts.add(new FinSetDTO((FinSet) rocketComponents)); attachedParts.add(new FinSetDTO((FinSet) rocketComponents));
} else if (rocketComponents instanceof TubeFinSet) {
attachedParts.add(new TubeFinSetDTO((TubeFinSet) rocketComponents));
} }
} }
} }

View File

@ -0,0 +1,109 @@
package net.sf.openrocket.file.rocksim.export;
import net.sf.openrocket.file.rocksim.RocksimCommonConstants;
import net.sf.openrocket.rocketcomponent.TubeFinSet;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
* This class models an XML element for a Rocksim TubeFinSet.
*/
@XmlRootElement(name = RocksimCommonConstants.TUBE_FIN_SET)
@XmlAccessorType(XmlAccessType.FIELD)
public class TubeFinSetDTO extends BasePartDTO {
@XmlElement(name = RocksimCommonConstants.OD)
private double od = 0d;
@XmlElement(name = RocksimCommonConstants.ID)
private double id = 0d;
@XmlElement(name = RocksimCommonConstants.TUBE_COUNT)
private int tubeCount = 0;
@XmlElement(name = RocksimCommonConstants.MAX_TUBES_ALLOWED)
private int maxTubeCount = 0;
/**
* Default constructor.
*/
public TubeFinSetDTO() {
}
/**
* Copy constructor. Fully populates this instance with values taken from the OR TubeFinSet.
*
* @param theORTubeFinSet The OR TubeFinSet component to be serialized in Rocksim format
*/
public TubeFinSetDTO(TubeFinSet theORTubeFinSet) {
super(theORTubeFinSet);
setId(theORTubeFinSet.getInnerRadius() * RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_RADIUS);
setOd(theORTubeFinSet.getOuterRadius() * RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_RADIUS);
setRadialAngle(theORTubeFinSet.getBaseRotation());
setTubeCount(theORTubeFinSet.getFinCount());
}
/**
* Set the outer diameter of the tube fin(s).
*
* @return diameter in meters
*/
public double getOd() {
return od;
}
/**
* Set the outer diameter of the tube fin(s).
*
* @param theOd diameter in meters
*/
public void setOd(double theOd) {
od = theOd;
}
/**
* Get the inner diameter of the tube fin(s).
*
* @return diameter in meters
*/
public double getId() {
return id;
}
/**
* Set the inner diameter of the tube fin(s).
*
* @param theId diameter in meters
*/
public void setId(double theId) {
id = theId;
}
/**
* Get the tube fin count.
*
* @return # tube fins
*/
public int getTubeCount() {
return tubeCount;
}
/**
* Set the tube fin count.
*
* @param theTubeCount # tube fins
*/
public void setTubeCount(final int theTubeCount) {
tubeCount = theTubeCount;
maxTubeCount = tubeCount;
}
/**
* Get the max tube fin count. Since OR doesn't have this concept, just set it to the actual count.
*
* @return # tube fins
*/
public int getMaxTubeCount() {
return maxTubeCount;
}
}

View File

@ -77,7 +77,7 @@ class AttachedPartsHandler extends AbstractElementHandler {
return new SubAssemblyHandler(context, component); return new SubAssemblyHandler(context, component);
} }
if (RocksimCommonConstants.TUBE_FIN_SET.equals(element)) { if (RocksimCommonConstants.TUBE_FIN_SET.equals(element)) {
warnings.add("Tube fins are not currently supported. Ignoring."); return new TubeFinSetHandler(context, component, warnings);
} }
if (RocksimCommonConstants.RING_TAIL.equals(element)) { if (RocksimCommonConstants.RING_TAIL.equals(element)) {
warnings.add("Ring tails are not currently supported. Ignoring."); warnings.add("Ring tails are not currently supported. Ignoring.");

View File

@ -0,0 +1,119 @@
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.rocksim.RocksimFinishCode;
import net.sf.openrocket.file.simplesax.ElementHandler;
import net.sf.openrocket.file.simplesax.PlainTextHandler;
import net.sf.openrocket.material.Material;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.rocketcomponent.TubeFinSet;
import org.xml.sax.SAXException;
import java.util.HashMap;
/**
* Rocksim import SAX handler for Tube Fin Sets.
*/
public class TubeFinSetHandler extends PositionDependentHandler<TubeFinSet> {
/**
* The OpenRocket TubeFinSet instance.
*/
private final TubeFinSet tubeFin;
/**
* Constructor.
*
* @param c the parent
* @param warnings the warning set
*
* @throws IllegalArgumentException thrown if <code>c</code> is null
*/
public TubeFinSetHandler(DocumentLoadingContext context, RocketComponent c, WarningSet warnings) throws IllegalArgumentException {
super(context);
if (c == null) {
throw new IllegalArgumentException("The parent component of a tube fin may not be null.");
}
tubeFin = new TubeFinSet();
if (isCompatible(c, TubeFinSet.class, warnings)) {
c.addChild(tubeFin);
}
}
/**
* Set the relative position onto the component.
*
* @param position the OpenRocket position
*/
@Override
protected void setRelativePosition(final RocketComponent.Position position) {
tubeFin.setRelativePosition(position);
}
/**
* Get the OR instance after the XML parsing is done.
*
* @return a TubeFinSet instance
*/
@Override
protected TubeFinSet getComponent() {
return tubeFin;
}
/**
* Get the type of material the tube fins are constructed from.
*
* @return Material.Type
*/
@Override
protected Material.Type getMaterialType() {
return Material.Type.BULK;
}
/**
* {@inheritDoc}
*/
@Override
public ElementHandler openElement(final String element, final HashMap<String, String> attributes, final WarningSet warnings) throws SAXException {
return PlainTextHandler.INSTANCE;
}
/**
* {@inheritDoc}
*/
@Override
public void closeElement(String element, HashMap<String, String> attributes, String content, WarningSet warnings)
throws SAXException {
super.closeElement(element, attributes, content, warnings);
try {
if (RocksimCommonConstants.OD.equals(element)) {
tubeFin.setOuterRadius(Math.max(0, Double.parseDouble(content) / RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_RADIUS));
}
if (RocksimCommonConstants.ID.equals(element)) {
tubeFin.setInnerRadius(Math.max(0, Double.parseDouble(content) / RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_RADIUS));
}
if (RocksimCommonConstants.LEN.equals(element)) {
tubeFin.setLength(Math.max(0, Double.parseDouble(content) / RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_LENGTH));
}
if (RocksimCommonConstants.MATERIAL.equals(element)) {
setMaterialName(content);
}
if (RocksimCommonConstants.RADIAL_ANGLE.equals(element)) {
tubeFin.setBaseRotation(Double.parseDouble(content));
}
if (RocksimCommonConstants.TUBE_COUNT.equals(element)) {
tubeFin.setFinCount(Integer.parseInt(content));
}
if (RocksimCommonConstants.FINISH_CODE.equals(element)) {
tubeFin.setFinish(RocksimFinishCode.fromCode(Integer.parseInt(content)).asOpenRocket());
}
} catch (NumberFormatException nfe) {
warnings.add("Could not convert " + element + " value of " + content + ". It is expected to be a number.");
}
}
}

View File

@ -122,7 +122,7 @@ public class RocksimLoaderTest extends BaseTestCase {
Assert.assertEquals(0.185d, stage1.getOverrideMass(), 0.001); Assert.assertEquals(0.185d, stage1.getOverrideMass(), 0.001);
Assert.assertTrue(stage1.isCGOverridden()); Assert.assertTrue(stage1.isCGOverridden());
Assert.assertEquals(0.3d, stage1.getOverrideCG().x, 0.001); Assert.assertEquals(0.3d, stage1.getOverrideCG().x, 0.001);
Assert.assertEquals(4, loader.getWarnings().size()); Assert.assertEquals(3, loader.getWarnings().size());
Assert.assertEquals(1, stage2.getChildCount()); Assert.assertEquals(1, stage2.getChildCount());
Assert.assertEquals("2nd Stage Tube", stage2.getChild(0).getName()); Assert.assertEquals("2nd Stage Tube", stage2.getChild(0).getName());

View File

@ -0,0 +1,84 @@
package net.sf.openrocket.file.rocksim.importt;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.file.rocksim.RocksimCommonConstants;
import net.sf.openrocket.rocketcomponent.BodyTube;
import net.sf.openrocket.rocketcomponent.ExternalComponent;
import net.sf.openrocket.rocketcomponent.TubeFinSet;
import org.junit.Assert;
import java.util.HashMap;
/**
* Test for importing a Rocksim TubeFinSet into OR.
*/
public class TubeFinSetHandlerTest {
/**
* Method: asOpenRocket(WarningSet warnings)
*
* @throws Exception thrown if something goes awry
*/
@org.junit.Test
public void testAsOpenRocket() throws Exception {
WarningSet warnings = new WarningSet();
TubeFinSetHandler handler = new TubeFinSetHandler(null, new BodyTube(), warnings);
HashMap<String, String> attributes = new HashMap<>();
handler.closeElement("Name", attributes, "The name", warnings);
handler.closeElement("TubeCount", attributes, "4", warnings);
handler.closeElement("RadialAngle", attributes, ".123", warnings);
TubeFinSet fins = handler.getComponent();
Assert.assertNotNull(fins);
Assert.assertEquals(0, warnings.size());
Assert.assertEquals("The name", fins.getName());
Assert.assertEquals(4, fins.getFinCount());
Assert.assertEquals(.123d, fins.getBaseRotation(), 0d);
handler.closeElement("OD", attributes, "-1", warnings);
Assert.assertEquals(0d, fins.getOuterRadius(), 0.001);
handler.closeElement("OD", attributes, "0", warnings);
Assert.assertEquals(0d, fins.getOuterRadius(), 0.001);
handler.closeElement("OD", attributes, "75", warnings);
Assert.assertEquals(75d / RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_RADIUS, fins.getOuterRadius(), 0.001);
handler.closeElement("OD", attributes, "foo", warnings);
Assert.assertEquals(1, warnings.size());
warnings.clear();
handler.closeElement("ID", attributes, "-1", warnings);
Assert.assertEquals(0d, fins.getInnerRadius(), 0.001);
handler.closeElement("ID", attributes, "0", warnings);
Assert.assertEquals(0d, fins.getInnerRadius(), 0.001);
handler.closeElement("ID", attributes, "75", warnings);
Assert.assertEquals(75d / RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_RADIUS, fins.getInnerRadius(), 0.001);
handler.closeElement("ID", attributes, "foo", warnings);
Assert.assertEquals(1, warnings.size());
warnings.clear();
handler.closeElement("Len", attributes, "-1", warnings);
Assert.assertEquals(0d, fins.getLength(), 0.001);
handler.closeElement("Len", attributes, "10", warnings);
Assert.assertEquals(10d / RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_LENGTH, fins.getLength(), 0.001);
handler.closeElement("Len", attributes, "10.0", warnings);
Assert.assertEquals(10d / RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_LENGTH, fins.getLength(), 0.001);
handler.closeElement("Len", attributes, "foo", warnings);
Assert.assertEquals(1, warnings.size());
warnings.clear();
handler.closeElement("FinishCode", attributes, "-1", warnings);
Assert.assertEquals(ExternalComponent.Finish.NORMAL, fins.getFinish());
handler.closeElement("FinishCode", attributes, "100", warnings);
Assert.assertEquals(ExternalComponent.Finish.NORMAL, fins.getFinish());
handler.closeElement("FinishCode", attributes, "foo", warnings);
Assert.assertEquals(1, warnings.size());
warnings.clear();
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -80,11 +80,19 @@ header("Content-type: text/plain");
$version = $_GET["version"]; $version = $_GET["version"];
$updates = ""; $updates = "";
$unstable = "14.11"; $unstable = "15.03";
$stable = "1.0.0"; $stable = "1.0.0";
if (preg_match("/^14.06$/", $version)) { if (preg_match("/^14.11$/", $version)) {
$updates = "Version: " . $unstable . "\n" .
"10: Experimental support for TubeFins\n".
"10: Scriptable simulation extensions\n".
"10: User configurable default mach\n".
"6: Updated thrustcurves\n" .
"4: Fixed a few bugs\n" .
"";
} else if (preg_match("/^14.06$/", $version)) {
$updates = "Version: " . $unstable . "\n" . $updates = "Version: " . $unstable . "\n" .
"6: Updated thrustcurves\n" . "6: Updated thrustcurves\n" .
"4: Fixed a few bugs\n" . "4: Fixed a few bugs\n" .

View File

@ -48,6 +48,9 @@
<div class="content"> <div class="content">
<div class="news"> <div class="news">
<h2>Recent news:</h2> <h2>Recent news:</h2>
<p><span class="date">28.03.2015:</span> Version 15.03 is
<a href="download.html">released</a>! This release contains scriptable simulation extensions and experimental support for tube fins along with many additional improvements.
</p>
<p><span class="date">02.11.2014:</span> Version 14.11 is <p><span class="date">02.11.2014:</span> Version 14.11 is
<a href="download.html">released</a>! This release contains very few changes. Thrustcurves have been updated and now include AeroTech DMS motors. A few bugs have been fixed. <a href="download.html">released</a>! This release contains very few changes. Thrustcurves have been updated and now include AeroTech DMS motors. A few bugs have been fixed.
</p> </p>
@ -87,20 +90,20 @@
<a href="http://sourceforge.net/donate/index.php?group_id=260357"><img src="project-support.jpg" width="88" height="32" alt="Support This Project" /></a> <a href="http://sourceforge.net/donate/index.php?group_id=260357"><img src="project-support.jpg" width="88" height="32" alt="Support This Project" /></a>
</div> </div>
<div class="downloadbox"> <div class="downloadbox">
<a class="main" href="https://sourceforge.net/projects/openrocket/files/openrocket/14.11/OpenRocket-14.11.jar/download"> <a class="main" href="https://sourceforge.net/projects/openrocket/files/openrocket/15.03/OpenRocket-15.03.jar/download">
<strong>Download now!</strong> <strong>Download now!</strong>
<span>OpenRocket-14.11.jar</span> <span>OpenRocket-15.03.jar</span>
</a> </a>
<span class="alternative"> <span class="alternative">
<a href="https://sourceforge.net/projects/openrocket/files/openrocket/14.11/ReleaseNotes/view">Release notes</a> | <a href="https://sourceforge.net/projects/openrocket/files/openrocket/15.03/ReleaseNotes/view">Release notes</a> |
<a href="https://sourceforge.net/projects/openrocket/files/openrocket/14.11/OpenRocket-14.11-src.zip/download">Source code</a> <a href="https://sourceforge.net/projects/openrocket/files/openrocket/15.03/OpenRocket-15.03-src.zip/download">Source code</a>
</span> </span>
</div> </div>
<p>OpenRocket can be started in most graphical environments (including <p>OpenRocket can be started in most graphical environments (including
Windows) by double-clicking the package icon. No installation is Windows) by double-clicking the package icon. No installation is
required.</p> required.</p>
<p>From the command line OpenRocket can be started by <p>From the command line OpenRocket can be started by
<span class="command">java -jar OpenRocket-14.11.jar</span></p> <span class="command">java -jar OpenRocket-15.03.jar</span></p>
<h3>Android version</h3> <h3>Android version</h3>
<p>The Android version allows opening OpenRocket files, viewing <p>The Android version allows opening OpenRocket files, viewing
simulations and motors. Later versions will allow running simulations and motors. Later versions will allow running
@ -115,7 +118,7 @@
<ol> <ol>
<li>Go to <em>Settings</em> &rarr; <em>Applications</em> and <li>Go to <em>Settings</em> &rarr; <em>Applications</em> and
check <em>Unknown sources</em>.</li> check <em>Unknown sources</em>.</li>
<li>Download <a href="https://sourceforge.net/projects/openrocket/files/openrocket/12.09/OpenRocket-Android-12.09.apk/download">OpenRocket-Android-12.09.apk</a> <li>Download <a href="https://sourceforge.net/projects/openrocket/files/openrocket/13.11/OpenRocket-Android-13.11.apk/download">OpenRocket-Android-13.11.apk</a>
on your device and accept installation.</li> on your device and accept installation.</li>
</ol> </ol>
</div> </div>

View File

@ -49,12 +49,12 @@
<h2>Introduction</h2> <h2>Introduction</h2>
<div class="rightpane"> <div class="rightpane">
<div class="downloadbox"> <div class="downloadbox">
<a class="main" href="https://sourceforge.net/projects/openrocket/files/openrocket/14.11/OpenRocket-14.11.jar/download"> <a class="main" href="https://sourceforge.net/projects/openrocket/files/openrocket/15.03/OpenRocket-15.03.jar/download">
<strong>Download now!</strong> <strong>Download now!</strong>
<span>OpenRocket-14.11.jar</span> <span>OpenRocket-15.03.jar</span>
</a> </a>
<span class="alternative"> <span class="alternative">
<a href="https://sourceforge.net/projects/openrocket/files/openrocket/14.11/ReleaseNotes/view">Release notes</a> | <a href="https://sourceforge.net/projects/openrocket/files/openrocket/15.03/ReleaseNotes/view">Release notes</a> |
<a href="download.html">Other versions</a> <a href="download.html">Other versions</a>
</span> </span>
</div> </div>
@ -108,6 +108,9 @@ Profiler</a>.
<div class="clear"></div> <div class="clear"></div>
<div class="news"> <div class="news">
<h2>News</h2> <h2>News</h2>
<p><span class="date">28.03.2015:</span> Version 15.03 is
<a href="download.html">released</a>! This release contains scriptable simulation extensions and experimental support for tube fins along with many additional improvements.
</p>
<p><span class="date">02.11.2014:</span> Version 14.11 is <p><span class="date">02.11.2014:</span> Version 14.11 is
<a href="download.html">released</a>! This release contains very few changes. Thrustcurves have been updated and now include AeroTech DMS motors. A few bugs have been fixed. <a href="download.html">released</a>! This release contains very few changes. Thrustcurves have been updated and now include AeroTech DMS motors. A few bugs have been fixed.
</p> </p>

View File

@ -1,5 +1,5 @@
<set version="14.11"> <set version="15.03">
<set androidversion="12.09"> <set androidversion="13.11">
<def name="downloadbox"> <def name="downloadbox">
<div class="downloadbox"> <div class="downloadbox">

View File

@ -8,6 +8,10 @@
</if> </if>
<!--- Remember to move the position of "onlyrecent" below! ---> <!--- Remember to move the position of "onlyrecent" below! --->
<p><span class="date">28.03.2015:</span> Version 15.03 is
<a href="download.html">released</a>! This release contains scriptable simulation extensions and experimental support for tube fins along with many additional improvements.
</p>
<p><span class="date">02.11.2014:</span> Version 14.11 is <p><span class="date">02.11.2014:</span> Version 14.11 is
<a href="download.html">released</a>! This release contains very few changes. Thrustcurves have been updated and now include AeroTech DMS motors. A few bugs have been fixed. <a href="download.html">released</a>! This release contains very few changes. Thrustcurves have been updated and now include AeroTech DMS motors. A few bugs have been fixed.
</p> </p>

View File

@ -1,9 +1,13 @@
package net.sf.openrocket.gui.adaptors; package net.sf.openrocket.gui.adaptors;
import java.util.ArrayList;
import java.util.EventObject; import java.util.EventObject;
import javax.swing.AbstractListModel; import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel; import javax.swing.ComboBoxModel;
import javax.swing.MutableComboBoxModel;
import org.jfree.util.Log;
import net.sf.openrocket.util.ChangeSource; import net.sf.openrocket.util.ChangeSource;
import net.sf.openrocket.util.Reflection; import net.sf.openrocket.util.Reflection;
@ -11,7 +15,7 @@ import net.sf.openrocket.util.StateChangeListener;
public class EnumModel<T extends Enum<T>> extends AbstractListModel public class EnumModel<T extends Enum<T>> extends AbstractListModel
implements ComboBoxModel, StateChangeListener { implements ComboBoxModel, MutableComboBoxModel, StateChangeListener {
private final ChangeSource source; private final ChangeSource source;
private final String valueName; private final String valueName;
@ -20,6 +24,8 @@ public class EnumModel<T extends Enum<T>> extends AbstractListModel
private final Enum<T>[] values; private final Enum<T>[] values;
private Enum<T> currentValue = null; private Enum<T> currentValue = null;
ArrayList<Enum<T>> displayedValues = new ArrayList<Enum<T>>();
private final Reflection.Method getMethod; private final Reflection.Method getMethod;
private final Reflection.Method setMethod; private final Reflection.Method setMethod;
@ -60,6 +66,9 @@ public class EnumModel<T extends Enum<T>> extends AbstractListModel
else else
this.values = enumClass.getEnumConstants(); this.values = enumClass.getEnumConstants();
for (Enum<T> e : this.values){
this.displayedValues.add( e );
}
this.nullText = nullText; this.nullText = nullText;
stateChanged(null); // Update current value stateChanged(null); // Update current value
@ -99,20 +108,20 @@ public class EnumModel<T extends Enum<T>> extends AbstractListModel
@Override @Override
public Object getElementAt(int index) { public Object getElementAt(int index) {
if( ( index < 0 ) || ( index >= this.displayedValues.size())){
return nullText; // bad parameter
}
if (values[index] == null) if (values[index] == null)
return nullText; return nullText;
return values[index]; return displayedValues.get( index);
} }
@Override @Override
public int getSize() { public int getSize() {
return values.length; return displayedValues.size();
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public void stateChanged(EventObject e) { public void stateChanged(EventObject e) {
@ -130,4 +139,31 @@ public class EnumModel<T extends Enum<T>> extends AbstractListModel
return "EnumModel["+source.getClass().getCanonicalName()+":"+valueName+"]"; return "EnumModel["+source.getClass().getCanonicalName()+":"+valueName+"]";
} }
@Override
public void addElement(Object item) {
// Not actually allowed. The model starts out with all the enums, and only allows hiding some.
}
@Override
public void removeElement(Object obj) {
if( null == obj ){
return;
}
this.displayedValues.remove( obj );
}
@Override
public void insertElementAt(Object item, int index) {
// Not actually allowed. The model starts out with all the enums, and only allows hiding some.
}
@Override
public void removeElementAt(int index) {
if( ( index < 0 ) || ( index >= this.displayedValues.size())){
return; // bad parameter
}
this.displayedValues.remove( index );
}
} }

View File

@ -4,6 +4,7 @@ package net.sf.openrocket.gui.configdialog;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import javax.swing.ComboBoxModel;
import javax.swing.JButton; import javax.swing.JButton;
import javax.swing.JComboBox; import javax.swing.JComboBox;
import javax.swing.JLabel; import javax.swing.JLabel;
@ -25,6 +26,7 @@ import net.sf.openrocket.gui.components.UnitSelector;
import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.material.Material; import net.sf.openrocket.material.Material;
import net.sf.openrocket.rocketcomponent.DeploymentConfiguration; import net.sf.openrocket.rocketcomponent.DeploymentConfiguration;
import net.sf.openrocket.rocketcomponent.DeploymentConfiguration.DeployEvent;
import net.sf.openrocket.rocketcomponent.Parachute; import net.sf.openrocket.rocketcomponent.Parachute;
import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.startup.Application; import net.sf.openrocket.startup.Application;
@ -85,7 +87,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
//// Material: //// Material:
panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Material"))); panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Material")));
JComboBox combo = new JComboBox(new MaterialModel(panel, component, JComboBox<?> combo = new JComboBox(new MaterialModel(panel, component,
Material.Type.SURFACE)); Material.Type.SURFACE));
combo.setToolTipText(trans.get("ParachuteCfg.combo.MaterialModel")); combo.setToolTipText(trans.get("ParachuteCfg.combo.MaterialModel"));
panel.add(combo, "spanx 3, growx, wrap 30lp"); panel.add(combo, "spanx 3, growx, wrap 30lp");
@ -193,7 +195,13 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Deploysat") + " " + CommonStrings.dagger), ""); panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Deploysat") + " " + CommonStrings.dagger), "");
DeploymentConfiguration deploymentConfig = parachute.getDeploymentConfiguration().getDefault(); DeploymentConfiguration deploymentConfig = parachute.getDeploymentConfiguration().getDefault();
combo = new JComboBox(new EnumModel<DeploymentConfiguration.DeployEvent>(deploymentConfig, "DeployEvent")); // this issues a warning because EnumModel ipmlements ComboBoxModel without a parameter...
ComboBoxModel<DeploymentConfiguration.DeployEvent> deployOptionsModel = new EnumModel<DeploymentConfiguration.DeployEvent>(deploymentConfig, "DeployEvent");
combo = new JComboBox<DeploymentConfiguration.DeployEvent>( deployOptionsModel );
if( (component.getStageNumber() + 1 ) == d.getRocket().getStageCount() ){
// This is the bottom stage: Restrict deployment options.
combo.removeItem( DeployEvent.LOWER_STAGE_SEPARATION );
}
panel.add(combo, "spanx 3, growx, wrap"); panel.add(combo, "spanx 3, growx, wrap");
// ... and delay // ... and delay

View File

@ -13,6 +13,8 @@ import net.sf.openrocket.rocketcomponent.RocketComponent;
public abstract class RecoveryDeviceConfig extends RocketComponentConfig { public abstract class RecoveryDeviceConfig extends RocketComponentConfig {
private static final long serialVersionUID = 7263235700953855062L;
protected final List<JComponent> altitudeComponents = new ArrayList<JComponent>(); protected final List<JComponent> altitudeComponents = new ArrayList<JComponent>();
public RecoveryDeviceConfig(OpenRocketDocument d, RocketComponent component) { public RecoveryDeviceConfig(OpenRocketDocument d, RocketComponent component) {

View File

@ -4,6 +4,7 @@ package net.sf.openrocket.gui.configdialog;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import javax.swing.ComboBoxModel;
import javax.swing.JButton; import javax.swing.JButton;
import javax.swing.JCheckBox; import javax.swing.JCheckBox;
import javax.swing.JComboBox; import javax.swing.JComboBox;
@ -26,6 +27,7 @@ import net.sf.openrocket.material.Material;
import net.sf.openrocket.rocketcomponent.DeploymentConfiguration; import net.sf.openrocket.rocketcomponent.DeploymentConfiguration;
import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.rocketcomponent.Streamer; import net.sf.openrocket.rocketcomponent.Streamer;
import net.sf.openrocket.rocketcomponent.DeploymentConfiguration.DeployEvent;
import net.sf.openrocket.startup.Application; import net.sf.openrocket.startup.Application;
import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.unit.UnitGroup;
@ -196,6 +198,10 @@ public class StreamerConfig extends RecoveryDeviceConfig {
DeploymentConfiguration deploymentConfig = streamer.getDeploymentConfiguration().getDefault(); DeploymentConfiguration deploymentConfig = streamer.getDeploymentConfiguration().getDefault();
combo = new JComboBox(new EnumModel<DeploymentConfiguration.DeployEvent>(deploymentConfig, "DeployEvent")); combo = new JComboBox(new EnumModel<DeploymentConfiguration.DeployEvent>(deploymentConfig, "DeployEvent"));
if( (component.getStageNumber() + 1 ) == d.getRocket().getStageCount() ){
// This is the bottom stage. restrict deployment options.
combo.removeItem( DeployEvent.LOWER_STAGE_SEPARATION );
}
panel.add(combo, "spanx 3, growx, wrap"); panel.add(combo, "spanx 3, growx, wrap");
// ... and delay // ... and delay

View File

@ -76,7 +76,11 @@ public class DeploymentSelectionDialog extends JDialog {
//// Deploys at: //// Deploys at:
panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Deploysat")), ""); panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Deploysat")), "");
final JComboBox event = new JComboBox(new EnumModel<DeployEvent>(newConfiguration, "DeployEvent")); final JComboBox<?> event = new JComboBox(new EnumModel<DeployEvent>(newConfiguration, "DeployEvent"));
if( (component.getStageNumber() + 1 ) == rocket.getStageCount() ){
// This is the bottom stage: Restrict deployment options.
event.removeItem( DeployEvent.LOWER_STAGE_SEPARATION );
}
panel.add(event, "spanx 3, growx, wrap"); panel.add(event, "spanx 3, growx, wrap");
// ... and delay // ... and delay