mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 09:48:32 +00:00
Corrects nesting of referents
This commit is contained in:
@@ -67,11 +67,11 @@ def test_add_segment_to_layout():
|
||||
|
||||
_add_segment_to_layout(file, horizontal_alignment, alignment_segment)
|
||||
|
||||
assert len(horizontal_alignment.IsNestedBy) == 2
|
||||
referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, horizontal_alignment)
|
||||
assert len(horizontal_alignment.IsNestedBy) == 1
|
||||
segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(horizontal_alignment)
|
||||
assert len(segment_nest.RelatedObjects) == 2
|
||||
assert len(referent_nest.RelatedObjects) == 2
|
||||
referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, alignment)
|
||||
assert len(referent_nest.RelatedObjects) == 3
|
||||
|
||||
|
||||
test_add_segment_to_layout()
|
||||
|
||||
@@ -39,14 +39,17 @@ def test_add_stationing_to_alignment():
|
||||
|
||||
alignment = ifcopenshell.api.alignment.create(file, "TestAlignment", start_station=2000.0)
|
||||
|
||||
for rel in alignment.IsNestedBy:
|
||||
for referent in rel.RelatedObjects:
|
||||
if referent.is_a("IfcReferent"):
|
||||
assert referent.PredefinedType == "STATION"
|
||||
assert referent.Name == "2+000.000"
|
||||
assert ifcopenshell.util.element.get_pset(element=referent, name="Pset_Stationing")
|
||||
assert (
|
||||
ifcopenshell.util.element.get_pset(element=referent, name="Pset_Stationing", prop="Station")
|
||||
== 2000.0
|
||||
)
|
||||
assert referent.ObjectPlacement != None
|
||||
referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,alignment)
|
||||
referent = referent_nest.RelatedObjects[0]
|
||||
|
||||
assert referent.PredefinedType == "STATION"
|
||||
assert referent.Name == "2+000.000"
|
||||
assert ifcopenshell.util.element.get_pset(element=referent, name="Pset_Stationing")
|
||||
assert (
|
||||
ifcopenshell.util.element.get_pset(element=referent, name="Pset_Stationing", prop="Station")
|
||||
== 2000.0
|
||||
)
|
||||
assert referent.ObjectPlacement != None
|
||||
|
||||
|
||||
test_add_stationing_to_alignment()
|
||||
@@ -33,9 +33,13 @@ def test_add_vertical_alignment():
|
||||
|
||||
assert len(alignment.IsDecomposedBy) == 0 # no child alignments
|
||||
assert len(alignment.IsNestedBy) == 2 # nests for layout and referents
|
||||
assert len(alignment.IsNestedBy[0].RelatedObjects) == 1
|
||||
assert ifcopenshell.api.alignment.get_referent_nest(file, alignment).RelatedObjects[0].is_a("IfcReferent")
|
||||
assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcAlignmentHorizontal")
|
||||
layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment)
|
||||
assert len(layout_nest.RelatedObjects) == 1
|
||||
assert layout_nest.RelatedObjects[0].is_a("IfcAlignmentHorizontal")
|
||||
referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,alignment)
|
||||
assert len(referent_nest.RelatedObjects) == 2
|
||||
assert referent_nest.RelatedObjects[0].is_a("IfcReferent")
|
||||
|
||||
curve = ifcopenshell.api.alignment.get_curve(alignment)
|
||||
assert curve.is_a("IfcCompositeCurve")
|
||||
|
||||
@@ -43,9 +47,10 @@ def test_add_vertical_alignment():
|
||||
|
||||
assert len(alignment.IsDecomposedBy) == 0 # no child alignments
|
||||
assert len(alignment.IsNestedBy) == 2
|
||||
assert len(alignment.IsNestedBy[0].RelatedObjects) == 2
|
||||
assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcAlignmentHorizontal")
|
||||
assert alignment.IsNestedBy[0].RelatedObjects[1].is_a("IfcAlignmentVertical")
|
||||
assert len(layout_nest.RelatedObjects) == 2
|
||||
assert layout_nest.RelatedObjects[0].is_a("IfcAlignmentHorizontal")
|
||||
assert layout_nest.RelatedObjects[1].is_a("IfcAlignmentVertical")
|
||||
|
||||
curve = ifcopenshell.api.alignment.get_curve(alignment)
|
||||
assert curve.is_a("IfcGradientCurve")
|
||||
|
||||
@@ -57,13 +62,14 @@ def test_add_vertical_alignment():
|
||||
|
||||
for child_alignment in alignment.IsDecomposedBy[0].RelatedObjects:
|
||||
assert child_alignment.is_a("IfcAlignment")
|
||||
assert len(child_alignment.IsNestedBy) == 1 # one nesting relationship for the IfcAlignmentVertical
|
||||
assert len(child_alignment.IsNestedBy[0].RelatedObjects) == 1 # The IfcAlignmentVertical
|
||||
assert child_alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcAlignmentVertical")
|
||||
assert len(child_alignment.IsNestedBy) == 2
|
||||
child_layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(child_alignment)
|
||||
assert len(child_layout_nest.RelatedObjects) == 1 # The IfcAlignmentVertical
|
||||
assert child_layout_nest.RelatedObjects[0].is_a("IfcAlignmentVertical")
|
||||
|
||||
assert len(alignment.IsNestedBy) == 2
|
||||
assert len(alignment.IsNestedBy[0].RelatedObjects) == 1
|
||||
assert alignment.IsNestedBy[0].RelatedObjects[0].is_a("IfcAlignmentHorizontal")
|
||||
assert len(layout_nest.RelatedObjects) == 1
|
||||
assert layout_nest.RelatedObjects[0].is_a("IfcAlignmentHorizontal")
|
||||
|
||||
|
||||
test_add_vertical_alignment()
|
||||
|
||||
@@ -51,17 +51,16 @@ def test_create_by_pi_method():
|
||||
layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment)
|
||||
assert len(layout_nest.RelatedObjects) == 2
|
||||
|
||||
referent_nest = ifcopenshell.api.alignment.get_referent_nest(file,alignment)
|
||||
assert len(referent_nest.RelatedObjects) == 19
|
||||
|
||||
horizontal_layout = ifcopenshell.api.alignment.get_horizontal_layout(alignment)
|
||||
horizontal_segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(horizontal_layout)
|
||||
assert len(horizontal_segment_nest.RelatedObjects) == 8
|
||||
horizontal_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, horizontal_layout)
|
||||
assert len(horizontal_referent_nest.RelatedObjects) == 8
|
||||
|
||||
vertical_layout = ifcopenshell.api.alignment.get_vertical_layout(alignment)
|
||||
vertical_segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(vertical_layout)
|
||||
assert len(vertical_segment_nest.RelatedObjects) == 10
|
||||
vertical_referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, vertical_layout)
|
||||
assert len(vertical_referent_nest.RelatedObjects) == 10
|
||||
|
||||
|
||||
test_create_by_pi_method()
|
||||
|
||||
@@ -97,36 +97,16 @@ def callback_alignment():
|
||||
|
||||
|
||||
def test_with_default_names(default_names_alignment):
|
||||
hlayout = ifcopenshell.api.alignment.get_horizontal_layout(default_names_alignment)
|
||||
referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, hlayout)
|
||||
referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, default_names_alignment)
|
||||
|
||||
assert "P.O.B." in referent_nest.RelatedObjects[0].Name
|
||||
assert "P.C." in referent_nest.RelatedObjects[1].Name
|
||||
assert "P.T." in referent_nest.RelatedObjects[2].Name
|
||||
assert "P.O.E." in referent_nest.RelatedObjects[-1].Name
|
||||
|
||||
vlayout = ifcopenshell.api.alignment.get_vertical_layout(default_names_alignment)
|
||||
referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, vlayout)
|
||||
|
||||
assert "V.P.O.B." in referent_nest.RelatedObjects[0].Name
|
||||
assert "P.V.C." in referent_nest.RelatedObjects[1].Name
|
||||
assert "P.V.T." in referent_nest.RelatedObjects[2].Name
|
||||
assert "V.P.O.E." in referent_nest.RelatedObjects[-1].Name
|
||||
expected = ["P.O.B", "P.C.", "P.T.", "P.O.E.", "V.P.O.B.", "P.V.C.", "P.V.T.", "V.P.O.E"]
|
||||
for r in referent_nest.RelatedObjects:
|
||||
assert [x in r.Name for x in expected]
|
||||
|
||||
|
||||
def test_with_callbacks(callback_alignment):
|
||||
hlayout = ifcopenshell.api.alignment.get_horizontal_layout(callback_alignment)
|
||||
referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, hlayout)
|
||||
referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, callback_alignment)
|
||||
|
||||
assert "A" in referent_nest.RelatedObjects[0].Name
|
||||
assert "Q" in referent_nest.RelatedObjects[1].Name
|
||||
assert "Q" in referent_nest.RelatedObjects[2].Name
|
||||
assert "Z" in referent_nest.RelatedObjects[-1].Name
|
||||
|
||||
vlayout = ifcopenshell.api.alignment.get_vertical_layout(callback_alignment)
|
||||
referent_nest = ifcopenshell.api.alignment.get_referent_nest(None, vlayout)
|
||||
|
||||
assert "a" in referent_nest.RelatedObjects[0].Name
|
||||
assert "q" in referent_nest.RelatedObjects[1].Name
|
||||
assert "q" in referent_nest.RelatedObjects[2].Name
|
||||
assert "z" in referent_nest.RelatedObjects[-1].Name
|
||||
expected = ["A","Q","Z","a","q","z"]
|
||||
for r in referent_nest.RelatedObjects:
|
||||
assert [x in r.Name for x in expected]
|
||||
|
||||
@@ -58,11 +58,15 @@ def test_vertical_layout_by_pi_method():
|
||||
ifcopenshell.api.alignment.layout_vertical_alignment_by_pi_method(file, vlayout, vpoints, lengths)
|
||||
|
||||
assert len(alignment.IsDecomposedBy) == 0 # no child alignments
|
||||
|
||||
assert len(alignment.IsNestedBy) == 2
|
||||
referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, alignment)
|
||||
|
||||
layout_nest = ifcopenshell.api.alignment.get_alignment_layout_nest(alignment)
|
||||
assert len(referent_nest.RelatedObjects) == 1
|
||||
assert len(layout_nest.RelatedObjects) == 2
|
||||
|
||||
referent_nest = ifcopenshell.api.alignment.get_referent_nest(file, alignment)
|
||||
assert len(referent_nest.RelatedObjects) == 6
|
||||
|
||||
segment_nest = ifcopenshell.api.alignment.get_alignment_segment_nest(vlayout)
|
||||
assert len(segment_nest.RelatedObjects) == 3
|
||||
|
||||
|
||||
Reference in New Issue
Block a user