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
Example #3
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
Example #4
0
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")