mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-05 20:06:25 +00:00
You can now associate IFC elements with Brick elements and navigate to them
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
# along with BlenderBIM Add-on. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import blenderbim.core.brick as subject
|
||||
from test.core.bootstrap import brick
|
||||
from test.core.bootstrap import ifc, brick
|
||||
|
||||
|
||||
class TestLoadBrickProject:
|
||||
@@ -64,3 +64,31 @@ class TestCloseBrickProject:
|
||||
def test_run(self, brick):
|
||||
brick.clear_project().should_be_called()
|
||||
subject.close_brick_project(brick)
|
||||
|
||||
|
||||
class TestConvertBrickProject:
|
||||
def test_run(self, ifc, brick):
|
||||
brick.get_brick_path_name().should_be_called().will_return("foo.ttl")
|
||||
ifc.run("library.add_library", name="foo.ttl").should_be_called().will_return("library")
|
||||
brick.get_brick_path().should_be_called().will_return("/path/to/foo.ttl")
|
||||
ifc.run(
|
||||
"library.edit_library", library="library", attributes={"Location": "/path/to/foo.ttl"}
|
||||
).should_be_called()
|
||||
subject.convert_brick_project(ifc, brick)
|
||||
|
||||
|
||||
class TestAssignBrickReference:
|
||||
def test_assigning_to_a_new_reference(self, ifc, brick):
|
||||
brick.get_library_brick_reference("library", "brick").should_be_called().will_return(None)
|
||||
ifc.run("library.add_reference", library="library").should_be_called().will_return("reference")
|
||||
brick.export_brick_attributes("brick").should_be_called().will_return("attributes")
|
||||
ifc.run("library.edit_reference", reference="reference", attributes="attributes").should_be_called()
|
||||
ifc.get_entity("obj").should_be_called().will_return("product")
|
||||
ifc.run("library.assign_reference", product="product", reference="reference").should_be_called()
|
||||
subject.assign_brick_reference(ifc, brick, obj="obj", library="library", brick_uri="brick")
|
||||
|
||||
def test_assigning_to_an_existing_reference(self, ifc, brick):
|
||||
brick.get_library_brick_reference("library", "brick").should_be_called().will_return("reference")
|
||||
ifc.get_entity("obj").should_be_called().will_return("product")
|
||||
ifc.run("library.assign_reference", product="product", reference="reference").should_be_called()
|
||||
subject.assign_brick_reference(ifc, brick, obj="obj", library="library", brick_uri="brick")
|
||||
|
||||
@@ -59,12 +59,45 @@ class TestClearProject(NewFile):
|
||||
assert len(bpy.context.scene.BIMBrickProperties.brick_breadcrumbs) == 0
|
||||
|
||||
|
||||
class TestExportBrickAttributes(NewFile):
|
||||
def test_run(self):
|
||||
assert subject.export_brick_attributes("ex:#floor") == {"Identification": "ex:#floor", "Name": "floor"}
|
||||
|
||||
|
||||
class TestGetBrickPath(NewFile):
|
||||
def test_run(self):
|
||||
TestLoadBrickFile().test_run()
|
||||
cwd = os.path.dirname(os.path.realpath(__file__))
|
||||
assert subject.get_brick_path() == os.path.join(cwd, "..", "files", "spaces.ttl")
|
||||
|
||||
|
||||
class TestGetBrickPathName(NewFile):
|
||||
def test_run(self):
|
||||
TestLoadBrickFile().test_run()
|
||||
assert subject.get_brick_path_name() == "spaces.ttl"
|
||||
|
||||
|
||||
class TestGetItemClass(NewFile):
|
||||
def test_run(self):
|
||||
TestLoadBrickFile().test_run()
|
||||
assert subject.get_item_class("ex:#floor") == "Floor"
|
||||
|
||||
|
||||
class TestGetLibraryBrickReference(NewFile):
|
||||
def test_run(self):
|
||||
ifc = ifcopenshell.file()
|
||||
library = ifc.createIfcLibraryInformation()
|
||||
reference = ifc.createIfcLibraryReference(Identification="ex:#floor", ReferencedLibrary=library)
|
||||
assert subject.get_library_brick_reference(library, "ex:#floor") == reference
|
||||
|
||||
def test_run_ifc2x3(self):
|
||||
ifc = ifcopenshell.file(schema="IFC2X3")
|
||||
tool.Ifc.set(ifc)
|
||||
reference = ifc.createIfcLibraryReference(ItemReference="ex:#floor")
|
||||
library = ifc.createIfcLibraryInformation(LibraryReference=[reference])
|
||||
assert subject.get_library_brick_reference(library, "ex:#floor") == reference
|
||||
|
||||
|
||||
class TestImportBrickClasses(NewFile):
|
||||
def test_run(self):
|
||||
TestLoadBrickFile().test_run()
|
||||
|
||||
Reference in New Issue
Block a user