2020-12-21 16:57:38 +01:00
import gettext # noqa
2020-12-21 17:01:28 +01:00
2020-12-21 16:57:38 +01:00
from utils import assert_elements
from utils import IfcFile
2021-01-15 20:20:18 +01:00
def no_eleclass (
context , ifc_class
2021-01-07 17:54:39 +01:00
) :
2020-12-21 16:57:38 +01:00
context . falseelems = [ ]
context . falseguids = [ ]
elements = IfcFile . get ( ) . by_type ( ifc_class )
for elem in elements :
context . falseelems . append ( str ( elem ) )
context . falseguids . append ( elem . GlobalId )
context . elemcount = len ( elements )
context . falsecount = len ( context . falseelems )
if context . elemcount == 0 and context . falsecount == 0 :
return # Test OK, thus we can not use the assert_elements method
elif context . falsecount == context . elemcount :
assert False , (
_ ( " All {elemcount} elements in the file are {ifc_class} . " )
. format (
elemcount = context . elemcount ,
ifc_class = ifc_class
)
)
elif context . falsecount > 0 and fcontext . alsecount < context . elemcount :
assert False , (
_ ( " {falsecount} of {elemcount} element are {ifc_class} elements: {falseelems} " )
. format (
falsecount = context . falsecount ,
elemcount = context . elemcount ,
ifc_class = ifc_class ,
falseelems = context . falseelems ,
)
)
else :
assert False , _ ( " Error in falsecount, something went wrong. " )
2020-12-21 17:01:28 +01:00
2021-01-07 17:54:39 +01:00
def eleclass_have_class_attributes_with_a_value (
context , ifc_class
) :
2020-12-21 17:01:28 +01:00
from ifcopenshell . ifcopenshell_wrapper import schema_by_name
# schema = schema_by_name("IFC2X3")
schema = schema_by_name ( IfcFile . get ( ) . schema )
class_attributes = [ ]
for cl_attrib in schema . declaration_by_name ( ifc_class ) . all_attributes ( ) :
class_attributes . append ( cl_attrib . name ( ) )
# print(class_attributes)
context . falseelems = [ ]
context . falseguids = [ ]
context . falseprops = { }
elements = IfcFile . get ( ) . by_type ( ifc_class )
for elem in elements :
failed_attribs = [ ]
elem_failed = False
for cl_attrib in class_attributes :
attrib_value = getattr ( elem , cl_attrib )
if not attrib_value :
elem_failed = True
failed_attribs . append ( cl_attrib )
# print(attrib_value)
if elem_failed is True :
context . falseelems . append ( str ( elem ) )
context . falseguids . append ( elem . GlobalId )
context . falseprops [ elem . id ( ) ] = failed_attribs
context . elemcount = len ( elements )
context . falsecount = len ( context . falseelems )
assert_elements (
ifc_class ,
context . elemcount ,
context . falsecount ,
context . falseelems ,
message_all_falseelems = _ ( " For all {elemcount} {ifc_class} elements at least one of these class attributes {parameter} has no value. " ) ,
message_some_falseelems = _ ( " For the following {falsecount} out of {elemcount} {ifc_class} elements at least one of these class attributes {parameter} has no value: {falseelems} " ) ,
message_no_elems = _ ( " There are no {ifc_class} elements in the IFC file. " ) ,
parameter = failed_attribs
)
2020-12-22 14:34:04 +01:00
2021-01-07 17:54:39 +01:00
def eleclass_has_name_with_a_value ( context , ifc_class ) :
2020-12-22 14:34:04 +01:00
context . falseelems = [ ]
context . falseguids = [ ]
elements = IfcFile . get ( ) . by_type ( ifc_class )
for elem in elements :
# print(elem.Name)
if not elem . Name :
context . falseelems . append ( str ( elem ) )
context . falseguids . append ( elem . GlobalId )
context . elemcount = len ( elements )
context . falsecount = len ( context . falseelems )
assert_elements (
ifc_class ,
context . elemcount ,
context . falsecount ,
context . falseelems ,
message_all_falseelems = _ ( " The name of all {elemcount} {elemcount} elements is not set. " ) ,
message_some_falseelems = _ ( " The name of {falsecount} out of {elemcount} {ifc_class} elements is not set: {falseelems} " ) ,
message_no_elems = _ ( " There are no {ifc_class} elements in the IFC file. " ) ,
)
2021-01-07 17:54:39 +01:00
def eleclass_has_description_with_a_value (
context , ifc_class
) :
2020-12-22 14:34:04 +01:00
context . falseelems = [ ]
context . falseguids = [ ]
elements = IfcFile . get ( ) . by_type ( ifc_class )
for elem in elements :
# print(elem.Description)
if not elem . Description :
context . falseelems . append ( str ( elem ) )
context . falseguids . append ( elem . GlobalId )
context . elemcount = len ( elements )
context . falsecount = len ( context . falseelems )
assert_elements (
ifc_class ,
context . elemcount ,
context . falsecount ,
context . falseelems ,
message_all_falseelems = _ ( " The description of all {elemcount} {elemcount} elements is not set. " ) ,
message_some_falseelems = _ ( " The description of {falsecount} out of {elemcount} {ifc_class} elements is not set: {falseelems} " ) ,
message_no_elems = _ ( " There are no {ifc_class} elements in the IFC file. " ) ,
)