def update_boom_3D(workflow=None): boom_list = read_boom_objects() for l in boom_list: design_type_, boom_type_ = get_boom_object_data(l) generate_boom_3D_model(workflow, name=l, boom_type_=boom_type_, design_type_=design_type_)
def update_boom_3d(config=None): boom_list = read_boom_objects() lofts = {} try: for l in boom_list: design_type_, boom_type_ = get_boom_object_data(l) lofts.update({ l: generate_boom_3D_model(config, name=l, boom_type_=boom_type_, design_type_=design_type_) }) except: pass return lofts
def load_booms(self): try: boom_list = read_boom_objects() if len(boom_list) == 0: self.new_boom() for l in boom_list: design_type_, boom_type_ = get_boom_object_data(l) if design_type_ == unconventional_design: self.boom_tab_ = boom_tab(l, boom_type_, design_type_) self.booms.append(self.boom_tab_) self.booms.append(self.boom_tab_) self.inputArea.addTab(self.boom_tab_, l) self.indexes.append(l) elif design_type_ == conventional_design: self.boom_tab_ = fuselage_tab(l, boom_type_, design_type_) self.booms.append(self.boom_tab_) self.booms.append(self.boom_tab_) self.inputArea.addTab(self.boom_tab_, l) self.indexes.append(l) except: self.new_boom()
def get_booms(): try: boom_list = read_boom_objects() fuselages = [] for l in boom_list: design_type_, surface_type_ = get_boom_object_data(l) xsecs = [] root_position_x_, root_position_y_, root_position_z_ = 0, 0, 0 xz_mirror_ = False if design_type_ == conventional_design: radii, x, z, root_position_x_, root_position_y_, root_position_z_, xz_mirror_ = get_parameters_for_fuselage( l) for radius, x_, z_ in zip(radii, x, z): xsecs.append( FuselageXSec(x_c=x_, y_c=0, z_c=z_, radius=radius)) fuselages.append( Fuselage(name=l, x_le=root_position_x_, y_le=root_position_y_, z_le=root_position_z_, symmetric=xz_mirror_, xsecs=xsecs)) elif design_type_ == unconventional_design: radii, x, z, root_position_x_, root_position_y_, root_position_z_, xz_mirror_ = get_parameters_for_boom( l) for radius, x_, z_ in zip(radii, x, z): xsecs.append( FuselageXSec(x_c=x_, y_c=0, z_c=z_, radius=radius)) fuselages.append( Fuselage(name=l, x_le=root_position_x_, y_le=root_position_y_, z_le=root_position_z_, symmetric=xz_mirror_, xsecs=xsecs)) return fuselages except: return []
def build_datcom_input(): surface_list = read_lifting_surface_objects() ls_statements = [] boom_statements = [] synths={} for l in surface_list: design_type_, surface_type_ = get_surface_object_data(l) span_, tip_chord, root_chord, dihedral_, sweep_ = 0, 0, 0, 0, 0 profile_="0012" if design_type_ == unconventional_design: span_, tip_chord, root_chord, dihedral_, sweep_,profile_ = get_parameters_from_sections_lifting_surface(l) elif design_type_ == conventional_design: print(l) span_, tip_chord, root_chord, dihedral_, sweep_,profile_ = get_parameters_from_conventional_wing(l) print(profile_.split("naca")) if surface_type_ == wing: synths.update({"wing": span_ / 2}) ls_statements.append(set_planform_parameters( type_1="W,G", tip_chord=tip_chord, root_chord=root_chord, semi_span=(span_ / 2), sweep_angle=sweep_, dihedral_=1.2, profile=profile_.split("naca")[1] )) elif surface_type_ == fin: synths.update({"vtp":span_ / 2}) ls_statements.append(set_planform_parameters( type_1="V,T", tip_chord=tip_chord, root_chord=root_chord, semi_span=(span_ / 2), sweep_angle=sweep_, dihedral_=1.3, profile=profile_.split("naca")[1] )) else: synths.update({"vtp": span_ / 2}) ls_statements.append(set_planform_parameters( type_1="H,T", tip_chord=tip_chord, root_chord=root_chord, semi_span=(span_ / 2), sweep_angle=sweep_, dihedral_=1.3, profile=profile_.split("naca")[1] )) try: boom_list = read_boom_objects() for l in boom_list: design_type_, surface_type_ = get_boom_object_data(l) if design_type_ == unconventional_design: pass elif design_type_ == conventional_design: radii, x, z = get_parameters_from_conventional_boom(l) boom_statements.append(set_body_parameters_radius(section_positions=x, radius_of_sections=radii, iter_=(boom_list.index(l) + 1))) except: pass mesh = get_center_of_mass() try: value=synths["vtp"] except: synths.update({"vtp":0}) try: value=synths["htp"] except: synths.update({"htp":0}) input_ = "".join([set_flight_conditions(mach_numbers=get_mach_number(), angle_of_attack=get_aoa_range(), altitude=get_altitude()), set_synths_parameters(center_of_gravity_x=round(mesh["x"],2),center_of_gravity_z=round(mesh["z"],2), vtp_tip_position_x=round(synths.get("vtp"),2), htp_tip_position_x=round(synths.get("htp"),2)), "".join(ls_statements), "".join(boom_statements), create_footer()]) database.write_datcom_input(input=input_)