Source code for pyNastran.bdf.test.get_uniq_fields

#!/usr/bin/python
import sys
from pyNastran.bdf.bdf import BDF, to_fields, BDFCard, interpret_value
from pyNastran.bdf.cards.utils import wipe_empty_fields
import logging

logger = logging.getLogger("bdfuniq")
logger.setLevel(logging.DEBUG)

log_formater = logging.Formatter(
    fmt="%(name)-10s: %(levelname)-5s: %(message)s")

log_handler_stderr = logging.StreamHandler()
log_handler_stderr.setFormatter(log_formater)
logger.addHandler(log_handler_stderr)

log_handler_file = logging.FileHandler("bdf_get_uniq.log", "a")
log_handler_file.setFormatter(log_formater)
logger.addHandler(log_handler_file)

includeDir = None


[docs]class BDFuniqCard(BDF): def __init__(self, log, fingset): self.card_set = fingset self.f = open('cards.out.bdf', 'wb') #self.newBDF = newBDF BDF.__init__(self, log=log) #def _parse_executive_control_deck(self): # pass
[docs] def cross_reference(self, xref): pass
[docs] def add_card(self, card_lines, card_name, comment=''): card = to_fields(card_lines, card_name) card = [interpret_value(val) for val in card] card = BDFCard(card) #if cardName == "LOAD": rec = [] for item in card: item_type = type(item) if item_type == int: item = 1 #print("int") elif item_type == float: item = 1.0 #print("float") rec.append(item) #print(type(c), c #print("*", rec) rec_str = str(rec) if not rec_str in self.card_set: #self.newBDF.add_card(card, cardName, iCard, old_card_obj) #print(card) self.card_set.add(rec_str)
[docs] def is_reject(self, cardName): """Can the card be read""" if cardName.startswith('='): return False elif not cardName in self.cards_to_read: if cardName: if cardName not in self.reject_count: self.log.info("RejectCardName = |%s|" % cardName) self.reject_count[cardName] = 0 self.reject_count[cardName] += 1 return False
[docs] def write_bdf(self): for card in self.card_set: self.f.write(str(card) + '\n') self.f.close()
if __name__ == '__main__': # pragma: no cover print("enter list of filenames at the command line...") card_fingerprint_set = set() infilenames = sys.argv[1:] assert len(infilenames) > 0, infilenames for infilename in infilenames: print("running infilename=%r" % infilename) try: infilename = infilename.strip() sys.stdout.flush() model = BDFuniqCard(log=logger, fingset=card_fingerprint_set) model.read_bdf(infilename) except BaseException as e: logger.error(e) print("please see cards.out.bdf") model.write_bdf() print("done...")