Source code for pyNastran.bdf.mesh_utils.flip_shell_normals

from pyNastran.bdf.bdf import BDF


[docs] def flip_shell_normals(model: BDF, zero_zoffset: float) -> None: log = model.log skip_elements = { # nothing to convert (verified) 'CCONEAX', 'CELAS1', 'CELAS2', 'CELAS3', 'CELAS4', 'CDAMP1', 'CDAMP2', 'CDAMP3', 'CDAMP4', 'CDAMP5', 'CMASS1', 'CMASS2', 'CMASS3', 'CMASS4', 'CVISC', 'CBUSH', 'CBUSH1D', 'CBUSH2D', 'CROD', 'CTUBE', 'CBAR', 'CBEAM', 'CSHEAR', 'CQUADX', 'CTRIAX', 'CTRIAX6', 'CTETRA', 'CPENTA', 'CHEXA', 'CPYRAM', 'CRAC2D', 'CRAC3D', 'CHBDYG', 'CHBDYE', 'CHBDYP', # TODO: NX-verify 'CTRAX3', 'CTRAX6', 'CPLSTN3', 'CPLSTN6', 'CPLSTN4', 'CPLSTN8', 'CQUADX4', 'CQUADX8', # acoustic 'CHACAB', } shells = { 'CTRIA3', 'CTRIA6', 'CTRIAR', 'CQUAD4', 'CQUAD8', 'CQUADR', 'CQUAD', } for eid, elem in model.elements.items(): elem_type = elem.type if elem_type in shells: elem.flip_normal() if zero_zoffset: elem.zoffset = 0. elif elem_type in skip_elements: pass else: log.warning(f'cannot flip {elem_type}')