Source code for modsim_package.abaqus.rectangle_geometry

import os
import sys
import inspect
import argparse

import abaqus
import abaqusConstants


[docs] def main(output_file, model_name, part_name, width, height): """Create a simple rectangle geometry. This script creates a simple Abaqus model with a single rectangle part. :param str output_file: The output file for the Abaqus model. Will be stripped of the extension and ``.cae`` will be used. :param str model_name: The name of the Abaqus model :param str part_name: The name of the Abaqus part :param float width: The rectangle width :param float height: The rectangle height :returns: writes ``output_file``.cae and ``output_file``.jnl """ output_file = os.path.splitext(output_file)[0] + ".cae" abaqus.mdb.Model(name=model_name, modelType=abaqusConstants.STANDARD_EXPLICIT) sketch = abaqus.mdb.models[model_name].ConstrainedSketch(name=part_name, sheetSize=1.0) sketch.setPrimaryObject(option=abaqusConstants.STANDALONE) sketch.rectangle(point1=(0.0, 0.0), point2=(width, height)) sketch.unsetPrimaryObject() part = abaqus.mdb.models[model_name].Part( name=part_name, dimensionality=abaqusConstants.TWO_D_PLANAR, type=abaqusConstants.DEFORMABLE_BODY, ) part.BaseShell(sketch=sketch) abaqus.mdb.saveAs(pathName=output_file)
# Comment used in tutorial code snippets: marker-1
[docs] def get_parser(): """Return parser for CLI options All options should use the double-hyphen ``--option VALUE`` syntax to avoid clashes with the Abaqus option syntax, including flag style arguments ``--flag``. Single hyphen ``-f`` flag syntax often clashes with the Abaqus command line options and should be avoided. :returns: parser :rtype: argparse.ArgumentParser """ # The global '__file__' variable doesn't appear to be set when executing from Abaqus CAE filename = inspect.getfile(lambda: None) basename = os.path.basename(filename) basename_without_extension, extension = os.path.splitext(basename) # Construct a part name from the filename less the workflow step suffix default_part_name = basename_without_extension suffix = "_geometry" if default_part_name.endswith(suffix): default_part_name = default_part_name[: -len(suffix)] # Set default parameter values default_output_file = "{}".format(basename_without_extension) default_width = 1.0 default_height = 1.0 prog = "abaqus cae -noGui {} --".format(basename) cli_description = "Create a simple rectangle geometry and write an ``output_file``.cae Abaqus model file." parser = argparse.ArgumentParser(description=cli_description, prog=prog) parser.add_argument( "--output-file", type=str, default=default_output_file, # fmt: off help="The output file for the Abaqus model. " "Will be stripped of the extension and ``.cae`` will be used, e.g. ``output_file``.cae", # fmt: on ) parser.add_argument( "--model-name", type=str, default=default_part_name, help="The name of the Abaqus model", ) parser.add_argument( "--part-name", type=str, default=default_part_name, help="The name of the Abaqus part", ) parser.add_argument( "--width", type=float, default=default_width, help="The rectangle width. Positive float.", ) parser.add_argument( "--height", type=float, default=default_height, help="The rectangle height. Positive float.", ) return parser
# Comment used in tutorial code snippets: marker-2 if __name__ == "__main__": parser = get_parser() # Abaqus does not strip the CAE options, so we have to skip the unknown options related to the CAE CLI. try: args, unknown = parser.parse_known_args() except SystemExit as err: sys.exit(err.code) # Check for typos in expected arguments. Assumes all arguments use ``--option`` syntax, which is unused by Abaqus. possible_typos = [argument for argument in unknown if argument.startswith("--")] if len(possible_typos) > 0: raise RuntimeError("Found possible typos in CLI option(s) {}".format(possible_typos)) sys.exit( main( output_file=args.output_file, model_name=args.model_name, part_name=args.part_name, width=args.width, height=args.height, ) )