Example #1
0
def step_impl(context, guid, number):
    number = assert_number(number)
    site = IfcFile.by_guid(guid)
    if not site.is_a("IfcSite"):
        assert False, "The element {} is not an IfcSite".format(site)
    ref = assert_attribute(site, "RefLatitude")
    number = ifcopenshell.util.geolocation.dd2dms(number, use_ms=(len(ref) == 4))
    assert_attribute(site, "RefLatitude", number)
Example #2
0
def check_geocode_address(guid, spatial_type, name, value):
    element = IfcFile.by_guid(guid)
    ifc_class = get_ifc_class_from_spatial_type(spatial_type)
    assert_type(element, ifc_class)
    if ifc_class == "IfcSite":
        address_name = "SiteAddress"
    elif ifc_class == "IfcBuilding":
        address_name = "BuildingAddress"
    assert_attribute(element, address_name)
    assert_attribute(getattr(element, address_name), name, value)
Example #3
0
def step_impl(context, guid, predefined_type):
    element = IfcFile.by_guid(guid)
    if hasattr(element, 'PredefinedType') \
            and element.PredefinedType == 'USERDEFINED' \
            and hasattr(element,'ObjectType'):
        assert_attribute(element, 'ObjectType', predefined_type)
    elif hasattr(element, 'PredefinedType'):
        assert_attribute(element, 'PredefinedType', predefined_type)
    else:
        assert False, 'The element {} does not have a PredefinedType or ObjectType attribute'.format(
            element)
Example #4
0
def step_impl(context, guid, predefined_type):
    element = IfcFile.by_guid(guid)
    if (hasattr(element, "PredefinedType")
            and element.PredefinedType == "USERDEFINED"
            and hasattr(element, "ObjectType")):
        assert_attribute(element, "ObjectType", predefined_type)
    elif hasattr(element, "PredefinedType"):
        assert_attribute(element, "PredefinedType", predefined_type)
    else:
        assert False, "The element {} does not have a PredefinedType or ObjectType attribute".format(
            element)
Example #5
0
def step_impl(context, guid, x, y, z):
    element = IfcFile.by_guid(guid)
    if not element.ObjectPlacement:
        assert False, 'The element does not have an object placement: {}'.format(
            element)
    m = 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 = (assert_number(x), assert_number(y), 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))
Example #6
0
def step_impl(context, guid, easting, northing, elevation):
    if IfcFile.get().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 = assert_pset(site, 'EPset_MapConversion')
    else:
        map_conversion = IfcFile.get().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 = IfcFile.by_guid(guid)
    if not element.ObjectPlacement:
        assert False, 'The element does not have an object placement: {}'.format(
            element)
    m = 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 = (assert_number(easting), assert_number(northing),
                          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))
def step_impl(context, guid, identification, reference_name):
    element = IfcFile.by_guid(guid)
    if not hasattr(element, 'HasAssociations') or not element.HasAssociations:
        assert False, f'The element {element} has no associations.'
    references = [
        a.RelatingClassification for a in element.HasAssociations
        if a.is_a('IfcRelAssociatesClassification')
    ]
    if not references:
        assert False, f'The element {element} has no associated classification references.'
    is_success = False
    for reference in references:
        try:
            assert_attribute(reference, 'Identification', identification)
            assert_attribute(reference, 'Name', reference_name)
            is_success = True
        except:
            pass
    if not is_success:
        assert False, 'No classification references met the requirement for an identification {} and name {} for the element {}. The references we found were: {}'.format(
            identification, reference_name, element, references)
def step_impl(context, guid, number):
    number = assert_number(number)
    site = IfcFile.by_guid(guid)
    if not site.is_a('IfcSite'):
        assert False, 'The element {} is not an IfcSite'.format(site)
    assert_attribute(site, 'RefElevation', number)
Example #9
0
def step_impl(context, guid, ifc_class):
    element = IfcFile.by_guid(guid)
    assert_type(element, ifc_class, is_exact=True)
Example #10
0
def check_geocode_attribute(guid, spatial_type, name, value):
    element = IfcFile.by_guid(guid)
    assert_type(element, get_ifc_class_from_spatial_type(spatial_type))
    assert_attribute(element, name, value)