<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.openrocket.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Soupwizard</id>
	<title>OpenRocket wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.openrocket.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Soupwizard"/>
	<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/Special:Contributions/Soupwizard"/>
	<updated>2026-04-09T04:00:40Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=7415</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=7415"/>
		<updated>2013-06-09T23:22:40Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== OpenRocket Component (.orc) XML File Format ==&lt;br /&gt;
&lt;br /&gt;
XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
The functionality needed to support the above use case can be broken down into the following:&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
&lt;br /&gt;
==== OpenRocket Component (ORC) Format ====&lt;br /&gt;
&lt;br /&gt;
An open and extensible standard for specifying all relevant details about rocket components.  The obvious choice is an XML format. OpenRocket will need to be able to read and write this format.  &lt;br /&gt;
&lt;br /&gt;
The format could also allow non-structural components such as rocket motors, wadding or nomex sheets for recovery device protection, etc - any item that is attached to a rocket.&lt;br /&gt;
&lt;br /&gt;
The initial specification of the XML fields and structure can be generated by looking at the ORK rocket design format for what it stores for parts data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Should the component db extension be tied to OpenRocket (ORC)?  Ideally the format would be adopted by other software as well... [[User:Plaa|Plaa]] 19:24, 8 October 2011 (UTC)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Import and Export Tools for the OpenRocket Component Format ====&lt;br /&gt;
&lt;br /&gt;
Component data will somehow have to converted into ORC XML files, either by the manufacturers themselves or hobby volunteers.  It is unreasonable to expect that manufacturer&#039;s staff or hobbyists will have the expertise and time to hand-code component XML files.  It is more likely that intermediate spreadsheet files will be created with component data.  Therefore, we will need a utility to convert both ways between the ORC XML format and standard comma-separated (CSV) value spreadsheet files.&lt;br /&gt;
&lt;br /&gt;
The import/export utility could be built into the OpenRocket software itself, or could be a separate program.&lt;br /&gt;
&lt;br /&gt;
==== Modifications to OpenRocket Client ====&lt;br /&gt;
&lt;br /&gt;
Changes needed to the OpenRocket application to make use of the component functionality:&lt;br /&gt;
&lt;br /&gt;
* OpenRocket must support reading and writing of ORC XML files.&lt;br /&gt;
* Store all component data outside the program code (ie, in ORC XML files).&lt;br /&gt;
* Don&#039;t allow user to modify or overwrite standard OpenRocket supported part, instead allow user to copy, modify, and store new customized parts.&lt;br /&gt;
* When user chooses to add a part to a design, allow user to pick one from the component library, or to create a new part using the existing parts specification UI.&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
&lt;br /&gt;
=== Online Library of OpenRocket Components ===&lt;br /&gt;
&lt;br /&gt;
A useful feature for OpenRocket users would be an online library of OpenRocket component files, a canonical location for the latest version of component files.  This would allow the OpenRocket software to obtain the latest component files via the internet, and provide both a web UI for people to view the library, and a web api to allow software to update or retrieve component info.&lt;br /&gt;
&lt;br /&gt;
In addition to commercial rocket components, the library could store non-commercial components, such as combinations of components that form a larger useful piece.  For example, an ejection baffle can be created from 3 smaller components: a tube coupler and 2 thin bulkheads with holes drilled in the in various patterns.&lt;br /&gt;
&lt;br /&gt;
Over time, the rocketry community could build an open library of components and ideas to use in constructing rockets, and indeed entire rocket designs.&lt;br /&gt;
&lt;br /&gt;
For rocket motors, we could obtain curated motor data from thrustcurve.org via their internet API.  Would we want to use their data directly (each OpenRocket user&#039;s instance reads from thrustcurve.org), or would we pull data and store in the OpenRocket library?  (or give the option to do either?).  Having the OpenRocket program communicate directly with thrustcurve.org (or for that matter, any data source (estes, etc)) would put additional, possibly unwanted, load on their servers.  Also, for OpenRocket users who do not have internet access (or sporadic access), having OpenRocket retrieve all it&#039;s component data from the library in ORC format allows those disconnected users to manually update their component files by putting a updated snapshot of the library (via usb stick, or infrequent download) on their machine.&lt;br /&gt;
&lt;br /&gt;
Potential messiness: someone will have to maintain the library.  Maybe divide the library between official OpenRocket supported components (data from manufacturers, approved submitters and/or rocketry clubs, etc), and a general open-upload section.&lt;br /&gt;
&lt;br /&gt;
==== Modifications to OpenRocket Client ====&lt;br /&gt;
&lt;br /&gt;
* Allow updating of component files from the OpenRocket component library:&lt;br /&gt;
** From an online connection to the library web api&lt;br /&gt;
** From a snapshot set of updated ORC files, for users who do not have internet access (for example, out at a launch site).&lt;br /&gt;
* Allow creation and uploading of custom components&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=7414</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=7414"/>
		<updated>2013-06-09T23:22:22Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== OpenRocket Component (.orc) XML File Format&lt;br /&gt;
&lt;br /&gt;
XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
The functionality needed to support the above use case can be broken down into the following:&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
&lt;br /&gt;
==== OpenRocket Component (ORC) Format ====&lt;br /&gt;
&lt;br /&gt;
An open and extensible standard for specifying all relevant details about rocket components.  The obvious choice is an XML format. OpenRocket will need to be able to read and write this format.  &lt;br /&gt;
&lt;br /&gt;
The format could also allow non-structural components such as rocket motors, wadding or nomex sheets for recovery device protection, etc - any item that is attached to a rocket.&lt;br /&gt;
&lt;br /&gt;
The initial specification of the XML fields and structure can be generated by looking at the ORK rocket design format for what it stores for parts data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Should the component db extension be tied to OpenRocket (ORC)?  Ideally the format would be adopted by other software as well... [[User:Plaa|Plaa]] 19:24, 8 October 2011 (UTC)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Import and Export Tools for the OpenRocket Component Format ====&lt;br /&gt;
&lt;br /&gt;
Component data will somehow have to converted into ORC XML files, either by the manufacturers themselves or hobby volunteers.  It is unreasonable to expect that manufacturer&#039;s staff or hobbyists will have the expertise and time to hand-code component XML files.  It is more likely that intermediate spreadsheet files will be created with component data.  Therefore, we will need a utility to convert both ways between the ORC XML format and standard comma-separated (CSV) value spreadsheet files.&lt;br /&gt;
&lt;br /&gt;
The import/export utility could be built into the OpenRocket software itself, or could be a separate program.&lt;br /&gt;
&lt;br /&gt;
==== Modifications to OpenRocket Client ====&lt;br /&gt;
&lt;br /&gt;
Changes needed to the OpenRocket application to make use of the component functionality:&lt;br /&gt;
&lt;br /&gt;
* OpenRocket must support reading and writing of ORC XML files.&lt;br /&gt;
* Store all component data outside the program code (ie, in ORC XML files).&lt;br /&gt;
* Don&#039;t allow user to modify or overwrite standard OpenRocket supported part, instead allow user to copy, modify, and store new customized parts.&lt;br /&gt;
* When user chooses to add a part to a design, allow user to pick one from the component library, or to create a new part using the existing parts specification UI.&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
&lt;br /&gt;
=== Online Library of OpenRocket Components ===&lt;br /&gt;
&lt;br /&gt;
A useful feature for OpenRocket users would be an online library of OpenRocket component files, a canonical location for the latest version of component files.  This would allow the OpenRocket software to obtain the latest component files via the internet, and provide both a web UI for people to view the library, and a web api to allow software to update or retrieve component info.&lt;br /&gt;
&lt;br /&gt;
In addition to commercial rocket components, the library could store non-commercial components, such as combinations of components that form a larger useful piece.  For example, an ejection baffle can be created from 3 smaller components: a tube coupler and 2 thin bulkheads with holes drilled in the in various patterns.&lt;br /&gt;
&lt;br /&gt;
Over time, the rocketry community could build an open library of components and ideas to use in constructing rockets, and indeed entire rocket designs.&lt;br /&gt;
&lt;br /&gt;
For rocket motors, we could obtain curated motor data from thrustcurve.org via their internet API.  Would we want to use their data directly (each OpenRocket user&#039;s instance reads from thrustcurve.org), or would we pull data and store in the OpenRocket library?  (or give the option to do either?).  Having the OpenRocket program communicate directly with thrustcurve.org (or for that matter, any data source (estes, etc)) would put additional, possibly unwanted, load on their servers.  Also, for OpenRocket users who do not have internet access (or sporadic access), having OpenRocket retrieve all it&#039;s component data from the library in ORC format allows those disconnected users to manually update their component files by putting a updated snapshot of the library (via usb stick, or infrequent download) on their machine.&lt;br /&gt;
&lt;br /&gt;
Potential messiness: someone will have to maintain the library.  Maybe divide the library between official OpenRocket supported components (data from manufacturers, approved submitters and/or rocketry clubs, etc), and a general open-upload section.&lt;br /&gt;
&lt;br /&gt;
==== Modifications to OpenRocket Client ====&lt;br /&gt;
&lt;br /&gt;
* Allow updating of component files from the OpenRocket component library:&lt;br /&gt;
** From an online connection to the library web api&lt;br /&gt;
** From a snapshot set of updated ORC files, for users who do not have internet access (for example, out at a launch site).&lt;br /&gt;
* Allow creation and uploading of custom components&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_database_XML_format&amp;diff=7412</id>
		<title>Component database XML format</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_database_XML_format&amp;diff=7412"/>
		<updated>2013-06-09T08:53:37Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Design of an XML format for component database.  &lt;br /&gt;
&lt;br /&gt;
A serialized database of components is created by reading one or more XML files that contain components. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;OpenRocketComponent&amp;gt; - base container element, surrounds everything&lt;br /&gt;
&lt;br /&gt;
(Manufacturers is not implemented in version 0.1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Manufacturers&amp;gt; - list of manufacturers used in this database file&lt;br /&gt;
: &amp;lt;Manufacturer id=&amp;quot;mfgid&amp;quot;&amp;gt; - definition of a single manufacturer&lt;br /&gt;
::: (id must be unique within this file, does not need to be globally unique)&lt;br /&gt;
:: &amp;lt;DisplayName&amp;gt; - a short display/common name of the manufacturer&lt;br /&gt;
:: &amp;lt;FullName&amp;gt; - the full name of the manufacturer&lt;br /&gt;
:: &amp;lt;URL&amp;gt; - Manufacturer URL&lt;br /&gt;
:: &amp;lt;LogoURL&amp;gt; - Link to Manufacturer&#039;s logo, must be of size xx by yy pixels.&lt;br /&gt;
: &amp;lt;Manufacturer&amp;gt;&lt;br /&gt;
&amp;lt;Manufacturers&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Materials&amp;gt; - list of materials used in this database file&lt;br /&gt;
: &amp;lt;Material UnitsOfMeasure=&amp;quot;{text}&amp;quot;&amp;gt;&lt;br /&gt;
:: &amp;lt;Name lang=&amp;quot;&amp;quot;&amp;gt; {text} &amp;lt;/Name&amp;gt;&lt;br /&gt;
:: &amp;lt;Density&amp;gt; {float} &amp;lt;/Density&amp;gt;&lt;br /&gt;
:: &amp;lt;Type&amp;gt; {BULK | SURFACE | LINE} &amp;lt;/Type&amp;gt;&lt;br /&gt;
: &amp;lt;/Material&amp;gt;&lt;br /&gt;
&amp;lt;/Materials&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Are materials really needed?  For most components the total mass should be known, and the best way to use it is to compute the component density from the mass.  This allows the user to modify the component (e.g. shorten a body tube) and the mass changes correspondingly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Components&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt; common to all components, inside each of those elements &amp;gt;&lt;br /&gt;
:: &amp;lt;Manufacturer&amp;gt; {text} &amp;lt;/Manufacturer&amp;gt;&lt;br /&gt;
:: &amp;lt;PartNumber&amp;gt; {text} &amp;lt;/PartNumber&amp;gt;&lt;br /&gt;
:: &amp;lt;Description&amp;gt; {text} &amp;lt;/Description&amp;gt;&lt;br /&gt;
:: &amp;lt;Material Type=&amp;quot;BULK&amp;quot;&amp;gt;{text} &amp;lt;/Material&amp;gt;  [should this be validated against material types listed higher up?]&lt;br /&gt;
:: &amp;lt;Mass Unit=&amp;quot;kg&amp;quot;&amp;gt;0.035892&amp;lt;/Mass&amp;gt;&lt;br /&gt;
:: &amp;lt;Finish&amp;gt; &amp;lt;/Finish&amp;gt;&lt;br /&gt;
:: &amp;lt;CG&amp;gt; &amp;lt;/CG&amp;gt;&lt;br /&gt;
: &amp;lt; /common to all components, inside each of those elements &amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;BodyTube&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0657352&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.06604&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;WallThickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.06604&amp;lt;/WallThickness&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.36195&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;/BodyTube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;BulkHead&amp;gt;&lt;br /&gt;
:: &amp;lt;Filled&amp;gt;true&amp;lt;/Filled&amp;gt;  ?? nonfilled for baffle?  or separate item for baffles? hollow plastic bulkheads?&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.028701999999999995&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.038099999999999995&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;/BulkHead&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;CenteringRing&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0187452&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0240792&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Thickness&amp;gt;  &lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.00635&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;/CenteringRing&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;EngineBlock&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.013131799999999999&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.017983199999999998&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Thickness&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;/EngineBlock&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;LaunchLug&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0055626&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.006096&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.0508&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;/LaunchLug&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;NoseCone&amp;gt;&lt;br /&gt;
:: &amp;lt;Shape&amp;gt;ELLIPSOID&amp;lt;/Shape&amp;gt;&lt;br /&gt;
:: &amp;lt;ShapeParameter&amp;gt;1.0&amp;lt;/ShapeParameter&amp;gt; (???)&lt;br /&gt;
:: &amp;lt;Filled&amp;gt;true&amp;lt;/Filled&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.06604&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;BaseDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.06604&amp;lt;/BaseDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ShoulderDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.064922&amp;lt;/ShoulderDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ShoulderLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.0381&amp;lt;/ShoulderLength&amp;gt;&lt;br /&gt;
:: &amp;lt;ShoulderThickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/ShoulderThickness&amp;gt;&lt;br /&gt;
:: &amp;lt;EndCapped&amp;gt;true&amp;lt;/EndCapped&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.1016&amp;lt;/Length&amp;gt;&lt;br /&gt;
:: &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Thickness&amp;gt;&lt;br /&gt;
: &amp;lt;/NoseCone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;Parachute&amp;gt;&lt;br /&gt;
:: &amp;lt;Diameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.6095999999999999&amp;lt;/Diameter&amp;gt;&lt;br /&gt;
:: &amp;lt;DragCoefficient&amp;gt;0.80&amp;lt;/DragCoefficient&amp;gt;&lt;br /&gt;
:: &amp;lt;Sides&amp;gt;8&amp;lt;/Sides&amp;gt;&lt;br /&gt;
:: &amp;lt;LineCount&amp;gt;8&amp;lt;/LineCount&amp;gt;&lt;br /&gt;
:: &amp;lt;LineLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.7493&amp;lt;/LineLength&amp;gt;&lt;br /&gt;
:: &amp;lt;RadialDistance&amp;gt;1&amp;lt;/RadialDistance&amp;gt;&lt;br /&gt;
:: &amp;lt;RadialDirection&amp;gt;15&amp;lt;/RadialDirection&amp;gt;&lt;br /&gt;
: &amp;lt;/Parachute&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;ShockCord&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;cm&amp;quot;&amp;gt; &amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;/ShockCord&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;Streamer&amp;gt;&lt;br /&gt;
:: &amp;lt;DragCoefficient&amp;gt;0.80&amp;lt;/DragCoefficient&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;cm&amp;quot;&amp;gt; &amp;lt;/Length&amp;gt;&lt;br /&gt;
:: &amp;lt;Width Unit=&amp;quot;cm&#039;&amp;gt; &amp;lt;/Width&amp;gt;&lt;br /&gt;
:: &amp;lt;Area Unit=&amp;quot;cm^2&amp;quot;&amp;gt; &amp;lt;/Area&amp;gt;&lt;br /&gt;
:: &amp;lt;AspectRatio &amp;gt; &amp;lt;/AspectRatio&amp;gt;&lt;br /&gt;
:: &amp;lt;RadialDistance&amp;gt;1&amp;lt;/RadialDistance&amp;gt;&lt;br /&gt;
:: &amp;lt;RadialDirection&amp;gt;15&amp;lt;/RadialDirection&amp;gt;&lt;br /&gt;
: &amp;lt;Streamer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;TubeCoupler&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.017907&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Thickness&amp;gt;  (wall thickness???)&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.019049999999999997&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;TubeCoupler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;Transition&amp;gt;&lt;br /&gt;
:: &amp;lt;Shape&amp;gt;OGIVE&amp;lt;/Shape&amp;gt;&lt;br /&gt;
:: &amp;lt;Filled&amp;gt;true&amp;lt;/Filled&amp;gt;&lt;br /&gt;
:: &amp;lt;ForeOutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.067056&amp;lt;/ForeOutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ForeShoulderDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.064973&amp;lt;/ForeShoulderDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ForeShoulderLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.0254&amp;lt;/ForeShoulderLength&amp;gt;&lt;br /&gt;
:: &amp;lt;ForeShoulderThickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/ForeShoulderThickness&amp;gt;  &lt;br /&gt;
:: &amp;lt;AftOutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.03175&amp;lt;/AftOutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;AftShoulderDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0&amp;lt;/AftShoulderDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;AftShoulderLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.0&amp;lt;/AftShoulderLength&amp;gt;&lt;br /&gt;
:: &amp;lt;AftShoulderThickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/AftShoulderThickness&amp;gt;  &lt;br /&gt;
:: does EndCapped make sense here? or ForeCapped?&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.1524&amp;lt;/Length&amp;gt;&lt;br /&gt;
:: &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Thickness&amp;gt;  (wall thickness???)&lt;br /&gt;
: &amp;lt;/Transition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Components&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Common data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;name&amp;gt; - short name of the part (? - is this necessary, or should it just be labeled by mfg and partno)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;partno&amp;gt; - Part number / ID&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt; - longer description of the part&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;manufacturer ref=&amp;quot;mfgid&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;url&amp;gt; - URL related to the component (? - is this useful)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;diameter&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;length&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Components&amp;gt;&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_database_XML_format&amp;diff=7411</id>
		<title>Component database XML format</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_database_XML_format&amp;diff=7411"/>
		<updated>2013-06-09T08:44:53Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Design of an XML format for component database.  &lt;br /&gt;
&lt;br /&gt;
A serialized database of components is created by reading one or more XML files that contain components. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;OpenRocketComponent&amp;gt; - base container element, surrounds everything&lt;br /&gt;
&lt;br /&gt;
(Manufacturers is not implemented in version 0.1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Manufacturers&amp;gt; - list of manufacturers used in this database file&lt;br /&gt;
: &amp;lt;Manufacturer id=&amp;quot;mfgid&amp;quot;&amp;gt; - definition of a single manufacturer&lt;br /&gt;
::: (id must be unique within this file, does not need to be globally unique)&lt;br /&gt;
:: &amp;lt;DisplayName&amp;gt; - a short display/common name of the manufacturer&lt;br /&gt;
:: &amp;lt;FullName&amp;gt; - the full name of the manufacturer&lt;br /&gt;
:: &amp;lt;URL&amp;gt; - Manufacturer URL&lt;br /&gt;
:: &amp;lt;LogoURL&amp;gt; - Link to Manufacturer&#039;s logo, must be of size xx by yy pixels.&lt;br /&gt;
: &amp;lt;Manufacturer&amp;gt;&lt;br /&gt;
&amp;lt;Manufacturers&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Materials&amp;gt; - list of materials used in this database file&lt;br /&gt;
: &amp;lt;Material UnitsOfMeasure=&amp;quot;{text}&amp;quot;&amp;gt;&lt;br /&gt;
:: &amp;lt;Name lang=&amp;quot;&amp;quot;&amp;gt; {text} &amp;lt;/Name&amp;gt;&lt;br /&gt;
:: &amp;lt;Density&amp;gt; {float} &amp;lt;/Density&amp;gt;&lt;br /&gt;
:: &amp;lt;Type&amp;gt; {BULK | SURFACE | LINE} &amp;lt;/Type&amp;gt;&lt;br /&gt;
: &amp;lt;/Material&amp;gt;&lt;br /&gt;
&amp;lt;/Materials&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Are materials really needed?  For most components the total mass should be known, and the best way to use it is to compute the component density from the mass.  This allows the user to modify the component (e.g. shorten a body tube) and the mass changes correspondingly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Components&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt; common to all components, inside each of those elements &amp;gt;&lt;br /&gt;
:: &amp;lt;Manufacturer&amp;gt; {text} &amp;lt;/Manufacturer&amp;gt;&lt;br /&gt;
:: &amp;lt;PartNumber&amp;gt; {text} &amp;lt;/PartNumber&amp;gt;&lt;br /&gt;
:: &amp;lt;Description&amp;gt; {text} &amp;lt;/Description&amp;gt;&lt;br /&gt;
:: &amp;lt;Material Type=&amp;quot;BULK&amp;quot;&amp;gt;{text} &amp;lt;/Material&amp;gt;  [should this be validated against material types listed higher up?]&lt;br /&gt;
:: &amp;lt;Mass Unit=&amp;quot;kg&amp;quot;&amp;gt;0.035892&amp;lt;/Mass&amp;gt;&lt;br /&gt;
:: &amp;lt;Finish&amp;gt; &amp;lt;/Finish&amp;gt;&lt;br /&gt;
:: &amp;lt;CG&amp;gt; &amp;lt;/CG&amp;gt;&lt;br /&gt;
: &amp;lt; /common to all components, inside each of those elements &amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;BodyTube&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0657352&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.06604&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;WallThickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.06604&amp;lt;/WallThickness&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.36195&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;/BodyTube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;BulkHead&amp;gt;&lt;br /&gt;
:: &amp;lt;Filled&amp;gt;true&amp;lt;/Filled&amp;gt;  ?? nonfilled for baffle?  or separate item for baffles? hollow plastic bulkheads?&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.028701999999999995&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.038099999999999995&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;/BulkHead&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;CenteringRing&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0187452&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0240792&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Thickness&amp;gt;  &lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.00635&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;/CenteringRing&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;EngineBlock&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.013131799999999999&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.017983199999999998&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Thickness&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;/EngineBlock&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;LaunchLug&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0055626&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.006096&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.0508&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;/LaunchLug&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;NoseCone&amp;gt;&lt;br /&gt;
:: &amp;lt;Shape&amp;gt;ELLIPSOID&amp;lt;/Shape&amp;gt;&lt;br /&gt;
:: &amp;lt;ShapeParameter&amp;gt;1.0&amp;lt;/ShapeParameter&amp;gt; (???)&lt;br /&gt;
:: &amp;lt;Filled&amp;gt;true&amp;lt;/Filled&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.06604&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;BaseDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.06604&amp;lt;/BaseDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ShoulderDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.064922&amp;lt;/ShoulderDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ShoulderLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.0381&amp;lt;/ShoulderLength&amp;gt;&lt;br /&gt;
:: &amp;lt;ShoulderThickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/ShoulderThickness&amp;gt;&lt;br /&gt;
:: &amp;lt;EndCapped&amp;gt;true&amp;lt;/EndCapped&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.1016&amp;lt;/Length&amp;gt;&lt;br /&gt;
:: &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Thickness&amp;gt;&lt;br /&gt;
: &amp;lt;/NoseCone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;Parachute&amp;gt;&lt;br /&gt;
:: &amp;lt;Diameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.6095999999999999&amp;lt;/Diameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Sides&amp;gt;8&amp;lt;/Sides&amp;gt;&lt;br /&gt;
:: &amp;lt;LineCount&amp;gt;8&amp;lt;/LineCount&amp;gt;&lt;br /&gt;
:: &amp;lt;LineLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.7493&amp;lt;/LineLength&amp;gt;&lt;br /&gt;
: &amp;lt;/Parachute&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;Streamer&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;cm&amp;quot;&amp;gt; &amp;lt;/Length&amp;gt;&lt;br /&gt;
:: &amp;lt;Width Unit=&amp;quot;cm&#039;&amp;gt; &amp;lt;/Width&amp;gt;&lt;br /&gt;
:: &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;5.08E-5&amp;lt;/Thickness&amp;gt;&lt;br /&gt;
: &amp;lt;Streamer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;TubeCoupler&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.017907&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Thickness&amp;gt;  (wall thickness???)&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.019049999999999997&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;TubeCoupler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;Transition&amp;gt;&lt;br /&gt;
:: &amp;lt;Shape&amp;gt;OGIVE&amp;lt;/Shape&amp;gt;&lt;br /&gt;
:: &amp;lt;Filled&amp;gt;true&amp;lt;/Filled&amp;gt;&lt;br /&gt;
:: &amp;lt;ForeOutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.067056&amp;lt;/ForeOutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ForeShoulderDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.064973&amp;lt;/ForeShoulderDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ForeShoulderLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.0254&amp;lt;/ForeShoulderLength&amp;gt;&lt;br /&gt;
:: &amp;lt;ForeShoulderThickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/ForeShoulderThickness&amp;gt;  &lt;br /&gt;
:: &amp;lt;AftOutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.03175&amp;lt;/AftOutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;AftShoulderDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0&amp;lt;/AftShoulderDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;AftShoulderLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.0&amp;lt;/AftShoulderLength&amp;gt;&lt;br /&gt;
:: &amp;lt;AftShoulderThickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/AftShoulderThickness&amp;gt;  &lt;br /&gt;
:: does EndCapped make sense here? or ForeCapped?&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.1524&amp;lt;/Length&amp;gt;&lt;br /&gt;
:: &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Thickness&amp;gt;  (wall thickness???)&lt;br /&gt;
: &amp;lt;/Transition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Common data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;name&amp;gt; - short name of the part (? - is this necessary, or should it just be labeled by mfg and partno)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;partno&amp;gt; - Part number / ID&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt; - longer description of the part&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;manufacturer ref=&amp;quot;mfgid&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;url&amp;gt; - URL related to the component (? - is this useful)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;diameter&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;length&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Components&amp;gt;&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_database_XML_format&amp;diff=7410</id>
		<title>Component database XML format</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_database_XML_format&amp;diff=7410"/>
		<updated>2013-06-09T08:27:19Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Design of an XML format for component database.  &lt;br /&gt;
&lt;br /&gt;
A serialized database of components is created by reading one or more XML files that contain components. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;OpenRocketComponent&amp;gt; - base container element, surrounds everything&lt;br /&gt;
&lt;br /&gt;
(Manufacturers is not implemented in version 0.1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Manufacturers&amp;gt; - list of manufacturers used in this database file&lt;br /&gt;
: &amp;lt;Manufacturer id=&amp;quot;mfgid&amp;quot;&amp;gt; - definition of a single manufacturer&lt;br /&gt;
::: (id must be unique within this file, does not need to be globally unique)&lt;br /&gt;
:: &amp;lt;DisplayName&amp;gt; - a short display/common name of the manufacturer&lt;br /&gt;
:: &amp;lt;FullName&amp;gt; - the full name of the manufacturer&lt;br /&gt;
:: &amp;lt;URL&amp;gt; - Manufacturer URL&lt;br /&gt;
:: &amp;lt;LogoURL&amp;gt; - Link to Manufacturer&#039;s logo, must be of size xx by yy pixels.&lt;br /&gt;
: &amp;lt;Manufacturer&amp;gt;&lt;br /&gt;
&amp;lt;Manufacturers&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Materials&amp;gt; - list of materials used in this database file&lt;br /&gt;
: &amp;lt;Material UnitsOfMeasure=&amp;quot;{text}&amp;quot;&amp;gt;&lt;br /&gt;
:: &amp;lt;Name lang=&amp;quot;&amp;quot;&amp;gt; {text} &amp;lt;/Name&amp;gt;&lt;br /&gt;
:: &amp;lt;Density&amp;gt; {float} &amp;lt;/Density&amp;gt;&lt;br /&gt;
:: &amp;lt;Type&amp;gt; {BULK | SURFACE | LINE} &amp;lt;/Type&amp;gt;&lt;br /&gt;
: &amp;lt;/Material&amp;gt;&lt;br /&gt;
&amp;lt;/Materials&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Are materials really needed?  For most components the total mass should be known, and the best way to use it is to compute the component density from the mass.  This allows the user to modify the component (e.g. shorten a body tube) and the mass changes correspondingly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Components&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt; common to all components, inside each of those elements &amp;gt;&lt;br /&gt;
:: &amp;lt;Manufacturer&amp;gt; {text} &amp;lt;/Manufacturer&amp;gt;&lt;br /&gt;
:: &amp;lt;PartNumber&amp;gt; {text} &amp;lt;/PartNumber&amp;gt;&lt;br /&gt;
:: &amp;lt;Description&amp;gt; {text} &amp;lt;/Description&amp;gt;&lt;br /&gt;
:: &amp;lt;Material Type=&amp;quot;BULK&amp;quot;&amp;gt;{text} &amp;lt;/Material&amp;gt;  [should this be validated against material types listed higher up?]&lt;br /&gt;
:: &amp;lt;Mass Unit=&amp;quot;kg&amp;quot;&amp;gt;0.035892&amp;lt;/Mass&amp;gt;&lt;br /&gt;
: &amp;lt; /common to all components, inside each of those elements &amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;BodyTube&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0657352&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.06604&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.36195&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;/BodyTube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;EngineBlock&amp;gt;&lt;br /&gt;
: &amp;lt;/EngineBlock&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;LaunchLug&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0055626&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.006096&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.0508&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;/LaunchLug&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;NoseCone&amp;gt;&lt;br /&gt;
:: &amp;lt;Shape&amp;gt;ELLIPSOID&amp;lt;/Shape&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.06604&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ShoulderDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.064922&amp;lt;/ShoulderDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ShoulderLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.0381&amp;lt;/ShoulderLength&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.1016&amp;lt;/Length&amp;gt;&lt;br /&gt;
:: &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Thickness&amp;gt;&lt;br /&gt;
: &amp;lt;/NoseCone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;Parachute&amp;gt;&lt;br /&gt;
:: &amp;lt;Diameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.6095999999999999&amp;lt;/Diameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Sides&amp;gt;8&amp;lt;/Sides&amp;gt;&lt;br /&gt;
:: &amp;lt;LineCount&amp;gt;8&amp;lt;/LineCount&amp;gt;&lt;br /&gt;
:: &amp;lt;LineLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.7493&amp;lt;/LineLength&amp;gt;&lt;br /&gt;
: &amp;lt;/Parachute&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;Streamer&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;cm&amp;quot;&amp;gt; &amp;lt;/Length&amp;gt;&lt;br /&gt;
:: &amp;lt;Width Unit=&amp;quot;cm&#039;&amp;gt; &amp;lt;/Width&amp;gt;&lt;br /&gt;
: &amp;lt;Streamer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;TubeCoupler&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.017907&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.019049999999999997&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;TubeCoupler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;Transition&amp;gt;&lt;br /&gt;
:: &amp;lt;Shape&amp;gt;OGIVE&amp;lt;/Shape&amp;gt;&lt;br /&gt;
:: &amp;lt;ForeOutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.067056&amp;lt;/ForeOutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ForeShoulderDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.064973&amp;lt;/ForeShoulderDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ForeShoulderLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.0254&amp;lt;/ForeShoulderLength&amp;gt;&lt;br /&gt;
:: &amp;lt;AftOutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.03175&amp;lt;/AftOutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;AftShoulderDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0&amp;lt;/AftShoulderDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;AftShoulderLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.0&amp;lt;/AftShoulderLength&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.1524&amp;lt;/Length&amp;gt;&lt;br /&gt;
:: &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Thickness&amp;gt;&lt;br /&gt;
: &amp;lt;/Transition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Common data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;name&amp;gt; - short name of the part (? - is this necessary, or should it just be labeled by mfg and partno)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;partno&amp;gt; - Part number / ID&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt; - longer description of the part&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;manufacturer ref=&amp;quot;mfgid&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;url&amp;gt; - URL related to the component (? - is this useful)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;diameter&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;length&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Components&amp;gt;&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_database_XML_format&amp;diff=7409</id>
		<title>Component database XML format</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_database_XML_format&amp;diff=7409"/>
		<updated>2013-06-09T08:23:25Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Design of an XML format for component database.  &lt;br /&gt;
&lt;br /&gt;
A serialized database of components is created by reading one or more XML files that contain components. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;OpenRocketComponent&amp;gt; - base container element, surrounds everything&lt;br /&gt;
&lt;br /&gt;
(Manufacturers is not implemented in version 0.1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Manufacturers&amp;gt; - list of manufacturers used in this database file&lt;br /&gt;
: &amp;lt;Manufacturer id=&amp;quot;mfgid&amp;quot;&amp;gt; - definition of a single manufacturer&lt;br /&gt;
::: (id must be unique within this file, does not need to be globally unique)&lt;br /&gt;
:: &amp;lt;DisplayName&amp;gt; - a short display/common name of the manufacturer&lt;br /&gt;
:: &amp;lt;FullName&amp;gt; - the full name of the manufacturer&lt;br /&gt;
:: &amp;lt;URL&amp;gt; - Manufacturer URL&lt;br /&gt;
:: &amp;lt;LogoURL&amp;gt; - Link to Manufacturer&#039;s logo, must be of size xx by yy pixels.&lt;br /&gt;
: &amp;lt;Manufacturer&amp;gt;&lt;br /&gt;
&amp;lt;Manufacturers&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Materials&amp;gt; - list of materials used in this database file&lt;br /&gt;
: &amp;lt;Material UnitsOfMeasure=&amp;quot;{text}&amp;quot;&amp;gt;&lt;br /&gt;
:: &amp;lt;Name lang=&amp;quot;&amp;quot;&amp;gt; {text} &amp;lt;/Name&amp;gt;&lt;br /&gt;
:: &amp;lt;Density&amp;gt; {float} &amp;lt;/Density&amp;gt;&lt;br /&gt;
:: &amp;lt;Type&amp;gt; {BULK | SURFACE | LINE} &amp;lt;/Type&amp;gt;&lt;br /&gt;
: &amp;lt;/Material&amp;gt;&lt;br /&gt;
&amp;lt;/Materials&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Are materials really needed?  For most components the total mass should be known, and the best way to use it is to compute the component density from the mass.  This allows the user to modify the component (e.g. shorten a body tube) and the mass changes correspondingly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Components&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt; common to all components, inside each of those elements &amp;gt;&lt;br /&gt;
:: &amp;lt;Manufacturer&amp;gt; {text} &amp;lt;/Manufacturer&amp;gt;&lt;br /&gt;
:: &amp;lt;PartNumber&amp;gt; {text} &amp;lt;/PartNumber&amp;gt;&lt;br /&gt;
:: &amp;lt;Description&amp;gt; {text} &amp;lt;/Description&amp;gt;&lt;br /&gt;
:: &amp;lt;Material Type=&amp;quot;BULK&amp;quot;&amp;gt;{text} &amp;lt;/Material&amp;gt;  [should this be validated against material types listed higher up?]&lt;br /&gt;
:: &amp;lt;Mass Unit=&amp;quot;kg&amp;quot;&amp;gt;0.035892&amp;lt;/Mass&amp;gt;&lt;br /&gt;
: &amp;lt; /common to all components, inside each of those elements &amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;BodyTube&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0657352&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.06604&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.36195&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;/BodyTube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;EngineBlock&amp;gt;&lt;br /&gt;
: &amp;lt;/EngineBlock&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;LaunchLug&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0055626&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.006096&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.0508&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;/LaunchLug&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;NoseCone&amp;gt;&lt;br /&gt;
:: &amp;lt;Shape&amp;gt;ELLIPSOID&amp;lt;/Shape&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.06604&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ShoulderDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.064922&amp;lt;/ShoulderDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ShoulderLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.0381&amp;lt;/ShoulderLength&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.1016&amp;lt;/Length&amp;gt;&lt;br /&gt;
:: &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Thickness&amp;gt;&lt;br /&gt;
: &amp;lt;/NoseCone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parachute&lt;br /&gt;
Streamer&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;TubeCoupler&amp;gt;&lt;br /&gt;
:: &amp;lt;InsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0&amp;lt;/InsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.017907&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.019049999999999997&amp;lt;/Length&amp;gt;&lt;br /&gt;
: &amp;lt;TubeCoupler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;Transition&amp;gt;&lt;br /&gt;
:: &amp;lt;Shape&amp;gt;OGIVE&amp;lt;/Shape&amp;gt;&lt;br /&gt;
:: &amp;lt;ForeOutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.067056&amp;lt;/ForeOutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ForeShoulderDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.064973&amp;lt;/ForeShoulderDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;ForeShoulderLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.0254&amp;lt;/ForeShoulderLength&amp;gt;&lt;br /&gt;
:: &amp;lt;AftOutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.03175&amp;lt;/AftOutsideDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;AftShoulderDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.0&amp;lt;/AftShoulderDiameter&amp;gt;&lt;br /&gt;
:: &amp;lt;AftShoulderLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.0&amp;lt;/AftShoulderLength&amp;gt;&lt;br /&gt;
:: &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.1524&amp;lt;/Length&amp;gt;&lt;br /&gt;
:: &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Thickness&amp;gt;&lt;br /&gt;
: &amp;lt;/Transition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Common data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;name&amp;gt; - short name of the part (? - is this necessary, or should it just be labeled by mfg and partno)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;partno&amp;gt; - Part number / ID&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt; - longer description of the part&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;manufacturer ref=&amp;quot;mfgid&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;url&amp;gt; - URL related to the component (? - is this useful)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;diameter&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;length&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Components&amp;gt;&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_database_XML_format&amp;diff=7408</id>
		<title>Component database XML format</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_database_XML_format&amp;diff=7408"/>
		<updated>2013-06-09T08:15:40Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Design of an XML format for component database.  &lt;br /&gt;
&lt;br /&gt;
A serialized database of components is created by reading one or more XML files that contain components. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;OpenRocketComponent&amp;gt; - base container element, surrounds everything&lt;br /&gt;
&lt;br /&gt;
(Manufacturers is not implemented in version 0.1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Manufacturers&amp;gt; - list of manufacturers used in this database file&lt;br /&gt;
: &amp;lt;Manufacturer id=&amp;quot;mfgid&amp;quot;&amp;gt; - definition of a single manufacturer&lt;br /&gt;
::: (id must be unique within this file, does not need to be globally unique)&lt;br /&gt;
:: &amp;lt;DisplayName&amp;gt; - a short display/common name of the manufacturer&lt;br /&gt;
:: &amp;lt;FullName&amp;gt; - the full name of the manufacturer&lt;br /&gt;
:: &amp;lt;URL&amp;gt; - Manufacturer URL&lt;br /&gt;
:: &amp;lt;LogoURL&amp;gt; - Link to Manufacturer&#039;s logo, must be of size xx by yy pixels.&lt;br /&gt;
: &amp;lt;Manufacturer&amp;gt;&lt;br /&gt;
&amp;lt;Manufacturers&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Materials&amp;gt; - list of materials used in this database file&lt;br /&gt;
: &amp;lt;Material UnitsOfMeasure=&amp;quot;{text}&amp;quot;&amp;gt;&lt;br /&gt;
:: &amp;lt;Name lang=&amp;quot;&amp;quot;&amp;gt; {text} &amp;lt;/Name&amp;gt;&lt;br /&gt;
:: &amp;lt;Density&amp;gt; {float} &amp;lt;/Density&amp;gt;&lt;br /&gt;
:: &amp;lt;Type&amp;gt; {BULK | SURFACE | LINE} &amp;lt;/Type&amp;gt;&lt;br /&gt;
: &amp;lt;/Material&amp;gt;&lt;br /&gt;
&amp;lt;/Materials&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Are materials really needed?  For most components the total mass should be known, and the best way to use it is to compute the component density from the mass.  This allows the user to modify the component (e.g. shorten a body tube) and the mass changes correspondingly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Components&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt; common to all components, inside each of those elements &amp;gt;&lt;br /&gt;
:: &amp;lt;Manufacturer&amp;gt;Estes&amp;lt;/Manufacturer&amp;gt;&lt;br /&gt;
:: &amp;lt;PartNumber&amp;gt;PNC-80FB&amp;lt;/PartNumber&amp;gt;&lt;br /&gt;
:: &amp;lt;Description&amp;gt;Estes PNC-80 Fat Boy profile cone&amp;lt;/Description&amp;gt;&lt;br /&gt;
:: &amp;lt;Material Type=&amp;quot;BULK&amp;quot;&amp;gt;Polystyrene PS&amp;lt;/Material&amp;gt;&lt;br /&gt;
:: &amp;lt;Mass Unit=&amp;quot;kg&amp;quot;&amp;gt;0.035892&amp;lt;/Mass&amp;gt;&lt;br /&gt;
: &amp;lt; /common to all components, inside each of those elements &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BodyTube&amp;gt;&lt;br /&gt;
EngineBlock&lt;br /&gt;
LaunchLug&lt;br /&gt;
&lt;br /&gt;
&amp;lt;NoseCone&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;Shape&amp;gt;ELLIPSOID&amp;lt;/Shape&amp;gt;&lt;br /&gt;
            &amp;lt;OutsideDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.06604&amp;lt;/OutsideDiameter&amp;gt;&lt;br /&gt;
            &amp;lt;ShoulderDiameter Unit=&amp;quot;m&amp;quot;&amp;gt;0.064922&amp;lt;/ShoulderDiameter&amp;gt;&lt;br /&gt;
            &amp;lt;ShoulderLength Unit=&amp;quot;m&amp;quot;&amp;gt;0.0381&amp;lt;/ShoulderLength&amp;gt;&lt;br /&gt;
            &amp;lt;Length Unit=&amp;quot;m&amp;quot;&amp;gt;0.1016&amp;lt;/Length&amp;gt;&lt;br /&gt;
            &amp;lt;Thickness Unit=&amp;quot;m&amp;quot;&amp;gt;0.003175&amp;lt;/Thickness&amp;gt;&lt;br /&gt;
&amp;lt;/NoseCone?&lt;br /&gt;
&lt;br /&gt;
Parachute&lt;br /&gt;
Streamer&lt;br /&gt;
TubeCoupler&lt;br /&gt;
&amp;lt;Transition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Common data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;name&amp;gt; - short name of the part (? - is this necessary, or should it just be labeled by mfg and partno)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;partno&amp;gt; - Part number / ID&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt; - longer description of the part&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;manufacturer ref=&amp;quot;mfgid&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;url&amp;gt; - URL related to the component (? - is this useful)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;diameter&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;length&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Components&amp;gt;&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Developer%27s_Guide&amp;diff=7407</id>
		<title>Developer&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Developer%27s_Guide&amp;diff=7407"/>
		<updated>2013-06-04T20:22:13Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: /* Debugging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Access}}&lt;br /&gt;
&lt;br /&gt;
This page contains information on the inner workings of OpenRocket and is meant primarily for developers interested in developing OpenRocket.&lt;br /&gt;
&lt;br /&gt;
In addition to this page, information can be found in the [http://openrocket.sourceforge.net/documentation.html Technical documentation] chapter 5.&lt;br /&gt;
&lt;br /&gt;
== Obtaining the source code ==&lt;br /&gt;
&lt;br /&gt;
OpenRocket is primarily developed using [http://www.eclipse.org/ Eclipse], and it&#039;s the recommended IDE for compatibility.  Developers are free to use other IDE&#039;s, but everything may not work out-of-the-box.&lt;br /&gt;
&lt;br /&gt;
You need to install either [http://subclipse.tigris.org/ Subclipse] or [http://www.eclipse.org/subversive/ Subversive] SVN client plugin to Eclipse.  Follow the instructions on their pages.  The two plugins are relatively similar, but the documentation below uses the terminology of Subclipse.&lt;br /&gt;
&lt;br /&gt;
After you have installed Subclipse, select File -&amp;gt; Import, select &amp;quot;Checkout Projects from SVN&amp;quot; under &amp;quot;SVN&amp;quot; and click Next.  You need to create a new repository location using the URL https://openrocket.svn.sourceforge.net/svnroot/openrocket.  Next, select the folder &amp;quot;trunk&amp;quot; (this is the base development branch) and click Finish.  After loading you should have the full source in a ready project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The source packages available on the OpenRocket web site (*.zip) are meant for building the application from source code, &#039;&#039;&#039;NOT&#039;&#039;&#039; for development purposes.  They do not contain all the project files etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For those who want to use the command-line, the OpenRocket trunk can be retrieved by simply:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ svn co https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk OpenRocket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes for Newer Eclipse Users ===&lt;br /&gt;
You can get the Galileo version of Eclipse from the [http://www.eclipse.org/downloads/ Eclipse Download Site].  You should either pull Eclipse IDE for Java Developers or Eclipse for RCP/Plug-in Developers.  I&#039;m using Eclipse IDE for Java Developers.  Neither of these is at the top of the list so be careful to pick the version.&lt;br /&gt;
&lt;br /&gt;
When you create a workspace to load the project in, be sure to go in and set the default JRE and Java compliance to 1.6.  Even if you&#039;ve already set the system default for your computer to use Java 6 and you&#039;re running the IDE with Java 6, workspaces will default to Java 5 stuff.  You need compliance at 1.6 or you&#039;ll get a lot of compile errors - particularly around use of @Override.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:CompilerComplianceLevel.png|none|200px]]&lt;br /&gt;
|  [[File:JavaBuildPath.png|none|200px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you&#039;re getting errors, look at the build path and verify that you see 1.6 in the build path as shown above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running OpenRocket from Eclipse ==&lt;br /&gt;
&lt;br /&gt;
After importing the project into Eclipse the 3rd party libraries should be automatically configured correctly.  One additional step is required in order for OpenRocket to find the build.properties file for running OpenRocket.&lt;br /&gt;
&lt;br /&gt;
# Open the class net.sf.openrocket.startup.Startup.  Running this directly fails due to missing build.properties file.&lt;br /&gt;
# Select Run As -&amp;gt; Run Configurations...&lt;br /&gt;
# On the Classpath tab click on User entries, then click Advanced... -&amp;gt; Add Folders -&amp;gt; Select the OpenRocket base directory and click OK&lt;br /&gt;
# Click Run&lt;br /&gt;
&lt;br /&gt;
This adds the base directory to the classpath, which is required for running OpenRocket.  Unfortunately Eclipse does not support adding a general data directory to the default project classpath.&lt;br /&gt;
&lt;br /&gt;
== Marking TODO&#039;s ==&lt;br /&gt;
&lt;br /&gt;
Often when writing code you know that something could be done better, but at the moment is either impossible or unreasonable.  These are commonly marked with a TODO comment.  The following convension is used to mark the importance of different TODO&#039;s:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;// TODO: CRITICAL: Some comment&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; A bug or something that is not yet implemented, and must be corrected before any release is made.  The Ant build script checks for these and prevents building if such a comment is found.&lt;br /&gt;
* &amp;lt;code&amp;gt;// TODO: HIGH: Some comment&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; An important issue that should be looked into within this or the next major release.&lt;br /&gt;
* &amp;lt;code&amp;gt;// TODO: MEDIUM: Some comment&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; Something that would make the software better, but does not represent a problem as such.&lt;br /&gt;
* &amp;lt;code&amp;gt;// TODO: LOW: Some comment&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; Something that would be nice to do better in the future&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
&lt;br /&gt;
=== LogBack ===&lt;br /&gt;
&lt;br /&gt;
As of version 13.05, OpenRocket uses [http://logback.qos.ch/index.html LogBack] for logging.&lt;br /&gt;
&lt;br /&gt;
If you want to change the default logging that OpenRocket uses, you can create or reuse a LogBack configuration file stored in openrocket/core/config. For example, you can use the logback-stdout-level-error.xml there which tells logback to log everything to stdout with logging level of Error (serious errors only).&lt;br /&gt;
&lt;br /&gt;
To enable use of a LogBack configuration file, pass the JVM the following option during startup:&lt;br /&gt;
&lt;br /&gt;
 -Dlogback.configurationFile=config/logback-stdout-level-error.xml &lt;br /&gt;
&lt;br /&gt;
See the [http://logback.qos.ch/manual/configuration.html LogBack configuration page] for more details. &lt;br /&gt;
&lt;br /&gt;
=== Probably Obsolete Debugging Info ===&lt;br /&gt;
&lt;br /&gt;
Log messages in openrocket are specified by one of six levels. You can specify which level of errors you want reported to standard out with a system property which you can add to your VM argument, e.g:&lt;br /&gt;
 &lt;br /&gt;
 -Dopenrocket.log.stdout=debug&lt;br /&gt;
&lt;br /&gt;
The error levels available are:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;ERROR&#039;&#039;&#039; - Level for indicating a bug or error condition noticed in the software or JRE. No ERROR level events _should_ occur while running the program.&lt;br /&gt;
	&lt;br /&gt;
: &#039;&#039;&#039;WARN&#039;&#039;&#039; - Level for indicating error conditions or atypical events that can occur during normal operation (errors while loading files, weird computation results etc).&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;USER&#039;&#039;&#039; - Level for logging user actions (adding and modifying components, running simulations etc).  A user action should be logged as soon as possible on this level.  The level is separate so that additional INFO messages won&#039;t purge user actions from a bounded log buffer.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;INFO&#039;&#039;&#039; - Level for indicating general level actions the software is performing and other notable events during execution (dialogs shown, simulations run etc)&lt;br /&gt;
	&lt;br /&gt;
: &#039;&#039;&#039;DEBUG&#039;&#039;&#039; - Level for indicating mid-results, outcomes of methods and other debugging information.  The data logged should be of value when analyzing error conditions and what has caused them.  Places that are called repeatedly during e.g. flight simulation should use the VBOSE level instead.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;VBOSE&#039;&#039;&#039; - Level of verbose debug logging to be used in areas which are called repeatedly, such as computational methods used in simulations.  This level is separated to allow filtering out the verbose logs generated during simulations, DnD etc. from the normal debug logs.&lt;br /&gt;
&lt;br /&gt;
In the code, the standard way to log errors is with &lt;br /&gt;
 &lt;br /&gt;
 log.verbose(&amp;quot;Error message&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
where log is defined in each class as :&lt;br /&gt;
 &lt;br /&gt;
 private static final LogHelper log = Application.getLogger();&lt;br /&gt;
&lt;br /&gt;
== Units used in OpenRocket ==&lt;br /&gt;
&lt;br /&gt;
OpenRocket always uses internally pure SI units.  For example all rocket dimensions and flight distances are in meters, all masses are in kilograms, density is in kg/m³, temperature is in Kelvin etc.  This convension is also used when storing the design in the OpenRocket format.&lt;br /&gt;
&lt;br /&gt;
The only exception to this rule is angles:&lt;br /&gt;
* Angles are represented as radians internally, but in the file format they are converted to degrees.  This is to make the file format more human-readable and to avoid rounding errors.&lt;br /&gt;
* Latitude and longitude of the launch site are represented in degrees both internally and externally.&lt;br /&gt;
&lt;br /&gt;
When displaying measures to the user, the values are converted into the preferred units of the user.  This is performed using classes in the package &amp;lt;tt&amp;gt;net.sf.openrocket.unit&amp;lt;/tt&amp;gt;.  The &amp;lt;tt&amp;gt;Unit&amp;lt;/tt&amp;gt; class represents a single unit and it includes methods for converting between that unit and SI units in addition to creating a string representation with a suitable amount of decimals.  A &amp;lt;tt&amp;gt;UnitGroup&amp;lt;/tt&amp;gt; describes a measurable quantity such as temperature and contains the units available for that quantity, such as Celcius, Fahrenheit and Kelvin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rocket design loading and saving ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(This section is based on email correspondence)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All file reading/writing is performed in the package&lt;br /&gt;
&amp;lt;tt&amp;gt;net.sf.openrocket.file&amp;lt;/tt&amp;gt; and subpackages.  To implement a new&lt;br /&gt;
document loader it is necessary to extend the class &amp;lt;tt&amp;gt;RocketLoader&amp;lt;/tt&amp;gt; and&lt;br /&gt;
implement the abstract method &amp;lt;tt&amp;gt;loadFromStream(InputStream)&amp;lt;/tt&amp;gt;.  This&lt;br /&gt;
method simply loads the document and returns an &amp;lt;tt&amp;gt;OpenRocketDocument&amp;lt;/tt&amp;gt;&lt;br /&gt;
object.&lt;br /&gt;
&lt;br /&gt;
An &amp;lt;tt&amp;gt;OpenRocketDocument&amp;lt;/tt&amp;gt; contains all the information about an opened&lt;br /&gt;
document, primarily the rocket structure and the simulations.  The&lt;br /&gt;
rocket structure is a simple tree-like structure of &amp;lt;tt&amp;gt;RocketComponents&amp;lt;/tt&amp;gt;.&lt;br /&gt;
All of the components are in the package &amp;lt;tt&amp;gt;.rocketcomponent&amp;lt;/tt&amp;gt;.  A diagram&lt;br /&gt;
of their hierarchy and a short explanation of each class is available&lt;br /&gt;
in my thesis section 5.1&lt;br /&gt;
(http://openrocket.sourceforge.net/documentation.html)&lt;br /&gt;
&lt;br /&gt;
I&#039;ve implemented a simple XML reading framework (based on SAX), which&lt;br /&gt;
simplifies reading by assuming that XML elements can contain only&lt;br /&gt;
other elements or text content, but not both.  Both the OpenRocket and&lt;br /&gt;
Rocksim format abide with this restriction.&lt;br /&gt;
&lt;br /&gt;
The framework is in the package &amp;lt;tt&amp;gt;.file.simplesax&amp;lt;/tt&amp;gt;.  The primary class&lt;br /&gt;
that will be extended is &amp;lt;tt&amp;gt;ElementHandler&amp;lt;/tt&amp;gt;, which contains three methods.&lt;br /&gt;
&amp;lt;tt&amp;gt;openElement()&amp;lt;/tt&amp;gt; is called when a new subelement is found, and it&lt;br /&gt;
returns a new &amp;lt;tt&amp;gt;ElementHandler&amp;lt;/tt&amp;gt; to handle that element (which can be the&lt;br /&gt;
object itself), or &amp;lt;tt&amp;gt;null&amp;lt;/tt&amp;gt; in order to ignore that element and all of its&lt;br /&gt;
contents (for example for unknown elements). &amp;lt;tt&amp;gt;closeElement()&amp;lt;/tt&amp;gt; is called&lt;br /&gt;
when the subelement ends, and &amp;lt;tt&amp;gt;endHandler()&amp;lt;/tt&amp;gt; is called when the element&lt;br /&gt;
of the current handler ends.  The JavaDoc should provide the necessary&lt;br /&gt;
details.&lt;br /&gt;
&lt;br /&gt;
There are a few ready handlers, the most useful of which will probably&lt;br /&gt;
be &amp;lt;tt&amp;gt;PlainTextHandler&amp;lt;/tt&amp;gt;.  This handler accepts only text content and&lt;br /&gt;
ignores all subelements.  If the XML file contains&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;element&amp;gt;value&amp;lt;/element&amp;gt;&amp;lt;/nowiki&amp;gt;, then the handler can return a&lt;br /&gt;
&amp;lt;tt&amp;gt;PlainTextHandler&amp;lt;/tt&amp;gt; and handle the content within the &amp;lt;tt&amp;gt;closeElement()&amp;lt;/tt&amp;gt;&lt;br /&gt;
method, removing the need to write a specialized handler for that&lt;br /&gt;
element.&lt;br /&gt;
&lt;br /&gt;
The XML reading is initiated by calling &amp;lt;tt&amp;gt;SimpleSAX.readXML()&amp;lt;/tt&amp;gt; with the&lt;br /&gt;
input source and the initial &amp;lt;tt&amp;gt;ElementHandler&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The OpenRocket document loading is implemented in&lt;br /&gt;
&amp;lt;tt&amp;gt;.file.openrocket.OpenRocketLoader&amp;lt;/tt&amp;gt;.  Here I&#039;ve used a bit more&lt;br /&gt;
boilerplate code to be able to define most of the rocket structure&lt;br /&gt;
preferences without needing separate handlers for them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The OpenRocket format (*.ork) ===&lt;br /&gt;
&lt;br /&gt;
The OpenRocket native format uses the file extension *.ork.  It is an XML format, which can optionally be compressed using GZIP.  (The extension *.ork.gz is also accepted by the dialogs, though plain .ork is recommended.)&lt;br /&gt;
&lt;br /&gt;
Currently the file format is not documented other than as the reference implementation, and no XML schema exists.  This will hopefully change in the future.  See [[#Units used in OpenRocket]] for details on units.&lt;br /&gt;
&lt;br /&gt;
Every time the XML format changes, the file version number is increased.  This version number is not linked to the version of OpenRocket that created the file, but instead describes the file format.  Later versions of OpenRocket should attempt to store files in the oldest format that supports all the necessary features.  The changes in the format are described in the [http://openrocket.svn.sourceforge.net/viewvc/openrocket/trunk/fileformat.txt fileformat.txt file in SVN].&lt;br /&gt;
&#039;&#039;Italic text&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=20</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=20"/>
		<updated>2011-08-30T07:28:08Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
The functionality needed to support the above use case can be broken down into the following:&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
&lt;br /&gt;
==== OpenRocket Component (ORC) Format ====&lt;br /&gt;
&lt;br /&gt;
An open and extensible standard for specifying all relevant details about rocket components.  The obvious choice is an XML format. OpenRocket will need to be able to read and write this format.  &lt;br /&gt;
&lt;br /&gt;
The format could also allow non-structural components such as rocket motors, wadding or nomex sheets for recovery device protection, etc - any item that is attached to a rocket.&lt;br /&gt;
&lt;br /&gt;
The initial specification of the XML fields and structure can be generated by looking at the ORK rocket design format for what it stores for parts data.&lt;br /&gt;
&lt;br /&gt;
==== Import and Export Tools for the OpenRocket Component Format ====&lt;br /&gt;
&lt;br /&gt;
Component data will somehow have to converted into ORC XML files, either by the manufacturers themselves or hobby volunteers.  It is unreasonable to expect that manufacturer&#039;s staff or hobbyists will have the expertise and time to hand-code component XML files.  It is more likely that intermediate spreadsheet files will be created with component data.  Therefore, we will need a utility to convert both ways between the ORC XML format and standard comma-separated (CSV) value spreadsheet files.&lt;br /&gt;
&lt;br /&gt;
The import/export utility could be built into the OpenRocket software itself, or could be a separate program.&lt;br /&gt;
&lt;br /&gt;
==== Modifications to OpenRocket Client ====&lt;br /&gt;
&lt;br /&gt;
Changes needed to the OpenRocket application to make use of the component functionality:&lt;br /&gt;
&lt;br /&gt;
* OpenRocket must support reading and writing of ORC XML files.&lt;br /&gt;
* Store all component data outside the program code (ie, in ORC XML files).&lt;br /&gt;
* Don&#039;t allow user to modify or overwrite standard OpenRocket supported part, instead allow user to copy, modify, and store new customized parts.&lt;br /&gt;
* When user chooses to add a part to a design, allow user to pick one from the component library, or to create a new part using the existing parts specification UI.&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
&lt;br /&gt;
=== Online Library of OpenRocket Components ===&lt;br /&gt;
&lt;br /&gt;
A useful feature for OpenRocket users would be an online library of OpenRocket component files, a canonical location for the latest version of component files.  This would allow the OpenRocket software to obtain the latest component files via the internet, and provide both a web UI for people to view the library, and a web api to allow software to update or retrieve component info.&lt;br /&gt;
&lt;br /&gt;
In addition to commercial rocket components, the library could store non-commercial components, such as combinations of components that form a larger useful piece.  For example, an ejection baffle can be created from 3 smaller components: a tube coupler and 2 thin bulkheads with holes drilled in the in various patterns.&lt;br /&gt;
&lt;br /&gt;
Over time, the rocketry community could build an open library of components and ideas to use in constructing rockets, and indeed entire rocket designs.&lt;br /&gt;
&lt;br /&gt;
For rocket motors, we could obtain curated motor data from thrustcurve.org via their internet API.  Would we want to use their data directly (each OpenRocket user&#039;s instance reads from thrustcurve.org), or would we pull data and store in the OpenRocket library?  (or give the option to do either?).  Having the OpenRocket program communicate directly with thrustcurve.org (or for that matter, any data source (estes, etc)) would put additional, possibly unwanted, load on their servers.  Also, for OpenRocket users who do not have internet access (or sporadic access), having OpenRocket retrieve all it&#039;s component data from the library in ORC format allows those disconnected users to manually update their component files by putting a updated snapshot of the library (via usb stick, or infrequent download) on their machine.&lt;br /&gt;
&lt;br /&gt;
Potential messiness: someone will have to maintain the library.  Maybe divide the library between official OpenRocket supported components (data from manufacturers, approved submitters and/or rocketry clubs, etc), and a general open-upload section.&lt;br /&gt;
&lt;br /&gt;
==== Modifications to OpenRocket Client ====&lt;br /&gt;
&lt;br /&gt;
* Allow updating of component files from the OpenRocket component library:&lt;br /&gt;
** From an online connection to the library web api&lt;br /&gt;
** From a snapshot set of updated ORC files, for users who do not have internet access (for example, out at a launch site).&lt;br /&gt;
* Allow creation and uploading of custom components&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=19</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=19"/>
		<updated>2011-08-30T07:27:02Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
The functionality needed to support the above use case can be broken down into the following:&lt;br /&gt;
&lt;br /&gt;
=== Phase 1 ===&lt;br /&gt;
&lt;br /&gt;
==== OpenRocket Component (ORC) Format ====&lt;br /&gt;
&lt;br /&gt;
An open and extensible standard for specifying all relevant details about rocket components.  The obvious choice is an XML format. OpenRocket will need to be able to read and write this format.  &lt;br /&gt;
&lt;br /&gt;
The format could also allow non-structural components such as rocket motors, wadding or nomex sheets for recovery device protection, etc - any item that is attached to a rocket.&lt;br /&gt;
&lt;br /&gt;
The initial specification of the XML fields and structure can be generated by looking at the ORK rocket design format for what it stores for parts data.&lt;br /&gt;
&lt;br /&gt;
==== Import and Export Tools for the OpenRocket Component Format ====&lt;br /&gt;
&lt;br /&gt;
Component data will somehow have to converted into ORC XML files, either by the manufacturers themselves or hobby volunteers.  It is unreasonable to expect that manufacturer&#039;s staff or hobbyists will have the expertise and time to hand-code component XML files.  It is more likely that intermediate spreadsheet files will be created with component data.  Therefore, we will need a utility to convert both ways between the ORC XML format and standard comma-separated (CSV) value spreadsheet files.&lt;br /&gt;
&lt;br /&gt;
The import/export utility could be built into the OpenRocket software itself, or could be a separate program.&lt;br /&gt;
&lt;br /&gt;
==== Modifications to OpenRocket Client ====&lt;br /&gt;
&lt;br /&gt;
Changes needed to the OpenRocket application to make use of the component functionality:&lt;br /&gt;
&lt;br /&gt;
* OpenRocket must support reading and writing of ORC XML files.&lt;br /&gt;
* Store all component data outside the program code (ie, in ORC XML files).&lt;br /&gt;
* Don&#039;t allow user to modify or overwrite standard OpenRocket supported part, instead allow user to copy, modify, and store new customized parts.&lt;br /&gt;
* When user chooses to add a part to a design, allow user to pick one from the component library, or to create a new part using the existing parts specification UI.&lt;br /&gt;
&lt;br /&gt;
=== Phase 2 ===&lt;br /&gt;
&lt;br /&gt;
=== Online Library of OpenRocket Components ===&lt;br /&gt;
&lt;br /&gt;
A useful feature for OpenRocket users would be an online library of OpenRocket component files, a canonical location for the latest version of component files.  This would allow the OpenRocket software to obtain the latest component files via the internet, and provide both a web UI for people to view the library, and a web api to allow software to update or retrieve component info.&lt;br /&gt;
&lt;br /&gt;
In addition to commercial rocket components, the library could store non-commercial components, such as combinations of components that form a larger useful piece.  For example, an ejection baffle can be created from 3 smaller components: a tube coupler and 2 thin bulkheads with holes drilled in the in various patterns.&lt;br /&gt;
&lt;br /&gt;
Over time, the rocketry community could build an open library of components and ideas to use in constructing rockets, and indeed entire rocket designs.&lt;br /&gt;
&lt;br /&gt;
For rocket motors, we could obtain curated motor data from thrustcurve.org via their internet API.  Would we want to use their data directly (each OpenRocket user&#039;s instance reads from thrustcurve.org), or would we pull data and store in the OpenRocket library?  (or give the option to do either?).  Having the OpenRocket program communicate directly with thrustcurve.org (or for that matter, any data source (estes, etc)) would put additional, possibly unwanted, load on their servers.  Also, for OpenRocket users who do not have internet access (or sporadic access), having OpenRocket retrieve all it&#039;s component data from the library in ORC format allows those disconnected users to manually update their component files by putting a updated snapshot of the library (via usb stick, or infrequent download) on their machine.&lt;br /&gt;
&lt;br /&gt;
Potential messiness: someone will have to maintain the library.  Maybe divide the library between official OpenRocket supported components (data from manufacturers, approved submitters and/or rocketry clubs, etc), and a general open-upload section.&lt;br /&gt;
&lt;br /&gt;
==== Modifications to OpenRocket Client ====&lt;br /&gt;
&lt;br /&gt;
* Allow updating of component files from the OpenRocket component library:&lt;br /&gt;
** From an online connection to the library web api&lt;br /&gt;
** From a snapshot set of updated ORC files, for users who do not have internet access (for example, out at a launch site).&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=18</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=18"/>
		<updated>2011-08-28T08:58:38Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: /* Functionality To Be Built */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
The functionality needed to support the above use case can be broken down into the following:&lt;br /&gt;
&lt;br /&gt;
=== OpenRocket Component (ORC) Format ===&lt;br /&gt;
&lt;br /&gt;
An open and extensible standard for specifying all relevant details about rocket components.  The obvious choice is an XML format. OpenRocket will need to be able to read and write this format.  &lt;br /&gt;
&lt;br /&gt;
The format could also allow non-structural components such as rocket motors, wadding or nomex sheets for recovery device protection, etc - any item that is attached to a rocket.&lt;br /&gt;
&lt;br /&gt;
The initial specification of the XML fields and structure can be generated by looking at the ORK rocket design format for what it stores for parts data.&lt;br /&gt;
&lt;br /&gt;
=== Import and Export Tools for the OpenRocket Component Format ===&lt;br /&gt;
&lt;br /&gt;
Component data will somehow have to converted into ORC XML files, either by the manufacturers themselves or hobby volunteers.  It is unreasonable to expect that manufacturer&#039;s staff or hobbyists will have the expertise and time to hand-code component XML files.  It is more likely that intermediate spreadsheet files will be created with component data.  Therefore, we will need a utility to convert both ways between the ORC XML format and standard comma-separated (CSV) value spreadsheet files.&lt;br /&gt;
&lt;br /&gt;
The import/export utility could be built into the OpenRocket software itself, or could be a separate program.&lt;br /&gt;
&lt;br /&gt;
=== Online Library of OpenRocket Components ===&lt;br /&gt;
&lt;br /&gt;
A useful feature for OpenRocket users would be an online library of OpenRocket component files, a canonical location for the latest version of component files.  This would allow the OpenRocket software to obtain the latest component files via the internet.&lt;br /&gt;
&lt;br /&gt;
In addition to commercial rocket components, the library could store non-commercial components, such as combinations of components that form a larger useful piece.  For example, an ejection baffle can be created from 3 smaller components: a tube coupler and 2 thin bulkheads with holes drilled in the in various patterns.&lt;br /&gt;
&lt;br /&gt;
Over time, the rocketry community could build an open library of components and ideas to use in constructing rockets, and indeed entire rocket designs.&lt;br /&gt;
&lt;br /&gt;
For rocket motors, we could obtain curated motor data from thrustcurve.org via their internet API.  Would we want to use their data directly (each OpenRocket user&#039;s instance reads from thrustcurve.org), or would we pull data and store in the OpenRocket library?  (or give the option to do either?).  Having the OpenRocket program communicate directly with thrustcurve.org (or for that matter, any data source (estes, etc)) would put additional, possibly unwanted, load on their servers.  Also, for OpenRocket users who do not have internet access (or sporadic access), having OpenRocket retrieve all it&#039;s component data from the library in ORC format allows those disconnected users to manually update their component files by putting a updated snapshot of the library (via usb stick, or infrequent download) on their machine.&lt;br /&gt;
&lt;br /&gt;
Potential messiness: someone will have to maintain the library.  Maybe divide the library between official OpenRocket supported components (data from manufacturers, approved submitters and/or rocketry clubs, etc), and a general open-upload section.&lt;br /&gt;
&lt;br /&gt;
=== Changes to OpenRocket Program ===&lt;br /&gt;
&lt;br /&gt;
Changes needed to the OpenRocket application to make use of the above new functionality:&lt;br /&gt;
&lt;br /&gt;
* OpenRocket must support reading and writing of ORC XML files.&lt;br /&gt;
* Store all component data outside the program code (ie, in ORC XML files).&lt;br /&gt;
* Allow updating of component files from the OpenRocket component library (or from a snapshot set of updated ORC files, for users who do not have internet access).&lt;br /&gt;
* Don&#039;t allow user to modify or overwrite standard OpenRocket supported part, instead allow user to copy, modify, and store new customized parts.&lt;br /&gt;
* When user chooses to add a part to a design, allow user to pick one from the component library, or to create a new part using the existing parts specification UI.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=17</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=17"/>
		<updated>2011-08-28T08:54:06Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
The functionality needed to support the above use case can be broken down into the following:&lt;br /&gt;
&lt;br /&gt;
=== OpenRocket Component (ORC) Format ===&lt;br /&gt;
&lt;br /&gt;
An open and extensible standard for specifying all relevant details about rocket components.  The obvious choice is an XML format. OpenRocket will need to be able to read and write this format.  &lt;br /&gt;
&lt;br /&gt;
The format could also allow non-structural components such as rocket motors, wadding or nomex sheets for recovery device protection, etc - any item that is attached to a rocket.&lt;br /&gt;
&lt;br /&gt;
=== Import and Export Tools for the OpenRocket Component Format ===&lt;br /&gt;
&lt;br /&gt;
Component data will somehow have to converted into ORC XML files, either by the manufacturers themselves or hobby volunteers.  It is unreasonable to expect that manufacturer&#039;s staff or hobbyists will have the expertise and time to hand-code component XML files.  It is more likely that intermediate spreadsheet files will be created with component data.  Therefore, we will need a utility to convert both ways between the ORC XML format and standard comma-separated (CSV) value spreadsheet files.&lt;br /&gt;
&lt;br /&gt;
The import/export utility could be built into the OpenRocket software itself, or could be a separate program.&lt;br /&gt;
&lt;br /&gt;
=== Online Library of OpenRocket Components ===&lt;br /&gt;
&lt;br /&gt;
A useful feature for OpenRocket users would be an online library of OpenRocket component files, a canonical location for the latest version of component files.  This would allow the OpenRocket software to obtain the latest component files via the internet.&lt;br /&gt;
&lt;br /&gt;
In addition to commercial rocket components, the library could store non-commercial components, such as combinations of components that form a larger useful piece.  For example, an ejection baffle can be created from 3 smaller components: a tube coupler and 2 thin bulkheads with holes drilled in the in various patterns.&lt;br /&gt;
&lt;br /&gt;
Over time, the rocketry community could build an open library of components and ideas to use in constructing rockets, and indeed entire rocket designs.&lt;br /&gt;
&lt;br /&gt;
For rocket motors, we could obtain curated motor data from thrustcurve.org via their internet API.  Would we want to use their data directly (each OpenRocket user&#039;s instance reads from thrustcurve.org), or would we pull data and store in the OpenRocket library?  (or give the option to do either?).  Having the OpenRocket program communicate directly with thrustcurve.org (or for that matter, any data source (estes, etc)) would put additional, possibly unwanted, load on their servers.  Also, for OpenRocket users who do not have internet access (or sporadic access), having OpenRocket retrieve all it&#039;s component data from the library in ORC format allows those disconnected users to manually update their component files by putting a updated snapshot of the library (via usb stick, or infrequent download) on their machine.&lt;br /&gt;
&lt;br /&gt;
Potential messiness: someone will have to maintain the library.  Maybe divide the library between official OpenRocket supported components (data from manufacturers, approved submitters and/or rocketry clubs, etc), and a general open-upload section.&lt;br /&gt;
&lt;br /&gt;
=== Changes to OpenRocket Program ===&lt;br /&gt;
&lt;br /&gt;
Changes needed to the OpenRocket application to make use of the above new functionality:&lt;br /&gt;
&lt;br /&gt;
* OpenRocket must support reading and writing of ORC XML files.&lt;br /&gt;
* Store all component data outside the program code (ie, in ORC XML files).&lt;br /&gt;
* Allow updating of component files from the OpenRocket component library (or from a snapshot set of updated ORC files, for users who do not have internet access).&lt;br /&gt;
* Don&#039;t allow user to modify or overwrite standard OpenRocket supported part, instead allow user to copy, modify, and store new customized parts.&lt;br /&gt;
* When user chooses to add a part to a design, allow user to pick one from the component library, or to create a new part using the existing parts specification UI.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=16</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=16"/>
		<updated>2011-08-28T08:47:11Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
The functionality needed to support the above use case can be broken down into the following:&lt;br /&gt;
&lt;br /&gt;
=== OpenRocket Component (ORC) Format ===&lt;br /&gt;
&lt;br /&gt;
An open and extensible standard for specifying all relevant details about rocket components.  The obvious choice is an XML format. OpenRocket will need to be able to read and write this format.  &lt;br /&gt;
&lt;br /&gt;
The format could also allow non-structural components such as rocket motors, wadding or nomex sheets for recovery device protection, etc - any item that is attached to a rocket.&lt;br /&gt;
&lt;br /&gt;
=== Import and Export Tools for the OpenRocket Component Format ===&lt;br /&gt;
&lt;br /&gt;
Component data will somehow have to converted into ORC XML files, either by the manufacturers themselves or hobby volunteers.  It is unreasonable to expect that manufacturer&#039;s staff or hobbyists will have the expertise and time to hand-code component XML files.  It is more likely that intermediate spreadsheet files will be created with component data.  Therefore, we will need a utility to convert both ways between the ORC XML format and standard comma-separated (CSV) value spreadsheet files.&lt;br /&gt;
&lt;br /&gt;
The import/export utility could be built into the OpenRocket software itself, or could be a separate program.&lt;br /&gt;
&lt;br /&gt;
=== Online Library of OpenRocket Components ===&lt;br /&gt;
&lt;br /&gt;
A useful feature for OpenRocket users would be an online library of OpenRocket component files, a canonical location for the latest version of component files.  This would allow the OpenRocket software to obtain the latest component files via the internet.&lt;br /&gt;
&lt;br /&gt;
In addition to commercial rocket components, the library could store non-commercial components, such as combinations of components that form a larger useful piece.  For example, an ejection baffle can be created from 3 smaller components: a tube coupler and 2 thin bulkheads with holes drilled in the in various patterns.&lt;br /&gt;
&lt;br /&gt;
Over time, the rocketry community could build an open library of components and ideas to use in constructing rockets, and indeed entire rocket designs.&lt;br /&gt;
&lt;br /&gt;
For rocket motors, we could obtain curated motor data from thrustcurve.org via their internet API.  Would we want to use their data directly (each OpenRocket user&#039;s instance reads from thrustcurve.org), or would we pull data and store in the OpenRocket library?  (or give the option to do either?).  Having the OpenRocket program communicate directly with thrustcurve.org (or for that matter, any data source (estes, etc)) would put additional, possibly unwanted, load on their servers.  Also, for OpenRocket users who do not have internet access (or sporadic access), having OpenRocket retrieve all it&#039;s component data from the library in ORC format allows those disconnected users to manually update their component files by putting a updated snapshot of the library (via usb stick, or infrequent download) on their machine.&lt;br /&gt;
&lt;br /&gt;
Potential messiness: someone will have to maintain the library.  Maybe divide the library between official OpenRocket supported components (data from manufacturers, approved submitters and/or rocketry clubs, etc), and a general open-upload section.&lt;br /&gt;
&lt;br /&gt;
=== Changes to OpenRocket Program ===&lt;br /&gt;
&lt;br /&gt;
Changes needed to the OpenRocket application to make use of the above new functionality:&lt;br /&gt;
&lt;br /&gt;
* OpenRocket must support reading and writing of ORC XML files.&lt;br /&gt;
* Store all component data outside the program code (ie, in ORC XML files).&lt;br /&gt;
* Allow updating of component files from the OpenRocket component library (or from a snapshot set of updated ORC files, for users who do not have internet access).&lt;br /&gt;
* Don&#039;t allow user to modify or overwrite of standard parts files, instead allow user to copy, modify, and store customized parts.&lt;br /&gt;
* When user chooses to add a part to a design, allow user to pick one from the component library, or to create a new part using the existing parts specification UI.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=15</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=15"/>
		<updated>2011-08-28T08:46:49Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
The functionality needed to support the above use case can be broken down into the following:&lt;br /&gt;
&lt;br /&gt;
=== OpenRocket Component (ORC) Format ===&lt;br /&gt;
&lt;br /&gt;
An open and extensible standard for specifying all relevant details about rocket components.  The obvious choice is an XML format. OpenRocket will need to be able to read and write this format.  &lt;br /&gt;
&lt;br /&gt;
The format could also allow non-structural components such as rocket motors, wadding or nomex sheets for recovery device protection, etc - any item that is attached to a rocket.&lt;br /&gt;
&lt;br /&gt;
=== Import and Export Tools for the OpenRocket Component Format ===&lt;br /&gt;
&lt;br /&gt;
Component data will somehow have to converted into ORC XML files, either by the manufacturers themselves or hobby volunteers.  It is unreasonable to expect that manufacturer&#039;s staff or hobbyists will have the expertise and time to hand-code component XML files.  It is more likely that intermediate spreadsheet files will be created with component data.  Therefore, we will need a utility to convert both ways between the ORC XML format and standard comma-separated (CSV) value spreadsheet files.&lt;br /&gt;
&lt;br /&gt;
The import/export utility could be built into the OpenRocket software itself, or could be a separate program.&lt;br /&gt;
&lt;br /&gt;
=== Online Library of OpenRocket Components ===&lt;br /&gt;
&lt;br /&gt;
A useful feature for OpenRocket users would be an online library of OpenRocket component files, a canonical location for the latest version of component files.  This would allow the OpenRocket software to obtain the latest component files via the internet.&lt;br /&gt;
&lt;br /&gt;
In addition to commercial rocket components, the library could store non-commercial components, such as combinations of components that form a larger useful piece.  For example, an ejection baffle can be created from 3 smaller components: a tube coupler and 2 thin bulkheads with holes drilled in the in various patterns.&lt;br /&gt;
&lt;br /&gt;
Over time, the rocketry community could build an open library of components and ideas to use in constructing rockets, and indeed entire rocket designs.&lt;br /&gt;
&lt;br /&gt;
For rocket motors, we could obtain curated motor data from thrustcurve.org via their internet API.  Would we want to use their data directly (each OpenRocket user&#039;s instance reads from thrustcurve.org), or would we pull data and store in the OpenRocket library?  (or give the option to do either?).  Having the OpenRocket program communicate directly with thrustcurve.org (or for that matter, any data source (estes, etc)) would put additional, possibly unwanted, load on their servers.  Also, for OpenRocket users who do not have internet access (or sporadic access), having OpenRocket retrieve all it&#039;s component data from the library in ORC format allows those disconnected users to manually update their component files by putting a updated snapshot of the library (via usb stick, or infrequent download) on their machine.&lt;br /&gt;
&lt;br /&gt;
Potential messiness: someone will have to maintain the library.  Maybe divide the library between official OpenRocket supported components (data from manufacturers, approved submitters and/or rocketry clubs, etc), and a general open-upload section.&lt;br /&gt;
&lt;br /&gt;
=== Changes to OpenRocket Program ===&lt;br /&gt;
&lt;br /&gt;
Changes needed to the OpenRocket application to make use of the above new fuctionality:&lt;br /&gt;
&lt;br /&gt;
* OpenRocket must support reading and writing of ORC XML files.&lt;br /&gt;
* Store all component data outside the program code (ie, in ORC XML files).&lt;br /&gt;
* Allow updating of component files from the OpenRocket component library (or from a snapshot set of updated ORC files, for users who do not have internet access).&lt;br /&gt;
* Don&#039;t allow user to modify or overwrite of standard parts files, instead allow user to copy, modify, and store customized parts.&lt;br /&gt;
* When user chooses to add a part to a design, allow user to pick one from the component library, or to create a new part using the existing parts specification UI.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=14</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=14"/>
		<updated>2011-08-28T08:39:36Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
The functionality needed to support the above use case can be broken down into the following:&lt;br /&gt;
&lt;br /&gt;
=== OpenRocket Component (ORC) Format ===&lt;br /&gt;
&lt;br /&gt;
An open and extensible standard for specifying all relevant details about rocket components.  The obvious choice is an XML format. OpenRocket will need to be able to read and write this format.  &lt;br /&gt;
&lt;br /&gt;
The format could also allow non-structural components such as rocket motors, wadding or nomex sheets for recovery device protection, etc - any item that is attached to a rocket.&lt;br /&gt;
&lt;br /&gt;
=== Import and Export Tools for the OpenRocket Component Format ===&lt;br /&gt;
&lt;br /&gt;
Component data will somehow have to converted into ORC XML files, either by the manufacturers themselves or hobby volunteers.  It is unreasonable to expect that manufacturer&#039;s staff or hobbyists will have the expertise and time to hand-code component XML files.  It is more likely that intermediate spreadsheet files will be created with component data.  Therefore, we will need a utility to convert both ways between the ORC XML format and standard comma-separated (CSV) value spreadsheet files.&lt;br /&gt;
&lt;br /&gt;
The import/export utility could be built into the OpenRocket software itself, or could be a separate program.&lt;br /&gt;
&lt;br /&gt;
=== Online Library of OpenRocket Components ===&lt;br /&gt;
&lt;br /&gt;
A useful feature for OpenRocket users would be an online library of OpenRocket component files, a canonical location for the latest version of component files.  This would allow the OpenRocket software to obtain the latest component files via the internet.&lt;br /&gt;
&lt;br /&gt;
In addition to commercial rocket components, the library could store non-commercial components, such as combinations of components that form a larger useful piece.  For example, an ejection baffle can be created from 3 smaller components: a tube coupler and 2 thin bulkheads with holes drilled in the in various patterns.&lt;br /&gt;
&lt;br /&gt;
Over time, the rocketry community could build an open library of components and ideas to use in constructing rockets, and indeed entire rocket designs.&lt;br /&gt;
&lt;br /&gt;
For rocket motors, we could obtain curated motor data from thrustcurve.org via their internet API.  Would we want to use their data directly (each OpenRocket user&#039;s instance reads from thrustcurve.org), or would we pull data and store in the OpenRocket library?  (or give the option to do either?).  Having the OpenRocket program communicate directly with thrustcurve.org (or for that matter, any data source (estes, etc)) would put additional, possibly unwanted, load on their servers.&lt;br /&gt;
&lt;br /&gt;
Potential messiness: someone will have to maintain the library.  Maybe divide the library between official OpenRocket supported components (data from manufacturers, approved submitters and/or rocketry clubs, etc), and a general open-upload section.&lt;br /&gt;
&lt;br /&gt;
=== Changes to OpenRocket Program ===&lt;br /&gt;
&lt;br /&gt;
- OpenRocket must support reading and writing of ORC XML files.&lt;br /&gt;
- Store all component data outside the program code (ie, in ORC XML files).&lt;br /&gt;
- Don&#039;t allow user to modify or overwrite of standard parts files, instead allow user to copy, modify, and store customized parts.&lt;br /&gt;
- When user chooses to add a part to a design, allow user to pick one from the component library, or to create a new part using the existing parts specification UI.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=13</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=13"/>
		<updated>2011-08-28T08:38:36Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
The functionality needed to support the above use case can be broken down into the following:&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;OpenRocket Component (ORC) Format&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
An open and extensible standard for specifying all relevant details about rocket components.  The obvious choice is an XML format. OpenRocket will need to be able to read and write this format.  &lt;br /&gt;
&lt;br /&gt;
The format could also allow non-structural components such as rocket motors, wadding or nomex sheets for recovery device protection, etc - any item that is attached to a rocket.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Import and Export Tools for the OpenRocket Component Format&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Component data will somehow have to converted into ORC XML files, either by the manufacturers themselves or hobby volunteers.  It is unreasonable to expect that manufacturer&#039;s staff or hobbyists will have the expertise and time to hand-code component XML files.  It is more likely that intermediate spreadsheet files will be created with component data.  Therefore, we will need a utility to convert both ways between the ORC XML format and standard comma-separated (CSV) value spreadsheet files.&lt;br /&gt;
&lt;br /&gt;
The import/export utility could be built into the OpenRocket software itself, or could be a separate program.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Online Library of OpenRocket Components&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
A useful feature for OpenRocket users would be an online library of OpenRocket component files, a canonical location for the latest version of component files.  This would allow the OpenRocket software to obtain the latest component files via the internet.&lt;br /&gt;
&lt;br /&gt;
In addition to commercial rocket components, the library could store non-commercial components, such as combinations of components that form a larger useful piece.  For example, an ejection baffle can be created from 3 smaller components: a tube coupler and 2 thin bulkheads with holes drilled in the in various patterns.&lt;br /&gt;
&lt;br /&gt;
Over time, the rocketry community could build an open library of components and ideas to use in constructing rockets, and indeed entire rocket designs.&lt;br /&gt;
&lt;br /&gt;
For rocket motors, we could obtain curated motor data from thrustcurve.org via their internet API.  Would we want to use their data directly (each OpenRocket user&#039;s instance reads from thrustcurve.org), or would we pull data and store in the OpenRocket library?  (or give the option to do either?).  Having the OpenRocket program communicate directly with thrustcurve.org (or for that matter, any data source (estes, etc)) would put additional, possibly unwanted, load on their servers.&lt;br /&gt;
&lt;br /&gt;
Potential messiness: someone will have to maintain the library.  Maybe divide the library between official OpenRocket supported components (data from manufacturers, approved submitters and/or rocketry clubs, etc), and a general open-upload section.&lt;br /&gt;
&lt;br /&gt;
=== Changes to OpenRocket Program ===&lt;br /&gt;
&lt;br /&gt;
- OpenRocket must support reading and writing of ORC XML files.&lt;br /&gt;
- Store all component data outside the program code (ie, in ORC XML files).&lt;br /&gt;
- Don&#039;t allow user to modify or overwrite of standard parts files, instead allow user to copy, modify, and store customized parts.&lt;br /&gt;
- When user chooses to add a part to a design, allow user to pick one from the component library, or to create a new part using the existing parts specification UI.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=12</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=12"/>
		<updated>2011-08-28T08:27:30Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
The functionality needed to support the above use case can be broken down into the following:&lt;br /&gt;
&lt;br /&gt;
=== [[OpenRocket Component (ORC) Format]] ===&lt;br /&gt;
&lt;br /&gt;
An open and extensible standard for specifying all relevant details about rocket components.  The obvious choice is an XML format. OpenRocket will need to be able to read and write this format.  &lt;br /&gt;
&lt;br /&gt;
The format could also allow non-structural components such as rocket motors, wadding or nomex sheets for recovery device protection, etc - any item that is attached to a rocket.&lt;br /&gt;
&lt;br /&gt;
=== Import and Export Tools for the OpenRocket Component Format ===&lt;br /&gt;
&lt;br /&gt;
Component data will somehow have to converted into ORC XML files, either by the manufacturers themselves or hobby volunteers.  It is unreasonable to expect that manufacturer&#039;s staff or hobbyists will have the expertise and time to hand-code component XML files.  It is more likely that intermediate spreadsheet files will be created with component data.  Therefore, we will need a utility to convert both ways between the ORC XML format and standard comma-separated (CSV) value spreadsheet files.&lt;br /&gt;
&lt;br /&gt;
The import/export utility could be built into the OpenRocket software itself, or could be a separate program.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Online Library of OpenRocket Components&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
A useful feature for OpenRocket users would be an online library of OpenRocket component files, a canonical location for the latest version of component files.  This would allow the OpenRocket software to obtain the latest component files via the internet.&lt;br /&gt;
&lt;br /&gt;
In addition to commercial rocket components, the library could store non-commercial components, such as combinations of components that form a larger useful piece.  For example, an ejection baffle can be created from 3 smaller components: a tube coupler and 2 thin bulkheads with holes drilled in the in various patterns.&lt;br /&gt;
&lt;br /&gt;
Over time, the rocketry community could build an open library of components and ideas to use in constructing rockets, and indeed entire rocket designs.&lt;br /&gt;
&lt;br /&gt;
Potential messiness: someone will have to maintain the library.  Maybe divide the library between official OpenRocket supported components (data from manufacturers, approved submitters and/or rocketry clubs, etc), and a general open-upload section.&lt;br /&gt;
&lt;br /&gt;
===  ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=11</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=11"/>
		<updated>2011-08-28T08:17:41Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
The functionality needed to support the above use case can be broken down into the following:&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;OpenRocket Component (ORC) Format ===&lt;br /&gt;
&lt;br /&gt;
An open and extensible standard for specifying all relevant details about rocket components.  The obvious choice is an XML format. OpenRocket will need to be able to read and write this format.  &lt;br /&gt;
&lt;br /&gt;
The format could also allow non-structural components such as rocket motors, wadding or nomex sheets for recovery device protection, etc - any item that is attached to a rocket.&lt;br /&gt;
&lt;br /&gt;
=== Import and Export Tools for the OpenRocket Component Format ===&lt;br /&gt;
&lt;br /&gt;
Component data will somehow have to converted into ORC XML files, either by the manufacturers themselves or hobby volunteers.  It is unreasonable to expect that manufacturer&#039;s staff or hobbyists will have the expertise and time to hand-code component XML files.  It is more likely that intermediate spreadsheet files will be created with component data.  Therefore, we will need a utility to convert both ways between the ORC XML format and standard comma-separated (CSV) value spreadsheet files.&lt;br /&gt;
&lt;br /&gt;
The import/export utility could be built into the OpenRocket software itself, or could be a separate program.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Online Library of OpenRocket Components&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
A useful feature for OpenRocket users would be an online library of OpenRocket component files, a canonical location for the latest version of component files.  This would allow the OpenRocket software to obtain the latest component files via the internet.&lt;br /&gt;
&lt;br /&gt;
In addition to commercial rocket components, the library could store non-commercial components, such as combinations of components that form a larger useful piece.  For example, an ejection baffle can be created from 3 smaller components: a tube coupler and 2 thin bulkheads with holes drilled in the in various patterns.&lt;br /&gt;
&lt;br /&gt;
Over time, the rocketry community could build an open library of components and ideas to use in constructing rockets, and indeed entire rocket designs.&lt;br /&gt;
&lt;br /&gt;
===  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=10</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=10"/>
		<updated>2011-08-28T08:13:05Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
The functionality needed to support the above use case can be broken down into the following:&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;OpenRocket Component (ORC) Format&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
An open and extensible standard for specifying all relevant details about rocket components.  The obvious choice is an XML format. OpenRocket will need to be able to read and write this format.  &lt;br /&gt;
&lt;br /&gt;
The format could also allow non-structural components such as rocket motors, wadding or nomex sheets for recovery device protection, etc - any item that is attached to a rocket.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;Online Library of OpenRocket Components&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
A useful feature for OpenRocket users would be an online library of OpenRocket component files, a canonical location for the latest version of component files.  This would allow the OpenRocket software to obtain the latest component files via the internet.&lt;br /&gt;
&lt;br /&gt;
In addition to commercial rocket components, the library could store non-commercial components, such as combinations of components that form a larger useful piece.  For example, an ejection baffle can be created from 3 smaller components: a tube coupler and 2 thin bulkheads with holes drilled in the in various patterns.&lt;br /&gt;
&lt;br /&gt;
This idea could even be extended to cover entire rockets, as they are assemblages of smaller components.&lt;br /&gt;
&lt;br /&gt;
Over time, the rocketry community could build an open library of components and ideas to use in constructing rockets, and indeed entire rocket designs.&lt;br /&gt;
&lt;br /&gt;
=== Import and Export Tools for the OpenRocket Component Format ===&lt;br /&gt;
&lt;br /&gt;
Component data will somehow have to converted into ORC XML files, either by the manufacturers themselves or hobby volunteers.  It is unreasonable to expect that manufacturer&#039;s staff or hobbyists will have the expertise and time to hand-code component XML files.  It is more likely that intermediate spreadsheet files will be created with component data.  Therefore, we will need a utility to convert both ways between the ORC XML format and standard comma-separated (CSV) value spreadsheet files.&lt;br /&gt;
&lt;br /&gt;
The import/export utility could be built into the OpenRocket software itself, or could be a separate program.&lt;br /&gt;
&lt;br /&gt;
=== User-Created Components (Collaborative c  ===&lt;br /&gt;
&lt;br /&gt;
In addition to commercial &lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=9</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=9"/>
		<updated>2011-08-28T08:12:27Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
The functionality needed to support the above use case can be broken down into the following:&lt;br /&gt;
&lt;br /&gt;
=== OpenRocket Component (ORC) Format ===&lt;br /&gt;
&lt;br /&gt;
An open and extensible standard for specifying all relevant details about rocket components.  The obvious choice is an XML format. OpenRocket will need to be able to read and write this format.  &lt;br /&gt;
&lt;br /&gt;
The format could also allow non-structural components such as rocket motors, wadding or nomex sheets for recovery device protection, etc - any item that is attached to a rocket.&lt;br /&gt;
&lt;br /&gt;
=== Online Library of OpenRocket Components ===&lt;br /&gt;
&lt;br /&gt;
A useful feature for OpenRocket users would be an online library of OpenRocket component files, a canonical location for the latest version of component files.  This would allow the OpenRocket software to obtain the latest component files via the internet.&lt;br /&gt;
&lt;br /&gt;
In addition to commercial rocket components, the library could store non-commercial components, such as combinations of components that form a larger useful piece.  For example, an ejection baffle can be created from 3 smaller components: a tube coupler and 2 thin bulkheads with holes drilled in the in various patterns.&lt;br /&gt;
&lt;br /&gt;
This idea could even be extended to cover entire rockets, as they are assemblages of smaller components.&lt;br /&gt;
&lt;br /&gt;
Over time, the rocketry community could build an open library of components and ideas to use in constructing rockets, and indeed entire rocket designs.&lt;br /&gt;
&lt;br /&gt;
=== Import and Export Tools for the OpenRocket Component Format ===&lt;br /&gt;
&lt;br /&gt;
Component data will somehow have to converted into ORC XML files, either by the manufacturers themselves or hobby volunteers.  It is unreasonable to expect that manufacturer&#039;s staff or hobbyists will have the expertise and time to hand-code component XML files.  It is more likely that intermediate spreadsheet files will be created with component data.  Therefore, we will need a utility to convert both ways between the ORC XML format and standard comma-separated (CSV) value spreadsheet files.&lt;br /&gt;
&lt;br /&gt;
The import/export utility could be built into the OpenRocket software itself, or could be a separate program.&lt;br /&gt;
&lt;br /&gt;
=== User-Created Components (Collaborative c  ===&lt;br /&gt;
&lt;br /&gt;
In addition to commercial &lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=8</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=8"/>
		<updated>2011-08-28T07:56:31Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
The functionality needed to support the above use case can be broken down into the following:&lt;br /&gt;
&lt;br /&gt;
=== OpenRocket Component (ORC) Format ===&lt;br /&gt;
&lt;br /&gt;
An open and extensible standard for specifying all relevant details about rocket components.  The obvious choice is an XML format. OpenRocket will need to be able to read and write this format.&lt;br /&gt;
&lt;br /&gt;
=== Import and Export Tools for the OpenRocket Component Format ===&lt;br /&gt;
&lt;br /&gt;
Component data will somehow have to converted into ORC XML files, either by the manufacturers themselves or hobby volunteers.  It is unreasonable to expect that manufacturer&#039;s staff or hobbyists will have the expertise and time to hand-code component XML files.  It is more likely that intermediate spreadsheet files will be created with component data.  Therefore, we will need a utility to convert both ways between the ORC XML format and standard comma-separated (CSV) value spreadsheet files.&lt;br /&gt;
&lt;br /&gt;
The utility could be built into the OpenRocket software itself, or could be a separate program.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=7</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=7"/>
		<updated>2011-08-28T07:36:43Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
Currently in OpenRocket, details about rocket components must be entered by hand every time a rocket is designed. For example, when a body tube is added both the inner diameter, outer diameter, and material need to be specified.  However, many of the rocket components generally used are standard commercial items whose design specifications are already know.  It would be useful to allow OpenRocket users to, for example, select a body tube by manufacturer and type, and only have to specify the variable dimensions: ie, select an Estes BT-60 tube (which will set the tube dimensions and material), then specify a length of 50 cm.&lt;br /&gt;
&lt;br /&gt;
== Functionality To Be Built ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=6</id>
		<title>Component databases</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Component_databases&amp;diff=6"/>
		<updated>2011-08-28T07:25:14Z</updated>

		<summary type="html">&lt;p&gt;Soupwizard: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page is for planning the implementation of component databases in OpenRocket and splitting the implementation into smaller tasks.&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&lt;br /&gt;
* Design XML format for storing component databases:  [[Component database XML format]]&lt;br /&gt;
** Write schema for the format&lt;br /&gt;
&lt;br /&gt;
* Implement framework for using standard components&lt;br /&gt;
** RocketComponentPreset class?&lt;br /&gt;
** loadPreset(PresetComponent) method in RocketComponent?&lt;br /&gt;
** Remember what is used as a preset component&lt;br /&gt;
** When changing critical variables preset component is cleared (e.g. diameter of body tube), but not when changing others (e.g. length of body tube)&lt;br /&gt;
&lt;br /&gt;
* Implement database for storing standard components&lt;br /&gt;
** Maintain user-selectable presets list (user can choose which components are in an easy-to-access presets list)&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading XML format&lt;br /&gt;
&lt;br /&gt;
* Implement methods for reading CSV format&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for component selection&lt;br /&gt;
** Preset dropdown&lt;br /&gt;
** Button for opening selection dialog&lt;br /&gt;
** Dialog allows selecting which components are displayed in the preset list&lt;br /&gt;
&lt;br /&gt;
* Implement GUI for creating components(?)&lt;br /&gt;
** Useful for manufacturers&lt;br /&gt;
&lt;br /&gt;
* How to store the preset info in ORK file?  Should the entire preset info be included, or just a digest that is used in case the preset is already loaded and available?&lt;/div&gt;</summary>
		<author><name>Soupwizard</name></author>
	</entry>
</feed>