Merge pull request #2401 from openrocket/unstable

Merge unstable in master
This commit is contained in:
Sibo Van Gool 2023-11-16 16:22:17 +01:00 committed by GitHub
commit dca5eaa3a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
609 changed files with 51478 additions and 8792 deletions

70
.github/ISSUE_TEMPLATE/bug-report.yml vendored Normal file
View File

@ -0,0 +1,70 @@
name: Bug report
description: Help us make OpenRocket better
title: '[Bug] <insert your title>'
labels: bug
body:
- type: markdown
attributes:
value: "Thanks for taking the time to fill out this bug report!"
- type: textarea
id: description
attributes:
label: Describe the bug
description: What happened? Also tell us what you've expect to happen.
placeholder: Describe your bug in detail.
validations:
required: true
- type: textarea
id: repro
attributes:
label: To Reproduce
description: "Steps to reproduce the behavior:"
value: |
1.
2.
3.
...
validations:
required: true
- type: textarea
id: files
attributes:
label: Screenshots / .ork file
description: Provide screenshots for clarification and/or the .ork file that caused the issue.
value: |
#### Screenshot(s):
*(drag-and-drop the screenshot(s) here)*
#### .ork file:
*(drag-and-drop the file here as a .zip file)*
validations:
required: false
- type: input
id: version-openrocket
attributes:
label: OpenRocket version
description: In what version(s) of OpenRocket does this bug happen?
placeholder: 22.02, unstable...
validations:
required: true
- type: dropdown
id: platform
attributes:
label: What platform are you running on?
options:
- Windows
- macOS
- Linux
validations:
required: true
- type: textarea
id: context
attributes:
label: Additional context
description: Add any other context about the problem here.
placeholder:
validations:
required: false

View File

@ -1,38 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

View File

@ -1,8 +1,8 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
title: '[Feature Request] <insert your title>'
labels: Feature request
assignees: ''
---

BIN
.github/getting-started.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -17,10 +17,10 @@ jobs:
uses: actions/checkout@v3
with:
submodules: recursive
- name: Setup JDK 11
- name: Setup JDK 17
uses: actions/setup-java@v3
with:
java-version: '11'
java-version: '17'
distribution: 'adopt'
- name: Ant build
run: ant -noinput -buildfile build.xml clean check jar unittest

3
.gitignore vendored
View File

@ -97,3 +97,6 @@ openrocket.log
prime/*
swing/resources/datafiles/presets/system.ser
swing/resources/datafiles/presets
# Eclipse - because some of us are stubborn
.project

4
.idea/ant.xml generated
View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AntConfiguration">
<buildFile url="file://$PROJECT_DIR$/build.xml" />
<buildFile url="file://$PROJECT_DIR$/build.xml">
<customJdkName value="17" />
</buildFile>
</component>
</project>

2
.idea/misc.xml generated
View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

View File

@ -1,25 +1,10 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="All tests" type="JUnit" factoryName="JUnit">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$MODULE_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
<method>
<option name="Make" enabled="false" />
</method>
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
<method v="2" />
</configuration>
</component>

View File

@ -2,7 +2,7 @@
<configuration default="false" name="Openrocket UI Jar" type="JarApplication">
<option name="JAR_PATH" value="$PROJECT_DIR$/build/jar/OpenRocket.jar" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
<option name="ALTERNATIVE_JRE_PATH" value="11" />
<option name="ALTERNATIVE_JRE_PATH" value="17" />
<method v="2">
<option name="BuildArtifacts" enabled="true">
<artifact name="openrocket:jar" />

View File

@ -63,7 +63,6 @@ Right, you've dug into the codebase, found that one nasty line that caused all y
1. Explain briefly which issue that you are trying to solve, e.g. 'This PR solves #123 in which buttons were displayed as red instead of blue'
2. Next explain what the underlying issue was, e.g. 'The problem was that by default Java swing displays buttons as red.'
3. Next is how you fixed the issue, e.g. 'Fixed it by overriding the default button color to blue'
4. Finally, for other people to test your code, it is good to include a jar file of your fixed OpenRocket. This can be done using ant ([more info here](https://github.com/openrocket/openrocket/wiki/Instructions-to-Build-from-Terminal)). You can upload this jar-file to e.g. Dropbox or Google Drive and include it in your PR, e.g. 'Here is a jar file for testing: ' or if you're really GitHub-savvy, you can add a hyperlink to the 'jar file'-text. If necessary, you can also include information on how to recreate the original issue so that testers can check whether your code solved the issue. If needed, you can also included information about the expected behavior so that others know what your solution should do.
You can take a look at example PR [#979](https://github.com/openrocket/openrocket/pull/979).

View File

@ -1,4 +1,8 @@
2022-02-06 Sibo Van Gool
2023-11-16 Sibo Van Gool
* Released version 23.09. See Release Notes for changes.
2023-02-06 Sibo Van Gool
* Released version 22.02. See Release Notes of 22.02.beta.01, 22.02.beta.02, 22.02.beta.03, 22.02.beta.04,
22.02.beta.05, and 22.02.RC.01 for changes.

113
README.md
View File

@ -1,64 +1,76 @@
OpenRocket
==========
![Build Status](https://github.com/openrocket/openrocket/actions/workflows/build.yml/badge.svg)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
![GitHub release](https://img.shields.io/github/release/openrocket/openrocket.svg)
[![Github Releases (by release)](https://img.shields.io/github/downloads/openrocket/openrocket/latest/total.svg)](https://GitHub.com/openrocket/openrocket/releases/)
--------
# OpenRocket 🚀
OpenRocket is a free, fully featured model rocket simulator that allows you to design and simulate your rockets before actually building and flying them.
![Three-stage rocket - 2D](.github/OpenRocket_home_2D.png)
![Three-stage rocket - 3D](.github/OpenRocket_home_3D.png)
![Three-stage rocket - Simulation plot](.github/OpenRocket_sim.png)
![Build Status](https://github.com/openrocket/openrocket/actions/workflows/build.yml/badge.svg)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
![GitHub release](https://img.shields.io/github/release/openrocket/openrocket.svg)
[![Github Releases (by release)](https://img.shields.io/github/downloads/openrocket/openrocket/latest/total.svg)](https://GitHub.com/openrocket/openrocket/releases/)
[![Join our Discord server!](https://img.shields.io/discord/1073297014814691328?logo=discord)](https://discord.gg/qD2G5v2FAw)
The main features include:
--------
* Six-degree-of-freedom flight simulation
* Automatic design optimization
* Realtime simulated altitude, velocity and acceleration display
* Staging and clustering support
* Cross-platform (Java-based)
## 🛠️ Design, Visualize, and Analyze
Read more about it on the [OpenRocket Wiki](http://wiki.openrocket.info).
1. **Design** your rockets using a rich selection of built-in components:
![Three-stage rocket - 2D](.github/OpenRocket_home_2D.png)
Installers
----------
OpenRocket maintains an installer for installing the software and Java runtime. You can find the installers on [our
website](https://openrocket.info/downloads.html).
2. **Visualize** your masterpiece in 3D:
![Three-stage rocket - 3D](.github/OpenRocket_home_3D.png)
3. **Plot & Analyze** your simulation results for precision and improvements:
![Three-stage rocket - Simulation plot](.github/OpenRocket_sim.png)
## 🌟 Features
- **Six-degree-of-freedom flight simulation**
- **Automatic design optimization**
- **Realtime simulated altitude, velocity, and acceleration display**
- **Staging and clustering support**
- **Cross-platform (Java-based)**
... plus many more
📖 Read more on [our website](https://openrocket.info/) or the [OpenRocket Wiki](http://wiki.openrocket.info).
## 💾 Installers
You can find the OpenRocket installers [here](https://openrocket.info/downloads.html).
## 📝 Release Notes
Release Notes
-------------
Release notes are available on each [release's page](https://github.com/openrocket/openrocket/releases) or on [our website](https://openrocket.info/release_notes.html).
License
-------
## 🚀 Getting started
OpenRocket is an Open Source project licensed under the [GNU GPL](https://www.gnu.org/licenses/gpl-3.0.en.html). This means that the software is free to use for whatever purposes, and the source code is also available for studying and extending.
The easiest way to get started is to open one of our in-program example designs:
Contributing
------------
OpenRocket needs help to become even better. Implementing features, writing documentation and creating example designs are just a few ways of helping. If you are interested in helping make OpenRocket the best rocket simulator out there, please [click here for information on how to get involved](http://openrocket.sourceforge.net/getinvolved.html) and [read the practicalities of contributing here](CONTRIBUTING.md).
![Get started with the example designs](.github/getting-started.png)
**Contributors**
- Sampo Niskanen, main developer
- Doug Pedrick, support for RockSim designs, printing
- Kevin Ruland, Android version
- Bill Kuker, 3D visualization
- Richard Graham, geodetic computations
- Jason Blood, freeform fin set import
- Boris du Reau, internationalization
- Daniel Williams, pod support, maintainer
- Joe Pfeiffer (maintainer)
- Billy Olsen (maintainer)
- Sibo Van Gool (maintainer)
- Neil Weinstock (tester, icons, forum support)
- H. Craig Miller (tester)
Dive into the essentials: adjust component dimensions, plot a simulation, swap out motors, ... Explore the impact of your changes and, most importantly, enjoy the process! 😊
## 💪 Contribute
**Translators**
Help us soar higher! Whether it's implementing features, writing documentation, or creating design examples, every contribution matters. Interested? Check out [how to get involved](http://openrocket.sourceforge.net/getinvolved.html) and the [practicalities of contributing](CONTRIBUTING.md).
### ✨ Contributors
- [Sampo Niskanen](https://github.com/plaa) - Original developer
- [Doug Pedrick](https://github.com/rodinia814) - RockSim designs, printing
- [Kevin Ruland](https://github.com/kruland2607) - Android version
- [Bill Kuker](https://github.com/bkuker) - 3D visualization
- [Richard Graham](https://github.com/rdgraham) - Geodetic computations
- Jason Blood - Freeform fin set import
- [Boris du Reau](https://github.com/bdureau) - Internationalization
- [Daniel Williams](https://github.com/teyrana) - Pod support, maintainer
- [Joe Pfeiffer](https://github.com/JoePfeiffer) - Maintainer
- [Billy Olsen](https://github.com/wolsen) - Maintainer
- [Sibo Van Gool](https://github.com/SiboVG) - RASAero file format, 3D OBJ export, dark theme, maintainer
- [Neil Weinstock](https://github.com/neilweinstock) - Tester, icons, forum support
- [H. Craig Miller](https://github.com/hcraigmiller) - Tester
You can view the full list of contributors [here](https://github.com/openrocket/openrocket/graphs/contributors).
### 🌍Translators
- Tripoli France
- Tripoli Spain
- Stefan Lobas / ERIG
@ -68,3 +80,12 @@ OpenRocket needs help to become even better. Implementing features, writing docu
- Polish Rocketry Society / Łukasz & Alex Kazanski
- Sibo Van Gool
- Mohamed Amin Elkebsi
## 📜 License
OpenRocket is proudly open-source under the [GNU GPL](https://www.gnu.org/licenses/gpl-3.0.en.html) license. Feel free to use, study, and extend.
---
⭐ Please give us a star if you find OpenRocket useful, and spread the word! ⭐
[![Star History Chart](https://api.star-history.com/svg?repos=openrocket/openrocket&type=Date)](https://star-history.com/#openrocket/openrocket&Date)

View File

@ -13,11 +13,98 @@ Release Notes
</div>
<div id="23.09">
OpenRocket 23.09 (2023-11-16)
------------------------
You can find a visual overview of what's new for this release on [our website](https://openrocket.info//downloads.html?vers=23.09#whats-new).
### Major Updates
#### New Features:
* **3D Printing Support: Export any component or combination to OBJ file** (fixes #604)
* **RASAero compatibility: Import/Export CDX1 files** (fixes #875 and #1147)
* **Dark mode (normal and high-contrast) and custom UI font size support** (fixes #1089)
* **Export sim table to CSV** (fixes #2077)
#### Bug Fixes:
* **Fix Tube fin drag** (fixes #2065)
* **Fix Base drag when using Cd override** (fixes base drag hack sim error, fixes #2118)
* **Fix Atmospheric pressure when using ISA conditions** (fixes #2103)
* **Properly sanitize XML in ORK file** (eliminates corrupt ORK files, fixes #2051)
### Other New Features
* Bumped app to Java 17
* Export and import preferences to XML file
* Display secondary stability unit. This means you can display stability in both calibers *and* percentage of length (fixes #2079)
* Added "cases" and "manufacturers" substitution in motor config names (fixes #2055 and #2204)
* Selection of "common name" or "manufacturer's designation" in motor selection table is now reflected everywhere else in the program (fixes #2072)
* Added "plugged" option in charge delay combobox (fixes #2090)
* Added motor type to "show details" in motor selection (fixes #2069)
* Added instances settings in launch lug config (fixes #2035)
* Account for fin cant in fin root points, and support canted fins in fin marking guide (fixes #2231 and #2242)
* Set cluster tube separation in absolute or relative units (fixes #1970)
* Support transparent rendering and export of Photo Studio images (fixes #2076)
* Added "Select -> Components of same color" and "Select -> None" options (fixes #2129)
* Remember column width, order and visibility in component preset table (fixes #2357)
### Bug Fixes
* Fixed mass issues with fin sets (fixes #2217)
* Fixed CG issues for launch lugs and rail buttons (fixes #2040)
* Improved rail button drag calculations
* Added parts detail for pods and boosters (fixes #2084)
* Fixed parachute position when using auto radius (fixes #2036)
* Fixed pod set and booster marker position under certain circumstances (fixes #2047)
* Fix CG marker location in top view (fixes #2050)
* Handle zero-area fins (warn and don't crash with NaN error) (fixes #2032)
* Don't dispose config dialog when no components are selected in 3D view (fixes #2108)
* Display ISA values in temp and pressure fields (fixes #2104)
* Improved simulation of fins on transitions and nose cones (fixes #2113)
* Cleaned up multi-sim editing (fixes #2138 and #1826)
* Update ruler units immediately when preferences are changed (fixes #2151)
* Compute CG and CP based on currently active stages (fixes #2171)
* Improved mass/CG calculations for fillets (fixes 2209)
* Set auto radius correctly for mass objects (fixes #2267)
* Apply radial positioning to multi-engine clusters (fixes #2283)
* Fixed 3D rendering of fin tabs (fixes #2286)
* Update recent file list when opening via file association (fixes #2222)
* Corrected the columns displayed in the component preset table's popup menu, ensuring only relevant columns appear
* Ensured optimum delay is saved in flight summary and .ork files (fixes #2353)
* Corrected longitudinal moment of inertia calculations by excluding shoulders (fixes #2278)
* Fixed exception when setting wind speed to zero (fixes #2386)
* Fixed unexpected mass and CG override interaction (fixes #2394)
### Miscellaneous
* Updated example rockets (including brand-new two stage example)
* Show calculated values in override tab (fixes #1629)
* Decrease minimum FoV to 10 degrees in Photo Studio
* Increase resolution of launch temperature and pressure to 2 decimal places (fixes #2003)
* Display Cd override with 3 decimal places
* Added wiki button to help menu (fixes #2046)
* Eliminate option to save "some" sim data (fixes #2024)
* Added OK/Cancel buttons when editing simulations (fixes #2158)
* Added OK/Cancel buttons when editing preferences (fixes #2266)
* Added multi-sim edit indicators (fixes #2159)
* Show warning when motor file has illegal format (fixes #2150)
* Reset window position if off-screen (fixes #2141)
* Keep current field value when "auto" option is unchecked (fixes #2096)
* Open dialog to save design info when first saving file
* Added '3D Printable Nose Cone and Fins' to example rockets
* Use more sensible colors for thrust curve selection in motor selection dialog (fixes #2385)
...along with numerous other minor fixes and enhancements.
</div>
<div id="22.02">
OpenRocket 22.02 (2023-02-08)
------------------------
You can find a visual overview of what's new for this release on [our website](https://openrocket.info//downloads.html?vers=22.02#whats-new).
The 22.02 release includes hundreds of new features, bug fixes, and UI improvements, more than we could ever fit into one set of release notes. These notes summarize the highlights of the entire release; for more detail consult the notes from the five previous public beta releases.
Please note that version 22.02 is required for Macs running macOS 13.0 or later.

View File

@ -29,7 +29,7 @@
<!-- JAR -->
<target name="jar" depends="jar-core,jar-swing">
<target name="jar" depends="clean,jar-core,jar-swing">
</target>
<target name="jar-core" depends="build-core">

View File

@ -27,7 +27,6 @@
<classpathentry kind="lib" path="lib/logback-classic-1.2.11.jar"/>
<classpathentry kind="lib" path="lib/logback-core-1.2.11.jar"/>
<classpathentry kind="lib" path="lib/opencsv-5.7.1.jar"/>
<classpathentry kind="lib" path="lib/commons-lang3-3.12.0.jar"/>
<classpathentry kind="lib" path="/OpenRocket Test Libraries/hamcrest-core-2.2.jar"/>
<classpathentry kind="lib" path="/OpenRocket Test Libraries/hamcrest-2.2.jar"/>
<classpathentry kind="lib" path="/OpenRocket Test Libraries/jmock-2.12.0.jar"/>

View File

@ -10,6 +10,7 @@
<libelement value="jar://$MODULE_DIR$/lib/aopalliance.jar!/" />
<libelement value="jar://$MODULE_DIR$/lib/slf4j-api-1.7.5.jar!/" />
<libelement value="jar://$MODULE_DIR$/lib/annotation-detector-3.0.2.jar!/" />
<libelement value="jar://$MODULE_DIR$/lib/obj-0.4.0.jar!/" />
<libelement value="jar://$MODULE_DIR$/../lib-test/hamcrest-core-2.2.jar!/" />
<libelement value="jar://$MODULE_DIR$/../lib-test/hamcrest-2.2.jar!/" />
<libelement value="jar://$MODULE_DIR$/../lib-test/jmock-2.12.0.jar!/" />
@ -224,6 +225,15 @@
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$MODULE_DIR$/lib/obj-0.4.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
@ -242,6 +252,15 @@
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$MODULE_DIR$/lib/commons-text-1.10.0!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>

View File

@ -59,7 +59,7 @@
<echo level="info">Java/JVM detail version: ${java.version}</echo>
<mkdir dir="${classes.dir}"/>
<echo level="info">Compiling main classes</echo>
<javac debug="true" srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath" includeantruntime="false" source="1.8" target="1.8"/>
<javac debug="true" srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath" includeantruntime="false" source="17" target="17"/>
</target>
<!-- Executable Eclipse-Jar-In-Jar style JAR -->

Binary file not shown.

BIN
core/lib/obj-0.4.0.jar Normal file

Binary file not shown.

View File

@ -4,6 +4,7 @@ OpenRocket text:
Create logo using Gimp's "Blended" logo script.
Apply suitable gradient to text layer
(softened "Horizon 1" -> "Horizon 1 soft").
Font: Kanit (Italic): https://fonts.google.com/specimen/Kanit?query=kanit
Background starfield:

View File

@ -1,6 +1,6 @@
# The OpenRocket build version
build.version=22.02
build.version=23.09
# The copyright year for the build. Displayed in the about dialog.
# Will show as Copyright 2013-${build.copyright}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,2 @@
This directory contains thrust curves used in RASAero.
Last updated: 2018-07-31

View File

@ -16,29 +16,29 @@
debug.currentFile = messages.properties
! RocketActions
RocketActions.checkbox.Donotaskmeagain = Do not ask me again
RocketActions.lbl.Youcanchangedefop = You can change the default operation in the preferences.
RocketActions.showConfirmDialog.lbl1 = Delete the selected simulations?
RocketActions.showConfirmDialog.lbl2 = <html><i>This operation cannot be undone.</i>
RocketActions.showConfirmDialog.title = Delete simulations
RocketActions.DelCompAct.Delete = Delete
RocketActions.DelCompAct.ttip.Delete = Delete the selected component.
RocketActions.DelCompAct.ttip.Delete = Delete the selected components.
RocketActions.DelSimuAct.Delete = Delete
RocketActions.DelSimuAct.ttip.Delete = Delete the selected simulation.
RocketActions.DelSimuAct.ttip.Delete = Delete the selected simulations.
RocketActions.DelAct.Delete = Delete
RocketActions.DelAct.ttip.Delete = Delete the selected component or simulation.
RocketActions.DelAct.ttip.Delete = Delete the selected components or simulations.
RocketActions.CutAction.Cut = Cut
RocketActions.CutAction.ttip.Cut = Cut this component or simulation to the clipboard and delete from this design
RocketActions.CutAction.ttip.Cut = Cut these components or simulations to the clipboard and delete from this design
RocketActions.CopyAct.Copy = Copy
RocketActions.CopyAct.ttip.Copy = Copy this component (and subcomponents) to the clipboard.
RocketActions.CopyAct.ttip.Copy = Copy these components (and subcomponents) to the clipboard.
RocketActions.PasteAct.Paste = Paste
RocketActions.PasteAct.ttip.Paste = Paste the component or simulation on the clipboard to the design.
RocketActions.PasteAct.ttip.Paste = Paste the components or simulations on the clipboard to the design.
RocketActions.PasteAct.invalidPosition.msg = Invalid paste position for object '%s', ignoring pasting.
RocketActions.PasteAct.invalidPosition.title = Could not paste
RocketActions.DuplicateAct.Duplicate = Duplicate
RocketActions.DuplicateAct.ttip.Duplicate = Duplicate this component (and subcomponents).
RocketActions.EditAct.Edit = Edit
RocketActions.EditAct.ttip.Edit = Edit the selected component.
RocketActions.Select = Select
RocketActions.Select.SelectSameColorAct = Components of same color
RocketActions.Select.SelectSameColorAct.ttip = Select all components of the same color as this component.
RocketActions.Select.DeselectAllAct = Deselect all
RocketActions.Select.DeselectAllAct.ttip = Deselect all currently selected components.
RocketActions.ScaleAct.Scale = Scale
RocketActions.ScaleAct.ttip.Scale = Scale parts of the rocket design
RocketActions.NewStageAct.Newstage = New stage
@ -47,6 +47,8 @@ RocketActions.MoveUpAct.Moveup = Move up
RocketActions.MoveUpAct.ttip.Moveup = Move this component upwards.
RocketActions.MoveDownAct.Movedown = Move down
RocketActions.MoveDownAct.ttip.Movedown = Move this component downwards.
RocketActions.ExportOBJAct.ExportOBJ = Export as OBJ (.obj)
RocketActions.ExportOBJAct.ttip.ExportOBJ = Export the selected components as a Wavefront OBJ 3D file.
! RocketPanel
RocketPanel.FigTypeAct.SideView = Side view
@ -84,8 +86,16 @@ BasicFrame.dlg.title = Design not saved
BasicFrame.StageName.Sustainer = Sustainer
BasicFrame.WarningDialog.txt1 = The following problems were encountered while opening
BasicFrame.WarningDialog.txt2 = Some design features may not have been loaded correctly.
BasicFrame.WarningDialog.saving.txt1 = The following problems were encountered while saving
BasicFrame.WarningDialog.saving.txt2 = Some design features may not have exported correctly.
BasicFrame.WarningDialog.title = Warnings while opening file
BasicFrame.WarningDialog.saving.title = Warnings while saving file
BasicFrame.ErrorWarningDialog.txt1 = <html>Please <b>correct the errors</b>.</html>
BasicFrame.ErrorWarningDialog.saving.title = Errors/Warnings while saving file
BasicFrame.lbl.SaveRocketInfo = Save Design Info
! SaveDesignInfoPanel
SaveDesignInfoPanel.lbl.FillInInfo = (Optional) Fill in the design information for this file
! General error messages used in multiple contexts
error.fileExists.title = File exists
@ -110,12 +120,15 @@ dlg.but.close = Close
! General file type names
FileHelper.CSV_FILTER = Comma Separated Files (*.csv)
FileHelper.PDF_FILTER = PDF files (*.pdf)
FileHelper.ALL_DESIGNS_FILTER = All rocket designs (*.ork; *.rkt)
FileHelper.ALL_DESIGNS_FILTER = All rocket designs (*.ork; *.rkt, *.CDX1)
FileHelper.OPENROCKET_DESIGN_FILTER = OpenRocket designs (*.ork)
FileHelper.ROCKSIM_DESIGN_FILTER = RockSim designs (*.rkt)
FileHelper.RASAERO_DESIGN_FILTER = RASAero designs (*.CDX1)
FileHelper.WAVEFRONT_OBJ_FILTER = Wavefront OBJ 3D file (*.obj)
FileHelper.OPEN_ROCKET_COMPONENT_FILTER = OpenRocket presets (*.orc)
FileHelper.PNG_FILTER = PNG image (*.png)
FileHelper.IMAGES = Image files
FileHelper.XML_FILTER = XML files (*.xml)
! About Dialog
@ -228,6 +241,11 @@ edtmotorconfdlg.tbl.Separationheader = Separation
RenameConfigDialog.title = Rename Configuration
RenameConfigDialog.lbl.name = Name for flight configuration:
RenameConfigDialog.but.reset = Reset to default
RenameConfigDialog.lbl.infoMotors = The text '<b>{motors}</b>' will be replaced with the <b>motor designation(s).</b><br><pre>\te.g. '{motors} \u2192 'M1350-0'</pre>
RenameConfigDialog.lbl.infoManufacturers = The text '<b>{manufacturers}</b>' will be replaced with the <b>motor manufacturer(s).</b><br><pre>\te.g. '{manufacturers}' \u2192 'AeroTech'</pre>
RenameConfigDialog.lbl.infoCases = The text '<b>{cases}</b>' will be replaced with the <b>motor case(s).</b><br><pre>\te.g. '{cases}' \u2192 'SU 18.0x70.0'</pre>
RenameConfigDialog.lbl.infoCombination = A <b>combination</b> of the above can be used (you may choose the separator).<br><pre>\te.g. '{manufacturers motors}' \u2192 'AeroTech M1350-0'</pre>
! Example design dialog
exdesigndlg.but.open = Open
@ -279,9 +297,15 @@ pref.dlg.tab.Design = Design
pref.dlg.tab.Simulation = Simulation
pref.dlg.tab.Launch = Launch
pref.dlg.tab.Miscellaneousoptions = Miscellaneous options
pref.dlg.lbl.RASAeroWarning = Show warning when saving in RASAero format
pref.dlg.lbl.RockSimWarning = Show warning when saving in RockSim format
pref.dlg.but.clearCachedPreferences = Reset all preferences
pref.dlg.but.clearCachedPreferences.ttip = Reset all the preferences, including cached preferences (UI settings, recent files, etc.)
pref.dlg.checkbox.ShowDiscardPreferencesConfirmation = Show confirmation dialog when discarding preferences
pref.dlg.but.resetAllPreferences = Reset all preferences
pref.dlg.but.resetAllPreferences.ttip = Reset all the preferences, including cached preferences (UI settings, recent files, etc.)
pref.dlg.but.exportPreferences = Export preferences
pref.dlg.but.exportPreferences.ttip = Export all your OpenRocket preferences to an external file
pref.dlg.but.importPreferences = Import preferences
pref.dlg.but.importPreferences.ttip = Import new OpenRocket preferences from an external file
pref.dlg.clearCachedPreferences.title = Reset preferences?
pref.dlg.clearCachedPreferences.message = Are you sure you want to reset all your preferences?
@ -308,6 +332,8 @@ pref.dlg.checkbox.AlwaysOpenLeftmost = Always open leftmost tab when opening a c
pref.dlg.checkbox.AlwaysOpenLeftmost.ttip = <html>If checked, a component edit dialog will always pop up with the first tab selected.<br>If unchecked, the previous selected tab will be used.</html>
pref.dlg.checkbox.ShowDiscardConfirmation = Show confirmation dialog for discarding component changes
pref.dlg.checkbox.ShowDiscardConfirmation.ttip = If checked, you will be asked if you want really want to discard component configuration configuration changes.
pref.dlg.checkbox.ShowDiscardSimulationConfirmation = Show confirmation dialog for discarding simulation changes
pref.dlg.checkbox.ShowDiscardSimulationConfirmation.ttip = If checked, you will be asked if you want really want to discard simulation configuration configuration changes.
pref.dlg.lbl.User-definedthrust = User-defined thrust curves:
pref.dlg.lbl.Windspeed = Wind speed
pref.dlg.Allthrustcurvefiles = All thrust curve files (*.eng; *.rse; *.zip; directories)
@ -343,6 +369,10 @@ pref.dlg.lbl.Temperature = Temperature:
pref.dlg.lbl.Momentofinertia = Moment of inertia:
pref.dlg.lbl.Pressure = Pressure:
pref.dlg.lbl.Stability = Stability:
pref.dlg.lbl.SecondaryStability = Secondary Stability:
pref.dlg.lbl.SecondaryStability.ttip = Select the stability unit that will be displayed alongside the main stability unit in the design view.
pref.dlg.checkbox.DisplaySecondaryStability = Display secondary stability unit
pref.dlg.checkbox.DisplaySecondaryStability.ttip = If checked, a secondary stability unit will be displayed in the rocket design view.
pref.dlg.lbl.FlightTime = Flight time:
pref.dlg.lbl.effect1 = The effects will take place the next time you open a window.
pref.dlg.lbl.Checkingupdates = Checking for updates\u2026
@ -354,13 +384,33 @@ pref.dlg.PrefBooleanSelector2 = Confirm
pref.dlg.Add = Add
pref.dlg.DescriptionArea.Adddirectories = Add directories, RASP motor files (*.eng), RockSim engine files (*.rse) or ZIP archives separated by a semicolon (;) to load external thrust curves. Changes will take effect the next time you start OpenRocket.
PreferencesDialog.lbl.language = Interface language:
PreferencesDialog.languages.default = System default
PreferencesDialog.lbl.languageEffect = The language will change the next time you start OpenRocket.
PreferencesDialog.CancelOperation.title = Discard Preference Changes
PreferencesDialog.CancelOperation.msg.discardChanges = <html>Are you sure you want to <b>discard the preference changes</b>?</html>
generalprefs.lbl.language = Interface language
generalprefs.languages.default = System default
generalprefs.lbl.languageEffect = The language will change the next time you start OpenRocket.
generalprefs.lbl.UITheme = UI Theme
generalprefs.lbl.FontSize = UI Font Size
generalprefs.lbl.themeRestartOR = You must restart OpenRocket for the UI changes to take effect.
generalprefs.ImportWarning.title = Reload OpenRocket
generalprefs.ImportWarning.msg = You may need to restart OpenRocket for some of the changes to take effect.
PreferencesExporter.chooser.title = Export the Preferences File
PreferencesImporter.chooser.title = Import a Preferences File
PreferencesOptionPanel.title = Export settings
PreferencesOptionPanel.checkbox.userDirectories = Export user directories
PreferencesOptionPanel.checkbox.userDirectories.ttip = If unchecked, user directories (possibly sensitive information) will not be exported.
PreferencesOptionPanel.checkbox.windowInfo = Export window information (position, size\u2026)
PreferencesOptionPanel.checkbox.windowInfo.ttip = If unchecked, window information (position, size\u2026) will not be exported.
! UI Themes
UITheme.Auto = Auto (detect)
UITheme.Light = Light (default)
UITheme.Dark = Dark
UITheme.DarkContrast = Dark, high-contrast
! Welcome dialog
welcome.dlg.title = Welcome to OpenRocket
@ -397,6 +447,8 @@ simedtdlg.but.savedefault = Save as default
simedtdlg.but.add = Add
simedtdlg.but.delete = Delete
simedtdlg.title.Editsim = Edit simulation
simedtdlg.title.MultiSimEdit = Multi-simulation edit
simedtdlg.title.MultiSimEdit.ttip = <html>You are editing the following simulations:<br>
simedtdlg.lbl.Simname = Simulation name:
simedtdlg.tab.Launchcond = Launch conditions
simedtdlg.tab.Simopt = Simulation options
@ -506,6 +558,12 @@ SimulationEditDialog.btn.export = Export
SimulationEditDialog.btn.edit = Edit
SimulationEditDialog.btn.simulate = Simulate
SimulationEditDialog.btn.simulateAndPlot = Simulate & Plot
SimulationEditDialog.btn.OK.ttip = Keep changes and close the dialog
SimulationEditDialog.btn.Cancel.ttip = Discard changes and close the dialog
SimulationEditDialog.CancelOperation.msg.discardChanges = <html>Are you sure you want to <b>discard</b> your <b>changes</b> to this simulation?</html>
SimulationEditDialog.CancelOperation.msg.undoAdd = <html>Are you sure you want to <b>undo adding</b> this simulation?</html>
SimulationEditDialog.CancelOperation.title = Cancel operation
SimulationEditDialog.CancelOperation.checkbox.dontAskAgain = Don't ask me again
GeodeticComputationStrategy.flat.name = Flat Earth
GeodeticComputationStrategy.flat.desc = Perform computations with a flat Earth approximation. Sufficient for low-altitude flights.
@ -528,15 +586,31 @@ simpanel.but.ttip.editsim = Edit the selected simulation
simpanel.but.ttip.runsimu = Re-run the selected simulations
simpanel.but.ttip.deletesim = Delete the selected simulations
simpanel.pop.edit = Edit
simpanel.pop.edit.ttip= Edit the selected simulation(s)
simpanel.pop.cut= Cut
simpanel.pop.cut.ttip= Copy the selected simulation(s) to the clipboard and delete from this design
simpanel.pop.copy= Copy
simpanel.pop.copy.ttip= Copy the selected simulation(s) to the clipboard
simpanel.pop.paste= Paste
simpanel.pop.paste.ttip= Paste the simulation(s) on the clipboard to the design.
simpanel.pop.plot = Plot / Export
simpanel.pop.plot.ttip= Plot or Export the selected simulation(s)
simpanel.pop.run = Run
simpanel.pop.run.ttip= Run the selected simulation(s)
simpanel.pop.delete = Delete
simpanel.pop.delete.ttip= Delete the selected simulation(s)
simpanel.pop.duplicate = Duplicate
simpanel.pop.duplicate.ttip= Duplicate the selected simulation(s)
simpanel.pop.exportSimTableToCSV = Export simulation table as CSV file
simpanel.pop.exportSelectedSimsToCSV = Export simulation(s) as CSV file
simpanel.pop.exportToCSV.save.dialog.title = Save as CSV file
simpanel.dlg.no.simulation.table.rows = Simulation table has no entries\u2026 Please run a simulation first.
simpanel.checkbox.donotask = Do not ask me again
simpanel.lbl.defpref = You can change the default operation in the preferences.
simpanel.dlg.lbl.DeleteSim1 = Delete the selected simulations?
simpanel.dlg.lbl.DeleteSim2 = <html><i>This operation cannot be undone.</i>
simpanel.dlg.lbl.DeleteSim3 = Delete simulations
simpanel.col.Status = Status
simpanel.col.Name = Name
simpanel.col.Motors = Motors
simpanel.col.Configuration = Configuration
@ -551,12 +625,14 @@ simpanel.col.Timetoapogee = Time to apogee
simpanel.col.Flighttime = Flight time
simpanel.col.Groundhitvelocity = Ground hit velocity
simpanel.ttip.uptodate = <i>Up to date</i>
simpanel.ttip.loaded = <i>Loaded from file</i>
simpanel.ttip.outdated = <i><font color=\"red\">Out of date</font></i><br>Click <i><b>Run simulations</b></i> to simulate.
simpanel.ttip.external = <i>Imported data</i>
simpanel.ttip.notSimulated = <i>Not simulated yet</i><br>Click <i><b>Run simulations</b></i> to simulate.
simpanel.ttip.noData = No simulation data available.
simpanel.ttip.noWarnings = <font color=\"gray\">No warnings.</font>
simpanel.ttip.warnings = <font color=\"red\">Warnings:</font>
simpanel.msg.invalidCopySelection = Invalid copy selection
! SimulationRunDialog
SimuRunDlg.title.RunSim = Running simulations\u2026
@ -566,10 +642,12 @@ SimuRunDlg.lbl.Altitude = Altitude:
SimuRunDlg.lbl.Velocity = Velocity:
SimuRunDlg.msg.Unabletosim = Unable to simulate:
SimuRunDlg.msg.errorOccurred = An error occurred during the simulation:
SimuRunDlg.msg.branchErrorOccurred = An error occurred during simulation branch
BasicEventSimulationEngine.error.noMotorsDefined = No motors defined in the simulation.
BasicEventSimulationEngine.error.cantCalculateStability = Can't calculate rocket stability.
BasicEventSimulationEngine.error.earlyMotorBurnout = Motor burnout without liftoff.
BasicEventSimulationEngine.error.activeLengthZero = Active airframe has length 0
BasicEventSimulationEngine.error.cantCalculateStability = Can't calculate stability
BasicEventSimulationEngine.error.earlyMotorBurnout = <html>Motor burnout without liftoff.<br>Use more (powerful) motors, or decrease the rocket mass.</html>
BasicEventSimulationEngine.error.noConfiguredIgnition = No motors configured to ignite at liftoff
BasicEventSimulationEngine.error.noIgnition = No motors ignited.
BasicEventSimulationEngine.error.NaNResult = Simulation resulted in not-a-number (NaN) value, please report a bug.
@ -579,6 +657,8 @@ RK4SimulationStepper.error.valuesTooLarge = Simulation values exceeded limits.
SimulationModifierTree.OptimizationParameters = Optimization Parameters
SimulationStepper.error.totalMassZero = Total mass of active states is 0
! SimulationExportPanel
SimExpPan.border.Vartoexport = Variables to export
SimExpPan.border.Stage = Stage to export
@ -803,7 +883,7 @@ componentanalysisdlg.lbl.reflenght = Reference length:
componentanalysisdlg.lbl.refarea = Reference area:
!componentanalysisdlg.But.close =Close
componentanalysisdlg.TabStability.Col.Component = Component
componentanalysisdlg.TOTAL = Total
componentanalysisdlg.TOTAL = Total (Rocket)
componentanalysisdlg.noWarnings = <html><i><font color=\"gray\">No warnings.</font></i>
! Custom Material dialog
@ -969,10 +1049,8 @@ RocketCompCfg.lbl.Length = Length:
RocketCompCfg.lbl.Thickness = Thickness:
RocketCompCfg.checkbox.Endcapped = End capped
RocketCompCfg.checkbox.Endcapped.ttip = Caps (closes) the end of the shoulder.
RocketCompCfg.title.Aftshoulder = Aft shoulder
RocketCompCfg.border.Aftshoulder = Aft shoulder
RocketCompCfg.border.Foreshoulder = Fore shoulder
RocketCompCfg.lbl.InstanceCount = Instance Count:
RocketCompCfg.lbl.InstanceSeparation = Instance Separation:
RocketCompCfg.tab.Outside = Outside
RocketCompCfg.tab.Inside = Inside
RocketCompCfg.tab.RightSide = Right Side
@ -985,6 +1063,11 @@ RocketCompCfg.CancelOperation.title = Cancel operation
RocketCompCfg.CancelOperation.checkbox.dontAskAgain = Don't ask me again
RocketCompCfg.btn.ComponentInfo.ttip = Show/hide informative text about this component.
! InstancesPanel
InstancesPanel.title.Instances = Instances
InstancesPanel.lbl.InstanceCount = Instance Count:
InstancesPanel.lbl.InstanceSeparation = Instance Separation:
! MaterialPanel
MaterialPanel.lbl.ComponentMaterial = Component material:
MaterialPanel.lbl.ComponentFinish = Component finish:
@ -1127,6 +1210,7 @@ InnerTubeCfg.tab.ttip.Radialpos = Radial position
InnerTubeCfg.lbl.Selectclustercfg = Select cluster configuration:
InnerTubeCfg.lbl.TubeSep = Tube separation:
InnerTubeCfg.lbl.ttip.TubeSep = The separation of the tubes, 1.0 = touching each other
InnerTubeCfg.lbl.ttip.TubeSepAbs = The separation of the tubes, 0 = touching each other
InnerTubeCfg.lbl.Rotation = Rotation:
InnerTubeCfg.lbl.ttip.Rotation = Rotation angle of the cluster configuration
InnerTubeCfg.lbl.Rotangle = Rotation angle of the cluster configuration
@ -1135,6 +1219,10 @@ InnerTubeCfg.lbl.longA1 = <html>Split the cluster into separate components.<br>
InnerTubeCfg.lbl.longA2 = This also duplicates all components attached to this inner tube.
InnerTubeCfg.but.Resetsettings = Reset settings
InnerTubeCfg.but.ttip.Resetsettings = Reset the separation and rotation to the default values
InnerTubeCfg.radioBut.Relative = Relative
InnerTubeCfg.radioBut.Relative.ttip = The separation is measured relative to the outer diameter of the inner tube
InnerTubeCfg.radioBut.Absolute = Absolute
InnerTubeCfg.radioBut.Absolute.ttip = The separation is measured in length units
! LaunchLugConfig
LaunchLugCfg.lbl.Length = Length:
@ -1320,23 +1408,77 @@ TransitionCfg.tab.Generalproperties = General properties
TransitionCfg.tab.Shoulder = Shoulder
TransitionCfg.tab.Shoulderproperties = Shoulder properties
! Save RKT Warning Dialog
! Save RASAero Warning Dialog
SaveRASAeroWarningDialog.txt1 = Exporting to RASAero file format does not support all features of OpenRocket.
SaveRASAeroWarningDialog.donotshow = Do not show this dialog again
! Save RockSim Warning Dialog
SaveRktWarningDialog.txt1=Exporting to RockSim file format does not support all features of OpenRocket.
SaveRktWarningDialog.donotshow=Do not show this dialog again
saveAs.openrocket.title=Save as OpenRocket ork file
saveAs.rocksim.title=Export as RockSim rkt file
saveAs.openrocket.title = Save as OpenRocket ork file
saveAs.rocksim.title = Export as RockSim rkt file
saveAs.rasaero.title = Export as RASAero CDX1 file
saveAs.wavefront.title = Export as Wavefront OBJ file
! RASAero exporting
RASAeroExport.warning1 = Nose cone may not be flipped.
RASAeroExport.warning2 = First component of booster must be body tube.
RASAeroExport.warning3 = Already added a rail button, ignoring launch lug '%s'.
RASAeroExport.warning4 = Already added a launch shoe, ignoring launch lug '%s'.
RASAeroExport.warning5 = Instance count of '%s' not set to 2, defaulting to 2 and adjusting launch lug length accordingly.
RASAeroExport.warning6 = Already added a launch lug, ignoring rail button '%s'.
RASAeroExport.warning7 = Already added a launch shoe, ignoring rail button '%s'.
RASAeroExport.warning8 = Instance count of '%s' equals %d, defaulting to 2.
RASAeroExport.warning9 = Unsupported component '%s', ignoring.
RASAeroExport.warning10 = Rocket should have no more then 3 stages (excl. boosters) in total.\nIgnoring other stage(s).
RASAeroExport.warning11 = Empty simulation '%s', ignoring.
RASAeroExport.warning12 = No motors found in simulation '%s', ignoring.
RASAeroExport.warning13 = <html>Stage %s has no motor.<br>&nbsp --> When adding a motor in RASAero, don't forget to update the stage mass and CG.</html>
RASAeroExport.error1 = Unsupported component: %s.
RASAeroExport.error2 = Length of '%s' must be greater than 0.
RASAeroExport.error3 = Diameter of '%s' must be greater than 0.
RASAeroExport.error4 = Launch lug diameter can not be 0.
RASAeroExport.error5 = Launch lug length can not be 0.
RASAeroExport.error6 = Rail button diameter can not be 0.
RASAeroExport.error7 = Rail button height can not be 0.
RASAeroExport.error8 = Launch shoe area can not be 0.
RASAeroExport.error9 = Invalid stage number '%d' for booster stage '%s'.
RASAeroExport.error10 = Stage '%s' may not be empty.
RASAeroExport.error11 = First component of stage '%s' must be a body tube or transition.
RASAeroExport.error12 = When the first component of stage '%s' is a transition, the second one must be a body tube.
RASAeroExport.error13 = No previous component for '%s' in stage '%s'.
RASAeroExport.error14 = Transition '%s' in stage '%s' must have the same fore radius as the aft radius of its previous component '%s'.
RASAeroExport.error15 = Radius of '%s' in stage '%s' must be the same as the aft radius of '%s'.
RASAeroExport.error16 = Body tube '%s' in stage '%s' must have a TrapezoidFinSet.
RASAeroExport.error17 = Length of '%s' must be greater than 0.
RASAeroExport.error18 = Diameter of '%s' must be greater than 0.
RASAeroExport.error19 = Inside diameter of '%s' must be greater than 0.
RASAeroExport.error20 = Fin set '%s' must have a fin count between 3 and 8.
RASAeroExport.error21 = RASAero only supports apogee and altitude deployment events for parachute '%s', not '%s'
RASAeroExport.error22 = First component of the sustainer must be a nose cone.
RASAeroExport.error23 = Second component of the sustainer must be a body tube (or boattail).
RASAeroExport.error24 = A nose cone can only be the first component of the rocket.
RASAeroExport.error25 = Invalid stage number '%d' for simulation '%s'
RASAeroExport.error26 = RASAero only supports conical transitions.
RASAeroExport.error27 = Transition '%s' has no previous component.
RASAeroExport.error28 = Transition '%s' should have the same fore radius as the aft radius (%f) of its previous component, not %f.
RASAeroExport.error29 = Boattail length may not be zero.
RASAeroExport.error30 = Boattail rear diameter may not be zero.
RASAeroExport.error31 = Stage '%s' can only contain a body tube (incl. shoulder transition).
RASAeroExport.error32 = Boattails can only be added to the last stage.
RASAeroExport.error33 = Invalid component '%s' in sustainer stage.
! SaveAsFileChooser
SaveAsFileChooser.illegalFilename.title = Illegal filename
SaveAsFileChooser.illegalFilename.message = The filename '%s' may not contain the character ' %c '. Please remove it.
! StorageOptionChooser
StorageOptChooser.lbl.Simdatatostore = Simulated data to store:
StorageOptChooser.rdbut.Allsimdata = All simulated data
StorageOptChooser.lbl.longA1 = <html>Store all simulated data.<br>
StorageOptChooser.lbl.longA2 = This can result in very large files!
StorageOptChooser.rdbut.Every = Every
StorageOptChooser.lbl.longB1 = <html>Store plottable values approximately this far apart.<br>
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 = <html>Store only the values shown in the summary table.<br>
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.
@ -1346,6 +1488,53 @@ StorageOptChooser.lbl.info3 = Smallest file size
StorageOptChooser.ttip.Saveopt = Save options
StorageOptChooser.lbl.Saveopt = Save options
! OBJOptionChooser
OBJOptionChooser.lbl.component = <html>Component: %s</html>
OBJOptionChooser.lbl.multipleComponents = <i>Multiple components</i>
OBJOptionChooser.lbl.optimizeFor = Optimize for:
OBJOptionChooser.btn.opt3DPrint = 3D printing
OBJOptionChooser.btn.opt3DPrint.ttip = Optimize the OBJ export settings for 3D printing.
OBJOptionChooser.btn.optRend = Rendering
OBJOptionChooser.btn.optRend.ttip = Optimize the OBJ export settings for use in 3D rendering software.
OBJOptionChooser.easterEgg.title = Don't worry
OBJOptionChooser.easterEgg.msg = Don't worry, you already have the 3D printing settings enabled :).
OBJOptionChooser.easterEgg.msg2 = Seriously, you don't have to keep pressing me. :|
OBJOptionChooser.easterEgg.msg3 = I'm getting tired\u2026 Please stop :(
OBJOptionChooser.easterEgg.msg4 = Well, congrats on wasting 40 clicks and your time :D Bye!
OBJOptionChooser.checkbox.exportChildren = Export children
OBJOptionChooser.checkbox.exportChildren.ttip = If true, export children of the selected components as well.
OBJOptionChooser.checkbox.exportChildren.assemblies.ttip = Component assemblies always export their children.
OBJOptionChooser.checkbox.exportChildren.noChildren.ttip = Selected components don't have children.
OBJOptionChooser.checkbox.exportMotors = Export motors
OBJOptionChooser.checkbox.exportMotors.ttip = If true, export the motors of the rocket.
OBJOptionChooser.checkbox.exportAppearance = Export appearance
OBJOptionChooser.checkbox.exportAppearance.ttip = If true, export the component appearances to an MTL file.
OBJOptionChooser.checkbox.exportAsSeparateFiles = Export as separate files
OBJOptionChooser.checkbox.exportAsSeparateFiles.ttip = If true, export each component as a separate OBJ file.
OBJOptionChooser.checkbox.exportAppearance.ttip.triangulate = You can not export the appearance with the triangulate feature enabled.
OBJOptionChooser.checkbox.removeOffset = Remove origin offset
OBJOptionChooser.checkbox.removeOffset.ttip = <html>If true, remove the offset of the component from the origin.<br>If false, the component is exported at its original location in the rocket.</html>
OBJOptionChooser.btn.showAdvanced = Show Advanced options
OBJOptionChooser.checkbox.triangulate = Triangulate mesh
OBJOptionChooser.checkbox.triangulate.ttip = If true, triangulate the mesh before exporting (convert all quads or high-order polygons to a triangle).
OBJOptionChooser.checkbox.sRGB = Export colors in sRGB
OBJOptionChooser.checkbox.sRGB.ttip = <html>If true, export colors in sRGB instead of a linear color scheme.<br>Is useful for instance when exporting for use in Blender.</html>
OBJOptionChooser.lbl.Scaling = Scaling:
OBJOptionChooser.lbl.Scaling.ttip = <html>Scale the exported geometry by the given factor.<br>The default dimensions are in SI units (meters), but e.g. 3D printing slicer software often uses mm.<br>In that scenario, you can set the scale to '1000'.</html>
OBJOptionChooser.lbl.LevelOfDetail = Level of detail:
OBJOptionChooser.lbl.LevelOfDetail.ttip = Select the desired level of detail of the geometry export.
OBJOptionChooser.lbl.CoordinateTransform = Coordinate transform:
OBJOptionChooser.lbl.CoordinateTransform.ttip = Define how to OpenRocket axes are mapped to the OBJ axes.
OBJOptionChooser.lbl.CoordinateTransform.Axial = Axial (up) axis:
OBJOptionChooser.lbl.CoordinateTransform.Axial.ttip = Select the OBJ axis that should correspond to the axial (up) axis of the OpenRocket model.
OBJOptionChooser.lbl.CoordinateTransform.Forward = Forward axis:
OBJOptionChooser.lbl.CoordinateTransform.Forward.ttip = Select the OBJ axis that should correspond to the forward axis of the OpenRocket model.
! LevelOfDetail
LevelOfDetail.LOW_QUALITY = Low quality
LevelOfDetail.NORMAL_QUALITY = Normal quality
LevelOfDetail.HIGH_QUALITY = High quality
! ThrustCurveMotorSelectionPanel
TCMotorSelPan.lbl.Selrocketmotor = Select rocket motor:
TCMotorSelPan.checkbox.hideSimilar = Hide very similar thrust curves
@ -1355,6 +1544,7 @@ TCMotorSelPan.lbl.motorNameColumn.ttip = Select which motor property to display
TCMotorSelPan.btn.commonName = Use common name
TCMotorSelPan.btn.designation = Use manufacturer's designation
TCMotorSelPan.lbl.nrOfMotors = Number of motors:
TCMotorSelPan.lbl.nrOfMotors.None = None
TCMotorSelPan.lbl.ttip.nrOfMotors = Number of motors currently visible in the motor selection table
TCMotorSelPan.checkbox.limitlength = Limit motor length to mount length
TCMotorSelPan.checkbox.limitdiameter = Limit motor diameter to mount diameter
@ -1368,15 +1558,16 @@ TCMotorSelPan.MotorMountDimensions = Motor mount dimensions:
TCMotorSelPan.lbl.Search = Search:
TCMotorSelPan.lbl.Selectthrustcurve = Select thrust curve:
TCMotorSelPan.lbl.Ejectionchargedelay = Ejection charge delay:
TCMotorSelPan.equalsIgnoreCase.None = None
TCMotorSelPan.lbl.NumberofsecondsorNone = (Number of seconds or \"None\")
TCMotorSelPan.lbl.Numberofseconds = (or type in desired delay in seconds)
TCMotorSelPan.lbl.Designation = Designation:
TCMotorSelPan.lbl.CommonName = Common name:
TCMotorSelPan.lbl.Totalimpulse = Total impulse:
TCMotorSelPan.lbl.Avgthrust = Avg. thrust:
TCMotorSelPan.lbl.Maxthrust = Max. thrust:
TCMotorSelPan.lbl.Burntime = Burn time:
TCMotorSelPan.lbl.Launchmass = Launch mass:
TCMotorSelPan.lbl.Emptymass = Empty mass:
TCMotorSelPan.lbl.Motortype = Motor type:
TCMotorSelPan.lbl.Caseinfo = Case info:
TCMotorSelPan.lbl.Propinfo = Propellant:
TCMotorSelPan.lbl.CompatibleCases = Compatible Cases:
@ -1384,7 +1575,8 @@ TCMotorSelPan.lbl.Datapoints = Data points:
TCMotorSelPan.lbl.Digest = Digest:
TCMotorSelPan.title.Thrustcurve = Thrust curve:
TCMotorSelPan.title.Thrust = Thrust
TCMotorSelPan.delayBox.None = Plugged (None)
TCMotorSelPan.delayBox.Plugged = Plugged
TCMotorSelPan.delayBox.PluggedNone = None
TCMotorSelPan.noDescription = No description available.
TCMotorSelPan.btn.checkAll = Select All
TCMotorSelPan.btn.checkNone = Clear All
@ -1395,6 +1587,7 @@ TCMotorSelPan.btn.close = Close
! PlotDialog
PlotDialog.CheckBox.Showdatapoints = Show data points
PlotDialog.lbl.Chart = left click drag to zoom area. mouse wheel to zoom. ctrl-mouse wheel to zoom x axis only. ctrl-left click drag to pan. right click drag to zoom dynamically.
PlotDialog.lbl.timeSeriesWarning = The data is plotted in time order even though the X axis type is not time.
PlotDialog.btn.exportImage = Export Image
ComponentTree.ttip.massoverride = mass overriden
@ -1416,16 +1609,24 @@ main.menu.file.openRecent = Open recent
main.menu.file.openRecent.desc = Open a recent rocket design
main.menu.file.openExample = Open example
main.menu.file.openExample.desc = Open an example rocket design
main.menu.file.import = Import
main.menu.file.import.desc = Import a rocket design file from another program
main.menu.file.import.RockSim = RockSim (.rkt)
main.menu.file.import.RockSim.desc = Import design from RockSim file into OpenRocket
main.menu.file.import.RASAero = RASAero II (.CDX1)
main.menu.file.import.RASAero.desc = Import design from RASAero II file into OpenRocket
main.menu.file.save = Save
main.menu.file.save.desc = Save the current rocket design
main.menu.file.saveAs = Save as\u2026
main.menu.file.saveAs.desc = Save the current rocket design to a new file
! main.menu.file.import = Import\u2026
! main.menu.file.import.desc = Import design from RockSim rkt file
main.menu.file.export_as = Export as
main.menu.file.export_as.desc = Export design as selected file format
main.menu.file.encode_3d = Encode 3D
main.menu.file.encode_3d.desc = Encode design to selected 3D file format
main.menu.file.exportAs = Export as
main.menu.file.exportAs.desc = Export design as selected file format
main.menu.file.exportAs.RockSim = RockSim (.rkt)
main.menu.file.exportAs.RockSim.desc = Export design to RockSim file
main.menu.file.exportAs.RASAero = RASAero II (.CDX1)
main.menu.file.exportAs.RASAero.desc = Export design to RASAero II file
main.menu.file.exportAs.WavefrontOBJ= Wavefront OBJ (.obj)
main.menu.file.exportAs.WavefrontOBJ.desc = Export the selected components to a Wavefront OBJ 3D file
main.menu.file.print = Print design info\u2026
main.menu.file.print.desc = Print design specifications, including the parts list and fin templates, print or save as PDF
main.menu.file.close = Close design
@ -1434,6 +1635,7 @@ main.menu.file.quit = Quit
main.menu.file.quit.desc = Quit the program
main.menu.file.exportDecal = Save decal image\u2026
main.menu.file.exportDecal.desc = Save a decal from the current rocket design to a file for editing.
main.menu.file.table.exportToCSV = Export simulations table as CSV file
main.menu.edit = Edit
main.menu.edit.desc = Rocket editing
@ -1461,6 +1663,8 @@ main.menu.help = Help
main.menu.help.desc = Information about OpenRocket
main.menu.help.tours = Guided tours
main.menu.help.tours.desc = Take guided tours on OpenRocket
main.menu.help.wiki = Wiki (Online Help)
main.menu.help.wiki.desc = Open the OpenRocket Wiki site, containing documentation, in your default webbrowser
main.menu.help.license = License
main.menu.help.license.desc = OpenRocket license information
main.menu.help.bugReport = Bug report
@ -1515,6 +1719,9 @@ material.styrofoam_blue_foam_xps = Styrofoam \"Blue foam\" (XPS)
material.titanium = Titanium
material.quantum_tubing = Quantum tubing
material.blue_tube = Blue tube
material.pla = PLA - 100% infill
material.petg = PETG - 100% infill
material.abs = ABS - 100% infill
!SURFACE_MATERIAL
material.ripstop_nylon = Ripstop nylon
material.mylar = Mylar
@ -1576,7 +1783,7 @@ Shape.Haackseries.desc2 = The Haack series <i>nose cones</i> are designed to min
! RocketComponent
RocketComponent.Position.Method.Axial.ABSOLUTE = Tip of the nose cone
RocketComponent.Position.Method.Axial.ABSOLUTE = Tip of the rocket
RocketComponent.Position.Method.Axial.AFTER = After the sibling component
RocketComponent.Position.Method.Axial.BOTTOM = Bottom of the parent component
RocketComponent.Position.Method.Axial.MIDDLE = Middle of the parent component
@ -1876,6 +2083,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.
@ -1891,6 +2099,8 @@ Warning.TUBE_SEPARATION = Space between tube fins may not simulate accurately.
Warning.TUBE_OVERLAP = Overlapping tube fins may not simulate accurately.
Warning.EMPTY_BRANCH = Simulation branch contains no data
Warning.SEPARATION_ORDER = Stages separated in an unreasonable order
Warning.EARLY_SEPARATION = Stages separated before clearing launch rod/rail
Warning.OBJ_ZERO_THICKNESS = Zero-thickness component can cause issues for 3D printing
! Scale dialog
ScaleDialog.lbl.scaleRocket = Entire rocket
@ -2185,7 +2395,7 @@ ComponentPresetChooserDialog.menu.units = Units
ComponentPresetChooserDialog.checkbox.showLegacyCheckBox = Show Legacy Database
ComponentPresetChooserDialog.lbl.favorites = Check to add preset to the preset drop-down menu in the component edit dialog<br>Directly apply a preset by double-clicking it or by selecting it and closing this window.
ComponentPresetChooserDialog.checkbox.alwaysOpenPreset = Always open this dialog when creating a new %s
table.column.Favorite = Favorite
table.column.Favorite = \u2026 Favorite
table.column.Legacy = Legacy
table.column.Manufacturer = Manufacturer
table.column.PartNo = Part Number
@ -2250,16 +2460,17 @@ IgnitionSelectionDialog.opt.default = Change all configurations using the defaul
IgnitionSelectionDialog.opt.override = Override for the {0} flight configuration only
DeploymentSelectionDialog.opt.title = Which flight configurations are affected:
DeploymentSelectionDialog.opt.default = Change all configuration using the default deployment event
DeploymentSelectionDialog.opt.default = Change all configurations using the default deployment event
DeploymentSelectionDialog.opt.override = Override for the {0} flight configuration only
SeparationSelectionDialog.opt.title = Which flight configurations are affected:
SeparationSelectionDialog.opt.default = Change all configuration using the default separation event
SeparationSelectionDialog.opt.default = Change all configurations using the default separation event
SeparationSelectionDialog.opt.override = Override for the {0} flight configuration only
MotorConfigurationPanel.description = <b>Select the motors and motor ignition events of the selected flight configuration.</b><br> <em>Motor mounts:</em> Select which components function as motor mounts.<br> <em>Motor configurations:</em> Select the motor and ignition event for each motor mount.
MotorDescriptionSubstitutor.description = Motors in the configuration
MotorManufacturerSubstitutor.description = Motor manufacturers in the configuration
!Photo Panel
@ -2299,6 +2510,7 @@ PhotoSettingsConfig.lbl.lightAz = Light Azimuth
PhotoSettingsConfig.lbl.lightAlt = Light Altitude
PhotoSettingsConfig.lbl.sky = Sky
PhotoSettingsConfig.lbl.skyColor = Sky Color
PhotoSettingsConfig.lbl.skyColorOpacity = Sky Color Opacity
PhotoSettingsConfig.lbl.skyImage = Sky Image
PhotoSettingsConfig.lbl.skyCredit = Image Credit

View File

@ -16,11 +16,6 @@
debug.currentFile = messages_ar.properties
! RocketActions
RocketActions.checkbox.Donotaskmeagain = لا تسألني مجددا
RocketActions.lbl.Youcanchangedefop = يمكنك تغيير العملية الافتراضية في التفضيلات.
RocketActions.showConfirmDialog.lbl1 = إحذف المحاكاة المختارة؟
RocketActions.showConfirmDialog.lbl2 = <html><i>لا يمكنك التراجع عن هذه العملية.</i>
RocketActions.showConfirmDialog.title = إحذف كل المحاكاة
RocketActions.DelCompAct.Delete = إحذف
RocketActions.DelCompAct.ttip.Delete = إحذف القطعة المختارة
RocketActions.DelSimuAct.Delete = إحذف
@ -106,7 +101,7 @@ dlg.but.close = إغلاق
! General file type names
FileHelper.CSV_FILTER = (*.csv) ملفات مفصولة بفواصل
FileHelper.PDF_FILTER = (*.pdf) ملف بي دي إف
FileHelper.ALL_DESIGNS_FILTER = (*.ork; *.rkt) كل تصاميم الصواريخ
FileHelper.ALL_DESIGNS_FILTER = (*.ork; *.rkt, *.CDX1) كل تصاميم الصواريخ
FileHelper.OPENROCKET_DESIGN_FILTER = (*.ork) تصاميم أوبنروكت
FileHelper.ROCKSIM_DESIGN_FILTER = (*.rkt) تصاميم روكسيم
FileHelper.OPEN_ROCKET_COMPONENT_FILTER = (*.orc) إعدادات أوبنروكت المسبقة
@ -276,8 +271,8 @@ pref.dlg.tab.Simulation = محاكاة
pref.dlg.tab.Launch = إطلاق
pref.dlg.tab.Miscellaneousoptions = الخيارات المتنوعة
pref.dlg.lbl.RockSimWarning = إظهار تحذير عند الحفظ بتنسيق روكسيم
pref.dlg.but.clearCachedPreferences = إعادة تعيين كل التفضيلات
pref.dlg.but.clearCachedPreferences.ttip = (إعدادات واجهة المستخدم والملفات الحديثة وما إلى ذلك)إعادة تعيين جميع التفضيلات ، بما في ذلك التفضيلات المخزنة مؤقتًا
pref.dlg.but.resetAllPreferences = إعادة تعيين كل التفضيلات
pref.dlg.but.resetAllPreferences.ttip = (إعدادات واجهة المستخدم والملفات الحديثة وما إلى ذلك)إعادة تعيين جميع التفضيلات ، بما في ذلك التفضيلات المخزنة مؤقتًا
pref.dlg.clearCachedPreferences.title = هل تريد إعادة تعيين التفضيلات؟
pref.dlg.clearCachedPreferences.message = هل أنت متأكد أنك تريد إعادة تعيين كل تفضيلاتك؟
@ -348,9 +343,6 @@ pref.dlg.PrefBooleanSelector2 = تأكيد
pref.dlg.Add = أضف
pref.dlg.DescriptionArea.Adddirectories =.ملفات محرك روكسيم أو أرشيفات زيب مفصولة بفاصلة منقوطة لتحميل منحنيات الدفع الخارجية. ستدخل التغييرات حيز التنفيذ في المرة التالية التي تفتح فيها أوبنروكت (* .rse)أو RASP ملفات محرك (* .eng), أضف الدلائل
PreferencesDialog.lbl.language = :لغة الواجهة
PreferencesDialog.languages.default = النظام الافتراضي
PreferencesDialog.lbl.languageEffect = .ستتغير اللغة في المرة التالية التي تعيد تشغيل أوبنروكت
generalprefs.lbl.language = :لغة الواجهة
generalprefs.languages.default = النظام الافتراضي
generalprefs.lbl.languageEffect = .ستتغير اللغة في المرة التالية التي تعيد تشغيل أوبنروكت
@ -959,16 +951,18 @@ RocketCompCfg.lbl.Length = :الطول
RocketCompCfg.lbl.Thickness = :السماكة
RocketCompCfg.checkbox.Endcapped = نهاية مغلقة
RocketCompCfg.checkbox.Endcapped.ttip = .يغلق نهاية الكتف
RocketCompCfg.title.Aftshoulder = مؤخرة الكتف
RocketCompCfg.border.Aftshoulder = مؤخرة الكتف
RocketCompCfg.border.Foreshoulder = مقدمة الكتف
!RocketCompCfg.lbl.Length = :الطول
RocketCompCfg.lbl.InstanceCount = عدد المثيل
RocketCompCfg.lbl.InstanceSeparation = فصل المثيل
RocketCompCfg.tab.Outside = من الخارج
RocketCompCfg.tab.Inside = من الداخل
RocketCompCfg.tab.RightSide = الجانب اليميني
RocketCompCfg.tab.LeftSide = الجانب اليساري
! InstancesPanel
InstancesPanel.lbl.InstanceCount = عدد المثيل
InstancesPanel.lbl.InstanceSeparation = فصل المثيل
! ComponentInfo
ComponentInfo.EngineBlock = .كتلة المحرك تمنعه من التحرك للأمام في أنبوب الحامل للمحرك<br><br>.من أجل إضافة محرك ، قم بإنشاء أنبوب جسم أو أنبوب داخلي وقم بتمييزه على أنه حامل محرك في علامة تبويب المحرك
@ -1301,11 +1295,7 @@ StorageOptChooser.lbl.Simdatatostore = :بيانات مُحاكاة للتخزي
StorageOptChooser.rdbut.Allsimdata = جميع البيانات المحاكاة
StorageOptChooser.lbl.longA1 = <html>.تخزين جميع البيانات المحاكاة<br>
StorageOptChooser.lbl.longA2 = !يمكن أن ينتج عن ذلك ملفات كبيرة جدًا
StorageOptChooser.rdbut.Every = كل
StorageOptChooser.lbl.longB1 = <html>.قم بتخزين القيم القابلة للرسم على مخطط بياني على مسافة متباعدة تقريبًا<br>
StorageOptChooser.lbl.longB2 = .القيم الأكبر ينتج عنها ملفات أصغر
StorageOptChooser.lbl.seconds = ثواني
StorageOptChooser.rdbut.Onlyprimfig = المحاكاة الأولية فقط
StorageOptChooser.rdbut.Onlysummarydata = المحاكاة الأولية فقط
StorageOptChooser.lbl.longC1 = <html>.قم بتخزين القيم المعروضة في جدول الملخص فقط<br>
StorageOptChooser.lbl.longC2 = .ينتج عن هذا أصغر الملفات
StorageOptChooser.lbl.longD1 = .تقدير لمدى حجم الملف الناتج مع الخيارات الحالية
@ -1337,8 +1327,7 @@ TCMotorSelPan.MotorMountDimensions = :أبعاد حامل المحرك
TCMotorSelPan.lbl.Search = :بحث
TCMotorSelPan.lbl.Selectthrustcurve = :حدد منحنى الدفع
TCMotorSelPan.lbl.Ejectionchargedelay = :تأخير شحنة الإطلاق
TCMotorSelPan.equalsIgnoreCase.None = لا شئ
TCMotorSelPan.lbl.NumberofsecondsorNone = (\"لا شئ\" عدد الثواني أو)
TCMotorSelPan.lbl.Numberofseconds = (\"لا شئ\" عدد الثواني أو)
TCMotorSelPan.lbl.Designation = :تسمية الشركة المصنعة
TCMotorSelPan.lbl.Totalimpulse = :الدفع الكلي
TCMotorSelPan.lbl.Avgthrust = :متوسط الدفع
@ -1353,7 +1342,7 @@ TCMotorSelPan.lbl.Datapoints = :نقاط البيانات
TCMotorSelPan.lbl.Digest = :الإستيعاب
TCMotorSelPan.title.Thrustcurve = :منحنى الدفع
TCMotorSelPan.title.Thrust = الدفع
TCMotorSelPan.delayBox.None = لا شئ
TCMotorSelPan.delayBox.Plugged = لا شئ
TCMotorSelPan.noDescription = .لا يوجد وصف متاح
TCMotorSelPan.btn.checkAll = تحديد الكل
TCMotorSelPan.btn.checkNone = مسح الكل
@ -1391,10 +1380,10 @@ main.menu.file.saveAs = \u2026 إحفظ ك
main.menu.file.saveAs.desc = إحفظ تصميم الصاروخ الحالي في ملف جديد
! main.menu.file.import = \u2026 إستيراد
! main.menu.file.import.desc = rkt إستيراد التصميم من ملف روكسيم
main.menu.file.export_as = صدر ك
main.menu.file.export_as.desc = تصدير التصميم كتنسيق ملف محدد
main.menu.file.encode_3d = تشفير ثلاثي الأبعاد
main.menu.file.encode_3d.desc = تشفير التصميم إلى تنسيق ملف ثلاثي الأبعاد محدد
main.menu.file.exportAs = صدر ك
main.menu.file.exportAs.desc = تصدير التصميم كتنسيق ملف محدد
main.menu.file.encode3D = تشفير ثلاثي الأبعاد
main.menu.file.encode3D.desc = تشفير التصميم إلى تنسيق ملف ثلاثي الأبعاد محدد
main.menu.file.print = \u2026 طباعة معلومات التصميم
main.menu.file.print.desc = مواصفات تصميم الطباعة ، بما في ذلك قائمة الأجزاء وقوالب الزعان, إطبع أو إحفظ كملف بي دي إف
main.menu.file.close = أغلق التصميم

View File

@ -16,11 +16,6 @@
debug.currentFile = messages_cs.properties
! RocketActions
RocketActions.checkbox.Donotaskmeagain = Prí\u0161te se me neptejte
RocketActions.lbl.Youcanchangedefop = Mu\u017Eete zmenit výchozí operaci v nastavení.
RocketActions.showConfirmDialog.lbl1 = Chcete smazat oznacenou simulaci?
RocketActions.showConfirmDialog.lbl2 = <html><i>Tuto operaci nelze vzít zpet.</i>
RocketActions.showConfirmDialog.title = Sma\u017E simulace
RocketActions.DelCompAct.Delete = Sma\u017E
RocketActions.DelCompAct.ttip.Delete = Sma\u017E oznacenou komponentu.
RocketActions.DelSimuAct.Delete = Sma\u017E
@ -59,7 +54,7 @@ RocketPanel.lbl.infoMessage = <html>Stiskni k oznacen
! BasicFrame
FileHelper.ALL_DESIGNS_FILTER = V\u0161echny návrhy raket (*.ork; *.rkt)
FileHelper.ALL_DESIGNS_FILTER = V\u0161echny návrhy raket (*.ork; *.rkt, *.CDX1)
FileHelper.OPENROCKET_DESIGN_FILTER = Návrhy OpenRocket (*.ork)
FileHelper.ROCKSIM_DESIGN_FILTER = Návrhy RockSim (*.rkt)
FileHelper.CSV_FILTER = Soubory s cárkovým oddelovacem (*.csv)
@ -269,9 +264,9 @@ pref.dlg.PrefBooleanSelector2 = Potvrd
pref.dlg.Add = Pridej
pref.dlg.DescriptionArea.Adddirectories = Pridej adresáre, soubory RASP motor (*.eng), RockSim engine soubory (*.rse) nebo ZIP archiv oddelený oddelovacem (;) k nahrání externích výkonových prubehu. Zmeny se projeví po restaru programu OpenRocket.
PreferencesDialog.lbl.language = Jazyk rohranní:
PreferencesDialog.languages.default = Výchozí
PreferencesDialog.lbl.languageEffect = Jazyk se zmení pri dal\u0161ím spu\u0161tení programu OpenRocket.
generalprefs.lbl.language = Jazyk rohranní:
generalprefs.languages.default = Výchozí
generalprefs.lbl.languageEffect = Jazyk se zmení pri dal\u0161ím spu\u0161tení programu OpenRocket.
! Software update checker
update.dlg.error.title = Nemohu získat informace o aktualizacích
@ -656,7 +651,7 @@ RocketCompCfg.lbl.Length = D
RocketCompCfg.lbl.Thickness = Tlou\u0161tka:
RocketCompCfg.checkbox.Endcapped = Záslepka
RocketCompCfg.ttip.Endcapped = Zdali je konec ramene zaslepen.
RocketCompCfg.title.Aftshoulder = Dr\u017Eák zádi
RocketCompCfg.border.Aftshoulder = Dr\u017Eák zádi
RocketCompCfg.border.Foreshoulder = Dr\u017Eák prídi
!RocketCompCfg.lbl.Length = Délka:
@ -921,10 +916,6 @@ StorageOptChooser.lbl.Simdatatostore = Simulacn
StorageOptChooser.rdbut.Allsimdata = V\u0161echny data ze simulace
StorageOptChooser.lbl.longA1 = <html>Ulo\u017Eí v\u0161echny simulacní data.<br>
StorageOptChooser.lbl.longA2 = Výsledek mu\u017Ee vyústit ve velmi velké soubory!
StorageOptChooser.rdbut.Every = Ka\u017Edý
StorageOptChooser.lbl.longB1 = <html>Store plottable values approximately this far apart.<br>
StorageOptChooser.lbl.longB2 = Vet\u0161í hodnoty vyústí v men\u0161í soubory.
StorageOptChooser.lbl.seconds = sekundy
StorageOptChooser.rdbut.Onlyprimfig = Pouze hlavní grafy
StorageOptChooser.lbl.longC1 = <html>Ulo\u017E pouze hodnoty ukázané v prehledu.<br>
StorageOptChooser.lbl.longC2 = This results in the smallest files.
@ -944,8 +935,7 @@ TCMotorSelPan.lbl.Motormountdia = Prumer uchycen
TCMotorSelPan.lbl.Search = Hledej:
TCMotorSelPan.lbl.Selectthrustcurve = Vyber výkonovou krivku:
TCMotorSelPan.lbl.Ejectionchargedelay = Oddelovací zpo\u017Edení:
TCMotorSelPan.equalsIgnoreCase.None = Nic
TCMotorSelPan.lbl.NumberofsecondsorNone = (Pocet sekund nebo \"Nic\")
TCMotorSelPan.lbl.Numberofseconds = (Pocet sekund nebo \"Nic\")
TCMotorSelPan.lbl.Designation = Pojmenování:
TCMotorSelPan.lbl.Totalimpulse = Celkový impulse:
TCMotorSelPan.lbl.Avgthrust = Prumerný tah:
@ -957,7 +947,7 @@ TCMotorSelPan.lbl.Datapoints = Datov
TCMotorSelPan.lbl.Digest = Výber:
TCMotorSelPan.title.Thrustcurve = Výkonová krivka:
TCMotorSelPan.title.Thrust = Tah
TCMotorSelPan.delayBox.None = Nic
TCMotorSelPan.delayBox.Plugged = Nic
! PlotDialog

View File

@ -16,11 +16,6 @@
debug.currentFile = messages_de.properties
! RocketActions
RocketActions.checkbox.Donotaskmeagain = Nicht wieder fragen
RocketActions.lbl.Youcanchangedefop = Die Standardaktion kann in den Einstellungen geändert werden.
RocketActions.showConfirmDialog.lbl1 = Simulationen löschen?
RocketActions.showConfirmDialog.lbl2 = <html><i>Diese Aktion kann nicht rückgängig gemacht werden.</i>
RocketActions.showConfirmDialog.title = Simulationen löschen
RocketActions.DelCompAct.Delete = Löschen
RocketActions.DelCompAct.ttip.Delete = Die ausgewählte Komponente löschen.
RocketActions.DelSimuAct.Delete = Löschen
@ -93,7 +88,7 @@ dlg.but.close = Schlie
! General file type names
FileHelper.PDF_FILTER = PDF files
FileHelper.ALL_DESIGNS_FILTER = Alle Raketendesigns (*.ork; *.rkt)
FileHelper.ALL_DESIGNS_FILTER = Alle Raketendesigns (*.ork; *.rkt, *.CDX1)
FileHelper.OPENROCKET_DESIGN_FILTER = OpenRocket Designs (*.ork)
FileHelper.ROCKSIM_DESIGN_FILTER = RockSim Designs (*.rkt)
FileHelper.OPEN_ROCKET_COMPONENT_FILTER = OpenRocket presets (*.orc)
@ -271,9 +266,9 @@ pref.dlg.PrefBooleanSelector2 = Best
pref.dlg.Add = Hinzufügen
pref.dlg.DescriptionArea.Adddirectories = Um eigene Schubkurven zu laden, Verzeichnisse, RASP-Motordateien (*.eng), RockSim-Motordateien (*.rse) oder ZIP-Archive mit Semikolon getrennt eingeben. Änderungen werden beim nächsten Neustart von OpenRocket übernommen.
PreferencesDialog.lbl.language = Sprache:
PreferencesDialog.languages.default = Systemeinstellung
PreferencesDialog.lbl.languageEffect = Die Sprache wird beim nächsten Neustart von OpenRocket geändert.
generalprefs.lbl.language = Sprache:
generalprefs.languages.default = Systemeinstellung
generalprefs.lbl.languageEffect = Die Sprache wird beim nächsten Neustart von OpenRocket geändert.
! Software update checker
update.dlg.error.title = Es konnten keine Informationen über Programmaktualisierungen empfangen werden.
@ -713,7 +708,7 @@ RocketCompCfg.lbl.Length = L
RocketCompCfg.lbl.Thickness = Wandstärke:
RocketCompCfg.checkbox.Endcapped = Verschlossenes Ende
RocketCompCfg.ttip.Endcapped = Gibt an, ob das Ende der Schulter geschlossen ist.
RocketCompCfg.title.Aftshoulder = Schulter hinten
RocketCompCfg.border.Aftshoulder = Schulter hinten
RocketCompCfg.border.Foreshoulder = Schulter vorn
!RocketCompCfg.lbl.Length = Length:
@ -979,11 +974,7 @@ StorageOptChooser.lbl.Simdatatostore = Zu speichernde Simulationsdaten:
StorageOptChooser.rdbut.Allsimdata = Alle Simulationsdaten
StorageOptChooser.lbl.longA1 = <html>Speichert alle Simulationsdaten.<br>
StorageOptChooser.lbl.longA2 = Dies kann sehr große Dateien erzeugen!
StorageOptChooser.rdbut.Every = Alle Simulationsdaten
StorageOptChooser.lbl.longB1 = <html>Speicher plotbare Daten in etwa diesem Abstand.<br>
StorageOptChooser.lbl.longB2 = Größere 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 = <html>Speichert nur die Werte, die in der Zusammenfassung stehen.<br>
StorageOptChooser.lbl.longC2 = Dies ergibt die kleinsten Dateien
StorageOptChooser.checkbox.Compfile = Datei komprimieren
@ -1002,8 +993,7 @@ TCMotorSelPan.lbl.Motormountdia = Durchmesser der Motorhalterung
TCMotorSelPan.lbl.Search = Suchen:
TCMotorSelPan.lbl.Selectthrustcurve = Schubkurve auswählen:
TCMotorSelPan.lbl.Ejectionchargedelay = Verzögerung der Ausstoßladung:
TCMotorSelPan.equalsIgnoreCase.None = keine
TCMotorSelPan.lbl.NumberofsecondsorNone = (Anzahl der Sekunden oder \«keine\«)
TCMotorSelPan.lbl.Numberofseconds = (Anzahl der Sekunden oder \«keine\«)
TCMotorSelPan.lbl.Designation = Bezeichnung:
TCMotorSelPan.lbl.Totalimpulse = Gesamtimpuls:
TCMotorSelPan.lbl.Avgthrust = Durchschn. Schub:
@ -1015,7 +1005,7 @@ TCMotorSelPan.lbl.Datapoints = Datenpunkte:
TCMotorSelPan.lbl.Digest = Übersicht:
TCMotorSelPan.title.Thrustcurve = Schubkurve:
TCMotorSelPan.title.Thrust = Schub:
TCMotorSelPan.delayBox.None = keine
TCMotorSelPan.delayBox.Plugged = keine
! PlotDialog

View File

@ -42,7 +42,7 @@ AppearanceCfg.lbl.texture.repeat = Aspecto:
AppearanceCfg.lbl.texture.rotation = Rotaci\u00f3n:
AppearanceCfg.lbl.texture.scale = Escala:
FileHelper.ALL_DESIGNS_FILTER = Todos los dise\u00f1os de cohete(*.ork; *.rkt)
FileHelper.ALL_DESIGNS_FILTER = Todos los dise\u00f1os de cohete(*.ork; *.rkt, *.CDX1)
FileHelper.OPENROCKET_DESIGN_FILTER = Dise\u00f1os OpenRocket (*.ork)
FileHelper.ROCKSIM_DESIGN_FILTER = Dise\u00f1os RockSim (*.rkt)
FileHelper.OPEN_ROCKET_COMPONENT_FILTER = Preajustes OpenRocket (*.orc)
@ -733,9 +733,9 @@ PlotDialog.title.Flightdataplot = Representaci\u00f3n de los datos de vuelo
ComponentTreeRenderer.total = total
PreferencesDialog.languages.default = Idioma por defecto
PreferencesDialog.lbl.language = Idioma de la interfaz:
PreferencesDialog.lbl.languageEffect = El idioma cambiar\u00e1 la pr\u00f3xima vez que abra OpenRocket.
generalprefs.languages.default = Idioma por defecto
generalprefs.lbl.language = Idioma de la interfaz:
generalprefs.lbl.languageEffect = El idioma cambiar\u00e1 la pr\u00f3xima vez que abra OpenRocket.
PresetModel.lbl.custompreset = Personalizado
PresetModel.lbl.partsLib = Biblioteca de piezas
@ -811,12 +811,6 @@ RocketActions.NewStageAct.Newstage = Nueva etapa
RocketActions.NewStageAct.ttip.Newstage = A\u00f1adir una nueva etapa al dise\u00f1o del cohete
RocketActions.PasteAct.Paste = Pegar
RocketActions.PasteAct.ttip.Paste = Pegar al portapapeles
! RocketActions
RocketActions.checkbox.Donotaskmeagain = No volver a preguntarme
RocketActions.lbl.Youcanchangedefop = Puede modificar la operaci\u00f3n por defecto con sus preferencias
RocketActions.showConfirmDialog.lbl1 = \u00bfBorrar las simulaciones seleccionadas?
RocketActions.showConfirmDialog.lbl2 = <html><i>Esta operaci\u00f3n no puede deshacerse.</i>
RocketActions.showConfirmDialog.title = Borrar simulaciones
RocketCfg.lbl.Comments = Comentarios:
RocketCfg.lbl.Designer = Dise\u00f1ador:
@ -863,7 +857,7 @@ RocketCompCfg.tab.Figure = Estilo
RocketCompCfg.tab.Override.ttip = Especificar la Masa y el CG del componente.
RocketCompCfg.tab.Override = Masa y CG
RocketCompCfg.tab.Comment.ttip = Especifique un comentario para el componente
RocketCompCfg.title.Aftshoulder = Trasera del acople
RocketCompCfg.border.Aftshoulder = Trasera del acople
RocketCompCfg.ttip.Endcapped = Si el extremo del soporte est\u00e1 truncado.
RocketCompCfg.lbl.Componentname.ttip = El nombre del componente.
@ -1071,15 +1065,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 = <html>Almacenar todos los datos simulados.<br>
StorageOptChooser.lbl.longA2 = Esto puede generar archivos muy grandes
StorageOptChooser.lbl.longB1 = <html>Almacenar los valores de impresi\u00f3n de este apartado.<br>
StorageOptChooser.lbl.longB2 = Genera valores grandes en archivos m\u00e1s peque\u00f1os.
StorageOptChooser.lbl.longC1 = <html>Almacenar s\u00f3lo los valores en la tabla resumen.<br>
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
@ -1129,8 +1119,7 @@ TCMotorSelPan.checkbox.hideSimilar = Borrar las curvas similares
TCMotorSelPan.checkbox.hideUsed = Ocultar los motores que ya est\u00e1n instalados
TCMotorSelPan.checkbox.limitdiameter = Limitar el di\u00e1metro de motor al di\u00e1metro del porta motor
TCMotorSelPan.checkbox.limitlength = Limitar la longitud del motor a la longitud del porta motor
TCMotorSelPan.delayBox.None = Ninguno
TCMotorSelPan.equalsIgnoreCase.None = Ninguno
TCMotorSelPan.delayBox.Plugged = Ninguno
TCMotorSelPan.lbl.Avgthrust = Empuje medio:
TCMotorSelPan.lbl.Burntime = Tiempo de quemado:
TCMotorSelPan.lbl.Datapoints = Muestras de la curva:
@ -1140,7 +1129,7 @@ TCMotorSelPan.lbl.Emptymass = Masa carcasa:
TCMotorSelPan.lbl.Launchmass = Masa total:
TCMotorSelPan.lbl.Maxthrust = Empuje m\u00e1ximo:
TCMotorSelPan.lbl.Motormountdia = Di\u00e1metro del porta motor:
TCMotorSelPan.lbl.NumberofsecondsorNone = (segundos)
TCMotorSelPan.lbl.Numberofseconds = (segundos)
TCMotorSelPan.lbl.Search = Buscar:
TCMotorSelPan.lbl.Selectthrustcurve = Seleccione curva de empuje:
TCMotorSelPan.lbl.Selrocketmotor = Seleccione el motor del cohete:

View File

@ -39,7 +39,7 @@ AppearanceCfg.lbl.texture.repeat = R\u00E9p\u00E9ter:
AppearanceCfg.lbl.texture.rotation = Rotation:
AppearanceCfg.lbl.texture.scale = Echelle:
FileHelper.ALL_DESIGNS_FILTER = Tous les fichiers fus\u00E9e (*.ork; *.rkt)
FileHelper.ALL_DESIGNS_FILTER = Tous les fichiers fus\u00E9e (*.ork; *.rkt, *.CDX1)
FileHelper.OPENROCKET_DESIGN_FILTER = Fichiers OpenRocket (*.ork)
FileHelper.ROCKSIM_DESIGN_FILTER = Fichiers RockSim (*.rkt)
FileHelper.OPEN_ROCKET_COMPONENT_FILTER = Pi\u00E8ces OpenRocket pr\u00E9configur\u00E9es (*.orc)
@ -725,9 +725,9 @@ PlotDialog.title.Flightdataplot = Trac\u00E9 du vol
ComponentTreeRenderer.total = total
PreferencesDialog.languages.default = Valeur syst\u00E8me par d\u00E9faut
PreferencesDialog.lbl.language = Langue du programme:
PreferencesDialog.lbl.languageEffect = La langue sera chang\u00E9e apr\u00E8s avoir red\u00E9marr\u00E9 OpenRocket.
generalprefs.languages.default = Valeur syst\u00E8me par d\u00E9faut
generalprefs.lbl.language = Langue du programme:
generalprefs.lbl.languageEffect = La langue sera chang\u00E9e apr\u00E8s avoir red\u00E9marr\u00E9 OpenRocket.
PresetModel.lbl.custompreset = Personnalisé
PresetModel.lbl.partsLib = Biblioth\u00E8que de pi\u00E8ces
@ -802,12 +802,6 @@ RocketActions.NewStageAct.Newstage = Nouvel \u00E9tage
RocketActions.NewStageAct.ttip.Newstage = Ajouter un nouvel \u00E9tage au projet.
RocketActions.PasteAct.Paste = Coller
RocketActions.PasteAct.ttip.Paste = Coller la pi\u00E8ce ou simulation pr\u00E9sente dans le presse papier dans le projet.
! RocketActions
RocketActions.checkbox.Donotaskmeagain = Ne plus me demander
RocketActions.lbl.Youcanchangedefop = Vous pouvez changer le mode op\u00E9ratoire par d\u00E9faut dans les pr\u00E9ferences.
RocketActions.showConfirmDialog.lbl1 = Supprimer les simulations s\u00E9lectionn\u00E9es?
RocketActions.showConfirmDialog.lbl2 = <html><i>Cette op\u00E9ration n'est pas r\u00E9versible.</i>
RocketActions.showConfirmDialog.title = Effacer les simulations
RocketCfg.lbl.Comments = Commentaires:
RocketCfg.lbl.Designer = Concepteur:
@ -855,7 +849,7 @@ RocketCompCfg.tab.Figure = Forme
RocketCompCfg.tab.Override.ttip = For\u00E7age de la Masse et du CG
RocketCompCfg.tab.Override = Forcer la valeur
RocketCompCfg.tab.Comment.ttip = Commentaires concernant la pi\u00E8ce
RocketCompCfg.title.Aftshoulder = Epaulement arri\u00E8re
RocketCompCfg.border.Aftshoulder = Epaulement arri\u00E8re
RocketCompCfg.ttip.Endcapped = Pr\u00E9cise si l'arri\u00E8re du c\u00F4ne est clos.
RocketCompCfg.lbl.Componentname.ttip = Le nom de la pi\u00E8ce.
@ -1064,15 +1058,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 = <html>Enregistrer toutes les donn\u00E9es des simulations.<br>
StorageOptChooser.lbl.longA2 = Cela peut entra\u00EEner de tr\u00E8s gros fichiers!
StorageOptChooser.lbl.longB1 = <html>Store plottable values approximately this far apart.<br>
StorageOptChooser.lbl.longB2 = Des valeurs plus grandes produisent des fichiers plus petits.
StorageOptChooser.lbl.longC1 = <html>Stocker seulement les valeurs montr\u00E9es dans le tableau r\u00E9capitulatif.<br>
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
@ -1123,8 +1113,7 @@ TCMotorSelPan.checkbox.hideSimilar = Cacher les courbes de pouss\u00E9es si
TCMotorSelPan.checkbox.hideUsed = Ne pas afficher les moteurs d\u00E9j\u00E0 utilis\u00E9s
TCMotorSelPan.checkbox.limitdiameter = Afficher uniquement les moteurs dont le diametre est \u00E9gale au porte moteur
TCMotorSelPan.checkbox.limitlength = Limiter la longueur du moteur \u00E0 celle du porte moteur
TCMotorSelPan.delayBox.None = Aucun
TCMotorSelPan.equalsIgnoreCase.None = Aucun
TCMotorSelPan.delayBox.Plugged = Aucun
TCMotorSelPan.lbl.Avgthrust = Pouss\u00E9e moyenne:
TCMotorSelPan.lbl.Burntime = Temps de combustion:
TCMotorSelPan.lbl.Datapoints = Points de donn\u00E9es:
@ -1134,7 +1123,7 @@ TCMotorSelPan.lbl.Emptymass = Masse \u00E0 vide:
TCMotorSelPan.lbl.Launchmass = Masse au lancement:
TCMotorSelPan.lbl.Maxthrust = Pouss\u00E9e Max.:
TCMotorSelPan.lbl.Motormountdia = Diam\u00E8tre du tube porte moteur:
TCMotorSelPan.lbl.NumberofsecondsorNone = (Nombre de secondes ou "Aucun")
TCMotorSelPan.lbl.Numberofseconds = (Nombre de secondes ou "Aucun")
TCMotorSelPan.lbl.Search = Rechercher:
TCMotorSelPan.lbl.Selectthrustcurve = Choisir la courbe de pouss\u00E9e:
TCMotorSelPan.lbl.Selrocketmotor = Choisir le moteur fus\u00E9e:

View File

@ -16,11 +16,6 @@
debug.currentFile = messages_it.properties
! RocketActions
RocketActions.checkbox.Donotaskmeagain = Non chiedermelo piu'
RocketActions.lbl.Youcanchangedefop = Puoi cambiare le operazioni prestabilite in PREFERENZE.
RocketActions.showConfirmDialog.lbl1 = Cancello le simulazioni selezionate?
RocketActions.showConfirmDialog.lbl2 = <html><i>Questa operazione non puo' essere annullata.</i>
RocketActions.showConfirmDialog.title = Cancello Simulazioni
RocketActions.DelCompAct.Delete = Cancella
RocketActions.DelCompAct.ttip.Delete = Cancello il componente selezionato.
RocketActions.DelSimuAct.Delete = Cancella
@ -95,7 +90,7 @@ dlg.but.close = Chiudi
! General file type names
FileHelper.PDF_FILTER = PDF files
FileHelper.ALL_DESIGNS_FILTER = Tutti i disegni di razzi (*.ork; *.rkt)
FileHelper.ALL_DESIGNS_FILTER = Tutti i disegni di razzi (*.ork; *.rkt, *.CDX1)
FileHelper.OPENROCKET_DESIGN_FILTER = Disegni di OpenRocket (*.ork)
FileHelper.ROCKSIM_DESIGN_FILTER = Disegni di RockSim (*.rkt)
FileHelper.OPEN_ROCKET_COMPONENT_FILTER = OpenRocket presets (*.orc)
@ -273,9 +268,9 @@ pref.dlg.PrefBooleanSelector2 = Conferma
pref.dlg.Add = Aggiungi
pref.dlg.DescriptionArea.Adddirectories = Aggiungi cartelle, RASP motor files (*.eng), RockSim engine files (*.rse) or ZIP archives separate da puntoevirgola (;) per caricare curve di spinta esterne. I cambiamenti avranno effetto la prossima volta che avvierai OpenRocket.
PreferencesDialog.lbl.language = Lingua dell'interfaccia:
PreferencesDialog.languages.default = Predefinita di sistema
PreferencesDialog.lbl.languageEffect = La lingua sara' cambiata la prossima volta che avvierai OpenRocket.
generalprefs.lbl.language = Lingua dell'interfaccia:
generalprefs.languages.default = Predefinita di sistema
generalprefs.lbl.languageEffect = La lingua sara' cambiata la prossima volta che avvierai OpenRocket.
! Software update checker
update.dlg.error.title = Non sono in grado di recuperare informazioni sugli aggiornamenti
@ -714,7 +709,7 @@ RocketCompCfg.lbl.Length = Lunghezza:
RocketCompCfg.lbl.Thickness = Spessore:
RocketCompCfg.checkbox.Endcapped = Chiuso
RocketCompCfg.ttip.Endcapped = Se la fine della spalla e' chiusa.
RocketCompCfg.title.Aftshoulder = Spalla posteriore
RocketCompCfg.border.Aftshoulder = Spalla posteriore
RocketCompCfg.border.Foreshoulder = Spalla anteriore
!RocketCompCfg.lbl.Length = Lunghezza:
@ -980,11 +975,7 @@ StorageOptChooser.lbl.Simdatatostore = Dati della simulazione da salvare:
StorageOptChooser.rdbut.Allsimdata = Tutti i dati della simulazione
StorageOptChooser.lbl.longA1 = <html>Salva tutti i dati della simulazione.<br>
StorageOptChooser.lbl.longA2 = Questo puo' produrre files molto grandi!
StorageOptChooser.rdbut.Every = Ogni
StorageOptChooser.lbl.longB1 = <html>Salva Store plottable values approximately this far apart.<br>
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 = <html>Salva solo i valori mostrati nella tabella riassuntiva.<br>
StorageOptChooser.lbl.longC2 = Questo produce i files piu' piccoli.
StorageOptChooser.checkbox.Compfile = Comprimi file
@ -1003,8 +994,7 @@ TCMotorSelPan.lbl.Motormountdia = Diametro dell'alloggio del motore:
TCMotorSelPan.lbl.Search = Cerca:
TCMotorSelPan.lbl.Selectthrustcurve = Seleziona la curva di spinta:
TCMotorSelPan.lbl.Ejectionchargedelay = Ritardo della carica di espulsione:
TCMotorSelPan.equalsIgnoreCase.None = Nessun
TCMotorSelPan.lbl.NumberofsecondsorNone = (Numero di secondi o \"Nessuno\")
TCMotorSelPan.lbl.Numberofseconds = (Numero di secondi o \"Nessuno\")
TCMotorSelPan.lbl.Designation = Classe:
TCMotorSelPan.lbl.Totalimpulse = Impulso totale:
TCMotorSelPan.lbl.Avgthrust = Spinta media:
@ -1016,7 +1006,7 @@ TCMotorSelPan.lbl.Datapoints = Punti:
TCMotorSelPan.lbl.Digest = Riassunto:
TCMotorSelPan.title.Thrustcurve = Curva di spinta:
TCMotorSelPan.title.Thrust = Spinta
TCMotorSelPan.delayBox.None = Nessuno
TCMotorSelPan.delayBox.Plugged = Nessuno
! PlotDialog

View File

@ -12,11 +12,6 @@
debug.currentFile = messages_ja.properties
! RocketActions
RocketActions.checkbox.Donotaskmeagain = \u6B21\u56DE\u304B\u3089\u8868\u793A\u3057\u306A\u3044
RocketActions.lbl.Youcanchangedefop = \u8A2D\u5B9A\u306E\u4E2D\u3067\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u5909\u66F4\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059
RocketActions.showConfirmDialog.lbl1 = \u9078\u629E\u3057\u305F\u30B7\u30DF\u30E5\u30EC\u30FC\u30B7\u30E7\u30F3\u3092\u6D88\u53BB\u3057\u307E\u3059\u304B\uFF1F
RocketActions.showConfirmDialog.lbl2 = <html><i>\u6D88\u53BB\u3057\u305F\u3089\u5FA9\u5143\u3067\u304D\u307E\u305B\u3093</i>
RocketActions.showConfirmDialog.title = \u30B7\u30DF\u30E5\u30EC\u30FC\u30B7\u30E7\u30F3\u306E\u524A\u9664
RocketActions.DelCompAct.Delete = \u524A\u9664
RocketActions.DelCompAct.ttip.Delete = \u9078\u629E\u3057\u305F\u90E8\u54C1\u306E\u524A\u9664
RocketActions.DelSimuAct.Delete = \u524A\u9664
@ -89,7 +84,7 @@ dlg.but.close = \u9589\u3058\u308B
! General file type names
FileHelper.PDF_FILTER = PDF files (*.pdf)
FileHelper.ALL_DESIGNS_FILTER = All rocket designs (*.ork; *.rkt)
FileHelper.ALL_DESIGNS_FILTER = All rocket designs (*.ork; *.rkt, *.CDX1)
FileHelper.OPENROCKET_DESIGN_FILTER = OpenRocket designs (*.ork)
FileHelper.ROCKSIM_DESIGN_FILTER = RockSim designs (*.rkt)
FileHelper.OPEN_ROCKET_COMPONENT_FILTER = OpenRocket presets (*.orc)
@ -270,9 +265,9 @@ pref.dlg.PrefBooleanSelector2 = \u78BA\u8A8D
pref.dlg.Add = \u8FFD\u52A0
pref.dlg.DescriptionArea.Adddirectories = \u30D5\u30A9\u30EB\u30C0, RASP motor files (*.eng), RockSim engine files (*.rse) \u3082\u3057\u304F\u306F ZIP archives \u3092\u30BB\u30DF\u30B3\u30ED\u30F3(;)\u306B\u3088\u3063\u3066\u5206\u3051\u3089\u308C\u305F\u5F62\u3067\u8FFD\u52A0\u306E\u63A8\u529B\u5C65\u6B74\u3068\u3057\u3066\u8FFD\u52A0\u3067\u304D\u307E\u3059\u3002\u3053\u306E\u5909\u66F4\u306FOpenRocket\u306E\u518D\u8D77\u52D5\u6642\u306B\u6709\u52B9\u306B\u306A\u308A\u307E\u3059
PreferencesDialog.lbl.language = \u8A00\u8A9E\uFF1A
PreferencesDialog.languages.default = \u30B7\u30B9\u30C6\u30E0\u8A00\u8A9E
PreferencesDialog.lbl.languageEffect = \u8A00\u8A9E\u306F\u518D\u8D77\u52D5\u6642\u306B\u5909\u66F4\u3055\u308C\u307E\u3059
generalprefs.lbl.language = \u8A00\u8A9E\uFF1A
generalprefs.languages.default = \u30B7\u30B9\u30C6\u30E0\u8A00\u8A9E
generalprefs.lbl.languageEffect = \u8A00\u8A9E\u306F\u518D\u8D77\u52D5\u6642\u306B\u5909\u66F4\u3055\u308C\u307E\u3059
! Software update checker
update.dlg.error.title = \u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u60C5\u5831\u306E\u8AAD\u307F\u51FA\u3057\u304C\u3067\u304D\u307E\u305B\u3093
@ -744,7 +739,7 @@ RocketCompCfg.lbl.Length = \u9577\u3055\uFF1A
RocketCompCfg.lbl.Thickness = \u539A\u3055\uFF1A
RocketCompCfg.checkbox.Endcapped = \u7AEF\u306B\u30D5\u30BF\u3092\u3059\u308B
RocketCompCfg.ttip.Endcapped = \u30D5\u30BF\u304C\u3042\u308B\u304B\u3069\u3046\u304B
RocketCompCfg.title.Aftshoulder = \u5F8C\u65B9\u30B7\u30E7\u30EB\u30C0\u30FC
RocketCompCfg.border.Aftshoulder = \u5F8C\u65B9\u30B7\u30E7\u30EB\u30C0\u30FC
RocketCompCfg.border.Foreshoulder = \u524D\u65B9\u30B7\u30E7\u30EB\u30C0\u30FC
!RocketCompCfg.lbl.Length
@ -1010,11 +1005,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 = <html>\u5168\u3066\u306E\u30B7\u30DF\u30E5\u30EC\u30FC\u30B7\u30E7\u30F3\u30C7\u30FC\u30BF\u3092\u4FDD\u5B58<br>
StorageOptChooser.lbl.longA2 = \u3068\u3066\u3082\u5927\u304D\u306A\u30D5\u30A1\u30A4\u30EB\u306B\u306A\u308A\u307E\u3059
StorageOptChooser.rdbut.Every =
StorageOptChooser.lbl.longB1 = <html>\u8FD1\u4F3C\u3057\u3066\u4FDD\u5B58<br>
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 = <html>\u8868\u306B\u66F8\u304B\u308C\u3066\u3044\u308B\u5024\u306E\u307F\u4FDD\u5B58<br>
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
@ -1033,8 +1024,7 @@ TCMotorSelPan.lbl.Motormountdia = \u30E2\u30FC\u30BF\u30FC\u30DE\u30A6\u30F3\u3
TCMotorSelPan.lbl.Search = \u691C\u7D22\uFF1A
TCMotorSelPan.lbl.Selectthrustcurve = \u63A8\u529B\u5C65\u6B74\uFF1A
TCMotorSelPan.lbl.Ejectionchargedelay = Ejection charge delay:
TCMotorSelPan.equalsIgnoreCase.None = None
TCMotorSelPan.lbl.NumberofsecondsorNone = (Number of seconds or \"None\")
TCMotorSelPan.lbl.Numberofseconds = (Number of seconds or \"None\")
TCMotorSelPan.lbl.Designation = \u8A18\u53F7
TCMotorSelPan.lbl.Totalimpulse = \u30C8\u30FC\u30BF\u30EB\u30A4\u30F3\u30D1\u30EB\u30B9\uFF1A
TCMotorSelPan.lbl.Avgthrust = \u5E73\u5747\u63A8\u529B\uFF1A
@ -1046,7 +1036,7 @@ TCMotorSelPan.lbl.Datapoints = \u30C7\u30FC\u30BF\u70B9\uFF1A
TCMotorSelPan.lbl.Digest = \u30C0\u30A4\u30B8\u30A7\u30B9\u30C8\uFF1A
TCMotorSelPan.title.Thrustcurve = \u63A8\u529B\u5C65\u6B74\uFF1A
TCMotorSelPan.title.Thrust = \u63A8\u529B
TCMotorSelPan.delayBox.None = Plugged (None)
TCMotorSelPan.delayBox.Plugged = Plugged (None)
TCMotorSelPan.noDescription = No description available.

View File

@ -18,11 +18,6 @@
debug.currentFile = messages_nl.properties
! RocketActions
RocketActions.checkbox.Donotaskmeagain = Niet opnieuw vragen
RocketActions.lbl.Youcanchangedefop = U kan de standaardbewerking veranderen in de voorkeuren.
RocketActions.showConfirmDialog.lbl1 = Geselecteerde simulatie verwijderen?
RocketActions.showConfirmDialog.lbl2 = <html><i>Deze bewerking kan niet ongedaan worden.</i>
RocketActions.showConfirmDialog.title = Verwijder simulaties
RocketActions.DelCompAct.Delete = Verwijder
RocketActions.DelCompAct.ttip.Delete = Verwijder het geselecteerde onderdeel.
RocketActions.DelSimuAct.Delete = Verwijder
@ -110,7 +105,7 @@ dlg.but.close = Sluit
! General file type names
FileHelper.PDF_FILTER = PDF-bestanden (*.pdf)
FileHelper.ALL_DESIGNS_FILTER = Alle raketontwerpen (*.ork; *.rkt)
FileHelper.ALL_DESIGNS_FILTER = Alle raketontwerpen (*.ork; *.rkt, *.CDX1)
FileHelper.OPENROCKET_DESIGN_FILTER = OpenRocket-ontwerpen (*.ork)
FileHelper.ROCKSIM_DESIGN_FILTER = RockSim-ontwerpen (*.rkt)
FileHelper.OPEN_ROCKET_COMPONENT_FILTER = OpenRocket-presets (*.orc)
@ -276,9 +271,10 @@ pref.dlg.tab.Design = Ontwerp
pref.dlg.tab.Simulation = Simulatie
pref.dlg.tab.Launch = Lanceer
pref.dlg.tab.Miscellaneousoptions = Diverse opties
pref.dlg.lbl.RASAeroWarning = Toon waarschuwingen bij opslaan in RASAero-formaat
pref.dlg.lbl.RockSimWarning = Toon waarschuwingen bij opslaan in RockSim-formaat
pref.dlg.but.clearCachedPreferences = Alle voorkeuren opnieuw instellen
pref.dlg.but.clearCachedPreferences.ttip = Alle voorkeuren opnieuw instellen, inclusief voorkeuren in de cache (UI-instellingen, recente bestanden, enz.)
pref.dlg.but.resetAllPreferences = Alle voorkeuren opnieuw instellen
pref.dlg.but.resetAllPreferences.ttip = Alle voorkeuren opnieuw instellen, inclusief voorkeuren in de cache (UI-instellingen, recente bestanden, enz.)
pref.dlg.clearCachedPreferences.title = Voorkeuren opnieuw instellen?
pref.dlg.clearCachedPreferences.message = Bent u zeker dat u al uw voorkeuren opnieuw wilt instellen?
@ -349,10 +345,6 @@ pref.dlg.PrefBooleanSelector2 = Bevestig
pref.dlg.Add = Voeg toe
pref.dlg.DescriptionArea.Adddirectories = Voeg folders, RASP motorbestanden (*.eng), RockSim motorbestanden (*.rse) of ZIP-archieven gescheiden door een puntkomma (;) om externe stuwkrachtcurves te laden. Wijzigingen zullen van kracht gaan de volgende keer dat u OpenRocket start.
PreferencesDialog.lbl.language = Interface taal:
PreferencesDialog.languages.default = Systeemstandaard
PreferencesDialog.lbl.languageEffect = De taal zal veranderen de volgende keer dat u OpenRocket start.
generalprefs.lbl.language = Interface taal
generalprefs.languages.default = Systeemstandaard
generalprefs.lbl.languageEffect = De taal zal veranderen de volgende keer dat u OpenRocket start.
@ -906,11 +898,9 @@ RocketCompCfg.lbl.Length = Lengte:
RocketCompCfg.lbl.Thickness = Dikte:
RocketCompCfg.checkbox.Endcapped = Einde afgetopt
RocketCompCfg.ttip.Endcapped = Of het einde van de schouder is afgedekt.
RocketCompCfg.title.Aftshoulder = Achterschouder
RocketCompCfg.border.Aftshoulder = Achterschouder
RocketCompCfg.border.Foreshoulder = Voorschouder
!RocketCompCfg.lbl.Length = Lengte:
RocketCompCfg.lbl.InstanceCount = Aantal instanties
RocketCompCfg.lbl.InstanceSeparation = Instantie afstand
RocketCompCfg.tab.Outside = Buitenkant
RocketCompCfg.tab.Inside = Binnenkant
RocketCompCfg.tab.RightSide = Rechterkant
@ -923,6 +913,10 @@ RocketCompCfg.CancelOperation.title = Annuleren
RocketCompCfg.CancelOperation.checkbox.dontAskAgain = Vraag me niet opnieuw
RocketCompCfg.btn.ComponentInfo.ttip = Toon/verberg informatieve text over deze component.
! InstancesPanel
InstancesPanel.lbl.InstanceCount = Aantal instanties
InstancesPanel.lbl.InstanceSeparation = Instantie afstand
! ComponentInfo
ComponentInfo.EngineBlock = Een <b>motorblok</b> voorkomt dat de motor voorwaarts beweegt in de buis van de motorsteun.<br><br>Om een motor toe te voegen, maak een <b>rompbuis</b> of <b>binnenbuis</b> en markeer het als een motorbevestiging in het <em>Motortabblad</em>.
@ -1217,6 +1211,10 @@ FinsetConfig.ttip.Finfillets1 = <HTML>Voegt de voorspelde massa van de vin fille
FinsetConfig.ttip.Finfillets2 = Veronderstelt dat de fillet concaaf is en raakt aan de buis en de vin.<br>
FinsetConfig.ttip.Finfillets3 = Nul radius geeft geen fillet.
! Save RASAero Warning Dialog
SaveRASAeroWarningDialog.txt1 = Exporteren naar RASAero bestandsformaat ondersteunt niet alle functies van OpenRocket.
SaveRASAeroWarningDialog.donotshow = Laat dit dialoogvenster niet meer zien
! Save RKT Warning Dialog
SaveRktWarningDialog.txt1 = Exporteren naar RockSim bestandsformaat ondersteunt niet alle functies van OpenRocket.
SaveRktWarningDialog.donotshow = Laat dit dialoogvenster niet meer zien
@ -1229,11 +1227,7 @@ StorageOptChooser.lbl.Simdatatostore = Gesimuleerde gegevens om op te slaan:
StorageOptChooser.rdbut.Allsimdata = Alle gesimuleerde gegevens
StorageOptChooser.lbl.longA1 = <html>Sla alle gesimuleerde gegevens op.<br>
StorageOptChooser.lbl.longA2 = Dit kan resulteren in zeer grote bestanden!
StorageOptChooser.rdbut.Every = Elke
StorageOptChooser.lbl.longB1 = <html>Sla plottable waarden ongeveer zo ver uit elkaar op.<br>
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 = <html>Sla alleen de waarden op die in de overzichtstabel staan.<br>
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.
@ -1262,8 +1256,7 @@ TCMotorSelPan.MotorMountDimensions = Motorbevestiging afmetingen:
TCMotorSelPan.lbl.Search = Zoek:
TCMotorSelPan.lbl.Selectthrustcurve = Selecteer stuwkrachtcurve:
TCMotorSelPan.lbl.Ejectionchargedelay = Vertraging schietlading:
TCMotorSelPan.equalsIgnoreCase.None = Geen
TCMotorSelPan.lbl.NumberofsecondsorNone = (Aantal seconden of \"Geen\")
TCMotorSelPan.lbl.Numberofseconds = (Aantal seconden of \"Geen\")
TCMotorSelPan.lbl.Designation = Benaming
TCMotorSelPan.lbl.Totalimpulse = Totale impuls:
TCMotorSelPan.lbl.Avgthrust = Gemiddelde stuwkracht:
@ -1278,7 +1271,7 @@ TCMotorSelPan.lbl.Datapoints = Datapunten:
TCMotorSelPan.lbl.Digest = Verteer:
TCMotorSelPan.title.Thrustcurve = Stuwkrachtcurve:
TCMotorSelPan.title.Thrust = Stuwkracht
TCMotorSelPan.delayBox.None = Geen
TCMotorSelPan.delayBox.Plugged = Geen
TCMotorSelPan.noDescription = Geen beschrijving beschikbaar.
TCMotorSelPan.btn.checkAll = Selecteer Alles
TCMotorSelPan.btn.checkNone = Alles wissen
@ -1463,7 +1456,7 @@ Shape.Haackseries.desc2 = De Haack-serie <i>neuskegels</i> zijn ontworpen om de
! RocketComponent
RocketComponent.Position.Method.Axial.Label = Straal positioneermethode
RocketComponent.Position.Method.Axial.ABSOLUTE = Tip van neuskegel
RocketComponent.Position.Method.Axial.ABSOLUTE = Tip van raket
RocketComponent.Position.Method.Axial.AFTER = Na de sibling component
RocketComponent.Position.Method.Axial.BOTTOM = Onderkant van de oudercomponent
RocketComponent.Position.Method.Axial.MIDDLE = Midden van de oudercomponent

View File

@ -16,11 +16,6 @@
debug.currentFile = messages_pl.properties
! RocketActions
RocketActions.checkbox.Donotaskmeagain = Nie pytaj ponownie
RocketActions.lbl.Youcanchangedefop = Domy\u015Bln\u0105 operacj\u0119 mo\u017Cna zmieni\u0107 w ustawieniach.
RocketActions.showConfirmDialog.lbl1 = Usun\u0105\u0107 zaznaczone symulacje?
RocketActions.showConfirmDialog.lbl2 = <html><i>Tej operacji nie mo\u017Cna cofn\u0105\u0107.</i>
RocketActions.showConfirmDialog.title = Usu\u0144 symulacje
RocketActions.DelCompAct.Delete = Usu\u0144
RocketActions.DelCompAct.ttip.Delete = Usu\u0144 wybran\u0105 cz\u0119\u015B\u0107
RocketActions.DelSimuAct.Delete = Usu\u0144
@ -94,7 +89,7 @@
! General file type names
FileHelper.PDF_FILTER = Pliki PDF (*.pdf)
FileHelper.ALL_DESIGNS_FILTER = Wszystkie projekty rakiet (*.ork; *.rkt)
FileHelper.ALL_DESIGNS_FILTER = Wszystkie projekty rakiet (*.ork; *.rkt, *.CDX1)
FileHelper.OPENROCKET_DESIGN_FILTER = Projekty OpenRocket (*.ork; *.rkt)
FileHelper.ROCKSIM_DESIGN_FILTER = Projekty RockSim (*.rkt)
FileHelper.OPEN_ROCKET_COMPONENT_FILTER = Ustawienia OpenRocket (*.orc)
@ -270,10 +265,10 @@
pref.dlg.PrefBooleanSelector2 = Potwierd\u017A
pref.dlg.Add = Dodaj
pref.dlg.DescriptionArea.Adddirectories = Dodaj katalogi, pliki silnikowe RASP (*.eng), Pliki silnikowe RockSim (*.rse) albo archiwa ZIP rozdzielone \u015Brednikiem (;) by za\u0142adowa\u0107 zewn\u0119trzne krzywe si\u0142y ci\u0105gu. Zmiany zostan\u0105 wprowadzone przy kolejnym uruchomieniu OpenRocket.
PreferencesDialog.lbl.language = J\u0119zyk programu:
PreferencesDialog.languages.default = Domy\u015Blny j\u0119zyk systemu
PreferencesDialog.lbl.languageEffect = Nowy j\u0119zyk zostanie ustawiony przy kolejnym uruchomieniu OpenRocket.
generalprefs.lbl.language = J\u0119zyk programu:
generalprefs.languages.default = Domy\u015Blny j\u0119zyk systemu
generalprefs.lbl.languageEffect = Nowy j\u0119zyk zostanie ustawiony przy kolejnym uruchomieniu OpenRocket.
! Software update checker
update.dlg.error.title = Nie mo\u017Cna uzyska\u0107 informacji o aktualizacji
@ -658,7 +653,7 @@ update.dlg.latestVersion = Korzystasz z najnowszej wersji OpenRocket: %s.
RocketCompCfg.lbl.Thickness = Grubo\u015B\u0107:
RocketCompCfg.checkbox.Endcapped = Zasklepiony koniec
RocketCompCfg.ttip.Endcapped = Czy koniec wpustu jest zasklepiony.
RocketCompCfg.title.Aftshoulder = Wpust tylny
RocketCompCfg.border.Aftshoulder = Wpust tylny
RocketCompCfg.border.Foreshoulder = Wpust przedni
!RocketCompCfg.lbl.Length
@ -924,11 +919,7 @@ ComponentInfo.EngineBlock = <b>Blokada silnika</b> unieruchamia silnik wewn\u01
StorageOptChooser.rdbut.Allsimdata = Wszystkie dane symulacji:
StorageOptChooser.lbl.longA1 = <html>Zapisz wszystkie dane z symulacji.<br>
StorageOptChooser.lbl.longA2 = To mo\u017Ce bardzo zwi\u0119kszy\u0107 rozmiar plików!
StorageOptChooser.rdbut.Every = Co
StorageOptChooser.lbl.longB1 = <html>Zapisz warto\u015Bci daj\u0105ce si\u0119 przedstawi\u0107 na wykresie w powy\u017Cszych odst\u0119pach.<br>
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 = <html>Zapisz tylko warto\u015Bci ukazane w tabeli podsumowuj\u0105cej symulacj\u0119.<br>
StorageOptChooser.lbl.longC2 = Przy tym ustawieniu pliki s\u0105 najmniejsze.
StorageOptChooser.checkbox.Compfile = Kompresuj plik
@ -947,8 +938,7 @@ ComponentInfo.EngineBlock = <b>Blokada silnika</b> unieruchamia silnik wewn\u01
TCMotorSelPan.lbl.Search = Szukaj:
TCMotorSelPan.lbl.Selectthrustcurve = Wybierz krzyw\u0105 si\u0142y ci\u0105gu:
TCMotorSelPan.lbl.Ejectionchargedelay = Opó\u017Anienie odpalenia \u0142adunku odrzucaj\u0105cego:
TCMotorSelPan.equalsIgnoreCase.None = \u017Badne
TCMotorSelPan.lbl.NumberofsecondsorNone = (liczba sekund lub \"Brak\")
TCMotorSelPan.lbl.Numberofseconds = (liczba sekund lub \"Brak\")
TCMotorSelPan.lbl.Designation = Oznaczenie:
TCMotorSelPan.lbl.Totalimpulse = Ca\u0142kowity impuls:
TCMotorSelPan.lbl.Avgthrust = \u015Arednia si\u0142a ci\u0105gu:
@ -960,7 +950,7 @@ ComponentInfo.EngineBlock = <b>Blokada silnika</b> unieruchamia silnik wewn\u01
TCMotorSelPan.lbl.Digest = Podsumowanie:
TCMotorSelPan.title.Thrustcurve = Krzywa si\u0142y ci\u0105gu:
TCMotorSelPan.title.Thrust = Ci\u0105g
TCMotorSelPan.delayBox.None = \u017Badne
TCMotorSelPan.delayBox.Plugged = \u017Badne
! PlotDialog

View File

@ -33,7 +33,7 @@ AppearanceCfg.lbl.texture.repeat = Repetir:
AppearanceCfg.lbl.texture.rotation = Rota\u00e7\u00e3o:
AppearanceCfg.lbl.texture.scale = Escala:
FileHelper.ALL_DESIGNS_FILTER = Todos os projetos dos foguetes (*.ork; *.rtk)
FileHelper.ALL_DESIGNS_FILTER = Todos os projetos dos foguetes (*.ork; *.rtk, *.CDX1)
FileHelper.OPENROCKET_DESIGN_FILTER = Projetos OpenRocket (*.ork)
FileHelper.ROCKSIM_DESIGN_FILTER = Desenhos RockSim (*.rtk)
FileHelper.OPEN_ROCKET_COMPONENT_FILTER = Pr\u00e9-defini\u00e7\u00f5es OpenRocket (*.orc)
@ -709,9 +709,9 @@ PlotDialog.lbl.Chart = Clique e arraste para baixo+direita para am
# PlotDialog
PlotDialog.title.Flightdataplot = Plotagem dos dados de voo
PreferencesDialog.languages.default = Padr\u00e3o do sistema
PreferencesDialog.lbl.language = Idioma da interface:
PreferencesDialog.lbl.languageEffect = A linguagem vai mudar na pr\u00f3xima vez que voc\u00ea iniciar o OpenRocket.
generalprefs.languages.default = Padr\u00e3o do sistema
generalprefs.lbl.language = Idioma da interface:
generalprefs.lbl.languageEffect = A linguagem vai mudar na pr\u00f3xima vez que voc\u00ea iniciar o OpenRocket.
PresetModel.lbl.custompreset = Personalizado
PresetModel.lbl.partsLib = Biblioteca de pe\u00e7as
@ -786,12 +786,6 @@ RocketActions.NewStageAct.Newstage = Novo est\u00e1gio
RocketActions.NewStageAct.ttip.Newstage = Adicionar um novo est\u00e1gio ao projeto do foguete.
RocketActions.PasteAct.Paste = Colar
RocketActions.PasteAct.ttip.Paste = Cole o componente ou simula\u00e7\u00e3o na \u00e1rea da transfer\u00eancia para o projeto.
# RocketActions
RocketActions.checkbox.Donotaskmeagain = N\u00e3o me pergunte novamente
RocketActions.lbl.Youcanchangedefop = Voc\u00ea pode alterar a opera\u00e7\u00e3o padr\u00e3o em Prefer\u00eancias.
RocketActions.showConfirmDialog.lbl1 = Excluir as simula\u00e7\u00f5es selecionadas?
RocketActions.showConfirmDialog.lbl2 = <html><i>Esta opera\u00e7\u00e3o n\u00e3o poder\u00e1 ser desfeita.</i>
RocketActions.showConfirmDialog.title = Excluir simula\u00e7\u00f5es
RocketCfg.lbl.Comments = Coment\u00e1rios:
RocketCfg.lbl.Designer = Projetista:
@ -838,7 +832,7 @@ RocketCompCfg.tab.Figure = Figura
RocketCompCfg.tab.Override.ttip = Op\u00e7\u00f5es de modifica\u00e7\u00e3o de massa e CG
RocketCompCfg.tab.Override = Modificar
RocketCompCfg.tab.Comment.ttip = Especifique um coment\u00e1rio para o componente
RocketCompCfg.title.Aftshoulder = Ressalto traseiro
RocketCompCfg.border.Aftshoulder = Ressalto traseiro
RocketCompCfg.ttip.Endcapped = Quando a extremidade do ressalto \u00e9 limitada.
RocketCompCfg.lbl.Componentname.ttip = Nome do componente.
@ -1040,15 +1034,11 @@ StorageOptChooser.lbl.Simdatatostore = Dados simulados para armazenar:
StorageOptChooser.lbl.UsingComp = Usando compress\u00e3o reduz o tamanho do arquivo significativamente.
StorageOptChooser.lbl.longA1 = <html>Armazenar todos os dados simulados.<br>
StorageOptChooser.lbl.longA2 = Isto pode resultar em a muito grandes!
StorageOptChooser.lbl.longB1 = <html>Armazene os valores aproximados para plotagem.<br>
StorageOptChooser.lbl.longB2 = Valores maiores resultar em arquivos menores.
StorageOptChooser.lbl.longC1 = <html>Armazenar apenas os valores mostrados na tabela de resumo.<br>
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
@ -1087,8 +1077,7 @@ TCMotorSelPan.SHOW_DESCRIPTIONS.desc1 = Mostrar todos os motores
TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Mostrar motores com um di\u00e2metro menor do que a montagem do motor
TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Mostrar motores com um di\u00e2metro igual ao da montagem do motor
TCMotorSelPan.checkbox.hideSimilar = Esconder as curvas de impulso muito semelhantes
TCMotorSelPan.delayBox.None = Nenhum
TCMotorSelPan.equalsIgnoreCase.None = Nenhum
TCMotorSelPan.delayBox.Plugged = Nenhum
TCMotorSelPan.lbl.Avgthrust = Empuxo m\u00e9dio:
TCMotorSelPan.lbl.Burntime = Tempo de queima:
TCMotorSelPan.lbl.Datapoints = Pontos de dados:
@ -1098,7 +1087,7 @@ TCMotorSelPan.lbl.Emptymass = Massa em vazio:
TCMotorSelPan.lbl.Launchmass = Massa do lan\u00e7amento:
TCMotorSelPan.lbl.Maxthrust = Empuxo m\u00e1ximo:
TCMotorSelPan.lbl.Motormountdia = Di\u00e2metro da montagem do motor:
TCMotorSelPan.lbl.NumberofsecondsorNone = (N\u00famero de segundos ou "Nenhum")
TCMotorSelPan.lbl.Numberofseconds = (N\u00famero de segundos ou "Nenhum")
TCMotorSelPan.lbl.Search = Pesquisar:
TCMotorSelPan.lbl.Selectthrustcurve = Selecione curva de empuxo:
TCMotorSelPan.lbl.Selrocketmotor = Selecione motor do foguete:

View File

@ -16,11 +16,6 @@
debug.currentFile = messages_ru.properties
! RocketActions
RocketActions.checkbox.Donotaskmeagain = \u0411\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u0441\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044C
RocketActions.lbl.Youcanchangedefop = \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0432 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430\u0445.
RocketActions.showConfirmDialog.lbl1 = \u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u0440\u0430\u0441\u0447\u0435\u0442\u044B?
RocketActions.showConfirmDialog.lbl2 = <html><i>\u042D\u0442\u0443 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044E \u043D\u0435\u043B\u044C\u0437\u044F \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C.</i>
RocketActions.showConfirmDialog.title = \u0423\u0434\u0430\u043B\u0435\u043D\u0438\u0435 \u0440\u0430\u0441\u0447\u0435\u0442\u043E\u0432
RocketActions.DelCompAct.Delete = \u0423\u0434\u0430\u043B\u0438\u0442\u044C
RocketActions.DelCompAct.ttip.Delete = \u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0439 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442.
RocketActions.DelSimuAct.Delete = \u0423\u0434\u0430\u043B\u0438\u0442\u044C
@ -106,7 +101,7 @@ dlg.but.close = \u0417\u0430\u043A\u0440\u044B\u0442\u044C
! General file type names
FileHelper.CSV_FILTER = \u0422\u0435\u043A\u0441\u0442, \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0439 \u0437\u0430\u043F\u044F\u0442\u044B\u043C\u0438 (*.csv)
FileHelper.PDF_FILTER = \u0424\u0430\u0439\u043B\u044B PDF (*.pdf)
FileHelper.ALL_DESIGNS_FILTER = \u0412\u0441\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u044B \u0440\u0430\u043A\u0435\u0442 (*.ork; *.rkt)
FileHelper.ALL_DESIGNS_FILTER = \u0412\u0441\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u044B \u0440\u0430\u043A\u0435\u0442 (*.ork; *.rkt, *.CDX1)
FileHelper.OPENROCKET_DESIGN_FILTER = \u0424\u0430\u0439\u043B\u044B OpenRocket (*.ork)
FileHelper.ROCKSIM_DESIGN_FILTER = \u0424\u0430\u0439\u043B\u044B RockSim (*.rkt)
FileHelper.OPEN_ROCKET_COMPONENT_FILTER = \u0417\u0430\u0433\u043E\u0442\u043E\u0432\u043A\u0438 OpenRocket (*.orc)
@ -276,6 +271,7 @@ pref.dlg.tab.Design = \u0414\u0438\u0437\u0430\u0439\u043D
pref.dlg.tab.Simulation = \u0420\u0430\u0441\u0447\u0435\u0442
pref.dlg.tab.Launch = \u0417\u0430\u043F\u0443\u0441\u043A
pref.dlg.tab.Miscellaneousoptions = \u041F\u0440\u043E\u0447\u0438\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438
pref.dlg.lbl.RASAeroWarning = \u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435 \u043F\u0440\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0438 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 RASAero
pref.dlg.lbl.RockSimWarning = \u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435 \u043F\u0440\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0438 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 RockSim
pref.dlg.tab.Graphics = \u0413\u0440\u0430\u0444\u0438\u043A\u0430
@ -345,10 +341,6 @@ pref.dlg.PrefBooleanSelector2 = \u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434
pref.dlg.Add = \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C
pref.dlg.DescriptionArea.Adddirectories = \u0414\u043B\u044F \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438 \u0434\u0430\u043D\u043D\u044B\u0445 \u0441\u0432\u043E\u0438\u0445 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043B\u0435\u0439 \u0434\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u043A\u0430\u0442\u0430\u043B\u043E\u0433\u0438, \u0444\u0430\u0439\u043B\u044B \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043B\u0435\u0439 RASP (*.eng), \u0444\u0430\u0439\u043B\u044B \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043B\u0435\u0439 RockSim (*.rse) \u0438\u043B\u0438 ZIP-\u0430\u0440\u0445\u0438\u0432\u044B, \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0435 \u0442\u043E\u0447\u043A\u043E\u0439 \u0441 \u0437\u0430\u043F\u044F\u0442\u043E\u0439 (;). \u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0432\u0441\u0442\u0443\u043F\u044F\u0442 \u0432 \u0441\u0438\u043B\u0443 \u043F\u0440\u0438 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C \u0437\u0430\u043F\u0443\u0441\u043A\u0435 OpenRocket.
PreferencesDialog.lbl.language = \u042F\u0437\u044B\u043A \u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430:
PreferencesDialog.languages.default = \u0421\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u0439
PreferencesDialog.lbl.languageEffect = \u042F\u0437\u044B\u043A \u0441\u043C\u0435\u043D\u0438\u0442\u0441\u044F \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u043A\u0435 OpenRocket.
generalprefs.lbl.language = \u042F\u0437\u044B\u043A \u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430
generalprefs.languages.default = \u0421\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u0439
generalprefs.lbl.languageEffect = \u042F\u0437\u044B\u043A \u0441\u043C\u0435\u043D\u0438\u0442\u0441\u044F \u043F\u0440\u0438 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u043A\u0435 OpenRocket.
@ -937,16 +929,18 @@ RocketCompCfg.lbl.Length = \u0414\u043B\u0438\u043D\u0430:
RocketCompCfg.lbl.Thickness = \u0422\u043E\u043B\u0449\u0438\u043D\u0430:
RocketCompCfg.checkbox.Endcapped = \u0422\u043E\u0440\u0435\u0446 \u0437\u0430\u0433\u043B\u0443\u0448\u0435\u043D
RocketCompCfg.checkbox.Endcapped.ttip = \u0417\u0430\u0433\u043B\u0443\u0448\u0430\u0435\u0442 \u0442\u043E\u0440\u0435\u0446 \u043A\u0440\u044B\u0448\u043A\u043E\u0439.
RocketCompCfg.title.Aftshoulder = \u0417\u0430\u0434\u043D\u0438\u0439 \u0432\u044B\u0441\u0442\u0443\u043F
RocketCompCfg.border.Aftshoulder = \u0417\u0430\u0434\u043D\u0438\u0439 \u0432\u044B\u0441\u0442\u0443\u043F
RocketCompCfg.border.Foreshoulder = \u041F\u0435\u0440\u0435\u0434\u043D\u0438\u0439 \u0432\u044B\u0441\u0442\u0443\u043F
!RocketCompCfg.lbl.Length = \u0414\u043B\u0438\u043D\u0430:
RocketCompCfg.lbl.InstanceCount = \u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u0432
RocketCompCfg.lbl.InstanceSeparation = \u0420\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u0432
RocketCompCfg.tab.Outside = \u0421\u043D\u0430\u0440\u0443\u0436\u0438
RocketCompCfg.tab.Inside = \u0412\u043D\u0443\u0442\u0440\u0438
RocketCompCfg.tab.RightSide = \u0421\u043F\u0440\u0430\u0432\u0430
RocketCompCfg.tab.LeftSide = \u0421\u043B\u0435\u0432\u0430
! InstancesPanel
InstancesPanel.lbl.InstanceCount = \u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u0432
InstancesPanel.lbl.InstanceSeparation = \u0420\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\u043E\u0432
! ComponentInfo
ComponentInfo.EngineBlock = <b>\u0423\u043F\u043E\u0440 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043B\u044F</b> \u043F\u0440\u0435\u043F\u044F\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0438\u0436\u0435\u043D\u0438\u044E \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043B\u044F \u0432\u043F\u0435\u0440\u0435\u0434 \u0432 \u0442\u0440\u0443\u0431\u0435.<br><br>\u0414\u043B\u044F \u0442\u043E\u0433\u043E \u0447\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043B\u044C, \u0441\u043E\u0437\u0434\u0430\u0439\u0442\u0435 <b>\u041A\u043E\u0440\u043F\u0443\u0441\u043D\u0443\u044E \u0442\u0440\u0443\u0431\u0443</b> \u0438\u043B\u0438 <b>\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044E\u044E \u0442\u0440\u0443\u0431\u0443</b> \u0438 \u043E\u0442\u043C\u0435\u0442\u044C\u0442\u0435 \u044D\u0442\u043E\u0442 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u043A\u0430\u043A \u043A\u0440\u0435\u043F\u0435\u0436 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043B\u044F \u043D\u0430 \u0432\u043A\u043B\u0430\u0434\u043A\u0435 <em>\u0414\u0432\u0438\u0433\u0430\u0442\u0435\u043B\u044C</em> .
@ -1265,6 +1259,10 @@ FinsetConfig.ttip.Finfillets1 = <HTML>\u0414\u043E\u0431\u0430\u0432\u043B\u044F
FinsetConfig.ttip.Finfillets2 = \u041F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u0442\u0441\u044F, \u0447\u0442\u043E \u0433\u0430\u043B\u0442\u0435\u043B\u044C \u043A\u0430\u0441\u0430\u0435\u0442\u0441\u044F \u0442\u0440\u0443\u0431\u044B \u043A\u043E\u0440\u043F\u0443\u0441\u0430 \u0438 \u0440\u0435\u0431\u0440\u0430.<br>
FinsetConfig.ttip.Finfillets3 = \u041D\u0443\u043B\u0435\u0432\u043E\u0439 \u0440\u0430\u0434\u0438\u0443\u0441 \u043E\u0437\u043D\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043E \u0433\u0430\u043B\u0442\u0435\u043B\u0435\u0439 \u043D\u0435\u0442.
! Save RASAero Warning Dialog
SaveRASAeroWarningDialog.txt1 = \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442 \u0444\u0430\u0439\u043B\u0430 RASAero \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0444\u0443\u043D\u043A\u0446\u0438\u0438 OpenRocket.
SaveRASAeroWarningDialog.donotshow = \u0411\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u044D\u0442\u043E\u0442 \u0434\u0438\u0430\u043B\u043E\u0433
! Save RKT Warning Dialog
SaveRktWarningDialog.txt1 = \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442 \u0444\u0430\u0439\u043B\u0430 RockSim \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0444\u0443\u043D\u043A\u0446\u0438\u0438 OpenRocket.
SaveRktWarningDialog.donotshow = \u0411\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u044D\u0442\u043E\u0442 \u0434\u0438\u0430\u043B\u043E\u0433
@ -1277,11 +1275,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 = <html>\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.<br>
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 = <html>\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.<br>
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 = <html>\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<br>
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.
@ -1309,8 +1303,7 @@ TCMotorSelPan.MotorMountDimensions = \u0420\u0430\u0437\u043C\u0435\u0440\u044B
TCMotorSelPan.lbl.Search = \u041F\u043E\u0438\u0441\u043A:
TCMotorSelPan.lbl.Selectthrustcurve = \u0412\u044B\u0431\u043E\u0440 \u043F\u0440\u043E\u0444\u0438\u043B\u044F \u0442\u044F\u0433\u0438:
TCMotorSelPan.lbl.Ejectionchargedelay = \u0417\u0430\u0434\u0435\u0440\u0436\u043A\u0430 \u0432\u044B\u0431\u0440\u043E\u0441\u0430 \u0437\u0430\u0440\u044F\u0434\u0430:
TCMotorSelPan.equalsIgnoreCase.None = \u041D\u0435\u0442
TCMotorSelPan.lbl.NumberofsecondsorNone = (\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0441\u0435\u043A\u0443\u043D\u0434 \u0438\u043B\u0438 "\u041D\u0435\u0442")
TCMotorSelPan.lbl.Numberofseconds = (\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0441\u0435\u043A\u0443\u043D\u0434 \u0438\u043B\u0438 "\u041D\u0435\u0442")
TCMotorSelPan.lbl.Designation = \u041E\u0431\u043E\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435:
TCMotorSelPan.lbl.Totalimpulse = \u041E\u0431\u0449\u0438\u0439 \u0438\u043C\u043F\u0443\u043B\u044C\u0441:
TCMotorSelPan.lbl.Avgthrust = \u0421\u0440\u0435\u0434\u043D\u044F\u044F \u0442\u044F\u0433\u0430:
@ -1325,7 +1318,7 @@ TCMotorSelPan.lbl.Datapoints = \u0422\u043E\u0447\u043A\u0438 \u0434\u0430\u043D
TCMotorSelPan.lbl.Digest = \u0420\u0435\u0437\u044E\u043C\u0435:
TCMotorSelPan.title.Thrustcurve = \u041F\u0440\u043E\u0444\u0438\u043B\u044C \u0442\u044F\u0433\u0438:
TCMotorSelPan.title.Thrust = \u0422\u044F\u0433\u0430
TCMotorSelPan.delayBox.None = \u041D\u0435\u0442
TCMotorSelPan.delayBox.Plugged = \u041D\u0435\u0442
TCMotorSelPan.noDescription = \u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442.
TCMotorSelPan.btn.checkAll = \u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435
TCMotorSelPan.btn.checkNone = \u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u044B\u0431\u043E\u0440
@ -1360,10 +1353,10 @@ main.menu.file.saveAs = \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \
main.menu.file.saveAs.desc = \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0442\u0435\u043A\u0443\u0449\u0443\u044E \u0441\u0445\u0435\u043C\u0443 \u0440\u0430\u043A\u0435\u0442\u044B \u0432 \u043D\u043E\u0432\u044B\u0439 \u0444\u0430\u0439\u043B
! main.menu.file.import = Import\u2026
! main.menu.file.import.desc = Import design from RockSim rkt file
main.menu.file.export_as = \u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C
main.menu.file.export_as.desc = \u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0445\u0435\u043C\u0443 \u0432 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435
main.menu.file.encode_3d = \u041F\u043E\u0441\u0442\u0440\u043E\u0438\u0442\u044C 3D
main.menu.file.encode_3d.desc = \u041F\u043E\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0441\u0445\u0435\u043C\u0443 \u0432 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435 3D
main.menu.file.exportAs = \u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C
main.menu.file.exportAs.desc = \u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0445\u0435\u043C\u0443 \u0432 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435
main.menu.file.encode3D = \u041F\u043E\u0441\u0442\u0440\u043E\u0438\u0442\u044C 3D
main.menu.file.encode3D.desc = \u041F\u043E\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0441\u0445\u0435\u043C\u0443 \u0432 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u043C \u0444\u043E\u0440\u043C\u0430\u0442\u0435 3D
main.menu.file.print = \u041F\u0435\u0447\u0430\u0442\u044C / \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 PDF...
main.menu.file.print.desc = \u041D\u0430\u043F\u0435\u0447\u0430\u0442\u0430\u0442\u044C \u0438\u043B\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0432 PDF \u0441\u043F\u0438\u0441\u043E\u043A \u0434\u0435\u0442\u0430\u043B\u0435\u0439 \u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u043E\u0432 \u0441\u0442\u0430\u0431\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u043E\u0432
main.menu.file.close = \u0417\u0430\u043A\u0440\u044B\u0442\u044C

View File

@ -17,12 +17,6 @@ purposes)
debug.currentFile = messages.properties
! RocketActions
RocketActions.checkbox.Donotaskmeagain = Yeniden Tekrarlama
RocketActions.lbl.Youcanchangedefop = Hatal\u0131 \u00c7al\u0131\u015fmay\u0131 De\u011fi\u015ftirebilirsin
in the preferences.
RocketActions.showConfirmDialog.lbl1 = Se\u00e7ili sim\u00fclasyonlar\u0131 silmek ister misiniz?
RocketActions.showConfirmDialog.lbl2 = <html><i>Bu \u00e7al\u0131\u015fma tamamlanmad\u0131.</i>
RocketActions.showConfirmDialog.title = Sim\u00fclasyonlar\u0131 Sil
RocketActions.DelCompAct.Delete = Sil
RocketActions.DelCompAct.ttip.Delete = Se\u00e7ili par\u00e7ay\u0131 sil.
RocketActions.DelSimuAct.Delete = Sil
@ -100,7 +94,7 @@ dlg.but.cancel = \u00c7\u0131k\u0131\u015f
dlg.but.close = Kapat
! General file type names
FileHelper.PDF_FILTER = PDF files (*.pdf)
FileHelper.ALL_DESIGNS_FILTER = All rocket designs (*.ork; *.rkt)
FileHelper.ALL_DESIGNS_FILTER = All rocket designs (*.ork; *.rkt, *.CDX1)
FileHelper.OPENROCKET_DESIGN_FILTER = OpenRocket designs (*.ork)
FileHelper.ROCKSIM_DESIGN_FILTER = RockSim designs (*.rkt)
FileHelper.OPEN_ROCKET_COMPONENT_FILTER = OpenRocket presets (*.orc)

View File

@ -18,11 +18,6 @@
debug.currentFile = messages.properties
! RocketActions
RocketActions.checkbox.Donotaskmeagain = \u0411\u0456\u043B\u044C\u0448\u0435 \u043D\u0435 \u043F\u0438\u0442\u0430\u0442\u0438
RocketActions.lbl.Youcanchangedefop = \u0412\u0438 \u043C\u043E\u0436\u0435\u0442\u0435 \u0437\u043C\u0456\u043D\u0438\u0442\u0438 \u0442\u0438\u043F\u043E\u0432\u0443 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044E \u0432 \u043E\u043F\u0446\u0438\u044F\u0445.
RocketActions.showConfirmDialog.lbl1 = \u0412\u0434\u0430\u043B\u0438\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0443 \u0441\u0438\u043C\u0443\u043B\u044F\u0446\u0456\u044E?
RocketActions.showConfirmDialog.lbl2 = <html><i>\u0426\u044F \u043E\u043F\u0435\u0440\u0430\u0446\u0456\u044F \u043D\u0435 \u043C\u043E\u0436\u0435 \u0431\u0443\u0442\u0438 \u0432\u0456\u0434\u043C\u0456\u043D\u0435\u043D\u0430.</i>
RocketActions.showConfirmDialog.title = \u0412\u0434\u0430\u043B\u0438\u0442\u0438 \u0441\u0438\u043C\u0443\u043B\u044F\u0446\u0456\u044E
RocketActions.DelCompAct.Delete = \u0412\u0434\u0430\u043B\u0438\u0442\u0438
RocketActions.DelCompAct.ttip.Delete = \u0412\u0434\u0430\u043B\u0438\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0443 \u0447\u0430\u0441\u0442\u0438\u043D\u0443.
RocketActions.DelSimuAct.Delete = \u0412\u0434\u0430\u043B\u0438\u0442\u0438
@ -96,7 +91,7 @@ dlg.but.close = Close
! General file type names
FileHelper.PDF_FILTER = PDF files (*.pdf)
FileHelper.ALL_DESIGNS_FILTER = All rocket designs (*.ork; *.rkt)
FileHelper.ALL_DESIGNS_FILTER = All rocket designs (*.ork; *.rkt, *.CDX1)
FileHelper.OPENROCKET_DESIGN_FILTER = OpenRocket designs (*.ork)
FileHelper.ROCKSIM_DESIGN_FILTER = RockSim designs (*.rkt)
FileHelper.OPEN_ROCKET_COMPONENT_FILTER = OpenRocket presets (*.orc)
@ -309,9 +304,9 @@ pref.dlg.PrefBooleanSelector2 = Confirm
pref.dlg.Add = Add
pref.dlg.DescriptionArea.Adddirectories = Add directories, RASP motor files (*.eng), RockSim engine files (*.rse) or ZIP archives separated by a semicolon (;) to load external thrust curves. Changes will take effect the next time you start OpenRocket.
PreferencesDialog.lbl.language = Interface language:
PreferencesDialog.languages.default = System default
PreferencesDialog.lbl.languageEffect = The language will change the next time you start OpenRocket.
generalprefs.lbl.language = Interface language:
generalprefs.languages.default = System default
generalprefs.lbl.languageEffect = The language will change the next time you start OpenRocket.
! Software update checker
update.dlg.error.title = Unable to retrieve update information
@ -816,7 +811,7 @@ RocketCompCfg.lbl.Length = Length:
RocketCompCfg.lbl.Thickness = Thickness:
RocketCompCfg.checkbox.Endcapped = End capped
RocketCompCfg.ttip.Endcapped = Whether the end of the shoulder is capped.
RocketCompCfg.title.Aftshoulder = Aft shoulder
RocketCompCfg.border.Aftshoulder = Aft shoulder
RocketCompCfg.border.Foreshoulder = Fore shoulder
!RocketCompCfg.lbl.Length = Length:
@ -1080,11 +1075,7 @@ StorageOptChooser.lbl.Simdatatostore = Simulated data to store:
StorageOptChooser.rdbut.Allsimdata = All simulated data
StorageOptChooser.lbl.longA1 = <html>Store all simulated data.<br>
StorageOptChooser.lbl.longA2 = This can result in very large files!
StorageOptChooser.rdbut.Every = Every
StorageOptChooser.lbl.longB1 = <html>Store plottable values approximately this far apart.<br>
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 = <html>Store only the values shown in the summary table.<br>
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.
@ -1106,8 +1097,7 @@ TCMotorSelPan.MotorMountDimensions = Motor mount dimensions:
TCMotorSelPan.lbl.Search = Search:
TCMotorSelPan.lbl.Selectthrustcurve = Select thrust curve:
TCMotorSelPan.lbl.Ejectionchargedelay = Ejection charge delay:
TCMotorSelPan.equalsIgnoreCase.None = None
TCMotorSelPan.lbl.NumberofsecondsorNone = (Number of seconds or \"None\")
TCMotorSelPan.lbl.Numberofseconds = (Number of seconds or \"None\")
TCMotorSelPan.lbl.Designation = Designation:
TCMotorSelPan.lbl.Totalimpulse = Total impulse:
TCMotorSelPan.lbl.Avgthrust = Avg. thrust:
@ -1119,7 +1109,7 @@ TCMotorSelPan.lbl.Datapoints = Data points:
TCMotorSelPan.lbl.Digest = Digest:
TCMotorSelPan.title.Thrustcurve = Thrust curve:
TCMotorSelPan.title.Thrust = Thrust
TCMotorSelPan.delayBox.None = Plugged (None)
TCMotorSelPan.delayBox.Plugged = Plugged (None)
TCMotorSelPan.noDescription = No description available.
TCMotorSelPan.btn.checkAll = Select All
TCMotorSelPan.btn.checkNone = Clear All
@ -1295,11 +1285,6 @@ Shape.Haackseries.desc2 = The Haack series <i>nose cones</i> are designed to min
! RocketComponent
RocketComponent.Position.TOP = Top of the parent component
RocketComponent.Position.MIDDLE = Middle of the parent component
RocketComponent.Position.BOTTOM = Bottom of the parent component
RocketComponent.Position.AFTER = After the parent component
RocketComponent.Position.ABSOLUTE = Tip of the nose cone
! LaunchLug
LaunchLug.Launchlug = Launch Lug

View File

@ -47,7 +47,7 @@ BasicEventSimulationEngine.error.earlyMotorBurnout = \u53D1\u52A8\u673A\u8D77\u9
BasicEventSimulationEngine.error.noIgnition = \u53D1\u52A8\u673A\u672A\u70B9\u706B
BasicEventSimulationEngine.error.noMotorsDefined = \u53D1\u52A8\u673A\u672A\u5B9A\u4E49
FileHelper.ALL_DESIGNS_FILTER = \u652F\u6301\u7684\u706B\u7BAD\u8BBE\u8BA1\u7A3F(*.ork; *.rkt)
FileHelper.ALL_DESIGNS_FILTER = \u652F\u6301\u7684\u706B\u7BAD\u8BBE\u8BA1\u7A3F(*.ork; *.rkt, *.CDX1)
FileHelper.OPENROCKET_DESIGN_FILTER = OpenRocket\u8BBE\u8BA1\u7A3F(*.ork)
FileHelper.ROCKSIM_DESIGN_FILTER = RockSim\u8BBE\u8BA1\u7A3F(*.rkt)
FileHelper.OPEN_ROCKET_COMPONENT_FILTER = OpenRocket\u914D\u7F6E(*.orc)
@ -797,9 +797,9 @@ PlotConfiguration.Verticalmotion = \u5782\u76F4\u8FD0\u52A8 vs. \u65F6\u95F
PlotDialog.CheckBox.Showdatapoints = \u663E\u793A\u6570\u636E\u70B9
PlotDialog.lbl.Chart = \u5DE6\u952E\u62D6\u62FD\u79FB\u52A8\u6570\u636E\u533A. \u6EDA\u8F6E\u7F29\u653E. ctrl-\u6EDA\u8F6E\u4EC5\u7F29\u653EX\u8F74. ctrl-\u5DE6\u952E\u62D6\u62FD\u79FB\u52A8\u89C6\u56FE. \u53F3\u952E\u8FC7\u62FD\u8C03\u6574\u663E\u793A\u5927\u5C0F.
PreferencesDialog.languages.default = \u7CFB\u7EDF\u9ED8\u8BA4
PreferencesDialog.lbl.language = \u754C\u9762\u8BED\u8A00:
PreferencesDialog.lbl.languageEffect = \u8BED\u8A00\u8BBE\u7F6E\u5C06\u5728OpenRocket\u91CD\u542F\u540E\u751F\u6548
generalprefs.languages.default = \u7CFB\u7EDF\u9ED8\u8BA4
generalprefs.lbl.language = \u754C\u9762\u8BED\u8A00:
generalprefs.lbl.languageEffect = \u8BED\u8A00\u8BBE\u7F6E\u5C06\u5728OpenRocket\u91CD\u542F\u540E\u751F\u6548
PresetModel.lbl.custompreset = \u5b9a\u5236
PresetModel.lbl.partsLib = \u96f6\u4ef6\u5e93
@ -875,12 +875,6 @@ RocketActions.NewStageAct.Newstage = \u65B0\u5EFA\u4E00\u7EA7
RocketActions.NewStageAct.ttip.Newstage = \u5728\u8BBE\u8BA1\u4E2D\u65B0\u5EFA\u4E00\u7EA7
RocketActions.PasteAct.Paste = \u7C98\u8D34
RocketActions.PasteAct.ttip.Paste = \u5C06\u526A\u8D34\u677F\u91CC\u7684\u90E8\u4EF6\u6216\u4EFF\u771F\u7C98\u8D34\u5230\u8BE5\u8BBE\u8BA1\u4E2D
! RocketActions
RocketActions.checkbox.Donotaskmeagain = \u4E0D\u518D\u63D0\u793A
RocketActions.lbl.Youcanchangedefop = \u4F60\u53EF\u4EE5\u4FEE\u6539\u7F3A\u7701\u8BBE\u7F6E
RocketActions.showConfirmDialog.lbl1 = \u5220\u9664\u9009\u5B9A\u4EFF\u771F?
RocketActions.showConfirmDialog.lbl2 = <html><i>\u8BE5\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500</i>
RocketActions.showConfirmDialog.title = \u5220\u9664\u4EFF\u771F
RocketCfg.lbl.Comments = \u6CE8\u91CA:
RocketCfg.lbl.Designer = \u8BBE\u8BA1\u4EBA:
@ -927,7 +921,7 @@ RocketCompCfg.tab.Figure = \u6837\u5F0F
RocketCompCfg.tab.Override.ttip = \u8D28\u91CF\u53CA\u91CD\u5FC3\u9009\u9879
RocketCompCfg.tab.Override = \u8986\u5199
RocketCompCfg.tab.Comment.ttip = \u7EC4\u4EF6\u6CE8\u91CA
RocketCompCfg.title.Aftshoulder = \u524D\u8FDE\u63A5\u5904
RocketCompCfg.border.Aftshoulder = \u524D\u8FDE\u63A5\u5904
RocketCompCfg.ttip.Endcapped = \u8FDE\u63A5\u5904\u7EC8\u7AEF\u662F\u5426\u6709\u76D6.
RocketCompCfg.lbl.Componentname.ttip = \u7EC4\u4EF6\u540D\u79F0.
@ -1136,15 +1130,11 @@ StorageOptChooser.lbl.Saveopt = \u4FDD\u5B58\u9009\u9879
StorageOptChooser.lbl.Simdatatostore = \u4FDD\u5B58\u4EFF\u771F\u6570\u636E:
StorageOptChooser.lbl.longA1 = <html>\u4FDD\u5B58\u6240\u6709\u4EFF\u771F\u6570\u636E.<br>
StorageOptChooser.lbl.longA2 = \u6587\u4EF6\u4F53\u79EF\u4F1A\u5F88\u5927!
StorageOptChooser.lbl.longB1 = <html>\u6BCF\u9694\u6570\u4E2A\u6570\u636E\u4FDD\u5B58\u4E00\u6B21.<br>
StorageOptChooser.lbl.longB2 = \u95F4\u9694\u8D8A\u5927\u6587\u4EF6\u4F53\u79EF\u8D8A\u5C0F.
StorageOptChooser.lbl.longC1 = <html>\u4EC5\u4FDD\u7559\u7B80\u62A5\u8868\u683C\u4E2D\u663E\u793A\u7684\u6570\u636E.<br>
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
@ -1192,8 +1182,7 @@ TCMotorSelPan.checkbox.hideSimilar = \u9690\u85CF\u76F8\u4F3C\u7684\u63A8\u
TCMotorSelPan.checkbox.hideUsed = \u9690\u85CF\u5DF2\u4F7F\u7528\u7684\u53D1\u52A8\u673A
TCMotorSelPan.checkbox.limitdiameter = \u76F4\u5F84\u4E0D\u8D85\u8FC7\u5F53\u524D\u53D1\u52A8\u673A\u5EA7\u76F4\u5F84
TCMotorSelPan.checkbox.limitlength = \u957F\u5EA6\u4E0D\u8D85\u8FC7\u5F53\u524D\u53D1\u52A8\u673A\u5EA7\u957F\u5EA6
TCMotorSelPan.delayBox.None = \u65E0
TCMotorSelPan.equalsIgnoreCase.None = \u65E0
TCMotorSelPan.delayBox.Plugged = \u65E0
TCMotorSelPan.lbl.Avgthrust = \u5E73\u5747\u63A8\u529B:
TCMotorSelPan.lbl.Burntime = \u71C3\u70E7\u65F6\u95F4:
TCMotorSelPan.lbl.Datapoints = \u6570\u636E\u70B9:
@ -1202,7 +1191,7 @@ TCMotorSelPan.lbl.Ejectionchargedelay = \u5F39\u5C04\u5EF6\u65F6:
TCMotorSelPan.lbl.Emptymass = \u71C3\u5C3D\u8D28\u91CF:
TCMotorSelPan.lbl.Launchmass = \u53D1\u5C04\u8D28\u91CF:
TCMotorSelPan.lbl.Maxthrust = \u6700\u5927\u63A8\u529B:
TCMotorSelPan.lbl.NumberofsecondsorNone = (\u79D2\u6570\u6216"\u65E0")
TCMotorSelPan.lbl.Numberofseconds = (\u79D2\u6570\u6216"\u65E0")
TCMotorSelPan.lbl.Search = \u641C\u7D22:
TCMotorSelPan.lbl.Selectthrustcurve = \u9009\u62E9\u63A8\u529B\u66F2\u7EBF:
TCMotorSelPan.lbl.Selrocketmotor = \u9009\u62E9\u706B\u7BAD\u53D1\u52A8\u673A:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 B

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 768 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 700 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 405 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 790 B

After

Width:  |  Height:  |  Size: 790 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 345 B

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 740 B

After

Width:  |  Height:  |  Size: 740 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 B

View File

@ -2,6 +2,7 @@ package net.sf.openrocket.aerodynamics;
import java.util.Map;
import net.sf.openrocket.logging.WarningSet;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.util.MathUtil;

View File

@ -2,8 +2,8 @@ package net.sf.openrocket.aerodynamics;
import java.util.Map;
import net.sf.openrocket.logging.WarningSet;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import net.sf.openrocket.rocketcomponent.Rocket;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.util.Coordinate;
import net.sf.openrocket.util.Monitorable;

View File

@ -1,10 +1,11 @@
package net.sf.openrocket.aerodynamics;
import static net.sf.openrocket.util.MathUtil.EPSILON;
import static net.sf.openrocket.util.MathUtil.pow2;
import java.util.*;
import net.sf.openrocket.logging.Warning;
import net.sf.openrocket.logging.WarningSet;
import net.sf.openrocket.rocketcomponent.AxialStage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -380,6 +381,20 @@ public class BarrowmanCalculator extends AbstractAerodynamicCalculator {
}
}
} else {
/*
It could be that the component is a child of a PodSet or ParallelStage, and it is flush with
the previous component. In this case, the component is overlapping.
*/
RocketComponent prevCompParent = prevComp.getParent();
RocketComponent compParent = comp.getParent();
int prevCompPos = prevCompParent.getChildPosition(prevComp);
RocketComponent nextComp = prevCompPos + 1 >= prevCompParent.getChildCount() ?
null : prevCompParent.getChild(prevCompPos + 1);
if ((compParent instanceof PodSet || compParent instanceof ParallelStage) &&
MathUtil.equals(symXfore, prevXaft) && (compParent.getParent() == nextComp)) {
warnings.add(Warning.PODSET_OVERLAP, comp.getParent().toString());
}
}
}
prevComp = sym;
@ -741,11 +756,17 @@ public class BarrowmanCalculator extends AbstractAerodynamicCalculator {
final InstanceMap imap = configuration.getActiveInstances();
for(Map.Entry<RocketComponent, ArrayList<InstanceContext>> entry: imap.entrySet() ) {
final RocketComponent c = entry.getKey();
if (!(c instanceof SymmetricComponent)) {
continue;
}
if (c.isCDOverridden() ||
c.isCDOverriddenByAncestor()) {
continue;
}
SymmetricComponent s = (SymmetricComponent) c;
double foreRadius = s.getForeRadius();
double aftRadius = s.getAftRadius();
@ -756,35 +777,20 @@ public class BarrowmanCalculator extends AbstractAerodynamicCalculator {
}
int instanceCount = entry.getValue().size();
if (c.isCDOverridden() ||
c.isCDOverriddenByAncestor()) {
continue;
// get forward radius of next component
final SymmetricComponent nextComponent = s.getNextSymmetricComponent();
double nextRadius;
if ((nextComponent != null) && configuration.isComponentActive(nextComponent)) {
nextRadius = nextComponent.getForeRadius();
} else {
nextRadius = 0.0;
}
// if aft radius of previous component is greater than my forward radius, set
// its aft CD
double radius = 0;
final SymmetricComponent prevComponent = s.getPreviousSymmetricComponent();
if (prevComponent != null && configuration.isComponentActive(prevComponent)) {
radius = prevComponent.getAftRadius();
}
if (radius > foreRadius) {
double area = Math.PI * (pow2(radius) - pow2(foreRadius));
double cd = base * area / conditions.getRefArea();
total += instanceCount * cd;
if ((forceMap != null) && (prevComponent != null)) {
forceMap.get(prevComponent).setBaseCD(cd);
}
}
// if I'm the last component, set my base CD
// note: the iterator *should* serve up the next component.... buuuut ....
// this code is tested, and there's no compelling reason to change.
final SymmetricComponent n = s.getNextSymmetricComponent();
if ((n == null) || !configuration.isStageActive(n.getStageNumber())) {
double area = Math.PI * pow2(aftRadius);
// if fore radius of next component is less than my aft radius, set my
// base CD
if (nextRadius < aftRadius) {
double area = Math.PI * (pow2(aftRadius) - pow2(nextRadius));
double cd = base * area / conditions.getRefArea();
total += instanceCount * cd;
if (forceMap != null) {

View File

@ -1,147 +0,0 @@
package net.sf.openrocket.aerodynamics;
import java.util.AbstractSet;
import java.util.Iterator;
import net.sf.openrocket.util.ArrayList;
import net.sf.openrocket.util.BugException;
import net.sf.openrocket.util.Monitorable;
import net.sf.openrocket.util.Mutable;
/**
* A set that contains multiple <code>Warning</code>s. When adding a
* {@link Warning} to this set, the contents is checked for a warning of the
* same type. If one is found, then the warning left in the set is determined
* by the method {@link Warning#replaceBy(Warning)}.
* <p>
* A WarningSet can be made immutable by calling {@link #immute()}.
*
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
*/
public class WarningSet extends AbstractSet<Warning> implements Cloneable, Monitorable {
/** the actual array of warnings*/
private ArrayList<Warning> warnings = new ArrayList<Warning>();
private Mutable mutable = new Mutable();
private int modID = 0;
/**
* Add a <code>Warning</code> to the set. If a warning of the same type
* exists in the set, the warning that is left in the set is defined by the
* method {@link Warning#replaceBy(Warning)}.
*
* @throws IllegalStateException if this warning set has been made immutable.
*/
@Override
public boolean add(Warning w) {
mutable.check();
modID++;
int index = warnings.indexOf(w);
if (index < 0) {
warnings.add(w);
return false;
}
Warning old = warnings.get(index);
if (old.replaceBy(w)) {
warnings.set(index, w);
}
return true;
}
/**
* Add a <code>Warning</code> with the specified text to the set. The Warning object
* is created using the {@link Warning#fromString(String)} method. If a warning of the
* same type exists in the set, the warning that is left in the set is defined by the
* method {@link Warning#replaceBy(Warning)}.
*
* @param s the warning text.
* @throws IllegalStateException if this warning set has been made immutable.
*/
public boolean add(String s) {
mutable.check();
return add(Warning.fromString(s));
}
/**
* Add a <code>Warning</code> of the specified type with the specified discriminator to the
* set.
* @param w the warning
* @param d the extra discriminator
*
*/
public boolean add (Warning w, String d) {
return this.add(w.toString() + ": \"" + d + "\"");
}
@Override
public Iterator<Warning> iterator() {
final Iterator<Warning> iterator = warnings.iterator();
return new Iterator<Warning>() {
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public Warning next() {
return iterator.next();
}
@Override
public void remove() {
mutable.check();
iterator.remove();
}
};
}
@Override
public int size() {
return warnings.size();
}
public void immute() {
mutable.immute();
}
@Override
public WarningSet clone() {
try {
WarningSet newSet = (WarningSet) super.clone();
newSet.warnings = this.warnings.clone();
newSet.mutable = this.mutable.clone();
return newSet;
} catch (CloneNotSupportedException e) {
throw new BugException("CloneNotSupportedException occurred, report bug!", e);
}
}
@Override
public String toString() {
String s = "";
for (Warning w : warnings) {
if (s.length() > 0)
s = s + ",";
s += w.toString();
}
return "WarningSet[" + s + "]";
}
@Override
public int getModID() {
return modID;
}
}

View File

@ -2,7 +2,7 @@ package net.sf.openrocket.aerodynamics.barrowman;
import net.sf.openrocket.aerodynamics.AerodynamicForces;
import net.sf.openrocket.aerodynamics.FlightConditions;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.logging.WarningSet;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.util.Transformation;

View File

@ -1,15 +1,14 @@
package net.sf.openrocket.aerodynamics.barrowman;
import static java.lang.Math.pow;
import static net.sf.openrocket.util.MathUtil.EPSILON;
import static net.sf.openrocket.util.MathUtil.pow2;
import java.util.Arrays;
import net.sf.openrocket.aerodynamics.AerodynamicForces;
import net.sf.openrocket.aerodynamics.FlightConditions;
import net.sf.openrocket.aerodynamics.Warning;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.logging.Warning;
import net.sf.openrocket.logging.WarningSet;
import net.sf.openrocket.rocketcomponent.FinSet;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.util.BugException;
@ -84,7 +83,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 +97,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. /////////
@ -239,23 +234,33 @@ public class FinSetCalc extends RocketComponentCalc {
finArea = component.getPlanformArea();
ar = 2 * pow2(span) / finArea;
// Check geometry; don't consider points along fin root for this
// (doing so will cause spurious jagged fin warnings)
Coordinate[] points = component.getFinPoints();
// Check for jagged edges
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
// Calculate the chord lead and trail positions and length. We do need the points
// along the root for this
points = component.getFinPointsWithRoot();
Arrays.fill(chordLead, Double.POSITIVE_INFINITY);
Arrays.fill(chordTrail, Double.NEGATIVE_INFINITY);
Arrays.fill(chordLength, 0);
@ -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;

View File

@ -2,10 +2,8 @@ package net.sf.openrocket.aerodynamics.barrowman;
import net.sf.openrocket.aerodynamics.AerodynamicForces;
import net.sf.openrocket.aerodynamics.FlightConditions;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.rocketcomponent.LaunchLug;
import net.sf.openrocket.logging.WarningSet;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.util.MathUtil;
import net.sf.openrocket.util.Transformation;
public class LaunchLugCalc extends TubeCalc {

View File

@ -8,7 +8,7 @@ import org.slf4j.LoggerFactory;
import net.sf.openrocket.aerodynamics.AerodynamicForces;
import net.sf.openrocket.aerodynamics.FlightConditions;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.logging.WarningSet;
import net.sf.openrocket.rocketcomponent.RailButton;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.util.Coordinate;
@ -58,44 +58,56 @@ public class RailButtonCalc extends RocketComponentCalc {
final double notchArea = (button.getOuterDiameter() - button.getInnerDiameter()) * button.getInnerHeight();
final double refArea = outerArea - notchArea;
// accumulate Cd contribution from each rail button
// accumulate Cd contribution from each rail button. If velocity is 0 just set CDmul to a value previously
// competed for velocity MathUtil.EPSILON and skip the loop to avoid division by 0
double CDmul = 0.0;
for (int i = 0; i < button.getInstanceCount(); i++) {
// compute boundary layer height at button location. I can't find a good reference for the
// formula, e.g. https://aerospaceengineeringblog.com/boundary-layers/ simply says it's the
// "scientific consensus".
double x = (button.toAbsolute(instanceOffsets[i]))[0].x; // location of button
double rex = calculateReynoldsNumber(x, conditions); // Reynolds number of button location
double del = 0.37 * x / Math.pow(rex, 0.2); // Boundary layer thickness
// compute mean airspeed over button
// this assumes airspeed changes linearly through boundary layer
// and that all parts of the railbutton contribute equally to Cd,
// neither of which is true but both are plenty close enough for our purposes
double mach;
if (buttonHt > del) {
// Case 1: button extends beyond boundary layer
// Mean velocity is 1/2 rocket velocity up to limit of boundary layer,
// full velocity after that
mach = (buttonHt - 0.5*del) * conditions.getMach()/buttonHt;
} else {
// Case 2: button is entirely within boundary layer
mach = MathUtil.map(buttonHt/2.0, 0, del, 0, conditions.getMach());
if (conditions.getMach() > MathUtil.EPSILON) {
for (int i = 0; i < button.getInstanceCount(); i++) {
// compute boundary layer height at button location. I can't find a good reference for the
// formula, e.g. https://aerospaceengineeringblog.com/boundary-layers/ simply says it's the
// "scientific consensus".
double x = (button.toAbsolute(instanceOffsets[i]))[0].x; // location of button
double rex = calculateReynoldsNumber(x, conditions); // Reynolds number of button location
double del = 0.37 * x / Math.pow(rex, 0.2); // Boundary layer thickness
// compute mean airspeed over button
// this assumes airspeed changes linearly through boundary layer
// and that all parts of the railbutton contribute equally to Cd,
// neither of which is true but both are plenty close enough for our purposes
double mach;
if (buttonHt > del) {
// Case 1: button extends beyond boundary layer
// Mean velocity is 1/2 rocket velocity up to limit of boundary layer,
// full velocity after that
mach = (buttonHt - 0.5*del) * conditions.getMach()/buttonHt;
} else {
// Case 2: button is entirely within boundary layer
mach = MathUtil.map(buttonHt/2.0, 0, del, 0, conditions.getMach());
}
// look up Cd as function of speed. It's pretty constant as a function of Reynolds
// number when slow, so we can just use a function of Mach number
double cd = MathUtil.interpolate(cdDomain, cdRange, mach);
// Since later drag force calculations don't consider boundary layer, compute "effective Cd"
// based on rocket velocity
cd = cd * MathUtil.pow2(mach)/MathUtil.pow2(conditions.getMach());
// add to CDmul
CDmul += cd;
}
// look up Cd as function of speed. It's pretty constant as a function of Reynolds
// number when slow, so we can just use a function of Mach number
double cd = MathUtil.interpolate(cdDomain, cdRange, mach);
// Since later drag force calculations don't consider boundary layer, compute "effective Cd"
// based on rocket velocity
cd = cd * MathUtil.pow2(mach)/MathUtil.pow2(conditions.getMach());
// since we'll be multiplying by the instance count up in BarrowmanCalculator,
// we want to return the mean CD instead of the total
CDmul /= button.getInstanceCount();
// add to CDmul
CDmul += cd;
}
} else {
// value at velocity of MathUtil.EPSILON
CDmul = 8.786395072609939E-4;
}
return CDmul * stagnationCD * refArea / conditions.getRefArea();
}

View File

@ -2,7 +2,7 @@ package net.sf.openrocket.aerodynamics.barrowman;
import net.sf.openrocket.aerodynamics.AerodynamicForces;
import net.sf.openrocket.aerodynamics.FlightConditions;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.logging.WarningSet;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.util.Transformation;

View File

@ -5,8 +5,8 @@ import static net.sf.openrocket.util.MathUtil.pow2;
import net.sf.openrocket.aerodynamics.AerodynamicForces;
import net.sf.openrocket.aerodynamics.BarrowmanCalculator;
import net.sf.openrocket.aerodynamics.FlightConditions;
import net.sf.openrocket.aerodynamics.Warning;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.logging.Warning;
import net.sf.openrocket.logging.WarningSet;
import net.sf.openrocket.rocketcomponent.BodyTube;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.rocketcomponent.SymmetricComponent;
@ -77,7 +77,7 @@ public class SymmetricComponentCalc extends RocketComponentCalc {
frontalArea = 0;
sinphi = 0;
} else if (component instanceof Transition) {
shape = ((Transition) component).getType();
shape = ((Transition) component).getShapeType();
param = ((Transition) component).getShapeParameter();
frontalArea = Math.abs(Math.PI * (foreRadius * foreRadius - aftRadius * aftRadius));

View File

@ -1,7 +1,7 @@
package net.sf.openrocket.aerodynamics.barrowman;
import net.sf.openrocket.aerodynamics.FlightConditions;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.logging.WarningSet;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.rocketcomponent.Tube;
import net.sf.openrocket.util.MathUtil;
@ -14,73 +14,68 @@ public abstract class TubeCalc extends RocketComponentCalc {
private final static Logger log = LoggerFactory.getLogger(TubeFinSetCalc.class);
// air density (standard conditions)
private final double rho = 1.225; // kg/m^3
private final Tube tube;
private final double diameter;
private final double length;
protected final double innerArea;
private final double totalArea;
private final double frontalArea;
private final double epsilon;
public TubeCalc(RocketComponent component) {
super(component);
Tube tube = (Tube)component;
tube = (Tube)component;
length = tube.getLength();
diameter = 2 * tube.getInnerRadius();
innerArea = Math.PI * MathUtil.pow2(tube.getInnerRadius());
totalArea = Math.PI * MathUtil.pow2(tube.getOuterRadius());
frontalArea = totalArea - innerArea;
epsilon = tube.getFinish().getRoughnessSize(); // roughness; note we don't maintain surface roughness of
// interior separately from exterior.
}
@Override
public double calculatePressureCD(FlightConditions conditions,
double stagnationCD, double baseCD, WarningSet warnings) {
// These calculations come from a mix of theoretical and empirical
// results, and are marked with (t) for theoretical and (e) for empirical.
// The theoretical results should not be modified; the empirical can be adjusted
// to better simulate real rockets as we get data.
// For the sources of the empirical formulas, see Carello, Ivanov, and Mazza,
// "Pressure drop in pipe lines for compressed air: comparison between experimental
// and theoretical analysis", Transactions on Engineering Sciences vol 18,
// ISSN 1743-35331998, 1998.
// If we aren't moving, treat CD as 0
final double v = conditions.getVelocity();
if (v < MathUtil.EPSILON)
return 0;
// For the rockets for which we have data, the effect of the stagnation CD appears to be
// overstated. This code multiplies it be a factor of 0.7 to better match experimental
// data
// Need to check for tube inner area 0 in case of rockets using launch lugs with
// an inner radius of 0 to emulate rail buttons (or just weird rockets, of course)
// an inner radius of 0 to emulate rail guides (or just weird rockets, of course)
double tubeCD = 0.0;
double deltap;
if (innerArea > MathUtil.EPSILON) {
// Temperature
final double T = conditions.getAtmosphericConditions().getTemperature();
// Volume flow rate (t)
final double Q = conditions.getVelocity() * innerArea;
// Current atmospheric conditions
final double p = conditions.getAtmosphericConditions().getPressure();
final double t = conditions.getAtmosphericConditions().getTemperature();
final double rho = conditions.getAtmosphericConditions().getDensity();
// Reynolds number (note Reynolds number for the interior of a pipe is based on diameter,
// not length (t))
final double Re = conditions.getVelocity() * diameter /
conditions.getAtmosphericConditions().getKinematicViscosity();
final double Re = v * diameter / conditions.getAtmosphericConditions().getKinematicViscosity();
// friction coefficient (for smooth tube interior) (e)
final double lambda = 1/MathUtil.pow2(2 * Math.log(0.5625 * Math.pow(Re, 0.875)) - 0.8);
// pressure drop (e)
final double P0 = 100; // standard pressure
final double T0 = 273.15; // standard temperature
deltap = (lambda * 8 * length * rho * MathUtil.pow2(Q) * T * P0) /
(MathUtil.pow2(Math.PI) * Math.pow(diameter, 5) * T0 * conditions.getAtmosphericConditions().getPressure());
} else {
deltap = 0.0;
// friction coefficient using Swamee-Jain equation
double f = 0.25/MathUtil.pow2(Math.log10((epsilon / (3.7 * diameter) + 5.74/Math.pow(Re, 0.9))));
// If we're supersonic, apply a correction
if (conditions.getMach() > 1) {
f = f / conditions.getBeta();
}
// pressure drop using Darcy-Weissbach equation
deltap = f * (length * rho * MathUtil.pow2(v)) / (2 * diameter);
// drag coefficient of tube interior from pressure drop
tubeCD = 2 * (deltap * innerArea) / (rho * MathUtil.pow2(v) * innerArea);
}
// convert to CD and return
return (deltap * innerArea + 0.7 * stagnationCD * frontalArea) / conditions.getRefArea();
final double cd = (tubeCD * innerArea + 0.7*(stagnationCD + baseCD) * frontalArea) / conditions.getRefArea();
return cd;
}
}

View File

@ -1,23 +1,16 @@
package net.sf.openrocket.aerodynamics.barrowman;
import static java.lang.Math.pow;
import static net.sf.openrocket.util.MathUtil.pow2;
import java.util.Arrays;
import net.sf.openrocket.aerodynamics.AerodynamicForces;
import net.sf.openrocket.aerodynamics.FlightConditions;
import net.sf.openrocket.aerodynamics.Warning;
import net.sf.openrocket.aerodynamics.Warning.Other;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.logging.Warning;
import net.sf.openrocket.logging.WarningSet;
import net.sf.openrocket.rocketcomponent.BodyTube;
import net.sf.openrocket.rocketcomponent.FinSet;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.rocketcomponent.TubeFinSet;
import net.sf.openrocket.util.Coordinate;
import net.sf.openrocket.util.LinearInterpolator;
import net.sf.openrocket.util.MathUtil;
import net.sf.openrocket.util.PolyInterpolator;
import net.sf.openrocket.util.Transformation;
import org.slf4j.Logger;
@ -32,6 +25,8 @@ public class TubeFinSetCalc extends TubeCalc {
private static final double STALL_ANGLE = (20 * Math.PI / 180);
private final double[] poly = new double[6];
private final TubeFinSet tubes;
// parameters straight from configuration; we'll be grabbing them once
// so code is a bit shorter elsewhere
@ -51,14 +46,14 @@ public class TubeFinSetCalc extends TubeCalc {
private final double cnaconst;
protected final WarningSet geometryWarnings = new WarningSet();
public TubeFinSetCalc(RocketComponent component) {
super(component);
if (!(component instanceof TubeFinSet)) {
throw new IllegalArgumentException("Illegal component type " + component);
}
final TubeFinSet tubes = (TubeFinSet) component;
tubes = (TubeFinSet) component;
if (tubes.getTubeSeparation() > MathUtil.EPSILON) {
geometryWarnings.add(Warning.TUBE_SEPARATION);
@ -82,37 +77,53 @@ public class TubeFinSetCalc extends TubeCalc {
// aspect ratio.
ar = 2 * innerRadius / chord;
// Some trigonometry...
// We need a triangle with the following three sides:
// d is from the center of the body tube to a tangent point on the tube fin
// outerRadius is from the center of the tube fin to the tangent point. Note that
// d and outerRadius are at right angles
// bodyRadius + outerRadius is from the center of the body tube to the center of the tube fin.
// This is the hypotenuse of the right triangle.
// Find length of d
final double d = Math.sqrt(MathUtil.pow2(bodyRadius + outerRadius) - MathUtil.pow2(outerRadius));
// Area of diamond formed by mirroring triangle on its hypotenuse (same area as rectangle
// formed by d and outerarea, but it *isn't* that rectangle)
double a = d * outerRadius;
// angle between outerRadius and bodyRadius+outerRadius
final double theta1 = Math.acos(outerRadius/(outerRadius + bodyRadius));
// area of arc from tube fin, doubled to get both halves of diamond
final double a1 = MathUtil.pow2(outerRadius) * theta1;
// angle between bodyRadius+outerRadius and d
final double theta2 = Math.PI/2.0 - theta1;
// area of arc from body tube. Doubled so we have area to remove from diamond
final double a2 = MathUtil.pow2(bodyRadius) * theta2;
// area of interstice for one tube fin
intersticeArea = (a - a1 - a2);
// for comparison, what's the area of a tube fin?
double tubeArea = MathUtil.pow2(outerRadius) * Math.PI;
// wetted area for friction drag calculation. We don't consider the inner surface of the tube;
// that affects the pressure drop through the tube and so (indirecctly) affects the pressure drag.
// Area of the outer surface of tubes. Since roughly half
// of the area is "masked" by the interstices between the tubes and the
// body tube, only consider the other half of the area (so only multiplying by pi instead of 2*pi)
final double outerArea = chord * Math.PI * outerRadius;
// Area of the outer surface of a tube, not including portion masked by interstice
final double outerArea = chord * 2.0 * (Math.PI - theta1) * outerRadius;
// Surface area of the portion of the body tube masked by the tube fins, per tube
final BodyTube parent = (BodyTube) tubes.getParent();
final double maskedArea = chord * 2.0 * Math.PI * bodyRadius / tubeCount;
// Surface area of the portion of the body tube masked by the tube fin. We'll subtract it from
// the tube fin area rather than go in and change the body tube surface area calculation. If tube
// fin and body tube roughness aren't the same this will result in an inaccuracy.
final double maskedArea = chord * 2.0 * theta2 * bodyRadius;
wettedArea = outerArea - maskedArea;
log.debug("wetted area of tube fins " + wettedArea);
// frontal area of interstices between tubes for pressure drag calculation.
// We'll treat them as a closed blunt object.
// area of disk passing through tube fin centers
final double tubeDiskArea = Math.PI * MathUtil.pow2(bodyRadius + outerRadius);
// half of combined area of tube fin exteriors. Deliberately using the outer radius here since we
// calculate pressure drag from the tube walls in TubeCalc
final double tubeOuterArea = tubeCount * Math.PI * MathUtil.pow2(outerRadius) / 2.0;
// body tube area
final double bodyTubeArea = Math.PI * MathUtil.pow2(bodyRadius);
// area of an interstice
intersticeArea = (tubeDiskArea - tubeOuterArea - bodyTubeArea) / tubeCount;
// Precompute most of CNa. Equation comes from Ribner, "The ring airfoil in nonaxial
// flow", Journal of the Aeronautical Sciences 14(9) pp 529-530 (1947) equation (5).
@ -253,10 +264,8 @@ public class TubeFinSetCalc extends TubeCalc {
@Override
public double calculateFrictionCD(FlightConditions conditions, double componentCf, WarningSet warnings) {
warnings.addAll(geometryWarnings);
final double frictionCD = componentCf * wettedArea / conditions.getRefArea();
final double frictionCD = componentCf * wettedArea / conditions.getRefArea();
return frictionCD;
}
@ -265,18 +274,10 @@ public class TubeFinSetCalc extends TubeCalc {
double stagnationCD, double baseCD, WarningSet warnings) {
warnings.addAll(geometryWarnings);
final double cd = super.calculatePressureCD(conditions, stagnationCD, baseCD, warnings) +
(stagnationCD + baseCD) * intersticeArea / conditions.getRefArea();
(stagnationCD + baseCD) * intersticeArea / conditions.getRefArea();
return cd;
}
private static int calculateInterferenceFinCount(TubeFinSet component) {
RocketComponent parent = component.getParent();
if (parent == null) {
throw new IllegalStateException("fin set without parent component");
}
return 3 * component.getFinCount();
}
}

View File

@ -40,7 +40,7 @@ public class Appearance {
}
/**
* @return colr of the appearance
* @return color of the appearance
*/
public Color getPaint() {
return paint;

View File

@ -1,11 +1,15 @@
package net.sf.openrocket.appearance.defaults;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import net.sf.openrocket.appearance.DecalImage;
import net.sf.openrocket.util.FileUtils;
import net.sf.openrocket.util.StateChangeListener;
/**
@ -46,6 +50,19 @@ public class ResourceDecalImage implements DecalImage {
@Override
public void exportImage(File file) throws IOException {
InputStream is = getBytes();
OutputStream os = new BufferedOutputStream(new FileOutputStream(file));
if (is == null) {
return;
}
try {
FileUtils.copy(is, os);
} finally {
is.close();
os.close();
}
}
@Override

View File

@ -1,6 +1,6 @@
package net.sf.openrocket.communication;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.logging.WarningSet;
import net.sf.openrocket.file.simplesax.AbstractElementHandler;
import net.sf.openrocket.file.simplesax.ElementHandler;
import net.sf.openrocket.file.simplesax.PlainTextHandler;

View File

@ -1,6 +1,6 @@
package net.sf.openrocket.communication;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.logging.WarningSet;
import net.sf.openrocket.file.simplesax.SimpleSAX;
import net.sf.openrocket.util.BuildProperties;
import org.xml.sax.InputSource;

View File

@ -69,6 +69,9 @@ public class Databases {
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Titanium", 4500));
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Quantum tubing", 1050));
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Blue tube", 1300));
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "PLA - 100% infill", 1250));
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "PETG - 100% infill", 1250));
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "ABS - 100% infill", 1050));
SURFACE_MATERIAL.add(newMaterial(Material.Type.SURFACE, "Ripstop nylon", 0.067));
SURFACE_MATERIAL.add(newMaterial(Material.Type.SURFACE, "Mylar", 0.021));
@ -222,7 +225,7 @@ public class Databases {
* the provided name if unable to do so.
*
* @param type the material type.
* @param baseName the base name of the material.
* @param baseName the base name of the material.
* @param density the density of the material.
* @return the material object from the database or a new material.
*/

View File

@ -3,7 +3,9 @@ package net.sf.openrocket.document;
import java.io.File;
import java.util.*;
import net.sf.openrocket.file.wavefrontobj.export.OBJExportOptions;
import net.sf.openrocket.rocketcomponent.*;
import net.sf.openrocket.startup.Preferences;
import net.sf.openrocket.util.StateChangeListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -35,6 +37,7 @@ import net.sf.openrocket.util.ArrayList;
*/
public class OpenRocketDocument implements ComponentChangeListener, StateChangeListener {
private static final Logger log = LoggerFactory.getLogger(OpenRocketDocument.class);
private static final Preferences prefs = Application.getPreferences();
private final List<String> file_extensions = Arrays.asList("ork", "ork.gz", "rkt", "rkt.gz"); // Possible extensions of an OpenRocket document
/**
* The minimum number of undo levels that are stored.
@ -91,7 +94,8 @@ public class OpenRocketDocument implements ComponentChangeListener, StateChangeL
private int savedID = -1;
private final StorageOptions storageOptions = new StorageOptions();
private final OBJExportOptions objOptions;
private final DecalRegistry decalRegistry = new DecalRegistry();
private final List<DocumentChangeListener> listeners = new ArrayList<DocumentChangeListener>();
@ -103,6 +107,7 @@ public class OpenRocketDocument implements ComponentChangeListener, StateChangeL
*/
OpenRocketDocument(Rocket rocket) {
this.rocket = rocket;
this.objOptions = prefs.loadOBJExportOptions(rocket);
rocket.enableEvents();
init();
}
@ -239,15 +244,19 @@ public class OpenRocketDocument implements ComponentChangeListener, StateChangeL
else
this.savedID = rocket.getModID() + modID;
}
/**
* Retrieve the default storage options for this document.
*
*
* @return the storage options.
*/
public StorageOptions getDefaultStorageOptions() {
return storageOptions;
}
public OBJExportOptions getDefaultOBJOptions() {
return objOptions;
}
/**
@ -383,12 +392,7 @@ public class OpenRocketDocument implements ComponentChangeListener, StateChangeL
* @param simulation the simulation to be added
*/
public void addSimulation(Simulation simulation) {
simulations.add(simulation);
FlightConfigurationId simId = simulation.getId();
if( !rocket.containsFlightConfigurationID( simId )){
rocket.createFlightConfiguration(simId);
}
fireDocumentChangeEvent(new SimulationChangeEvent(simulation));
addSimulation(simulation, simulations.size());
}
/**
@ -399,6 +403,10 @@ public class OpenRocketDocument implements ComponentChangeListener, StateChangeL
*/
public void addSimulation(Simulation simulation, int n) {
simulations.add(n, simulation);
FlightConfigurationId simId = simulation.getId();
if( !rocket.containsFlightConfigurationID( simId )){
rocket.createFlightConfiguration(simId);
}
fireDocumentChangeEvent(new SimulationChangeEvent(simulation));
}

View File

@ -10,7 +10,7 @@ import org.slf4j.LoggerFactory;
import net.sf.openrocket.aerodynamics.AerodynamicCalculator;
import net.sf.openrocket.aerodynamics.BarrowmanCalculator;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.logging.WarningSet;
import net.sf.openrocket.formatting.RocketDescriptor;
import net.sf.openrocket.masscalc.MassCalculator;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
@ -146,40 +146,22 @@ public class Simulation implements ChangeSource, Cloneable {
if (options == null)
throw new IllegalArgumentException("options cannot be null");
this.document = document;
this.rocket = rocket;
if (status == Status.UPTODATE) {
this.status = Status.LOADED;
} else if (data == null) {
this.status = Status.NOT_SIMULATED;
} else {
this.status = status;
}
this.name = name;
this.status = status;
this.simulatedConditions = options.clone();
this.simulatedData = data;
this.document = document;
addChangeListener(this.document);
this.options = options;
this.options.addChangeListener(new ConditionListener());
final FlightConfiguration config = rocket.getSelectedConfiguration();
this.setFlightConfigurationId(config.getFlightConfigurationID());
options.addChangeListener(new ConditionListener());
addChangeListener(document);
if (extensions != null) {
this.simulationExtensions.addAll(extensions);
}
if (data != null && this.status != Status.NOT_SIMULATED) {
simulatedData = data;
if (this.status == Status.LOADED) {
simulatedConditions = options.clone();
simulatedConfigurationID = config.getModID();
}
}
this.simulatedConfigurationID = config.getModID();
this.simulationExtensions.addAll(extensions);
}
public FlightConfiguration getActiveConfiguration() {
@ -225,7 +207,14 @@ public class Simulation implements ChangeSource, Cloneable {
this.configId = fcid;
fireChangeEvent();
}
/**
* Applies the simulation options to the simulation.
* @param options the simulation options to apply.
*/
public void copySimulationOptionsFrom(SimulationOptions options) {
this.options.copyConditionsFrom(options);
}
// /**
// * Return a newly created Configuration for this simulation. The configuration
@ -279,6 +268,18 @@ public class Simulation implements ChangeSource, Cloneable {
mutex.verify();
return simulationExtensions;
}
/**
* Applies the simulation extensions to the simulation.
* @param extensions the simulation extensions to apply.
*/
public void copyExtensionsFrom(List<SimulationExtension> extensions) {
if (extensions == null) {
return;
}
this.simulationExtensions.clear();
this.simulationExtensions.addAll(extensions);
}
/**
@ -360,6 +361,7 @@ public class Simulation implements ChangeSource, Cloneable {
*/
public void syncModID() {
this.simulatedConfigurationID = getActiveConfiguration().getModID();
fireChangeEvent();
}
@ -477,7 +479,7 @@ public class Simulation implements ChangeSource, Cloneable {
/**
* Return true if this simulation contains plottable flight data.
*
* @return
* @return true if this simulation contains plottable flight data.
*/
public boolean hasSimulationData() {
FlightData data = getSimulatedData();
@ -489,6 +491,15 @@ public class Simulation implements ChangeSource, Cloneable {
}
return true;
}
/**
* Return true if this simulation contains summary flight data.
* @return true if this simulation contains summary flight data.
*/
public boolean hasSummaryData() {
FlightData data = getSimulatedData();
return data != null;
}
/**
* Returns a copy of this simulation suitable for cut/copy/paste operations.
@ -524,6 +535,67 @@ public class Simulation implements ChangeSource, Cloneable {
mutex.unlock("copy");
}
}
public Simulation clone() {
mutex.lock("clone");
try {
Simulation clone = (Simulation) super.clone();
clone.mutex = SafetyMutex.newInstance();
clone.name = this.name;
clone.configId = this.configId;
clone.simulatedConfigurationDescription = this.simulatedConfigurationDescription;
clone.simulatedConfigurationID = this.simulatedConfigurationID;
clone.options = this.options.clone();
clone.listeners = new ArrayList<>();
if (this.simulatedConditions != null) {
clone.simulatedConditions = this.simulatedConditions.clone();
} else {
clone.simulatedConditions = null;
}
clone.simulationExtensions = new ArrayList<>();
for (SimulationExtension c : this.simulationExtensions) {
clone.simulationExtensions.add(c.clone());
}
clone.status = this.status;
clone.simulatedData = this.simulatedData != null ? this.simulatedData.clone() : this.simulatedData;
clone.simulationStepperClass = this.simulationStepperClass;
clone.aerodynamicCalculatorClass = this.aerodynamicCalculatorClass;
return clone;
} catch (CloneNotSupportedException e) {
throw new BugException("Clone not supported, BUG", e);
} finally {
mutex.unlock("clone");
}
}
/**
* Load the data from the specified simulation into this simulation.
* @param simulation the simulation to load from.
*/
public void loadFrom(Simulation simulation) {
mutex.lock("loadFrom");
try {
this.name = simulation.name;
this.configId = simulation.configId;
this.simulatedConfigurationDescription = simulation.simulatedConfigurationDescription;
this.simulatedConfigurationID = simulation.simulatedConfigurationID;
this.options.copyConditionsFrom(simulation.options);
if (simulation.simulatedConditions == null) {
this.simulatedConditions = null;
} else {
this.simulatedConditions.copyConditionsFrom(simulation.simulatedConditions);
}
copyExtensionsFrom(simulation.getSimulationExtensions());
this.status = simulation.status;
this.simulatedData = simulation.simulatedData;
this.simulationStepperClass = simulation.simulationStepperClass;
this.aerodynamicCalculatorClass = simulation.aerodynamicCalculatorClass;
} finally {
mutex.unlock("loadFrom");
}
}
/**
@ -543,7 +615,7 @@ public class Simulation implements ChangeSource, Cloneable {
final Simulation newSim = new Simulation(this.document, newRocket);
newSim.name = this.name;
newSim.configId = this.configId;
newSim.options.copyFrom(this.options);
newSim.options.copyConditionsFrom(this.options);
newSim.simulatedConfigurationDescription = this.simulatedConfigurationDescription;
for (SimulationExtension c : this.simulationExtensions) {
newSim.simulationExtensions.add(c.clone());
@ -586,15 +658,9 @@ public class Simulation implements ChangeSource, Cloneable {
private class ConditionListener implements StateChangeListener {
private Status oldStatus = null;
@Override
public void stateChanged(EventObject e) {
if (getStatus() != oldStatus) {
oldStatus = getStatus();
fireChangeEvent();
}
fireChangeEvent();
}
}

Some files were not shown because too many files have changed in this diff Show More