diff --git a/features/GEM005_Geometry-of-surrounding-buildings.feature b/features/GEM005_Geometry-of-surrounding-buildings.feature new file mode 100644 index 00000000..19e81586 --- /dev/null +++ b/features/GEM005_Geometry-of-surrounding-buildings.feature @@ -0,0 +1,12 @@ +@implementer-agreement +@ALS +Feature: Building shape representation + Scenario: Agreement on empty IfcBuilding using correct representation + + Given A file with Schema Identifier "IFC2X3" or "IFC4" or "IFC4X3_TC1" or "IFC4X3_ADD1" or "IFC4X3" + And An IfcBuilding + And ContainsElements = empty + And IsDecomposedBy = empty + And Its attribute Representation + And Its attribute Representations + Then The value of attribute RepresentationIdentifier must be Body diff --git a/features/steps/givens/attributes.py b/features/steps/givens/attributes.py index d36e2907..7d08a428 100644 --- a/features/steps/givens/attributes.py +++ b/features/steps/givens/attributes.py @@ -7,7 +7,10 @@ @given("{attribute} = {value}") def step_impl(context, attribute, value): - value = ast.literal_eval(value) + if value == 'empty': + value = () + else: + value = ast.literal_eval(value) context.instances = list( filter(lambda inst: getattr(inst, attribute, True) == value, context.instances) ) diff --git a/test/files/als005/fail-sectioned-solid-horizontal-wrong-identifier.ifc b/test/files/als005/fail-sectioned-solid-horizontal-wrong-identifier.ifc new file mode 100644 index 00000000..4c1f9e64 --- /dev/null +++ b/test/files/als005/fail-sectioned-solid-horizontal-wrong-identifier.ifc @@ -0,0 +1,185 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION (('ViewDefinition [Ifc4X3NotAssigned]'), '2;1'); +FILE_NAME ('sectioned-solid-horizontal.ifc', '2021-05-31T10:35:59', (), (), 'redacted', $, $); +FILE_SCHEMA (('IFC4X3_ADD1')); +ENDSEC; + +DATA; +#1 = IFCOWNERHISTORY(#2, #6, $, .NOCHANGE., $, $, $, 1622457359); +#2 = IFCPERSONANDORGANIZATION(#3, #4, $); +#3 = IFCPERSON($, 'redacted', 'redacted', $, $, $, $, $); +#4 = IFCORGANIZATION($, 'redacted', $, $, $); +#5 = IFCORGANIZATION($, 'redacted', $, $, $); +#6 = IFCAPPLICATION(#5, 'redacted', 'redacted', 'redacted'); +#7 = IFCPROJECT('0A_yMRoUvBdBdFGHn1GH7s', #1, 'Test IFC Project', $, $, $, $, (#13), #8); +#8 = IFCUNITASSIGNMENT((#9, #10, #11, #12)); +#9 = IFCSIUNIT(*, .LENGTHUNIT., $, .METRE.); +#10 = IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.); +#11 = IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.); +#12 = IFCSIUNIT(*, .PLANEANGLEUNIT., $, .RADIAN.); +#13 = IFCGEOMETRICREPRESENTATIONCONTEXT($, 'Model', 3, 1.E-4, #14, #16); +#14 = IFCAXIS2PLACEMENT3D(#15, $, $); +#15 = IFCCARTESIANPOINT((0., 0., 0.)); +#16 = IFCDIRECTION((0., 1.)); +#17 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#18 = IFCARBITRARYCLOSEDPROFILEDEF(.AREA., 'Simple Profile', #19); +#19 = IFCINDEXEDPOLYCURVE(#20, (IFCLINEINDEX((1, 2)), IFCLINEINDEX((2, 3)), IFCLINEINDEX((3, 4)), IFCLINEINDEX((4, 1))), $); +#20 = IFCCARTESIANPOINTLIST2D(((-4., 0.), (-5., -1.), (5., -1.), (4., 0.)), $); +#24 = IFCSITE('35wH0d2VDFze34cZziHyWH', #1, 'Default Site', $, $, #25, $, $, .ELEMENT., (0, 0, 0), (0, 0, 0), 0., $, $); +#25 = IFCLOCALPLACEMENT($, #28); +#26 = IFCDIRECTION((0., 0., 1.)); +#27 = IFCDIRECTION((1., 0., 0.)); +#28 = IFCAXIS2PLACEMENT3D(#15, #26, #27); +#29 = IFCALIGNMENT('0qI6nq6055HgCBPMUsw303', #1, 'Test Alignment', $, $, #30, #104, $); +#30 = IFCLOCALPLACEMENT(#25, #33); +#31 = IFCDIRECTION((0., 0., 1.)); +#32 = IFCDIRECTION((1., 0., 0.)); +#33 = IFCAXIS2PLACEMENT3D(#15, #31, #32); +#34 = IFCALIGNMENTHORIZONTAL('2a51YNKc9CIA9mX6PHta0R', #1, $, $, $, $, $); +#35 = IFCALIGNMENTSEGMENT('2VLcO34uj1ThLg3tnDQSDu', #1, $, $, $, #1501, #1601, #36); +#36 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #37, 0., 0., 0., 400., $, .LINE.); +#37 = IFCCARTESIANPOINT((0., 0.)); +#38 = IFCALIGNMENTSEGMENT('23in7RdgnF5etPmWAUg6Un', #1, $, $, $, #1501, #1611, #39); +#39 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #40, 0., 0., -500.000000000002, 150., $, .CLOTHOID.); +#40 = IFCCARTESIANPOINT((400., 0.)); +#41 = IFCALIGNMENTSEGMENT('2f96e3LmrECxEoe22s5Xpd', #1, $, $, $, #1501, #1621, #42); +#42 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #43, 6.13318530717958, -500.000000000002, -500.000000000002, 400., $, .CIRCULARARC.); +#43 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#44 = IFCRELNESTS('3A9jueO1j2z8C76N1IFh7f', #1, 'Linear Element Nesting', $, #34, (#35, #38, #41, #1101)); +#45 = IFCALIGNMENTVERTICAL('3SOdKle3DEtuUG6EbrmQpy', #1, $, $, $, $, $); +#46 = IFCALIGNMENTSEGMENT('16nyAX_5956AZO3WakpmwA', #1, $, $, $, #2501, #2601, #47); +#47 = IFCALIGNMENTVERTICALSEGMENT($, $, 0., 449.999993741124, 150., -9.99999999995544E-4, -9.99999999995544E-4, $, .CONSTANTGRADIENT.); +#48 = IFCALIGNMENTSEGMENT('3Zuiuqd_1EPuTb4o9SuLse', #1, $, $, $, #2501, #2611, #49); +#49 = IFCALIGNMENTVERTICALSEGMENT($, $, 449.999993741124, 100.000006258876, 149.550000006261, -9.99999999995544E-4, 4.44444444449813E-4, 69230.7996321627, .CIRCULARARC.); +#50 = IFCALIGNMENTSEGMENT('1ZSIbG7kLDTxDPZKyT21HX', #1, $, $, $, #2501, #2621, #51); +#51 = IFCALIGNMENTVERTICALSEGMENT($, $, 550., 400., 149.522222225005, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); +#52 = IFCRELNESTS('0f0eGFsknBWxOW9inF_FLN', #1, 'Linear Element Nesting', $, #45, (#46, #48, #50, #2001)); +#53 = IFCRELNESTS('0Ejb6tfov7UebksdwCEIZR', #1, 'Alignment Nesting', $, #29, (#34, #45)); +#54 = IFCCOMPOSITECURVE((#55, #63, #71, #1201), .U.); +#55 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #58, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.), #59); +#56 = IFCCARTESIANPOINT((0., 0.)); +#57 = IFCDIRECTION((1., 0.)); +#58 = IFCAXIS2PLACEMENT2D(#56, #57); +#59 = IFCLINE(#60, #61); +#60 = IFCCARTESIANPOINT((0., 0.)); +#61 = IFCVECTOR(#62, 1.); +#62 = IFCDIRECTION((1., 0.)); +#63 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #66, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(150.), #67); +#64 = IFCCARTESIANPOINT((400., 0.)); +#65 = IFCDIRECTION((1., 0.)); +#66 = IFCAXIS2PLACEMENT2D(#64, #65); +#67 = IFCCLOTHOID(#70, -273.861278752584); +#68 = IFCCARTESIANPOINT((0., 0.)); +#69 = IFCDIRECTION((1., 0.)); +#70 = IFCAXIS2PLACEMENT2D(#68, #69); +#71 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #74, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(-400.), #75); +#72 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#73 = IFCDIRECTION((9.88771077936042E-1, -1.49438132473604E-1)); +#74 = IFCAXIS2PLACEMENT2D(#72, #73); +#75 = IFCCIRCLE(#78, 500.000000000002); +#76 = IFCCARTESIANPOINT((0., 0.)); +#77 = IFCDIRECTION((1., 0.)); +#78 = IFCAXIS2PLACEMENT2D(#76, #77); +#79 = IFCGRADIENTCURVE((#80, #88, #96, #2101), .U., #54, $); +#80 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #83, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(450.000218741065), #84); +#81 = IFCCARTESIANPOINT((0., 150.)); +#82 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#83 = IFCAXIS2PLACEMENT2D(#81, #82); +#84 = IFCLINE(#85, #86); +#85 = IFCCARTESIANPOINT((0., 0.)); +#86 = IFCVECTOR(#87, 1.); +#87 = IFCDIRECTION((1., 0.)); +#88 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #91, IFCLENGTHMEASURE(4.71138898071803), IFCLENGTHMEASURE(100.00001881), #92); +#89 = IFCCARTESIANPOINT((449.999993741124, 149.550000006261)); +#90 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#91 = IFCAXIS2PLACEMENT2D(#89, #90); +#92 = IFCCIRCLE(#95, 69230.7996321627); +#93 = IFCCARTESIANPOINT((0., 0.)); +#94 = IFCDIRECTION((1., 0.)); +#95 = IFCAXIS2PLACEMENT2D(#93, #94); +#96 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #99, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.000039506171), #100); +#97 = IFCCARTESIANPOINT((550., 149.522222225005)); +#98 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#99 = IFCAXIS2PLACEMENT2D(#97, #98); +#100 = IFCLINE(#101, #102); +#101 = IFCCARTESIANPOINT((0., 0.)); +#102 = IFCVECTOR(#103, 1.); +#103 = IFCDIRECTION((1., 0.)); +/* tfk: remove the footprint representation for now in #1002 */ +#104 = IFCPRODUCTDEFINITIONSHAPE($, $, (#106)); +#105 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#106 = IFCSHAPEREPRESENTATION(#105, 'Body', 'Curve3D', (#79)); +#107 = IFCBUILTELEMENT('3k7$iV7T92$R$xNE9oe5R8', #1, 'SimpleProfile', $, $, #108, #115, $); +#108 = IFCLOCALPLACEMENT(#25, #114); +#109 = IFCDIRECTION((0., 0., 1.)); +#110 = IFCDIRECTION((1., 0., 0.)); +#114 = IFCAXIS2PLACEMENT3D(#15, #109, #110); +#115 = IFCPRODUCTDEFINITIONSHAPE($, $, (#127)); +#116 = IFCSECTIONEDSOLIDHORIZONTAL(#79, (#18, #18), (#117, #119)); +#117 = IFCAXIS2PLACEMENTLINEAR(#118, $, $); +#118 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(300.), $, $, $, #79); +#119 = IFCAXIS2PLACEMENTLINEAR(#120, $, $); +#120 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(600.), $, $, $, #79); +#127 = IFCSHAPEREPRESENTATION(#17, 'Body', 'AdvancedSweptSolid', (#116)); +#128 = IFCRELCONTAINEDINSPATIALSTRUCTURE('0de2EMoG5C3AvNHWz3ILSb', #1, 'Container', 'Container to Contained', (#29, #107), #24); +#129 = IFCRELAGGREGATES('0PN7lKNInB_OsofZN8N0Nn', #1, 'Project Container', 'Project to Spatial Element', #7, (#24)); + +#1001 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('FootPrint', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#1002 = IFCSHAPEREPRESENTATION(#1001, 'FootPrint', 'Curve2D', (#54)); + +#1101 = IFCALIGNMENTSEGMENT('1lqBKv7Xz1Hx2tmPCGtaIa', #1, $, $, $, #1501, #1631, #1102); +#1102 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #1103, -0.95, 0., 0., 0., $, .LINE.); +#1103 = IFCCARTESIANPOINT((881.65153753789, -211.03194929054)); + +#1201 = IFCCURVESEGMENT(.DISCONTINUOUS., #1204, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #1205); +#1202 = IFCCARTESIANPOINT((0881.65153753789, -211.03194929054)); +#1203 = IFCDIRECTION((0.58168308946, -0.81341550478)); +#1204 = IFCAXIS2PLACEMENT2D(#1202, #1203); +#1205 = IFCLINE(#1206, #1207); +#1206 = IFCCARTESIANPOINT((0., 0.)); +#1207 = IFCVECTOR(#1208, 1.); +#1208 = IFCDIRECTION((1., 0.)); + +#1501 = IFCLOCALPLACEMENT($, #1502); +#1502 = IFCAXIS2PLACEMENT3D(#1503, $, $); +#1503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#1601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1602)); +#1602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#55)); +#1611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1612)); +#1612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#63)); +#1621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1622)); +#1622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#71)); +#1631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1632)); +#1632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#1201)); + +#2001 = IFCALIGNMENTSEGMENT('49fS3hA8n5YOBvYphrBOIP', #1, $, $, $, #2501, #2631, #2002); +#2002 = IFCALIGNMENTVERTICALSEGMENT($, $, 950., 0., 149.7, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); + +#2101 = IFCCURVESEGMENT(.DISCONTINUOUS., #2104, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #2105); +#2102 = IFCCARTESIANPOINT((950., 149.7)); +#2103 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#2104 = IFCAXIS2PLACEMENT2D(#2102, #2103); +#2105 = IFCLINE(#85, #86); +#2106 = IFCCARTESIANPOINT((0., 0.)); +#2107 = IFCVECTOR(#2108, 1.); +#2108 = IFCDIRECTION((1., 0.)); + +#2501 = IFCLOCALPLACEMENT($, #2502); +#2502 = IFCAXIS2PLACEMENT3D(#2503, $, $); +#2503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#2601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2602)); +#2602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#80)); +#2611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2612)); +#2612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#88)); +#2621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2622)); +#2622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#96)); +#2631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2632)); +#2632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#2101)); + +#3000 = IFCRELAGGREGATES('0mRn50inT2pf1XqujacVu9', #1, 'Project Container 2', 'Project to Alignment', #7, (#29)); + +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/als005/fail-sectioned-solid-horizontal-wrong-item.ifc b/test/files/als005/fail-sectioned-solid-horizontal-wrong-item.ifc new file mode 100644 index 00000000..8e211d60 --- /dev/null +++ b/test/files/als005/fail-sectioned-solid-horizontal-wrong-item.ifc @@ -0,0 +1,185 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION (('ViewDefinition [Ifc4X3NotAssigned]'), '2;1'); +FILE_NAME ('sectioned-solid-horizontal.ifc', '2021-05-31T10:35:59', (), (), 'redacted', $, $); +FILE_SCHEMA (('IFC4X3_ADD1')); +ENDSEC; + +DATA; +#1 = IFCOWNERHISTORY(#2, #6, $, .NOCHANGE., $, $, $, 1622457359); +#2 = IFCPERSONANDORGANIZATION(#3, #4, $); +#3 = IFCPERSON($, 'redacted', 'redacted', $, $, $, $, $); +#4 = IFCORGANIZATION($, 'redacted', $, $, $); +#5 = IFCORGANIZATION($, 'redacted', $, $, $); +#6 = IFCAPPLICATION(#5, 'redacted', 'redacted', 'redacted'); +#7 = IFCPROJECT('0A_yMRoUvBdBdFGHn1GH7s', #1, 'Test IFC Project', $, $, $, $, (#13), #8); +#8 = IFCUNITASSIGNMENT((#9, #10, #11, #12)); +#9 = IFCSIUNIT(*, .LENGTHUNIT., $, .METRE.); +#10 = IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.); +#11 = IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.); +#12 = IFCSIUNIT(*, .PLANEANGLEUNIT., $, .RADIAN.); +#13 = IFCGEOMETRICREPRESENTATIONCONTEXT($, 'Model', 3, 1.E-4, #14, #16); +#14 = IFCAXIS2PLACEMENT3D(#15, $, $); +#15 = IFCCARTESIANPOINT((0., 0., 0.)); +#16 = IFCDIRECTION((0., 1.)); +#17 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#18 = IFCARBITRARYCLOSEDPROFILEDEF(.AREA., 'Simple Profile', #19); +#19 = IFCINDEXEDPOLYCURVE(#20, (IFCLINEINDEX((1, 2)), IFCLINEINDEX((2, 3)), IFCLINEINDEX((3, 4)), IFCLINEINDEX((4, 1))), $); +#20 = IFCCARTESIANPOINTLIST2D(((-4., 0.), (-5., -1.), (5., -1.), (4., 0.)), $); +#24 = IFCSITE('35wH0d2VDFze34cZziHyWH', #1, 'Default Site', $, $, #25, $, $, .ELEMENT., (0, 0, 0), (0, 0, 0), 0., $, $); +#25 = IFCLOCALPLACEMENT($, #28); +#26 = IFCDIRECTION((0., 0., 1.)); +#27 = IFCDIRECTION((1., 0., 0.)); +#28 = IFCAXIS2PLACEMENT3D(#15, #26, #27); +#29 = IFCALIGNMENT('0qI6nq6055HgCBPMUsw303', #1, 'Test Alignment', $, $, #30, #104, $); +#30 = IFCLOCALPLACEMENT(#25, #33); +#31 = IFCDIRECTION((0., 0., 1.)); +#32 = IFCDIRECTION((1., 0., 0.)); +#33 = IFCAXIS2PLACEMENT3D(#15, #31, #32); +#34 = IFCALIGNMENTHORIZONTAL('2a51YNKc9CIA9mX6PHta0R', #1, $, $, $, $, $); +#35 = IFCALIGNMENTSEGMENT('2VLcO34uj1ThLg3tnDQSDu', #1, $, $, $, #1501, #1601, #36); +#36 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #37, 0., 0., 0., 400., $, .LINE.); +#37 = IFCCARTESIANPOINT((0., 0.)); +#38 = IFCALIGNMENTSEGMENT('23in7RdgnF5etPmWAUg6Un', #1, $, $, $, #1501, #1611, #39); +#39 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #40, 0., 0., -500.000000000002, 150., $, .CLOTHOID.); +#40 = IFCCARTESIANPOINT((400., 0.)); +#41 = IFCALIGNMENTSEGMENT('2f96e3LmrECxEoe22s5Xpd', #1, $, $, $, #1501, #1621, #42); +#42 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #43, 6.13318530717958, -500.000000000002, -500.000000000002, 400., $, .CIRCULARARC.); +#43 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#44 = IFCRELNESTS('3A9jueO1j2z8C76N1IFh7f', #1, 'Linear Element Nesting', $, #34, (#35, #38, #41, #1101)); +#45 = IFCALIGNMENTVERTICAL('3SOdKle3DEtuUG6EbrmQpy', #1, $, $, $, $, $); +#46 = IFCALIGNMENTSEGMENT('16nyAX_5956AZO3WakpmwA', #1, $, $, $, #2501, #2601, #47); +#47 = IFCALIGNMENTVERTICALSEGMENT($, $, 0., 449.999993741124, 150., -9.99999999995544E-4, -9.99999999995544E-4, $, .CONSTANTGRADIENT.); +#48 = IFCALIGNMENTSEGMENT('3Zuiuqd_1EPuTb4o9SuLse', #1, $, $, $, #2501, #2611, #49); +#49 = IFCALIGNMENTVERTICALSEGMENT($, $, 449.999993741124, 100.000006258876, 149.550000006261, -9.99999999995544E-4, 4.44444444449813E-4, 69230.7996321627, .CIRCULARARC.); +#50 = IFCALIGNMENTSEGMENT('1ZSIbG7kLDTxDPZKyT21HX', #1, $, $, $, #2501, #2621, #51); +#51 = IFCALIGNMENTVERTICALSEGMENT($, $, 550., 400., 149.522222225005, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); +#52 = IFCRELNESTS('0f0eGFsknBWxOW9inF_FLN', #1, 'Linear Element Nesting', $, #45, (#46, #48, #50, #2001)); +#53 = IFCRELNESTS('0Ejb6tfov7UebksdwCEIZR', #1, 'Alignment Nesting', $, #29, (#34, #45)); +#54 = IFCCOMPOSITECURVE((#55, #63, #71, #1201), .U.); +#55 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #58, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.), #59); +#56 = IFCCARTESIANPOINT((0., 0.)); +#57 = IFCDIRECTION((1., 0.)); +#58 = IFCAXIS2PLACEMENT2D(#56, #57); +#59 = IFCLINE(#60, #61); +#60 = IFCCARTESIANPOINT((0., 0.)); +#61 = IFCVECTOR(#62, 1.); +#62 = IFCDIRECTION((1., 0.)); +#63 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #66, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(150.), #67); +#64 = IFCCARTESIANPOINT((400., 0.)); +#65 = IFCDIRECTION((1., 0.)); +#66 = IFCAXIS2PLACEMENT2D(#64, #65); +#67 = IFCCLOTHOID(#70, -273.861278752584); +#68 = IFCCARTESIANPOINT((0., 0.)); +#69 = IFCDIRECTION((1., 0.)); +#70 = IFCAXIS2PLACEMENT2D(#68, #69); +#71 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #74, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(-400.), #75); +#72 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#73 = IFCDIRECTION((9.88771077936042E-1, -1.49438132473604E-1)); +#74 = IFCAXIS2PLACEMENT2D(#72, #73); +#75 = IFCCIRCLE(#78, 500.000000000002); +#76 = IFCCARTESIANPOINT((0., 0.)); +#77 = IFCDIRECTION((1., 0.)); +#78 = IFCAXIS2PLACEMENT2D(#76, #77); +#79 = IFCGRADIENTCURVE((#80, #88, #96, #2101), .U., #54, $); +#80 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #83, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(450.000218741065), #84); +#81 = IFCCARTESIANPOINT((0., 150.)); +#82 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#83 = IFCAXIS2PLACEMENT2D(#81, #82); +#84 = IFCLINE(#85, #86); +#85 = IFCCARTESIANPOINT((0., 0.)); +#86 = IFCVECTOR(#87, 1.); +#87 = IFCDIRECTION((1., 0.)); +#88 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #91, IFCLENGTHMEASURE(4.71138898071803), IFCLENGTHMEASURE(100.00001881), #92); +#89 = IFCCARTESIANPOINT((449.999993741124, 149.550000006261)); +#90 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#91 = IFCAXIS2PLACEMENT2D(#89, #90); +#92 = IFCCIRCLE(#95, 69230.7996321627); +#93 = IFCCARTESIANPOINT((0., 0.)); +#94 = IFCDIRECTION((1., 0.)); +#95 = IFCAXIS2PLACEMENT2D(#93, #94); +#96 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #99, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.000039506171), #100); +#97 = IFCCARTESIANPOINT((550., 149.522222225005)); +#98 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#99 = IFCAXIS2PLACEMENT2D(#97, #98); +#100 = IFCLINE(#101, #102); +#101 = IFCCARTESIANPOINT((0., 0.)); +#102 = IFCVECTOR(#103, 1.); +#103 = IFCDIRECTION((1., 0.)); +/* tfk: remove the footprint representation for now in #1002 */ +#104 = IFCPRODUCTDEFINITIONSHAPE($, $, (#106)); +#105 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#106 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Curve3D', (#81)); +#107 = IFCBUILTELEMENT('3k7$iV7T92$R$xNE9oe5R8', #1, 'SimpleProfile', $, $, #108, #115, $); +#108 = IFCLOCALPLACEMENT(#25, #114); +#109 = IFCDIRECTION((0., 0., 1.)); +#110 = IFCDIRECTION((1., 0., 0.)); +#114 = IFCAXIS2PLACEMENT3D(#15, #109, #110); +#115 = IFCPRODUCTDEFINITIONSHAPE($, $, (#127)); +#116 = IFCSECTIONEDSOLIDHORIZONTAL(#79, (#18, #18), (#117, #119)); +#117 = IFCAXIS2PLACEMENTLINEAR(#118, $, $); +#118 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(300.), $, $, $, #79); +#119 = IFCAXIS2PLACEMENTLINEAR(#120, $, $); +#120 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(600.), $, $, $, #79); +#127 = IFCSHAPEREPRESENTATION(#17, 'Body', 'AdvancedSweptSolid', (#116)); +#128 = IFCRELCONTAINEDINSPATIALSTRUCTURE('0de2EMoG5C3AvNHWz3ILSb', #1, 'Container', 'Container to Contained', (#29, #107), #24); +#129 = IFCRELAGGREGATES('0PN7lKNInB_OsofZN8N0Nn', #1, 'Project Container', 'Project to Spatial Element', #7, (#24)); + +#1001 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('FootPrint', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#1002 = IFCSHAPEREPRESENTATION(#1001, 'FootPrint', 'Curve2D', (#54)); + +#1101 = IFCALIGNMENTSEGMENT('1lqBKv7Xz1Hx2tmPCGtaIa', #1, $, $, $, #1501, #1631, #1102); +#1102 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #1103, -0.95, 0., 0., 0., $, .LINE.); +#1103 = IFCCARTESIANPOINT((881.65153753789, -211.03194929054)); + +#1201 = IFCCURVESEGMENT(.DISCONTINUOUS., #1204, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #1205); +#1202 = IFCCARTESIANPOINT((0881.65153753789, -211.03194929054)); +#1203 = IFCDIRECTION((0.58168308946, -0.81341550478)); +#1204 = IFCAXIS2PLACEMENT2D(#1202, #1203); +#1205 = IFCLINE(#1206, #1207); +#1206 = IFCCARTESIANPOINT((0., 0.)); +#1207 = IFCVECTOR(#1208, 1.); +#1208 = IFCDIRECTION((1., 0.)); + +#1501 = IFCLOCALPLACEMENT($, #1502); +#1502 = IFCAXIS2PLACEMENT3D(#1503, $, $); +#1503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#1601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1602)); +#1602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#55)); +#1611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1612)); +#1612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#63)); +#1621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1622)); +#1622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#71)); +#1631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1632)); +#1632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#1201)); + +#2001 = IFCALIGNMENTSEGMENT('49fS3hA8n5YOBvYphrBOIP', #1, $, $, $, #2501, #2631, #2002); +#2002 = IFCALIGNMENTVERTICALSEGMENT($, $, 950., 0., 149.7, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); + +#2101 = IFCCURVESEGMENT(.DISCONTINUOUS., #2104, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #2105); +#2102 = IFCCARTESIANPOINT((950., 149.7)); +#2103 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#2104 = IFCAXIS2PLACEMENT2D(#2102, #2103); +#2105 = IFCLINE(#85, #86); +#2106 = IFCCARTESIANPOINT((0., 0.)); +#2107 = IFCVECTOR(#2108, 1.); +#2108 = IFCDIRECTION((1., 0.)); + +#2501 = IFCLOCALPLACEMENT($, #2502); +#2502 = IFCAXIS2PLACEMENT3D(#2503, $, $); +#2503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#2601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2602)); +#2602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#80)); +#2611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2612)); +#2612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#88)); +#2621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2622)); +#2622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#96)); +#2631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2632)); +#2632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#2101)); + +#3000 = IFCRELAGGREGATES('0mRn50inT2pf1XqujacVu9', #1, 'Project Container 2', 'Project to Alignment', #7, (#29)); + +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/als005/fail-sectioned-solid-horizontal-wrong-type.ifc b/test/files/als005/fail-sectioned-solid-horizontal-wrong-type.ifc new file mode 100644 index 00000000..4334d6be --- /dev/null +++ b/test/files/als005/fail-sectioned-solid-horizontal-wrong-type.ifc @@ -0,0 +1,185 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION (('ViewDefinition [Ifc4X3NotAssigned]'), '2;1'); +FILE_NAME ('sectioned-solid-horizontal.ifc', '2021-05-31T10:35:59', (), (), 'redacted', $, $); +FILE_SCHEMA (('IFC4X3_ADD1')); +ENDSEC; + +DATA; +#1 = IFCOWNERHISTORY(#2, #6, $, .NOCHANGE., $, $, $, 1622457359); +#2 = IFCPERSONANDORGANIZATION(#3, #4, $); +#3 = IFCPERSON($, 'redacted', 'redacted', $, $, $, $, $); +#4 = IFCORGANIZATION($, 'redacted', $, $, $); +#5 = IFCORGANIZATION($, 'redacted', $, $, $); +#6 = IFCAPPLICATION(#5, 'redacted', 'redacted', 'redacted'); +#7 = IFCPROJECT('0A_yMRoUvBdBdFGHn1GH7s', #1, 'Test IFC Project', $, $, $, $, (#13), #8); +#8 = IFCUNITASSIGNMENT((#9, #10, #11, #12)); +#9 = IFCSIUNIT(*, .LENGTHUNIT., $, .METRE.); +#10 = IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.); +#11 = IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.); +#12 = IFCSIUNIT(*, .PLANEANGLEUNIT., $, .RADIAN.); +#13 = IFCGEOMETRICREPRESENTATIONCONTEXT($, 'Model', 3, 1.E-4, #14, #16); +#14 = IFCAXIS2PLACEMENT3D(#15, $, $); +#15 = IFCCARTESIANPOINT((0., 0., 0.)); +#16 = IFCDIRECTION((0., 1.)); +#17 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#18 = IFCARBITRARYCLOSEDPROFILEDEF(.AREA., 'Simple Profile', #19); +#19 = IFCINDEXEDPOLYCURVE(#20, (IFCLINEINDEX((1, 2)), IFCLINEINDEX((2, 3)), IFCLINEINDEX((3, 4)), IFCLINEINDEX((4, 1))), $); +#20 = IFCCARTESIANPOINTLIST2D(((-4., 0.), (-5., -1.), (5., -1.), (4., 0.)), $); +#24 = IFCSITE('35wH0d2VDFze34cZziHyWH', #1, 'Default Site', $, $, #25, $, $, .ELEMENT., (0, 0, 0), (0, 0, 0), 0., $, $); +#25 = IFCLOCALPLACEMENT($, #28); +#26 = IFCDIRECTION((0., 0., 1.)); +#27 = IFCDIRECTION((1., 0., 0.)); +#28 = IFCAXIS2PLACEMENT3D(#15, #26, #27); +#29 = IFCALIGNMENT('0qI6nq6055HgCBPMUsw303', #1, 'Test Alignment', $, $, #30, #104, $); +#30 = IFCLOCALPLACEMENT(#25, #33); +#31 = IFCDIRECTION((0., 0., 1.)); +#32 = IFCDIRECTION((1., 0., 0.)); +#33 = IFCAXIS2PLACEMENT3D(#15, #31, #32); +#34 = IFCALIGNMENTHORIZONTAL('2a51YNKc9CIA9mX6PHta0R', #1, $, $, $, $, $); +#35 = IFCALIGNMENTSEGMENT('2VLcO34uj1ThLg3tnDQSDu', #1, $, $, $, #1501, #1601, #36); +#36 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #37, 0., 0., 0., 400., $, .LINE.); +#37 = IFCCARTESIANPOINT((0., 0.)); +#38 = IFCALIGNMENTSEGMENT('23in7RdgnF5etPmWAUg6Un', #1, $, $, $, #1501, #1611, #39); +#39 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #40, 0., 0., -500.000000000002, 150., $, .CLOTHOID.); +#40 = IFCCARTESIANPOINT((400., 0.)); +#41 = IFCALIGNMENTSEGMENT('2f96e3LmrECxEoe22s5Xpd', #1, $, $, $, #1501, #1621, #42); +#42 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #43, 6.13318530717958, -500.000000000002, -500.000000000002, 400., $, .CIRCULARARC.); +#43 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#44 = IFCRELNESTS('3A9jueO1j2z8C76N1IFh7f', #1, 'Linear Element Nesting', $, #34, (#35, #38, #41, #1101)); +#45 = IFCALIGNMENTVERTICAL('3SOdKle3DEtuUG6EbrmQpy', #1, $, $, $, $, $); +#46 = IFCALIGNMENTSEGMENT('16nyAX_5956AZO3WakpmwA', #1, $, $, $, #2501, #2601, #47); +#47 = IFCALIGNMENTVERTICALSEGMENT($, $, 0., 449.999993741124, 150., -9.99999999995544E-4, -9.99999999995544E-4, $, .CONSTANTGRADIENT.); +#48 = IFCALIGNMENTSEGMENT('3Zuiuqd_1EPuTb4o9SuLse', #1, $, $, $, #2501, #2611, #49); +#49 = IFCALIGNMENTVERTICALSEGMENT($, $, 449.999993741124, 100.000006258876, 149.550000006261, -9.99999999995544E-4, 4.44444444449813E-4, 69230.7996321627, .CIRCULARARC.); +#50 = IFCALIGNMENTSEGMENT('1ZSIbG7kLDTxDPZKyT21HX', #1, $, $, $, #2501, #2621, #51); +#51 = IFCALIGNMENTVERTICALSEGMENT($, $, 550., 400., 149.522222225005, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); +#52 = IFCRELNESTS('0f0eGFsknBWxOW9inF_FLN', #1, 'Linear Element Nesting', $, #45, (#46, #48, #50, #2001)); +#53 = IFCRELNESTS('0Ejb6tfov7UebksdwCEIZR', #1, 'Alignment Nesting', $, #29, (#34, #45)); +#54 = IFCCOMPOSITECURVE((#55, #63, #71, #1201), .U.); +#55 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #58, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.), #59); +#56 = IFCCARTESIANPOINT((0., 0.)); +#57 = IFCDIRECTION((1., 0.)); +#58 = IFCAXIS2PLACEMENT2D(#56, #57); +#59 = IFCLINE(#60, #61); +#60 = IFCCARTESIANPOINT((0., 0.)); +#61 = IFCVECTOR(#62, 1.); +#62 = IFCDIRECTION((1., 0.)); +#63 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #66, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(150.), #67); +#64 = IFCCARTESIANPOINT((400., 0.)); +#65 = IFCDIRECTION((1., 0.)); +#66 = IFCAXIS2PLACEMENT2D(#64, #65); +#67 = IFCCLOTHOID(#70, -273.861278752584); +#68 = IFCCARTESIANPOINT((0., 0.)); +#69 = IFCDIRECTION((1., 0.)); +#70 = IFCAXIS2PLACEMENT2D(#68, #69); +#71 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #74, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(-400.), #75); +#72 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#73 = IFCDIRECTION((9.88771077936042E-1, -1.49438132473604E-1)); +#74 = IFCAXIS2PLACEMENT2D(#72, #73); +#75 = IFCCIRCLE(#78, 500.000000000002); +#76 = IFCCARTESIANPOINT((0., 0.)); +#77 = IFCDIRECTION((1., 0.)); +#78 = IFCAXIS2PLACEMENT2D(#76, #77); +#79 = IFCGRADIENTCURVE((#80, #88, #96, #2101), .U., #54, $); +#80 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #83, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(450.000218741065), #84); +#81 = IFCCARTESIANPOINT((0., 150.)); +#82 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#83 = IFCAXIS2PLACEMENT2D(#81, #82); +#84 = IFCLINE(#85, #86); +#85 = IFCCARTESIANPOINT((0., 0.)); +#86 = IFCVECTOR(#87, 1.); +#87 = IFCDIRECTION((1., 0.)); +#88 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #91, IFCLENGTHMEASURE(4.71138898071803), IFCLENGTHMEASURE(100.00001881), #92); +#89 = IFCCARTESIANPOINT((449.999993741124, 149.550000006261)); +#90 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#91 = IFCAXIS2PLACEMENT2D(#89, #90); +#92 = IFCCIRCLE(#95, 69230.7996321627); +#93 = IFCCARTESIANPOINT((0., 0.)); +#94 = IFCDIRECTION((1., 0.)); +#95 = IFCAXIS2PLACEMENT2D(#93, #94); +#96 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #99, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.000039506171), #100); +#97 = IFCCARTESIANPOINT((550., 149.522222225005)); +#98 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#99 = IFCAXIS2PLACEMENT2D(#97, #98); +#100 = IFCLINE(#101, #102); +#101 = IFCCARTESIANPOINT((0., 0.)); +#102 = IFCVECTOR(#103, 1.); +#103 = IFCDIRECTION((1., 0.)); +/* tfk: remove the footprint representation for now in #1002 */ +#104 = IFCPRODUCTDEFINITIONSHAPE($, $, (#106)); +#105 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#106 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Curve2D', (#79)); +#107 = IFCBUILTELEMENT('3k7$iV7T92$R$xNE9oe5R8', #1, 'SimpleProfile', $, $, #108, #115, $); +#108 = IFCLOCALPLACEMENT(#25, #114); +#109 = IFCDIRECTION((0., 0., 1.)); +#110 = IFCDIRECTION((1., 0., 0.)); +#114 = IFCAXIS2PLACEMENT3D(#15, #109, #110); +#115 = IFCPRODUCTDEFINITIONSHAPE($, $, (#127)); +#116 = IFCSECTIONEDSOLIDHORIZONTAL(#79, (#18, #18), (#117, #119)); +#117 = IFCAXIS2PLACEMENTLINEAR(#118, $, $); +#118 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(300.), $, $, $, #79); +#119 = IFCAXIS2PLACEMENTLINEAR(#120, $, $); +#120 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(600.), $, $, $, #79); +#127 = IFCSHAPEREPRESENTATION(#17, 'Body', 'AdvancedSweptSolid', (#116)); +#128 = IFCRELCONTAINEDINSPATIALSTRUCTURE('0de2EMoG5C3AvNHWz3ILSb', #1, 'Container', 'Container to Contained', (#29, #107), #24); +#129 = IFCRELAGGREGATES('0PN7lKNInB_OsofZN8N0Nn', #1, 'Project Container', 'Project to Spatial Element', #7, (#24)); + +#1001 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('FootPrint', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#1002 = IFCSHAPEREPRESENTATION(#1001, 'FootPrint', 'Curve2D', (#54)); + +#1101 = IFCALIGNMENTSEGMENT('1lqBKv7Xz1Hx2tmPCGtaIa', #1, $, $, $, #1501, #1631, #1102); +#1102 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #1103, -0.95, 0., 0., 0., $, .LINE.); +#1103 = IFCCARTESIANPOINT((881.65153753789, -211.03194929054)); + +#1201 = IFCCURVESEGMENT(.DISCONTINUOUS., #1204, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #1205); +#1202 = IFCCARTESIANPOINT((0881.65153753789, -211.03194929054)); +#1203 = IFCDIRECTION((0.58168308946, -0.81341550478)); +#1204 = IFCAXIS2PLACEMENT2D(#1202, #1203); +#1205 = IFCLINE(#1206, #1207); +#1206 = IFCCARTESIANPOINT((0., 0.)); +#1207 = IFCVECTOR(#1208, 1.); +#1208 = IFCDIRECTION((1., 0.)); + +#1501 = IFCLOCALPLACEMENT($, #1502); +#1502 = IFCAXIS2PLACEMENT3D(#1503, $, $); +#1503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#1601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1602)); +#1602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#55)); +#1611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1612)); +#1612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#63)); +#1621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1622)); +#1622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#71)); +#1631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1632)); +#1632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#1201)); + +#2001 = IFCALIGNMENTSEGMENT('49fS3hA8n5YOBvYphrBOIP', #1, $, $, $, #2501, #2631, #2002); +#2002 = IFCALIGNMENTVERTICALSEGMENT($, $, 950., 0., 149.7, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); + +#2101 = IFCCURVESEGMENT(.DISCONTINUOUS., #2104, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #2105); +#2102 = IFCCARTESIANPOINT((950., 149.7)); +#2103 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#2104 = IFCAXIS2PLACEMENT2D(#2102, #2103); +#2105 = IFCLINE(#85, #86); +#2106 = IFCCARTESIANPOINT((0., 0.)); +#2107 = IFCVECTOR(#2108, 1.); +#2108 = IFCDIRECTION((1., 0.)); + +#2501 = IFCLOCALPLACEMENT($, #2502); +#2502 = IFCAXIS2PLACEMENT3D(#2503, $, $); +#2503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#2601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2602)); +#2602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#80)); +#2611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2612)); +#2612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#88)); +#2621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2622)); +#2622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#96)); +#2631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2632)); +#2632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#2101)); + +#3000 = IFCRELAGGREGATES('0mRn50inT2pf1XqujacVu9', #1, 'Project Container 2', 'Project to Alignment', #7, (#29)); + +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/als005/pass-sectioned-solid-horizontal.ifc b/test/files/als005/pass-sectioned-solid-horizontal.ifc new file mode 100644 index 00000000..339a5c38 --- /dev/null +++ b/test/files/als005/pass-sectioned-solid-horizontal.ifc @@ -0,0 +1,190 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION (('ViewDefinition [Ifc4X3NotAssigned]'), '2;1'); +FILE_NAME ('sectioned-solid-horizontal.ifc', '2021-05-31T10:35:59', (), (), 'redacted', $, $); +FILE_SCHEMA (('IFC4X3_ADD1')); +ENDSEC; + +DATA; +#1 = IFCOWNERHISTORY(#2, #6, $, .NOCHANGE., $, $, $, 1622457359); +#2 = IFCPERSONANDORGANIZATION(#3, #4, $); +#3 = IFCPERSON($, 'redacted', 'redacted', $, $, $, $, $); +#4 = IFCORGANIZATION($, 'redacted', $, $, $); +#5 = IFCORGANIZATION($, 'redacted', $, $, $); +#6 = IFCAPPLICATION(#5, 'redacted', 'redacted', 'redacted'); +#7 = IFCPROJECT('0A_yMRoUvBdBdFGHn1GH7s', #1, 'Test IFC Project', $, $, $, $, (#13), #8); +#8 = IFCUNITASSIGNMENT((#9, #10, #11, #12)); +#9 = IFCSIUNIT(*, .LENGTHUNIT., $, .METRE.); +#10 = IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.); +#11 = IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.); +#12 = IFCSIUNIT(*, .PLANEANGLEUNIT., $, .RADIAN.); +#13 = IFCGEOMETRICREPRESENTATIONCONTEXT($, 'Model', 3, 1.E-4, #14, #16); +#14 = IFCAXIS2PLACEMENT3D(#15, $, $); +#15 = IFCCARTESIANPOINT((0., 0., 0.)); +#16 = IFCDIRECTION((0., 1.)); +#17 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#18 = IFCARBITRARYCLOSEDPROFILEDEF(.AREA., 'Simple Profile', #19); +#19 = IFCINDEXEDPOLYCURVE(#20, (IFCLINEINDEX((1, 2)), IFCLINEINDEX((2, 3)), IFCLINEINDEX((3, 4)), IFCLINEINDEX((4, 1))), $); +#20 = IFCCARTESIANPOINTLIST2D(((-4., 0.), (-5., -1.), (5., -1.), (4., 0.)), $); +#24 = IFCSITE('35wH0d2VDFze34cZziHyWH', #1, 'Default Site', $, $, #25, $, $, .ELEMENT., (0, 0, 0), (0, 0, 0), 0., $, $); +#25 = IFCLOCALPLACEMENT($, #28); +#26 = IFCDIRECTION((0., 0., 1.)); +#27 = IFCDIRECTION((1., 0., 0.)); +#28 = IFCAXIS2PLACEMENT3D(#15, #26, #27); +#29 = IFCALIGNMENT('0qI6nq6055HgCBPMUsw303', #1, 'Test Alignment', $, $, #30, #104, $); +#30 = IFCLOCALPLACEMENT(#25, #33); +#31 = IFCDIRECTION((0., 0., 1.)); +#32 = IFCDIRECTION((1., 0., 0.)); +#33 = IFCAXIS2PLACEMENT3D(#15, #31, #32); +#20002 = IFCLOCALPLACEMENT(#30, #33); +#20000 = IFCPRODUCTDEFINITIONSHAPE($, $, (#20001)); +#20001 = IFCSHAPEREPRESENTATION(#1001, 'Axis', 'Curve2D', (#54)); +#34 = IFCALIGNMENTHORIZONTAL('2a51YNKc9CIA9mX6PHta0R', #1, $, $, $, #20002, #20000); +#35 = IFCALIGNMENTSEGMENT('2VLcO34uj1ThLg3tnDQSDu', #1, $, $, $, #1501, #1601, #36); +#36 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #37, 0., 0., 0., 400., $, .LINE.); +#37 = IFCCARTESIANPOINT((0., 0.)); +#38 = IFCALIGNMENTSEGMENT('23in7RdgnF5etPmWAUg6Un', #1, $, $, $, #1501, #1611, #39); +#39 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #40, 0., 0., -500.000000000002, 150., $, .CLOTHOID.); +#40 = IFCCARTESIANPOINT((400., 0.)); +#41 = IFCALIGNMENTSEGMENT('2f96e3LmrECxEoe22s5Xpd', #1, $, $, $, #1501, #1621, #42); +#42 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #43, 6.13318530717958, -500.000000000002, -500.000000000002, 400., $, .CIRCULARARC.); +#43 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#44 = IFCRELNESTS('3A9jueO1j2z8C76N1IFh7f', #1, 'Linear Element Nesting', $, #34, (#35, #38, #41, #1101)); +#20003 = IFCLOCALPLACEMENT(#30, #33); +#20010 = IFCPRODUCTDEFINITIONSHAPE($, $, (#20011)); +#20011 = IFCSHAPEREPRESENTATION(#1001, 'Axis', 'Curve3D', (#79)); +#45 = IFCALIGNMENTVERTICAL('3SOdKle3DEtuUG6EbrmQpy', #1, $, $, $, #20003, #20010); +#46 = IFCALIGNMENTSEGMENT('16nyAX_5956AZO3WakpmwA', #1, $, $, $, #2501, #2601, #47); +#47 = IFCALIGNMENTVERTICALSEGMENT($, $, 0., 449.999993741124, 150., -9.99999999995544E-4, -9.99999999995544E-4, $, .CONSTANTGRADIENT.); +#48 = IFCALIGNMENTSEGMENT('3Zuiuqd_1EPuTb4o9SuLse', #1, $, $, $, #2501, #2611, #49); +#49 = IFCALIGNMENTVERTICALSEGMENT($, $, 449.999993741124, 100.000006258876, 149.550000006261, -9.99999999995544E-4, 4.44444444449813E-4, 69230.7996321627, .CIRCULARARC.); +#50 = IFCALIGNMENTSEGMENT('1ZSIbG7kLDTxDPZKyT21HX', #1, $, $, $, #2501, #2621, #51); +#51 = IFCALIGNMENTVERTICALSEGMENT($, $, 550., 400., 149.522222225005, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); +#52 = IFCRELNESTS('0f0eGFsknBWxOW9inF_FLN', #1, 'Linear Element Nesting', $, #45, (#46, #48, #50, #2001)); +#53 = IFCRELNESTS('0Ejb6tfov7UebksdwCEIZR', #1, 'Alignment Nesting', $, #29, (#34, #45)); +#54 = IFCCOMPOSITECURVE((#55, #63, #71, #1201), .U.); +#55 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #58, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.), #59); +#56 = IFCCARTESIANPOINT((0., 0.)); +#57 = IFCDIRECTION((1., 0.)); +#58 = IFCAXIS2PLACEMENT2D(#56, #57); +#59 = IFCLINE(#60, #61); +#60 = IFCCARTESIANPOINT((0., 0.)); +#61 = IFCVECTOR(#62, 1.); +#62 = IFCDIRECTION((1., 0.)); +#63 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #66, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(150.), #67); +#64 = IFCCARTESIANPOINT((400., 0.)); +#65 = IFCDIRECTION((1., 0.)); +#66 = IFCAXIS2PLACEMENT2D(#64, #65); +#67 = IFCCLOTHOID(#70, -273.861278752584); +#68 = IFCCARTESIANPOINT((0., 0.)); +#69 = IFCDIRECTION((1., 0.)); +#70 = IFCAXIS2PLACEMENT2D(#68, #69); +#71 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #74, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(-400.), #75); +#72 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#73 = IFCDIRECTION((9.88771077936042E-1, -1.49438132473604E-1)); +#74 = IFCAXIS2PLACEMENT2D(#72, #73); +#75 = IFCCIRCLE(#78, 500.000000000002); +#76 = IFCCARTESIANPOINT((0., 0.)); +#77 = IFCDIRECTION((1., 0.)); +#78 = IFCAXIS2PLACEMENT2D(#76, #77); +#79 = IFCGRADIENTCURVE((#80, #88, #96, #2101), .U., #54, $); +#80 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #83, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(450.000218741065), #84); +#81 = IFCCARTESIANPOINT((0., 150.)); +#82 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#83 = IFCAXIS2PLACEMENT2D(#81, #82); +#84 = IFCLINE(#85, #86); +#85 = IFCCARTESIANPOINT((0., 0.)); +#86 = IFCVECTOR(#87, 1.); +#87 = IFCDIRECTION((1., 0.)); +#88 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #91, IFCLENGTHMEASURE(4.71138898071803), IFCLENGTHMEASURE(100.00001881), #92); +#89 = IFCCARTESIANPOINT((449.999993741124, 149.550000006261)); +#90 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#91 = IFCAXIS2PLACEMENT2D(#89, #90); +#92 = IFCCIRCLE(#95, 69230.7996321627); +#93 = IFCCARTESIANPOINT((0., 0.)); +#94 = IFCDIRECTION((1., 0.)); +#95 = IFCAXIS2PLACEMENT2D(#93, #94); +#96 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #99, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.000039506171), #100); +#97 = IFCCARTESIANPOINT((550., 149.522222225005)); +#98 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#99 = IFCAXIS2PLACEMENT2D(#97, #98); +#100 = IFCLINE(#101, #102); +#101 = IFCCARTESIANPOINT((0., 0.)); +#102 = IFCVECTOR(#103, 1.); +#103 = IFCDIRECTION((1., 0.)); +/* tfk: remove the footprint representation for now in #1002 */ +#104 = IFCPRODUCTDEFINITIONSHAPE($, $, (#106)); +#105 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#106 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Curve3D', (#79)); +#107 = IFCBUILTELEMENT('3k7$iV7T92$R$xNE9oe5R8', #1, 'SimpleProfile', $, $, #108, #115, $); +#108 = IFCLOCALPLACEMENT(#25, #114); +#109 = IFCDIRECTION((0., 0., 1.)); +#110 = IFCDIRECTION((1., 0., 0.)); +#114 = IFCAXIS2PLACEMENT3D(#15, #109, #110); +#115 = IFCPRODUCTDEFINITIONSHAPE($, $, (#127)); +#116 = IFCSECTIONEDSOLIDHORIZONTAL(#79, (#18, #18), (#117, #119)); +#117 = IFCAXIS2PLACEMENTLINEAR(#118, $, $); +#118 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(300.), $, $, $, #79); +#119 = IFCAXIS2PLACEMENTLINEAR(#120, $, $); +#120 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(600.), $, $, $, #79); +#127 = IFCSHAPEREPRESENTATION(#17, 'Body', 'AdvancedSweptSolid', (#116)); +#128 = IFCRELCONTAINEDINSPATIALSTRUCTURE('0de2EMoG5C3AvNHWz3ILSb', #1, 'Container', 'Container to Contained', (#29, #107), #24); +#129 = IFCRELAGGREGATES('0PN7lKNInB_OsofZN8N0Nn', #1, 'Project Container', 'Project to Spatial Element', #7, (#24)); + +#1001 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('FootPrint', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); + +#1101 = IFCALIGNMENTSEGMENT('1lqBKv7Xz1Hx2tmPCGtaIa', #1, $, $, $, #1501, #1631, #1102); +#1102 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #1103, -0.95, 0., 0., 0., $, .LINE.); +#1103 = IFCCARTESIANPOINT((881.65153753789, -211.03194929054)); + +#1201 = IFCCURVESEGMENT(.DISCONTINUOUS., #1204, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #1205); +#1202 = IFCCARTESIANPOINT((0881.65153753789, -211.03194929054)); +#1203 = IFCDIRECTION((0.58168308946, -0.81341550478)); +#1204 = IFCAXIS2PLACEMENT2D(#1202, #1203); +#1205 = IFCLINE(#1206, #1207); +#1206 = IFCCARTESIANPOINT((0., 0.)); +#1207 = IFCVECTOR(#1208, 1.); +#1208 = IFCDIRECTION((1., 0.)); + +#1501 = IFCLOCALPLACEMENT($, #1502); +#1502 = IFCAXIS2PLACEMENT3D(#1503, $, $); +#1503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#1601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1602)); +#1602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#55)); +#1611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1612)); +#1612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#63)); +#1621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1622)); +#1622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#71)); +#1631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1632)); +#1632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#1201)); + +#2001 = IFCALIGNMENTSEGMENT('49fS3hA8n5YOBvYphrBOIP', #1, $, $, $, #2501, #2631, #2002); +#2002 = IFCALIGNMENTVERTICALSEGMENT($, $, 950., 0., 149.7, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); + +#2101 = IFCCURVESEGMENT(.DISCONTINUOUS., #2104, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #2105); +#2102 = IFCCARTESIANPOINT((950., 149.7)); +#2103 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#2104 = IFCAXIS2PLACEMENT2D(#2102, #2103); +#2105 = IFCLINE(#85, #86); +#2106 = IFCCARTESIANPOINT((0., 0.)); +#2107 = IFCVECTOR(#2108, 1.); +#2108 = IFCDIRECTION((1., 0.)); + +#2501 = IFCLOCALPLACEMENT($, #2502); +#2502 = IFCAXIS2PLACEMENT3D(#2503, $, $); +#2503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#2601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2602)); +#2602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#80)); +#2611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2612)); +#2612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#88)); +#2621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2622)); +#2622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#96)); +#2631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2632)); +#2632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#2101)); + +#3000 = IFCRELAGGREGATES('0mRn50inT2pf1XqujacVu9', #1, 'Project Container 2', 'Project to Alignment', #7, (#29)); + +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/als006/fail-sectioned-solid-horizontal-wrong-identifier.ifc b/test/files/als006/fail-sectioned-solid-horizontal-wrong-identifier.ifc new file mode 100644 index 00000000..0b29d4e8 --- /dev/null +++ b/test/files/als006/fail-sectioned-solid-horizontal-wrong-identifier.ifc @@ -0,0 +1,187 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION (('ViewDefinition [Ifc4X3NotAssigned]'), '2;1'); +FILE_NAME ('sectioned-solid-horizontal.ifc', '2021-05-31T10:35:59', (), (), 'redacted', $, $); +FILE_SCHEMA (('IFC4X3_ADD1')); +ENDSEC; + +DATA; +#1 = IFCOWNERHISTORY(#2, #6, $, .NOCHANGE., $, $, $, 1622457359); +#2 = IFCPERSONANDORGANIZATION(#3, #4, $); +#3 = IFCPERSON($, 'redacted', 'redacted', $, $, $, $, $); +#4 = IFCORGANIZATION($, 'redacted', $, $, $); +#5 = IFCORGANIZATION($, 'redacted', $, $, $); +#6 = IFCAPPLICATION(#5, 'redacted', 'redacted', 'redacted'); +#7 = IFCPROJECT('0A_yMRoUvBdBdFGHn1GH7s', #1, 'Test IFC Project', $, $, $, $, (#13), #8); +#8 = IFCUNITASSIGNMENT((#9, #10, #11, #12)); +#9 = IFCSIUNIT(*, .LENGTHUNIT., $, .METRE.); +#10 = IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.); +#11 = IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.); +#12 = IFCSIUNIT(*, .PLANEANGLEUNIT., $, .RADIAN.); +#13 = IFCGEOMETRICREPRESENTATIONCONTEXT($, 'Model', 3, 1.E-4, #14, #16); +#14 = IFCAXIS2PLACEMENT3D(#15, $, $); +#15 = IFCCARTESIANPOINT((0., 0., 0.)); +#16 = IFCDIRECTION((0., 1.)); +#17 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#18 = IFCARBITRARYCLOSEDPROFILEDEF(.AREA., 'Simple Profile', #19); +#19 = IFCINDEXEDPOLYCURVE(#20, (IFCLINEINDEX((1, 2)), IFCLINEINDEX((2, 3)), IFCLINEINDEX((3, 4)), IFCLINEINDEX((4, 1))), $); +#20 = IFCCARTESIANPOINTLIST2D(((-4., 0.), (-5., -1.), (5., -1.), (4., 0.)), $); +#24 = IFCSITE('35wH0d2VDFze34cZziHyWH', #1, 'Default Site', $, $, #25, $, $, .ELEMENT., (0, 0, 0), (0, 0, 0), 0., $, $); +#25 = IFCLOCALPLACEMENT($, #28); +#26 = IFCDIRECTION((0., 0., 1.)); +#27 = IFCDIRECTION((1., 0., 0.)); +#28 = IFCAXIS2PLACEMENT3D(#15, #26, #27); +#29 = IFCALIGNMENT('0qI6nq6055HgCBPMUsw303', #1, 'Test Alignment', $, $, #30, #104, $); +#30 = IFCLOCALPLACEMENT(#25, #33); +#31 = IFCDIRECTION((0., 0., 1.)); +#32 = IFCDIRECTION((1., 0., 0.)); +#33 = IFCAXIS2PLACEMENT3D(#15, #31, #32); +#20002 = IFCLOCALPLACEMENT(#30, #33); +#20000 = IFCPRODUCTDEFINITIONSHAPE($, $, (#20001)); +#20001 = IFCSHAPEREPRESENTATION(#1001, 'FootPrint', 'Curve2D', (#54)); +#34 = IFCALIGNMENTHORIZONTAL('2a51YNKc9CIA9mX6PHta0R', #1, $, $, $, #20002, #20000); +#35 = IFCALIGNMENTSEGMENT('2VLcO34uj1ThLg3tnDQSDu', #1, $, $, $, #1501, #1601, #36); +#36 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #37, 0., 0., 0., 400., $, .LINE.); +#37 = IFCCARTESIANPOINT((0., 0.)); +#38 = IFCALIGNMENTSEGMENT('23in7RdgnF5etPmWAUg6Un', #1, $, $, $, #1501, #1611, #39); +#39 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #40, 0., 0., -500.000000000002, 150., $, .CLOTHOID.); +#40 = IFCCARTESIANPOINT((400., 0.)); +#41 = IFCALIGNMENTSEGMENT('2f96e3LmrECxEoe22s5Xpd', #1, $, $, $, #1501, #1621, #42); +#42 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #43, 6.13318530717958, -500.000000000002, -500.000000000002, 400., $, .CIRCULARARC.); +#43 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#44 = IFCRELNESTS('3A9jueO1j2z8C76N1IFh7f', #1, 'Linear Element Nesting', $, #34, (#35, #38, #41, #1101)); +#45 = IFCALIGNMENTVERTICAL('3SOdKle3DEtuUG6EbrmQpy', #1, $, $, $, $, $); +#46 = IFCALIGNMENTSEGMENT('16nyAX_5956AZO3WakpmwA', #1, $, $, $, #2501, #2601, #47); +#47 = IFCALIGNMENTVERTICALSEGMENT($, $, 0., 449.999993741124, 150., -9.99999999995544E-4, -9.99999999995544E-4, $, .CONSTANTGRADIENT.); +#48 = IFCALIGNMENTSEGMENT('3Zuiuqd_1EPuTb4o9SuLse', #1, $, $, $, #2501, #2611, #49); +#49 = IFCALIGNMENTVERTICALSEGMENT($, $, 449.999993741124, 100.000006258876, 149.550000006261, -9.99999999995544E-4, 4.44444444449813E-4, 69230.7996321627, .CIRCULARARC.); +#50 = IFCALIGNMENTSEGMENT('1ZSIbG7kLDTxDPZKyT21HX', #1, $, $, $, #2501, #2621, #51); +#51 = IFCALIGNMENTVERTICALSEGMENT($, $, 550., 400., 149.522222225005, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); +#52 = IFCRELNESTS('0f0eGFsknBWxOW9inF_FLN', #1, 'Linear Element Nesting', $, #45, (#46, #48, #50, #2001)); +#53 = IFCRELNESTS('0Ejb6tfov7UebksdwCEIZR', #1, 'Alignment Nesting', $, #29, (#34, #45)); +#54 = IFCCOMPOSITECURVE((#55, #63, #71, #1201), .U.); +#55 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #58, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.), #59); +#56 = IFCCARTESIANPOINT((0., 0.)); +#57 = IFCDIRECTION((1., 0.)); +#58 = IFCAXIS2PLACEMENT2D(#56, #57); +#59 = IFCLINE(#60, #61); +#60 = IFCCARTESIANPOINT((0., 0.)); +#61 = IFCVECTOR(#62, 1.); +#62 = IFCDIRECTION((1., 0.)); +#63 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #66, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(150.), #67); +#64 = IFCCARTESIANPOINT((400., 0.)); +#65 = IFCDIRECTION((1., 0.)); +#66 = IFCAXIS2PLACEMENT2D(#64, #65); +#67 = IFCCLOTHOID(#70, -273.861278752584); +#68 = IFCCARTESIANPOINT((0., 0.)); +#69 = IFCDIRECTION((1., 0.)); +#70 = IFCAXIS2PLACEMENT2D(#68, #69); +#71 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #74, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(-400.), #75); +#72 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#73 = IFCDIRECTION((9.88771077936042E-1, -1.49438132473604E-1)); +#74 = IFCAXIS2PLACEMENT2D(#72, #73); +#75 = IFCCIRCLE(#78, 500.000000000002); +#76 = IFCCARTESIANPOINT((0., 0.)); +#77 = IFCDIRECTION((1., 0.)); +#78 = IFCAXIS2PLACEMENT2D(#76, #77); +#79 = IFCGRADIENTCURVE((#80, #88, #96, #2101), .U., #54, $); +#80 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #83, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(450.000218741065), #84); +#81 = IFCCARTESIANPOINT((0., 150.)); +#82 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#83 = IFCAXIS2PLACEMENT2D(#81, #82); +#84 = IFCLINE(#85, #86); +#85 = IFCCARTESIANPOINT((0., 0.)); +#86 = IFCVECTOR(#87, 1.); +#87 = IFCDIRECTION((1., 0.)); +#88 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #91, IFCLENGTHMEASURE(4.71138898071803), IFCLENGTHMEASURE(100.00001881), #92); +#89 = IFCCARTESIANPOINT((449.999993741124, 149.550000006261)); +#90 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#91 = IFCAXIS2PLACEMENT2D(#89, #90); +#92 = IFCCIRCLE(#95, 69230.7996321627); +#93 = IFCCARTESIANPOINT((0., 0.)); +#94 = IFCDIRECTION((1., 0.)); +#95 = IFCAXIS2PLACEMENT2D(#93, #94); +#96 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #99, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.000039506171), #100); +#97 = IFCCARTESIANPOINT((550., 149.522222225005)); +#98 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#99 = IFCAXIS2PLACEMENT2D(#97, #98); +#100 = IFCLINE(#101, #102); +#101 = IFCCARTESIANPOINT((0., 0.)); +#102 = IFCVECTOR(#103, 1.); +#103 = IFCDIRECTION((1., 0.)); +/* tfk: remove the footprint representation for now in #1002 */ +#104 = IFCPRODUCTDEFINITIONSHAPE($, $, (#106)); +#105 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#106 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Curve3D', (#79)); +#107 = IFCBUILTELEMENT('3k7$iV7T92$R$xNE9oe5R8', #1, 'SimpleProfile', $, $, #108, #115, $); +#108 = IFCLOCALPLACEMENT(#25, #114); +#109 = IFCDIRECTION((0., 0., 1.)); +#110 = IFCDIRECTION((1., 0., 0.)); +#114 = IFCAXIS2PLACEMENT3D(#15, #109, #110); +#115 = IFCPRODUCTDEFINITIONSHAPE($, $, (#127)); +#116 = IFCSECTIONEDSOLIDHORIZONTAL(#79, (#18, #18), (#117, #119)); +#117 = IFCAXIS2PLACEMENTLINEAR(#118, $, $); +#118 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(300.), $, $, $, #79); +#119 = IFCAXIS2PLACEMENTLINEAR(#120, $, $); +#120 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(600.), $, $, $, #79); +#127 = IFCSHAPEREPRESENTATION(#17, 'Body', 'AdvancedSweptSolid', (#116)); +#128 = IFCRELCONTAINEDINSPATIALSTRUCTURE('0de2EMoG5C3AvNHWz3ILSb', #1, 'Container', 'Container to Contained', (#29, #107), #24); +#129 = IFCRELAGGREGATES('0PN7lKNInB_OsofZN8N0Nn', #1, 'Project Container', 'Project to Spatial Element', #7, (#24)); + +#1001 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('FootPrint', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); + +#1101 = IFCALIGNMENTSEGMENT('1lqBKv7Xz1Hx2tmPCGtaIa', #1, $, $, $, #1501, #1631, #1102); +#1102 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #1103, -0.95, 0., 0., 0., $, .LINE.); +#1103 = IFCCARTESIANPOINT((881.65153753789, -211.03194929054)); + +#1201 = IFCCURVESEGMENT(.DISCONTINUOUS., #1204, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #1205); +#1202 = IFCCARTESIANPOINT((0881.65153753789, -211.03194929054)); +#1203 = IFCDIRECTION((0.58168308946, -0.81341550478)); +#1204 = IFCAXIS2PLACEMENT2D(#1202, #1203); +#1205 = IFCLINE(#1206, #1207); +#1206 = IFCCARTESIANPOINT((0., 0.)); +#1207 = IFCVECTOR(#1208, 1.); +#1208 = IFCDIRECTION((1., 0.)); + +#1501 = IFCLOCALPLACEMENT($, #1502); +#1502 = IFCAXIS2PLACEMENT3D(#1503, $, $); +#1503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#1601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1602)); +#1602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#55)); +#1611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1612)); +#1612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#63)); +#1621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1622)); +#1622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#71)); +#1631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1632)); +#1632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#1201)); + +#2001 = IFCALIGNMENTSEGMENT('49fS3hA8n5YOBvYphrBOIP', #1, $, $, $, #2501, #2631, #2002); +#2002 = IFCALIGNMENTVERTICALSEGMENT($, $, 950., 0., 149.7, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); + +#2101 = IFCCURVESEGMENT(.DISCONTINUOUS., #2104, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #2105); +#2102 = IFCCARTESIANPOINT((950., 149.7)); +#2103 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#2104 = IFCAXIS2PLACEMENT2D(#2102, #2103); +#2105 = IFCLINE(#85, #86); +#2106 = IFCCARTESIANPOINT((0., 0.)); +#2107 = IFCVECTOR(#2108, 1.); +#2108 = IFCDIRECTION((1., 0.)); + +#2501 = IFCLOCALPLACEMENT($, #2502); +#2502 = IFCAXIS2PLACEMENT3D(#2503, $, $); +#2503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#2601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2602)); +#2602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#80)); +#2611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2612)); +#2612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#88)); +#2621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2622)); +#2622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#96)); +#2631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2632)); +#2632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#2101)); + +#3000 = IFCRELAGGREGATES('0mRn50inT2pf1XqujacVu9', #1, 'Project Container 2', 'Project to Alignment', #7, (#29)); + +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/als006/fail-sectioned-solid-horizontal-wrong-item.ifc b/test/files/als006/fail-sectioned-solid-horizontal-wrong-item.ifc new file mode 100644 index 00000000..0f9ccb5c --- /dev/null +++ b/test/files/als006/fail-sectioned-solid-horizontal-wrong-item.ifc @@ -0,0 +1,187 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION (('ViewDefinition [Ifc4X3NotAssigned]'), '2;1'); +FILE_NAME ('sectioned-solid-horizontal.ifc', '2021-05-31T10:35:59', (), (), 'redacted', $, $); +FILE_SCHEMA (('IFC4X3_ADD1')); +ENDSEC; + +DATA; +#1 = IFCOWNERHISTORY(#2, #6, $, .NOCHANGE., $, $, $, 1622457359); +#2 = IFCPERSONANDORGANIZATION(#3, #4, $); +#3 = IFCPERSON($, 'redacted', 'redacted', $, $, $, $, $); +#4 = IFCORGANIZATION($, 'redacted', $, $, $); +#5 = IFCORGANIZATION($, 'redacted', $, $, $); +#6 = IFCAPPLICATION(#5, 'redacted', 'redacted', 'redacted'); +#7 = IFCPROJECT('0A_yMRoUvBdBdFGHn1GH7s', #1, 'Test IFC Project', $, $, $, $, (#13), #8); +#8 = IFCUNITASSIGNMENT((#9, #10, #11, #12)); +#9 = IFCSIUNIT(*, .LENGTHUNIT., $, .METRE.); +#10 = IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.); +#11 = IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.); +#12 = IFCSIUNIT(*, .PLANEANGLEUNIT., $, .RADIAN.); +#13 = IFCGEOMETRICREPRESENTATIONCONTEXT($, 'Model', 3, 1.E-4, #14, #16); +#14 = IFCAXIS2PLACEMENT3D(#15, $, $); +#15 = IFCCARTESIANPOINT((0., 0., 0.)); +#16 = IFCDIRECTION((0., 1.)); +#17 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#18 = IFCARBITRARYCLOSEDPROFILEDEF(.AREA., 'Simple Profile', #19); +#19 = IFCINDEXEDPOLYCURVE(#20, (IFCLINEINDEX((1, 2)), IFCLINEINDEX((2, 3)), IFCLINEINDEX((3, 4)), IFCLINEINDEX((4, 1))), $); +#20 = IFCCARTESIANPOINTLIST2D(((-4., 0.), (-5., -1.), (5., -1.), (4., 0.)), $); +#24 = IFCSITE('35wH0d2VDFze34cZziHyWH', #1, 'Default Site', $, $, #25, $, $, .ELEMENT., (0, 0, 0), (0, 0, 0), 0., $, $); +#25 = IFCLOCALPLACEMENT($, #28); +#26 = IFCDIRECTION((0., 0., 1.)); +#27 = IFCDIRECTION((1., 0., 0.)); +#28 = IFCAXIS2PLACEMENT3D(#15, #26, #27); +#29 = IFCALIGNMENT('0qI6nq6055HgCBPMUsw303', #1, 'Test Alignment', $, $, #30, #104, $); +#30 = IFCLOCALPLACEMENT(#25, #33); +#31 = IFCDIRECTION((0., 0., 1.)); +#32 = IFCDIRECTION((1., 0., 0.)); +#33 = IFCAXIS2PLACEMENT3D(#15, #31, #32); +#20002 = IFCLOCALPLACEMENT(#30, #33); +#20000 = IFCPRODUCTDEFINITIONSHAPE($, $, (#20001)); +#20001 = IFCSHAPEREPRESENTATION(#1001, 'Axis', 'Curve2D', (#79)); +#34 = IFCALIGNMENTHORIZONTAL('2a51YNKc9CIA9mX6PHta0R', #1, $, $, $, #20002, #20000); +#35 = IFCALIGNMENTSEGMENT('2VLcO34uj1ThLg3tnDQSDu', #1, $, $, $, #1501, #1601, #36); +#36 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #37, 0., 0., 0., 400., $, .LINE.); +#37 = IFCCARTESIANPOINT((0., 0.)); +#38 = IFCALIGNMENTSEGMENT('23in7RdgnF5etPmWAUg6Un', #1, $, $, $, #1501, #1611, #39); +#39 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #40, 0., 0., -500.000000000002, 150., $, .CLOTHOID.); +#40 = IFCCARTESIANPOINT((400., 0.)); +#41 = IFCALIGNMENTSEGMENT('2f96e3LmrECxEoe22s5Xpd', #1, $, $, $, #1501, #1621, #42); +#42 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #43, 6.13318530717958, -500.000000000002, -500.000000000002, 400., $, .CIRCULARARC.); +#43 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#44 = IFCRELNESTS('3A9jueO1j2z8C76N1IFh7f', #1, 'Linear Element Nesting', $, #34, (#35, #38, #41, #1101)); +#45 = IFCALIGNMENTVERTICAL('3SOdKle3DEtuUG6EbrmQpy', #1, $, $, $, $, $); +#46 = IFCALIGNMENTSEGMENT('16nyAX_5956AZO3WakpmwA', #1, $, $, $, #2501, #2601, #47); +#47 = IFCALIGNMENTVERTICALSEGMENT($, $, 0., 449.999993741124, 150., -9.99999999995544E-4, -9.99999999995544E-4, $, .CONSTANTGRADIENT.); +#48 = IFCALIGNMENTSEGMENT('3Zuiuqd_1EPuTb4o9SuLse', #1, $, $, $, #2501, #2611, #49); +#49 = IFCALIGNMENTVERTICALSEGMENT($, $, 449.999993741124, 100.000006258876, 149.550000006261, -9.99999999995544E-4, 4.44444444449813E-4, 69230.7996321627, .CIRCULARARC.); +#50 = IFCALIGNMENTSEGMENT('1ZSIbG7kLDTxDPZKyT21HX', #1, $, $, $, #2501, #2621, #51); +#51 = IFCALIGNMENTVERTICALSEGMENT($, $, 550., 400., 149.522222225005, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); +#52 = IFCRELNESTS('0f0eGFsknBWxOW9inF_FLN', #1, 'Linear Element Nesting', $, #45, (#46, #48, #50, #2001)); +#53 = IFCRELNESTS('0Ejb6tfov7UebksdwCEIZR', #1, 'Alignment Nesting', $, #29, (#34, #45)); +#54 = IFCCOMPOSITECURVE((#55, #63, #71, #1201), .U.); +#55 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #58, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.), #59); +#56 = IFCCARTESIANPOINT((0., 0.)); +#57 = IFCDIRECTION((1., 0.)); +#58 = IFCAXIS2PLACEMENT2D(#56, #57); +#59 = IFCLINE(#60, #61); +#60 = IFCCARTESIANPOINT((0., 0.)); +#61 = IFCVECTOR(#62, 1.); +#62 = IFCDIRECTION((1., 0.)); +#63 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #66, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(150.), #67); +#64 = IFCCARTESIANPOINT((400., 0.)); +#65 = IFCDIRECTION((1., 0.)); +#66 = IFCAXIS2PLACEMENT2D(#64, #65); +#67 = IFCCLOTHOID(#70, -273.861278752584); +#68 = IFCCARTESIANPOINT((0., 0.)); +#69 = IFCDIRECTION((1., 0.)); +#70 = IFCAXIS2PLACEMENT2D(#68, #69); +#71 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #74, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(-400.), #75); +#72 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#73 = IFCDIRECTION((9.88771077936042E-1, -1.49438132473604E-1)); +#74 = IFCAXIS2PLACEMENT2D(#72, #73); +#75 = IFCCIRCLE(#78, 500.000000000002); +#76 = IFCCARTESIANPOINT((0., 0.)); +#77 = IFCDIRECTION((1., 0.)); +#78 = IFCAXIS2PLACEMENT2D(#76, #77); +#79 = IFCGRADIENTCURVE((#80, #88, #96, #2101), .U., #54, $); +#80 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #83, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(450.000218741065), #84); +#81 = IFCCARTESIANPOINT((0., 150.)); +#82 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#83 = IFCAXIS2PLACEMENT2D(#81, #82); +#84 = IFCLINE(#85, #86); +#85 = IFCCARTESIANPOINT((0., 0.)); +#86 = IFCVECTOR(#87, 1.); +#87 = IFCDIRECTION((1., 0.)); +#88 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #91, IFCLENGTHMEASURE(4.71138898071803), IFCLENGTHMEASURE(100.00001881), #92); +#89 = IFCCARTESIANPOINT((449.999993741124, 149.550000006261)); +#90 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#91 = IFCAXIS2PLACEMENT2D(#89, #90); +#92 = IFCCIRCLE(#95, 69230.7996321627); +#93 = IFCCARTESIANPOINT((0., 0.)); +#94 = IFCDIRECTION((1., 0.)); +#95 = IFCAXIS2PLACEMENT2D(#93, #94); +#96 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #99, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.000039506171), #100); +#97 = IFCCARTESIANPOINT((550., 149.522222225005)); +#98 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#99 = IFCAXIS2PLACEMENT2D(#97, #98); +#100 = IFCLINE(#101, #102); +#101 = IFCCARTESIANPOINT((0., 0.)); +#102 = IFCVECTOR(#103, 1.); +#103 = IFCDIRECTION((1., 0.)); +/* tfk: remove the footprint representation for now in #1002 */ +#104 = IFCPRODUCTDEFINITIONSHAPE($, $, (#106)); +#105 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#106 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Curve3D', (#79)); +#107 = IFCBUILTELEMENT('3k7$iV7T92$R$xNE9oe5R8', #1, 'SimpleProfile', $, $, #108, #115, $); +#108 = IFCLOCALPLACEMENT(#25, #114); +#109 = IFCDIRECTION((0., 0., 1.)); +#110 = IFCDIRECTION((1., 0., 0.)); +#114 = IFCAXIS2PLACEMENT3D(#15, #109, #110); +#115 = IFCPRODUCTDEFINITIONSHAPE($, $, (#127)); +#116 = IFCSECTIONEDSOLIDHORIZONTAL(#79, (#18, #18), (#117, #119)); +#117 = IFCAXIS2PLACEMENTLINEAR(#118, $, $); +#118 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(300.), $, $, $, #79); +#119 = IFCAXIS2PLACEMENTLINEAR(#120, $, $); +#120 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(600.), $, $, $, #79); +#127 = IFCSHAPEREPRESENTATION(#17, 'Body', 'AdvancedSweptSolid', (#116)); +#128 = IFCRELCONTAINEDINSPATIALSTRUCTURE('0de2EMoG5C3AvNHWz3ILSb', #1, 'Container', 'Container to Contained', (#29, #107), #24); +#129 = IFCRELAGGREGATES('0PN7lKNInB_OsofZN8N0Nn', #1, 'Project Container', 'Project to Spatial Element', #7, (#24)); + +#1001 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('FootPrint', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); + +#1101 = IFCALIGNMENTSEGMENT('1lqBKv7Xz1Hx2tmPCGtaIa', #1, $, $, $, #1501, #1631, #1102); +#1102 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #1103, -0.95, 0., 0., 0., $, .LINE.); +#1103 = IFCCARTESIANPOINT((881.65153753789, -211.03194929054)); + +#1201 = IFCCURVESEGMENT(.DISCONTINUOUS., #1204, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #1205); +#1202 = IFCCARTESIANPOINT((0881.65153753789, -211.03194929054)); +#1203 = IFCDIRECTION((0.58168308946, -0.81341550478)); +#1204 = IFCAXIS2PLACEMENT2D(#1202, #1203); +#1205 = IFCLINE(#1206, #1207); +#1206 = IFCCARTESIANPOINT((0., 0.)); +#1207 = IFCVECTOR(#1208, 1.); +#1208 = IFCDIRECTION((1., 0.)); + +#1501 = IFCLOCALPLACEMENT($, #1502); +#1502 = IFCAXIS2PLACEMENT3D(#1503, $, $); +#1503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#1601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1602)); +#1602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#55)); +#1611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1612)); +#1612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#63)); +#1621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1622)); +#1622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#71)); +#1631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1632)); +#1632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#1201)); + +#2001 = IFCALIGNMENTSEGMENT('49fS3hA8n5YOBvYphrBOIP', #1, $, $, $, #2501, #2631, #2002); +#2002 = IFCALIGNMENTVERTICALSEGMENT($, $, 950., 0., 149.7, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); + +#2101 = IFCCURVESEGMENT(.DISCONTINUOUS., #2104, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #2105); +#2102 = IFCCARTESIANPOINT((950., 149.7)); +#2103 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#2104 = IFCAXIS2PLACEMENT2D(#2102, #2103); +#2105 = IFCLINE(#85, #86); +#2106 = IFCCARTESIANPOINT((0., 0.)); +#2107 = IFCVECTOR(#2108, 1.); +#2108 = IFCDIRECTION((1., 0.)); + +#2501 = IFCLOCALPLACEMENT($, #2502); +#2502 = IFCAXIS2PLACEMENT3D(#2503, $, $); +#2503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#2601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2602)); +#2602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#80)); +#2611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2612)); +#2612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#88)); +#2621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2622)); +#2622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#96)); +#2631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2632)); +#2632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#2101)); + +#3000 = IFCRELAGGREGATES('0mRn50inT2pf1XqujacVu9', #1, 'Project Container 2', 'Project to Alignment', #7, (#29)); + +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/als006/fail-sectioned-solid-horizontal-wrong-type.ifc b/test/files/als006/fail-sectioned-solid-horizontal-wrong-type.ifc new file mode 100644 index 00000000..1f923e1d --- /dev/null +++ b/test/files/als006/fail-sectioned-solid-horizontal-wrong-type.ifc @@ -0,0 +1,187 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION (('ViewDefinition [Ifc4X3NotAssigned]'), '2;1'); +FILE_NAME ('sectioned-solid-horizontal.ifc', '2021-05-31T10:35:59', (), (), 'redacted', $, $); +FILE_SCHEMA (('IFC4X3_ADD1')); +ENDSEC; + +DATA; +#1 = IFCOWNERHISTORY(#2, #6, $, .NOCHANGE., $, $, $, 1622457359); +#2 = IFCPERSONANDORGANIZATION(#3, #4, $); +#3 = IFCPERSON($, 'redacted', 'redacted', $, $, $, $, $); +#4 = IFCORGANIZATION($, 'redacted', $, $, $); +#5 = IFCORGANIZATION($, 'redacted', $, $, $); +#6 = IFCAPPLICATION(#5, 'redacted', 'redacted', 'redacted'); +#7 = IFCPROJECT('0A_yMRoUvBdBdFGHn1GH7s', #1, 'Test IFC Project', $, $, $, $, (#13), #8); +#8 = IFCUNITASSIGNMENT((#9, #10, #11, #12)); +#9 = IFCSIUNIT(*, .LENGTHUNIT., $, .METRE.); +#10 = IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.); +#11 = IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.); +#12 = IFCSIUNIT(*, .PLANEANGLEUNIT., $, .RADIAN.); +#13 = IFCGEOMETRICREPRESENTATIONCONTEXT($, 'Model', 3, 1.E-4, #14, #16); +#14 = IFCAXIS2PLACEMENT3D(#15, $, $); +#15 = IFCCARTESIANPOINT((0., 0., 0.)); +#16 = IFCDIRECTION((0., 1.)); +#17 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#18 = IFCARBITRARYCLOSEDPROFILEDEF(.AREA., 'Simple Profile', #19); +#19 = IFCINDEXEDPOLYCURVE(#20, (IFCLINEINDEX((1, 2)), IFCLINEINDEX((2, 3)), IFCLINEINDEX((3, 4)), IFCLINEINDEX((4, 1))), $); +#20 = IFCCARTESIANPOINTLIST2D(((-4., 0.), (-5., -1.), (5., -1.), (4., 0.)), $); +#24 = IFCSITE('35wH0d2VDFze34cZziHyWH', #1, 'Default Site', $, $, #25, $, $, .ELEMENT., (0, 0, 0), (0, 0, 0), 0., $, $); +#25 = IFCLOCALPLACEMENT($, #28); +#26 = IFCDIRECTION((0., 0., 1.)); +#27 = IFCDIRECTION((1., 0., 0.)); +#28 = IFCAXIS2PLACEMENT3D(#15, #26, #27); +#29 = IFCALIGNMENT('0qI6nq6055HgCBPMUsw303', #1, 'Test Alignment', $, $, #30, #104, $); +#30 = IFCLOCALPLACEMENT(#25, #33); +#31 = IFCDIRECTION((0., 0., 1.)); +#32 = IFCDIRECTION((1., 0., 0.)); +#33 = IFCAXIS2PLACEMENT3D(#15, #31, #32); +#20002 = IFCLOCALPLACEMENT(#30, #33); +#20000 = IFCPRODUCTDEFINITIONSHAPE($, $, (#20001)); +#20001 = IFCSHAPEREPRESENTATION(#1001, 'Axis', 'Curve3D', (#54)); +#34 = IFCALIGNMENTHORIZONTAL('2a51YNKc9CIA9mX6PHta0R', #1, $, $, $, #20002, #20000); +#35 = IFCALIGNMENTSEGMENT('2VLcO34uj1ThLg3tnDQSDu', #1, $, $, $, #1501, #1601, #36); +#36 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #37, 0., 0., 0., 400., $, .LINE.); +#37 = IFCCARTESIANPOINT((0., 0.)); +#38 = IFCALIGNMENTSEGMENT('23in7RdgnF5etPmWAUg6Un', #1, $, $, $, #1501, #1611, #39); +#39 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #40, 0., 0., -500.000000000002, 150., $, .CLOTHOID.); +#40 = IFCCARTESIANPOINT((400., 0.)); +#41 = IFCALIGNMENTSEGMENT('2f96e3LmrECxEoe22s5Xpd', #1, $, $, $, #1501, #1621, #42); +#42 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #43, 6.13318530717958, -500.000000000002, -500.000000000002, 400., $, .CIRCULARARC.); +#43 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#44 = IFCRELNESTS('3A9jueO1j2z8C76N1IFh7f', #1, 'Linear Element Nesting', $, #34, (#35, #38, #41, #1101)); +#45 = IFCALIGNMENTVERTICAL('3SOdKle3DEtuUG6EbrmQpy', #1, $, $, $, $, $); +#46 = IFCALIGNMENTSEGMENT('16nyAX_5956AZO3WakpmwA', #1, $, $, $, #2501, #2601, #47); +#47 = IFCALIGNMENTVERTICALSEGMENT($, $, 0., 449.999993741124, 150., -9.99999999995544E-4, -9.99999999995544E-4, $, .CONSTANTGRADIENT.); +#48 = IFCALIGNMENTSEGMENT('3Zuiuqd_1EPuTb4o9SuLse', #1, $, $, $, #2501, #2611, #49); +#49 = IFCALIGNMENTVERTICALSEGMENT($, $, 449.999993741124, 100.000006258876, 149.550000006261, -9.99999999995544E-4, 4.44444444449813E-4, 69230.7996321627, .CIRCULARARC.); +#50 = IFCALIGNMENTSEGMENT('1ZSIbG7kLDTxDPZKyT21HX', #1, $, $, $, #2501, #2621, #51); +#51 = IFCALIGNMENTVERTICALSEGMENT($, $, 550., 400., 149.522222225005, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); +#52 = IFCRELNESTS('0f0eGFsknBWxOW9inF_FLN', #1, 'Linear Element Nesting', $, #45, (#46, #48, #50, #2001)); +#53 = IFCRELNESTS('0Ejb6tfov7UebksdwCEIZR', #1, 'Alignment Nesting', $, #29, (#34, #45)); +#54 = IFCCOMPOSITECURVE((#55, #63, #71, #1201), .U.); +#55 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #58, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.), #59); +#56 = IFCCARTESIANPOINT((0., 0.)); +#57 = IFCDIRECTION((1., 0.)); +#58 = IFCAXIS2PLACEMENT2D(#56, #57); +#59 = IFCLINE(#60, #61); +#60 = IFCCARTESIANPOINT((0., 0.)); +#61 = IFCVECTOR(#62, 1.); +#62 = IFCDIRECTION((1., 0.)); +#63 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #66, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(150.), #67); +#64 = IFCCARTESIANPOINT((400., 0.)); +#65 = IFCDIRECTION((1., 0.)); +#66 = IFCAXIS2PLACEMENT2D(#64, #65); +#67 = IFCCLOTHOID(#70, -273.861278752584); +#68 = IFCCARTESIANPOINT((0., 0.)); +#69 = IFCDIRECTION((1., 0.)); +#70 = IFCAXIS2PLACEMENT2D(#68, #69); +#71 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #74, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(-400.), #75); +#72 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#73 = IFCDIRECTION((9.88771077936042E-1, -1.49438132473604E-1)); +#74 = IFCAXIS2PLACEMENT2D(#72, #73); +#75 = IFCCIRCLE(#78, 500.000000000002); +#76 = IFCCARTESIANPOINT((0., 0.)); +#77 = IFCDIRECTION((1., 0.)); +#78 = IFCAXIS2PLACEMENT2D(#76, #77); +#79 = IFCGRADIENTCURVE((#80, #88, #96, #2101), .U., #54, $); +#80 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #83, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(450.000218741065), #84); +#81 = IFCCARTESIANPOINT((0., 150.)); +#82 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#83 = IFCAXIS2PLACEMENT2D(#81, #82); +#84 = IFCLINE(#85, #86); +#85 = IFCCARTESIANPOINT((0., 0.)); +#86 = IFCVECTOR(#87, 1.); +#87 = IFCDIRECTION((1., 0.)); +#88 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #91, IFCLENGTHMEASURE(4.71138898071803), IFCLENGTHMEASURE(100.00001881), #92); +#89 = IFCCARTESIANPOINT((449.999993741124, 149.550000006261)); +#90 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#91 = IFCAXIS2PLACEMENT2D(#89, #90); +#92 = IFCCIRCLE(#95, 69230.7996321627); +#93 = IFCCARTESIANPOINT((0., 0.)); +#94 = IFCDIRECTION((1., 0.)); +#95 = IFCAXIS2PLACEMENT2D(#93, #94); +#96 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #99, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.000039506171), #100); +#97 = IFCCARTESIANPOINT((550., 149.522222225005)); +#98 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#99 = IFCAXIS2PLACEMENT2D(#97, #98); +#100 = IFCLINE(#101, #102); +#101 = IFCCARTESIANPOINT((0., 0.)); +#102 = IFCVECTOR(#103, 1.); +#103 = IFCDIRECTION((1., 0.)); +/* tfk: remove the footprint representation for now in #1002 */ +#104 = IFCPRODUCTDEFINITIONSHAPE($, $, (#106)); +#105 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#106 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Curve3D', (#79)); +#107 = IFCBUILTELEMENT('3k7$iV7T92$R$xNE9oe5R8', #1, 'SimpleProfile', $, $, #108, #115, $); +#108 = IFCLOCALPLACEMENT(#25, #114); +#109 = IFCDIRECTION((0., 0., 1.)); +#110 = IFCDIRECTION((1., 0., 0.)); +#114 = IFCAXIS2PLACEMENT3D(#15, #109, #110); +#115 = IFCPRODUCTDEFINITIONSHAPE($, $, (#127)); +#116 = IFCSECTIONEDSOLIDHORIZONTAL(#79, (#18, #18), (#117, #119)); +#117 = IFCAXIS2PLACEMENTLINEAR(#118, $, $); +#118 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(300.), $, $, $, #79); +#119 = IFCAXIS2PLACEMENTLINEAR(#120, $, $); +#120 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(600.), $, $, $, #79); +#127 = IFCSHAPEREPRESENTATION(#17, 'Body', 'AdvancedSweptSolid', (#116)); +#128 = IFCRELCONTAINEDINSPATIALSTRUCTURE('0de2EMoG5C3AvNHWz3ILSb', #1, 'Container', 'Container to Contained', (#29, #107), #24); +#129 = IFCRELAGGREGATES('0PN7lKNInB_OsofZN8N0Nn', #1, 'Project Container', 'Project to Spatial Element', #7, (#24)); + +#1001 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('FootPrint', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); + +#1101 = IFCALIGNMENTSEGMENT('1lqBKv7Xz1Hx2tmPCGtaIa', #1, $, $, $, #1501, #1631, #1102); +#1102 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #1103, -0.95, 0., 0., 0., $, .LINE.); +#1103 = IFCCARTESIANPOINT((881.65153753789, -211.03194929054)); + +#1201 = IFCCURVESEGMENT(.DISCONTINUOUS., #1204, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #1205); +#1202 = IFCCARTESIANPOINT((0881.65153753789, -211.03194929054)); +#1203 = IFCDIRECTION((0.58168308946, -0.81341550478)); +#1204 = IFCAXIS2PLACEMENT2D(#1202, #1203); +#1205 = IFCLINE(#1206, #1207); +#1206 = IFCCARTESIANPOINT((0., 0.)); +#1207 = IFCVECTOR(#1208, 1.); +#1208 = IFCDIRECTION((1., 0.)); + +#1501 = IFCLOCALPLACEMENT($, #1502); +#1502 = IFCAXIS2PLACEMENT3D(#1503, $, $); +#1503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#1601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1602)); +#1602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#55)); +#1611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1612)); +#1612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#63)); +#1621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1622)); +#1622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#71)); +#1631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1632)); +#1632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#1201)); + +#2001 = IFCALIGNMENTSEGMENT('49fS3hA8n5YOBvYphrBOIP', #1, $, $, $, #2501, #2631, #2002); +#2002 = IFCALIGNMENTVERTICALSEGMENT($, $, 950., 0., 149.7, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); + +#2101 = IFCCURVESEGMENT(.DISCONTINUOUS., #2104, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #2105); +#2102 = IFCCARTESIANPOINT((950., 149.7)); +#2103 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#2104 = IFCAXIS2PLACEMENT2D(#2102, #2103); +#2105 = IFCLINE(#85, #86); +#2106 = IFCCARTESIANPOINT((0., 0.)); +#2107 = IFCVECTOR(#2108, 1.); +#2108 = IFCDIRECTION((1., 0.)); + +#2501 = IFCLOCALPLACEMENT($, #2502); +#2502 = IFCAXIS2PLACEMENT3D(#2503, $, $); +#2503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#2601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2602)); +#2602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#80)); +#2611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2612)); +#2612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#88)); +#2621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2622)); +#2622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#96)); +#2631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2632)); +#2632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#2101)); + +#3000 = IFCRELAGGREGATES('0mRn50inT2pf1XqujacVu9', #1, 'Project Container 2', 'Project to Alignment', #7, (#29)); + +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/als006/pass-sectioned-solid-horizontal.ifc b/test/files/als006/pass-sectioned-solid-horizontal.ifc new file mode 100644 index 00000000..339a5c38 --- /dev/null +++ b/test/files/als006/pass-sectioned-solid-horizontal.ifc @@ -0,0 +1,190 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION (('ViewDefinition [Ifc4X3NotAssigned]'), '2;1'); +FILE_NAME ('sectioned-solid-horizontal.ifc', '2021-05-31T10:35:59', (), (), 'redacted', $, $); +FILE_SCHEMA (('IFC4X3_ADD1')); +ENDSEC; + +DATA; +#1 = IFCOWNERHISTORY(#2, #6, $, .NOCHANGE., $, $, $, 1622457359); +#2 = IFCPERSONANDORGANIZATION(#3, #4, $); +#3 = IFCPERSON($, 'redacted', 'redacted', $, $, $, $, $); +#4 = IFCORGANIZATION($, 'redacted', $, $, $); +#5 = IFCORGANIZATION($, 'redacted', $, $, $); +#6 = IFCAPPLICATION(#5, 'redacted', 'redacted', 'redacted'); +#7 = IFCPROJECT('0A_yMRoUvBdBdFGHn1GH7s', #1, 'Test IFC Project', $, $, $, $, (#13), #8); +#8 = IFCUNITASSIGNMENT((#9, #10, #11, #12)); +#9 = IFCSIUNIT(*, .LENGTHUNIT., $, .METRE.); +#10 = IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.); +#11 = IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.); +#12 = IFCSIUNIT(*, .PLANEANGLEUNIT., $, .RADIAN.); +#13 = IFCGEOMETRICREPRESENTATIONCONTEXT($, 'Model', 3, 1.E-4, #14, #16); +#14 = IFCAXIS2PLACEMENT3D(#15, $, $); +#15 = IFCCARTESIANPOINT((0., 0., 0.)); +#16 = IFCDIRECTION((0., 1.)); +#17 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#18 = IFCARBITRARYCLOSEDPROFILEDEF(.AREA., 'Simple Profile', #19); +#19 = IFCINDEXEDPOLYCURVE(#20, (IFCLINEINDEX((1, 2)), IFCLINEINDEX((2, 3)), IFCLINEINDEX((3, 4)), IFCLINEINDEX((4, 1))), $); +#20 = IFCCARTESIANPOINTLIST2D(((-4., 0.), (-5., -1.), (5., -1.), (4., 0.)), $); +#24 = IFCSITE('35wH0d2VDFze34cZziHyWH', #1, 'Default Site', $, $, #25, $, $, .ELEMENT., (0, 0, 0), (0, 0, 0), 0., $, $); +#25 = IFCLOCALPLACEMENT($, #28); +#26 = IFCDIRECTION((0., 0., 1.)); +#27 = IFCDIRECTION((1., 0., 0.)); +#28 = IFCAXIS2PLACEMENT3D(#15, #26, #27); +#29 = IFCALIGNMENT('0qI6nq6055HgCBPMUsw303', #1, 'Test Alignment', $, $, #30, #104, $); +#30 = IFCLOCALPLACEMENT(#25, #33); +#31 = IFCDIRECTION((0., 0., 1.)); +#32 = IFCDIRECTION((1., 0., 0.)); +#33 = IFCAXIS2PLACEMENT3D(#15, #31, #32); +#20002 = IFCLOCALPLACEMENT(#30, #33); +#20000 = IFCPRODUCTDEFINITIONSHAPE($, $, (#20001)); +#20001 = IFCSHAPEREPRESENTATION(#1001, 'Axis', 'Curve2D', (#54)); +#34 = IFCALIGNMENTHORIZONTAL('2a51YNKc9CIA9mX6PHta0R', #1, $, $, $, #20002, #20000); +#35 = IFCALIGNMENTSEGMENT('2VLcO34uj1ThLg3tnDQSDu', #1, $, $, $, #1501, #1601, #36); +#36 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #37, 0., 0., 0., 400., $, .LINE.); +#37 = IFCCARTESIANPOINT((0., 0.)); +#38 = IFCALIGNMENTSEGMENT('23in7RdgnF5etPmWAUg6Un', #1, $, $, $, #1501, #1611, #39); +#39 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #40, 0., 0., -500.000000000002, 150., $, .CLOTHOID.); +#40 = IFCCARTESIANPOINT((400., 0.)); +#41 = IFCALIGNMENTSEGMENT('2f96e3LmrECxEoe22s5Xpd', #1, $, $, $, #1501, #1621, #42); +#42 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #43, 6.13318530717958, -500.000000000002, -500.000000000002, 400., $, .CIRCULARARC.); +#43 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#44 = IFCRELNESTS('3A9jueO1j2z8C76N1IFh7f', #1, 'Linear Element Nesting', $, #34, (#35, #38, #41, #1101)); +#20003 = IFCLOCALPLACEMENT(#30, #33); +#20010 = IFCPRODUCTDEFINITIONSHAPE($, $, (#20011)); +#20011 = IFCSHAPEREPRESENTATION(#1001, 'Axis', 'Curve3D', (#79)); +#45 = IFCALIGNMENTVERTICAL('3SOdKle3DEtuUG6EbrmQpy', #1, $, $, $, #20003, #20010); +#46 = IFCALIGNMENTSEGMENT('16nyAX_5956AZO3WakpmwA', #1, $, $, $, #2501, #2601, #47); +#47 = IFCALIGNMENTVERTICALSEGMENT($, $, 0., 449.999993741124, 150., -9.99999999995544E-4, -9.99999999995544E-4, $, .CONSTANTGRADIENT.); +#48 = IFCALIGNMENTSEGMENT('3Zuiuqd_1EPuTb4o9SuLse', #1, $, $, $, #2501, #2611, #49); +#49 = IFCALIGNMENTVERTICALSEGMENT($, $, 449.999993741124, 100.000006258876, 149.550000006261, -9.99999999995544E-4, 4.44444444449813E-4, 69230.7996321627, .CIRCULARARC.); +#50 = IFCALIGNMENTSEGMENT('1ZSIbG7kLDTxDPZKyT21HX', #1, $, $, $, #2501, #2621, #51); +#51 = IFCALIGNMENTVERTICALSEGMENT($, $, 550., 400., 149.522222225005, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); +#52 = IFCRELNESTS('0f0eGFsknBWxOW9inF_FLN', #1, 'Linear Element Nesting', $, #45, (#46, #48, #50, #2001)); +#53 = IFCRELNESTS('0Ejb6tfov7UebksdwCEIZR', #1, 'Alignment Nesting', $, #29, (#34, #45)); +#54 = IFCCOMPOSITECURVE((#55, #63, #71, #1201), .U.); +#55 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #58, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.), #59); +#56 = IFCCARTESIANPOINT((0., 0.)); +#57 = IFCDIRECTION((1., 0.)); +#58 = IFCAXIS2PLACEMENT2D(#56, #57); +#59 = IFCLINE(#60, #61); +#60 = IFCCARTESIANPOINT((0., 0.)); +#61 = IFCVECTOR(#62, 1.); +#62 = IFCDIRECTION((1., 0.)); +#63 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #66, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(150.), #67); +#64 = IFCCARTESIANPOINT((400., 0.)); +#65 = IFCDIRECTION((1., 0.)); +#66 = IFCAXIS2PLACEMENT2D(#64, #65); +#67 = IFCCLOTHOID(#70, -273.861278752584); +#68 = IFCCARTESIANPOINT((0., 0.)); +#69 = IFCDIRECTION((1., 0.)); +#70 = IFCAXIS2PLACEMENT2D(#68, #69); +#71 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #74, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(-400.), #75); +#72 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#73 = IFCDIRECTION((9.88771077936042E-1, -1.49438132473604E-1)); +#74 = IFCAXIS2PLACEMENT2D(#72, #73); +#75 = IFCCIRCLE(#78, 500.000000000002); +#76 = IFCCARTESIANPOINT((0., 0.)); +#77 = IFCDIRECTION((1., 0.)); +#78 = IFCAXIS2PLACEMENT2D(#76, #77); +#79 = IFCGRADIENTCURVE((#80, #88, #96, #2101), .U., #54, $); +#80 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #83, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(450.000218741065), #84); +#81 = IFCCARTESIANPOINT((0., 150.)); +#82 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#83 = IFCAXIS2PLACEMENT2D(#81, #82); +#84 = IFCLINE(#85, #86); +#85 = IFCCARTESIANPOINT((0., 0.)); +#86 = IFCVECTOR(#87, 1.); +#87 = IFCDIRECTION((1., 0.)); +#88 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #91, IFCLENGTHMEASURE(4.71138898071803), IFCLENGTHMEASURE(100.00001881), #92); +#89 = IFCCARTESIANPOINT((449.999993741124, 149.550000006261)); +#90 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#91 = IFCAXIS2PLACEMENT2D(#89, #90); +#92 = IFCCIRCLE(#95, 69230.7996321627); +#93 = IFCCARTESIANPOINT((0., 0.)); +#94 = IFCDIRECTION((1., 0.)); +#95 = IFCAXIS2PLACEMENT2D(#93, #94); +#96 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #99, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.000039506171), #100); +#97 = IFCCARTESIANPOINT((550., 149.522222225005)); +#98 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#99 = IFCAXIS2PLACEMENT2D(#97, #98); +#100 = IFCLINE(#101, #102); +#101 = IFCCARTESIANPOINT((0., 0.)); +#102 = IFCVECTOR(#103, 1.); +#103 = IFCDIRECTION((1., 0.)); +/* tfk: remove the footprint representation for now in #1002 */ +#104 = IFCPRODUCTDEFINITIONSHAPE($, $, (#106)); +#105 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#106 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Curve3D', (#79)); +#107 = IFCBUILTELEMENT('3k7$iV7T92$R$xNE9oe5R8', #1, 'SimpleProfile', $, $, #108, #115, $); +#108 = IFCLOCALPLACEMENT(#25, #114); +#109 = IFCDIRECTION((0., 0., 1.)); +#110 = IFCDIRECTION((1., 0., 0.)); +#114 = IFCAXIS2PLACEMENT3D(#15, #109, #110); +#115 = IFCPRODUCTDEFINITIONSHAPE($, $, (#127)); +#116 = IFCSECTIONEDSOLIDHORIZONTAL(#79, (#18, #18), (#117, #119)); +#117 = IFCAXIS2PLACEMENTLINEAR(#118, $, $); +#118 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(300.), $, $, $, #79); +#119 = IFCAXIS2PLACEMENTLINEAR(#120, $, $); +#120 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(600.), $, $, $, #79); +#127 = IFCSHAPEREPRESENTATION(#17, 'Body', 'AdvancedSweptSolid', (#116)); +#128 = IFCRELCONTAINEDINSPATIALSTRUCTURE('0de2EMoG5C3AvNHWz3ILSb', #1, 'Container', 'Container to Contained', (#29, #107), #24); +#129 = IFCRELAGGREGATES('0PN7lKNInB_OsofZN8N0Nn', #1, 'Project Container', 'Project to Spatial Element', #7, (#24)); + +#1001 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('FootPrint', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); + +#1101 = IFCALIGNMENTSEGMENT('1lqBKv7Xz1Hx2tmPCGtaIa', #1, $, $, $, #1501, #1631, #1102); +#1102 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #1103, -0.95, 0., 0., 0., $, .LINE.); +#1103 = IFCCARTESIANPOINT((881.65153753789, -211.03194929054)); + +#1201 = IFCCURVESEGMENT(.DISCONTINUOUS., #1204, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #1205); +#1202 = IFCCARTESIANPOINT((0881.65153753789, -211.03194929054)); +#1203 = IFCDIRECTION((0.58168308946, -0.81341550478)); +#1204 = IFCAXIS2PLACEMENT2D(#1202, #1203); +#1205 = IFCLINE(#1206, #1207); +#1206 = IFCCARTESIANPOINT((0., 0.)); +#1207 = IFCVECTOR(#1208, 1.); +#1208 = IFCDIRECTION((1., 0.)); + +#1501 = IFCLOCALPLACEMENT($, #1502); +#1502 = IFCAXIS2PLACEMENT3D(#1503, $, $); +#1503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#1601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1602)); +#1602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#55)); +#1611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1612)); +#1612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#63)); +#1621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1622)); +#1622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#71)); +#1631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1632)); +#1632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#1201)); + +#2001 = IFCALIGNMENTSEGMENT('49fS3hA8n5YOBvYphrBOIP', #1, $, $, $, #2501, #2631, #2002); +#2002 = IFCALIGNMENTVERTICALSEGMENT($, $, 950., 0., 149.7, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); + +#2101 = IFCCURVESEGMENT(.DISCONTINUOUS., #2104, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #2105); +#2102 = IFCCARTESIANPOINT((950., 149.7)); +#2103 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#2104 = IFCAXIS2PLACEMENT2D(#2102, #2103); +#2105 = IFCLINE(#85, #86); +#2106 = IFCCARTESIANPOINT((0., 0.)); +#2107 = IFCVECTOR(#2108, 1.); +#2108 = IFCDIRECTION((1., 0.)); + +#2501 = IFCLOCALPLACEMENT($, #2502); +#2502 = IFCAXIS2PLACEMENT3D(#2503, $, $); +#2503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#2601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2602)); +#2602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#80)); +#2611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2612)); +#2612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#88)); +#2621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2622)); +#2622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#96)); +#2631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2632)); +#2632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#2101)); + +#3000 = IFCRELAGGREGATES('0mRn50inT2pf1XqujacVu9', #1, 'Project Container 2', 'Project to Alignment', #7, (#29)); + +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/als007/fail-sectioned-solid-horizontal-wrong-identifier.ifc b/test/files/als007/fail-sectioned-solid-horizontal-wrong-identifier.ifc new file mode 100644 index 00000000..ba05a7f2 --- /dev/null +++ b/test/files/als007/fail-sectioned-solid-horizontal-wrong-identifier.ifc @@ -0,0 +1,190 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION (('ViewDefinition [Ifc4X3NotAssigned]'), '2;1'); +FILE_NAME ('sectioned-solid-horizontal.ifc', '2021-05-31T10:35:59', (), (), 'redacted', $, $); +FILE_SCHEMA (('IFC4X3_ADD1')); +ENDSEC; + +DATA; +#1 = IFCOWNERHISTORY(#2, #6, $, .NOCHANGE., $, $, $, 1622457359); +#2 = IFCPERSONANDORGANIZATION(#3, #4, $); +#3 = IFCPERSON($, 'redacted', 'redacted', $, $, $, $, $); +#4 = IFCORGANIZATION($, 'redacted', $, $, $); +#5 = IFCORGANIZATION($, 'redacted', $, $, $); +#6 = IFCAPPLICATION(#5, 'redacted', 'redacted', 'redacted'); +#7 = IFCPROJECT('0A_yMRoUvBdBdFGHn1GH7s', #1, 'Test IFC Project', $, $, $, $, (#13), #8); +#8 = IFCUNITASSIGNMENT((#9, #10, #11, #12)); +#9 = IFCSIUNIT(*, .LENGTHUNIT., $, .METRE.); +#10 = IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.); +#11 = IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.); +#12 = IFCSIUNIT(*, .PLANEANGLEUNIT., $, .RADIAN.); +#13 = IFCGEOMETRICREPRESENTATIONCONTEXT($, 'Model', 3, 1.E-4, #14, #16); +#14 = IFCAXIS2PLACEMENT3D(#15, $, $); +#15 = IFCCARTESIANPOINT((0., 0., 0.)); +#16 = IFCDIRECTION((0., 1.)); +#17 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#18 = IFCARBITRARYCLOSEDPROFILEDEF(.AREA., 'Simple Profile', #19); +#19 = IFCINDEXEDPOLYCURVE(#20, (IFCLINEINDEX((1, 2)), IFCLINEINDEX((2, 3)), IFCLINEINDEX((3, 4)), IFCLINEINDEX((4, 1))), $); +#20 = IFCCARTESIANPOINTLIST2D(((-4., 0.), (-5., -1.), (5., -1.), (4., 0.)), $); +#24 = IFCSITE('35wH0d2VDFze34cZziHyWH', #1, 'Default Site', $, $, #25, $, $, .ELEMENT., (0, 0, 0), (0, 0, 0), 0., $, $); +#25 = IFCLOCALPLACEMENT($, #28); +#26 = IFCDIRECTION((0., 0., 1.)); +#27 = IFCDIRECTION((1., 0., 0.)); +#28 = IFCAXIS2PLACEMENT3D(#15, #26, #27); +#29 = IFCALIGNMENT('0qI6nq6055HgCBPMUsw303', #1, 'Test Alignment', $, $, #30, #104, $); +#30 = IFCLOCALPLACEMENT(#25, #33); +#31 = IFCDIRECTION((0., 0., 1.)); +#32 = IFCDIRECTION((1., 0., 0.)); +#33 = IFCAXIS2PLACEMENT3D(#15, #31, #32); +#20002 = IFCLOCALPLACEMENT(#30, #33); +#20000 = IFCPRODUCTDEFINITIONSHAPE($, $, (#20001)); +#20001 = IFCSHAPEREPRESENTATION(#1001, 'Axis', 'Curve2D', (#54)); +#34 = IFCALIGNMENTHORIZONTAL('2a51YNKc9CIA9mX6PHta0R', #1, $, $, $, #20002, #20000); +#35 = IFCALIGNMENTSEGMENT('2VLcO34uj1ThLg3tnDQSDu', #1, $, $, $, #1501, #1601, #36); +#36 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #37, 0., 0., 0., 400., $, .LINE.); +#37 = IFCCARTESIANPOINT((0., 0.)); +#38 = IFCALIGNMENTSEGMENT('23in7RdgnF5etPmWAUg6Un', #1, $, $, $, #1501, #1611, #39); +#39 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #40, 0., 0., -500.000000000002, 150., $, .CLOTHOID.); +#40 = IFCCARTESIANPOINT((400., 0.)); +#41 = IFCALIGNMENTSEGMENT('2f96e3LmrECxEoe22s5Xpd', #1, $, $, $, #1501, #1621, #42); +#42 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #43, 6.13318530717958, -500.000000000002, -500.000000000002, 400., $, .CIRCULARARC.); +#43 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#44 = IFCRELNESTS('3A9jueO1j2z8C76N1IFh7f', #1, 'Linear Element Nesting', $, #34, (#35, #38, #41, #1101)); +#20003 = IFCLOCALPLACEMENT(#30, #33); +#20010 = IFCPRODUCTDEFINITIONSHAPE($, $, (#20011)); +#20011 = IFCSHAPEREPRESENTATION(#1001, 'FootPrint', 'Curve3D', (#79)); +#45 = IFCALIGNMENTVERTICAL('3SOdKle3DEtuUG6EbrmQpy', #1, $, $, $, #20003, #20010); +#46 = IFCALIGNMENTSEGMENT('16nyAX_5956AZO3WakpmwA', #1, $, $, $, #2501, #2601, #47); +#47 = IFCALIGNMENTVERTICALSEGMENT($, $, 0., 449.999993741124, 150., -9.99999999995544E-4, -9.99999999995544E-4, $, .CONSTANTGRADIENT.); +#48 = IFCALIGNMENTSEGMENT('3Zuiuqd_1EPuTb4o9SuLse', #1, $, $, $, #2501, #2611, #49); +#49 = IFCALIGNMENTVERTICALSEGMENT($, $, 449.999993741124, 100.000006258876, 149.550000006261, -9.99999999995544E-4, 4.44444444449813E-4, 69230.7996321627, .CIRCULARARC.); +#50 = IFCALIGNMENTSEGMENT('1ZSIbG7kLDTxDPZKyT21HX', #1, $, $, $, #2501, #2621, #51); +#51 = IFCALIGNMENTVERTICALSEGMENT($, $, 550., 400., 149.522222225005, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); +#52 = IFCRELNESTS('0f0eGFsknBWxOW9inF_FLN', #1, 'Linear Element Nesting', $, #45, (#46, #48, #50, #2001)); +#53 = IFCRELNESTS('0Ejb6tfov7UebksdwCEIZR', #1, 'Alignment Nesting', $, #29, (#34, #45)); +#54 = IFCCOMPOSITECURVE((#55, #63, #71, #1201), .U.); +#55 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #58, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.), #59); +#56 = IFCCARTESIANPOINT((0., 0.)); +#57 = IFCDIRECTION((1., 0.)); +#58 = IFCAXIS2PLACEMENT2D(#56, #57); +#59 = IFCLINE(#60, #61); +#60 = IFCCARTESIANPOINT((0., 0.)); +#61 = IFCVECTOR(#62, 1.); +#62 = IFCDIRECTION((1., 0.)); +#63 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #66, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(150.), #67); +#64 = IFCCARTESIANPOINT((400., 0.)); +#65 = IFCDIRECTION((1., 0.)); +#66 = IFCAXIS2PLACEMENT2D(#64, #65); +#67 = IFCCLOTHOID(#70, -273.861278752584); +#68 = IFCCARTESIANPOINT((0., 0.)); +#69 = IFCDIRECTION((1., 0.)); +#70 = IFCAXIS2PLACEMENT2D(#68, #69); +#71 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #74, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(-400.), #75); +#72 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#73 = IFCDIRECTION((9.88771077936042E-1, -1.49438132473604E-1)); +#74 = IFCAXIS2PLACEMENT2D(#72, #73); +#75 = IFCCIRCLE(#78, 500.000000000002); +#76 = IFCCARTESIANPOINT((0., 0.)); +#77 = IFCDIRECTION((1., 0.)); +#78 = IFCAXIS2PLACEMENT2D(#76, #77); +#79 = IFCGRADIENTCURVE((#80, #88, #96, #2101), .U., #54, $); +#80 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #83, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(450.000218741065), #84); +#81 = IFCCARTESIANPOINT((0., 150.)); +#82 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#83 = IFCAXIS2PLACEMENT2D(#81, #82); +#84 = IFCLINE(#85, #86); +#85 = IFCCARTESIANPOINT((0., 0.)); +#86 = IFCVECTOR(#87, 1.); +#87 = IFCDIRECTION((1., 0.)); +#88 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #91, IFCLENGTHMEASURE(4.71138898071803), IFCLENGTHMEASURE(100.00001881), #92); +#89 = IFCCARTESIANPOINT((449.999993741124, 149.550000006261)); +#90 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#91 = IFCAXIS2PLACEMENT2D(#89, #90); +#92 = IFCCIRCLE(#95, 69230.7996321627); +#93 = IFCCARTESIANPOINT((0., 0.)); +#94 = IFCDIRECTION((1., 0.)); +#95 = IFCAXIS2PLACEMENT2D(#93, #94); +#96 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #99, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.000039506171), #100); +#97 = IFCCARTESIANPOINT((550., 149.522222225005)); +#98 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#99 = IFCAXIS2PLACEMENT2D(#97, #98); +#100 = IFCLINE(#101, #102); +#101 = IFCCARTESIANPOINT((0., 0.)); +#102 = IFCVECTOR(#103, 1.); +#103 = IFCDIRECTION((1., 0.)); +/* tfk: remove the footprint representation for now in #1002 */ +#104 = IFCPRODUCTDEFINITIONSHAPE($, $, (#106)); +#105 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#106 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Curve3D', (#79)); +#107 = IFCBUILTELEMENT('3k7$iV7T92$R$xNE9oe5R8', #1, 'SimpleProfile', $, $, #108, #115, $); +#108 = IFCLOCALPLACEMENT(#25, #114); +#109 = IFCDIRECTION((0., 0., 1.)); +#110 = IFCDIRECTION((1., 0., 0.)); +#114 = IFCAXIS2PLACEMENT3D(#15, #109, #110); +#115 = IFCPRODUCTDEFINITIONSHAPE($, $, (#127)); +#116 = IFCSECTIONEDSOLIDHORIZONTAL(#79, (#18, #18), (#117, #119)); +#117 = IFCAXIS2PLACEMENTLINEAR(#118, $, $); +#118 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(300.), $, $, $, #79); +#119 = IFCAXIS2PLACEMENTLINEAR(#120, $, $); +#120 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(600.), $, $, $, #79); +#127 = IFCSHAPEREPRESENTATION(#17, 'Body', 'AdvancedSweptSolid', (#116)); +#128 = IFCRELCONTAINEDINSPATIALSTRUCTURE('0de2EMoG5C3AvNHWz3ILSb', #1, 'Container', 'Container to Contained', (#29, #107), #24); +#129 = IFCRELAGGREGATES('0PN7lKNInB_OsofZN8N0Nn', #1, 'Project Container', 'Project to Spatial Element', #7, (#24)); + +#1001 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('FootPrint', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); + +#1101 = IFCALIGNMENTSEGMENT('1lqBKv7Xz1Hx2tmPCGtaIa', #1, $, $, $, #1501, #1631, #1102); +#1102 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #1103, -0.95, 0., 0., 0., $, .LINE.); +#1103 = IFCCARTESIANPOINT((881.65153753789, -211.03194929054)); + +#1201 = IFCCURVESEGMENT(.DISCONTINUOUS., #1204, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #1205); +#1202 = IFCCARTESIANPOINT((0881.65153753789, -211.03194929054)); +#1203 = IFCDIRECTION((0.58168308946, -0.81341550478)); +#1204 = IFCAXIS2PLACEMENT2D(#1202, #1203); +#1205 = IFCLINE(#1206, #1207); +#1206 = IFCCARTESIANPOINT((0., 0.)); +#1207 = IFCVECTOR(#1208, 1.); +#1208 = IFCDIRECTION((1., 0.)); + +#1501 = IFCLOCALPLACEMENT($, #1502); +#1502 = IFCAXIS2PLACEMENT3D(#1503, $, $); +#1503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#1601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1602)); +#1602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#55)); +#1611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1612)); +#1612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#63)); +#1621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1622)); +#1622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#71)); +#1631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1632)); +#1632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#1201)); + +#2001 = IFCALIGNMENTSEGMENT('49fS3hA8n5YOBvYphrBOIP', #1, $, $, $, #2501, #2631, #2002); +#2002 = IFCALIGNMENTVERTICALSEGMENT($, $, 950., 0., 149.7, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); + +#2101 = IFCCURVESEGMENT(.DISCONTINUOUS., #2104, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #2105); +#2102 = IFCCARTESIANPOINT((950., 149.7)); +#2103 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#2104 = IFCAXIS2PLACEMENT2D(#2102, #2103); +#2105 = IFCLINE(#85, #86); +#2106 = IFCCARTESIANPOINT((0., 0.)); +#2107 = IFCVECTOR(#2108, 1.); +#2108 = IFCDIRECTION((1., 0.)); + +#2501 = IFCLOCALPLACEMENT($, #2502); +#2502 = IFCAXIS2PLACEMENT3D(#2503, $, $); +#2503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#2601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2602)); +#2602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#80)); +#2611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2612)); +#2612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#88)); +#2621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2622)); +#2622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#96)); +#2631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2632)); +#2632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#2101)); + +#3000 = IFCRELAGGREGATES('0mRn50inT2pf1XqujacVu9', #1, 'Project Container 2', 'Project to Alignment', #7, (#29)); + +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/als007/fail-sectioned-solid-horizontal-wrong-item.ifc b/test/files/als007/fail-sectioned-solid-horizontal-wrong-item.ifc new file mode 100644 index 00000000..bd5b96c6 --- /dev/null +++ b/test/files/als007/fail-sectioned-solid-horizontal-wrong-item.ifc @@ -0,0 +1,190 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION (('ViewDefinition [Ifc4X3NotAssigned]'), '2;1'); +FILE_NAME ('sectioned-solid-horizontal.ifc', '2021-05-31T10:35:59', (), (), 'redacted', $, $); +FILE_SCHEMA (('IFC4X3_ADD1')); +ENDSEC; + +DATA; +#1 = IFCOWNERHISTORY(#2, #6, $, .NOCHANGE., $, $, $, 1622457359); +#2 = IFCPERSONANDORGANIZATION(#3, #4, $); +#3 = IFCPERSON($, 'redacted', 'redacted', $, $, $, $, $); +#4 = IFCORGANIZATION($, 'redacted', $, $, $); +#5 = IFCORGANIZATION($, 'redacted', $, $, $); +#6 = IFCAPPLICATION(#5, 'redacted', 'redacted', 'redacted'); +#7 = IFCPROJECT('0A_yMRoUvBdBdFGHn1GH7s', #1, 'Test IFC Project', $, $, $, $, (#13), #8); +#8 = IFCUNITASSIGNMENT((#9, #10, #11, #12)); +#9 = IFCSIUNIT(*, .LENGTHUNIT., $, .METRE.); +#10 = IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.); +#11 = IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.); +#12 = IFCSIUNIT(*, .PLANEANGLEUNIT., $, .RADIAN.); +#13 = IFCGEOMETRICREPRESENTATIONCONTEXT($, 'Model', 3, 1.E-4, #14, #16); +#14 = IFCAXIS2PLACEMENT3D(#15, $, $); +#15 = IFCCARTESIANPOINT((0., 0., 0.)); +#16 = IFCDIRECTION((0., 1.)); +#17 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#18 = IFCARBITRARYCLOSEDPROFILEDEF(.AREA., 'Simple Profile', #19); +#19 = IFCINDEXEDPOLYCURVE(#20, (IFCLINEINDEX((1, 2)), IFCLINEINDEX((2, 3)), IFCLINEINDEX((3, 4)), IFCLINEINDEX((4, 1))), $); +#20 = IFCCARTESIANPOINTLIST2D(((-4., 0.), (-5., -1.), (5., -1.), (4., 0.)), $); +#24 = IFCSITE('35wH0d2VDFze34cZziHyWH', #1, 'Default Site', $, $, #25, $, $, .ELEMENT., (0, 0, 0), (0, 0, 0), 0., $, $); +#25 = IFCLOCALPLACEMENT($, #28); +#26 = IFCDIRECTION((0., 0., 1.)); +#27 = IFCDIRECTION((1., 0., 0.)); +#28 = IFCAXIS2PLACEMENT3D(#15, #26, #27); +#29 = IFCALIGNMENT('0qI6nq6055HgCBPMUsw303', #1, 'Test Alignment', $, $, #30, #104, $); +#30 = IFCLOCALPLACEMENT(#25, #33); +#31 = IFCDIRECTION((0., 0., 1.)); +#32 = IFCDIRECTION((1., 0., 0.)); +#33 = IFCAXIS2PLACEMENT3D(#15, #31, #32); +#20002 = IFCLOCALPLACEMENT(#30, #33); +#20000 = IFCPRODUCTDEFINITIONSHAPE($, $, (#20001)); +#20001 = IFCSHAPEREPRESENTATION(#1001, 'Axis', 'Curve2D', (#54)); +#34 = IFCALIGNMENTHORIZONTAL('2a51YNKc9CIA9mX6PHta0R', #1, $, $, $, #20002, #20000); +#35 = IFCALIGNMENTSEGMENT('2VLcO34uj1ThLg3tnDQSDu', #1, $, $, $, #1501, #1601, #36); +#36 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #37, 0., 0., 0., 400., $, .LINE.); +#37 = IFCCARTESIANPOINT((0., 0.)); +#38 = IFCALIGNMENTSEGMENT('23in7RdgnF5etPmWAUg6Un', #1, $, $, $, #1501, #1611, #39); +#39 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #40, 0., 0., -500.000000000002, 150., $, .CLOTHOID.); +#40 = IFCCARTESIANPOINT((400., 0.)); +#41 = IFCALIGNMENTSEGMENT('2f96e3LmrECxEoe22s5Xpd', #1, $, $, $, #1501, #1621, #42); +#42 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #43, 6.13318530717958, -500.000000000002, -500.000000000002, 400., $, .CIRCULARARC.); +#43 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#44 = IFCRELNESTS('3A9jueO1j2z8C76N1IFh7f', #1, 'Linear Element Nesting', $, #34, (#35, #38, #41, #1101)); +#20003 = IFCLOCALPLACEMENT(#30, #33); +#20010 = IFCPRODUCTDEFINITIONSHAPE($, $, (#20011)); +#20011 = IFCSHAPEREPRESENTATION(#1001, 'Axis', 'Curve3D', (#54)); +#45 = IFCALIGNMENTVERTICAL('3SOdKle3DEtuUG6EbrmQpy', #1, $, $, $, #20003, #20010); +#46 = IFCALIGNMENTSEGMENT('16nyAX_5956AZO3WakpmwA', #1, $, $, $, #2501, #2601, #47); +#47 = IFCALIGNMENTVERTICALSEGMENT($, $, 0., 449.999993741124, 150., -9.99999999995544E-4, -9.99999999995544E-4, $, .CONSTANTGRADIENT.); +#48 = IFCALIGNMENTSEGMENT('3Zuiuqd_1EPuTb4o9SuLse', #1, $, $, $, #2501, #2611, #49); +#49 = IFCALIGNMENTVERTICALSEGMENT($, $, 449.999993741124, 100.000006258876, 149.550000006261, -9.99999999995544E-4, 4.44444444449813E-4, 69230.7996321627, .CIRCULARARC.); +#50 = IFCALIGNMENTSEGMENT('1ZSIbG7kLDTxDPZKyT21HX', #1, $, $, $, #2501, #2621, #51); +#51 = IFCALIGNMENTVERTICALSEGMENT($, $, 550., 400., 149.522222225005, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); +#52 = IFCRELNESTS('0f0eGFsknBWxOW9inF_FLN', #1, 'Linear Element Nesting', $, #45, (#46, #48, #50, #2001)); +#53 = IFCRELNESTS('0Ejb6tfov7UebksdwCEIZR', #1, 'Alignment Nesting', $, #29, (#34, #45)); +#54 = IFCCOMPOSITECURVE((#55, #63, #71, #1201), .U.); +#55 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #58, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.), #59); +#56 = IFCCARTESIANPOINT((0., 0.)); +#57 = IFCDIRECTION((1., 0.)); +#58 = IFCAXIS2PLACEMENT2D(#56, #57); +#59 = IFCLINE(#60, #61); +#60 = IFCCARTESIANPOINT((0., 0.)); +#61 = IFCVECTOR(#62, 1.); +#62 = IFCDIRECTION((1., 0.)); +#63 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #66, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(150.), #67); +#64 = IFCCARTESIANPOINT((400., 0.)); +#65 = IFCDIRECTION((1., 0.)); +#66 = IFCAXIS2PLACEMENT2D(#64, #65); +#67 = IFCCLOTHOID(#70, -273.861278752584); +#68 = IFCCARTESIANPOINT((0., 0.)); +#69 = IFCDIRECTION((1., 0.)); +#70 = IFCAXIS2PLACEMENT2D(#68, #69); +#71 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #74, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(-400.), #75); +#72 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#73 = IFCDIRECTION((9.88771077936042E-1, -1.49438132473604E-1)); +#74 = IFCAXIS2PLACEMENT2D(#72, #73); +#75 = IFCCIRCLE(#78, 500.000000000002); +#76 = IFCCARTESIANPOINT((0., 0.)); +#77 = IFCDIRECTION((1., 0.)); +#78 = IFCAXIS2PLACEMENT2D(#76, #77); +#79 = IFCGRADIENTCURVE((#80, #88, #96, #2101), .U., #54, $); +#80 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #83, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(450.000218741065), #84); +#81 = IFCCARTESIANPOINT((0., 150.)); +#82 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#83 = IFCAXIS2PLACEMENT2D(#81, #82); +#84 = IFCLINE(#85, #86); +#85 = IFCCARTESIANPOINT((0., 0.)); +#86 = IFCVECTOR(#87, 1.); +#87 = IFCDIRECTION((1., 0.)); +#88 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #91, IFCLENGTHMEASURE(4.71138898071803), IFCLENGTHMEASURE(100.00001881), #92); +#89 = IFCCARTESIANPOINT((449.999993741124, 149.550000006261)); +#90 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#91 = IFCAXIS2PLACEMENT2D(#89, #90); +#92 = IFCCIRCLE(#95, 69230.7996321627); +#93 = IFCCARTESIANPOINT((0., 0.)); +#94 = IFCDIRECTION((1., 0.)); +#95 = IFCAXIS2PLACEMENT2D(#93, #94); +#96 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #99, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.000039506171), #100); +#97 = IFCCARTESIANPOINT((550., 149.522222225005)); +#98 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#99 = IFCAXIS2PLACEMENT2D(#97, #98); +#100 = IFCLINE(#101, #102); +#101 = IFCCARTESIANPOINT((0., 0.)); +#102 = IFCVECTOR(#103, 1.); +#103 = IFCDIRECTION((1., 0.)); +/* tfk: remove the footprint representation for now in #1002 */ +#104 = IFCPRODUCTDEFINITIONSHAPE($, $, (#106)); +#105 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#106 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Curve3D', (#79)); +#107 = IFCBUILTELEMENT('3k7$iV7T92$R$xNE9oe5R8', #1, 'SimpleProfile', $, $, #108, #115, $); +#108 = IFCLOCALPLACEMENT(#25, #114); +#109 = IFCDIRECTION((0., 0., 1.)); +#110 = IFCDIRECTION((1., 0., 0.)); +#114 = IFCAXIS2PLACEMENT3D(#15, #109, #110); +#115 = IFCPRODUCTDEFINITIONSHAPE($, $, (#127)); +#116 = IFCSECTIONEDSOLIDHORIZONTAL(#79, (#18, #18), (#117, #119)); +#117 = IFCAXIS2PLACEMENTLINEAR(#118, $, $); +#118 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(300.), $, $, $, #79); +#119 = IFCAXIS2PLACEMENTLINEAR(#120, $, $); +#120 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(600.), $, $, $, #79); +#127 = IFCSHAPEREPRESENTATION(#17, 'Body', 'AdvancedSweptSolid', (#116)); +#128 = IFCRELCONTAINEDINSPATIALSTRUCTURE('0de2EMoG5C3AvNHWz3ILSb', #1, 'Container', 'Container to Contained', (#29, #107), #24); +#129 = IFCRELAGGREGATES('0PN7lKNInB_OsofZN8N0Nn', #1, 'Project Container', 'Project to Spatial Element', #7, (#24)); + +#1001 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('FootPrint', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); + +#1101 = IFCALIGNMENTSEGMENT('1lqBKv7Xz1Hx2tmPCGtaIa', #1, $, $, $, #1501, #1631, #1102); +#1102 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #1103, -0.95, 0., 0., 0., $, .LINE.); +#1103 = IFCCARTESIANPOINT((881.65153753789, -211.03194929054)); + +#1201 = IFCCURVESEGMENT(.DISCONTINUOUS., #1204, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #1205); +#1202 = IFCCARTESIANPOINT((0881.65153753789, -211.03194929054)); +#1203 = IFCDIRECTION((0.58168308946, -0.81341550478)); +#1204 = IFCAXIS2PLACEMENT2D(#1202, #1203); +#1205 = IFCLINE(#1206, #1207); +#1206 = IFCCARTESIANPOINT((0., 0.)); +#1207 = IFCVECTOR(#1208, 1.); +#1208 = IFCDIRECTION((1., 0.)); + +#1501 = IFCLOCALPLACEMENT($, #1502); +#1502 = IFCAXIS2PLACEMENT3D(#1503, $, $); +#1503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#1601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1602)); +#1602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#55)); +#1611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1612)); +#1612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#63)); +#1621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1622)); +#1622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#71)); +#1631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1632)); +#1632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#1201)); + +#2001 = IFCALIGNMENTSEGMENT('49fS3hA8n5YOBvYphrBOIP', #1, $, $, $, #2501, #2631, #2002); +#2002 = IFCALIGNMENTVERTICALSEGMENT($, $, 950., 0., 149.7, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); + +#2101 = IFCCURVESEGMENT(.DISCONTINUOUS., #2104, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #2105); +#2102 = IFCCARTESIANPOINT((950., 149.7)); +#2103 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#2104 = IFCAXIS2PLACEMENT2D(#2102, #2103); +#2105 = IFCLINE(#85, #86); +#2106 = IFCCARTESIANPOINT((0., 0.)); +#2107 = IFCVECTOR(#2108, 1.); +#2108 = IFCDIRECTION((1., 0.)); + +#2501 = IFCLOCALPLACEMENT($, #2502); +#2502 = IFCAXIS2PLACEMENT3D(#2503, $, $); +#2503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#2601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2602)); +#2602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#80)); +#2611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2612)); +#2612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#88)); +#2621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2622)); +#2622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#96)); +#2631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2632)); +#2632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#2101)); + +#3000 = IFCRELAGGREGATES('0mRn50inT2pf1XqujacVu9', #1, 'Project Container 2', 'Project to Alignment', #7, (#29)); + +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/als007/fail-sectioned-solid-horizontal-wrong-type.ifc b/test/files/als007/fail-sectioned-solid-horizontal-wrong-type.ifc new file mode 100644 index 00000000..f8f90002 --- /dev/null +++ b/test/files/als007/fail-sectioned-solid-horizontal-wrong-type.ifc @@ -0,0 +1,190 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION (('ViewDefinition [Ifc4X3NotAssigned]'), '2;1'); +FILE_NAME ('sectioned-solid-horizontal.ifc', '2021-05-31T10:35:59', (), (), 'redacted', $, $); +FILE_SCHEMA (('IFC4X3_ADD1')); +ENDSEC; + +DATA; +#1 = IFCOWNERHISTORY(#2, #6, $, .NOCHANGE., $, $, $, 1622457359); +#2 = IFCPERSONANDORGANIZATION(#3, #4, $); +#3 = IFCPERSON($, 'redacted', 'redacted', $, $, $, $, $); +#4 = IFCORGANIZATION($, 'redacted', $, $, $); +#5 = IFCORGANIZATION($, 'redacted', $, $, $); +#6 = IFCAPPLICATION(#5, 'redacted', 'redacted', 'redacted'); +#7 = IFCPROJECT('0A_yMRoUvBdBdFGHn1GH7s', #1, 'Test IFC Project', $, $, $, $, (#13), #8); +#8 = IFCUNITASSIGNMENT((#9, #10, #11, #12)); +#9 = IFCSIUNIT(*, .LENGTHUNIT., $, .METRE.); +#10 = IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.); +#11 = IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.); +#12 = IFCSIUNIT(*, .PLANEANGLEUNIT., $, .RADIAN.); +#13 = IFCGEOMETRICREPRESENTATIONCONTEXT($, 'Model', 3, 1.E-4, #14, #16); +#14 = IFCAXIS2PLACEMENT3D(#15, $, $); +#15 = IFCCARTESIANPOINT((0., 0., 0.)); +#16 = IFCDIRECTION((0., 1.)); +#17 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#18 = IFCARBITRARYCLOSEDPROFILEDEF(.AREA., 'Simple Profile', #19); +#19 = IFCINDEXEDPOLYCURVE(#20, (IFCLINEINDEX((1, 2)), IFCLINEINDEX((2, 3)), IFCLINEINDEX((3, 4)), IFCLINEINDEX((4, 1))), $); +#20 = IFCCARTESIANPOINTLIST2D(((-4., 0.), (-5., -1.), (5., -1.), (4., 0.)), $); +#24 = IFCSITE('35wH0d2VDFze34cZziHyWH', #1, 'Default Site', $, $, #25, $, $, .ELEMENT., (0, 0, 0), (0, 0, 0), 0., $, $); +#25 = IFCLOCALPLACEMENT($, #28); +#26 = IFCDIRECTION((0., 0., 1.)); +#27 = IFCDIRECTION((1., 0., 0.)); +#28 = IFCAXIS2PLACEMENT3D(#15, #26, #27); +#29 = IFCALIGNMENT('0qI6nq6055HgCBPMUsw303', #1, 'Test Alignment', $, $, #30, #104, $); +#30 = IFCLOCALPLACEMENT(#25, #33); +#31 = IFCDIRECTION((0., 0., 1.)); +#32 = IFCDIRECTION((1., 0., 0.)); +#33 = IFCAXIS2PLACEMENT3D(#15, #31, #32); +#20002 = IFCLOCALPLACEMENT(#30, #33); +#20000 = IFCPRODUCTDEFINITIONSHAPE($, $, (#20001)); +#20001 = IFCSHAPEREPRESENTATION(#1001, 'Axis', 'Curve2D', (#54)); +#34 = IFCALIGNMENTHORIZONTAL('2a51YNKc9CIA9mX6PHta0R', #1, $, $, $, #20002, #20000); +#35 = IFCALIGNMENTSEGMENT('2VLcO34uj1ThLg3tnDQSDu', #1, $, $, $, #1501, #1601, #36); +#36 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #37, 0., 0., 0., 400., $, .LINE.); +#37 = IFCCARTESIANPOINT((0., 0.)); +#38 = IFCALIGNMENTSEGMENT('23in7RdgnF5etPmWAUg6Un', #1, $, $, $, #1501, #1611, #39); +#39 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #40, 0., 0., -500.000000000002, 150., $, .CLOTHOID.); +#40 = IFCCARTESIANPOINT((400., 0.)); +#41 = IFCALIGNMENTSEGMENT('2f96e3LmrECxEoe22s5Xpd', #1, $, $, $, #1501, #1621, #42); +#42 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #43, 6.13318530717958, -500.000000000002, -500.000000000002, 400., $, .CIRCULARARC.); +#43 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#44 = IFCRELNESTS('3A9jueO1j2z8C76N1IFh7f', #1, 'Linear Element Nesting', $, #34, (#35, #38, #41, #1101)); +#20003 = IFCLOCALPLACEMENT(#30, #33); +#20010 = IFCPRODUCTDEFINITIONSHAPE($, $, (#20011)); +#20011 = IFCSHAPEREPRESENTATION(#1001, 'Axis', 'Curve2D', (#79)); +#45 = IFCALIGNMENTVERTICAL('3SOdKle3DEtuUG6EbrmQpy', #1, $, $, $, #20003, #20010); +#46 = IFCALIGNMENTSEGMENT('16nyAX_5956AZO3WakpmwA', #1, $, $, $, #2501, #2601, #47); +#47 = IFCALIGNMENTVERTICALSEGMENT($, $, 0., 449.999993741124, 150., -9.99999999995544E-4, -9.99999999995544E-4, $, .CONSTANTGRADIENT.); +#48 = IFCALIGNMENTSEGMENT('3Zuiuqd_1EPuTb4o9SuLse', #1, $, $, $, #2501, #2611, #49); +#49 = IFCALIGNMENTVERTICALSEGMENT($, $, 449.999993741124, 100.000006258876, 149.550000006261, -9.99999999995544E-4, 4.44444444449813E-4, 69230.7996321627, .CIRCULARARC.); +#50 = IFCALIGNMENTSEGMENT('1ZSIbG7kLDTxDPZKyT21HX', #1, $, $, $, #2501, #2621, #51); +#51 = IFCALIGNMENTVERTICALSEGMENT($, $, 550., 400., 149.522222225005, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); +#52 = IFCRELNESTS('0f0eGFsknBWxOW9inF_FLN', #1, 'Linear Element Nesting', $, #45, (#46, #48, #50, #2001)); +#53 = IFCRELNESTS('0Ejb6tfov7UebksdwCEIZR', #1, 'Alignment Nesting', $, #29, (#34, #45)); +#54 = IFCCOMPOSITECURVE((#55, #63, #71, #1201), .U.); +#55 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #58, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.), #59); +#56 = IFCCARTESIANPOINT((0., 0.)); +#57 = IFCDIRECTION((1., 0.)); +#58 = IFCAXIS2PLACEMENT2D(#56, #57); +#59 = IFCLINE(#60, #61); +#60 = IFCCARTESIANPOINT((0., 0.)); +#61 = IFCVECTOR(#62, 1.); +#62 = IFCDIRECTION((1., 0.)); +#63 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #66, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(150.), #67); +#64 = IFCCARTESIANPOINT((400., 0.)); +#65 = IFCDIRECTION((1., 0.)); +#66 = IFCAXIS2PLACEMENT2D(#64, #65); +#67 = IFCCLOTHOID(#70, -273.861278752584); +#68 = IFCCARTESIANPOINT((0., 0.)); +#69 = IFCDIRECTION((1., 0.)); +#70 = IFCAXIS2PLACEMENT2D(#68, #69); +#71 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #74, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(-400.), #75); +#72 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#73 = IFCDIRECTION((9.88771077936042E-1, -1.49438132473604E-1)); +#74 = IFCAXIS2PLACEMENT2D(#72, #73); +#75 = IFCCIRCLE(#78, 500.000000000002); +#76 = IFCCARTESIANPOINT((0., 0.)); +#77 = IFCDIRECTION((1., 0.)); +#78 = IFCAXIS2PLACEMENT2D(#76, #77); +#79 = IFCGRADIENTCURVE((#80, #88, #96, #2101), .U., #54, $); +#80 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #83, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(450.000218741065), #84); +#81 = IFCCARTESIANPOINT((0., 150.)); +#82 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#83 = IFCAXIS2PLACEMENT2D(#81, #82); +#84 = IFCLINE(#85, #86); +#85 = IFCCARTESIANPOINT((0., 0.)); +#86 = IFCVECTOR(#87, 1.); +#87 = IFCDIRECTION((1., 0.)); +#88 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #91, IFCLENGTHMEASURE(4.71138898071803), IFCLENGTHMEASURE(100.00001881), #92); +#89 = IFCCARTESIANPOINT((449.999993741124, 149.550000006261)); +#90 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#91 = IFCAXIS2PLACEMENT2D(#89, #90); +#92 = IFCCIRCLE(#95, 69230.7996321627); +#93 = IFCCARTESIANPOINT((0., 0.)); +#94 = IFCDIRECTION((1., 0.)); +#95 = IFCAXIS2PLACEMENT2D(#93, #94); +#96 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #99, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.000039506171), #100); +#97 = IFCCARTESIANPOINT((550., 149.522222225005)); +#98 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#99 = IFCAXIS2PLACEMENT2D(#97, #98); +#100 = IFCLINE(#101, #102); +#101 = IFCCARTESIANPOINT((0., 0.)); +#102 = IFCVECTOR(#103, 1.); +#103 = IFCDIRECTION((1., 0.)); +/* tfk: remove the footprint representation for now in #1002 */ +#104 = IFCPRODUCTDEFINITIONSHAPE($, $, (#106)); +#105 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#106 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Curve3D', (#79)); +#107 = IFCBUILTELEMENT('3k7$iV7T92$R$xNE9oe5R8', #1, 'SimpleProfile', $, $, #108, #115, $); +#108 = IFCLOCALPLACEMENT(#25, #114); +#109 = IFCDIRECTION((0., 0., 1.)); +#110 = IFCDIRECTION((1., 0., 0.)); +#114 = IFCAXIS2PLACEMENT3D(#15, #109, #110); +#115 = IFCPRODUCTDEFINITIONSHAPE($, $, (#127)); +#116 = IFCSECTIONEDSOLIDHORIZONTAL(#79, (#18, #18), (#117, #119)); +#117 = IFCAXIS2PLACEMENTLINEAR(#118, $, $); +#118 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(300.), $, $, $, #79); +#119 = IFCAXIS2PLACEMENTLINEAR(#120, $, $); +#120 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(600.), $, $, $, #79); +#127 = IFCSHAPEREPRESENTATION(#17, 'Body', 'AdvancedSweptSolid', (#116)); +#128 = IFCRELCONTAINEDINSPATIALSTRUCTURE('0de2EMoG5C3AvNHWz3ILSb', #1, 'Container', 'Container to Contained', (#29, #107), #24); +#129 = IFCRELAGGREGATES('0PN7lKNInB_OsofZN8N0Nn', #1, 'Project Container', 'Project to Spatial Element', #7, (#24)); + +#1001 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('FootPrint', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); + +#1101 = IFCALIGNMENTSEGMENT('1lqBKv7Xz1Hx2tmPCGtaIa', #1, $, $, $, #1501, #1631, #1102); +#1102 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #1103, -0.95, 0., 0., 0., $, .LINE.); +#1103 = IFCCARTESIANPOINT((881.65153753789, -211.03194929054)); + +#1201 = IFCCURVESEGMENT(.DISCONTINUOUS., #1204, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #1205); +#1202 = IFCCARTESIANPOINT((0881.65153753789, -211.03194929054)); +#1203 = IFCDIRECTION((0.58168308946, -0.81341550478)); +#1204 = IFCAXIS2PLACEMENT2D(#1202, #1203); +#1205 = IFCLINE(#1206, #1207); +#1206 = IFCCARTESIANPOINT((0., 0.)); +#1207 = IFCVECTOR(#1208, 1.); +#1208 = IFCDIRECTION((1., 0.)); + +#1501 = IFCLOCALPLACEMENT($, #1502); +#1502 = IFCAXIS2PLACEMENT3D(#1503, $, $); +#1503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#1601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1602)); +#1602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#55)); +#1611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1612)); +#1612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#63)); +#1621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1622)); +#1622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#71)); +#1631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1632)); +#1632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#1201)); + +#2001 = IFCALIGNMENTSEGMENT('49fS3hA8n5YOBvYphrBOIP', #1, $, $, $, #2501, #2631, #2002); +#2002 = IFCALIGNMENTVERTICALSEGMENT($, $, 950., 0., 149.7, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); + +#2101 = IFCCURVESEGMENT(.DISCONTINUOUS., #2104, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #2105); +#2102 = IFCCARTESIANPOINT((950., 149.7)); +#2103 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#2104 = IFCAXIS2PLACEMENT2D(#2102, #2103); +#2105 = IFCLINE(#85, #86); +#2106 = IFCCARTESIANPOINT((0., 0.)); +#2107 = IFCVECTOR(#2108, 1.); +#2108 = IFCDIRECTION((1., 0.)); + +#2501 = IFCLOCALPLACEMENT($, #2502); +#2502 = IFCAXIS2PLACEMENT3D(#2503, $, $); +#2503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#2601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2602)); +#2602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#80)); +#2611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2612)); +#2612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#88)); +#2621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2622)); +#2622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#96)); +#2631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2632)); +#2632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#2101)); + +#3000 = IFCRELAGGREGATES('0mRn50inT2pf1XqujacVu9', #1, 'Project Container 2', 'Project to Alignment', #7, (#29)); + +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/als007/pass-sectioned-solid-horizontal.ifc b/test/files/als007/pass-sectioned-solid-horizontal.ifc new file mode 100644 index 00000000..339a5c38 --- /dev/null +++ b/test/files/als007/pass-sectioned-solid-horizontal.ifc @@ -0,0 +1,190 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION (('ViewDefinition [Ifc4X3NotAssigned]'), '2;1'); +FILE_NAME ('sectioned-solid-horizontal.ifc', '2021-05-31T10:35:59', (), (), 'redacted', $, $); +FILE_SCHEMA (('IFC4X3_ADD1')); +ENDSEC; + +DATA; +#1 = IFCOWNERHISTORY(#2, #6, $, .NOCHANGE., $, $, $, 1622457359); +#2 = IFCPERSONANDORGANIZATION(#3, #4, $); +#3 = IFCPERSON($, 'redacted', 'redacted', $, $, $, $, $); +#4 = IFCORGANIZATION($, 'redacted', $, $, $); +#5 = IFCORGANIZATION($, 'redacted', $, $, $); +#6 = IFCAPPLICATION(#5, 'redacted', 'redacted', 'redacted'); +#7 = IFCPROJECT('0A_yMRoUvBdBdFGHn1GH7s', #1, 'Test IFC Project', $, $, $, $, (#13), #8); +#8 = IFCUNITASSIGNMENT((#9, #10, #11, #12)); +#9 = IFCSIUNIT(*, .LENGTHUNIT., $, .METRE.); +#10 = IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.); +#11 = IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.); +#12 = IFCSIUNIT(*, .PLANEANGLEUNIT., $, .RADIAN.); +#13 = IFCGEOMETRICREPRESENTATIONCONTEXT($, 'Model', 3, 1.E-4, #14, #16); +#14 = IFCAXIS2PLACEMENT3D(#15, $, $); +#15 = IFCCARTESIANPOINT((0., 0., 0.)); +#16 = IFCDIRECTION((0., 1.)); +#17 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#18 = IFCARBITRARYCLOSEDPROFILEDEF(.AREA., 'Simple Profile', #19); +#19 = IFCINDEXEDPOLYCURVE(#20, (IFCLINEINDEX((1, 2)), IFCLINEINDEX((2, 3)), IFCLINEINDEX((3, 4)), IFCLINEINDEX((4, 1))), $); +#20 = IFCCARTESIANPOINTLIST2D(((-4., 0.), (-5., -1.), (5., -1.), (4., 0.)), $); +#24 = IFCSITE('35wH0d2VDFze34cZziHyWH', #1, 'Default Site', $, $, #25, $, $, .ELEMENT., (0, 0, 0), (0, 0, 0), 0., $, $); +#25 = IFCLOCALPLACEMENT($, #28); +#26 = IFCDIRECTION((0., 0., 1.)); +#27 = IFCDIRECTION((1., 0., 0.)); +#28 = IFCAXIS2PLACEMENT3D(#15, #26, #27); +#29 = IFCALIGNMENT('0qI6nq6055HgCBPMUsw303', #1, 'Test Alignment', $, $, #30, #104, $); +#30 = IFCLOCALPLACEMENT(#25, #33); +#31 = IFCDIRECTION((0., 0., 1.)); +#32 = IFCDIRECTION((1., 0., 0.)); +#33 = IFCAXIS2PLACEMENT3D(#15, #31, #32); +#20002 = IFCLOCALPLACEMENT(#30, #33); +#20000 = IFCPRODUCTDEFINITIONSHAPE($, $, (#20001)); +#20001 = IFCSHAPEREPRESENTATION(#1001, 'Axis', 'Curve2D', (#54)); +#34 = IFCALIGNMENTHORIZONTAL('2a51YNKc9CIA9mX6PHta0R', #1, $, $, $, #20002, #20000); +#35 = IFCALIGNMENTSEGMENT('2VLcO34uj1ThLg3tnDQSDu', #1, $, $, $, #1501, #1601, #36); +#36 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #37, 0., 0., 0., 400., $, .LINE.); +#37 = IFCCARTESIANPOINT((0., 0.)); +#38 = IFCALIGNMENTSEGMENT('23in7RdgnF5etPmWAUg6Un', #1, $, $, $, #1501, #1611, #39); +#39 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #40, 0., 0., -500.000000000002, 150., $, .CLOTHOID.); +#40 = IFCCARTESIANPOINT((400., 0.)); +#41 = IFCALIGNMENTSEGMENT('2f96e3LmrECxEoe22s5Xpd', #1, $, $, $, #1501, #1621, #42); +#42 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #43, 6.13318530717958, -500.000000000002, -500.000000000002, 400., $, .CIRCULARARC.); +#43 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#44 = IFCRELNESTS('3A9jueO1j2z8C76N1IFh7f', #1, 'Linear Element Nesting', $, #34, (#35, #38, #41, #1101)); +#20003 = IFCLOCALPLACEMENT(#30, #33); +#20010 = IFCPRODUCTDEFINITIONSHAPE($, $, (#20011)); +#20011 = IFCSHAPEREPRESENTATION(#1001, 'Axis', 'Curve3D', (#79)); +#45 = IFCALIGNMENTVERTICAL('3SOdKle3DEtuUG6EbrmQpy', #1, $, $, $, #20003, #20010); +#46 = IFCALIGNMENTSEGMENT('16nyAX_5956AZO3WakpmwA', #1, $, $, $, #2501, #2601, #47); +#47 = IFCALIGNMENTVERTICALSEGMENT($, $, 0., 449.999993741124, 150., -9.99999999995544E-4, -9.99999999995544E-4, $, .CONSTANTGRADIENT.); +#48 = IFCALIGNMENTSEGMENT('3Zuiuqd_1EPuTb4o9SuLse', #1, $, $, $, #2501, #2611, #49); +#49 = IFCALIGNMENTVERTICALSEGMENT($, $, 449.999993741124, 100.000006258876, 149.550000006261, -9.99999999995544E-4, 4.44444444449813E-4, 69230.7996321627, .CIRCULARARC.); +#50 = IFCALIGNMENTSEGMENT('1ZSIbG7kLDTxDPZKyT21HX', #1, $, $, $, #2501, #2621, #51); +#51 = IFCALIGNMENTVERTICALSEGMENT($, $, 550., 400., 149.522222225005, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); +#52 = IFCRELNESTS('0f0eGFsknBWxOW9inF_FLN', #1, 'Linear Element Nesting', $, #45, (#46, #48, #50, #2001)); +#53 = IFCRELNESTS('0Ejb6tfov7UebksdwCEIZR', #1, 'Alignment Nesting', $, #29, (#34, #45)); +#54 = IFCCOMPOSITECURVE((#55, #63, #71, #1201), .U.); +#55 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #58, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.), #59); +#56 = IFCCARTESIANPOINT((0., 0.)); +#57 = IFCDIRECTION((1., 0.)); +#58 = IFCAXIS2PLACEMENT2D(#56, #57); +#59 = IFCLINE(#60, #61); +#60 = IFCCARTESIANPOINT((0., 0.)); +#61 = IFCVECTOR(#62, 1.); +#62 = IFCDIRECTION((1., 0.)); +#63 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #66, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(150.), #67); +#64 = IFCCARTESIANPOINT((400., 0.)); +#65 = IFCDIRECTION((1., 0.)); +#66 = IFCAXIS2PLACEMENT2D(#64, #65); +#67 = IFCCLOTHOID(#70, -273.861278752584); +#68 = IFCCARTESIANPOINT((0., 0.)); +#69 = IFCDIRECTION((1., 0.)); +#70 = IFCAXIS2PLACEMENT2D(#68, #69); +#71 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #74, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(-400.), #75); +#72 = IFCCARTESIANPOINT((549.662851380011, -7.48795505445)); +#73 = IFCDIRECTION((9.88771077936042E-1, -1.49438132473604E-1)); +#74 = IFCAXIS2PLACEMENT2D(#72, #73); +#75 = IFCCIRCLE(#78, 500.000000000002); +#76 = IFCCARTESIANPOINT((0., 0.)); +#77 = IFCDIRECTION((1., 0.)); +#78 = IFCAXIS2PLACEMENT2D(#76, #77); +#79 = IFCGRADIENTCURVE((#80, #88, #96, #2101), .U., #54, $); +#80 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #83, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(450.000218741065), #84); +#81 = IFCCARTESIANPOINT((0., 150.)); +#82 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#83 = IFCAXIS2PLACEMENT2D(#81, #82); +#84 = IFCLINE(#85, #86); +#85 = IFCCARTESIANPOINT((0., 0.)); +#86 = IFCVECTOR(#87, 1.); +#87 = IFCDIRECTION((1., 0.)); +#88 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #91, IFCLENGTHMEASURE(4.71138898071803), IFCLENGTHMEASURE(100.00001881), #92); +#89 = IFCCARTESIANPOINT((449.999993741124, 149.550000006261)); +#90 = IFCDIRECTION((9.99999500000375E-1, -9.99999499995919E-4)); +#91 = IFCAXIS2PLACEMENT2D(#89, #90); +#92 = IFCCIRCLE(#95, 69230.7996321627); +#93 = IFCCARTESIANPOINT((0., 0.)); +#94 = IFCDIRECTION((1., 0.)); +#95 = IFCAXIS2PLACEMENT2D(#93, #94); +#96 = IFCCURVESEGMENT(.CONTSAMEGRADIENTSAMECURVATURE., #99, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(400.000039506171), #100); +#97 = IFCCARTESIANPOINT((550., 149.522222225005)); +#98 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#99 = IFCAXIS2PLACEMENT2D(#97, #98); +#100 = IFCLINE(#101, #102); +#101 = IFCCARTESIANPOINT((0., 0.)); +#102 = IFCVECTOR(#103, 1.); +#103 = IFCDIRECTION((1., 0.)); +/* tfk: remove the footprint representation for now in #1002 */ +#104 = IFCPRODUCTDEFINITIONSHAPE($, $, (#106)); +#105 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); +#106 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Curve3D', (#79)); +#107 = IFCBUILTELEMENT('3k7$iV7T92$R$xNE9oe5R8', #1, 'SimpleProfile', $, $, #108, #115, $); +#108 = IFCLOCALPLACEMENT(#25, #114); +#109 = IFCDIRECTION((0., 0., 1.)); +#110 = IFCDIRECTION((1., 0., 0.)); +#114 = IFCAXIS2PLACEMENT3D(#15, #109, #110); +#115 = IFCPRODUCTDEFINITIONSHAPE($, $, (#127)); +#116 = IFCSECTIONEDSOLIDHORIZONTAL(#79, (#18, #18), (#117, #119)); +#117 = IFCAXIS2PLACEMENTLINEAR(#118, $, $); +#118 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(300.), $, $, $, #79); +#119 = IFCAXIS2PLACEMENTLINEAR(#120, $, $); +#120 = IFCPOINTBYDISTANCEEXPRESSION(IFCLENGTHMEASURE(600.), $, $, $, #79); +#127 = IFCSHAPEREPRESENTATION(#17, 'Body', 'AdvancedSweptSolid', (#116)); +#128 = IFCRELCONTAINEDINSPATIALSTRUCTURE('0de2EMoG5C3AvNHWz3ILSb', #1, 'Container', 'Container to Contained', (#29, #107), #24); +#129 = IFCRELAGGREGATES('0PN7lKNInB_OsofZN8N0Nn', #1, 'Project Container', 'Project to Spatial Element', #7, (#24)); + +#1001 = IFCGEOMETRICREPRESENTATIONSUBCONTEXT('FootPrint', 'Model', *, *, *, *, #13, $, .MODEL_VIEW., $); + +#1101 = IFCALIGNMENTSEGMENT('1lqBKv7Xz1Hx2tmPCGtaIa', #1, $, $, $, #1501, #1631, #1102); +#1102 = IFCALIGNMENTHORIZONTALSEGMENT($, $, #1103, -0.95, 0., 0., 0., $, .LINE.); +#1103 = IFCCARTESIANPOINT((881.65153753789, -211.03194929054)); + +#1201 = IFCCURVESEGMENT(.DISCONTINUOUS., #1204, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #1205); +#1202 = IFCCARTESIANPOINT((0881.65153753789, -211.03194929054)); +#1203 = IFCDIRECTION((0.58168308946, -0.81341550478)); +#1204 = IFCAXIS2PLACEMENT2D(#1202, #1203); +#1205 = IFCLINE(#1206, #1207); +#1206 = IFCCARTESIANPOINT((0., 0.)); +#1207 = IFCVECTOR(#1208, 1.); +#1208 = IFCDIRECTION((1., 0.)); + +#1501 = IFCLOCALPLACEMENT($, #1502); +#1502 = IFCAXIS2PLACEMENT3D(#1503, $, $); +#1503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#1601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1602)); +#1602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#55)); +#1611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1612)); +#1612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#63)); +#1621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1622)); +#1622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#71)); +#1631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#1632)); +#1632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#1201)); + +#2001 = IFCALIGNMENTSEGMENT('49fS3hA8n5YOBvYphrBOIP', #1, $, $, $, #2501, #2631, #2002); +#2002 = IFCALIGNMENTVERTICALSEGMENT($, $, 950., 0., 149.7, 4.44444444449813E-4, 4.44444444449813E-4, $, .CONSTANTGRADIENT.); + +#2101 = IFCCURVESEGMENT(.DISCONTINUOUS., #2104, IFCLENGTHMEASURE(0.), IFCLENGTHMEASURE(0.), #2105); +#2102 = IFCCARTESIANPOINT((950., 149.7)); +#2103 = IFCDIRECTION((9.99999901234583E-1, 4.44444400554072E-4)); +#2104 = IFCAXIS2PLACEMENT2D(#2102, #2103); +#2105 = IFCLINE(#85, #86); +#2106 = IFCCARTESIANPOINT((0., 0.)); +#2107 = IFCVECTOR(#2108, 1.); +#2108 = IFCDIRECTION((1., 0.)); + +#2501 = IFCLOCALPLACEMENT($, #2502); +#2502 = IFCAXIS2PLACEMENT3D(#2503, $, $); +#2503 = IFCCARTESIANPOINT((0., 0., 0.)); + +#2601 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2602)); +#2602 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#80)); +#2611 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2612)); +#2612 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#88)); +#2621 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2622)); +#2622 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#96)); +#2631 = IFCPRODUCTDEFINITIONSHAPE($, $, (#2632)); +#2632 = IFCSHAPEREPRESENTATION(#105, 'Axis', 'Segment', (#2101)); + +#3000 = IFCRELAGGREGATES('0mRn50inT2pf1XqujacVu9', #1, 'Project Container 2', 'Project to Alignment', #7, (#29)); + +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/gem004/pass-gem005-scenario2-sweptsolid-as-type.ifc b/test/files/gem004/pass-gem004-scenario2-sweptsolid-as-type.ifc similarity index 100% rename from test/files/gem004/pass-gem005-scenario2-sweptsolid-as-type.ifc rename to test/files/gem004/pass-gem004-scenario2-sweptsolid-as-type.ifc diff --git a/test/files/gem005/README.md b/test/files/gem005/README.md new file mode 100644 index 00000000..b768bf33 --- /dev/null +++ b/test/files/gem005/README.md @@ -0,0 +1,7 @@ +| File name | Expected result | Error | Description | +|:---------------------------------------------|:------------------|:---------------------------------------------------------------------------------------------------------------------------------------|:--------------| +| pass-gem005-aggregate.ifc | pass | Rules passed | | +| fail-gem005-scenario01-no_representation.ifc | fail | ['On instance None the following invalid value for RepresentationIdentifier has been found: Attribute not found'] | | +| pass-gem005-contain.ifc | pass | Rules passed | | +| fail-gem005-scenario01-footprint.ifc | fail | ['On instance #30=IfcShapeRepresentatio...,(#29)) the following invalid value for RepresentationIdentifier has been found: FootPrint'] | | +| pass-gem005-body.ifc | pass | Rules passed | | \ No newline at end of file diff --git a/test/files/gem005/fail-gem005-scenario01-footprint.ifc b/test/files/gem005/fail-gem005-scenario01-footprint.ifc new file mode 100644 index 00000000..1f0c25d8 --- /dev/null +++ b/test/files/gem005/fail-gem005-scenario01-footprint.ifc @@ -0,0 +1,40 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1'); +FILE_NAME('','2023-09-20T19:15:36',(''),(''),'IfcOpenShell-v0.7.0-64d98f129','IfcOpenShell-v0.7.0-64d98f129',''); +FILE_SCHEMA(('IFC2X3')); +ENDSEC; +DATA; +#1=IFCPERSON($,$,'',$,$,$,$,$); +#2=IFCORGANIZATION($,'',$,$,$); +#3=IFCPERSONANDORGANIZATION(#1,#2,$); +#4=IFCAPPLICATION(#2,'v0.7.0-64d98f129','IfcOpenShell-v0.7.0-64d98f129',''); +#5=IFCOWNERHISTORY(#3,#4,$,.ADDED.,$,#3,#4,1695237336); +#6=IFCDIRECTION((1.,0.,0.)); +#7=IFCDIRECTION((0.,0.,1.)); +#8=IFCCARTESIANPOINT((0.,0.,0.)); +#9=IFCAXIS2PLACEMENT3D(#8,#7,#6); +#10=IFCDIRECTION((0.,1.)); +#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#9,#10); +#12=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0); +#13=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#14=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#15=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#16=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#17=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.017453292519943295),#16); +#18=IFCCONVERSIONBASEDUNIT(#12,.PLANEANGLEUNIT.,'DEGREE',#17); +#19=IFCUNITASSIGNMENT((#13,#14,#15,#18)); +#20=IFCPROJECT('2vkoo0S6v3aAjfXGqO53jc',#5,'',$,$,$,$,(#11),#19); +#21=IFCSITE('38g3sdgbL868QK_pdOKelv',#5,$,$,$,$,$,$,.ELEMENT.,$,$,$,$,$); +#22=IFCRELAGGREGATES('0U$MQTphzE4ugY6NDdnrzm',#5,$,$,#20,(#21)); +#23=IFCBUILDING('3SiDl_UrLB6hQTs7oqkR7j',#5,$,$,$,$,#31,$,.ELEMENT.,$,$,$); +#24=IFCRELAGGREGATES('3fbcwCFt19qeVeN56Xb6DJ',#5,$,$,#21,(#23)); +#25=IFCCARTESIANPOINT((0.,0.)); +#26=IFCCARTESIANPOINT((20.,0.)); +#27=IFCCARTESIANPOINT((20.,20.)); +#28=IFCCARTESIANPOINT((0.,20.)); +#29=IFCPOLYLINE((#25,#26,#27,#28,#25)); +#30=IFCSHAPEREPRESENTATION(#11,'FootPrint','Axis2D',(#29)); +#31=IFCPRODUCTDEFINITIONSHAPE($,$,(#30)); +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/gem005/fail-gem005-scenario01-no_representation.ifc b/test/files/gem005/fail-gem005-scenario01-no_representation.ifc new file mode 100644 index 00000000..78cabe40 --- /dev/null +++ b/test/files/gem005/fail-gem005-scenario01-no_representation.ifc @@ -0,0 +1,33 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1'); +FILE_NAME('','2023-09-20T19:11:03',(''),(''),'IfcOpenShell-v0.7.0-64d98f129','IfcOpenShell-v0.7.0-64d98f129',''); +FILE_SCHEMA(('IFC2X3')); +ENDSEC; +DATA; +#1=IFCPERSON($,$,'',$,$,$,$,$); +#2=IFCORGANIZATION($,'',$,$,$); +#3=IFCPERSONANDORGANIZATION(#1,#2,$); +#4=IFCAPPLICATION(#2,'v0.7.0-64d98f129','IfcOpenShell-v0.7.0-64d98f129',''); +#5=IFCOWNERHISTORY(#3,#4,$,.ADDED.,$,#3,#4,1695237063); +#6=IFCDIRECTION((1.,0.,0.)); +#7=IFCDIRECTION((0.,0.,1.)); +#8=IFCCARTESIANPOINT((0.,0.,0.)); +#9=IFCAXIS2PLACEMENT3D(#8,#7,#6); +#10=IFCDIRECTION((0.,1.)); +#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#9,#10); +#12=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0); +#13=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#14=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#15=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#16=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#17=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.017453292519943295),#16); +#18=IFCCONVERSIONBASEDUNIT(#12,.PLANEANGLEUNIT.,'DEGREE',#17); +#19=IFCUNITASSIGNMENT((#13,#14,#15,#18)); +#20=IFCPROJECT('2jYHPIYljDhgGg9eoN2Xor',#5,'',$,$,$,$,(#11),#19); +#21=IFCSITE('2e4KKIKvz2mviaIzPKSL7Y',#5,$,$,$,$,$,$,.ELEMENT.,$,$,$,$,$); +#22=IFCRELAGGREGATES('07yQLhcYH3K8T1kD3qUsJi',#5,$,$,#20,(#21)); +#23=IFCBUILDING('3$1ujW6An5cgazzmmx2rkS',#5,$,$,$,$,$,$,.ELEMENT.,$,$,$); +#24=IFCRELAGGREGATES('1stRKPw6X8_BVdHzxPJRyN',#5,$,$,#21,(#23)); +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/gem005/generate.py b/test/files/gem005/generate.py new file mode 100644 index 00000000..76da3818 --- /dev/null +++ b/test/files/gem005/generate.py @@ -0,0 +1,106 @@ +import ifcopenshell +import ifcopenshell.template + +for validity, case in [ + ("pass", "body"), + ("pass", "contain"), + ("pass", "aggregate"), + ("fail", "no-representation"), + ("fail", "footprint"), +]: + + f = ifcopenshell.template.create(schema_identifier="IFC2X3") + building_parent = proj = f.by_type("IfcProject")[0] + owner = f.by_type("IfcOwnerHistory")[0] + owner.ChangeAction = "ADDED" + + site = f.createIfcSite( + ifcopenshell.guid.new(), + owner, + CompositionType="ELEMENT", + ) + + f.createIfcRelAggregates( + ifcopenshell.guid.new(), owner, RelatingObject=proj, RelatedObjects=[site] + ) + + building = f.createIfcBuilding( + ifcopenshell.guid.new(), + owner, + CompositionType="ELEMENT", + ) + + f.createIfcRelAggregates( + ifcopenshell.guid.new(), owner, RelatingObject=site, RelatedObjects=[building] + ) + + if case == "body": + building.Representation = f.createIfcProductDefinitionShape( + Representations=[ + f.createIfcShapeRepresentation( + f.by_type("IfcGeometricRepresentationContext")[0], + "Body", + "SweptSolid", + [ + f.createIfcExtrudedAreaSolid( + f.createIfcRectangleProfileDef( + "AREA", + None, + f.createIfcAxis2Placement2D( + f.createIfcCartesianPoint((0.0, 0.0)) + ), + 20.0, + 20.0, + ), + f.createIfcAxis2Placement3D( + f.createIfcCartesianPoint((0.0, 0.0, 0.0)) + ), + f.createIfcDirection((0.0, 0.0, 1.0)), + 20.0, + ) + ], + ) + ] + ) + elif case == "footprint": + poly = f.createIfcPolyline( + ( + f.createIfcCartesianPoint((0.0, 0.0)), + f.createIfcCartesianPoint((20.0, 0.0)), + f.createIfcCartesianPoint((20.0, 20.0)), + f.createIfcCartesianPoint((0.0, 20.0)), + ) + ) + poly[0] += (poly[0][0],) + building.Representation = f.createIfcProductDefinitionShape( + Representations=[ + f.createIfcShapeRepresentation( + f.by_type("IfcGeometricRepresentationContext")[0], + "FootPrint", + "Axis2D", + [poly], + ) + ] + ) + elif case == "contain": + beam = f.createIfcBeam(ifcopenshell.guid.new(), owner) + f.createIfcRelContainedInSpatialStructure( + ifcopenshell.guid.new(), owner, None, None, [beam], building + ) + elif case == "aggregate": + storey = f.createIfcBuildingStorey( + ifcopenshell.guid.new(), + owner, + CompositionType="ELEMENT", + ) + f.createIfcRelAggregates( + ifcopenshell.guid.new(), + owner, + RelatingObject=building, + RelatedObjects=[storey], + ) + + failing_scenario = "" + if validity == "fail": + failing_scenario = "scenario01-" + f.write(f"{validity}-gem005-{failing_scenario}{case.replace('-', '_')}.ifc") diff --git a/test/files/gem005/pass-gem005-aggregate.ifc b/test/files/gem005/pass-gem005-aggregate.ifc new file mode 100644 index 00000000..971434b2 --- /dev/null +++ b/test/files/gem005/pass-gem005-aggregate.ifc @@ -0,0 +1,35 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1'); +FILE_NAME('','2023-09-20T19:11:03',(''),(''),'IfcOpenShell-v0.7.0-64d98f129','IfcOpenShell-v0.7.0-64d98f129',''); +FILE_SCHEMA(('IFC2X3')); +ENDSEC; +DATA; +#1=IFCPERSON($,$,'',$,$,$,$,$); +#2=IFCORGANIZATION($,'',$,$,$); +#3=IFCPERSONANDORGANIZATION(#1,#2,$); +#4=IFCAPPLICATION(#2,'v0.7.0-64d98f129','IfcOpenShell-v0.7.0-64d98f129',''); +#5=IFCOWNERHISTORY(#3,#4,$,.ADDED.,$,#3,#4,1695237063); +#6=IFCDIRECTION((1.,0.,0.)); +#7=IFCDIRECTION((0.,0.,1.)); +#8=IFCCARTESIANPOINT((0.,0.,0.)); +#9=IFCAXIS2PLACEMENT3D(#8,#7,#6); +#10=IFCDIRECTION((0.,1.)); +#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#9,#10); +#12=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0); +#13=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#14=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#15=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#16=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#17=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.017453292519943295),#16); +#18=IFCCONVERSIONBASEDUNIT(#12,.PLANEANGLEUNIT.,'DEGREE',#17); +#19=IFCUNITASSIGNMENT((#13,#14,#15,#18)); +#20=IFCPROJECT('1ub2BiUrX47Ph8An4_oNjl',#5,'',$,$,$,$,(#11),#19); +#21=IFCSITE('3FPPxnSv5C08ZVvBGcA9IW',#5,$,$,$,$,$,$,.ELEMENT.,$,$,$,$,$); +#22=IFCRELAGGREGATES('0J93SG7u57x9isBUAs8x0f',#5,$,$,#20,(#21)); +#23=IFCBUILDING('0ytUojdGX73fLDFVxSuc$8',#5,$,$,$,$,$,$,.ELEMENT.,$,$,$); +#24=IFCRELAGGREGATES('3ALm77R2H8VRvXFtrvyiXo',#5,$,$,#21,(#23)); +#25=IFCBUILDINGSTOREY('3ze$6Xr5LEwAkcB6VuPxAr',#5,$,$,$,$,$,$,.ELEMENT.,$); +#26=IFCRELAGGREGATES('2x92EoU5P1nPfcaJYJDGoc',#5,$,$,#23,(#25)); +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/gem005/pass-gem005-body.ifc b/test/files/gem005/pass-gem005-body.ifc new file mode 100644 index 00000000..2aa0b0ba --- /dev/null +++ b/test/files/gem005/pass-gem005-body.ifc @@ -0,0 +1,42 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1'); +FILE_NAME('','2023-09-20T19:11:03',(''),(''),'IfcOpenShell-v0.7.0-64d98f129','IfcOpenShell-v0.7.0-64d98f129',''); +FILE_SCHEMA(('IFC2X3')); +ENDSEC; +DATA; +#1=IFCPERSON($,$,'',$,$,$,$,$); +#2=IFCORGANIZATION($,'',$,$,$); +#3=IFCPERSONANDORGANIZATION(#1,#2,$); +#4=IFCAPPLICATION(#2,'v0.7.0-64d98f129','IfcOpenShell-v0.7.0-64d98f129',''); +#5=IFCOWNERHISTORY(#3,#4,$,.ADDED.,$,#3,#4,1695237063); +#6=IFCDIRECTION((1.,0.,0.)); +#7=IFCDIRECTION((0.,0.,1.)); +#8=IFCCARTESIANPOINT((0.,0.,0.)); +#9=IFCAXIS2PLACEMENT3D(#8,#7,#6); +#10=IFCDIRECTION((0.,1.)); +#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#9,#10); +#12=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0); +#13=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#14=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#15=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#16=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#17=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.017453292519943295),#16); +#18=IFCCONVERSIONBASEDUNIT(#12,.PLANEANGLEUNIT.,'DEGREE',#17); +#19=IFCUNITASSIGNMENT((#13,#14,#15,#18)); +#20=IFCPROJECT('20LlEYg5D1ERA7Bh_53DI_',#5,'',$,$,$,$,(#11),#19); +#21=IFCSITE('0ie$bpOszCUgyIh5OXWXsG',#5,$,$,$,$,$,$,.ELEMENT.,$,$,$,$,$); +#22=IFCRELAGGREGATES('2JPb$q1dPCpBGLb2SYvRVr',#5,$,$,#20,(#21)); +#23=IFCBUILDING('3qEEBpFm16UBTLeLB$yPTY',#5,$,$,$,$,#33,$,.ELEMENT.,$,$,$); +#24=IFCRELAGGREGATES('3N6QCZZqr4xBkcDTiNPpEs',#5,$,$,#21,(#23)); +#25=IFCCARTESIANPOINT((0.,0.)); +#26=IFCAXIS2PLACEMENT2D(#25,$); +#27=IFCRECTANGLEPROFILEDEF(.AREA.,$,#26,20.,20.); +#28=IFCCARTESIANPOINT((0.,0.,0.)); +#29=IFCAXIS2PLACEMENT3D(#28,$,$); +#30=IFCDIRECTION((0.,0.,1.)); +#31=IFCEXTRUDEDAREASOLID(#27,#29,#30,20.); +#32=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#31)); +#33=IFCPRODUCTDEFINITIONSHAPE($,$,(#32)); +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/gem005/pass-gem005-contain.ifc b/test/files/gem005/pass-gem005-contain.ifc new file mode 100644 index 00000000..45f9a879 --- /dev/null +++ b/test/files/gem005/pass-gem005-contain.ifc @@ -0,0 +1,35 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1'); +FILE_NAME('','2023-09-20T19:11:03',(''),(''),'IfcOpenShell-v0.7.0-64d98f129','IfcOpenShell-v0.7.0-64d98f129',''); +FILE_SCHEMA(('IFC2X3')); +ENDSEC; +DATA; +#1=IFCPERSON($,$,'',$,$,$,$,$); +#2=IFCORGANIZATION($,'',$,$,$); +#3=IFCPERSONANDORGANIZATION(#1,#2,$); +#4=IFCAPPLICATION(#2,'v0.7.0-64d98f129','IfcOpenShell-v0.7.0-64d98f129',''); +#5=IFCOWNERHISTORY(#3,#4,$,.ADDED.,$,#3,#4,1695237063); +#6=IFCDIRECTION((1.,0.,0.)); +#7=IFCDIRECTION((0.,0.,1.)); +#8=IFCCARTESIANPOINT((0.,0.,0.)); +#9=IFCAXIS2PLACEMENT3D(#8,#7,#6); +#10=IFCDIRECTION((0.,1.)); +#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#9,#10); +#12=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0); +#13=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#14=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#15=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#16=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#17=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.017453292519943295),#16); +#18=IFCCONVERSIONBASEDUNIT(#12,.PLANEANGLEUNIT.,'DEGREE',#17); +#19=IFCUNITASSIGNMENT((#13,#14,#15,#18)); +#20=IFCPROJECT('2rHCjlXu5BLPQy1801R7qY',#5,'',$,$,$,$,(#11),#19); +#21=IFCSITE('00gZeZJ3T46OIHYIJfI4y6',#5,$,$,$,$,$,$,.ELEMENT.,$,$,$,$,$); +#22=IFCRELAGGREGATES('2dSNVxkyTCVBgpJIAjWCWe',#5,$,$,#20,(#21)); +#23=IFCBUILDING('0lTyQdQJ1EAPMwA2lfog$t',#5,$,$,$,$,$,$,.ELEMENT.,$,$,$); +#24=IFCRELAGGREGATES('1LBvgWU1D38BJBvmmMM4MT',#5,$,$,#21,(#23)); +#25=IFCBEAM('2fTXsg43LD2vdsN8UYcrZY',#5,$,$,$,$,$,$); +#26=IFCRELCONTAINEDINSPATIALSTRUCTURE('3P4Z3tTSn4KQxaiql9FTnk',#5,$,$,(#25),#23); +ENDSEC; +END-ISO-10303-21;