Minor regression fix

This commit is contained in:
Dion Moult
2022-09-19 13:33:40 +10:00
parent 5c5bb03652
commit 57e8e47061
6 changed files with 298 additions and 4 deletions
+25
View File
@@ -0,0 +1,25 @@
# BlenderBIM Add-on - OpenBIM Blender Add-on
# Copyright (C) 2022 Dion Moult <dion@thinkmoult.com>
#
# This file is part of BlenderBIM Add-on.
#
# BlenderBIM Add-on is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BlenderBIM Add-on 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with BlenderBIM Add-on. If not, see <http://www.gnu.org/licenses/>.
.PHONY: test
test:
pytest -p no:pytest-blender test
.PHONY: qa
qa:
black .
-2
View File
@@ -1,4 +1,3 @@
# IfcPatch - IFC patching utiliy
# Copyright (C) 2020, 2021 Dion Moult <dion@thinkmoult.com>
#
@@ -25,4 +24,3 @@ import ifcopenshell.util.element
import ifcopenshell.util.schema
import ifcpatch.__main__
@@ -1,6 +1,5 @@
# IfcPatch - IFC patching utiliy
# Copyright (C) 2020, 2021 Dion Moult <dion@thinkmoult.com>
# Copyright (C) 2020, 2021, 2022 Dion Moult <dion@thinkmoult.com>
#
# This file is part of IfcPatch.
#
@@ -43,6 +42,7 @@ class Patcher:
for owner_history in self.file.by_type("IfcOwnerHistory"):
self.owner_history = self.new.add(owner_history)
break
self.add_element(self.file.by_type("IfcProject")[0])
selector = ifcopenshell.util.selector.Selector()
for element in selector.parse(self.file, self.query):
self.add_element(element)
View File
+241
View File
@@ -0,0 +1,241 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition[DesignTransferView]'),'2;1');
FILE_NAME('basic.ifc','2021-10-16T11:16:34+11:00',(),(),'IfcOpenShell v0.7.0-6cc7d796','BlenderBIM 0.0.999999','Nobody');
FILE_SCHEMA(('IFC4'));
ENDSEC;
DATA;
#1=IFCPERSON('HSeldon','Seldon','Hari',$,$,$,$,$);
#2=IFCORGANIZATION('APTR','Aperture Science',$,$,$);
#3=IFCACTORROLE(.USERDEFINED.,'CONTRIBUTOR',$);
#4=IFCTELECOMADDRESS(.USERDEFINED.,'The main webpage of the software collection.','WEBPAGE',$,$,$,$,'https://ifcopenshell.org',$);
#5=IFCTELECOMADDRESS(.USERDEFINED.,'The BlenderBIM Add-on webpage of the software collection.','WEBPAGE',$,$,$,$,'https://blenderbim.org',$);
#6=IFCTELECOMADDRESS(.USERDEFINED.,'The source code repository of the software collection.','REPOSITORY',$,$,$,$,'https://github.com/IfcOpenShell/IfcOpenShell.git',$);
#7=IFCORGANIZATION($,'IfcOpenShell','IfcOpenShell is an open source (LGPL) software library that helps users and software developers to work with the IFC file format.',(#3),(#4,#5,#6));
#8=IFCAPPLICATION(#7,'0.0.999999','BlenderBIM Add-on','BlenderBIM');
#9=IFCPERSONANDORGANIZATION(#1,#2,$);
#10=IFCOWNERHISTORY(#9,#8,.READWRITE.,.ADDED.,1631353388,#9,#8,1631353388);
#11=IFCPROJECT('2xwg5dkcT4T8MlEIX1jLjD',#10,'My Project',$,$,$,$,(#20,#27),#15);
#12=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.);
#13=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
#14=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.);
#15=IFCUNITASSIGNMENT((#14,#12,#13));
#16=IFCCARTESIANPOINT((0.,0.,0.));
#17=IFCDIRECTION((0.,0.,1.));
#18=IFCDIRECTION((1.,0.,0.));
#19=IFCAXIS2PLACEMENT3D(#16,#17,#18);
#20=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#19,$);
#21=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#20,$,.MODEL_VIEW.,$);
#22=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Box','Model',*,*,*,*,#20,$,.MODEL_VIEW.,$);
#23=IFCCARTESIANPOINT((0.,0.,0.));
#24=IFCDIRECTION((0.,0.,1.));
#25=IFCDIRECTION((1.,0.,0.));
#26=IFCAXIS2PLACEMENT3D(#23,#24,#25);
#27=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Plan',2,1.E-05,#26,$);
#28=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Annotation','Plan',*,*,*,*,#27,$,.PLAN_VIEW.,$);
#29=IFCOWNERHISTORY(#9,#8,.READWRITE.,.MODIFIED.,1631353388,#9,#8,1631353388);
#30=IFCSITE('3cz3qtLYbCURHSIUoySdUS',#29,'My Site',$,$,#56,$,$,$,$,$,$,$,$);
#36=IFCOWNERHISTORY(#9,#8,.READWRITE.,.MODIFIED.,1631353388,#9,#8,1631353388);
#37=IFCBUILDING('2dErbdcOP6Nh7ym5xn_$Ec',#36,'My Building',$,$,#63,$,$,$,$,$,$);
#43=IFCOWNERHISTORY(#9,#8,.READWRITE.,.MODIFIED.,1631353388,#9,#8,1631353388);
#44=IFCBUILDINGSTOREY('0MbU9rGEH1LAWUFmJ3gCcg',#43,'Ground Floor',$,$,#70,$,$,$,$);
#50=IFCOWNERHISTORY(#9,#8,.READWRITE.,.ADDED.,1631353388,#9,#8,1631353388);
#51=IFCRELAGGREGATES('1_TFH$83TDGOqH3GdA9HdZ',#50,$,$,#11,(#30));
#52=IFCCARTESIANPOINT((0.,0.,0.));
#53=IFCDIRECTION((0.,0.,1.));
#54=IFCDIRECTION((1.,0.,0.));
#55=IFCAXIS2PLACEMENT3D(#52,#53,#54);
#56=IFCLOCALPLACEMENT($,#55);
#57=IFCOWNERHISTORY(#9,#8,.READWRITE.,.ADDED.,1631353388,#9,#8,1631353388);
#58=IFCRELAGGREGATES('0rW4qoplT3zBMjr14wc1ok',#57,$,$,#30,(#37));
#59=IFCCARTESIANPOINT((0.,0.,0.));
#60=IFCDIRECTION((0.,0.,1.));
#61=IFCDIRECTION((1.,0.,0.));
#62=IFCAXIS2PLACEMENT3D(#59,#60,#61);
#63=IFCLOCALPLACEMENT(#56,#62);
#64=IFCOWNERHISTORY(#9,#8,.READWRITE.,.ADDED.,1631353388,#9,#8,1631353388);
#65=IFCRELAGGREGATES('041C6Y06v8$AmAQhXWgREJ',#64,$,$,#37,(#44,#71));
#66=IFCCARTESIANPOINT((0.,0.,0.));
#67=IFCDIRECTION((0.,0.,1.));
#68=IFCDIRECTION((1.,0.,0.));
#69=IFCAXIS2PLACEMENT3D(#66,#67,#68);
#70=IFCLOCALPLACEMENT(#63,#69);
#71=IFCBUILDINGSTOREY('1Pkxs$2EDD3ApZ07AQn5om',#77,'Level 1',$,$,#152,$,$,$,$);
#72=IFCCARTESIANPOINT((0.,0.,0.));
#73=IFCDIRECTION((0.,0.,1.));
#74=IFCDIRECTION((1.,0.,0.));
#75=IFCAXIS2PLACEMENT3D(#72,#73,#74);
#76=IFCLOCALPLACEMENT(#63,#75);
#77=IFCOWNERHISTORY(#9,#8,.READWRITE.,.MODIFIED.,1631353453,#9,#8,1631353388);
#78=IFCOWNERHISTORY(#9,#8,.READWRITE.,.MODIFIED.,1631353439,#9,#8,1631353439);
#79=IFCSLAB('20Njb8mHv8v9ESSk_1YM2m',#78,'Slab',$,$,#114,#97,$,.BASESLAB.);
#85=IFCINDEXEDPOLYGONALFACE((1,5,7,3));
#86=IFCINDEXEDPOLYGONALFACE((4,3,7,8));
#87=IFCINDEXEDPOLYGONALFACE((8,7,5,6));
#88=IFCINDEXEDPOLYGONALFACE((6,2,4,8));
#89=IFCINDEXEDPOLYGONALFACE((2,1,3,4));
#90=IFCINDEXEDPOLYGONALFACE((6,5,1,2));
#91=IFCCARTESIANPOINTLIST3D(((1.,1.,1.),(1.,1.,-1.),(1.,-1.,1.),(1.,-1.,-1.),(-1.,1.,1.),(-1.,1.,-1.),(-1.,-1.,1.),(-1.,-1.,-1.)));
#92=IFCPOLYGONALFACESET(#91,$,(#85,#86,#87,#88,#89,#90),$);
#93=IFCSHAPEREPRESENTATION(#21,'Body','Tessellation',(#92));
#94=IFCCARTESIANPOINT((-1.,-1.,-1.));
#95=IFCBOUNDINGBOX(#94,2.,2.,2.);
#96=IFCSHAPEREPRESENTATION(#22,'Box','BoundingBox',(#95));
#97=IFCPRODUCTDEFINITIONSHAPE($,$,(#96,#93));
#98=IFCCOLOURRGB($,0.800000011920929,0.800000011920929,0.800000011920929);
#99=IFCCOLOURRGB($,0.800000011920929,0.800000011920929,0.800000011920929);
#100=IFCSURFACESTYLERENDERING(#98,0.,#99,$,$,$,$,$,.NOTDEFINED.);
#101=IFCSURFACESTYLE('SurfaceStyle',.BOTH.,(#100));
#102=IFCSTYLEDITEM(#92,(#101),'SurfaceStyle');
#103=IFCOWNERHISTORY(#9,#8,.READWRITE.,.ADDED.,1631353439,#9,#8,1631353439);
#104=IFCRELCONTAINEDINSPATIALSTRUCTURE('2T4j5EAcn0qQ9vTOZFK9HO',#103,$,$,(#79),#44);
#110=IFCCARTESIANPOINT((0.,0.,0.));
#111=IFCDIRECTION((0.,0.,1.));
#112=IFCDIRECTION((1.,0.,0.));
#113=IFCAXIS2PLACEMENT3D(#110,#111,#112);
#114=IFCLOCALPLACEMENT(#70,#113);
#115=IFCOWNERHISTORY(#9,#8,.READWRITE.,.MODIFIED.,1631353453,#9,#8,1631353443);
#116=IFCWALL('27uW0y7Gr72R8yo2C4vBlV',#115,'Wall',$,$,#157,#134,$,.ELEMENTEDWALL.);
#122=IFCINDEXEDPOLYGONALFACE((1,5,7,3));
#123=IFCINDEXEDPOLYGONALFACE((4,3,7,8));
#124=IFCINDEXEDPOLYGONALFACE((8,7,5,6));
#125=IFCINDEXEDPOLYGONALFACE((6,2,4,8));
#126=IFCINDEXEDPOLYGONALFACE((2,1,3,4));
#127=IFCINDEXEDPOLYGONALFACE((6,5,1,2));
#128=IFCCARTESIANPOINTLIST3D(((1.,1.,1.),(1.,1.,-1.),(1.,-1.,1.),(1.,-1.,-1.),(-1.,1.,1.),(-1.,1.,-1.),(-1.,-1.,1.),(-1.,-1.,-1.)));
#129=IFCPOLYGONALFACESET(#128,$,(#122,#123,#124,#125,#126,#127),$);
#130=IFCSHAPEREPRESENTATION(#21,'Body','Tessellation',(#129));
#131=IFCCARTESIANPOINT((-1.,-1.,-1.));
#132=IFCBOUNDINGBOX(#131,2.,2.,2.);
#133=IFCSHAPEREPRESENTATION(#22,'Box','BoundingBox',(#132));
#134=IFCPRODUCTDEFINITIONSHAPE($,$,(#133,#130));
#135=IFCSTYLEDITEM(#129,(#101),'SurfaceStyle');
#136=IFCOWNERHISTORY(#9,#8,.READWRITE.,.MODIFIED.,1631429228,#9,#8,1631353443);
#137=IFCRELCONTAINEDINSPATIALSTRUCTURE('1CgivZt6z1l8IgKaTkZMcT',#136,$,$,(#116,#159),#71);
#148=IFCCARTESIANPOINT((0.,0.,3.));
#149=IFCDIRECTION((0.,0.,1.));
#150=IFCDIRECTION((1.,0.,0.));
#151=IFCAXIS2PLACEMENT3D(#148,#149,#150);
#152=IFCLOCALPLACEMENT(#63,#151);
#153=IFCCARTESIANPOINT((0.,0.,-3.));
#154=IFCDIRECTION((0.,0.,1.));
#155=IFCDIRECTION((1.,0.,0.));
#156=IFCAXIS2PLACEMENT3D(#153,#154,#155);
#157=IFCLOCALPLACEMENT(#152,#156);
#158=IFCOWNERHISTORY(#9,#8,.READWRITE.,.MODIFIED.,1631429175,#9,#8,1631429175);
#159=IFCELEMENTASSEMBLY('122brjtWrFAPe7NkNdFNlG',#158,'Empty',$,$,#174,$,$,$,.ACCESSORY_ASSEMBLY.);
#170=IFCCARTESIANPOINT((0.,0.,0.));
#171=IFCDIRECTION((0.,0.,1.));
#172=IFCDIRECTION((1.,0.,0.));
#173=IFCAXIS2PLACEMENT3D(#170,#171,#172);
#174=IFCLOCALPLACEMENT(#152,#173);
#175=IFCOWNERHISTORY(#9,#8,.READWRITE.,.MODIFIED.,1631429290,#9,#8,1631429215);
#176=IFCBEAM('2f_ancUNT1$Btb3bI4H7gM',#175,'Beam',$,$,#216,#194,$,.BEAM.);
#182=IFCINDEXEDPOLYGONALFACE((1,2,4,3));
#183=IFCINDEXEDPOLYGONALFACE((3,4,8,7));
#184=IFCINDEXEDPOLYGONALFACE((7,8,6,5));
#185=IFCINDEXEDPOLYGONALFACE((5,6,2,1));
#186=IFCINDEXEDPOLYGONALFACE((3,7,5,1));
#187=IFCINDEXEDPOLYGONALFACE((8,4,2,6));
#188=IFCCARTESIANPOINTLIST3D(((-1.,-1.,-1.),(-1.,-1.,1.),(-1.,1.,-1.),(-1.,1.,1.),(1.,-1.,-1.),(1.,-1.,1.),(1.,1.,-1.),(1.,1.,1.)));
#189=IFCPOLYGONALFACESET(#188,$,(#182,#183,#184,#185,#186,#187),$);
#190=IFCSHAPEREPRESENTATION(#21,'Body','Tessellation',(#189));
#191=IFCCARTESIANPOINT((-1.,-1.,-1.));
#192=IFCBOUNDINGBOX(#191,2.,2.,2.);
#193=IFCSHAPEREPRESENTATION(#22,'Box','BoundingBox',(#192));
#194=IFCPRODUCTDEFINITIONSHAPE($,$,(#193,#190));
#205=IFCOWNERHISTORY(#9,#8,.READWRITE.,.ADDED.,1631429238,#9,#8,1631429238);
#206=IFCRELAGGREGATES('1SGr7ReC13EhuetdWMr2G9',#205,$,$,#159,(#176));
#212=IFCCARTESIANPOINT((0.,0.,-3.));
#213=IFCDIRECTION((0.,0.,1.));
#214=IFCDIRECTION((1.,0.,0.));
#215=IFCAXIS2PLACEMENT3D(#212,#213,#214);
#216=IFCLOCALPLACEMENT(#174,#215);
#223=IFCCARTESIANPOINT((0.,0.,0.));
#224=IFCDIRECTION((0.,0.,1.));
#225=IFCDIRECTION((1.,0.,0.));
#226=IFCAXIS2PLACEMENT3D(#223,#224,#225);
#227=IFCLOCALPLACEMENT(#70,#226);
#228=IFCINDEXEDPOLYGONALFACE((4,6,5,2));
#229=IFCINDEXEDPOLYGONALFACE((7,3,1,8));
#230=IFCINDEXEDPOLYGONALFACE((8,1,2,5));
#231=IFCINDEXEDPOLYGONALFACE((5,6,7,8));
#232=IFCINDEXEDPOLYGONALFACE((3,7,6,4));
#233=IFCINDEXEDPOLYGONALFACE((4,2,1,3));
#234=IFCCARTESIANPOINTLIST3D(((1.,1.,1.),(1.,-1.,1.),(-1.,1.,1.),(-1.,-1.,1.),(1.,-1.,-1.),(-1.,-1.,-1.),(-1.,1.,-1.),(1.,1.,-1.)));
#235=IFCPOLYGONALFACESET(#234,$,(#228,#229,#230,#231,#232,#233),$);
#236=IFCSHAPEREPRESENTATION(#21,'Body','Tessellation',(#235));
#237=IFCCARTESIANPOINT((-1.,-1.,-1.));
#238=IFCBOUNDINGBOX(#237,2.,2.,2.);
#239=IFCSHAPEREPRESENTATION(#22,'Box','BoundingBox',(#238));
#240=IFCPRODUCTDEFINITIONSHAPE($,$,(#239,#236));
#241=IFCSTYLEDITEM(#235,(#101),'SurfaceStyle');
#242=IFCSLABTYPE('3Yf_WvSET99eu_bTvaRiKy',#78,'Slab',$,$,$,(#259,#265),$,$,.BASESLAB.);
#243=IFCINDEXEDPOLYGONALFACE((4,6,5,2));
#244=IFCINDEXEDPOLYGONALFACE((7,3,1,8));
#245=IFCINDEXEDPOLYGONALFACE((8,1,2,5));
#246=IFCINDEXEDPOLYGONALFACE((5,6,7,8));
#247=IFCINDEXEDPOLYGONALFACE((3,7,6,4));
#248=IFCINDEXEDPOLYGONALFACE((4,2,1,3));
#249=IFCCARTESIANPOINTLIST3D(((1.,1.,1.),(1.,-1.,1.),(-1.,1.,1.),(-1.,-1.,1.),(1.,-1.,-1.),(-1.,-1.,-1.),(-1.,1.,-1.),(1.,1.,-1.)));
#250=IFCPOLYGONALFACESET(#249,$,(#243,#244,#245,#246,#247,#248),$);
#251=IFCSHAPEREPRESENTATION(#21,'Body','Tessellation',(#250));
#252=IFCCARTESIANPOINT((-1.,-1.,-1.));
#253=IFCBOUNDINGBOX(#252,2.,2.,2.);
#254=IFCSHAPEREPRESENTATION(#22,'Box','BoundingBox',(#253));
#255=IFCCARTESIANPOINT((0.,0.,0.));
#256=IFCDIRECTION((1.,0.,0.));
#257=IFCDIRECTION((0.,0.,1.));
#258=IFCAXIS2PLACEMENT3D(#255,#257,#256);
#259=IFCREPRESENTATIONMAP(#258,#254);
#260=IFCSTYLEDITEM(#250,(#101),'SurfaceStyle');
#261=IFCCARTESIANPOINT((0.,0.,0.));
#262=IFCDIRECTION((1.,0.,0.));
#263=IFCDIRECTION((0.,0.,1.));
#264=IFCAXIS2PLACEMENT3D(#261,#263,#262);
#265=IFCREPRESENTATIONMAP(#264,#251);
#272=IFCCARTESIANPOINT((0.,0.,-3.));
#273=IFCDIRECTION((0.,0.,1.));
#274=IFCDIRECTION((1.,0.,0.));
#275=IFCAXIS2PLACEMENT3D(#272,#273,#274);
#276=IFCLOCALPLACEMENT(#152,#275);
#277=IFCINDEXEDPOLYGONALFACE((4,6,5,2));
#278=IFCINDEXEDPOLYGONALFACE((7,3,1,8));
#279=IFCINDEXEDPOLYGONALFACE((8,1,2,5));
#280=IFCINDEXEDPOLYGONALFACE((5,6,7,8));
#281=IFCINDEXEDPOLYGONALFACE((3,7,6,4));
#282=IFCINDEXEDPOLYGONALFACE((4,2,1,3));
#283=IFCCARTESIANPOINTLIST3D(((1.,1.,1.),(1.,-1.,1.),(-1.,1.,1.),(-1.,-1.,1.),(1.,-1.,-1.),(-1.,-1.,-1.),(-1.,1.,-1.),(1.,1.,-1.)));
#284=IFCPOLYGONALFACESET(#283,$,(#277,#278,#279,#280,#281,#282),$);
#285=IFCSHAPEREPRESENTATION(#21,'Body','Tessellation',(#284));
#286=IFCCARTESIANPOINT((-1.,-1.,-1.));
#287=IFCBOUNDINGBOX(#286,2.,2.,2.);
#288=IFCSHAPEREPRESENTATION(#22,'Box','BoundingBox',(#287));
#289=IFCPRODUCTDEFINITIONSHAPE($,$,(#288,#285));
#290=IFCSTYLEDITEM(#284,(#101),'SurfaceStyle');
#291=IFCWALLTYPE('3BIuGkv6r8X8juaWvaUCg3',#115,'Wall',$,$,$,(#308,#314),$,$,.ELEMENTEDWALL.);
#292=IFCINDEXEDPOLYGONALFACE((4,6,5,2));
#293=IFCINDEXEDPOLYGONALFACE((7,3,1,8));
#294=IFCINDEXEDPOLYGONALFACE((8,1,2,5));
#295=IFCINDEXEDPOLYGONALFACE((5,6,7,8));
#296=IFCINDEXEDPOLYGONALFACE((3,7,6,4));
#297=IFCINDEXEDPOLYGONALFACE((4,2,1,3));
#298=IFCCARTESIANPOINTLIST3D(((1.,1.,1.),(1.,-1.,1.),(-1.,1.,1.),(-1.,-1.,1.),(1.,-1.,-1.),(-1.,-1.,-1.),(-1.,1.,-1.),(1.,1.,-1.)));
#299=IFCPOLYGONALFACESET(#298,$,(#292,#293,#294,#295,#296,#297),$);
#300=IFCSHAPEREPRESENTATION(#21,'Body','Tessellation',(#299));
#301=IFCCARTESIANPOINT((-1.,-1.,-1.));
#302=IFCBOUNDINGBOX(#301,2.,2.,2.);
#303=IFCSHAPEREPRESENTATION(#22,'Box','BoundingBox',(#302));
#304=IFCCARTESIANPOINT((0.,0.,0.));
#305=IFCDIRECTION((1.,0.,0.));
#306=IFCDIRECTION((0.,0.,1.));
#307=IFCAXIS2PLACEMENT3D(#304,#306,#305);
#308=IFCREPRESENTATIONMAP(#307,#303);
#309=IFCSTYLEDITEM(#299,(#101),'SurfaceStyle');
#310=IFCCARTESIANPOINT((0.,0.,0.));
#311=IFCDIRECTION((1.,0.,0.));
#312=IFCDIRECTION((0.,0.,1.));
#313=IFCAXIS2PLACEMENT3D(#310,#312,#311);
#314=IFCREPRESENTATIONMAP(#313,#300);
ENDSEC;
END-ISO-10303-21;
+30
View File
@@ -0,0 +1,30 @@
# IfcOpenShell - IFC toolkit and geometry engine
# Copyright (C) 2022 Dion Moult <dion@thinkmoult.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 os
import pytest
import ifcpatch
import ifcopenshell
class TestExtractElements:
def test_getting_the_psets_of_a_product_as_a_dictionary(self):
ifc = ifcopenshell.open(os.path.join(os.getcwd(), "test", "files", "basic.ifc"))
output = ifcpatch.execute({"input": ifc, "recipe": "ExtractElements", "arguments": [".IfcWall"]})
assert output.by_type("IfcWall")
assert not output.by_type("IfcSlab")