Source code for aerosandbox.geometry.openvsp_io.asb_to_openvsp.airplane_vspscript_generator

import aerosandbox.numpy as np
from aerosandbox.geometry.airplane import Airplane
from textwrap import indent, dedent
from aerosandbox.geometry.openvsp_io.asb_to_openvsp import _utilities
from aerosandbox.geometry.openvsp_io.asb_to_openvsp.wing_vspscript_generator import generate_wing
from aerosandbox.geometry.openvsp_io.asb_to_openvsp.fuselage_vspscript_generator import generate_fuselage
from aerosandbox.geometry.openvsp_io.asb_to_openvsp.propulsor_vspscript_generator import generate_propulsor


[docs]def generate_airplane( airplane: Airplane, include_main=True, ) -> str: """ Generates a VSPScript file for an Airplane object. Args: airplane: The Airplane object to generate a VSPScript file for. Returns: A VSPScript file as a string. """ script = "" for wing in airplane.wings: script += f"""\ {{ {indent(generate_wing(wing, include_main=False), " ")} }} """ for fuselage in airplane.fuselages: script += f"""\ {{ {indent(generate_fuselage(fuselage, include_main=False), " ")} }} """ for propulsor in airplane.propulsors: script += f"""\ {{ {indent(generate_propulsor(propulsor, include_main=False), " ")} }} """ if include_main: script = _utilities.wrap_script(script) return script
if __name__ == '__main__': from aerosandbox.geometry.wing import Wing, WingXSec from aerosandbox.geometry.airfoil.airfoil import Airfoil
[docs] wing = Wing( name="Main Wing", symmetric=True, xsecs=[ WingXSec( xyz_le=[0.5, 0, 0], chord=1.1, twist=5, airfoil=Airfoil(name="dae11") ), WingXSec( xyz_le=[1, 2, 0], chord=0.9, twist=5, airfoil=Airfoil(name="NACA4412") ), WingXSec( xyz_le=[2, 5, 0], chord=0.5, twist=0, airfoil=Airfoil(name="NACA3412") ), WingXSec( xyz_le=[2.5, 5.5, 1], chord=0.25, twist=0, airfoil=Airfoil(name="NACA2412") ) ] )
from aerosandbox.geometry.fuselage import Fuselage, FuselageXSec af = Airfoil("ls013") x = np.sinspace(0, 1, 10) fuse = Fuselage( name="Fuse", xsecs=[ FuselageXSec( xyz_c=[xi, 0, 0.05 * xi ** 2], width=2 * af.local_thickness(xi), height=af.local_thickness(xi), shape=4 ) for xi in x ] ) from aerosandbox.geometry.propulsor import Propulsor prop = Propulsor( name="Prop", xyz_c=np.array([0.5, 0.4, 0.3]), xyz_normal=np.array([1, 0.2, 0.3]), radius=0.6, ) airplane = Airplane( name="Aircraft", wings=[wing], fuselages=[fuse], propulsors=[prop] ) print(generate_airplane(airplane)) with open("test.vspscript", "w") as f: f.write(generate_airplane(airplane))