Source code for pyNastran.bdf.mesh_utils.shift

"""
defines:
 - model = shift(bdf_filename, dxyz, bdf_filename_out=None)

"""
import numpy as np

from pyNastran.bdf.mesh_utils.internal_utils import get_bdf_model


[docs] def shift(bdf_filename, dxyz, bdf_filename_out=None): """shifts the model by some amount""" if isinstance(dxyz, list): dxyz = np.array(dxyz) assert isinstance(dxyz, np.ndarray), dxyz print("dxyz = %s" % dxyz) model = get_bdf_model(bdf_filename, xref=True, log=None, debug=True) for unused_nid, node in model.nodes.items(): xyz = node.get_position() + dxyz node.set_position(model, xyz, cid=0, xref=True) for unused_caero_id, caero in model.caeros.items(): caero.shift(dxyz) if bdf_filename_out: model.write_bdf(bdf_filename_out) return model
[docs] def update_nodes(model, nid_cp_cd, xyz_cid0): """how does this work for SPOINTs/EPOINTs???""" coord = model.coords[0] all_node_ids = np.array(list(model.nodes.keys()), dtype=nid_cp_cd.dtype) nids = nid_cp_cd[:, 0] inids = np.searchsorted(nids, all_node_ids) for inid, nid in zip(inids, all_node_ids): node = model.nodes[nid] xyz = xyz_cid0[inid, :] node.xyz = xyz node.cp = 0 node.cp_ref = coord