Exemple #1
0
def step_impl(context, guid, easting, northing, elevation):
    if IfcStore.file.schema == "IFC2X3":
        if element.is_a("IfcSite"):
            site = element
        else:
            potential_sites = [
                s for s in get_containing_spatial_elements(element)
                if s.is_a("IfcSite")
            ]
            if potential_sites:
                site = potential_sites[0]
            else:
                assert False, _(
                    "The datum element does not belong to a geolocated site")
        map_conversion = util.assert_pset(site, "EPset_MapConversion")
    else:
        map_conversion = IfcStore.file.by_type("IfcMapConversion")
        if map_conversion:
            map_conversion = map_conversion[0].get_info()
        else:
            assert False, _("No map conversion was found in the file")

    element = util.assert_guid(IfcStore.file, guid)
    if not element.ObjectPlacement:
        assert False, _("The element does not have an object placement: {}"
                        ).format(element)
    m = ifcopenshell.util.placement.get_local_placement(
        element.ObjectPlacement)
    e, n, h = ifcopenshell.util.geolocation.xyz2enh(
        m[0][3],
        m[1][3],
        m[2][3],
        float(map_conversion["Eastings"]),
        float(map_conversion["Northings"]),
        float(map_conversion["OrthogonalHeight"]),
        float(map_conversion["XAxisAbscissa"]),
        float(map_conversion["XAxisOrdinate"]),
        float(map_conversion["Scale"]),
    )
    element_x = round(e, get_decimal_points(easting))
    element_y = round(n, get_decimal_points(northing))
    element_z = round(h, get_decimal_points(elevation))
    expected_placement = (util.assert_number(easting),
                          util.assert_number(northing),
                          util.assert_number(elevation))
    if (element_x, element_y, element_z) != expected_placement:
        assert False, _(
            "The element {} is meant to have a location of {} but instead we found {}"
        ).format(element, expected_placement,
                 (element_x, element_y, element_z))
Exemple #2
0
def step_impl(context, number):
    number = util.assert_number(number)
    if IfcStore.file.schema == "IFC2X3":
        for site in IfcStore.file.by_type("IfcSite"):
            util.assert_pset(site, "EPset_MapConversion", "Scale", number)
        return
    check_ifc4_geolocation("IfcMapConversion", "Scale", number)
Exemple #3
0
def step_impl(context, guid, x, y, z):
    element = util.assert_guid(IfcStore.file, guid)
    if not element.ObjectPlacement:
        assert False, _("The element does not have an object placement: {}"
                        ).format(element)
    m = ifcopenshell.util.placement.get_local_placement(
        element.ObjectPlacement)
    element_x = round(m[0][3], get_decimal_points(x))
    element_y = round(m[1][3], get_decimal_points(y))
    element_z = round(m[2][3], get_decimal_points(z))
    expected_placement = (util.assert_number(x), util.assert_number(y),
                          util.assert_number(z))
    if (element_x, element_y, element_z) != expected_placement:
        assert False, _(
            "The element {} is meant to have a location of {} but instead we found {}"
        ).format(element, expected_placement,
                 (element_x, element_y, element_z))
Exemple #4
0
def step_impl(context, guid, number):
    number = util.assert_number(number)
    site = util.assert_guid(IfcStore.file, guid)
    util.assert_type(site, "IfcSite")
    ref = util.assert_attribute(site, "RefLatitude")
    number = ifcopenshell.util.geolocation.dd2dms(number,
                                                  use_ms=(len(ref) == 4))
    util.assert_attribute(site, "RefLatitude", number)
Exemple #5
0
def step_impl(context, number):
    number = util.assert_number(number)
    project = IfcStore.file.by_type("IfcProject")[0]
    for c in project.RepresentationContexts:
        if c.TrueNorth:
            actual_value = round(
                ifcopenshell.util.geolocation.yaxis2angle(
                    c.TrueNorth.DirectionRatios[0],
                    c.TrueNorth.DirectionRatios[1]),
                3,
            )
            value = round(number, 3)
            assert actual_value == value, _(
                'We expected a value of "{}" but instead got "{}"').format(
                    value, actual_value)
            return
    assert False, _("True north is not defined in the file")
Exemple #6
0
def step_impl(context, number):
    number = util.assert_number(number)
    if IfcStore.file.schema == "IFC2X3":
        return check_ifc2x3_geolocation("EPset_MapConversion", "Height",
                                        number)
    abscissa = check_ifc4_geolocation("IfcMapConversion",
                                      "XAxisAbscissa",
                                      should_assert=False)
    ordinate = check_ifc4_geolocation("IfcMapConversion",
                                      "XAxisOrdinate",
                                      should_assert=False)
    actual_value = round(
        ifcopenshell.util.geolocation.xaxis2angle(abscissa, ordinate), 3)
    value = round(number, 3)
    assert actual_value == value, _(
        'We expected a value of "{}" but instead got "{}"').format(
            value, actual_value)
Exemple #7
0
def step_impl(context, guid, number):
    number = util.assert_number(number)
    site = util.assert_guid(IfcStore.file, guid)
    util.assert_type(site, "IfcSite")
    util.assert_attribute(site, "RefElevation", number)