Files
IfcOpenShell/src/ifcopenshell-python/ifcopenshell/__init__.py
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

83 lines
3.0 KiB
Python
Raw Normal View History

###############################################################################
# #
# This file is part of IfcOpenShell. #
# #
# IfcOpenShell is free software: you can redistribute it and/or modify #
# it under the terms of the Lesser GNU General Public License as published by #
# the Free Software Foundation, either version 3.0 of the License, or #
# (at your option) any later version. #
# #
# IfcOpenShell is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# Lesser GNU General Public License for more details. #
# #
# You should have received a copy of the Lesser GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
###############################################################################
from __future__ import absolute_import
from __future__ import division
2016-06-22 15:03:18 +02:00
from __future__ import print_function
import os
import sys
2020-11-01 20:08:27 +07:00
if hasattr(os, "uname"):
platform_system = os.uname()[0].lower()
else:
2020-11-01 20:08:27 +07:00
platform_system = "windows"
2017-11-06 09:10:28 +01:00
if sys.maxsize == (1 << 31) - 1:
2020-11-01 20:08:27 +07:00
platform_architecture = "32bit"
else:
2020-11-01 20:08:27 +07:00
platform_architecture = "64bit"
2017-11-06 09:10:28 +01:00
2020-11-01 20:08:27 +07:00
python_version_tuple = tuple(sys.version.split(" ")[0].split("."))
2020-11-01 20:08:27 +07:00
python_distribution = os.path.join(platform_system, platform_architecture, "python%s.%s" % python_version_tuple[:2])
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "lib", python_distribution)))
try:
from . import ifcopenshell_wrapper
2016-06-22 15:03:18 +02:00
except Exception as e:
if int(python_version_tuple[0]) == 2:
# Only for py2, as py3 has exception chaining
2016-06-22 15:03:18 +02:00
import traceback
2017-11-06 11:06:40 +01:00
2016-06-22 15:03:18 +02:00
traceback.print_exc()
2020-11-01 20:08:27 +07:00
print("-" * 64)
raise ImportError("IfcOpenShell not built for '%s'" % python_distribution)
2017-11-06 09:10:28 +01:00
2016-06-22 15:03:18 +02:00
from . import guid
from .file import file
from .entity_instance import entity_instance
2017-11-06 09:10:28 +01:00
2017-12-31 12:20:13 +01:00
def open(fn):
2018-01-01 11:22:12 +01:00
f = ifcopenshell_wrapper.open(os.path.abspath(fn))
if f.good():
return file(f)
else:
raise IOError("Unable to open file for reading")
2020-11-01 20:08:27 +07:00
def create_entity(type, *args, schema='IFC4', **kwargs):
e = entity_instance((schema, type))
2020-11-01 20:08:27 +07:00
attrs = list(enumerate(args)) + [(e.wrapped_data.get_argument_index(name), arg) for name, arg in kwargs.items()]
2017-11-06 09:10:28 +01:00
for idx, arg in attrs:
e[idx] = arg
return e
2020-11-01 20:08:27 +07:00
gcroot = []
2020-11-01 20:08:27 +07:00
def register_schema(schema):
gcroot.append(schema)
ifcopenshell_wrapper.register_schema(schema.schema)
2017-11-06 09:10:28 +01:00
2020-11-01 20:08:27 +07:00
2017-10-06 16:05:55 +02:00
from .main import *