import salome, SalomePyQt
import sys, os

sg = SalomePyQt.SalomePyQt()

# Init Salome.
salome.salome_init()
sg.activateModule("Shaper")
sg.activateModule("Geometry")


theStudy = salome.myStudy

# Import GEOM, geompy.
import GEOM
import salome_version
from salome.geom import geomBuilder

if salome_version.getVersions() >= [9,0,0]:
    geompy = geomBuilder.New()
else:
    geompy = geomBuilder.New(salome.myStudy)

# Notebook.
# import salome_notebook
# notebook = salome_notebook.NoteBook(theStudy)

# Activate Geometry module.
# import SalomePyQt
# sg = SalomePyQt.SalomePyQt()
# sg.activateModule("Geometry")
# gg = salome.ImportComponentGUI("GEOM")

O = geompy.MakeVertex(0, 0, 0)
OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
O_1 = geompy.MakeVertex(0, 0, 0)
OX_1 = geompy.MakeVectorDXDYDZ(1, 0, 0)
OY_1 = geompy.MakeVectorDXDYDZ(0, 1, 0)
OZ_1 = geompy.MakeVectorDXDYDZ(0, 0, 1)
geompy.addToStudy( O, 'O' )
geompy.addToStudy( OX, 'OX' )
geompy.addToStudy( OY, 'OY' )
geompy.addToStudy( OZ, 'OZ' )

# Errored files.
errorFiles = list()

# Iterate filenames.
for index, file in enumerate(files):
#    f = os.path.normpath(file)
    f = file
    ext = os.path.splitext(f)[1].lower()
    importedGeometry = None

    try:
        if (ext in ('.step', '.stp')):
            importedGeometry = geompy.ImportSTEP(f, False, True)
        elif (ext == '.stl'):
            importedGeometry = geompy.ImportSTL(f)
        elif (ext in ('.iges', '.igs')):
            importedGeometry = geompy.ImportIGES(f)

        if (isinstance(importedGeometry, list)):
            geompy.addToStudy(importedGeometry[0], 'ImportedGeometry_' + str(index))
        else:
            geompy.addToStudy(importedGeometry, 'ImportedGeometry_' + str(index))
    except:
        errorFiles.append(os.path.basename(f))

# Update Object Browser.
salome.sg.updateObjBrowser()

# Check if errors.
if (len(errorFiles) > 0):

    # Do not show traceback for errors.
    sys.tracebacklimit = 0

    # Raise error.
    raise Exception('CENOS: Could not load ' + ' ,'.join(map(str, errorFiles)))
