Merge pull request #2401 from openrocket/unstable
Merge unstable in master
70
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
Normal 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
|
||||
38
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -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.
|
||||
4
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -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
|
After Width: | Height: | Size: 1.1 MiB |
4
.github/workflows/build.yml
vendored
@ -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
@ -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
@ -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
@ -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>
|
||||
|
||||
19
.idea/runConfigurations/All_tests.xml
generated
@ -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>
|
||||
2
.idea/runConfigurations/Openrocket_UI_Jar.xml
generated
@ -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" />
|
||||
|
||||
@ -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).
|
||||
|
||||
|
||||
@ -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
@ -1,64 +1,76 @@
|
||||
OpenRocket
|
||||
==========
|
||||

|
||||
[](https://www.gnu.org/licenses/gpl-3.0)
|
||||
|
||||

|
||||
[](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.
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
[](https://www.gnu.org/licenses/gpl-3.0)
|
||||

|
||||
[](https://GitHub.com/openrocket/openrocket/releases/)
|
||||
[](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:
|
||||

|
||||
|
||||
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:
|
||||

|
||||
|
||||
3. **Plot & Analyze** your simulation results for precision and improvements:
|
||||

|
||||
|
||||
## 🌟 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).
|
||||

|
||||
|
||||
**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! ⭐
|
||||
[](https://star-history.com/#openrocket/openrocket&Date)
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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"/>
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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 -->
|
||||
|
||||
BIN
core/lib/obj-0.4.0.jar
Normal 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:
|
||||
|
||||
@ -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}
|
||||
|
||||
21686
core/resources/datafiles/thrustcurves/RASAero/RASAero_Motors.eng
Normal file
2
core/resources/datafiles/thrustcurves/RASAero/README.txt
Normal file
@ -0,0 +1,2 @@
|
||||
This directory contains thrust curves used in RASAero.
|
||||
Last updated: 2018-07-31
|
||||
@ -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>  --> 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
|
||||
|
||||
|
||||
@ -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 = أغلق التصميم
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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.
|
||||
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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:
|
||||
|
||||
BIN
core/resources/pix/componenticons/altimeter_dark-small.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
core/resources/pix/componenticons/battery_dark-small.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
BIN
core/resources/pix/componenticons/ellipticalfin_dark-large.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
core/resources/pix/componenticons/ellipticalfin_dark-small.png
Normal file
|
After Width: | Height: | Size: 419 B |
BIN
core/resources/pix/componenticons/flight-comp_dark-small.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
core/resources/pix/componenticons/freeformfin_dark-large.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
core/resources/pix/componenticons/freeformfin_dark-small.png
Normal file
|
After Width: | Height: | Size: 464 B |
BIN
core/resources/pix/componenticons/launchlug_dark-large.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
core/resources/pix/componenticons/launchlug_dark-small.png
Normal file
|
After Width: | Height: | Size: 284 B |
BIN
core/resources/pix/componenticons/mass_dark-large.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
core/resources/pix/componenticons/mass_dark-small.png
Normal file
|
After Width: | Height: | Size: 446 B |
BIN
core/resources/pix/componenticons/parachute_dark-large.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
core/resources/pix/componenticons/parachute_dark-small.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 182 B After Width: | Height: | Size: 2.9 KiB |
BIN
core/resources/pix/componenticons/pods_dark-large.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
core/resources/pix/componenticons/pods_dark-small.png
Normal file
|
After Width: | Height: | Size: 244 B |
|
After Width: | Height: | Size: 1.8 KiB |
BIN
core/resources/pix/componenticons/shockcord_dark-large.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
core/resources/pix/componenticons/shockcord_dark-small.png
Normal file
|
After Width: | Height: | Size: 768 B |
BIN
core/resources/pix/componenticons/streamer_dark-large.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
core/resources/pix/componenticons/streamer_dark-small.png
Normal file
|
After Width: | Height: | Size: 628 B |
BIN
core/resources/pix/componenticons/tracker_dark-small.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.7 KiB |
BIN
core/resources/pix/eventicons/event-exception.png
Normal file
|
After Width: | Height: | Size: 700 B |
BIN
core/resources/pix/icons/cd-override-subcomponent_dark.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
core/resources/pix/icons/cd-override-subcomponent_light.png
Normal file
|
After Width: | Height: | Size: 405 B |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 790 B After Width: | Height: | Size: 790 B |
BIN
core/resources/pix/icons/cg-override-subcomponent_dark.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
core/resources/pix/icons/cg-override-subcomponent_light.png
Normal file
|
After Width: | Height: | Size: 306 B |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 345 B After Width: | Height: | Size: 345 B |
BIN
core/resources/pix/icons/mass-override-subcomponent_dark.png
Executable file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
core/resources/pix/icons/mass-override-subcomponent_light.png
Executable file
|
After Width: | Height: | Size: 326 B |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 740 B After Width: | Height: | Size: 740 B |
BIN
core/resources/pix/icons/sim_table_export.png
Normal file
|
After Width: | Height: | Size: 723 B |
BIN
core/resources/pix/icons/wiki.png
Normal file
|
After Width: | Height: | Size: 622 B |
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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));
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ public class Appearance {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return colr of the appearance
|
||||
* @return color of the appearance
|
||||
*/
|
||||
public Color getPaint() {
|
||||
return paint;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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.
|
||||
*/
|
||||
|
||||
@ -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));
|
||||
}
|
||||
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||