Schema versions are no longer locked to IFC4 and 2X3. You can now load express schemas at run time.

This commit is contained in:
Dion Moult
2022-01-10 10:45:46 +11:00
parent 6c991ed356
commit 43c74010a5
20 changed files with 282 additions and 14 deletions
@@ -0,0 +1,13 @@
@debug
Feature: Debug
Scenario: Select express file
Given an empty Blender session
When I press "bim.select_express_file(filepath='{cwd}/test/files/test.exp')"
Then nothing happens
Scenario: Parse express
Given an empty Blender session
And I press "bim.select_express_file(filepath='{cwd}/test/files/test.exp')"
When I press "bim.parse_express"
Then nothing happens
+7
View File
@@ -63,6 +63,13 @@ def context():
prophet.verify()
@pytest.fixture
def debug():
prophet = Prophecy(blenderbim.core.tool.Debug)
yield prophet
prophet.verify()
@pytest.fixture
def drawing():
prophet = Prophecy(blenderbim.core.tool.Drawing)
+27
View File
@@ -0,0 +1,27 @@
# BlenderBIM Add-on - OpenBIM Blender Add-on
# Copyright (C) 2022 Dion Moult <dion@thinkmoult.com>
#
# This file is part of BlenderBIM Add-on.
#
# BlenderBIM Add-on is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BlenderBIM Add-on 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
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with BlenderBIM Add-on. If not, see <http://www.gnu.org/licenses/>.
import blenderbim.core.debug as subject
from test.core.bootstrap import debug
class TestParseExpress:
def test_run(self, debug):
debug.load_express("filename").should_be_called().will_return("schema")
debug.add_schema_identifier("schema").should_be_called()
subject.parse_express(debug, "filename")
+19
View File
@@ -0,0 +1,19 @@
SCHEMA IFCROGUE;
TYPE IfcDonkeyPowerMeasure = REAL;
END_TYPE;
TYPE IfcLabel = STRING(255);
END_TYPE;
ENTITY IfcBurbRoot
SUBTYPE OF (IfcRoot);
AcidDamage : OPTIONAL IfcDonkeyPowerMeasure;
END_ENTITY;
ENTITY IfcRoot
ABSTRACT SUPERTYPE OF (IfcBurbRoot);
Name : OPTIONAL IfcLabel;
END_ENTITY;
END_SCHEMA;
+45
View File
@@ -0,0 +1,45 @@
# BlenderBIM Add-on - OpenBIM Blender Add-on
# Copyright (C) 2022 Dion Moult <dion@thinkmoult.com>
#
# This file is part of BlenderBIM Add-on.
#
# BlenderBIM Add-on is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BlenderBIM Add-on 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
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with BlenderBIM Add-on. If not, see <http://www.gnu.org/licenses/>.
import os
import bpy
import ifcopenshell
import blenderbim.core.tool
import blenderbim.tool as tool
from test.bim.bootstrap import NewFile
from blenderbim.tool.debug import Debug as subject
from blenderbim.bim.ifc import IfcStore
class TestImplementsTool(NewFile):
def test_run(self):
assert isinstance(subject(), blenderbim.core.tool.Debug)
class TestAddSchemaIdentifier(NewFile):
def test_run(self):
subject.add_schema_identifier(TestLoadExpress().test_run())
assert IfcStore.schema_identifiers[-1] == "IFCROGUE"
class TestLoadExpress(NewFile):
def test_run(self):
cwd = os.path.dirname(os.path.realpath(__file__))
schema = subject.load_express(os.path.join(cwd, "..", "files", "test.exp"))
assert schema.schema_name == "IFCROGUE"
return schema