mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-05 23:41:44 +00:00
Add test case
This commit is contained in:
@@ -0,0 +1,145 @@
|
||||
ISO-10303-21;
|
||||
HEADER;
|
||||
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]','RevitIdentifiers [ContentGUID: a0df3484-2dab-42c5-b806-8c10d313bee0, VersionGUID: 658c1394-f3a4-43d1-9b3c-eee44a0cd67a, NumberOfSaves: 2]','CoordinateReference [CoordinateBase: Shared Coordinates]'),'2;1');
|
||||
FILE_NAME('Column_4x3.ifc','2025-03-12T13:53:30+00:00',(''),(''),'ODA SDAI 24.12','Autodesk Revit 25.4.0.32 (ENG) - IFC 25.4.0.32','');
|
||||
FILE_SCHEMA(('IFC4X3_ADD2'));
|
||||
ENDSEC;
|
||||
DATA;
|
||||
#1=IFCORGANIZATION($,'Autodesk Revit 2025 (ENG)',$,$,$);
|
||||
#2=IFCAPPLICATION(#1,'2025','Autodesk Revit 2025 (ENG)','Revit');
|
||||
#3=IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#4=IFCCARTESIANPOINT((0.,0.));
|
||||
#5=IFCDIRECTION((1.,0.,0.));
|
||||
#6=IFCDIRECTION((-1.,0.,0.));
|
||||
#7=IFCDIRECTION((0.,1.,0.));
|
||||
#8=IFCDIRECTION((0.,-1.,0.));
|
||||
#9=IFCDIRECTION((0.,0.,1.));
|
||||
#10=IFCDIRECTION((0.,0.,-1.));
|
||||
#11=IFCDIRECTION((1.,0.));
|
||||
#12=IFCDIRECTION((-1.,0.));
|
||||
#13=IFCDIRECTION((0.,1.));
|
||||
#14=IFCDIRECTION((0.,-1.));
|
||||
#15=IFCPERSON($,'','sfriston',$,$,$,$,$);
|
||||
#16=IFCORGANIZATION($,'','',$,$);
|
||||
#17=IFCPERSONANDORGANIZATION(#15,#16,$);
|
||||
#18=IFCOWNERHISTORY(#17,#2,$,.NOCHANGE.,$,$,$,1741776819);
|
||||
#19=IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
|
||||
#20=IFCAXIS2PLACEMENT3D(#3,$,$);
|
||||
#21=IFCDIRECTION((6.12323399573677E-17,1.));
|
||||
#22=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.01,#20,#21);
|
||||
#23=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#22,$,.GRAPH_VIEW.,$);
|
||||
#24=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#22,$,.MODEL_VIEW.,$);
|
||||
#25=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Box','Model',*,*,*,*,#22,$,.MODEL_VIEW.,$);
|
||||
#26=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('FootPrint','Model',*,*,*,*,#22,$,.MODEL_VIEW.,$);
|
||||
#27=IFCPROJECT('2WtpI4BQj2nRW6Z10ix44G',#18,'Project Number',$,$,'Project Name','Project Status',(#22),#134);
|
||||
#28=IFCCLASSIFICATION('CSI (Construction Specifications Institute)','1998',$,'Uniformat','UniFormat Classification','https://www.csiresources.org/standards/uniformat',$);
|
||||
#29=IFCAXIS2PLACEMENT3D(#3,$,$);
|
||||
#30=IFCLOCALPLACEMENT(#41,#29);
|
||||
#31=IFCPOSTALADDRESS($,$,$,$,('Enter address here'),$,'London','London','','United Kingdom');
|
||||
#32=IFCBUILDING('2WtpI4BQj2nRW6Z10ix44H',#18,'',$,$,#30,$,'',.ELEMENT.,$,$,#31);
|
||||
#33=IFCAXIS2PLACEMENT3D(#3,$,$);
|
||||
#34=IFCLOCALPLACEMENT(#30,#33);
|
||||
#35=IFCBUILDINGSTOREY('3Zu5Bv0LOHrPC10026FoQQ',#18,'Level 0',$,'Level:Circle Head - Project Datum',#34,$,'Level 0',.ELEMENT.,0.);
|
||||
#36=IFCCARTESIANPOINT((0.,0.,4000.));
|
||||
#37=IFCAXIS2PLACEMENT3D(#36,$,$);
|
||||
#38=IFCLOCALPLACEMENT(#30,#37);
|
||||
#39=IFCBUILDINGSTOREY('15Z0v90RiHrPC20026FoKR',#18,'Level 1',$,'Level:Circle Head - Project Datum',#38,$,'Level 1',.ELEMENT.,4000.);
|
||||
#40=IFCAXIS2PLACEMENT3D(#3,$,$);
|
||||
#41=IFCLOCALPLACEMENT($,#40);
|
||||
#42=IFCSITE('2WtpI4BQj2nRW6Z10ix44I',#18,'Default',$,$,#41,$,$,.ELEMENT.,(51,30,23,112487),(0,-7,-37,-956022),0.,$,$);
|
||||
#43=IFCPROPERTYSINGLEVALUE('Reference',$,IFCIDENTIFIER('Project Information'),$);
|
||||
#44=IFCPROPERTYSET('2eqIbmOAscNen5$6huR8Xq',#18,'Pset_SiteCommon',$,(#43));
|
||||
#45=IFCPROPERTYSINGLEVALUE('IsExternal',$,IFCBOOLEAN(.F.),$);
|
||||
#46=IFCPROPERTYSET('23aMNsN69_fPNNwy7k03QC',#18,'Pset_SpaceCommon',$,(#43,#45));
|
||||
#47=IFCRELDEFINESBYPROPERTIES('3Y58BrwSEMG4WuDkCGbgWd',#18,$,$,(#42),#44);
|
||||
#48=IFCRELDEFINESBYPROPERTIES('0HzXjYMsQZ24nGDtNrqPeG',#18,$,$,(#42),#46);
|
||||
#51=IFCAXIS2PLACEMENT3D(#3,$,$);
|
||||
#53=IFCCARTESIANPOINT((0.,0.));
|
||||
#54=IFCAXIS2PLACEMENT2D(#53,#11);
|
||||
#55=IFCISHAPEPROFILEDEF(.AREA.,'UC305x305x97',#54,305.3,307.9,9.90000000000002,15.4,15.2,$,$);
|
||||
#56=IFCCARTESIANPOINT((-0.,0.,-2500.));
|
||||
#57=IFCAXIS2PLACEMENT3D(#56,#9,#6);
|
||||
#58=IFCEXTRUDEDAREASOLID(#55,#57,#9,2500.);
|
||||
#59=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
|
||||
#60=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0);
|
||||
#61=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.0174532925199433),#59);
|
||||
#62=IFCCONVERSIONBASEDUNIT(#60,.PLANEANGLEUNIT.,'DEGREE',#61);
|
||||
#63=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
|
||||
#64=IFCCOLOURRGB($,0.968627450980392,0.968627450980392,0.968627450980392);
|
||||
#65=IFCSURFACESTYLERENDERING(#64,0.,$,$,$,$,IFCNORMALISEDRATIOMEASURE(0.5),IFCSPECULAREXPONENT(128.),.NOTDEFINED.);
|
||||
#66=IFCSURFACESTYLE('Metal - Steel 43-275',.BOTH.,(#65));
|
||||
#67=IFCSTYLEDITEM(#58,(#66),$);
|
||||
#68=IFCSHAPEREPRESENTATION(#24,'Body','SweptSolid',(#58));
|
||||
#69=IFCAXIS2PLACEMENT3D(#3,$,$);
|
||||
#70=IFCREPRESENTATIONMAP(#69,#68);
|
||||
#71=IFCCOLUMNTYPE('1xkS0AgRTExwh4MNwOgZlD',#18,'UC-Universal Columns-Column:UC305x305x97',$,$,(#104),(#70),'12190',$,.COLUMN.);
|
||||
#72=IFCMATERIAL('Metal - Steel 43-275',$,'Metal');
|
||||
#73=IFCCOLOURRGB($,0.,0.,0.);
|
||||
#74=IFCDRAUGHTINGPREDEFINEDCURVEFONT('continuous');
|
||||
#75=IFCCURVESTYLE($,#74,$,#73,$);
|
||||
#76=IFCFILLAREASTYLEHATCHING(#75,IFCPOSITIVELENGTHMEASURE(355.6),$,#4,45.);
|
||||
#77=IFCCURVESTYLE($,#74,$,#73,$);
|
||||
#78=IFCCARTESIANPOINT((0.,381.));
|
||||
#79=IFCFILLAREASTYLEHATCHING(#77,IFCPOSITIVELENGTHMEASURE(355.6),$,#78,45.);
|
||||
#80=IFCFILLAREASTYLE('Steel',(#76,#79),$);
|
||||
#81=IFCSTYLEDITEM($,(#66,#80),$);
|
||||
#82=IFCSTYLEDREPRESENTATION(#22,'Style','Material and Cut Pattern',(#81));
|
||||
#83=IFCMATERIALDEFINITIONREPRESENTATION($,$,(#82),#72);
|
||||
#84=IFCMATERIALPROFILE('UC305x305x97',$,#72,#55,$,$);
|
||||
#85=IFCMATERIALPROFILESET('UC305x305x97',$,(#84),$);
|
||||
#86=IFCCARTESIANTRANSFORMATIONOPERATOR3D($,$,#3,1.,$);
|
||||
#87=IFCMAPPEDITEM(#70,#86);
|
||||
#88=IFCSHAPEREPRESENTATION(#24,'Body','MappedRepresentation',(#87));
|
||||
#89=IFCPRODUCTDEFINITIONSHAPE($,$,(#88));
|
||||
#90=IFCCARTESIANPOINT((-384.581868533682,-142.731561117908,0.));
|
||||
#91=IFCAXIS2PLACEMENT3D(#90,$,$);
|
||||
#92=IFCLOCALPLACEMENT(#34,#91);
|
||||
#93=IFCCOLUMN('1xkS0AgRTExwh4MNwOgZlF',#18,'UC-Universal Columns-Column:UC305x305x97:323405',$,'UC-Universal Columns-Column:UC305x305x97',#92,#89,'323405',.COLUMN.);
|
||||
#94=IFCMATERIALPROFILESETUSAGE(#85,$,$);
|
||||
#95=IFCPROPERTYSINGLEVALUE('Reference',$,IFCIDENTIFIER('UC305x305x97'),$);
|
||||
#96=IFCPROPERTYSINGLEVALUE('LoadBearing',$,IFCBOOLEAN(.T.),$);
|
||||
#97=IFCPROPERTYSET('2Kyssv$kPduAY5HpYkdCrw',#18,'Pset_ColumnCommon',$,(#45,#95,#96));
|
||||
#98=IFCPROPERTYSET('2E7Xcrf_DiKNFkQbRhLvWM',#18,'Pset_EnvironmentalImpactIndicators',$,(#95));
|
||||
#99=IFCPROPERTYSINGLEVALUE('Reference',$,IFCLABEL('UC305x305x97'),$);
|
||||
#100=IFCPROPERTYSET('1sLpijh_wqTpS_F_2QKBAo',#18,'Pset_ReinforcementBarPitchOfColumn',$,(#99));
|
||||
#101=IFCRELDEFINESBYPROPERTIES('3_kOamSQVXh_EoGxsxage3',#18,$,$,(#93),#97);
|
||||
#102=IFCRELDEFINESBYPROPERTIES('15Go3bkBxe46jug3ptPJu$',#18,$,$,(#93),#98);
|
||||
#103=IFCRELDEFINESBYPROPERTIES('1pHUPkPxgww0bggyxncELu',#18,$,$,(#93),#100);
|
||||
#104=IFCPROPERTYSET('0AQD0eY0wih1QOXNiuj$Qc',#18,'Pset_ColumnCommon',$,(#96));
|
||||
#105=IFCPROPERTYSINGLEVALUE('Reference',$,IFCIDENTIFIER('Circle Head - Project Datum'),$);
|
||||
#106=IFCPROPERTYSINGLEVALUE('AboveGround',$,IFCLOGICAL(.F.),$);
|
||||
#107=IFCPROPERTYSET('2QFFSloDKLdASEirlNrsWG',#18,'Pset_BuildingStoreyCommon',$,(#105,#106));
|
||||
#108=IFCPROPERTYSET('2khPkDg4bBoX9QFSHYxSac',#18,'Pset_SpaceCommon',$,(#45,#105));
|
||||
#109=IFCRELDEFINESBYPROPERTIES('24vWbHxUvnwTMhwrnGQFQP',#18,$,$,(#35),#107);
|
||||
#110=IFCRELDEFINESBYPROPERTIES('2H1toi6agC_mYxUZT$TnC9',#18,$,$,(#35),#108);
|
||||
#111=IFCRELCONTAINEDINSPATIALSTRUCTURE('3Zu5Bv0LOHrPC10066FoQQ',#18,$,$,(#93),#35);
|
||||
#112=IFCPROPERTYSET('2y6jqut2mGsxPM5c1zUPr2',#18,'Pset_BuildingStoreyCommon',$,(#105,#106));
|
||||
#113=IFCPROPERTYSET('0gGGxtUVcimZNbYugu0sB_',#18,'Pset_SpaceCommon',$,(#45,#105));
|
||||
#114=IFCRELDEFINESBYPROPERTIES('03h9WtlPXy$ENv9AiS5UZC',#18,$,$,(#39),#112);
|
||||
#115=IFCRELDEFINESBYPROPERTIES('2TN3LdVu1OLnLXbjiOXGUP',#18,$,$,(#39),#113);
|
||||
#116=IFCRELAGGREGATES('2PcN$ItYEMyBNCqPOl6HsC',#18,$,$,#27,(#42));
|
||||
#117=IFCRELAGGREGATES('25zzFe0MOSV8bFW$lLhYMm',#18,$,$,#42,(#32));
|
||||
#118=IFCRELAGGREGATES('2$1LAsj$T3CPRLiPj39tWH',#18,$,$,#32,(#35,#39));
|
||||
#119=IFCPROPERTYSINGLEVALUE('NumberOfStoreys',$,IFCCOUNTMEASURE(1),$);
|
||||
#120=IFCPROPERTYSINGLEVALUE('IsLandmarked',$,IFCLOGICAL(.F.),$);
|
||||
#121=IFCPROPERTYSET('3U5dlTKgNpdXvGG_h1UB1e',#18,'Pset_BuildingCommon',$,(#43,#119,#120));
|
||||
#122=IFCPROPERTYSET('0qtiToowyEn_jqyPw36bkp',#18,'Pset_BuildingElementProxyCommon',$,(#43,#45));
|
||||
#123=IFCPROPERTYSET('2Xe4e_z6nyyQBfJ9yOJXYv',#18,'Pset_BuildingStoreyCommon',$,(#43,#106));
|
||||
#124=IFCPROPERTYSET('07mSmCWmizAULxEjtjvEjg',#18,'Pset_BuildingSystemCommon',$,(#43));
|
||||
#125=IFCPROPERTYSET('1GCWRxA7BU8FaVCiUcq6nY',#18,'Pset_SpaceCommon',$,(#43,#45));
|
||||
#126=IFCRELDEFINESBYPROPERTIES('3xYjKs1Tlm5uUJZprkLSk8',#18,$,$,(#32),#121);
|
||||
#127=IFCRELDEFINESBYPROPERTIES('1Wd03xjOnSPTtTqMwLi2Lg',#18,$,$,(#32),#122);
|
||||
#128=IFCRELDEFINESBYPROPERTIES('3j$dTd3Sjcf3$gHpCvuLB7',#18,$,$,(#32),#123);
|
||||
#129=IFCRELDEFINESBYPROPERTIES('09MeCIXvuVClu2P8lIqAgG',#18,$,$,(#32),#124);
|
||||
#130=IFCRELDEFINESBYPROPERTIES('2HoHooQ7$oNZlOP_3ex_aK',#18,$,$,(#32),#125);
|
||||
#131=IFCRELASSOCIATESMATERIAL('2n2HQdKqzYK7QnaOEEelx_',#18,$,$,(#71),#85);
|
||||
#132=IFCRELDEFINESBYTYPE('11G_CSisKD8eybmW1Vx0bN',#18,$,$,(#93),#71);
|
||||
#133=IFCPRESENTATIONLAYERASSIGNMENT('S-280-M_COLUMN',$,(#68,#88),$);
|
||||
#134=IFCUNITASSIGNMENT((#19,#62,#63));
|
||||
#135=IFCPROPERTYSINGLEVALUE('Label',$,IFCLABEL('Pset 1'),$);
|
||||
#136=IFCPROPERTYSET('2n2HQdKqzYK7QnaOEEelxy',$,'PSet_1',$,(#135));
|
||||
#137=IFCPROPERTYSINGLEVALUE('Label',$,IFCLABEL('Pset 2'),$);
|
||||
#138=IFCPROPERTYSET('2n2HQdKqzYK7QnaOEEelxz',$,'PSet_2',$,(#137));
|
||||
#139=IFCRELDEFINESBYPROPERTIES('2n2HQdKqzYK7QnaOEEelzz',$,$,$,(#93),IFCPROPERTYSETDEFINITIONSET((#136,#138)));
|
||||
ENDSEC;
|
||||
END-ISO-10303-21;
|
||||
@@ -0,0 +1,63 @@
|
||||
# IfcOpenShell - IFC toolkit and geometry engine
|
||||
# Copyright (C) 2021 Thomas Krijnen <thomas@aecgeeks.com>
|
||||
#
|
||||
# This file is part of IfcOpenShell.
|
||||
#
|
||||
# IfcOpenShell is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# IfcOpenShell is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import gc
|
||||
import os
|
||||
import struct
|
||||
import pytest
|
||||
import ifcopenshell
|
||||
import tempfile
|
||||
|
||||
fn = os.path.join(os.path.dirname(__file__), "fixtures/ColumnPSetsOfSets.ifc")
|
||||
|
||||
|
||||
def test_stream():
|
||||
assert next(filter(lambda d: d.get("id") == 139, ifcopenshell.stream2(fn)))["RelatingPropertyDefinition"] == {
|
||||
"type": "IfcPropertySetDefinitionSet",
|
||||
"value": ({"ref": 136}, {"ref": 138}),
|
||||
}
|
||||
|
||||
|
||||
def test_file():
|
||||
f = ifcopenshell.open(fn)
|
||||
assert f[139].RelatingPropertyDefinition.is_a("IfcPropertySetDefinitionSet")
|
||||
assert {x.id() for x in f[139].RelatingPropertyDefinition[0]} == {136, 138}
|
||||
|
||||
|
||||
def test_rocks():
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
rfn = os.path.join(d, os.path.basename(fn))
|
||||
ifcopenshell.convert_path_to_rocksdb(fn, rfn)
|
||||
|
||||
assert os.path.exists(rfn)
|
||||
|
||||
f = ifcopenshell.open(rfn)
|
||||
assert f[139].RelatingPropertyDefinition.is_a("IfcPropertySetDefinitionSet")
|
||||
assert {x.id() for x in f[139].RelatingPropertyDefinition[0]} == {136, 138}
|
||||
|
||||
b = f.wrapped_data.key_value_store_query("i|139|5")[2:]
|
||||
iden = struct.unpack("Q", b)[0]
|
||||
b = f.wrapped_data.key_value_store_query(f"t|{iden}|0")[1:]
|
||||
assert set(struct.unpack("Q", b[i : i + 8])[0] for i in range(1, len(b), 9)) == {136, 138}
|
||||
|
||||
del f
|
||||
gc.collect()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
pytest.main(["-sx", __file__])
|
||||
Reference in New Issue
Block a user