mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-21 14:23:53 +00:00
Update extrusion-dir cases for undeterminate handling
This commit is contained in:
+16
@@ -0,0 +1,16 @@
|
|||||||
|
ISO-10303-21;
|
||||||
|
HEADER;
|
||||||
|
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
|
||||||
|
FILE_NAME('','2023-02-13T13:31:19',(),(),'IfcOpenShell v0.7.0-07ee62eb9','IfcOpenShell v0.7.0-07ee62eb9','');
|
||||||
|
FILE_SCHEMA(('IFC4'));
|
||||||
|
ENDSEC;
|
||||||
|
DATA;
|
||||||
|
#1=IFCCARTESIANPOINT((0.,0.));
|
||||||
|
#2=IFCAXIS2PLACEMENT2D(#1,$);
|
||||||
|
#3=IFCRECTANGLEPROFILEDEF(.AREA.,$,#2,1.,1.);
|
||||||
|
#4=IFCCARTESIANPOINT((0.,0.,0.));
|
||||||
|
#5=IFCAXIS2PLACEMENT3D(#4,$,$);
|
||||||
|
#6=IFCDIRECTION((0.,0.,0.));
|
||||||
|
#7=IFCEXTRUDEDAREASOLID(#3,#5,#6,1.);
|
||||||
|
ENDSEC;
|
||||||
|
END-ISO-10303-21;
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
ISO-10303-21;
|
ISO-10303-21;
|
||||||
HEADER;
|
HEADER;
|
||||||
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
|
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
|
||||||
FILE_NAME('','2022-12-20T12:05:46',(),(),'IfcOpenShell v0.7.0-fa6bbf2d','IfcOpenShell v0.7.0-fa6bbf2d','');
|
FILE_NAME('','2023-02-13T13:31:19',(),(),'IfcOpenShell v0.7.0-07ee62eb9','IfcOpenShell v0.7.0-07ee62eb9','');
|
||||||
FILE_SCHEMA(('IFC2X3'));
|
FILE_SCHEMA(('IFC2X3'));
|
||||||
ENDSEC;
|
ENDSEC;
|
||||||
DATA;
|
DATA;
|
||||||
|
|||||||
+30
-15
@@ -2,18 +2,33 @@ import ifcopenshell
|
|||||||
|
|
||||||
depth = 1.0
|
depth = 1.0
|
||||||
for (dir_x, dir_z) in ((0., -1.), (0., 0.), (1., 0.), (1., 0.001), (0., 1.)):
|
for (dir_x, dir_z) in ((0., -1.), (0., 0.), (1., 0.), (1., 0.001), (0., 1.)):
|
||||||
f = ifcopenshell.file(schema="IFC2X3")
|
|
||||||
f.createIfcExtrudedAreaSolid(
|
schemas = ['IFC2X3']
|
||||||
f.createIfcRectangleProfileDef(
|
if (dir_x, dir_z) == (0., 0.):
|
||||||
"AREA", None,
|
schemas.append('IFC4')
|
||||||
f.createIfcAxis2Placement2D(
|
|
||||||
f.createIfcCartesianPoint((0., 0.))
|
for schema in schemas:
|
||||||
), 1., 1.
|
f = ifcopenshell.file(schema=schema)
|
||||||
),
|
f.createIfcExtrudedAreaSolid(
|
||||||
f.createIfcAxis2Placement3D(
|
f.createIfcRectangleProfileDef(
|
||||||
f.createIfcCartesianPoint((0., 0., 0.))
|
"AREA", None,
|
||||||
),
|
f.createIfcAxis2Placement2D(
|
||||||
f.createIfcDirection((dir_x, 0., dir_z)),
|
f.createIfcCartesianPoint((0., 0.))
|
||||||
depth
|
), 1., 1.
|
||||||
)
|
),
|
||||||
f.write(f"{'pass' if dir_z != 0. else 'fail'}-extrusion-dir-{dir_x}-{dir_z}-ifc2x3.ifc")
|
f.createIfcAxis2Placement3D(
|
||||||
|
f.createIfcCartesianPoint((0., 0., 0.))
|
||||||
|
),
|
||||||
|
f.createIfcDirection((dir_x, 0., dir_z)),
|
||||||
|
depth
|
||||||
|
)
|
||||||
|
|
||||||
|
# Due to the way IfcDotProduct and IfcNormalise interact, (0 0 0) actually
|
||||||
|
# results into indeterminate. But in IFC4 onwars there is a rule in IfcDirection
|
||||||
|
# for non-zero magnitude
|
||||||
|
|
||||||
|
valid = dir_z != 0.
|
||||||
|
if f.schema == 'IFC2X3' and (dir_x, dir_z) == (0., 0.):
|
||||||
|
valid = True
|
||||||
|
|
||||||
|
f.write(f"{'pass' if valid else 'fail'}-extrusion-dir-{dir_x}-{dir_z}-{f.schema.lower()}.ifc")
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
ISO-10303-21;
|
ISO-10303-21;
|
||||||
HEADER;
|
HEADER;
|
||||||
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
|
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
|
||||||
FILE_NAME('','2022-12-20T12:05:46',(),(),'IfcOpenShell v0.7.0-fa6bbf2d','IfcOpenShell v0.7.0-fa6bbf2d','');
|
FILE_NAME('','2023-02-13T13:31:19',(),(),'IfcOpenShell v0.7.0-07ee62eb9','IfcOpenShell v0.7.0-07ee62eb9','');
|
||||||
FILE_SCHEMA(('IFC2X3'));
|
FILE_SCHEMA(('IFC2X3'));
|
||||||
ENDSEC;
|
ENDSEC;
|
||||||
DATA;
|
DATA;
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
ISO-10303-21;
|
ISO-10303-21;
|
||||||
HEADER;
|
HEADER;
|
||||||
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
|
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
|
||||||
FILE_NAME('','2022-12-20T12:05:46',(),(),'IfcOpenShell v0.7.0-fa6bbf2d','IfcOpenShell v0.7.0-fa6bbf2d','');
|
FILE_NAME('','2023-02-13T13:31:19',(),(),'IfcOpenShell v0.7.0-07ee62eb9','IfcOpenShell v0.7.0-07ee62eb9','');
|
||||||
FILE_SCHEMA(('IFC2X3'));
|
FILE_SCHEMA(('IFC2X3'));
|
||||||
ENDSEC;
|
ENDSEC;
|
||||||
DATA;
|
DATA;
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
ISO-10303-21;
|
ISO-10303-21;
|
||||||
HEADER;
|
HEADER;
|
||||||
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
|
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
|
||||||
FILE_NAME('','2022-12-20T12:05:46',(),(),'IfcOpenShell v0.7.0-fa6bbf2d','IfcOpenShell v0.7.0-fa6bbf2d','');
|
FILE_NAME('','2023-02-13T13:31:19',(),(),'IfcOpenShell v0.7.0-07ee62eb9','IfcOpenShell v0.7.0-07ee62eb9','');
|
||||||
FILE_SCHEMA(('IFC2X3'));
|
FILE_SCHEMA(('IFC2X3'));
|
||||||
ENDSEC;
|
ENDSEC;
|
||||||
DATA;
|
DATA;
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
ISO-10303-21;
|
ISO-10303-21;
|
||||||
HEADER;
|
HEADER;
|
||||||
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
|
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
|
||||||
FILE_NAME('','2022-12-20T12:05:46',(),(),'IfcOpenShell v0.7.0-fa6bbf2d','IfcOpenShell v0.7.0-fa6bbf2d','');
|
FILE_NAME('','2023-02-13T13:31:19',(),(),'IfcOpenShell v0.7.0-07ee62eb9','IfcOpenShell v0.7.0-07ee62eb9','');
|
||||||
FILE_SCHEMA(('IFC2X3'));
|
FILE_SCHEMA(('IFC2X3'));
|
||||||
ENDSEC;
|
ENDSEC;
|
||||||
DATA;
|
DATA;
|
||||||
|
|||||||
Reference in New Issue
Block a user