@@ -358,6 +358,9 @@ function Base.setproperty!(set::Settings, sym::Symbol, val)
358358 setfield! (set, sym, Float64 (val))
359359 elseif sym == :wind_vec && ! (val isa SVec3) &&
360360 val isa AbstractVector
361+ if length (val) != 3
362+ throw (ArgumentError (" wind_vec must be an AbstractVector of length 3" ))
363+ end
361364 setfield! (set, sym,
362365 SVec3 (val[1 ], val[2 ], val[3 ]))
363366 else
@@ -530,24 +533,96 @@ function update_settings(dict, sections, settings=SETTINGS)
530533 StructTypes. constructfrom! (settings, result)
531534end
532535
536+ """
537+ wc_settings(project=PROJECT)
538+
539+ Get the winch controller (WC) settings filename from the project file.
540+
541+ Returns the filename specified in the `wc_settings` field of the system section.
542+ The project file defaults to the currently active PROJECT.
543+ """
533544function wc_settings (project= PROJECT)
534545 # determine which wc_settings to load
535546 dict = YAML. load_file (joinpath (DATA_PATH[1 ], project))
536547 dict[" system" ][" wc_settings" ]
537548end
538549
550+ """
551+ fpc_settings(project=PROJECT)
552+
553+ Get the flight path controller (FPC) settings filename from the project file.
554+
555+ Returns the filename specified in the `fpc_settings` field of the system section.
556+ The project file defaults to the currently active PROJECT.
557+ """
539558function fpc_settings (project= PROJECT)
540559 # determine which fpc_settings to load
541560 dict = YAML. load_file (joinpath (DATA_PATH[1 ], project))
542561 dict[" system" ][" fpc_settings" ]
543562end
544563
564+ """
565+ fpp_settings(project=PROJECT)
566+
567+ Get the flight path planner (FPP) settings filename from the project file.
568+
569+ Returns the filename specified in the `fpp_settings` field of the system section.
570+ The project file defaults to the currently active PROJECT.
571+ """
545572function fpp_settings (project= PROJECT)
546- # determine which fpc_settings to load
573+ # determine which fpp_settings to load
547574 dict = YAML. load_file (joinpath (DATA_PATH[1 ], project))
548575 dict[" system" ][" fpp_settings" ]
549576end
550577
578+ """
579+ vsm_settings_file(project=PROJECT)
580+
581+ Get the vortex step model (VSM) settings filename from the project file.
582+
583+ Returns the filename specified in the `vsm_settings` field of the system section.
584+ The project file defaults to the currently active PROJECT.
585+ """
586+ function vsm_settings_file (project= PROJECT)
587+ # determine which vsm_settings to load
588+ dict = YAML. load_file (joinpath (DATA_PATH[1 ], project))
589+ dict[" system" ][" vsm_settings" ]
590+ end
591+
592+ """
593+ aero_geometry_file(project=PROJECT)
594+
595+ Get the aerodynamic geometry filename from the project file.
596+
597+ Returns the filename specified in the `aero_geometry` field of the system section.
598+ The project file defaults to the currently active PROJECT.
599+ """
600+ function aero_geometry_file (project= PROJECT)
601+ # determine which aero_geometry to load
602+ dict = YAML. load_file (joinpath (DATA_PATH[1 ], project))
603+ dict[" system" ][" aero_geometry" ]
604+ end
605+
606+ """
607+ structural_geometry_file(project=PROJECT)
608+
609+ Get the structural geometry filename from the project file.
610+
611+ Returns the filename specified in the `structural_geometry` field of the system section.
612+ Falls back to `struc_geometry` for compatibility.
613+ The project file defaults to the currently active PROJECT.
614+ """
615+ function structural_geometry_file (project= PROJECT)
616+ # determine which structural_geometry to load (or legacy struc_geometry)
617+ dict = YAML. load_file (joinpath (DATA_PATH[1 ], project))
618+ sys = dict[" system" ]
619+ if haskey (sys, " structural_geometry" )
620+ sys[" structural_geometry" ]
621+ else
622+ sys[" struc_geometry" ]
623+ end
624+ end
625+
551626"""
552627 se(project=PROJECT; relax=false)
553628
0 commit comments