def __init__(self, fn): if isinstance(fn, str): self.filename = fn self.xmi = xmi.doc(fn) else: self.xmi = fn self.extract_connectors() self.extract_associations() self.extract_order()
def __init__(self, fn): self.xmi = xmi.doc(fn) self.extract_connectors() self.extract_associations() self.extract_order() # Assert that we indeed have all `included_packages` in the UML packagenames_from_uml = set( map(operator.attrgetter('name'), self.xmi.by_tag_and_type["packagedElement"]["uml:Package"])) assert len(included_packages - packagenames_from_uml) == 0
def __init__(self, fn): if isinstance(fn, str): self.filename = fn self.xmi = xmi.doc(fn) else: self.xmi = fn self.extract_associations() self.extract_associations(concepts=True) self.extract_order() self.should_translate_pset_types = True
import functools from collections import defaultdict, namedtuple import xmi import express import json try: fn = sys.argv[1] except: print("Usage: python to_express.py <schema.xml>", file=sys.stderr) print(" writes converted Express schema to stdout", file=sys.stderr) exit() xmi = xmi.doc(fn) connector_data = namedtuple("connector_data", ("is_inverse", "inverse_order", "aggregation_type", "is_optional")) assocation_data = namedtuple("assocation_data", ("own_end", "type", "other_end", "asssocation")) # The order in which definitions are to appear in the Express schema EXPRESS_ORDER=("TYPE", "ENUM", "SELECT", "ENTITY", "FUNCTION", "RULE") # Extract some data from the connectors for use later on connectors = defaultdict(dict) for c in xmi/"connector": src = c|"source" tgt = c|"target"
import xmi # python ./scripts/to_json-schema.py ./schemas/HarmonisedUMLmodel.xml ./generated_schemas/IFC_4_2_SCHEMA.json try: fn = sys.argv[1] try: OUTPUT = open(sys.argv[2], "w", encoding='utf-8') except IndexError as e: OUTPUT = sys.stdout except: print("Usage: python to_ifcjson.py <schema.xml>", file=sys.stderr) exit() xmi_doc = xmi.doc(fn) bfn = os.path.basename(fn) schema_name = xmi_doc.by_tag_and_type["packagedElement"]['uml:Package'][ 1].name.replace("exp", "").upper() schema_name = "".join(["_", c][c.isalnum()] for c in schema_name) schema_name = re.sub(r"_+", "_", schema_name) schema_name = schema_name.strip('_') schemaName = schema_name def toLowerCamelcase(string): """Convert string from upper to lower camelCase""" return string[0].lower() + string[1:]
subprocess.call([ 'pdflatex', "-interaction=batchmode", os.path.basename(self.tex_file_name + '.tex') ], cwd=os.path.dirname(self.tex_file_name), stdout=subprocess.PIPE, stderr=subprocess.PIPE) subprocess.call([ "convert", "-density", "90", self.tex_file_name + '.pdf', "-quality", "50", self.tex_file_name + '.png' ]) if __name__ == '__main__': xmi = xmi.doc(xmi_fn) entities_to_retain = None # {'IfcWall', 'IfcSlab', 'IfcDoor', 'IfcWindow', 'IfcRail', 'IfcRoad', 'IfcBridge', # 'IfcWallTypeEnum', 'Pset_WallCommon','Pset_WindowCommon','Qto_WindowBaseQuantities', # 'IfcBuildingElement','IfcELement','IfcWindowStandardCase','RACK-RAIL','GUARD-RAIL','RAIL','STOCK-RAIL','CHECK-RAIL'} # Parse XMI file UMLobjects = build_uml_schema(xmi, entities_to_retain) tex_dir = os.path.join(os.path.dirname(__file__), "..", "output", os.path.basename(xmi_fn)) if not os.path.exists(tex_dir): os.makedirs(tex_dir) if not os.path.exists(os.path.join(tex_dir, "tikz-uml.sty")): copyfile(os.path.join(os.path.dirname(__file__), "tikz-uml.sty"), os.path.join(tex_dir, "tikz-uml.sty")) html = open(os.path.join(tex_dir, "index.html"), "w")