""" Extract mass from Nastran BDF/DAT file. This module provides a simple wrapper around the BDFMassExtractor class. """ from pathlib import Path from typing import Dict, Any from optimization_engine.extractors.bdf_mass_extractor import BDFMassExtractor def extract_mass_from_bdf(bdf_file: Path) -> Dict[str, Any]: """ Extract mass from Nastran BDF file. Args: bdf_file: Path to .dat or .bdf file Returns: dict: { 'total_mass': mass in kg (primary key), 'mass_kg': mass in kg, 'mass_g': mass in grams, 'cg': center of gravity [x, y, z], 'num_elements': number of elements, 'breakdown': mass by element type } """ bdf_file = Path(bdf_file) if not bdf_file.exists(): raise FileNotFoundError(f"BDF file not found: {bdf_file}") extractor = BDFMassExtractor(str(bdf_file)) result = extractor.extract_mass() # Add 'total_mass' as primary key for compatibility result["total_mass"] = result["mass_kg"] return result if __name__ == "__main__": import sys if len(sys.argv) > 1: bdf_file = Path(sys.argv[1]) result = extract_mass_from_bdf(bdf_file) print(f"Mass from BDF: {result['mass_kg']:.6f} kg ({result['mass_g']:.3f} g)") print(f"CG: {result['cg']}") print(f"Elements: {result['num_elements']}") else: print(f"Usage: python {sys.argv[0]} ")