mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 09:48:32 +00:00
util.selector.set_element_value to work w/o preassigned placement #4439
This commit is contained in:
@@ -20,6 +20,7 @@ import pytest
|
||||
import test.bootstrap
|
||||
import ifcopenshell.api
|
||||
import ifcopenshell.util.selector as subject
|
||||
import ifcopenshell.util.placement
|
||||
import numpy as np
|
||||
|
||||
|
||||
@@ -272,14 +273,24 @@ class TestSetElementValue(test.bootstrap.IFC4):
|
||||
def test_set_xyz_coordinates(self):
|
||||
ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcProject")
|
||||
ifcopenshell.api.run("unit.assign_unit", self.file)
|
||||
element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall")
|
||||
ifcopenshell.api.run("geometry.edit_object_placement", self.file, product=element, is_si=False)
|
||||
for coord, value in zip("xyz", ("5", "10", "15")):
|
||||
subject.set_element_value(self.file, element, coord, value)
|
||||
|
||||
items = list(zip("xyz", ("5", "10", "15")))
|
||||
matrix = np.eye(4)
|
||||
matrix[:, 3] = (5, 10, 15, 1)
|
||||
|
||||
element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall")
|
||||
ifcopenshell.api.run("geometry.edit_object_placement", self.file, product=element, is_si=False)
|
||||
for coord, value in items:
|
||||
subject.set_element_value(self.file, element, coord, value)
|
||||
assert np.array_equal(ifcopenshell.util.placement.get_local_placement(element.ObjectPlacement), matrix)
|
||||
|
||||
element_without_placement = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall")
|
||||
for coord, value in items:
|
||||
subject.set_element_value(self.file, element_without_placement, coord, value)
|
||||
assert np.array_equal(
|
||||
ifcopenshell.util.placement.get_local_placement(element_without_placement.ObjectPlacement), matrix
|
||||
)
|
||||
|
||||
|
||||
class TestSelector(test.bootstrap.IFC4):
|
||||
def test_selecting_by_class(self):
|
||||
|
||||
Reference in New Issue
Block a user