Guía del desarrollador - plaa/Modular GitHub Wiki
Esta página contiene información sobre los procesos internos de OpenRocket y son primordiales para los programadores interesados en desarrollar OpenRocket.
Además de esta página, puede encontrar información en el Capítulo 5 de la Documentación Técnica.
Los paquetes del código fuente de OpenRocket están disponibles en el Repositorio de SourceForge.
De forma alternativa, puede obtenerse la versión del desarrollo más reciente en SVN repository. Puede conseguirse simplemente utilizando el comando
$ svn co https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk OpenRocket
La URL de arriba también puede utilizarse con otras Subversiones de clientes.
Puede obtener la versión Galileo de Eclipse desde el Sitio de Descargas de Eclipse. Puede elegir tanto Eclipse IDE para Desarrolladores de Java como Eclipse para Desarrolladores RCP/Plug-in. Yo utilizo Eclipse IDE para Desarrolladores de Java. Ninguno de ellos aparece como los primeros de la llista por lo que tenga cuidado al elegir la versión.
Cuando cree un entorno de trabajo o workspace para cargar el proyecto, asegurese de entrar y establecer por defecto el JRE y el compilador de Java 1.6. Aunque en su ordenador ya esté utilizando por defecto el Java 6 y esté ejecutando el IDE con Java 6, el entorno de trabajo estará por defecto con Java 5. Necesitará compilar con 1.6 o tendrá muchos errores de compilación – particularmente con el uso de @Override.
![]() |
![]() |
Si está obteniendo errores, mire el directorio de construcción y verifique que está viendo 1.6 en el directorio como se muestra arriba.
Después de importar el proyecto a Eclipse, la 3rd party libraries debería configurarse correctamente. Se requerirá realizar un paso adicional para que OpenRocket pueda encontrar el archivo build.properties para ejecutar OpenRocket.
- Abra la clase net.sf.openrocket.startup.Startup. Ejecutar esto directamente falla debido a que se omite el archivo build.properties.
- Seleccione Run As -> Run Configurations...
- Sobre la pestaña Classpath haga clic en User entries, entonces haga clic en Advanced... -> Add Folders -> Seleccione el directorio base de OpenRocket y haga clic en OK
- Haga clic en Run
A menudo cuando escribimos el código sebemos que algunas cosas las podríamos haber hecho mejor, pero que por el momento es imposible o no es razonable realizar. Este código se marca habitualmente como un comentario TODO. La siguiente conversión se utiliza para marcar la importancia de diferentes TODOs:
-
// TODO: CRITICAL: comentario
Un error o algo que no está aún implementado, y debe corregirse antes de hacerlo público. El script de construcción Ant build script comprueba esto y previene la construcción si encuentra tal comentario. -
// TODO: HIGH: comentario
Una importante característica que debería repasarse o dejarlo para posteriores publicaciones. -
// TODO: MEDIUM: comentario
Algo que debería mejorar el programa, pero que no representa ningún problema. -
// TODO: LOW: comentario
Algo que estaría bien hacerse en el futuro.
OpenRocket siempre utiliza internamente unidades SI (Sistema Internacional). Por ejemplo, todas las dimensiones de los cohetes y distancias del vuelo están en metros, todas las masas en kilogramos, la densidad en kg/m³, la tmperatura en grados Kelvin etc. Esta conversión también se utiliza cuando guardamos el diseño en formato OpenRocket.
La única excepción a esta regla son los ángulos:
- Lo ángulos se representan internamente en radianes, pero en el formato del archivo se convierten a grados. Esto es para hacer que el formato del archivo sea más entendible y evitar errores de redondeo.
- La Latitud y la Longitud del sitio de lanzamiento se representan en grados tanto interna como externamente.
(Esta sección está basada en correspondencias por e-mail)
Todos los archivos de Lectura/Escritura se encuentran el el paquete net.sf.openrocket.file y subpaquetes. Para implementar un nuevo documento es necesario extender la clase RocketLoader e implementar el método abstracto loadFromStream(InputStream). Este método simplemente carga el documento y devuelve un objeto OpenRocketDocument.
Un OpenRocketDocument contiene toda la información sobre un documento abierto, en primer lugar con la estructura del cohete y las simulaciones. La estructura del cohete simplemente es la estructura del árbol de diseño RocketComponents. Todos los componentes están en el paquete .rocketcomponent. Hay disponible un diagrama de su jerarquía y una breve explicación de cada clase en mi tesis Sección 5.1 (http://openrocket.sourceforge.net/documentation.html)
He implementado un simple framework de lectura XML (basado en SAX), el cual simplifica la lectura asumiendo que los elementos XML sólo pueden contener otros elementos o texto, pero no ambos. Tanto OpenRocket como Rocksim cumplen con esta restricción.
El framework está en el paquete .file.simplesax. La primera clase que será extendida es ElementHandler, la cual contiene tres métodos. openElement() es invocado cuando se encuentra un nuevo subelemento, y éste devuelve un nuevo ElementHandler para procesar ese elemento (el cual puede ser asimismo un objeto), o un null para ignorar ese elemento y todos sus contenidos (por ejemplo para elementos desconocidos). closeElement() es invocado cuando los subelementos finalizan, y endHandler() es invocado cuando el elemento Procesador actual termina. El JavaDoc debería proporcionarle los detalles necesarios.
Existen algunos Procesadores preparados, el más utilizado probablemente sea PlainTextHandler. Este procesador solo acepta contenido de texto e ignora todos los subelementos. Si el archivo XML contiene <element>valor</element>, entonces el procesador puede devolver un PlainTextHandler y procesar el contenido sin el método closeElement(), eliminando la necesidad de escribir un procesador especializado para ese elemento.
La lectura XML se inicia invocando a SimpleSAX.readXML() con la entrada de la fuente y el inicial ElementHandler.
La carga del documento OpenRocket está implementada en .file.openrocket.OpenRocketLoader. Aquí he utilizado un poco más el código repetido para poder definir la mayor parte de las preferencias de la estructura del cohete sin necesidad de emplear procesadores separados para ello.
El formato nativo OpenRocket utliza la extensión de archivo *.ork. Es un formato XML, el cual puede opcionalmente comprimirse utilizando GZIP. (La extensión *.ork.gz también es aceptado por los diálogos, se recomienda hacerlo a través del .ork)
Actualmente el formato de archivo no está documentado como en otros como referencias de la implementación, ni existe un esquema del XML. Esto cambiará en el futuro. Vea #Unidades utilizadas en OpenRocket para obtener detalles sobre las unidades.
Cada vez que el formato del XML cambia, el nímero de la versión se incrementa. Este número de versión no se enlaza con la del OpenRocket que generó el archivo, pero en su lugar describe el formato del archivo. En posteriores versiones de OpenRocket trataremos de almacenar los archivos en un formato más antiguo que soporte todas las características necesarias. Los cambios en el formato se describen en el fileformat.txt archivo en SVN. Italic text