diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index fdb333378..4c14490a7 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -1340,11 +1340,7 @@ StorageOptChooser.lbl.Simdatatostore = Simulated data to store: StorageOptChooser.rdbut.Allsimdata = All simulated data StorageOptChooser.lbl.longA1 = Store all simulated data.
StorageOptChooser.lbl.longA2 = This can result in very large files! -StorageOptChooser.rdbut.Every = Every -StorageOptChooser.lbl.longB1 = Store plottable values approximately this far apart.
-StorageOptChooser.lbl.longB2 = Larger values result in smaller files. -StorageOptChooser.lbl.seconds = seconds -StorageOptChooser.rdbut.Onlyprimfig = Only primary figures +StorageOptChooser.rdbut.Onlysummarydata = Only summary data StorageOptChooser.lbl.longC1 = Store only the values shown in the summary table.
StorageOptChooser.lbl.longC2 = This results in the smallest files. StorageOptChooser.lbl.longD1 = An estimate on how large the resulting file would be with the present options. @@ -1886,6 +1882,7 @@ Warning.PODSET_FORWARD = In-line podset forward of parent airframe component Warning.PODSET_OVERLAP = In-line podset overlaps parent airframe component Warning.THICK_FIN = Thick fins may not simulate accurately. Warning.JAGGED_EDGED_FIN = Jagged-edged fin predictions may be inaccurate. +Warning.ZERO_AREA_FIN = Fins with zero area will not affect aerodynamics Warning.LISTENERS_AFFECTED = Listeners modified the flight simulation Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Recovery device opened while motor still burning. Warning.FILE_INVALID_PARAMETER = Invalid parameter encountered, ignoring. diff --git a/core/resources/l10n/messages_ar.properties b/core/resources/l10n/messages_ar.properties index 2fc671466..96b73076c 100644 --- a/core/resources/l10n/messages_ar.properties +++ b/core/resources/l10n/messages_ar.properties @@ -1303,11 +1303,7 @@ StorageOptChooser.lbl.Simdatatostore = :بيانات مُحاكاة للتخزي StorageOptChooser.rdbut.Allsimdata = جميع البيانات المحاكاة StorageOptChooser.lbl.longA1 = .تخزين جميع البيانات المحاكاة
StorageOptChooser.lbl.longA2 = !يمكن أن ينتج عن ذلك ملفات كبيرة جدًا -StorageOptChooser.rdbut.Every = كل -StorageOptChooser.lbl.longB1 = .قم بتخزين القيم القابلة للرسم على مخطط بياني على مسافة متباعدة تقريبًا
-StorageOptChooser.lbl.longB2 = .القيم الأكبر ينتج عنها ملفات أصغر -StorageOptChooser.lbl.seconds = ثواني -StorageOptChooser.rdbut.Onlyprimfig = المحاكاة الأولية فقط +StorageOptChooser.rdbut.Onlysummarydata = المحاكاة الأولية فقط StorageOptChooser.lbl.longC1 = .قم بتخزين القيم المعروضة في جدول الملخص فقط
StorageOptChooser.lbl.longC2 = .ينتج عن هذا أصغر الملفات StorageOptChooser.lbl.longD1 = .تقدير لمدى حجم الملف الناتج مع الخيارات الحالية diff --git a/core/resources/l10n/messages_cs.properties b/core/resources/l10n/messages_cs.properties index 07c147f83..234e98879 100644 --- a/core/resources/l10n/messages_cs.properties +++ b/core/resources/l10n/messages_cs.properties @@ -921,10 +921,6 @@ StorageOptChooser.lbl.Simdatatostore = Simulacn StorageOptChooser.rdbut.Allsimdata = V\u0161echny data ze simulace StorageOptChooser.lbl.longA1 = Ulo\u017E v\u0161echny simulacn data.
StorageOptChooser.lbl.longA2 = Vsledek mu\u017Ee vystit ve velmi velk soubory! -StorageOptChooser.rdbut.Every = Ka\u017Ed -StorageOptChooser.lbl.longB1 = Store plottable values approximately this far apart.
-StorageOptChooser.lbl.longB2 = Vet\u0161 hodnoty vyst v men\u0161 soubory. -StorageOptChooser.lbl.seconds = sekundy StorageOptChooser.rdbut.Onlyprimfig = Pouze hlavn grafy StorageOptChooser.lbl.longC1 = Ulo\u017E pouze hodnoty ukzan v prehledu.
StorageOptChooser.lbl.longC2 = This results in the smallest files. diff --git a/core/resources/l10n/messages_de.properties b/core/resources/l10n/messages_de.properties index de6c64835..4429bbe82 100644 --- a/core/resources/l10n/messages_de.properties +++ b/core/resources/l10n/messages_de.properties @@ -979,11 +979,7 @@ StorageOptChooser.lbl.Simdatatostore = Zu speichernde Simulationsdaten: StorageOptChooser.rdbut.Allsimdata = Alle Simulationsdaten StorageOptChooser.lbl.longA1 = Speichert alle Simulationsdaten.
StorageOptChooser.lbl.longA2 = Dies kann sehr groe Dateien erzeugen! -StorageOptChooser.rdbut.Every = Alle Simulationsdaten -StorageOptChooser.lbl.longB1 = Speicher plotbare Daten in etwa diesem Abstand.
-StorageOptChooser.lbl.longB2 = Grere Werte erzeugen kleinere Dateien. -StorageOptChooser.lbl.seconds = Sekunden -StorageOptChooser.rdbut.Onlyprimfig = Nur die wichtigsten Werte +StorageOptChooser.rdbut.Onlysummarydata = Nur die wichtigsten Werte StorageOptChooser.lbl.longC1 = Speichert nur die Werte, die in der Zusammenfassung stehen.
StorageOptChooser.lbl.longC2 = Dies ergibt die kleinsten Dateien StorageOptChooser.checkbox.Compfile = Datei komprimieren diff --git a/core/resources/l10n/messages_es.properties b/core/resources/l10n/messages_es.properties index a4c3eeb43..fef931de6 100644 --- a/core/resources/l10n/messages_es.properties +++ b/core/resources/l10n/messages_es.properties @@ -1071,15 +1071,11 @@ StorageOptChooser.lbl.Simdatatostore = Datos de las simulaciones a guardar: StorageOptChooser.lbl.UsingComp = Usando la compresi\u00f3n reducimos el tama\u00f1o de los archivos. StorageOptChooser.lbl.longA1 = Almacenar todos los datos simulados.
StorageOptChooser.lbl.longA2 = Esto puede generar archivos muy grandes -StorageOptChooser.lbl.longB1 = Almacenar los valores de impresi\u00f3n de este apartado.
-StorageOptChooser.lbl.longB2 = Genera valores grandes en archivos m\u00e1s peque\u00f1os. StorageOptChooser.lbl.longC1 = Almacenar s\u00f3lo los valores en la tabla resumen.
StorageOptChooser.lbl.longC2 = Estos resultados se guardan en archivos mas peque\u00f1os. StorageOptChooser.lbl.longD1 = Con las opciones actuales puede realizarse una estamci\u00f3n del tama\u00f1o final del archivo. -StorageOptChooser.lbl.seconds = Segundos StorageOptChooser.rdbut.Allsimdata = Todos los datos simulados -StorageOptChooser.rdbut.Every = Todo -StorageOptChooser.rdbut.Onlyprimfig = S\u00f3lo figuras principales +StorageOptChooser.rdbut.Onlysummarydata = S\u00f3lo figuras principales StorageOptChooser.ttip.Saveopt = Guardar opciones Streamer.Streamer = Banderola diff --git a/core/resources/l10n/messages_fr.properties b/core/resources/l10n/messages_fr.properties index 5c118dd14..8229ba211 100644 --- a/core/resources/l10n/messages_fr.properties +++ b/core/resources/l10n/messages_fr.properties @@ -1064,15 +1064,11 @@ StorageOptChooser.lbl.Simdatatostore = Donn\u00E9es simul\u00E9es \u00E0 stocker StorageOptChooser.lbl.UsingComp = Utiliser la compression r\u00E9duit significativement la taille du fichier. StorageOptChooser.lbl.longA1 = Enregistrer toutes les donn\u00E9es des simulations.
StorageOptChooser.lbl.longA2 = Cela peut entra\u00EEner de tr\u00E8s gros fichiers! -StorageOptChooser.lbl.longB1 = Store plottable values approximately this far apart.
-StorageOptChooser.lbl.longB2 = Des valeurs plus grandes produisent des fichiers plus petits. StorageOptChooser.lbl.longC1 = Stocker seulement les valeurs montr\u00E9es dans le tableau r\u00E9capitulatif.
StorageOptChooser.lbl.longC2 = Cela produira des fichiers plus petit. StorageOptChooser.lbl.longD1 = Une estimation sur la taille qu'aurait le fichier r\u00E9sultant avec les options actuelles. -StorageOptChooser.lbl.seconds = secondes StorageOptChooser.rdbut.Allsimdata = Toutes les donn\u00E9es des simulations -StorageOptChooser.rdbut.Every = Every -StorageOptChooser.rdbut.Onlyprimfig = Seuls les chiffres primaires +StorageOptChooser.rdbut.Onlysummarydata = Seuls les chiffres primaires StorageOptChooser.ttip.Saveopt = Options de sauvegarde ! Streamer diff --git a/core/resources/l10n/messages_it.properties b/core/resources/l10n/messages_it.properties index 13f32cb2a..2a89f0235 100644 --- a/core/resources/l10n/messages_it.properties +++ b/core/resources/l10n/messages_it.properties @@ -980,11 +980,7 @@ StorageOptChooser.lbl.Simdatatostore = Dati della simulazione da salvare: StorageOptChooser.rdbut.Allsimdata = Tutti i dati della simulazione StorageOptChooser.lbl.longA1 = Salva tutti i dati della simulazione.
StorageOptChooser.lbl.longA2 = Questo puo' produrre files molto grandi! -StorageOptChooser.rdbut.Every = Ogni -StorageOptChooser.lbl.longB1 = Salva Store plottable values approximately this far apart.
-StorageOptChooser.lbl.longB2 = Valori grandi significano files piu' piccoli. -StorageOptChooser.lbl.seconds = secondi -StorageOptChooser.rdbut.Onlyprimfig = Solo figure primarie +StorageOptChooser.rdbut.Onlysummarydata = Solo figure primarie StorageOptChooser.lbl.longC1 = Salva solo i valori mostrati nella tabella riassuntiva.
StorageOptChooser.lbl.longC2 = Questo produce i files piu' piccoli. StorageOptChooser.checkbox.Compfile = Comprimi file diff --git a/core/resources/l10n/messages_ja.properties b/core/resources/l10n/messages_ja.properties index 2f4cd855c..cbd557d13 100644 --- a/core/resources/l10n/messages_ja.properties +++ b/core/resources/l10n/messages_ja.properties @@ -1010,11 +1010,7 @@ StorageOptChooser.lbl.Simdatatostore = \u30B7\u30DF\u30E5\u30EC\u30FC\u30B7\u30 StorageOptChooser.rdbut.Allsimdata = \u5168\u3066\u306E\u30B7\u30DF\u30E5\u30EC\u30FC\u30B7\u30E7\u30F3\u30C7\u30FC\u30BF StorageOptChooser.lbl.longA1 = \u5168\u3066\u306E\u30B7\u30DF\u30E5\u30EC\u30FC\u30B7\u30E7\u30F3\u30C7\u30FC\u30BF\u3092\u4FDD\u5B58
StorageOptChooser.lbl.longA2 = \u3068\u3066\u3082\u5927\u304D\u306A\u30D5\u30A1\u30A4\u30EB\u306B\u306A\u308A\u307E\u3059 -StorageOptChooser.rdbut.Every = -StorageOptChooser.lbl.longB1 = \u8FD1\u4F3C\u3057\u3066\u4FDD\u5B58
-StorageOptChooser.lbl.longB2 = \u5927\u304D\u306A\u5024\u306B\u3059\u308B\u3068\u30D5\u30A1\u30A4\u30EB\u306F\u5C0F\u3055\u304F\u306A\u308B -StorageOptChooser.lbl.seconds = \u79D2\u6BCE -StorageOptChooser.rdbut.Onlyprimfig = \u4E3B\u8981\u306A\u5024\u306E\u307F +StorageOptChooser.rdbut.Onlysummarydata = \u4E3B\u8981\u306A\u5024\u306E\u307F StorageOptChooser.lbl.longC1 = \u8868\u306B\u66F8\u304B\u308C\u3066\u3044\u308B\u5024\u306E\u307F\u4FDD\u5B58
StorageOptChooser.lbl.longC2 = \u30D5\u30A1\u30A4\u30EB\u306F\u4E00\u756A\u5C0F\u3055\u304F\u306A\u308B StorageOptChooser.checkbox.Compfile = \u30D5\u30A1\u30A4\u30EB\u306E\u5727\u7E2E diff --git a/core/resources/l10n/messages_nl.properties b/core/resources/l10n/messages_nl.properties index 00f17c0db..916df1a5d 100644 --- a/core/resources/l10n/messages_nl.properties +++ b/core/resources/l10n/messages_nl.properties @@ -1231,11 +1231,7 @@ StorageOptChooser.lbl.Simdatatostore = Gesimuleerde gegevens om op te slaan: StorageOptChooser.rdbut.Allsimdata = Alle gesimuleerde gegevens StorageOptChooser.lbl.longA1 = Sla alle gesimuleerde gegevens op.
StorageOptChooser.lbl.longA2 = Dit kan resulteren in zeer grote bestanden! -StorageOptChooser.rdbut.Every = Elke -StorageOptChooser.lbl.longB1 = Sla plottable waarden ongeveer zo ver uit elkaar op.
-StorageOptChooser.lbl.longB2 = Grotere waarden resulteren in kleinere bestanden. -StorageOptChooser.lbl.seconds = seconden -StorageOptChooser.rdbut.Onlyprimfig = Alleen primaire figuren +StorageOptChooser.rdbut.Onlysummarydata = Alleen primaire figuren StorageOptChooser.lbl.longC1 = Sla alleen de waarden op die in de overzichtstabel staan.
StorageOptChooser.lbl.longC2 = Dit resulteert in de kleinste bestanden. StorageOptChooser.lbl.longD1 = Een schatting van hoe groot het resulterende bestand zou zijn met de huidige opties. diff --git a/core/resources/l10n/messages_pl.properties b/core/resources/l10n/messages_pl.properties index 1bd476d8a..3cbcf4637 100644 --- a/core/resources/l10n/messages_pl.properties +++ b/core/resources/l10n/messages_pl.properties @@ -924,11 +924,7 @@ ComponentInfo.EngineBlock = Blokada silnika unieruchamia silnik wewn\u01 StorageOptChooser.rdbut.Allsimdata = Wszystkie dane symulacji: StorageOptChooser.lbl.longA1 = Zapisz wszystkie dane z symulacji.
StorageOptChooser.lbl.longA2 = To mo\u017Ce bardzo zwi\u0119kszy\u0107 rozmiar plikw! - StorageOptChooser.rdbut.Every = Co - StorageOptChooser.lbl.longB1 = Zapisz warto\u015Bci daj\u0105ce si\u0119 przedstawi\u0107 na wykresie w powy\u017Cszych odst\u0119pach.
- StorageOptChooser.lbl.longB2 = Wi\u0119ksze warto\u015Bci przek\u0142adaj\u0105 si\u0119 na mniejsze pliki. - StorageOptChooser.lbl.seconds = sek. - StorageOptChooser.rdbut.Onlyprimfig = Tylko dane podstawowe + StorageOptChooser.rdbut.Onlysummarydata = Tylko dane podstawowe StorageOptChooser.lbl.longC1 = Zapisz tylko warto\u015Bci ukazane w tabeli podsumowuj\u0105cej symulacj\u0119.
StorageOptChooser.lbl.longC2 = Przy tym ustawieniu pliki s\u0105 najmniejsze. StorageOptChooser.checkbox.Compfile = Kompresuj plik diff --git a/core/resources/l10n/messages_pt.properties b/core/resources/l10n/messages_pt.properties index 0e43e37ca..49a283c54 100644 --- a/core/resources/l10n/messages_pt.properties +++ b/core/resources/l10n/messages_pt.properties @@ -1040,15 +1040,11 @@ StorageOptChooser.lbl.Simdatatostore = Dados simulados para armazenar: StorageOptChooser.lbl.UsingComp = Usando compress\u00e3o reduz o tamanho do arquivo significativamente. StorageOptChooser.lbl.longA1 = Armazenar todos os dados simulados.
StorageOptChooser.lbl.longA2 = Isto pode resultar em a muito grandes! -StorageOptChooser.lbl.longB1 = Armazene os valores aproximados para plotagem.
-StorageOptChooser.lbl.longB2 = Valores maiores resultar em arquivos menores. StorageOptChooser.lbl.longC1 = Armazenar apenas os valores mostrados na tabela de resumo.
StorageOptChooser.lbl.longC2 = Isto resulta em arquivos menores. StorageOptChooser.lbl.longD1 = Uma estimativa sobre o tamanho do arquivo resultante seria com as op\u00e7\u00f5es de presentes. -StorageOptChooser.lbl.seconds = segundos StorageOptChooser.rdbut.Allsimdata = Todos os dados simulados -StorageOptChooser.rdbut.Every = Todo -StorageOptChooser.rdbut.Onlyprimfig = Somente figuras prim\u00e1rias +StorageOptChooser.rdbut.Onlysummarydata = Somente figuras prim\u00e1rias StorageOptChooser.ttip.Saveopt = Salvar as Op\u00e7\u00f5es # Streamer diff --git a/core/resources/l10n/messages_ru.properties b/core/resources/l10n/messages_ru.properties index a66ab2e3c..b5f3bc151 100644 --- a/core/resources/l10n/messages_ru.properties +++ b/core/resources/l10n/messages_ru.properties @@ -1279,11 +1279,7 @@ StorageOptChooser.lbl.Simdatatostore = \u0421\u043E\u0445\u0440\u0430\u043D\u043 StorageOptChooser.rdbut.Allsimdata = \u0412\u0441\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u0440\u0430\u0441\u0447\u0435\u0442\u0430 StorageOptChooser.lbl.longA1 = \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0432\u0441\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u0440\u0430\u0441\u0447\u0435\u0442\u043E\u0432.
StorageOptChooser.lbl.longA2 = \u0420\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430 \u043C\u043E\u0436\u0435\u0442 \u043E\u043A\u0430\u0437\u0430\u0442\u044C\u0441\u044F \u043E\u0447\u0435\u043D\u044C \u0431\u043E\u043B\u044C\u0448\u0438\u043C! -StorageOptChooser.rdbut.Every = \u041A\u0430\u0436\u0434\u044B\u0435 -StorageOptChooser.lbl.longB1 = \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043D\u043D\u044B\u0439 \u0434\u0430\u043D\u043D\u044B\u0435 \u043F\u0440\u0438\u0431\u043B\u0438\u0437\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0441 \u0442\u0430\u043A\u043E\u0439 \u0447\u0430\u0441\u0442\u043E\u0442\u043E\u0439.
-StorageOptChooser.lbl.longB2 = \u0411\u043E\u043B\u044C\u0448\u0438\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0434\u0430\u044E\u0442 \u043C\u0435\u043D\u044C\u0448\u0438\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430. -StorageOptChooser.lbl.seconds = \u0441\u0435\u043A\u0443\u043D\u0434 -StorageOptChooser.rdbut.Onlyprimfig = \u0422\u043E\u043B\u044C\u043A\u043E \u0441\u0445\u0435\u043C\u0443 +StorageOptChooser.rdbut.Onlysummarydata = \u0422\u043E\u043B\u044C\u043A\u043E \u0441\u0445\u0435\u043C\u0443 StorageOptChooser.lbl.longC1 = \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F, \u043F\u043E\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u0435 \u0441\u0432\u043E\u0434\u043D\u043E\u0439 \u0442\u0430\u0431\u043B\u0438\u0446\u0435
StorageOptChooser.lbl.longC2 = \u042D\u0442\u043E \u0434\u0430\u0435\u0442 \u043D\u0430\u0438\u043C\u0435\u043D\u044C\u0448\u0438\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430. StorageOptChooser.lbl.longD1 = \u041F\u0440\u0438\u0431\u043B\u0438\u0437\u0438\u0442\u0435\u043B\u044C\u043D\u0430\u044F \u043E\u0446\u0435\u043D\u043A\u0430 \u0440\u0430\u0437\u043C\u0435\u0440\u0430 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0438\u0440\u0443\u044E\u0449\u0435\u0433\u043E \u0444\u0430\u0439\u043B\u0430 \u0441 \u0434\u0430\u043D\u043D\u044B\u043C\u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430\u043C\u0438. diff --git a/core/resources/l10n/messages_uk_UA.properties b/core/resources/l10n/messages_uk_UA.properties index 6acabbe07..90ed7630a 100644 --- a/core/resources/l10n/messages_uk_UA.properties +++ b/core/resources/l10n/messages_uk_UA.properties @@ -1080,11 +1080,7 @@ StorageOptChooser.lbl.Simdatatostore = Simulated data to store: StorageOptChooser.rdbut.Allsimdata = All simulated data StorageOptChooser.lbl.longA1 = Store all simulated data.
StorageOptChooser.lbl.longA2 = This can result in very large files! -StorageOptChooser.rdbut.Every = Every -StorageOptChooser.lbl.longB1 = Store plottable values approximately this far apart.
-StorageOptChooser.lbl.longB2 = Larger values result in smaller files. -StorageOptChooser.lbl.seconds = seconds -StorageOptChooser.rdbut.Onlyprimfig = Only primary figures +StorageOptChooser.rdbut.Onlysummarydata = Only summary data StorageOptChooser.lbl.longC1 = Store only the values shown in the summary table.
StorageOptChooser.lbl.longC2 = This results in the smallest files. StorageOptChooser.lbl.longD1 = An estimate on how large the resulting file would be with the present options. diff --git a/core/resources/l10n/messages_zh_CN.properties b/core/resources/l10n/messages_zh_CN.properties index f1642f631..149708f5d 100644 --- a/core/resources/l10n/messages_zh_CN.properties +++ b/core/resources/l10n/messages_zh_CN.properties @@ -1136,15 +1136,11 @@ StorageOptChooser.lbl.Saveopt = \u4FDD\u5B58\u9009\u9879 StorageOptChooser.lbl.Simdatatostore = \u4FDD\u5B58\u4EFF\u771F\u6570\u636E: StorageOptChooser.lbl.longA1 = \u4FDD\u5B58\u6240\u6709\u4EFF\u771F\u6570\u636E.
StorageOptChooser.lbl.longA2 = \u6587\u4EF6\u4F53\u79EF\u4F1A\u5F88\u5927! -StorageOptChooser.lbl.longB1 = \u6BCF\u9694\u6570\u4E2A\u6570\u636E\u4FDD\u5B58\u4E00\u6B21.
-StorageOptChooser.lbl.longB2 = \u95F4\u9694\u8D8A\u5927\u6587\u4EF6\u4F53\u79EF\u8D8A\u5C0F. StorageOptChooser.lbl.longC1 = \u4EC5\u4FDD\u7559\u7B80\u62A5\u8868\u683C\u4E2D\u663E\u793A\u7684\u6570\u636E.
StorageOptChooser.lbl.longC2 = \u6587\u4EF6\u4F53\u79EF\u6700\u5C0F. StorageOptChooser.lbl.longD1 = \u6839\u636E\u5F53\u524D\u8BBE\u7F6E\u6765\u4F30\u8BA1\u751F\u6210\u6587\u4EF6\u5927\u5927\u5C0F. -StorageOptChooser.lbl.seconds = \u79D2 StorageOptChooser.rdbut.Allsimdata = \u6240\u6709\u4EFF\u771F\u6570\u636E -StorageOptChooser.rdbut.Every = \u6BCF\u4E00\u4E2A -StorageOptChooser.rdbut.Onlyprimfig = \u4EC5\u4FDD\u7559\u4E3B\u8981\u6570\u636E +StorageOptChooser.rdbut.Onlysummarydata = \u4EC5\u4FDD\u7559\u4E3B\u8981\u6570\u636E StorageOptChooser.ttip.Saveopt = \u4FDD\u5B58\u9009\u9879 ! Streamer diff --git a/core/src/net/sf/openrocket/aerodynamics/Warning.java b/core/src/net/sf/openrocket/aerodynamics/Warning.java index 3c17c1e17..71946ca5b 100644 --- a/core/src/net/sf/openrocket/aerodynamics/Warning.java +++ b/core/src/net/sf/openrocket/aerodynamics/Warning.java @@ -382,6 +382,10 @@ public abstract class Warning { ////Jagged-edged fin predictions may be inaccurate. public static final Warning JAGGED_EDGED_FIN = new Other(trans.get("Warning.JAGGED_EDGED_FIN")); + /** A Warning that the fins have a zero area. */ + ////Fins with no area will not affect aerodynamics + public static final Warning ZERO_AREA_FIN = new Other(trans.get("Warning.ZERO_AREA_FIN")); + /** A Warning that simulation listeners have affected the simulation */ ////Listeners modified the flight simulation public static final Warning LISTENERS_AFFECTED = new Other(trans.get("Warning.LISTENERS_AFFECTED")); diff --git a/core/src/net/sf/openrocket/aerodynamics/barrowman/FinSetCalc.java b/core/src/net/sf/openrocket/aerodynamics/barrowman/FinSetCalc.java index 53746d2e6..326c73a0d 100644 --- a/core/src/net/sf/openrocket/aerodynamics/barrowman/FinSetCalc.java +++ b/core/src/net/sf/openrocket/aerodynamics/barrowman/FinSetCalc.java @@ -84,7 +84,9 @@ public class FinSetCalc extends RocketComponentCalc { public void calculateNonaxialForces(FlightConditions conditions, Transformation transform, AerodynamicForces forces, WarningSet warnings) { - if (span < 0.001) { + warnings.addAll(geometryWarnings); + + if (finArea < MathUtil.EPSILON) { forces.setCm(0); forces.setCN(0); forces.setCNa(0); @@ -96,12 +98,6 @@ public class FinSetCalc extends RocketComponentCalc { forces.setCyaw(0); return; } - - if ((bodyRadius > 0) && (thickness > bodyRadius / 2)){ - // Add warnings (radius/2 == diameter/4) - warnings.add(Warning.THICK_FIN); - } - warnings.addAll(geometryWarnings); //////// Calculate CNa. ///////// @@ -241,18 +237,27 @@ public class FinSetCalc extends RocketComponentCalc { Coordinate[] points = component.getFinPoints(); - // Check for jagged edges + // Check geometry geometryWarnings.clear(); boolean down = false; for (int i = 1; i < points.length; i++) { if ((points[i].y > points[i - 1].y + 0.001) && down) { - geometryWarnings.add(Warning.JAGGED_EDGED_FIN); + geometryWarnings.add(Warning.JAGGED_EDGED_FIN, component.toString()); break; } if (points[i].y < points[i - 1].y - 0.001) { down = true; } } + + if (finArea < MathUtil.EPSILON) { + geometryWarnings.add(Warning.ZERO_AREA_FIN, component.toString()); + } + + if ((bodyRadius > 0) && (thickness > bodyRadius / 2)){ + // Add warnings (radius/2 == diameter/4) + geometryWarnings.add(Warning.THICK_FIN, component.toString()); + } // Calculate the chord lead and trail positions and length @@ -365,7 +370,6 @@ public class FinSetCalc extends RocketComponentCalc { macLead *= dy; area *= dy; rollSum *= dy; - macLength /= area; macSpan /= area; macLead /= area; @@ -614,6 +618,11 @@ public class FinSetCalc extends RocketComponentCalc { @Override public double calculateFrictionCD(FlightConditions conditions, double componentCf, WarningSet warnings) { + // a fin with 0 area contributes no drag + if (finArea < MathUtil.EPSILON) { + return 0.0; + } + double cd = componentCf * (1 + 2 * thickness / macLength) * 2 * finArea / conditions.getRefArea(); return cd; } @@ -622,6 +631,11 @@ public class FinSetCalc extends RocketComponentCalc { public double calculatePressureCD(FlightConditions conditions, double stagnationCD, double baseCD, WarningSet warnings) { + // a fin with 0 area contributes no drag + if (finArea < MathUtil.EPSILON) { + return 0.0; + } + double mach = conditions.getMach(); double cd = 0; diff --git a/core/src/net/sf/openrocket/document/StorageOptions.java b/core/src/net/sf/openrocket/document/StorageOptions.java index 4618aa5d2..f1b56f2f7 100644 --- a/core/src/net/sf/openrocket/document/StorageOptions.java +++ b/core/src/net/sf/openrocket/document/StorageOptions.java @@ -9,12 +9,9 @@ public class StorageOptions implements Cloneable { ROCKSIM } - public static final double SIMULATION_DATA_NONE = Double.POSITIVE_INFINITY; - public static final double SIMULATION_DATA_ALL = 0; - private FileType fileType = FileType.OPENROCKET; - private double simulationTimeSkip = SIMULATION_DATA_NONE; + private boolean saveSimulationData = false; private boolean explicitlySet = false; @@ -26,12 +23,12 @@ public class StorageOptions implements Cloneable { this.fileType = fileType; } - public double getSimulationTimeSkip() { - return simulationTimeSkip; + public boolean getSaveSimulationData() { + return saveSimulationData; } - public void setSimulationTimeSkip(double simulationTimeSkip) { - this.simulationTimeSkip = simulationTimeSkip; + public void setSaveSimulationData(boolean s) { + saveSimulationData = s; } public boolean isExplicitlySet() { diff --git a/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java b/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java index a330a497d..3e9c82389 100644 --- a/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java +++ b/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java @@ -97,7 +97,7 @@ public class OpenRocketSaver extends RocketSaver { if (!first) writeln(""); first = false; - saveSimulation(s, options.getSimulationTimeSkip()); + saveSimulation(s, options.getSaveSimulationData()); } indent--; writeln(""); @@ -173,13 +173,12 @@ public class OpenRocketSaver extends RocketSaver { // Size per flight data point int pointCount = 0; - double timeSkip = options.getSimulationTimeSkip(); - if (timeSkip != StorageOptions.SIMULATION_DATA_NONE) { + if (options.getSaveSimulationData()) { for (Simulation s : doc.getSimulations()) { FlightData data = s.getSimulatedData(); if (data != null) { for (int i = 0; i < data.getBranchCount(); i++) { - pointCount += countFlightDataBranchPoints(data.getBranch(i), timeSkip); + pointCount += countFlightDataBranchPoints(data.getBranch(i)); } } } @@ -317,11 +316,11 @@ public class OpenRocketSaver extends RocketSaver { } - private void saveSimulation(Simulation simulation, double timeSkip) throws IOException { + private void saveSimulation(Simulation simulation, boolean saveSimulationData) throws IOException { SimulationOptions cond = simulation.getOptions(); Simulation.Status simStatus; - simStatus = timeSkip != StorageOptions.SIMULATION_DATA_NONE ? simulation.getStatus() : Simulation.Status.NOT_SIMULATED; + simStatus = saveSimulationData ? simulation.getStatus() : Simulation.Status.NOT_SIMULATED; writeln(""); indent++; @@ -408,13 +407,11 @@ public class OpenRocketSaver extends RocketSaver { } // Check whether to store data - if (simulation.getStatus() == Simulation.Status.EXTERNAL) // Always store external data - timeSkip = 0; - - if (timeSkip != StorageOptions.SIMULATION_DATA_NONE) { + if ((simulation.getStatus() == Simulation.Status.EXTERNAL) || // Always store external data + saveSimulationData) { for (int i = 0; i < data.getBranchCount(); i++) { FlightDataBranch branch = data.getBranch(i); - saveFlightDataBranch(branch, timeSkip); + saveFlightDataBranch(branch); } } @@ -474,9 +471,8 @@ public class OpenRocketSaver extends RocketSaver { } } - private void saveFlightDataBranch(FlightDataBranch branch, double timeSkip) + private void saveFlightDataBranch(FlightDataBranch branch) throws IOException { - double previousTime = -100000; if (branch == null) return; @@ -540,25 +536,8 @@ public class OpenRocketSaver extends RocketSaver { // Write the data int length = branch.getLength(); - if (length > 0) { - writeDataPointString(data, 0, sb); - previousTime = timeData.get(0); - } - - for (int i = 1; i < length - 1; i++) { - if (timeData != null) { - if (Math.abs(timeData.get(i) - previousTime - timeSkip) < Math.abs(timeData.get(i + 1) - previousTime - timeSkip)) { - writeDataPointString(data, i, sb); - previousTime = timeData.get(i); - } - } else { - // If time data is not available, write all points - writeDataPointString(data, i, sb); - } - } - - if (length > 1) { - writeDataPointString(data, length - 1, sb); + for (int i = 0; i < length; i++) { + writeDataPointString(data, i, sb); } indent--; @@ -566,11 +545,9 @@ public class OpenRocketSaver extends RocketSaver { } /* TODO: LOW: This is largely duplicated from above! */ - private int countFlightDataBranchPoints(FlightDataBranch branch, double timeSkip) { + private int countFlightDataBranchPoints(FlightDataBranch branch) { int count = 0; - double previousTime = -100000; - if (branch == null) return 0; @@ -586,23 +563,8 @@ public class OpenRocketSaver extends RocketSaver { return branch.getLength(); } - // Write the data - int length = branch.getLength(); - if (length > 0) { - count++; - previousTime = timeData.get(0); - } - - for (int i = 1; i < length - 1; i++) { - if (Math.abs(timeData.get(i) - previousTime - timeSkip) < Math.abs(timeData.get(i + 1) - previousTime - timeSkip)) { - count++; - previousTime = timeData.get(i); - } - } - - if (length > 1) { - count++; - } + // Count the data + count += branch.getLength(); return count; } diff --git a/core/src/net/sf/openrocket/file/openrocket/importt/OpenRocketLoader.java b/core/src/net/sf/openrocket/file/openrocket/importt/OpenRocketLoader.java index e0bf4717b..d1a8e82c8 100644 --- a/core/src/net/sf/openrocket/file/openrocket/importt/OpenRocketLoader.java +++ b/core/src/net/sf/openrocket/file/openrocket/importt/OpenRocketLoader.java @@ -60,8 +60,8 @@ public class OpenRocketLoader extends AbstractRocketLoader { config.applyPreloadedStageActiveness(); } - // Deduce suitable time skip - double timeSkip = StorageOptions.SIMULATION_DATA_NONE; + // If we saved data for a simulation before, we'll use that as our default option this time + boolean saveData = false; for (Simulation s : doc.getSimulations()) { s.syncModID(); // The config's modID can be out of sync with the simulation's after the whole loading process if (s.getStatus() == Simulation.Status.EXTERNAL || @@ -77,16 +77,12 @@ public class OpenRocketLoader extends AbstractRocketLoader { List list = branch.get(FlightDataType.TYPE_TIME); if (list == null) continue; - - double previousTime = Double.NaN; - for (double time : list) { - if (time - previousTime < timeSkip) - timeSkip = time - previousTime; - previousTime = time; - } + + doc.getDefaultStorageOptions().setSaveSimulationData(true); + break; + } - timeSkip = Math.rint(timeSkip * 100) / 100; - doc.getDefaultStorageOptions().setSimulationTimeSkip(timeSkip); + doc.getDefaultStorageOptions().setExplicitlySet(false); doc.getDefaultStorageOptions().setFileType(FileType.OPENROCKET); diff --git a/core/test/net/sf/openrocket/file/openrocket/OpenRocketSaverTest.java b/core/test/net/sf/openrocket/file/openrocket/OpenRocketSaverTest.java index 20abcbe4a..52014e4f1 100644 --- a/core/test/net/sf/openrocket/file/openrocket/OpenRocketSaverTest.java +++ b/core/test/net/sf/openrocket/file/openrocket/OpenRocketSaverTest.java @@ -137,7 +137,7 @@ public class OpenRocketSaverTest { rocketDocs.add(TestRockets.makeTestRocket_for_estimateFileSize()); StorageOptions options = new StorageOptions(); - options.setSimulationTimeSkip(0.05); + options.setSaveSimulationData(true); // Save rockets, load, validate for (OpenRocketDocument rocketDoc : rocketDocs) { @@ -151,7 +151,7 @@ public class OpenRocketSaverTest { public void testSaveStageActiveness() { OpenRocketDocument rocketDoc = TestRockets.makeTestRocket_v108_withDisabledStage(); StorageOptions options = new StorageOptions(); - options.setSimulationTimeSkip(0.05); + options.setSaveSimulationData(true); // Save rockets, load, validate File file = saveRocket(rocketDoc, options); @@ -258,7 +258,7 @@ public class OpenRocketSaverTest { OpenRocketDocument rocketDoc = TestRockets.makeTestRocket_v104_withSimulationData(); StorageOptions options = new StorageOptions(); - options.setSimulationTimeSkip(0.05); + options.setSaveSimulationData(true); long estimatedSize = saver.estimateFileSize(rocketDoc, options); diff --git a/swing/src/net/sf/openrocket/gui/main/StorageOptionChooser.java b/swing/src/net/sf/openrocket/gui/main/StorageOptionChooser.java index 5bc056c71..0f87f0b72 100644 --- a/swing/src/net/sf/openrocket/gui/main/StorageOptionChooser.java +++ b/swing/src/net/sf/openrocket/gui/main/StorageOptionChooser.java @@ -74,37 +74,9 @@ public class StorageOptionChooser extends JPanel { buttonGroup.add(allButton); allButton.addActionListener(actionUpdater); this.add(allButton, "spanx, wrap rel"); - - //// Every - someButton = new JRadioButton(trans.get("StorageOptChooser.rdbut.Every")); - //// Store plottable values approximately this far apart.
" - //// Larger values result in smaller files. - tip = trans.get("StorageOptChooser.lbl.longB1") + - trans.get("StorageOptChooser.lbl.longB2"); - someButton.setToolTipText(tip); - buttonGroup.add(someButton); - someButton.addActionListener(actionUpdater); - this.add(someButton, ""); - - timeSpinner = new JSpinner(new SpinnerNumberModel(0.0, 0.0, 5.0, 0.1)); - timeSpinner.setToolTipText(tip); - timeSpinner.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - if (artificialEvent) - return; - someButton.setSelected(true); - } - }); - this.add(timeSpinner, "wmin 55lp"); - - //// seconds - JLabel label = new JLabel(trans.get("StorageOptChooser.lbl.seconds")); - label.setToolTipText(tip); - this.add(label, "wrap rel"); - - //// Only primary figures - noneButton = new JRadioButton(trans.get("StorageOptChooser.rdbut.Onlyprimfig")); + + //// Only summary data + noneButton = new JRadioButton(trans.get("StorageOptChooser.rdbut.Onlysummarydata")); //// Store only the values shown in the summary table.
//// This results in the smallest files. noneButton.setToolTipText(trans.get("StorageOptChooser.lbl.longC1") + @@ -129,42 +101,20 @@ public class StorageOptionChooser extends JPanel { public void loadOptions(StorageOptions opts) { - double t; // Data storage radio button - t = opts.getSimulationTimeSkip(); - if (t == StorageOptions.SIMULATION_DATA_ALL) { + if (opts.getSaveSimulationData()) { allButton.setSelected(true); - t = DEFAULT_SAVE_TIME_SKIP; - } else if (t == StorageOptions.SIMULATION_DATA_NONE) { - noneButton.setSelected(true); - t = DEFAULT_SAVE_TIME_SKIP; } else { - someButton.setSelected(true); + noneButton.setSelected(true); } - // Time skip spinner - artificialEvent = true; - timeSpinner.setValue(t); - artificialEvent = false; - updateInfoLabel(); } public void storeOptions(StorageOptions opts) { - double t; - - if (allButton.isSelected()) { - t = StorageOptions.SIMULATION_DATA_ALL; - } else if (noneButton.isSelected()) { - t = StorageOptions.SIMULATION_DATA_NONE; - } else { - t = (Double)timeSpinner.getValue(); - } - - opts.setSimulationTimeSkip(t); - + opts.setSaveSimulationData(allButton.isSelected()); opts.setExplicitlySet(true); } diff --git a/swing/src/net/sf/openrocket/utils/RockSimConverter.java b/swing/src/net/sf/openrocket/utils/RockSimConverter.java index 1f1b35d3f..f1ebf1464 100644 --- a/swing/src/net/sf/openrocket/utils/RockSimConverter.java +++ b/swing/src/net/sf/openrocket/utils/RockSimConverter.java @@ -55,7 +55,7 @@ public class RockSimConverter { try { StorageOptions opts = new StorageOptions(); opts.setFileType(StorageOptions.FileType.OPENROCKET); - opts.setSimulationTimeSkip(StorageOptions.SIMULATION_DATA_NONE); + opts.setSaveSimulationData(false); opts.setExplicitlySet(true); GeneralRocketLoader loader = new GeneralRocketLoader(input);