def cmd_line_export_mcid(): # pragma: no cover """command line interface to export_mcids""" from docopt import docopt import pyNastran msg = "Usage:\n" msg += " bdf export_mcids IN_BDF_FILENAME [-o OUT_CSV_FILENAME] [--no_x] [--no_y]\n" msg += ' bdf export_mcids -h | --help\n' msg += ' bdf export_mcids -v | --version\n' msg += '\n' msg += "Positional Arguments:\n" msg += " IN_BDF_FILENAME path to input BDF/DAT/NAS file\n" msg += '\n' msg += 'Options:\n' msg += " -o OUT, --output OUT_CSV_FILENAME path to output CSV file\n\n" msg += 'Data Suppression:\n' msg += " --no_x, don't write the x axis\n" msg += " --no_y, don't write the y axis\n" msg += 'Info:\n' msg += ' -h, --help show this help message and exit\n' msg += " -v, --version show program's version number and exit\n" if len(sys.argv) == 1: sys.exit(msg) ver = str(pyNastran.__version__) #type_defaults = { # '--nerrors' : [int, 100], #} data = docopt(msg, version=ver) print(data) size = 16 bdf_filename = data['IN_BDF_FILENAME'] csv_filename = data['--output'] if csv_filename is None: csv_filename = 'mcids.csv' export_xaxis = True export_yaxis = True if data['--no_x']: export_xaxis = False if data['--no_y']: export_yaxis = False export_mcids(bdf_filename, csv_filename, export_xaxis=export_xaxis, export_yaxis=export_yaxis)
def cmd_line_export_mcids(): # pragma: no cover """command line interface to export_mcids""" from docopt import docopt import pyNastran msg = ( 'Usage:\n' ' bdf export_mcids IN_BDF_FILENAME [-o OUT_CSV_FILENAME] [--iplies PLIES] [--no_x] [--no_y]\n' ' bdf export_mcids -h | --help\n' ' bdf export_mcids -v | --version\n' '\n' 'Positional Arguments:\n' ' IN_BDF_FILENAME path to input BDF/DAT/NAS file\n' '\n' 'Options:\n' ' -o OUT, --output OUT_CSV_FILENAME path to output CSV file\n' ' --iplies PLIES the plies to export; comma separated (default=0)\n' '\n' 'Data Suppression:\n' " --no_x, don't write the x axis\n" " --no_y, don't write the y axis\n" '\n' 'Info:\n' ' -h, --help show this help message and exit\n' " -v, --version show program's version number and exit\n" ) if len(sys.argv) == 1: sys.exit(msg) ver = str(pyNastran.__version__) #type_defaults = { # '--nerrors' : [int, 100], #} data = docopt(msg, version=ver) print(data) size = 16 bdf_filename = data['IN_BDF_FILENAME'] csv_filename_in = data['--output'] if csv_filename_in is None: csv_filename_in = 'mcids.csv' export_xaxis = True export_yaxis = True if data['--no_x']: export_xaxis = False if data['--no_y']: export_yaxis = False csv_filename_base = os.path.splitext(csv_filename_in)[0] iplies = [0] if data['--iplies']: iplies = data['--iplies'].split(',') iplies = [int(iply) for iply in iplies] print('iplies = %s' % iplies) from pyNastran.bdf.bdf import read_bdf model = read_bdf(bdf_filename, xref=False) #, log=log, debug=debug) model.safe_cross_reference() for iply in iplies: csv_filename = csv_filename_base + '_ply=%i.csv' % iply export_mcids(model, csv_filename, export_xaxis=export_xaxis, export_yaxis=export_yaxis, iply=iply) model.log.info('wrote %s' % csv_filename)
def test_shells_add(self): """ tests differential mass and material coordinate systems on CQUAD4/CTRIA3 elements """ pid = 10 mid1 = 100 model = BDF(debug=False) model.add_grid(1, [0., 0., 0.]) model.add_grid(2, [1., 0., 0.]) model.add_grid(3, [1., 1., 0.]) model.add_grid(4, [0., 1., 0.]) model.add_cquad4(10, pid, [1, 2, 3, 4]) model.add_ctria3(11, pid, [1, 2, 3]) mids = [100, 100, 100] thicknesses = [0.1, 0.1, 0.1] model.add_pcomp(pid, mids, thicknesses, thetas=[0., 45., 90.], souts=None, nsm=0., sb=0., ft=None, tref=0., ge=0., lam=None, z0=None, comment='') pid = 11 model.add_ctria3(12, pid, [1, 2, 3], theta_mcid=45., zoffset=0., tflag=0, T1=0.1, T2=0.1, T3=0.1, # absolute - mass=0.1*0.5=0.05 comment='') model.add_ctria3(13, pid, [1, 2, 3], theta_mcid=1, zoffset=0., tflag=0, T1=0.1, T2=0.1, T3=0.1, # absolute comment='') model.add_cquad4(14, pid, [1, 2, 3, 4], theta_mcid=45., zoffset=0., tflag=0, T1=0.1, T2=0.1, T3=0.1, T4=0.1, # absolute comment='') model.add_cquad4(15, pid, [1, 2, 3, 4], theta_mcid=1, zoffset=0., tflag=1, T1=0.1, T2=0.1, T3=0.1, T4=0.1, # relative comment='') origin = [0., 0., 0.] zaxis = [0., 0., 1.] xzplane = [1., 0., 0.] model.add_cord2r(1, origin, zaxis, xzplane, rid=0) model.add_pshell(pid, mid1=mid1, t=2.) e11 = 1.0 e22 = 2.0 nu12 = 0.3 model.add_mat8(mid1, e11, e22, nu12, rho=1.0) model.validate() model.cross_reference() model.pop_xref_errors() mass = model.mass_properties(element_ids=13)[0] bdf_file = StringIO() model.write_bdf(bdf_file) model.uncross_reference() model.cross_reference() model.pop_xref_errors() assert np.allclose(mass, 0.05), mass # t=0.1; A=0.5; nsm=0.; mass=0.05 mass = model.mass_properties(element_ids=14)[0] bdf_file = StringIO() model.write_bdf(bdf_file, close=False) bdf_file.seek(0) assert np.allclose(mass, 0.1), mass # t=0.1; A=1.0; nsm=0.; mass=0.1 csv_filename = 'mcids.csv' export_mcids(model, csv_filename=csv_filename, eids=[12, 13], export_xaxis=True, export_yaxis=True, iply=0) #with open(csv_filename, 'r') as csv_file: #lines = csv_file.readlines() #assert len(lines) > 0, 'lines=%s' % lines #for line in lines: #print(line.rstrip()) #print('-------------') export_mcids(model, csv_filename=csv_filename, eids=[14, 15], export_xaxis=True, export_yaxis=True, iply=0) model.uncross_reference() model.safe_cross_reference() model.uncross_reference() os.remove(csv_filename) #bdf_file = model.write_bdf(bdf_file) model2 = BDF(debug=False) model2.read_bdf(bdf_file, punch=True)
def test_export_mcids(self): """creates material coordinate systems""" log = SimpleLogger(level='error') bdf_filename = os.path.join(MODEL_PATH, 'bwb', 'bwb_saero.bdf') csv_filename = os.path.join(MODEL_PATH, 'bwb', 'mcids.csv') export_mcids(bdf_filename, csv_filename, export_xaxis=True, export_yaxis=True, iply=9, log=log, debug=False) model = read_bdf(bdf_filename, xref=False, debug=False) model.safe_cross_reference() #os.remove('mcids.csv') argv = ['bdf', 'export_mcids', bdf_filename, '-o', csv_filename, '--iplies', '0,1,2,3,4,5,6,7,8,9,10', '--no_x', '--no_y'] with self.assertRaises(DocoptExit): # can't define both --no_x and --no_y cmd_line(argv=argv, quiet=True) argv = ['bdf', 'export_mcids', bdf_filename, '-o', csv_filename, '--iplies', '0,1,2,3,4,5,6,7,8,9', '--no_x'] cmd_line(argv=argv, quiet=True) eids = [1204, 1211] export_mcids(model, csv_filename=None, eids=eids, export_xaxis=True, export_yaxis=True, iply=9, log=log, debug=False) export_mcids(model, csv_filename=None, eids=eids, export_xaxis=True, export_yaxis=False, iply=9, log=log, debug=False) export_mcids(model, csv_filename=None, eids=eids, export_xaxis=False, export_yaxis=True, iply=9, log=log, debug=False) with self.assertRaises(AssertionError): # export_xaxis and export_yaxis can't both be False export_mcids(model, csv_filename=None, eids=eids, export_xaxis=False, export_yaxis=False, iply=9) with self.assertRaises(RuntimeError): # no iply=10 export_mcids(model, csv_filename, eids=eids, export_xaxis=True, export_yaxis=True, iply=10)
def test_export_mcids(self): """creates material coordinate systems""" bdf_filename = os.path.abspath( os.path.join(pkg_path, '..', 'models', 'bwb', 'bwb_saero.bdf')) csv_filename = os.path.abspath( os.path.join(pkg_path, '..', 'models', 'bwb', 'mcids.csv')) export_mcids(bdf_filename, csv_filename, export_xaxis=True, export_yaxis=True, iply=9, log=log, debug=False) model = read_bdf(bdf_filename, xref=False, debug=False) model.safe_cross_reference() eids = [1204, 1211] export_mcids(model, csv_filename=None, eids=eids, export_xaxis=True, export_yaxis=True, iply=9, log=log, debug=False) export_mcids(model, csv_filename=None, eids=eids, export_xaxis=True, export_yaxis=False, iply=9, log=log, debug=False) export_mcids(model, csv_filename=None, eids=eids, export_xaxis=False, export_yaxis=True, iply=9, log=log, debug=False) with self.assertRaises(AssertionError): export_mcids(model, csv_filename=None, eids=eids, export_xaxis=False, export_yaxis=False, iply=9) with self.assertRaises(RuntimeError): export_mcids(model, csv_filename, eids=eids, export_xaxis=True, export_yaxis=True, iply=10)
def cmd_line_export_mcids(argv=None, quiet=False): """command line interface to export_mcids""" if argv is None: argv = sys.argv from docopt import docopt msg = ( 'Usage:\n' ' bdf export_mcids IN_BDF_FILENAME [-o OUT_CSV_FILENAME] [--iplies PLIES] [--no_x | --no_y]\n' ' bdf export_mcids -h | --help\n' ' bdf export_mcids -v | --version\n' '\n' 'Positional Arguments:\n' ' IN_BDF_FILENAME path to input BDF/DAT/NAS file\n' '\n' 'Options:\n' ' -o OUT, --output OUT_CSV_FILENAME path to output CSV file\n' ' --iplies PLIES the plies indices to export; comma separated (default=0)\n' '\n' 'Data Suppression:\n' " --no_x, don't write the x axis\n" " --no_y, don't write the y axis\n" '\n' 'Info:\n' ' -h, --help show this help message and exit\n' " -v, --version show program's version number and exit\n") _filter_no_args(msg, argv, quiet=quiet) ver = str(pyNastran.__version__) #type_defaults = { # '--nerrors' : [int, 100], #} data = docopt(msg, version=ver, argv=argv[1:]) if not quiet: # pragma: no cover print(data) #size = 16 bdf_filename = data['IN_BDF_FILENAME'] csv_filename_in = data['--output'] if csv_filename_in is None: csv_filename_in = 'mcids.csv' export_xaxis = True export_yaxis = True if data['--no_x']: export_xaxis = False if data['--no_y']: export_yaxis = False csv_filename_base = os.path.splitext(csv_filename_in)[0] iplies = [0] if data['--iplies']: iplies = data['--iplies'].split(',') iplies = [int(iply) for iply in iplies] if not quiet: # pragma: no cover print('iplies = %s' % iplies) from pyNastran.bdf.bdf import read_bdf level = 'debug' if not quiet else 'warning' log = SimpleLogger(level=level, encoding='utf-8', log_func=None) model = read_bdf(bdf_filename, log=log, xref=False) model.safe_cross_reference() for iply in iplies: csv_filename = csv_filename_base + '_ply=%i.csv' % iply export_mcids(model, csv_filename, export_xaxis=export_xaxis, export_yaxis=export_yaxis, iply=iply) model.log.info('wrote %s' % csv_filename)