diff --git a/SharedFileVersionInfo.cs b/SharedFileVersionInfo.cs index 2fc0c6223..a55cf0514 100644 Binary files a/SharedFileVersionInfo.cs and b/SharedFileVersionInfo.cs differ diff --git a/Xbim.Common/XbimExtensions/Interfaces/IModel.cs b/Xbim.Common/XbimExtensions/Interfaces/IModel.cs index 5b88204ee..b2d0dbe6e 100644 --- a/Xbim.Common/XbimExtensions/Interfaces/IModel.cs +++ b/Xbim.Common/XbimExtensions/Interfaces/IModel.cs @@ -98,5 +98,7 @@ public interface IModel /// object Tag { get; set; } IGeometryManager GeometryManager { get; set; } + + bool AutoAddOwnerHistory { get; } } } \ No newline at end of file diff --git a/Xbim.Essentials.Tests/BasicModelTests.cs b/Xbim.Essentials.Tests/BasicModelTests.cs new file mode 100644 index 000000000..edb34a5e8 --- /dev/null +++ b/Xbim.Essentials.Tests/BasicModelTests.cs @@ -0,0 +1,88 @@ +using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Xbim.IO; +using System.IO; +using Xbim.XbimExtensions.Interfaces; + +namespace Xbim.Essentials.Tests +{ + [TestClass] + [DeploymentItem(@"TestSourceFiles\")] + public class BasicModelTests + { + [TestMethod] + public void OpenIfcFile() + { + using (var model = new XbimModel()) + { + model.CreateFrom("4walls1floorSite.ifc"); + model.Close(); + } + + } + + [TestMethod] + public void OpenIfcZipFile() + { + using (var model = new XbimModel()) + { + model.CreateFrom("4walls1floorSite.ifczip"); + model.Close(); + } + + } + [TestMethod] + public void OpenIfcXmlFile() + { + using (var model = new XbimModel()) + { + model.CreateFrom("4walls1floorSite.ifcxml"); + model.Close(); + } + + } + [TestMethod] + public void OpenIfcFileFromStream() + { + using (var fileStream = new FileStream("4walls1floorSite.ifc", FileMode.Open,FileAccess.Read)) + { + using (var model = new XbimModel()) + { + model.CreateFrom(fileStream, XbimStorageType.IFC, "4walls1floorSite.xbim",null,true); + model.Close(); + } + fileStream.Close(); + } + + } + + [TestMethod] + public void OpenIfcZipFileFromStream() + { + using (var fileStream = new FileStream("4walls1floorSite.ifczip", FileMode.Open, FileAccess.Read)) + { + using (var model = new XbimModel()) + { + model.CreateFrom(fileStream, XbimStorageType.IFC, "4walls1floorSite.xbim"); + model.Close(); + } + fileStream.Close(); + } + + } + [TestMethod] + public void OpenIfcXmlFileFromStream() + { + using (var fileStream = new FileStream("4walls1floorSite.ifcxml", FileMode.Open, FileAccess.Read)) + { + using (var model = new XbimModel()) + { + model.CreateFrom(fileStream, XbimStorageType.IFC, "4walls1floorSite.xbim"); + model.Close(); + } + fileStream.Close(); + } + + } + } +} diff --git a/Xbim.Essentials.Tests/ModelFilterTest.cs b/Xbim.Essentials.Tests/ModelFilterTest.cs new file mode 100644 index 000000000..960ba6d92 --- /dev/null +++ b/Xbim.Essentials.Tests/ModelFilterTest.cs @@ -0,0 +1,102 @@ +using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Xbim.IO; +using Xbim.Ifc2x3.Kernel; +using Xbim.Ifc2x3.GeometryResource; +using System.IO; + +namespace Xbim.Essentials.Tests +{ + [TestClass] + [DeploymentItem(@"TestSourceFiles\")] + public class ModelFilterTest + { + [TestMethod] + public void CopyAllEntitiesTest() + { + using (var source = new XbimModel()) + { + PropertyTranformDelegate propTransform = delegate(IfcMetaProperty prop, object toCopy) + { + var value = prop.PropertyInfo.GetValue(toCopy, null); + return value; + }; + + + + source.Open("BIM Logo-LetterM.xBIM"); + source.SaveAs("WithGeometry.ifc"); + using (var target = XbimModel.CreateTemporaryModel()) + { + target.AutoAddOwnerHistory = false; + using (var txn = target.BeginTransaction()) + { + var copied = new XbimInstanceHandleMap(source, target); + + foreach (var item in source.Instances) + { + target.InsertCopy(item, copied, txn, propTransform); + } + txn.Commit(); + } + target.SaveAs("WithoutGeometry.ifc"); + } + source.Close(); + //the two files should be the same + } + } + + [TestMethod] + public void ExtractIfcGeometryEntitiesTest() + { + using (var source = new XbimModel()) + { + PropertyTranformDelegate propTransform = delegate(IfcMetaProperty prop, object toCopy) + { + + if (typeof(IfcProduct).IsAssignableFrom(toCopy.GetType())) + { + if (prop.PropertyInfo.Name == "ObjectPlacement" || prop.PropertyInfo.Name == "Representation") + return null; + } + if(typeof(IfcTypeProduct).IsAssignableFrom(toCopy.GetType())) + { + if (prop.PropertyInfo.Name == "RepresentationMaps" ) + return null; + } + return prop.PropertyInfo.GetValue(toCopy, null);//just pass through the value + }; + + //source.Open("BIM Logo-LetterM.xBIM"); + //source.SaveAs("WithGeometry.ifc"); + string modelName = @"4walls1floorSite"; + string xbimModelName = Path.ChangeExtension(modelName,"xbim"); + + source.CreateFrom( Path.ChangeExtension(modelName,"ifc"), null, null, true); + + using (var target = XbimModel.CreateModel(Path.ChangeExtension(modelName + "_NoGeom", "xbim"))) + { + target.AutoAddOwnerHistory = false; + using (var txn = target.BeginTransaction()) + { + var copied = new XbimInstanceHandleMap(source, target); + + foreach (var item in source.Instances.OfType()) + { + target.InsertCopy(item, copied, txn, propTransform, false); + } + txn.Commit(); + } + + target.SaveAs(Path.ChangeExtension(modelName + "_NoGeom", "ifc")); + target.Close(); + + } + + source.Close(); + // XbimModel.Compact(Path.ChangeExtension(modelName + "_NoGeom", "xbim"), Path.ChangeExtension(modelName + "_NoGeom_Compacted", "xbim")); + //the two files should be the same + } + } + } +} diff --git a/Xbim.Essentials.Tests/TestSourceFiles/4walls1floorSite.ifc b/Xbim.Essentials.Tests/TestSourceFiles/4walls1floorSite.ifc new file mode 100644 index 000000000..b29cf7ccc --- /dev/null +++ b/Xbim.Essentials.Tests/TestSourceFiles/4walls1floorSite.ifc @@ -0,0 +1,609 @@ +ISO-10303-21; +HEADER; + +/****************************************************************************************** +* STEP Physical File produced by: The EXPRESS Data Manager Version 5.01.0100.02.64mod : 6 Jun 2012 +* Module: EDMstepFileFactory/EDMstandAlone +* Creation date: Mon Dec 02 13:34:01 2013 +* Host: c10200215 +* Database: C:\Users\xphy3\AppData\Local\Temp\{CFBB005A-4551-42A4-96F8-3034134D080C}\ifc +* Database version: 5507 +* Database creation date: Mon Dec 02 13:33:56 2013 +* Schema: IFC2X3 +* Model: DataRepository.ifc +* Model creation date: Mon Dec 02 13:33:57 2013 +* Header model: DataRepository.ifc_HeaderModel +* Header model creation date: Mon Dec 02 13:33:57 2013 +* EDMuser: sdai-user +* EDMgroup: sdai-group +* License ID and type: 5605 : Permanent license. Expiry date: +* EDMstepFileFactory options: 020000 +******************************************************************************************/ +FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1'); +FILE_NAME('Project Number','2013-12-02T13:34:01',(''),(''),'The EXPRESS Data Manager Version 5.01.0100.02.64mod : 6 Jun 2012','20130722_2115(x64) - Exporter 2014.0.2013.0722 - Default UI',''); +FILE_SCHEMA(('IFC2X3')); +ENDSEC; + +DATA; +#1= IFCORGANIZATION($,'Autodesk Revit 2014 (ENU)',$,$,$); +#5= IFCAPPLICATION(#1,'2014','Autodesk Revit 2014 (ENU)','Revit'); +#6= IFCCARTESIANPOINT((0.,0.,0.)); +#9= IFCCARTESIANPOINT((0.,0.)); +#11= IFCDIRECTION((1.,0.,0.)); +#13= IFCDIRECTION((-1.,0.,0.)); +#15= IFCDIRECTION((0.,1.,0.)); +#17= IFCDIRECTION((0.,-1.,0.)); +#19= IFCDIRECTION((0.,0.,1.)); +#21= IFCDIRECTION((0.,0.,-1.)); +#23= IFCDIRECTION((1.,0.)); +#25= IFCDIRECTION((-1.,0.)); +#27= IFCDIRECTION((0.,1.)); +#29= IFCDIRECTION((0.,-1.)); +#31= IFCAXIS2PLACEMENT3D(#6,$,$); +#32= IFCLOCALPLACEMENT(#841,#31); +#35= IFCPERSON($,'Funtik','Tomas',$,$,$,$,$); +#37= IFCORGANIZATION($,'','',$,$); +#38= IFCPERSONANDORGANIZATION(#35,#37,$); +#41= IFCOWNERHISTORY(#38,#5,$,.NOCHANGE.,$,$,$,1384180926); +#42= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.); +#43= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#44= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#45= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#46= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#47= IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0); +#48= IFCMEASUREWITHUNIT(IFCRATIOMEASURE(0.0174532925199433),#46); +#49= IFCCONVERSIONBASEDUNIT(#47,.PLANEANGLEUNIT.,'DEGREE',#48); +#50= IFCSIUNIT(*,.MASSUNIT.,.KILO.,.GRAM.); +#51= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.); +#52= IFCSIUNIT(*,.THERMODYNAMICTEMPERATUREUNIT.,$,.KELVIN.); +#53= IFCDERIVEDUNITELEMENT(#50,1); +#54= IFCDERIVEDUNITELEMENT(#52,-1); +#55= IFCDERIVEDUNITELEMENT(#51,-3); +#56= IFCDERIVEDUNIT((#53,#54,#55),.THERMALTRANSMITTANCEUNIT.,$); +#58= IFCDERIVEDUNITELEMENT(#43,3); +#59= IFCDERIVEDUNITELEMENT(#51,-1); +#60= IFCDERIVEDUNIT((#58,#59),.VOLUMETRICFLOWRATEUNIT.,$); +#62= IFCSIUNIT(*,.POWERUNIT.,$,.WATT.); +#63= IFCUNITASSIGNMENT((#42,#44,#45,#49,#50,#51,#52,#56,#60,#62)); +#65= IFCAXIS2PLACEMENT3D(#6,$,$); +#66= IFCDIRECTION((2.,6.12303176911189E-17,1.)); +#68= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.00000000000000E-5,#65,#66); +#71= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#68,$,.GRAPH_VIEW.,$); +#73= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#68,$,.MODEL_VIEW.,$); +#74= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Box','Model',*,*,*,*,#68,$,.MODEL_VIEW.,$); +#75= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('FootPrint','Model',*,*,*,*,#68,$,.MODEL_VIEW.,$); +#76= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Annotation',3,1.00000000000000E-5,#65,#66); +#77= IFCGEOMETRICREPRESENTATIONSUBCONTEXT($,'Annotation',*,*,*,*,#76,0.01,.PLAN_VIEW.,$); +#79= IFCPROJECT('1nxaHAOIr7bx3dQk8YkUvC',#41,'Project Number',$,$,'Project Name','Project Status',(#68,#76),#63); +#85= IFCPOSTALADDRESS($,$,$,$,('Enter address here'),$,'Westminster','London','','UK'); +#89= IFCBUILDING('1nxaHAOIr7bx3dQk8YkUvD',#41,'',$,$,#32,$,'',.ELEMENT.,$,$,#85); +#95= IFCAXIS2PLACEMENT3D(#6,$,$); +#96= IFCLOCALPLACEMENT(#32,#95); +#98= IFCBUILDINGSTOREY('1nxaHAOIr7bx3dQkBTHX2B',#41,'Level 0',$,$,#96,$,'Level 0',.ELEMENT.,0.); +#100= IFCCARTESIANPOINT((0.,0.,3000.)); +#102= IFCAXIS2PLACEMENT3D(#100,$,$); +#1016= IFCRELCONNECTSPATHELEMENTS('1u7xpA8vz5SelCWmisS$hX',#41,$,$,$,#441,#499,(),(),.ATSTART.,.ATEND.); +#898= IFCRELCONTAINEDINSPATIALSTRUCTURE('3Zu5Bv0LOHrPC10066FoQQ',#41,$,$,(#142,#383,#441,#499,#557),#98); +#109= IFCCARTESIANPOINT((-6059.44147701315,3741.33908077953,0.)); +#111= IFCAXIS2PLACEMENT3D(#109,#19,#17); +#112= IFCLOCALPLACEMENT(#96,#111); +#113= IFCCARTESIANPOINT((5300.,0.)); +#115= IFCPOLYLINE((#9,#113)); +#117= IFCSHAPEREPRESENTATION(#71,'Axis','Curve2D',(#115)); +#120= IFCCARTESIANPOINT((2650.,2.27373675443232E-13)); +#122= IFCAXIS2PLACEMENT2D(#120,#25); +#123= IFCRECTANGLEPROFILEDEF(.AREA.,$,#122,5300.,299.999999999999); +#124= IFCAXIS2PLACEMENT3D(#6,$,$); +#125= IFCEXTRUDEDAREASOLID(#123,#124,#19,3000.); +#126= IFCCOLOURRGB($,0.666666666666667,0.392156862745098,0.411764705882353); +#127= IFCSURFACESTYLERENDERING(#126,0.,$,$,$,$,IFCNORMALISEDRATIOMEASURE(0.5),IFCSPECULAREXPONENT(128.),.NOTDEFINED.); +#128= IFCSURFACESTYLE('Brick, Common',.BOTH.,(#127)); +#130= IFCPRESENTATIONSTYLEASSIGNMENT((#128)); +#132= IFCSTYLEDITEM(#125,(#130),$); +#135= IFCSHAPEREPRESENTATION(#73,'Body','SweptSolid',(#125)); +#138= IFCPRODUCTDEFINITIONSHAPE($,$,(#117,#135)); +#142= IFCWALLSTANDARDCASE('3PB9xD$H12d9JE$nx254cN',#41,'Basic Wall:Cav - 102 75i 100 p - Lwt:217140',$,'Basic Wall:Cav - 102 75i 100 p - Lwt:45419',#112,#138,'217140'); +#151= IFCPROPERTYSINGLEVALUE('Base is Attached',$,IFCBOOLEAN(.F.),$); +#152= IFCPROPERTYSINGLEVALUE('Related to Mass',$,IFCBOOLEAN(.F.),$); +#153= IFCPROPERTYSINGLEVALUE('Enable Analytical Model',$,IFCBOOLEAN(.F.),$); +#154= IFCPROPERTYSINGLEVALUE('Base Constraint',$,IFCLABEL('Level: Level 0'),$); +#155= IFCPROPERTYSINGLEVALUE('Top is Attached',$,IFCBOOLEAN(.F.),$); +#156= IFCPROPERTYSINGLEVALUE('Base Extension Distance',$,IFCLENGTHMEASURE(0.),$); +#157= IFCPROPERTYSINGLEVALUE('Area',$,IFCAREAMEASURE(15.9),$); +#158= IFCPROPERTYSINGLEVALUE('Structural',$,IFCBOOLEAN(.F.),$); +#159= IFCPROPERTYSINGLEVALUE('Base Offset',$,IFCLENGTHMEASURE(0.),$); +#160= IFCPROPERTYSINGLEVALUE('Top Offset',$,IFCLENGTHMEASURE(0.),$); +#161= IFCPROPERTYSINGLEVALUE('Top Extension Distance',$,IFCLENGTHMEASURE(0.),$); +#162= IFCPROPERTYSINGLEVALUE('Volume',$,IFCVOLUMEMEASURE(4.77),$); +#163= IFCPROPERTYSINGLEVALUE('Phase Created',$,IFCLABEL('New Construction'),$); +#164= IFCPROPERTYSINGLEVALUE('Length',$,IFCLENGTHMEASURE(5000.),$); +#165= IFCPROPERTYSINGLEVALUE('Location Line',$,IFCIDENTIFIER('Wall Centerline'),$); +#166= IFCPROPERTYSINGLEVALUE('Unconnected Height',$,IFCLENGTHMEASURE(3000.),$); +#167= IFCPROPERTYSINGLEVALUE('Top Constraint',$,IFCLABEL('Level: Level 1'),$); +#168= IFCPROPERTYSINGLEVALUE('Room Bounding',$,IFCBOOLEAN(.T.),$); +#169= IFCPROPERTYSINGLEVALUE('Structural Usage',$,IFCIDENTIFIER('Non-bearing'),$); +#170= IFCPROPERTYSINGLEVALUE('Wrapping at Inserts',$,IFCIDENTIFIER('Both'),$); +#171= IFCPROPERTYSINGLEVALUE('Structural Material',$,IFCLABEL('Concrete Masonry Units'),$); +#172= IFCPROPERTYSINGLEVALUE('Assembly Description',$,IFCTEXT(''),$); +#173= IFCPROPERTYSINGLEVALUE('Coarse Scale Fill Pattern',$,IFCLABEL('Solid fill'),$); +#174= IFCPROPERTYSINGLEVALUE('Function',$,IFCIDENTIFIER('Exterior'),$); +#175= IFCPROPERTYSINGLEVALUE('Wrapping at Ends',$,IFCIDENTIFIER('None'),$); +#176= IFCPROPERTYSINGLEVALUE('Absorptance',$,IFCREAL(0.7),$); +#177= IFCPROPERTYSINGLEVALUE('Coarse Scale Fill Color',$,IFCINTEGER(12632256),$); +#178= IFCPROPERTYSINGLEVALUE('Roughness',$,IFCINTEGER(3),$); +#179= IFCPROPERTYSINGLEVALUE('Assembly Code',$,IFCTEXT(''),$); +#180= IFCPROPERTYSINGLEVALUE('Keynote',$,IFCTEXT('F10'),$); +#181= IFCPROPERTYSINGLEVALUE('Heat Transfer Coefficient (U)',$,IFCREAL(0.235791810928132),$); +#182= IFCPROPERTYSINGLEVALUE('Thermal mass',$,IFCREAL(313533.),$); +#183= IFCPROPERTYSINGLEVALUE('Width',$,IFCLENGTHMEASURE(300.),$); +#184= IFCPROPERTYSINGLEVALUE('Thermal Resistance (R)',$,IFCREAL(4.2410293897136),$); +#185= IFCPROPERTYSET('3Uz1zEFsr6Hvt9ktniDgTC',#41,'Constraints',$,(#151,#152,#154,#155,#156,#159,#160,#161,#165,#166,#167,#168)); +#190= IFCRELDEFINESBYPROPERTIES('3ONEd6zc5CrfM8khwzVpgT',#41,$,$,(#142),#185); +#194= IFCPROPERTYSET('1eE$d0HyLDNQxBV4cMuDUV',#41,'Structural',$,(#153,#158,#169)); +#196= IFCRELDEFINESBYPROPERTIES('3T9$FJcj19ExQOEojBtnsV',#41,$,$,(#142),#194); +#199= IFCPROPERTYSET('2aeyL7Ih1DaPRGah5Ytpyt',#41,'Dimensions',$,(#157,#162,#164)); +#201= IFCRELDEFINESBYPROPERTIES('3J1p_3S8n9hB0pnBy0lGnu',#41,$,$,(#142),#199); +#204= IFCPROPERTYSET('3qTy15CFD9QfWaIJUfTF7H',#41,'Phasing',$,(#163)); +#206= IFCRELDEFINESBYPROPERTIES('1oieg26dD4oeCk_0HJeDTt',#41,$,$,(#142),#204); +#209= IFCPROPERTYSET('16o$kZWGXAneQ0QghrYtxE',#41,'Identity Data',$,(#172,#179,#180)); +#211= IFCPROPERTYSET('0I0CaeBI14oAiERUyAcmT8',#41,'Construction',$,(#170,#174,#175,#183)); +#213= IFCPROPERTYSET('0q_Jfo$PX2fwQRTr0REiPg',#41,'Materials and Finishes',$,(#171)); +#215= IFCPROPERTYSET('2M$bJ0KbfETfzPfFWNAJmv',#41,'Graphics',$,(#173,#177)); +#217= IFCPROPERTYSET('2jY4_1OIbARPJG5l_t6U$P',#41,'Analytical Properties',$,(#176,#178,#181,#182,#184)); +#219= IFCMATERIAL('Brick, Common'); +#222= IFCCOLOURRGB($,0.,0.,0.); +#223= IFCDRAUGHTINGPREDEFINEDCURVEFONT('continuous'); +#224= IFCCURVESTYLE($,#223,$,#222); +#225= IFCFILLAREASTYLEHATCHING(#224,IFCPOSITIVELENGTHMEASURE(355.6),$,#9,45.); +#226= IFCCURVESTYLE($,#223,$,#222); +#227= IFCCARTESIANPOINT((0.,381.)); +#229= IFCFILLAREASTYLEHATCHING(#226,IFCPOSITIVELENGTHMEASURE(355.6),$,#227,45.); +#230= IFCFILLAREASTYLE('Brickwork',(#225,#229)); +#232= IFCPRESENTATIONSTYLEASSIGNMENT((#128,#230)); +#234= IFCSTYLEDITEM($,(#232),$); +#236= IFCSTYLEDREPRESENTATION(#68,'Style','Material and Cut Pattern',(#234)); +#239= IFCMATERIALDEFINITIONREPRESENTATION($,$,(#236),#219); +#242= IFCMATERIALLAYER(#219,102.5,$); +#244= IFCMATERIAL('Fiberglass Batt'); +#245= IFCCOLOURRGB($,0.498039215686275,0.498039215686275,0.498039215686275); +#246= IFCSURFACESTYLERENDERING(#245,0.,$,$,$,$,IFCNORMALISEDRATIOMEASURE(0.5),IFCSPECULAREXPONENT(64.),.NOTDEFINED.); +#247= IFCSURFACESTYLE('Fiberglass Batt',.BOTH.,(#246)); +#249= IFCPRESENTATIONSTYLEASSIGNMENT((#247)); +#251= IFCSTYLEDITEM($,(#249),$); +#253= IFCSTYLEDREPRESENTATION(#68,'Style','Material',(#251)); +#255= IFCMATERIALDEFINITIONREPRESENTATION($,$,(#253),#244); +#258= IFCMATERIALLAYER(#244,75.,$); +#259= IFCMATERIAL('Concrete Masonry Units'); +#260= IFCCOLOURRGB($,0.709803921568627,0.709803921568627,0.709803921568627); +#261= IFCSURFACESTYLERENDERING(#260,0.,$,$,$,$,IFCNORMALISEDRATIOMEASURE(0.5),IFCSPECULAREXPONENT(128.),.NOTDEFINED.); +#262= IFCSURFACESTYLE('Concrete Masonry Units',.BOTH.,(#261)); +#264= IFCCOLOURRGB($,0.,0.,0.); +#265= IFCCURVESTYLE($,#223,$,#264); +#266= IFCFILLAREASTYLEHATCHING(#265,IFCPOSITIVELENGTHMEASURE(300.),$,#9,45.); +#267= IFCCURVESTYLE($,#223,$,#264); +#268= IFCFILLAREASTYLEHATCHING(#267,IFCPOSITIVELENGTHMEASURE(300.),$,#9,135.); +#269= IFCFILLAREASTYLE('Diagonal cross-hatch',(#266,#268)); +#271= IFCPRESENTATIONSTYLEASSIGNMENT((#262,#269)); +#273= IFCSTYLEDITEM($,(#271),$); +#275= IFCSTYLEDREPRESENTATION(#68,'Style','Material and Cut Pattern',(#273)); +#277= IFCMATERIALDEFINITIONREPRESENTATION($,$,(#275),#259); +#280= IFCMATERIALLAYER(#259,110.,$); +#281= IFCMATERIAL('Gypsum Wall Board'); +#282= IFCCOLOURRGB($,0.976470588235294,0.976470588235294,0.976470588235294); +#283= IFCSURFACESTYLERENDERING(#282,0.,$,$,$,$,IFCNORMALISEDRATIOMEASURE(0.5),IFCSPECULAREXPONENT(128.),.NOTDEFINED.); +#284= IFCSURFACESTYLE('Gypsum Wall Board',.BOTH.,(#283)); +#286= IFCCOLOURRGB($,0.,0.,0.); +#287= IFCCURVESTYLEFONTPATTERN(33.528,576.072); +#288= IFCCURVESTYLEFONTPATTERN(33.528,576.072); +#289= IFCCURVESTYLEFONTPATTERN(33.528,1185.672); +#290= IFCCURVESTYLEFONTPATTERN(33.528,576.072); +#291= IFCCURVESTYLEFONTPATTERN(33.528,372.872); +#292= IFCCURVESTYLEFONTPATTERN(33.528,982.472); +#293= IFCCURVESTYLEFONT('Sand:1',(#287,#288,#289,#290,#291,#292)); +#295= IFCCURVESTYLE('Sand:1',#293,$,#286); +#296= IFCCARTESIANPOINT((812.8,0.)); +#298= IFCFILLAREASTYLEHATCHING(#295,IFCPOSITIVELENGTHMEASURE(203.2),$,#296,0.); +#299= IFCCURVESTYLEFONTPATTERN(33.528,576.072); +#300= IFCCURVESTYLEFONTPATTERN(33.528,576.072); +#301= IFCCURVESTYLEFONTPATTERN(33.528,1185.672); +#302= IFCCURVESTYLEFONTPATTERN(33.528,576.072); +#303= IFCCURVESTYLEFONTPATTERN(33.528,372.872); +#304= IFCCURVESTYLEFONTPATTERN(33.528,982.472); +#305= IFCCURVESTYLEFONT('Sand:2',(#299,#300,#301,#302,#303,#304)); +#307= IFCCURVESTYLE('Sand:2',#305,$,#286); +#308= IFCCARTESIANPOINT((-101.599999999999,805.505448195993)); +#310= IFCFILLAREASTYLEHATCHING(#307,IFCPOSITIVELENGTHMEASURE(203.2),$,#308,120.); +#311= IFCCURVESTYLEFONTPATTERN(33.528,576.072); +#312= IFCCURVESTYLEFONTPATTERN(33.528,576.072); +#313= IFCCURVESTYLEFONTPATTERN(33.528,1185.672); +#314= IFCCURVESTYLEFONTPATTERN(33.528,576.072); +#315= IFCCURVESTYLEFONTPATTERN(33.528,372.872); +#316= IFCCURVESTYLEFONTPATTERN(33.528,982.472); +#317= IFCCURVESTYLEFONT('Sand:3',(#311,#312,#313,#314,#315,#316)); +#319= IFCCURVESTYLE('Sand:3',#317,$,#286); +#320= IFCCARTESIANPOINT((-0.,-195.90544819599)); +#322= IFCFILLAREASTYLEHATCHING(#319,IFCPOSITIVELENGTHMEASURE(203.2),$,#320,240.); +#323= IFCFILLAREASTYLE('Sand',(#298,#310,#322)); +#325= IFCPRESENTATIONSTYLEASSIGNMENT((#284,#323)); +#327= IFCSTYLEDITEM($,(#325),$); +#329= IFCSTYLEDREPRESENTATION(#68,'Style','Material and Cut Pattern',(#327)); +#331= IFCMATERIALDEFINITIONREPRESENTATION($,$,(#329),#281); +#334= IFCMATERIALLAYER(#281,12.5,$); +#335= IFCMATERIALLAYERSET((#242,#258,#280,#334),'Basic Wall:Cav - 102 75i 100 p - Lwt'); +#341= IFCMATERIALLAYERSETUSAGE(#335,.AXIS2.,.NEGATIVE.,150.); +#342= IFCWALLTYPE('2ru7YPT4T9MuTpOS4FRzxX',#41,'Basic Wall:Cav - 102 75i 100 p - Lwt',$,$,(#209,#211,#213,#215,#217),$,'45419',$,.STANDARD.); +#350= IFCPROPERTYSINGLEVALUE('Reference',$,IFCIDENTIFIER('Cav - 102 75i 100 p - Lwt'),$); +#351= IFCPROPERTYSINGLEVALUE('LoadBearing',$,IFCBOOLEAN(.F.),$); +#352= IFCPROPERTYSINGLEVALUE('ExtendToStructure',$,IFCBOOLEAN(.F.),$); +#353= IFCPROPERTYSINGLEVALUE('IsExternal',$,IFCBOOLEAN(.T.),$); +#354= IFCPROPERTYSINGLEVALUE('ThermalTransmittance',$,IFCTHERMALTRANSMITTANCEMEASURE(0.235791810928132),$); +#355= IFCPROPERTYSET('3PB9xD$H12d9JE$n$254cN',#41,'Pset_WallCommon',$,(#350,#351,#352,#353,#354)); +#357= IFCRELDEFINESBYPROPERTIES('2g7M$aZ7D4iQriLegDX69F',#41,$,$,(#142),#355); +#360= IFCCARTESIANPOINT((-5909.44147701315,-1408.66091922047,0.)); +#362= IFCAXIS2PLACEMENT3D(#360,$,$); +#363= IFCLOCALPLACEMENT(#96,#362); +#364= IFCCARTESIANPOINT((10000.,0.)); +#366= IFCPOLYLINE((#9,#364)); +#368= IFCSHAPEREPRESENTATION(#71,'Axis','Curve2D',(#366)); +#370= IFCCARTESIANPOINT((5000.,0.)); +#372= IFCAXIS2PLACEMENT2D(#370,#25); +#373= IFCRECTANGLEPROFILEDEF(.AREA.,$,#372,10000.,300.); +#374= IFCAXIS2PLACEMENT3D(#6,$,$); +#375= IFCEXTRUDEDAREASOLID(#373,#374,#19,3000.); +#376= IFCSTYLEDITEM(#375,(#130),$); +#379= IFCSHAPEREPRESENTATION(#73,'Body','SweptSolid',(#375)); +#381= IFCPRODUCTDEFINITIONSHAPE($,$,(#368,#379)); +#383= IFCWALLSTANDARDCASE('3PB9xD$H12d9JE$nx254ai',#41,'Basic Wall:Cav - 102 75i 100 p - Lwt:217231',$,'Basic Wall:Cav - 102 75i 100 p - Lwt:45419',#363,#381,'217231'); +#386= IFCPROPERTYSINGLEVALUE('Volume',$,IFCVOLUMEMEASURE(9.),$); +#387= IFCPROPERTYSINGLEVALUE('Unconnected Height',$,IFCLENGTHMEASURE(3000.),$); +#388= IFCPROPERTYSINGLEVALUE('Area',$,IFCAREAMEASURE(30.),$); +#389= IFCPROPERTYSINGLEVALUE('Length',$,IFCLENGTHMEASURE(10000.),$); +#390= IFCPROPERTYSET('1G$lmjxRb1190W6hj_1bbC',#41,'Constraints',$,(#160,#159,#152,#387,#161,#155,#151,#156,#154,#167,#168,#165)); +#392= IFCRELDEFINESBYPROPERTIES('3vMFmYkhX2gAK07DeI08mI',#41,$,$,(#383),#390); +#396= IFCPROPERTYSET('1OlayUUYnChPIz2fqYypX1',#41,'Structural',$,(#158,#169,#153)); +#398= IFCRELDEFINESBYPROPERTIES('1dbDFep9L8NOIWzhuvZEOJ',#41,$,$,(#383),#396); +#401= IFCPROPERTYSET('0of8ATPRP1cwN$Msx17DPs',#41,'Dimensions',$,(#386,#388,#389)); +#403= IFCRELDEFINESBYPROPERTIES('3ZWzxAo21EuOTZIzTQBF_8',#41,$,$,(#383),#401); +#406= IFCPROPERTYSET('3ORQs3jMr1N8YwEXowSblj',#41,'Phasing',$,(#163)); +#408= IFCRELDEFINESBYPROPERTIES('3lGR3VNCX38Qx3rfi5Ag2E',#41,$,$,(#383),#406); +#411= IFCMATERIALLAYERSETUSAGE(#335,.AXIS2.,.NEGATIVE.,150.); +#412= IFCPROPERTYSINGLEVALUE('ThermalTransmittance',$,IFCTHERMALTRANSMITTANCEMEASURE(0.235791810928132),$); +#413= IFCPROPERTYSET('3PB9xD$H12d9JE$n$254ai',#41,'Pset_WallCommon',$,(#350,#351,#352,#353,#412)); +#415= IFCRELDEFINESBYPROPERTIES('0TJyExzSzAvf4i5fPnWzjJ',#41,$,$,(#383),#413); +#418= IFCCARTESIANPOINT((3940.55852298685,-1258.6609192205,0.)); +#420= IFCAXIS2PLACEMENT3D(#418,#19,#15); +#421= IFCLOCALPLACEMENT(#96,#420); +#422= IFCCARTESIANPOINT((5000.,0.)); +#424= IFCPOLYLINE((#9,#422)); +#426= IFCSHAPEREPRESENTATION(#71,'Axis','Curve2D',(#424)); +#428= IFCCARTESIANPOINT((2500.,0.)); +#430= IFCAXIS2PLACEMENT2D(#428,#25); +#431= IFCRECTANGLEPROFILEDEF(.AREA.,$,#430,5000.,300.); +#432= IFCAXIS2PLACEMENT3D(#6,$,$); +#433= IFCEXTRUDEDAREASOLID(#431,#432,#19,3000.); +#434= IFCSTYLEDITEM(#433,(#130),$); +#437= IFCSHAPEREPRESENTATION(#73,'Body','SweptSolid',(#433)); +#439= IFCPRODUCTDEFINITIONSHAPE($,$,(#426,#437)); +#441= IFCWALLSTANDARDCASE('3PB9xD$H12d9JE$nx254aQ',#41,'Basic Wall:Cav - 102 75i 100 p - Lwt:217273',$,'Basic Wall:Cav - 102 75i 100 p - Lwt:45419',#421,#439,'217273'); +#444= IFCPROPERTYSINGLEVALUE('Area',$,IFCAREAMEASURE(15.),$); +#445= IFCPROPERTYSINGLEVALUE('Volume',$,IFCVOLUMEMEASURE(4.5),$); +#446= IFCPROPERTYSINGLEVALUE('Unconnected Height',$,IFCLENGTHMEASURE(3000.),$); +#447= IFCPROPERTYSINGLEVALUE('Length',$,IFCLENGTHMEASURE(5000.),$); +#448= IFCPROPERTYSET('3O5PC8XM97XO8cOUSlUgzE',#41,'Dimensions',$,(#444,#445,#447)); +#450= IFCRELDEFINESBYPROPERTIES('2$fHTRwqLCNgTDFg7hgofl',#41,$,$,(#441),#448); +#454= IFCPROPERTYSET('2LglpzAkj0P85nnm3C4lSl',#41,'Constraints',$,(#154,#156,#161,#160,#159,#165,#167,#155,#151,#446,#152,#168)); +#456= IFCRELDEFINESBYPROPERTIES('391CzmgqfF$RC3mRMjRvy0',#41,$,$,(#441),#454); +#459= IFCPROPERTYSET('33$sWVEdH8cgZ0ksBzqdbD',#41,'Structural',$,(#158,#153,#169)); +#461= IFCRELDEFINESBYPROPERTIES('1krmPGeu19mejjLMoBgY6S',#41,$,$,(#441),#459); +#464= IFCPROPERTYSET('1rMgTukK56MQ9w$5143hrJ',#41,'Phasing',$,(#163)); +#466= IFCRELDEFINESBYPROPERTIES('2U5Tivk8n10BlJWNEMg5Jb',#41,$,$,(#441),#464); +#469= IFCMATERIALLAYERSETUSAGE(#335,.AXIS2.,.NEGATIVE.,150.); +#470= IFCPROPERTYSINGLEVALUE('ThermalTransmittance',$,IFCTHERMALTRANSMITTANCEMEASURE(0.235791810928132),$); +#471= IFCPROPERTYSET('3PB9xD$H12d9JE$n$254aQ',#41,'Pset_WallCommon',$,(#350,#351,#352,#353,#470)); +#473= IFCRELDEFINESBYPROPERTIES('20mx0xf8n4DwL9aVVd1FPi',#41,$,$,(#441),#471); +#476= IFCCARTESIANPOINT((3790.55852298687,3591.3390807795,0.)); +#478= IFCAXIS2PLACEMENT3D(#476,#19,#13); +#479= IFCLOCALPLACEMENT(#96,#478); +#480= IFCCARTESIANPOINT((9700.,0.)); +#482= IFCPOLYLINE((#9,#480)); +#484= IFCSHAPEREPRESENTATION(#71,'Axis','Curve2D',(#482)); +#486= IFCCARTESIANPOINT((4850.00000000001,5.68434188608080E-14)); +#488= IFCAXIS2PLACEMENT2D(#486,#25); +#489= IFCRECTANGLEPROFILEDEF(.AREA.,$,#488,9700.00000000001,300.); +#490= IFCAXIS2PLACEMENT3D(#6,$,$); +#491= IFCEXTRUDEDAREASOLID(#489,#490,#19,3000.); +#492= IFCSTYLEDITEM(#491,(#130),$); +#495= IFCSHAPEREPRESENTATION(#73,'Body','SweptSolid',(#491)); +#497= IFCPRODUCTDEFINITIONSHAPE($,$,(#484,#495)); +#499= IFCWALLSTANDARDCASE('3PB9xD$H12d9JE$nx254bC',#41,'Basic Wall:Cav - 102 75i 100 p - Lwt:217327',$,'Basic Wall:Cav - 102 75i 100 p - Lwt:45419',#479,#497,'217327'); +#502= IFCPROPERTYSINGLEVALUE('Length',$,IFCLENGTHMEASURE(10000.),$); +#503= IFCPROPERTYSINGLEVALUE('Area',$,IFCAREAMEASURE(29.1),$); +#504= IFCPROPERTYSINGLEVALUE('Volume',$,IFCVOLUMEMEASURE(8.73000000000001),$); +#505= IFCPROPERTYSINGLEVALUE('Unconnected Height',$,IFCLENGTHMEASURE(3000.),$); +#506= IFCPROPERTYSET('3b6so348DDAwq2Gw6_ytPH',#41,'Constraints',$,(#167,#159,#165,#152,#151,#160,#156,#168,#505,#161,#155,#154)); +#508= IFCRELDEFINESBYPROPERTIES('2g9dqXh7L51fezP_dkxWpI',#41,$,$,(#499),#506); +#512= IFCPROPERTYSET('1uxYaOtk1Aygbt5bT27tyl',#41,'Structural',$,(#153,#158,#169)); +#514= IFCRELDEFINESBYPROPERTIES('1ph3LV9bf1sh37ae7kgX$6',#41,$,$,(#499),#512); +#517= IFCPROPERTYSET('0PoI12wYD0URPo3CtN8rc4',#41,'Dimensions',$,(#502,#503,#504)); +#519= IFCRELDEFINESBYPROPERTIES('0gGzpKL4PB9OirvIahcPD1',#41,$,$,(#499),#517); +#522= IFCPROPERTYSET('3O4u7IIirAngcz4XDY1K20',#41,'Phasing',$,(#163)); +#524= IFCRELDEFINESBYPROPERTIES('1gPYFf9C98uhRKagJvg5hN',#41,$,$,(#499),#522); +#527= IFCMATERIALLAYERSETUSAGE(#335,.AXIS2.,.NEGATIVE.,150.); +#528= IFCPROPERTYSINGLEVALUE('ThermalTransmittance',$,IFCTHERMALTRANSMITTANCEMEASURE(0.235791810928132),$); +#529= IFCPROPERTYSET('3PB9xD$H12d9JE$n$254bC',#41,'Pset_WallCommon',$,(#350,#351,#352,#353,#528)); +#531= IFCRELDEFINESBYPROPERTIES('0EDDRSxMr3hfrxbLi3woCg',#41,$,$,(#499),#529); +#534= IFCAXIS2PLACEMENT3D(#6,$,$); +#535= IFCLOCALPLACEMENT(#96,#534); +#536= IFCCARTESIANPOINT((0.,2.27373675443232E-12)); +#538= IFCAXIS2PLACEMENT2D(#536,#23); +#539= IFCRECTANGLEPROFILEDEF(.AREA.,'Beam and Block 225mm Susp Ground',#538,5055.,10055.); +#540= IFCCARTESIANPOINT((-1059.44147701315,1091.33908077951,0.)); +#542= IFCAXIS2PLACEMENT3D(#540,#21,#15); +#543= IFCEXTRUDEDAREASOLID(#539,#542,#19,320.); +#544= IFCCOLOURRGB($,0.752941176470588,0.752941176470588,0.752941176470588); +#545= IFCSURFACESTYLERENDERING(#544,0.,$,$,$,$,IFCNORMALISEDRATIOMEASURE(0.5),IFCSPECULAREXPONENT(128.),.NOTDEFINED.); +#546= IFCSURFACESTYLE('Concrete, Precast',.BOTH.,(#545)); +#548= IFCPRESENTATIONSTYLEASSIGNMENT((#546)); +#550= IFCSTYLEDITEM(#543,(#548),$); +#553= IFCSHAPEREPRESENTATION(#73,'Body','SweptSolid',(#543)); +#555= IFCPRODUCTDEFINITIONSHAPE($,$,(#553)); +#557= IFCSLAB('3PB9xD$H12d9JE$nx254Zs',#41,'Floor:Beam and Block 225mm Susp Ground:217429',$,'Floor:Beam and Block 225mm Susp Ground',#535,#555,'217429',.FLOOR.); +#560= IFCPROPERTYSINGLEVALUE('Volume',$,IFCVOLUMEMEASURE(16.264968),$); +#561= IFCPROPERTYSINGLEVALUE('Perimeter',$,IFCLENGTHMEASURE(30220.),$); +#562= IFCPROPERTYSINGLEVALUE('Level',$,IFCLABEL('Level: Level 0'),$); +#563= IFCPROPERTYSINGLEVALUE('Area',$,IFCAREAMEASURE(50.828025),$); +#564= IFCPROPERTYSINGLEVALUE('Height Offset From Level',$,IFCLENGTHMEASURE(0.),$); +#565= IFCPROPERTYSINGLEVALUE('Thickness',$,IFCLENGTHMEASURE(320.),$); +#566= IFCPROPERTYSINGLEVALUE('Function',$,IFCIDENTIFIER('Interior'),$); +#567= IFCPROPERTYSINGLEVALUE('Structural Material',$,IFCLABEL('Concrete Masonry, Floor Block'),$); +#568= IFCPROPERTYSINGLEVALUE('Absorptance',$,IFCREAL(0.7),$); +#569= IFCPROPERTYSINGLEVALUE('Keynote',$,IFCTEXT('E60/130'),$); +#570= IFCPROPERTYSINGLEVALUE('Heat Transfer Coefficient (U)',$,IFCREAL(0.397589052997394),$); +#571= IFCPROPERTYSINGLEVALUE('Coarse Scale Fill Color',$,IFCINTEGER(0),$); +#572= IFCPROPERTYSINGLEVALUE('Thermal mass',$,IFCREAL(365368.8),$); +#573= IFCPROPERTYSINGLEVALUE('Default Thickness',$,IFCLENGTHMEASURE(320.),$); +#574= IFCPROPERTYSINGLEVALUE('Thermal Resistance (R)',$,IFCREAL(2.51515979240645),$); +#575= IFCPROPERTYSET('3Tx21Nxvr7_un2Gm558sFh',#41,'Phasing',$,(#163)); +#577= IFCRELDEFINESBYPROPERTIES('2WZjK6B8r7Mfsf95TLi2nI',#41,$,$,(#557),#575); +#581= IFCPROPERTYSET('2GYQ3WqAX1mAMrB$QXs05K',#41,'Dimensions',$,(#560,#561,#563,#565)); +#583= IFCRELDEFINESBYPROPERTIES('0hio_UFvTCJesrZyTiPffd',#41,$,$,(#557),#581); +#586= IFCPROPERTYSET('1w$P_vFOr90xCA$vQRnZ5W',#41,'Constraints',$,(#562,#168,#564,#152)); +#588= IFCRELDEFINESBYPROPERTIES('1EJzlMJRr4uxZV7Fqr9oxc',#41,$,$,(#557),#586); +#591= IFCPROPERTYSET('2WX$8Cng18mRBzUbjVaXky',#41,'Structural',$,(#158,#153)); +#593= IFCRELDEFINESBYPROPERTIES('3gyffByHP7GO7ZX7$jvpet',#41,$,$,(#557),#591); +#596= IFCPROPERTYSET('3gBBJY_RD5NfT6tovDp6Kg',#41,'Identity Data',$,(#172,#569,#179)); +#598= IFCPROPERTYSET('2Saha87uD9RQKQBAI9BTTc',#41,'Construction',$,(#566,#573)); +#600= IFCPROPERTYSET('24MjY8m$X1fOQfao6MzC7m',#41,'Analytical Properties',$,(#178,#568,#570,#572,#574)); +#602= IFCPROPERTYSET('2ap11gYT961ADJA8JFGOQ4',#41,'Materials and Finishes',$,(#567)); +#604= IFCPROPERTYSET('2cQCHfK4DF1ggU55vNvitL',#41,'Graphics',$,(#173,#571)); +#606= IFCMATERIAL('Concrete, Sand/Cement Screed'); +#607= IFCCOLOURRGB($,0.498039215686275,0.498039215686275,0.498039215686275); +#608= IFCSURFACESTYLERENDERING(#607,0.,$,$,$,$,IFCNORMALISEDRATIOMEASURE(0.5),IFCSPECULAREXPONENT(0.),.NOTDEFINED.); +#609= IFCSURFACESTYLE('Concrete, Sand/Cement Screed',.BOTH.,(#608)); +#611= IFCPRESENTATIONSTYLEASSIGNMENT((#609,#323)); +#613= IFCSTYLEDITEM($,(#611),$); +#615= IFCSTYLEDREPRESENTATION(#68,'Style','Material and Cut Pattern',(#613)); +#617= IFCMATERIALDEFINITIONREPRESENTATION($,$,(#615),#606); +#620= IFCMATERIALLAYER(#606,65.,$); +#621= IFCMATERIAL('Rigid insulation'); +#622= IFCCOLOURRGB($,0.498039215686275,0.498039215686275,0.498039215686275); +#623= IFCSURFACESTYLERENDERING(#622,0.,$,$,$,$,IFCNORMALISEDRATIOMEASURE(0.5),IFCSPECULAREXPONENT(64.),.NOTDEFINED.); +#624= IFCSURFACESTYLE('Rigid insulation',.BOTH.,(#623)); +#626= IFCCOLOURRGB($,0.,0.,0.); +#627= IFCCURVESTYLE($,#223,$,#626); +#628= IFCFILLAREASTYLEHATCHING(#627,IFCPOSITIVELENGTHMEASURE(300.),$,#9,0.); +#629= IFCCURVESTYLE($,#223,$,#626); +#630= IFCFILLAREASTYLEHATCHING(#629,IFCPOSITIVELENGTHMEASURE(300.),$,#9,90.); +#631= IFCFILLAREASTYLE('Crosshatch',(#628,#630)); +#633= IFCPRESENTATIONSTYLEASSIGNMENT((#624,#631)); +#635= IFCSTYLEDITEM($,(#633),$); +#637= IFCSTYLEDREPRESENTATION(#68,'Style','Material and Cut Pattern',(#635)); +#639= IFCMATERIALDEFINITIONREPRESENTATION($,$,(#637),#621); +#642= IFCMATERIALLAYER(#621,80.,$); +#643= IFCMATERIAL('Concrete Masonry, Floor Block'); +#644= IFCCOLOURRGB($,0.709803921568627,0.709803921568627,0.709803921568627); +#645= IFCSURFACESTYLERENDERING(#644,0.,$,$,$,$,IFCNORMALISEDRATIOMEASURE(0.5),IFCSPECULAREXPONENT(128.),.NOTDEFINED.); +#646= IFCSURFACESTYLE('Concrete Masonry, Floor Block',.BOTH.,(#645)); +#648= IFCCOLOURRGB($,0.,0.,0.); +#649= IFCCURVESTYLE($,#223,$,#648); +#650= IFCFILLAREASTYLEHATCHING(#649,IFCPOSITIVELENGTHMEASURE(149.999992057106),$,#9,45.); +#651= IFCFILLAREASTYLE('Diagonal up 1.5mm',(#650)); +#653= IFCPRESENTATIONSTYLEASSIGNMENT((#646,#651)); +#655= IFCSTYLEDITEM($,(#653),$); +#657= IFCSTYLEDREPRESENTATION(#68,'Style','Material and Cut Pattern',(#655)); +#659= IFCMATERIALDEFINITIONREPRESENTATION($,$,(#657),#643); +#662= IFCMATERIALLAYER(#643,100.,$); +#663= IFCMATERIAL('Concrete, Precast'); +#664= IFCCOLOURRGB($,0.,0.,0.); +#665= IFCCURVESTYLEFONTPATTERN(76.2,838.2); +#666= IFCCURVESTYLEFONT('Concrete:1',(#665)); +#668= IFCCURVESTYLE('Concrete:1',#666,$,#664); +#669= IFCCARTESIANPOINT((269.702496520064,321.418919159413)); +#671= IFCFILLAREASTYLEHATCHING(#668,IFCPOSITIVELENGTHMEASURE(599.226132),$,#669,230.); +#672= IFCCURVESTYLEFONTPATTERN(60.96,670.56); +#673= IFCCURVESTYLEFONT('Concrete:2',(#672)); +#675= IFCCURVESTYLE('Concrete:2',#673,$,#664); +#676= IFCCARTESIANPOINT((-206.253843026946,18.0448730735145)); +#678= IFCFILLAREASTYLEHATCHING(#675,IFCPOSITIVELENGTHMEASURE(749.032538),$,#676,355.); +#679= IFCCURVESTYLEFONTPATTERN(64.7600432,712.360272); +#680= IFCCURVESTYLEFONT('Concrete:3',(#679)); +#682= IFCCURVESTYLE('Concrete:3',#680,$,#664); +#683= IFCCARTESIANPOINT((-44.888915909931,567.255017497859)); +#685= IFCFILLAREASTYLEHATCHING(#682,IFCPOSITIVELENGTHMEASURE(705.080378),$,#683,280.4514); +#686= IFCCURVESTYLEFONTPATTERN(114.3,1257.3); +#687= IFCCURVESTYLEFONT('Concrete:4',(#686)); +#689= IFCCURVESTYLE('Concrete:4',#687,$,#664); +#690= IFCCARTESIANPOINT((435.742098974862,657.336905769826)); +#692= IFCFILLAREASTYLEHATCHING(#689,IFCPOSITIVELENGTHMEASURE(898.839198),$,#690,226.1842); +#693= IFCCURVESTYLEFONTPATTERN(97.1400648,1068.540408); +#694= IFCCURVESTYLEFONT('Concrete:5',(#693)); +#696= IFCCURVESTYLE('Concrete:5',#694,$,#664); +#697= IFCCARTESIANPOINT((-10.5586587498264,1056.67704007865)); +#699= IFCFILLAREASTYLEHATCHING(#696,IFCPOSITIVELENGTHMEASURE(1057.62044),$,#697,276.6356); +#700= IFCCURVESTYLEFONTPATTERN(91.44,1005.84); +#701= IFCCURVESTYLEFONT('Concrete:6',(#700)); +#703= IFCCURVESTYLE('Concrete:6',#701,$,#664); +#704= IFCCARTESIANPOINT((777.423344307836,82.628976622327)); +#706= IFCFILLAREASTYLEHATCHING(#703,IFCPOSITIVELENGTHMEASURE(1123.548934),$,#704,351.1842); +#707= IFCCURVESTYLEFONTPATTERN(76.2,838.2); +#708= IFCCURVESTYLEFONT('Concrete:7',(#707)); +#710= IFCCURVESTYLE('Concrete:7',#708,$,#664); +#711= IFCCARTESIANPOINT((493.314102658805,302.764956026886)); +#713= IFCFILLAREASTYLEHATCHING(#710,IFCPOSITIVELENGTHMEASURE(599.226132),$,#711,201.); +#714= IFCCURVESTYLEFONTPATTERN(60.96,670.56); +#715= IFCCURVESTYLEFONT('Concrete:8',(#714)); +#717= IFCCURVESTYLE('Concrete:8',#715,$,#664); +#718= IFCCARTESIANPOINT((-70.0453477224384,268.176248915166)); +#720= IFCFILLAREASTYLEHATCHING(#717,IFCPOSITIVELENGTHMEASURE(749.032538),$,#718,326.); +#721= IFCCURVESTYLEFONTPATTERN(64.7600432,712.360272); +#722= IFCCURVESTYLEFONT('Concrete:9',(#721)); +#724= IFCCURVESTYLE('Concrete:9',#722,$,#664); +#725= IFCCARTESIANPOINT((337.349933176118,670.294961900504)); +#727= IFCFILLAREASTYLEHATCHING(#724,IFCPOSITIVELENGTHMEASURE(705.080378),$,#725,251.4514); +#728= IFCCURVESTYLEFONTPATTERN(33.528,628.904); +#729= IFCCURVESTYLEFONTPATTERN(33.528,647.192); +#730= IFCCURVESTYLEFONTPATTERN(33.528,639.572); +#731= IFCCURVESTYLEFONT('Concrete:10',(#728,#729,#730)); +#733= IFCCURVESTYLE('Concrete:10',#731,$,#664); +#734= IFCCARTESIANPOINT((171.123776770131,131.307892200608)); +#736= IFCFILLAREASTYLEHATCHING(#733,IFCPOSITIVELENGTHMEASURE(260.8072),$,#734,37.5); +#737= IFCCURVESTYLEFONTPATTERN(33.528,354.584); +#738= IFCCURVESTYLEFONTPATTERN(33.528,613.664); +#739= IFCCURVESTYLEFONTPATTERN(33.528,223.012); +#740= IFCCURVESTYLEFONT('Concrete:11',(#737,#738,#739)); +#742= IFCCURVESTYLE('Concrete:11',#740,$,#664); +#743= IFCCARTESIANPOINT((314.582281890354,41.4155431076072)); +#745= IFCFILLAREASTYLEHATCHING(#742,IFCPOSITIVELENGTHMEASURE(362.4072),$,#743,7.5); +#746= IFCCURVESTYLEFONTPATTERN(33.528,220.472); +#747= IFCCURVESTYLEFONTPATTERN(33.528,758.952); +#748= IFCCURVESTYLEFONTPATTERN(33.528,1018.032); +#749= IFCCURVESTYLEFONT('Concrete:12',(#746,#747,#748)); +#751= IFCCURVESTYLE('Concrete:12',#749,$,#664); +#752= IFCCARTESIANPOINT((169.604538674044,-252.389742537839)); +#754= IFCFILLAREASTYLEHATCHING(#751,IFCPOSITIVELENGTHMEASURE(272.0848),$,#752,-32.5); +#755= IFCCURVESTYLEFONTPATTERN(33.528,296.672); +#756= IFCCURVESTYLEFONTPATTERN(33.528,492.76); +#757= IFCCURVESTYLEFONTPATTERN(33.528,713.232); +#758= IFCCURVESTYLEFONT('Concrete:13',(#755,#756,#757)); +#760= IFCCURVESTYLE('Concrete:13',#758,$,#664); +#761= IFCCARTESIANPOINT((-56.748608656703,-248.710049520697)); +#763= IFCFILLAREASTYLEHATCHING(#760,IFCPOSITIVELENGTHMEASURE(475.2848),$,#761,-42.5); +#764= IFCFILLAREASTYLE('Concrete',(#671,#678,#685,#692,#699,#706,#713,#720,#727,#736,#745,#754,#763)); +#766= IFCPRESENTATIONSTYLEASSIGNMENT((#546,#764)); +#768= IFCSTYLEDITEM($,(#766),$); +#770= IFCSTYLEDREPRESENTATION(#68,'Style','Material and Cut Pattern',(#768)); +#772= IFCMATERIALDEFINITIONREPRESENTATION($,$,(#770),#663); +#775= IFCMATERIALLAYER(#663,75.,$); +#776= IFCMATERIALLAYERSET((#620,#642,#662,#775),'Floor:Beam and Block 225mm Susp Ground'); +#782= IFCMATERIALLAYERSETUSAGE(#776,.AXIS3.,.POSITIVE.,0.); +#783= IFCPROPERTYSINGLEVALUE('Reference',$,IFCIDENTIFIER('Beam and Block 225mm Susp Ground'),$); +#784= IFCPROPERTYSINGLEVALUE('IsExternal',$,IFCBOOLEAN(.F.),$); +#785= IFCPROPERTYSINGLEVALUE('LoadBearing',$,IFCBOOLEAN(.T.),$); +#786= IFCPROPERTYSINGLEVALUE('ThermalTransmittance',$,IFCTHERMALTRANSMITTANCEMEASURE(0.397589052997394),$); +#787= IFCPROPERTYSINGLEVALUE('PitchAngle',$,IFCPLANEANGLEMEASURE(0.),$); +#788= IFCPROPERTYSET('3PB9xD$H12d9JE$n$254Zs',#41,'Pset_SlabCommon',$,(#783,#784,#785,#786,#787)); +#790= IFCRELDEFINESBYPROPERTIES('3ip4kqvIz7r9p4WVkXn0u8',#41,$,$,(#557),#788); +#793= IFCCARTESIANPOINT((-7209.44133911133,4741.33908233643,0.)); +#795= IFCCARTESIANPOINT((-7209.44133911133,-2558.66097335815,0.)); +#797= IFCCARTESIANPOINT((5090.55846405029,4741.33908233643,0.)); +#799= IFCPOLYLOOP((#793,#795,#797)); +#801= IFCFACEOUTERBOUND(#799,.T.); +#802= IFCFACE((#801)); +#804= IFCCARTESIANPOINT((5090.55846405029,-2558.66097335815,0.)); +#806= IFCPOLYLOOP((#804,#797,#795)); +#808= IFCFACEOUTERBOUND(#806,.T.); +#809= IFCFACE((#808)); +#811= IFCCARTESIANPOINT((-7209.44133911133,4741.33908233643)); +#813= IFCCARTESIANPOINT((-7209.44133911133,-2558.66097335815)); +#815= IFCCARTESIANPOINT((5090.55846405029,-2558.66097335815)); +#817= IFCCARTESIANPOINT((5090.55846405029,4741.33908233643)); +#819= IFCCARTESIANPOINT((-7209.44133911133,4741.33908233643)); +#821= IFCPOLYLINE((#811,#813,#815,#817,#819,#811)); +#823= IFCCONNECTEDFACESET((#802,#809)); +#825= IFCFACEBASEDSURFACEMODEL((#823)); +#827= IFCCOLOURRGB($,0.380392156862745,0.294117647058824,0.243137254901961); +#828= IFCSURFACESTYLERENDERING(#827,0.,$,$,$,$,IFCNORMALISEDRATIOMEASURE(0.5),IFCSPECULAREXPONENT(128.),.NOTDEFINED.); +#829= IFCSURFACESTYLE('Earth',.BOTH.,(#828)); +#831= IFCPRESENTATIONSTYLEASSIGNMENT((#829)); +#833= IFCSTYLEDITEM(#825,(#831),$); +#836= IFCSHAPEREPRESENTATION(#73,'Facetation','SurfaceModel',(#825)); +#838= IFCPRODUCTDEFINITIONSHAPE($,$,(#836)); +#840= IFCAXIS2PLACEMENT3D(#6,$,$); +#841= IFCLOCALPLACEMENT($,#840); +#842= IFCSITE('30RupwYV17Mv89n2gSS8AI',#41,'Surface:219900',$,'',#841,#838,$,.ELEMENT.,(51,30,0,549316),(0,-7,-34,-450321),0.,$,$); +#847= IFCPROPERTYSINGLEVALUE('Projected Area',$,IFCAREAMEASURE(89.7899992481232),$); +#848= IFCPROPERTYSINGLEVALUE('Surface Area',$,IFCAREAMEASURE(89.7899992481232),$); +#849= IFCPROPERTYSET('0NtWn$cLTAVOsAIUp74UB0',#41,'Phasing',$,(#163)); +#851= IFCRELDEFINESBYPROPERTIES('2KwnP$VZLA7fM0QX8U8Cnr',#41,$,$,(#842),#849); +#855= IFCPROPERTYSET('0_t$_jBaX8qwIIqNXgahgN',#41,'Dimensions',$,(#847,#848)); +#857= IFCRELDEFINESBYPROPERTIES('0RgllsA2P47OuoBRH6cgDb',#41,$,$,(#842),#855); +#861= IFCPROPERTYSINGLEVALUE('AboveGround',$,IFCLOGICAL(.U.),$); +#862= IFCPROPERTYSET('0BPGgf2wL4phOZbdQeT0wA',#41,'Pset_BuildingStoreyCommon',$,(#861)); +#864= IFCRELDEFINESBYPROPERTIES('1hJn7fYlT3RwcklyhHnDIu',#41,$,$,(#98),#862); +#868= IFCPROPERTYSINGLEVALUE('Computation Height',$,IFCLENGTHMEASURE(0.),$); +#869= IFCPROPERTYSINGLEVALUE('Building Story',$,IFCBOOLEAN(.T.),$); +#870= IFCPROPERTYSINGLEVALUE('Name',$,IFCTEXT('Level 0'),$); +#871= IFCPROPERTYSINGLEVALUE('Elevation',$,IFCLENGTHMEASURE(0.),$); +#872= IFCPROPERTYSINGLEVALUE('Symbol at End 2 Default',$,IFCBOOLEAN(.F.),$); +#873= IFCPROPERTYSINGLEVALUE('Color',$,IFCINTEGER(0),$); +#874= IFCPROPERTYSINGLEVALUE('Elevation Base',$,IFCIDENTIFIER('Project Base Point'),$); +#875= IFCPROPERTYSINGLEVALUE('Line Pattern',$,IFCLABEL('Centre'),$); +#876= IFCPROPERTYSINGLEVALUE('Line Weight',$,IFCIDENTIFIER('1'),$); +#877= IFCPROPERTYSINGLEVALUE('Symbol',$,IFCLABEL('Level Head - Circle: Level Head - Circle'),$); +#878= IFCPROPERTYSINGLEVALUE('Symbol at End 1 Default',$,IFCBOOLEAN(.T.),$); +#879= IFCPROPERTYSET('0okMIIsmjBhfYRBv8CY02F',#41,'Dimensions',$,(#868)); +#881= IFCRELDEFINESBYPROPERTIES('0x$WaWq2vCEwl8n3SkIVni',#41,$,$,(#98),#879); +#884= IFCPROPERTYSET('0gR7qnciT69QamD_nGPP9J',#41,'Identity Data',$,(#869,#870,#158)); +#886= IFCRELDEFINESBYPROPERTIES('1WEUtNqtr0nhT_LbNmu7Ql',#41,$,$,(#98),#884); +#889= IFCPROPERTYSET('0QGwfN6oXCCOl8VeFqLax5',#41,'Constraints',$,(#871)); +#891= IFCRELDEFINESBYPROPERTIES('3mDj4b4yH5Cu2Hcs6_1H97',#41,$,$,(#98),#889); +#894= IFCPROPERTYSET('387XW2U3jCTuQgKtf$KhK0',#41,'Graphics',$,(#872,#873,#875,#876,#877,#878)); +#896= IFCPROPERTYSET('0BAvOHc$jAkfiSckl7q1om',#41,'Constraints',$,(#874)); +#906= IFCRELAGGREGATES('291kBmqCf0pRfIsLEwXuM5',#41,$,$,#79,(#842)); +#910= IFCRELAGGREGATES('1BVAPxO5r7N9sfTOvhrmn6',#41,$,$,#842,(#89)); +#914= IFCRELAGGREGATES('2$1LAsj$T3CPRLiPj39tWH',#41,$,$,#89,(#98)); +#918= IFCPROPERTYSINGLEVALUE('NumberOfStoreys',$,IFCINTEGER(1),$); +#919= IFCPROPERTYSET('3THi4JcXP8KxK23jCWLtCi',#41,'Pset_BuildingCommon',$,(#918)); +#921= IFCRELDEFINESBYPROPERTIES('2oN2azh8HADfA$xkdBLtfw',#41,$,$,(#89),#919); +#925= IFCPROPERTYSINGLEVALUE('Author',$,IFCTEXT(''),$); +#926= IFCPROPERTYSINGLEVALUE('Organization Name',$,IFCTEXT(''),$); +#927= IFCPROPERTYSINGLEVALUE('Project Status',$,IFCTEXT('Project Status'),$); +#928= IFCPROPERTYSINGLEVALUE('Client Name',$,IFCTEXT('Owner'),$); +#929= IFCPROPERTYSINGLEVALUE('Organization Description',$,IFCTEXT(''),$); +#930= IFCPROPERTYSINGLEVALUE('Project Issue Date',$,IFCTEXT('Issue Date'),$); +#931= IFCPROPERTYSINGLEVALUE('Project Number',$,IFCTEXT('Project Number'),$); +#932= IFCPROPERTYSINGLEVALUE('Project Address',$,IFCTEXT('Enter address here'),$); +#933= IFCPROPERTYSINGLEVALUE('Building Name',$,IFCTEXT(''),$); +#934= IFCPROPERTYSINGLEVALUE('Project Name',$,IFCTEXT('Project Name'),$); +#935= IFCPROPERTYSET('2z5BJl9rDBIOhdyKySLxxg',#41,'Identity Data',$,(#925,#926,#929,#933)); +#937= IFCRELDEFINESBYPROPERTIES('3xSjlZ7lH8yPYMuTUf4M8z',#41,$,$,(#89),#935); +#940= IFCPROPERTYSET('3waHFIHb19Yukl1RasiW6S',#41,'Other',$,(#927,#928,#930,#931,#932,#934)); +#942= IFCRELDEFINESBYPROPERTIES('1QPK3_XuT1g9ogffnpMhpN',#41,$,$,(#89),#940); +#945= IFCRELASSOCIATESMATERIAL('28jHN69FHAqeeFFvFP1Cgn',#41,$,$,(#142),#341); +#948= IFCRELASSOCIATESMATERIAL('3eHI5sDgH53hIwNexJ_a_S',#41,$,$,(#342),#335); +#951= IFCRELASSOCIATESMATERIAL('1k4Jhua0fCgAyV5PRAChSs',#41,$,$,(#383),#411); +#954= IFCRELASSOCIATESMATERIAL('157wVVfKD6QhZQyV3bkSbI',#41,$,$,(#441),#469); +#957= IFCRELASSOCIATESMATERIAL('3Cj6ckhUj3nP8rb3wgnx7U',#41,$,$,(#499),#527); +#960= IFCRELASSOCIATESMATERIAL('23OnsMCh990RZs3u2mIrWk',#41,$,$,(#557),#782); +#963= IFCRELDEFINESBYTYPE('0cwRWA0Jb2iBLR71f4hCfZ',#41,$,$,(#142,#383,#441,#499),#342); +#966= IFCRELDEFINESBYPROPERTIES('0CTdh97sf0JBpqGzJkW$PF',#41,$,$,(#383,#441,#499),#209); +#969= IFCRELDEFINESBYPROPERTIES('2A$42nqizCNushPJvuofT_',#41,$,$,(#383,#441,#499),#211); +#972= IFCRELDEFINESBYPROPERTIES('0G_wi2M258SwS58QgOUS9x',#41,$,$,(#383,#441,#499),#213); +#975= IFCRELDEFINESBYPROPERTIES('2DlH8jhbTFDQybOeMLsCmJ',#41,$,$,(#383,#441,#499),#215); +#978= IFCRELDEFINESBYPROPERTIES('0UFT3AUoX6ewH44N5Bkio_',#41,$,$,(#383,#441,#499),#217); +#981= IFCRELDEFINESBYPROPERTIES('1oOmHDz_H9tgmuJ7GjiQS6',#41,$,$,(#557),#596); +#984= IFCRELDEFINESBYPROPERTIES('0hjDTL04r2nftq$RBZ02Vl',#41,$,$,(#557),#598); +#987= IFCRELDEFINESBYPROPERTIES('1BENPRxsH1PB$c2EwiTDl9',#41,$,$,(#557),#600); +#990= IFCRELDEFINESBYPROPERTIES('1ia7OWDFr8lPa6pN$2culC',#41,$,$,(#557),#602); +#993= IFCRELDEFINESBYPROPERTIES('28kHzjUzvF9Bpvw2P_XVS3',#41,$,$,(#557),#604); +#996= IFCRELDEFINESBYPROPERTIES('1uVHnitwrDL8DLvYSmK4cF',#41,$,$,(#98),#894); +#999= IFCRELDEFINESBYPROPERTIES('37t3AEdGnFqwgQgHdVMs7y',#41,$,$,(#98),#896); +#1002= IFCRELCONNECTSPATHELEMENTS('1iOLfkDWP409ERWopgVECe',#41,$,$,$,#142,#499,(),(),.ATEND.,.ATSTART.); +#1007= IFCRELCONNECTSPATHELEMENTS('0Ij$8qQqP0Pggig4GVMB6N',#41,$,$,$,#142,#383,(),(),.ATSTART.,.ATEND.); +#1011= IFCRELCONNECTSPATHELEMENTS('2d2d9mkOv7sAgD9ZPddFVr',#41,$,$,$,#383,#441,(),(),.ATSTART.,.ATEND.); +#1020= IFCPRESENTATIONLAYERASSIGNMENT('A-200-M_WALL_EXT',$,(#117,#135,#368,#379,#426,#437,#484,#495),$); +#1022= IFCPRESENTATIONLAYERASSIGNMENT('A-230-M_FLOOR',$,(#553),$); +#1024= IFCPRESENTATIONLAYERASSIGNMENT('C-920-M_TOPO',$,(#836),$); +ENDSEC; + +END-ISO-10303-21; diff --git a/Xbim.Essentials.Tests/TestSourceFiles/4walls1floorSite.ifcxml b/Xbim.Essentials.Tests/TestSourceFiles/4walls1floorSite.ifcxml new file mode 100644 index 000000000..4ea06749e --- /dev/null +++ b/Xbim.Essentials.Tests/TestSourceFiles/4walls1floorSite.ifcxml @@ -0,0 +1,4718 @@ + + + + Project Number + 2013-12-02T13:34:01 + + + The EXPRESS Data Manager Version 5.01.0100.02.64mod : 6 Jun 2012 + 20130722_2115(x64) - Exporter 2014.0.2013.0722 - Default UI + + ViewDefinition [CoordinationView] + + + + Autodesk Revit 2014 (ENU) + + + + + + 2014 + Autodesk Revit 2014 (ENU) + Revit + + + + 0. + 0. + 0. + + + + + 0. + 0. + + + + + 1. + 0. + 0. + + + + + -1. + 0. + 0. + + + + + 0. + 1. + 0. + + + + + 0. + -1. + 0. + + + + + 0. + 0. + 1. + + + + + 0. + 0. + -1. + + + + + 1. + 0. + + + + + -1. + 0. + + + + + 0. + 1. + + + + + 0. + -1. + + + + + + + + + + + + + + + + + + + + + + + + + Funtik + Tomas + + + + + + + + + + + + + + + + + + + + + nochange + 1384180926 + + + lengthunit + milli + metre + + + lengthunit + metre + + + areaunit + square_metre + + + volumeunit + cubic_metre + + + planeangleunit + radian + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0.0174532925199433 + + + + + + + + + + planeangleunit + DEGREE + + + + + + massunit + kilo + gram + + + timeunit + second + + + thermodynamictemperatureunit + kelvin + + + + + + 1 + + + + + + -1 + + + + + + -3 + + + + + + + + thermaltransmittanceunit + + + + + + 3 + + + + + + -1 + + + + + + + volumetricflowrateunit + + + powerunit + watt + + + + + + + + + + + + + + + + + + + + + + + 2. + 6.12303176911189E-17 + 1. + + + + Model + 3 + 1.E-05 + + + + + + + + + Axis + Model + + + + graph_view + + + Body + Model + + + + model_view + + + Box + Model + + + + model_view + + + FootPrint + Model + + + + model_view + + + Annotation + 3 + 1.E-05 + + + + + + + + + Annotation + + + + 0.01 + plan_view + + + 1nxaHAOIr7bx3dQk8YkUvC + + + + Project Number + Project Name + Project Status + + + + + + + + + + + Enter address here + + Westminster + London + + UK + + + 1nxaHAOIr7bx3dQk8YkUvD + + + + + + + + + element + + + + + + + + + + + + + + + + + + + 1nxaHAOIr7bx3dQkBTHX2B + + + + Level 0 + + + + Level 0 + element + 0. + + + + 0. + 0. + 3000. + + + + + + + + + + -6059.44147701315 + 3741.33908077953 + 0. + + + + + + + + + + + + + + + + + + + + + + + + 5300. + 0. + + + + + + + + + + + + + Axis + Curve2D + + + + + + + 2650. + 2.27373675443232E-13 + + + + + + + + + + + + area + + + + 5300. + 299.999999999999 + + + + + + + + + + + + + + + + + 3000. + + + 0.666666666666667 + 0.392156862745098 + 0.411764705882353 + + + + + + 0. + + 0.5 + + + 128. + + notdefined + + + Brick, Common + both + + + + + + + + + + + + + + + + + + + + + + Body + SweptSolid + + + + + + + + + + + + 3PB9xD$H12d9JE$nx254cN + + + + Basic Wall:Cav - 102 75i 100 p - Lwt:217140 + Basic Wall:Cav - 102 75i 100 p - Lwt:45419 + + + + + + + 217140 + + + Base is Attached + + false + + + + Related to Mass + + false + + + + Enable Analytical Model + + false + + + + Base Constraint + + Level: Level 0 + + + + Top is Attached + + false + + + + Base Extension Distance + + 0. + + + + Area + + 15.9 + + + + Structural + + false + + + + Base Offset + + 0. + + + + Top Offset + + 0. + + + + Top Extension Distance + + 0. + + + + Volume + + 4.77 + + + + Phase Created + + New Construction + + + + Length + + 5000. + + + + Location Line + + Wall Centerline + + + + Unconnected Height + + 3000. + + + + Top Constraint + + Level: Level 1 + + + + Room Bounding + + true + + + + Structural Usage + + Non-bearing + + + + Wrapping at Inserts + + Both + + + + Structural Material + + Concrete Masonry Units + + + + Assembly Description + + + + + + Coarse Scale Fill Pattern + + Solid fill + + + + Function + + Exterior + + + + Wrapping at Ends + + None + + + + Absorptance + + 0.7 + + + + Coarse Scale Fill Color + + 12632256 + + + + Roughness + + 3 + + + + Assembly Code + + + + + + Keynote + + F10 + + + + Heat Transfer Coefficient (U) + + 0.235791810928132 + + + + Thermal mass + + 313533. + + + + Width + + 300. + + + + Thermal Resistance (R) + + 4.2410293897136 + + + + 3Uz1zEFsr6Hvt9ktniDgTC + + + + Constraints + + + + + + + + + + + + + + + + + 3ONEd6zc5CrfM8khwzVpgT + + + + + + + + + + + + 1eE$d0HyLDNQxBV4cMuDUV + + + + Structural + + + + + + + + 3T9$FJcj19ExQOEojBtnsV + + + + + + + + + + + + 2aeyL7Ih1DaPRGah5Ytpyt + + + + Dimensions + + + + + + + + 3J1p_3S8n9hB0pnBy0lGnu + + + + + + + + + + + + 3qTy15CFD9QfWaIJUfTF7H + + + + Phasing + + + + + + 1oieg26dD4oeCk_0HJeDTt + + + + + + + + + + + + 16o$kZWGXAneQ0QghrYtxE + + + + Identity Data + + + + + + + + 0I0CaeBI14oAiERUyAcmT8 + + + + Construction + + + + + + + + + 0q_Jfo$PX2fwQRTr0REiPg + + + + Materials and Finishes + + + + + + 2M$bJ0KbfETfzPfFWNAJmv + + + + Graphics + + + + + + + 2jY4_1OIbARPJG5l_t6U$P + + + + Analytical Properties + + + + + + + + + + Brick, Common + + + 0. + 0. + 0. + + + continuous + + + + + + + + + + + + + + + 355.6 + + + + + 45. + + + + + + + + + + + + 0. + 381. + + + + + + + + 355.6 + + + + + 45. + + + Brickwork + + + + + + + + + + + + + + + + + + + + + Style + Material and Cut Pattern + + + + + + + + + + + + + + + + + 102.5 + + + Fiberglass Batt + + + 0.498039215686275 + 0.498039215686275 + 0.498039215686275 + + + + + + 0. + + 0.5 + + + 64. + + notdefined + + + Fiberglass Batt + both + + + + + + + + + + + + + + + + + + + Style + Material + + + + + + + + + + + + + + + + + 75. + + + Concrete Masonry Units + + + 0.709803921568627 + 0.709803921568627 + 0.709803921568627 + + + + + + 0. + + 0.5 + + + 128. + + notdefined + + + Concrete Masonry Units + both + + + + + + 0. + 0. + 0. + + + + + + + + + + + + + + + 300. + + + + + 45. + + + + + + + + + + + + + + + 300. + + + + + 135. + + + Diagonal cross-hatch + + + + + + + + + + + + + + + + + + + + + Style + Material and Cut Pattern + + + + + + + + + + + + + + + + + 110. + + + Gypsum Wall Board + + + 0.976470588235294 + 0.976470588235294 + 0.976470588235294 + + + + + + 0. + + 0.5 + + + 128. + + notdefined + + + Gypsum Wall Board + both + + + + + + 0. + 0. + 0. + + + 33.528 + 576.072 + + + 33.528 + 576.072 + + + 33.528 + 1185.672 + + + 33.528 + 576.072 + + + 33.528 + 372.872 + + + 33.528 + 982.472 + + + Sand:1 + + + + + + + + + + + Sand:1 + + + + + + + + + + 812.8 + 0. + + + + + + + + 203.2 + + + + + 0. + + + 33.528 + 576.072 + + + 33.528 + 576.072 + + + 33.528 + 1185.672 + + + 33.528 + 576.072 + + + 33.528 + 372.872 + + + 33.528 + 982.472 + + + Sand:2 + + + + + + + + + + + Sand:2 + + + + + + + + + + -101.599999999999 + 805.505448195993 + + + + + + + + 203.2 + + + + + 120. + + + 33.528 + 576.072 + + + 33.528 + 576.072 + + + 33.528 + 1185.672 + + + 33.528 + 576.072 + + + 33.528 + 372.872 + + + 33.528 + 982.472 + + + Sand:3 + + + + + + + + + + + Sand:3 + + + + + + + + + + 0. + -195.90544819599 + + + + + + + + 203.2 + + + + + 240. + + + Sand + + + + + + + + + + + + + + + + + + + + + + Style + Material and Cut Pattern + + + + + + + + + + + + + + + + + 12.5 + + + + + + + + + Basic Wall:Cav - 102 75i 100 p - Lwt + + + + + + axis2 + negative + 150. + + + 2ru7YPT4T9MuTpOS4FRzxX + + + + Basic Wall:Cav - 102 75i 100 p - Lwt + + + + + + + + 45419 + standard + + + Reference + + Cav - 102 75i 100 p - Lwt + + + + LoadBearing + + false + + + + ExtendToStructure + + false + + + + IsExternal + + true + + + + ThermalTransmittance + + 0.235791810928132 + + + + 3PB9xD$H12d9JE$n$254cN + + + + Pset_WallCommon + + + + + + + + + + 2g7M$aZ7D4iQriLegDX69F + + + + + + + + + + + + + -5909.44147701315 + -1408.66091922047 + 0. + + + + + + + + + + + + + + + + + + 10000. + 0. + + + + + + + + + + + + + Axis + Curve2D + + + + + + + 5000. + 0. + + + + + + + + + + + + area + + + + 10000. + 300. + + + + + + + + + + + + + + + + + 3000. + + + + + + + + + + + + + + Body + SweptSolid + + + + + + + + + + + + 3PB9xD$H12d9JE$nx254ai + + + + Basic Wall:Cav - 102 75i 100 p - Lwt:217231 + Basic Wall:Cav - 102 75i 100 p - Lwt:45419 + + + + + + + 217231 + + + Volume + + 9. + + + + Unconnected Height + + 3000. + + + + Area + + 30. + + + + Length + + 10000. + + + + 1G$lmjxRb1190W6hj_1bbC + + + + Constraints + + + + + + + + + + + + + + + + + 3vMFmYkhX2gAK07DeI08mI + + + + + + + + + + + + 1OlayUUYnChPIz2fqYypX1 + + + + Structural + + + + + + + + 1dbDFep9L8NOIWzhuvZEOJ + + + + + + + + + + + + 0of8ATPRP1cwN$Msx17DPs + + + + Dimensions + + + + + + + + 3ZWzxAo21EuOTZIzTQBF_8 + + + + + + + + + + + + 3ORQs3jMr1N8YwEXowSblj + + + + Phasing + + + + + + 3lGR3VNCX38Qx3rfi5Ag2E + + + + + + + + + + + + + + + axis2 + negative + 150. + + + ThermalTransmittance + + 0.235791810928132 + + + + 3PB9xD$H12d9JE$n$254ai + + + + Pset_WallCommon + + + + + + + + + + 0TJyExzSzAvf4i5fPnWzjJ + + + + + + + + + + + + + 3940.55852298685 + -1258.6609192205 + 0. + + + + + + + + + + + + + + + + + + + + + + + + 5000. + 0. + + + + + + + + + + + + + Axis + Curve2D + + + + + + + 2500. + 0. + + + + + + + + + + + + area + + + + 5000. + 300. + + + + + + + + + + + + + + + + + 3000. + + + + + + + + + + + + + + Body + SweptSolid + + + + + + + + + + + + 3PB9xD$H12d9JE$nx254aQ + + + + Basic Wall:Cav - 102 75i 100 p - Lwt:217273 + Basic Wall:Cav - 102 75i 100 p - Lwt:45419 + + + + + + + 217273 + + + Area + + 15. + + + + Volume + + 4.5 + + + + Unconnected Height + + 3000. + + + + Length + + 5000. + + + + 3O5PC8XM97XO8cOUSlUgzE + + + + Dimensions + + + + + + + + 2$fHTRwqLCNgTDFg7hgofl + + + + + + + + + + + + 2LglpzAkj0P85nnm3C4lSl + + + + Constraints + + + + + + + + + + + + + + + + + 391CzmgqfF$RC3mRMjRvy0 + + + + + + + + + + + + 33$sWVEdH8cgZ0ksBzqdbD + + + + Structural + + + + + + + + 1krmPGeu19mejjLMoBgY6S + + + + + + + + + + + + 1rMgTukK56MQ9w$5143hrJ + + + + Phasing + + + + + + 2U5Tivk8n10BlJWNEMg5Jb + + + + + + + + + + + + + + + axis2 + negative + 150. + + + ThermalTransmittance + + 0.235791810928132 + + + + 3PB9xD$H12d9JE$n$254aQ + + + + Pset_WallCommon + + + + + + + + + + 20mx0xf8n4DwL9aVVd1FPi + + + + + + + + + + + + + 3790.55852298687 + 3591.3390807795 + 0. + + + + + + + + + + + + + + + + + + + + + + + + 9700. + 0. + + + + + + + + + + + + + Axis + Curve2D + + + + + + + 4850.00000000001 + 5.6843418860808E-14 + + + + + + + + + + + + area + + + + 9700.00000000001 + 300. + + + + + + + + + + + + + + + + + 3000. + + + + + + + + + + + + + + Body + SweptSolid + + + + + + + + + + + + 3PB9xD$H12d9JE$nx254bC + + + + Basic Wall:Cav - 102 75i 100 p - Lwt:217327 + Basic Wall:Cav - 102 75i 100 p - Lwt:45419 + + + + + + + 217327 + + + Length + + 10000. + + + + Area + + 29.1 + + + + Volume + + 8.73000000000001 + + + + Unconnected Height + + 3000. + + + + 3b6so348DDAwq2Gw6_ytPH + + + + Constraints + + + + + + + + + + + + + + + + + 2g9dqXh7L51fezP_dkxWpI + + + + + + + + + + + + 1uxYaOtk1Aygbt5bT27tyl + + + + Structural + + + + + + + + 1ph3LV9bf1sh37ae7kgX$6 + + + + + + + + + + + + 0PoI12wYD0URPo3CtN8rc4 + + + + Dimensions + + + + + + + + 0gGzpKL4PB9OirvIahcPD1 + + + + + + + + + + + + 3O4u7IIirAngcz4XDY1K20 + + + + Phasing + + + + + + 1gPYFf9C98uhRKagJvg5hN + + + + + + + + + + + + + + + axis2 + negative + 150. + + + ThermalTransmittance + + 0.235791810928132 + + + + 3PB9xD$H12d9JE$n$254bC + + + + Pset_WallCommon + + + + + + + + + + 0EDDRSxMr3hfrxbLi3woCg + + + + + + + + + + + + + + + + + + + + + + + + + + 0. + 2.27373675443232E-12 + + + + + + + + + + + + area + Beam and Block 225mm Susp Ground + + + + 5055. + 10055. + + + + -1059.44147701315 + 1091.33908077951 + 0. + + + + + + + + + + + + + + + + + + + + + + + + 320. + + + 0.752941176470588 + 0.752941176470588 + 0.752941176470588 + + + + + + 0. + + 0.5 + + + 128. + + notdefined + + + Concrete, Precast + both + + + + + + + + + + + + + + + + + + + + + + Body + SweptSolid + + + + + + + + + + + 3PB9xD$H12d9JE$nx254Zs + + + + Floor:Beam and Block 225mm Susp Ground:217429 + Floor:Beam and Block 225mm Susp Ground + + + + + + + 217429 + floor + + + Volume + + 16.264968 + + + + Perimeter + + 30220. + + + + Level + + Level: Level 0 + + + + Area + + 50.828025 + + + + Height Offset From Level + + 0. + + + + Thickness + + 320. + + + + Function + + Interior + + + + Structural Material + + Concrete Masonry, Floor Block + + + + Absorptance + + 0.7 + + + + Keynote + + E60/130 + + + + Heat Transfer Coefficient (U) + + 0.397589052997394 + + + + Coarse Scale Fill Color + + 0 + + + + Thermal mass + + 365368.8 + + + + Default Thickness + + 320. + + + + Thermal Resistance (R) + + 2.51515979240645 + + + + 3Tx21Nxvr7_un2Gm558sFh + + + + Phasing + + + + + + 2WZjK6B8r7Mfsf95TLi2nI + + + + + + + + + + + + 2GYQ3WqAX1mAMrB$QXs05K + + + + Dimensions + + + + + + + + + 0hio_UFvTCJesrZyTiPffd + + + + + + + + + + + + 1w$P_vFOr90xCA$vQRnZ5W + + + + Constraints + + + + + + + + + 1EJzlMJRr4uxZV7Fqr9oxc + + + + + + + + + + + + 2WX$8Cng18mRBzUbjVaXky + + + + Structural + + + + + + + 3gyffByHP7GO7ZX7$jvpet + + + + + + + + + + + + 3gBBJY_RD5NfT6tovDp6Kg + + + + Identity Data + + + + + + + + 2Saha87uD9RQKQBAI9BTTc + + + + Construction + + + + + + + 24MjY8m$X1fOQfao6MzC7m + + + + Analytical Properties + + + + + + + + + + 2ap11gYT961ADJA8JFGOQ4 + + + + Materials and Finishes + + + + + + 2cQCHfK4DF1ggU55vNvitL + + + + Graphics + + + + + + + Concrete, Sand/Cement Screed + + + 0.498039215686275 + 0.498039215686275 + 0.498039215686275 + + + + + + 0. + + 0.5 + + + 0. + + notdefined + + + Concrete, Sand/Cement Screed + both + + + + + + + + + + + + + + + + + + + + Style + Material and Cut Pattern + + + + + + + + + + + + + + + + + 65. + + + Rigid insulation + + + 0.498039215686275 + 0.498039215686275 + 0.498039215686275 + + + + + + 0. + + 0.5 + + + 64. + + notdefined + + + Rigid insulation + both + + + + + + 0. + 0. + 0. + + + + + + + + + + + + + + + 300. + + + + + 0. + + + + + + + + + + + + + + + 300. + + + + + 90. + + + Crosshatch + + + + + + + + + + + + + + + + + + + + + Style + Material and Cut Pattern + + + + + + + + + + + + + + + + + 80. + + + Concrete Masonry, Floor Block + + + 0.709803921568627 + 0.709803921568627 + 0.709803921568627 + + + + + + 0. + + 0.5 + + + 128. + + notdefined + + + Concrete Masonry, Floor Block + both + + + + + + 0. + 0. + 0. + + + + + + + + + + + + + + + 149.999992057106 + + + + + 45. + + + Diagonal up 1.5mm + + + + + + + + + + + + + + + + + + + + Style + Material and Cut Pattern + + + + + + + + + + + + + + + + + 100. + + + Concrete, Precast + + + 0. + 0. + 0. + + + 76.2 + 838.2 + + + Concrete:1 + + + + + + Concrete:1 + + + + + + + + + + 269.702496520064 + 321.418919159413 + + + + + + + + 599.226132 + + + + + 230. + + + 60.96 + 670.56 + + + Concrete:2 + + + + + + Concrete:2 + + + + + + + + + + -206.253843026946 + 18.0448730735145 + + + + + + + + 749.032538 + + + + + 355. + + + 64.7600432 + 712.360272 + + + Concrete:3 + + + + + + Concrete:3 + + + + + + + + + + -44.888915909931 + 567.255017497859 + + + + + + + + 705.080378 + + + + + 280.4514 + + + 114.3 + 1257.3 + + + Concrete:4 + + + + + + Concrete:4 + + + + + + + + + + 435.742098974862 + 657.336905769826 + + + + + + + + 898.839198 + + + + + 226.1842 + + + 97.1400648 + 1068.540408 + + + Concrete:5 + + + + + + Concrete:5 + + + + + + + + + + -10.5586587498264 + 1056.67704007865 + + + + + + + + 1057.62044 + + + + + 276.6356 + + + 91.44 + 1005.84 + + + Concrete:6 + + + + + + Concrete:6 + + + + + + + + + + 777.423344307836 + 82.628976622327 + + + + + + + + 1123.548934 + + + + + 351.1842 + + + 76.2 + 838.2 + + + Concrete:7 + + + + + + Concrete:7 + + + + + + + + + + 493.314102658805 + 302.764956026886 + + + + + + + + 599.226132 + + + + + 201. + + + 60.96 + 670.56 + + + Concrete:8 + + + + + + Concrete:8 + + + + + + + + + + -70.0453477224384 + 268.176248915166 + + + + + + + + 749.032538 + + + + + 326. + + + 64.7600432 + 712.360272 + + + Concrete:9 + + + + + + Concrete:9 + + + + + + + + + + 337.349933176118 + 670.294961900504 + + + + + + + + 705.080378 + + + + + 251.4514 + + + 33.528 + 628.904 + + + 33.528 + 647.192 + + + 33.528 + 639.572 + + + Concrete:10 + + + + + + + + Concrete:10 + + + + + + + + + + 171.123776770131 + 131.307892200608 + + + + + + + + 260.8072 + + + + + 37.5 + + + 33.528 + 354.584 + + + 33.528 + 613.664 + + + 33.528 + 223.012 + + + Concrete:11 + + + + + + + + Concrete:11 + + + + + + + + + + 314.582281890354 + 41.4155431076072 + + + + + + + + 362.4072 + + + + + 7.5 + + + 33.528 + 220.472 + + + 33.528 + 758.952 + + + 33.528 + 1018.032 + + + Concrete:12 + + + + + + + + Concrete:12 + + + + + + + + + + 169.604538674044 + -252.389742537839 + + + + + + + + 272.0848 + + + + + -32.5 + + + 33.528 + 296.672 + + + 33.528 + 492.76 + + + 33.528 + 713.232 + + + Concrete:13 + + + + + + + + Concrete:13 + + + + + + + + + + -56.748608656703 + -248.710049520697 + + + + + + + + 475.2848 + + + + + -42.5 + + + Concrete + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Style + Material and Cut Pattern + + + + + + + + + + + + + + + + + 75. + + + + + + + + + Floor:Beam and Block 225mm Susp Ground + + + + + + axis3 + positive + 0. + + + Reference + + Beam and Block 225mm Susp Ground + + + + IsExternal + + false + + + + LoadBearing + + true + + + + ThermalTransmittance + + 0.397589052997394 + + + + PitchAngle + + 0. + + + + 3PB9xD$H12d9JE$n$254Zs + + + + Pset_SlabCommon + + + + + + + + + + 3ip4kqvIz7r9p4WVkXn0u8 + + + + + + + + + + + + + -7209.44133911133 + 4741.33908233643 + 0. + + + + + -7209.44133911133 + -2558.66097335815 + 0. + + + + + 5090.55846405029 + 4741.33908233643 + 0. + + + + + + + + + + + + + + true + + + + + + + + + 5090.55846405029 + -2558.66097335815 + 0. + + + + + + + + + + + + + + true + + + + + + + + + -7209.44133911133 + 4741.33908233643 + + + + + -7209.44133911133 + -2558.66097335815 + + + + + 5090.55846405029 + -2558.66097335815 + + + + + 5090.55846405029 + 4741.33908233643 + + + + + -7209.44133911133 + 4741.33908233643 + + + + + + + + + + + + + + + + + + + + + + + + + 0.380392156862745 + 0.294117647058824 + 0.243137254901961 + + + + + + 0. + + 0.5 + + + 128. + + notdefined + + + Earth + both + + + + + + + + + + + + + + + + + + + + + + Facetation + SurfaceModel + + + + + + + + + + + 30RupwYV17Mv89n2gSS8AI + + + + Surface:219900 + + + + + + + + element + + 51 + 30 + 0 + 549316 + + + 0 + -7 + -34 + -450321 + + 0. + + + Projected Area + + 89.7899992481232 + + + + Surface Area + + 89.7899992481232 + + + + 0NtWn$cLTAVOsAIUp74UB0 + + + + Phasing + + + + + + 2KwnP$VZLA7fM0QX8U8Cnr + + + + + + + + + + + + 0_t$_jBaX8qwIIqNXgahgN + + + + Dimensions + + + + + + + 0RgllsA2P47OuoBRH6cgDb + + + + + + + + + + + + AboveGround + + unknown + + + + 0BPGgf2wL4phOZbdQeT0wA + + + + Pset_BuildingStoreyCommon + + + + + + 1hJn7fYlT3RwcklyhHnDIu + + + + + + + + + + + + Computation Height + + 0. + + + + Building Story + + true + + + + Name + + Level 0 + + + + Elevation + + 0. + + + + Symbol at End 2 Default + + false + + + + Color + + 0 + + + + Elevation Base + + Project Base Point + + + + Line Pattern + + Centre + + + + Line Weight + + 1 + + + + Symbol + + Level Head - Circle: Level Head - Circle + + + + Symbol at End 1 Default + + true + + + + 0okMIIsmjBhfYRBv8CY02F + + + + Dimensions + + + + + + 0x$WaWq2vCEwl8n3SkIVni + + + + + + + + + + + + 0gR7qnciT69QamD_nGPP9J + + + + Identity Data + + + + + + + + 1WEUtNqtr0nhT_LbNmu7Ql + + + + + + + + + + + + 0QGwfN6oXCCOl8VeFqLax5 + + + + Constraints + + + + + + 3mDj4b4yH5Cu2Hcs6_1H97 + + + + + + + + + + + + 387XW2U3jCTuQgKtf$KhK0 + + + + Graphics + + + + + + + + + + + 0BAvOHc$jAkfiSckl7q1om + + + + Constraints + + + + + + 3Zu5Bv0LOHrPC10066FoQQ + + + + + + + + + + + + + + + + 291kBmqCf0pRfIsLEwXuM5 + + + + + + + + + + + + 1BVAPxO5r7N9sfTOvhrmn6 + + + + + + + + + + + + 2$1LAsj$T3CPRLiPj39tWH + + + + + + + + + + + + NumberOfStoreys + + 1 + + + + 3THi4JcXP8KxK23jCWLtCi + + + + Pset_BuildingCommon + + + + + + 2oN2azh8HADfA$xkdBLtfw + + + + + + + + + + + + Author + + + + + + Organization Name + + + + + + Project Status + + Project Status + + + + Client Name + + Owner + + + + Organization Description + + + + + + Project Issue Date + + Issue Date + + + + Project Number + + Project Number + + + + Project Address + + Enter address here + + + + Building Name + + + + + + Project Name + + Project Name + + + + 2z5BJl9rDBIOhdyKySLxxg + + + + Identity Data + + + + + + + + + 3xSjlZ7lH8yPYMuTUf4M8z + + + + + + + + + + + + 3waHFIHb19Yukl1RasiW6S + + + + Other + + + + + + + + + + + 1QPK3_XuT1g9ogffnpMhpN + + + + + + + + + + + + 28jHN69FHAqeeFFvFP1Cgn + + + + + + + + + + + + 3eHI5sDgH53hIwNexJ_a_S + + + + + + + + + + + + 1k4Jhua0fCgAyV5PRAChSs + + + + + + + + + + + + 157wVVfKD6QhZQyV3bkSbI + + + + + + + + + + + + 3Cj6ckhUj3nP8rb3wgnx7U + + + + + + + + + + + + 23OnsMCh990RZs3u2mIrWk + + + + + + + + + + + + 0cwRWA0Jb2iBLR71f4hCfZ + + + + + + + + + + + + + + + 0CTdh97sf0JBpqGzJkW$PF + + + + + + + + + + + + + + 2A$42nqizCNushPJvuofT_ + + + + + + + + + + + + + + 0G_wi2M258SwS58QgOUS9x + + + + + + + + + + + + + + 2DlH8jhbTFDQybOeMLsCmJ + + + + + + + + + + + + + + 0UFT3AUoX6ewH44N5Bkio_ + + + + + + + + + + + + + + 1oOmHDz_H9tgmuJ7GjiQS6 + + + + + + + + + + + + 0hjDTL04r2nftq$RBZ02Vl + + + + + + + + + + + + 1BENPRxsH1PB$c2EwiTDl9 + + + + + + + + + + + + 1ia7OWDFr8lPa6pN$2culC + + + + + + + + + + + + 28kHzjUzvF9Bpvw2P_XVS3 + + + + + + + + + + + + 1uVHnitwrDL8DLvYSmK4cF + + + + + + + + + + + + 37t3AEdGnFqwgQgHdVMs7y + + + + + + + + + + + + 1iOLfkDWP409ERWopgVECe + + + + + + + + + + + + atend + atstart + + + 0Ij$8qQqP0Pggig4GVMB6N + + + + + + + + + + + + atstart + atend + + + 2d2d9mkOv7sAgD9ZPddFVr + + + + + + + + + + + + atstart + atend + + + 1u7xpA8vz5SelCWmisS$hX + + + + + + + + + + + + atstart + atend + + + A-200-M_WALL_EXT + + + + + + + + + + + + + A-230-M_FLOOR + + + + + + C-920-M_TOPO + + + + + + \ No newline at end of file diff --git a/Xbim.Essentials.Tests/TestSourceFiles/4walls1floorSite.ifczip b/Xbim.Essentials.Tests/TestSourceFiles/4walls1floorSite.ifczip new file mode 100644 index 000000000..7085ec6b4 Binary files /dev/null and b/Xbim.Essentials.Tests/TestSourceFiles/4walls1floorSite.ifczip differ diff --git a/Xbim.Essentials.Tests/Xbim.Essentials.Tests.csproj b/Xbim.Essentials.Tests/Xbim.Essentials.Tests.csproj index f116e0141..1369e6355 100644 --- a/Xbim.Essentials.Tests/Xbim.Essentials.Tests.csproj +++ b/Xbim.Essentials.Tests/Xbim.Essentials.Tests.csproj @@ -58,6 +58,8 @@ + + @@ -81,6 +83,15 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest diff --git a/Xbim.IO/IfcPersistedInstanceCache.cs b/Xbim.IO/IfcPersistedInstanceCache.cs index b4234c0f1..9172fdeb9 100644 --- a/Xbim.IO/IfcPersistedInstanceCache.cs +++ b/Xbim.IO/IfcPersistedInstanceCache.cs @@ -62,7 +62,7 @@ internal static int ModelOpenCount private readonly XbimEntityCursor[] _entityTables; private readonly XbimCursor[] _geometryTables; private XbimDBAccess _accessMode; - private string _systemPath; + static private string _systemPath; @@ -489,40 +489,9 @@ public void ForEach(IEnumerable source, Action body) /// public void ImportIfc(string xbimDbName, string toImportIfcFilename, ReportProgressDelegate progressHandler = null, bool keepOpen = false, bool cacheEntities = false, int codePageOverride = -1) { - - CreateDatabase(xbimDbName); - Open(xbimDbName, XbimDBAccess.Exclusive); - var table = GetEntityTable(); - if (cacheEntities) this.CacheStart(); - try - { - using (FileStream reader = new FileStream(toImportIfcFilename, FileMode.Open, FileAccess.Read)) - { - forwardReferences = new BlockingCollection(); - using (P21toIndexParser part21Parser = new P21toIndexParser(reader, table, this, codePageOverride)) - { - if (progressHandler != null) part21Parser.ProgressStatus += progressHandler; - part21Parser.Parse(); - _model.Header = part21Parser.Header; - if (progressHandler != null) part21Parser.ProgressStatus -= progressHandler; - } - } - // the header used to be written a few lines above just after being assigned but should be ok here too. - // todo: bonghi: ask SRL if it should be elsewhere - using (var transaction = table.BeginLazyTransaction()) - { - table.WriteHeader(_model.Header); - transaction.Commit(); - } - FreeTable(table); - if (!keepOpen) Close(); - } - catch (Exception e) + using (FileStream reader = new FileStream(toImportIfcFilename, FileMode.Open, FileAccess.Read)) { - FreeTable(table); - Close(); - File.Delete(xbimDbName); - throw e; + ImportIfc(xbimDbName, reader, progressHandler, keepOpen, cacheEntities, codePageOverride); } } /// @@ -532,90 +501,10 @@ public void ImportIfc(string xbimDbName, string toImportIfcFilename, ReportProgr /// public void ImportIfcZip(string xbimDbName, string toImportFilename, ReportProgressDelegate progressHandler = null, bool keepOpen = false, bool cacheEntities = false, int codePageOverride = -1) { - CreateDatabase(xbimDbName); - Open(xbimDbName, XbimDBAccess.Exclusive); - var table = GetEntityTable(); - if (cacheEntities) this.CacheStart(); - try - { - using (FileStream fileStream = File.OpenRead(toImportFilename)) - { - // used because - The ZipInputStream has one major advantage over using ZipFile to read a zip: - // it can read from an unseekable input stream - such as a WebClient download - using (ZipInputStream zipStream = new ZipInputStream(fileStream)) - { - ZipEntry entry = zipStream.GetNextEntry(); - while (entry != null) - { - string ext = Path.GetExtension(entry.Name).ToLowerInvariant(); - //look for a valid ifc supported file - if (entry.IsFile && - (string.Compare(ext, ".ifc", true) == 0) - ) - { - using (ZipFile zipFile = new ZipFile(toImportFilename)) - { - - using (Stream reader = zipFile.GetInputStream(entry)) - { - forwardReferences = new BlockingCollection(); - using (P21toIndexParser part21Parser = new P21toIndexParser(reader, table, this, codePageOverride)) - { - if (progressHandler != null) part21Parser.ProgressStatus += progressHandler; - part21Parser.Parse(); - _model.Header = part21Parser.Header; - if (progressHandler != null) part21Parser.ProgressStatus -= progressHandler; - } - } - using (var transaction = table.BeginLazyTransaction()) - { - table.WriteHeader(_model.Header); - transaction.Commit(); - } - FreeTable(table); - if (!keepOpen) Close(); - return; // we only want the first file - } - } - else if(string.Compare(ext, ".ifcxml") == 0) - { - using (ZipFile zipFile = new ZipFile(toImportFilename)) - { - using (var transaction = table.BeginLazyTransaction()) - { - // XmlReaderSettings settings = new XmlReaderSettings() { IgnoreComments = true, IgnoreWhitespace = false }; - using (Stream xmlInStream = zipFile.GetInputStream(entry)) - { - using (XmlTextReader xmlReader = new XmlTextReader(xmlInStream)) - { - IfcXmlReader reader = new IfcXmlReader(); - _model.Header = reader.Read(this, table, xmlReader); - table.WriteHeader(_model.Header); - } - } - transaction.Commit(); - } - FreeTable(table); - if (!keepOpen) Close(); - return; - } - } - entry = zipStream.GetNextEntry(); //get next entry - } - } - } - FreeTable(table); - Close(); - File.Delete(xbimDbName); - } - catch (Exception e) - { - FreeTable(table); - Close(); - File.Delete(xbimDbName); - throw e; - } + using (FileStream fileStream = File.OpenRead(toImportFilename)) + ImportIfcZip(xbimDbName, fileStream, progressHandler, keepOpen, cacheEntities, codePageOverride); + } /// @@ -678,14 +567,12 @@ private static bool IsValidDirectory(ref string tempDirectory) return false; } - private Instance CreateInstance(string instanceName, string tempDirectory = null, bool recovery = false) + static private Instance CreateInstance(string instanceName, bool recovery = false, bool createTemporaryTables = false) { string guid = Guid.NewGuid().ToString(); - var jetInstance = new Instance(instanceName+guid); - - if (!string.IsNullOrWhiteSpace(tempDirectory)) //we haven't specified a path so make one - _systemPath = tempDirectory; - else //we are intending to use the global System Path + var jetInstance = new Instance(instanceName+guid); + + if (string.IsNullOrWhiteSpace(_systemPath)) //we haven't specified a path so make one _systemPath = GetXbimTempDirectory(); jetInstance.Parameters.BaseName = "XBM"; @@ -699,7 +586,7 @@ private Instance CreateInstance(string instanceName, string tempDirectory = null jetInstance.Parameters.CheckpointDepthMax = cacheSizeInBytes; jetInstance.Parameters.LogFileSize = 1024; // 1MB logs jetInstance.Parameters.LogBuffers = 1024; // buffers = 1/2 of logfile - jetInstance.Parameters.MaxTemporaryTables = 0; //ensures no temporary files are created + if (!createTemporaryTables) jetInstance.Parameters.MaxTemporaryTables = 0; //ensures no temporary files are created jetInstance.Parameters.MaxVerPages = 4096; jetInstance.Parameters.NoInformationEvent = true; jetInstance.Parameters.WaypointLatency = 1; @@ -1626,7 +1513,9 @@ public IEnumerable Where(Expression> expr) where T : IPersis if (entity != null) { indexFound = true; - foreach (var item in OfType(true, entity.EntityLabel)) + var candidates = OfType(true, entity.EntityLabel).ToList(); + // Debug.WriteLine("{0} = {1}", type.Name,candidates.Count); + foreach (var item in candidates) { if (predicate(item)) yield return item; @@ -1655,11 +1544,14 @@ public IEnumerable Where(Expression> expr) where T : IPersis if (entity != null) { indexFound = true; - foreach (var item in OfType(true, entity.EntityLabel)) + var candidates = OfType(true, entity.EntityLabel).ToList(); + // Debug.WriteLine("{0} = {1}", type.Name, candidates.Count); + foreach (var item in candidates) { if (predicate(item)) yield return item; } + } } } @@ -1735,7 +1627,7 @@ internal long GeometriesCount() } - internal T InsertCopy(T toCopy, XbimInstanceHandleMap mappings, XbimReadWriteTransaction txn, bool includeInverses, PropertyTranformDelegate propTransform = null) where T : IPersistIfcEntity + internal T InsertCopy(T toCopy, XbimInstanceHandleMap mappings, XbimReadWriteTransaction txn, bool includeInverses, PropertyTranformDelegate propTransform = null) where T : IPersistIfcEntity { //check if the transaction needs pulsing @@ -1751,7 +1643,7 @@ internal T InsertCopy(T toCopy, XbimInstanceHandleMap mappings, XbimReadWrite txn.Pulse(); IfcType ifcType = IfcMetaData.IfcType(toCopy); int copyLabel = toCopy.EntityLabel; - copyHandle = InsertNew(ifcType.Type); + copyHandle = InsertNew(ifcType.Type, copyLabel); mappings.Add(toCopyHandle, copyHandle); if (typeof(IfcCartesianPoint) == ifcType.Type || typeof(IfcDirection) == ifcType.Type)//special cases for cartesian point and direction for efficiency { @@ -1768,15 +1660,15 @@ internal T InsertCopy(T toCopy, XbimInstanceHandleMap mappings, XbimReadWrite theCopy.Bind(_model, copyHandle.EntityLabel,true); read.TryAdd(copyHandle.EntityLabel, theCopy); createdNew.TryAdd(copyHandle.EntityLabel, theCopy); - IfcRoot rt = theCopy as IfcRoot; + // IfcRoot rt = theCopy as IfcRoot; IEnumerable props = ifcType.IfcProperties.Values.Where(p => !p.IfcAttribute.IsDerivedOverride); if (includeInverses) props = props.Union(ifcType.IfcInverses); - if (rt != null) rt.OwnerHistory = _model.OwnerHistoryAddObject; + // if (rt != null) rt.OwnerHistory = _model.OwnerHistoryAddObject; foreach (IfcMetaProperty prop in props) { - if (rt != null && prop.PropertyInfo.Name == "OwnerHistory") //don't add the owner history in as this will be changed later - continue; + //if (rt != null && prop.PropertyInfo.Name == "OwnerHistory") //don't add the owner history in as this will be changed later + // continue; object value; if(propTransform != null) value = propTransform(prop,toCopy); @@ -1794,7 +1686,7 @@ internal T InsertCopy(T toCopy, XbimInstanceHandleMap mappings, XbimReadWrite //else else if (!isInverse && typeof(IPersistIfcEntity).IsAssignableFrom(theType)) { - prop.PropertyInfo.SetValue(theCopy, InsertCopy((IPersistIfcEntity)value, mappings, txn, includeInverses), null); + prop.PropertyInfo.SetValue(theCopy, InsertCopy((IPersistIfcEntity)value, mappings, txn, includeInverses, propTransform), null); } else if (!isInverse && typeof(ExpressEnumerable).IsAssignableFrom(theType)) { @@ -1817,7 +1709,7 @@ internal T InsertCopy(T toCopy, XbimInstanceHandleMap mappings, XbimReadWrite copyColl.Add(item); else if (typeof(IPersistIfcEntity).IsAssignableFrom(actualItemType)) { - var cpy = InsertCopy((IPersistIfcEntity)item, mappings, txn, includeInverses); + var cpy = InsertCopy((IPersistIfcEntity)item, mappings, txn, includeInverses, propTransform); copyColl.Add(cpy); } else @@ -1827,10 +1719,19 @@ internal T InsertCopy(T toCopy, XbimInstanceHandleMap mappings, XbimReadWrite else if (isInverse && value is IEnumerable) //just an enumeration of IPersistIfcEntity { foreach (var ent in (IEnumerable)value) - InsertCopy(ent, mappings, txn, includeInverses); + { + XbimInstanceHandle h; + if (!mappings.TryGetValue(ent.GetHandle(), out h)) + InsertCopy(ent, mappings, txn, includeInverses, propTransform); + } } else if (isInverse && value is IPersistIfcEntity) //it is an inverse and has a single value - InsertCopy((IPersistIfcEntity)value, mappings, txn, includeInverses); + { + XbimInstanceHandle h; + var v = (IPersistIfcEntity)value; + if (!mappings.TryGetValue(v.GetHandle(), out h)) + InsertCopy(v, mappings, txn, includeInverses, propTransform); + } else throw new XbimException(string.Format("Unexpected item type ({0}) found", theType.Name)); } @@ -1854,7 +1755,15 @@ private XbimInstanceHandle InsertNew(Type type) { return _model.GetTransactingCursor().AddEntity(type); } - + /// + /// This function can only be called once the model is in a transaction + /// + /// + /// + private XbimInstanceHandle InsertNew(Type type, int entityLabel) + { + return _model.GetTransactingCursor().AddEntity(type, entityLabel); + } /// @@ -1946,6 +1855,20 @@ internal void Write(XbimEntityCursor entityTable) createdNew.Clear(); } + static internal void Compact(string sourceName, string targetName) + { + using (var jetInstance = CreateInstance("XbimInstance", false, true)) + { + using (var session = new Session(jetInstance)) + { + // For JetCompact to work the database has to be attached, but not opened + Api.JetAttachDatabase(session, sourceName, AttachDatabaseGrbit.None); + Api.JetCompact(session, sourceName, targetName, null, null, CompactGrbit.None); + } + } + + } + public bool HasDatabaseInstance { get @@ -2188,6 +2111,170 @@ internal XbimShapeInstanceCursor GetShapeInstanceTable() OpenDatabaseGrbit openMode = AttachedDatabase(); return new XbimShapeInstanceCursor(this._model, _databaseName, openMode); } + + internal void ImportIfcXml(string xbimDbName, Stream inputStream, ReportProgressDelegate progDelegate, bool keepOpen, bool cacheEntities) + { + CreateDatabase(xbimDbName); + Open(xbimDbName, XbimDBAccess.Exclusive); + var table = GetEntityTable(); + if (cacheEntities) this.CacheStart(); + try + { + using (var transaction = table.BeginLazyTransaction()) + { + + using (StreamReader xmlInStream = new StreamReader(inputStream, Encoding.GetEncoding("ISO-8859-9"))) //this is a work around to ensure latin character sets are read + { + using (XmlTextReader xmlTextReader = new XmlTextReader(xmlInStream)) + { + XmlReaderSettings settings = new XmlReaderSettings(); + settings.CheckCharacters = false; //has no impact + forwardReferences = new BlockingCollection(); + XmlReader xmlReader = XmlReader.Create(xmlTextReader, settings); + settings.CheckCharacters = false; + IfcXmlReader reader = new IfcXmlReader(); + _model.Header = reader.Read(this, table, xmlReader); + table.WriteHeader(_model.Header); + + } + } + transaction.Commit(); + } + FreeTable(table); + if (!keepOpen) Close(); + } + catch (Exception e) + { + FreeTable(table); + Close(); + File.Delete(xbimDbName); + throw new Exception("Error importing IfcXml File " + xbimDbName, e); + } + } + + internal void ImportIfc(string xbimDbName, Stream inputStream, ReportProgressDelegate progressHandler, bool keepOpen, bool cacheEntities, int codePageOverride) + { + CreateDatabase(xbimDbName); + Open(xbimDbName, XbimDBAccess.Exclusive); + var table = GetEntityTable(); + if (cacheEntities) this.CacheStart(); + try + { + + forwardReferences = new BlockingCollection(); + using (P21toIndexParser part21Parser = new P21toIndexParser(inputStream, table, this, codePageOverride)) + { + if (progressHandler != null) part21Parser.ProgressStatus += progressHandler; + part21Parser.Parse(); + _model.Header = part21Parser.Header; + if (progressHandler != null) part21Parser.ProgressStatus -= progressHandler; + } + + // the header used to be written a few lines above just after being assigned but should be ok here too. + // todo: bonghi: ask SRL if it should be elsewhere + using (var transaction = table.BeginLazyTransaction()) + { + table.WriteHeader(_model.Header); + transaction.Commit(); + } + FreeTable(table); + if (!keepOpen) Close(); + } + catch (Exception e) + { + FreeTable(table); + Close(); + File.Delete(xbimDbName); + throw e; + } + } + + internal void ImportIfcZip(string xbimDbName, Stream inputStream, ReportProgressDelegate progressHandler, bool keepOpen, bool cacheEntities, int codePageOverride) + { + CreateDatabase(xbimDbName); + Open(xbimDbName, XbimDBAccess.Exclusive); + var table = GetEntityTable(); + if (cacheEntities) this.CacheStart(); + try + { + + // used because - The ZipInputStream has one major advantage over using ZipFile to read a zip: + // it can read from an unseekable input stream - such as a WebClient download + using (ZipInputStream zipStream = new ZipInputStream(inputStream)) + { + ZipEntry entry = zipStream.GetNextEntry(); + while (entry != null) + { + string ext = Path.GetExtension(entry.Name).ToLowerInvariant(); + //look for a valid ifc supported file + if (entry.IsFile && + (string.Compare(ext, ".ifc", true) == 0) + ) + { + using (ZipFile zipFile = new ZipFile(inputStream)) + { + + using (Stream reader = zipFile.GetInputStream(entry)) + { + forwardReferences = new BlockingCollection(); + using (P21toIndexParser part21Parser = new P21toIndexParser(reader, table, this, codePageOverride)) + { + if (progressHandler != null) part21Parser.ProgressStatus += progressHandler; + part21Parser.Parse(); + _model.Header = part21Parser.Header; + if (progressHandler != null) part21Parser.ProgressStatus -= progressHandler; + } + } + using (var transaction = table.BeginLazyTransaction()) + { + table.WriteHeader(_model.Header); + transaction.Commit(); + } + FreeTable(table); + if (!keepOpen) Close(); + return; // we only want the first file + } + } + else if (string.Compare(ext, ".ifcxml") == 0) + { + using (ZipFile zipFile = new ZipFile(inputStream)) + { + using (var transaction = table.BeginLazyTransaction()) + { + // XmlReaderSettings settings = new XmlReaderSettings() { IgnoreComments = true, IgnoreWhitespace = false }; + using (Stream xmlInStream = zipFile.GetInputStream(entry)) + { + using (XmlTextReader xmlReader = new XmlTextReader(xmlInStream)) + { + IfcXmlReader reader = new IfcXmlReader(); + _model.Header = reader.Read(this, table, xmlReader); + table.WriteHeader(_model.Header); + } + } + transaction.Commit(); + } + FreeTable(table); + if (!keepOpen) Close(); + return; + } + } + + entry = zipStream.GetNextEntry(); //get next entry + } + } + + FreeTable(table); + Close(); + File.Delete(xbimDbName); + } + catch (Exception e) + { + FreeTable(table); + Close(); + File.Delete(xbimDbName); + throw e; + } + } } } diff --git a/Xbim.IO/Parser/XbimP21Indexer.cs b/Xbim.IO/Parser/XbimP21Indexer.cs index 421fbde46..65cde6f20 100644 --- a/Xbim.IO/Parser/XbimP21Indexer.cs +++ b/Xbim.IO/Parser/XbimP21Indexer.cs @@ -316,6 +316,9 @@ internal override void SetType(string entityTypeName) _currentType = entityTypeName; IfcType ifcType = IfcMetaData.IfcType(_currentType); + if(ifcType==null) + throw new ArgumentException(string.Format("Invalid entity type {0}", _currentType)); + _indexKeys = ifcType.IndexedValues; } } diff --git a/Xbim.IO/Part21FileWriter.cs b/Xbim.IO/Part21FileWriter.cs index 25b73c9d3..354e6e98b 100644 --- a/Xbim.IO/Part21FileWriter.cs +++ b/Xbim.IO/Part21FileWriter.cs @@ -37,8 +37,17 @@ public void Write(XbimModel model, TextWriter output, IDictionary map output.Write(HeaderAsString(model.Header ?? new IfcFileHeader(IfcFileHeader.HeaderCreationMode.InitWithXbimDefaults))); foreach (XbimInstanceHandle item in model.InstanceHandles /*.Types.OrderBy(t=>t.Name)*/) { - IPersistIfcEntity entity = model.GetInstanceVolatile(item); + try + { + IPersistIfcEntity entity = model.GetInstanceVolatile(item); entity.WriteEntity(output, map); + } + catch (Exception e) + { + + throw; + } + } output.WriteLine("ENDSEC;"); diff --git a/Xbim.IO/XbimEntityCursor.cs b/Xbim.IO/XbimEntityCursor.cs index 8e54f7f2c..dfe394dc7 100644 --- a/Xbim.IO/XbimEntityCursor.cs +++ b/Xbim.IO/XbimEntityCursor.cs @@ -441,7 +441,7 @@ internal void AddEntity(int currentLabel, short typeId, IEnumerable indexKe /// A handle to the entity internal XbimInstanceHandle AddEntity(Type type) { - System.Diagnostics.Debug.Assert(typeof(IPersistIfcEntity).IsAssignableFrom(type)); + //System.Diagnostics.Debug.Assert(typeof(IPersistIfcEntity).IsAssignableFrom(type)); int highest = RetrieveHighestLabel(); IfcType ifcType = IfcMetaData.IfcType(type); XbimInstanceHandle h = new XbimInstanceHandle(this.model, highest + 1, ifcType.TypeId); @@ -449,6 +449,21 @@ internal XbimInstanceHandle AddEntity(Type type) return h; } + /// + /// Create a new entity of the specified type, the entity will be blank, all properties with default values + /// The entity label will be as specified, an exception will be raised if the label is already in use + /// + /// Type of entity to create, this must support IPersistIfcEntity + /// A handle to the entity + internal XbimInstanceHandle AddEntity(Type type, int entityLabel) + { + IfcType ifcType = IfcMetaData.IfcType(type); + XbimInstanceHandle h = new XbimInstanceHandle(this.model, entityLabel, ifcType.TypeId); + AddEntity(h.EntityLabel, h.EntityTypeId, null, null, ifcType.IndexedClass); + return h; + } + + /// /// Returns true if the specified entity label is present in the table, assumes the current index has been set to by primary key (SetPrimaryIndex) /// @@ -660,7 +675,8 @@ internal bool TryMoveNextLabel(out int label) } } - + + } diff --git a/Xbim.IO/XbimModel.cs b/Xbim.IO/XbimModel.cs index 561ddf484..97ab4af4b 100644 --- a/Xbim.IO/XbimModel.cs +++ b/Xbim.IO/XbimModel.cs @@ -84,6 +84,7 @@ public short UserDefinedId private string _importFilePath; private IfcAxis2Placement _wcs; + private bool m_AutoAddHistory = true; #endregion @@ -456,6 +457,34 @@ public virtual long GeometriesCount } } + public bool CreateFrom(Stream inputStream, XbimStorageType streamType, string xbimDbName , ReportProgressDelegate progDelegate = null, bool keepOpen = false, bool cacheEntities = false) + { + Close(); + + + switch (streamType) + { + case XbimStorageType.IFCXML: + cache.ImportIfcXml(xbimDbName, inputStream, progDelegate, keepOpen, cacheEntities); + break; + case XbimStorageType.IFC: + cache.ImportIfc(xbimDbName, inputStream, progDelegate, keepOpen, cacheEntities, _codePageOverrideForIfcFiles); + break; + case XbimStorageType.IFCZIP: + cache.ImportIfcZip(xbimDbName, inputStream, progDelegate, keepOpen, cacheEntities, _codePageOverrideForIfcFiles); + break; + case XbimStorageType.INVALID: + default: + return false; + } + if (keepOpen) + { + GetModelFactors(); + this.LoadReferenceModels(); + } + return true; + } + /// /// Creates a new Model and populates with instances from the specified file, Ifc, IfcXML, IfcZip and Xbim are all supported. /// @@ -1206,9 +1235,9 @@ internal XbimEntityCursor GetEntityTable() return cache.GetEntityTable(); } - internal void Compact(XbimModel targetModel) + static public void Compact(string sourceModelName, string targetModelName) { - + IfcPersistedInstanceCache.Compact(sourceModelName, targetModelName); } /// @@ -1533,5 +1562,15 @@ public bool DatabaseHasInstanceTable() { return cache.DatabaseHasInstanceTable(); } + + /// + /// If true OwnerHistory properties are added modified when an object is added or modified, by default this is on, turn off with care as it can lead to models that do not comply with the schema + /// The main use is for copy data between models where the owner history needs to be preserved + /// + public bool AutoAddOwnerHistory + { + get { return m_AutoAddHistory; } + set { m_AutoAddHistory = value; } + } } } diff --git a/Xbim.Ifc2x3/ActorResource/IfcAddress.cs b/Xbim.Ifc2x3/ActorResource/IfcAddress.cs index 3d3744b38..27e0cb799 100644 --- a/Xbim.Ifc2x3/ActorResource/IfcAddress.cs +++ b/Xbim.Ifc2x3/ActorResource/IfcAddress.cs @@ -232,11 +232,7 @@ public IfcAddressType? Purpose set { if (_purpose != value) - { - if (value == IfcAddressType.UserDefined) - throw new ArgumentException( - "An Address Type may not be explicitly set as UserDefined. Set the value of the UserDefinedPurpose Property instead"); - + { this.SetModelValue(this, ref _purpose, value, v => Purpose = v, "Purpose"); } } diff --git a/Xbim.Ifc2x3/ActorResource/IfcOrganizationRelationship.cs b/Xbim.Ifc2x3/ActorResource/IfcOrganizationRelationship.cs index 665d30b36..784a169d8 100644 --- a/Xbim.Ifc2x3/ActorResource/IfcOrganizationRelationship.cs +++ b/Xbim.Ifc2x3/ActorResource/IfcOrganizationRelationship.cs @@ -161,7 +161,7 @@ public IfcText? Description /// /// Organization which is the relating part of the relationship between organizations. /// - [IfcAttribute(3, IfcAttributeState.Mandatory)] + [IfcAttribute(3, IfcAttributeState.Mandatory), IndexedProperty] public IfcOrganization RelatingOrganization { get @@ -179,7 +179,7 @@ public IfcOrganization RelatingOrganization /// /// The other, possibly dependent, organizations which are the related parts of the relationship between organizations. /// - [IfcAttribute(4, IfcAttributeState.Mandatory, IfcAttributeType.Set, 1)] + [IfcAttribute(4, IfcAttributeState.Mandatory, IfcAttributeType.Set, 1), IndexedProperty] public OrganizationCollection RelatedOrganizations { get diff --git a/Xbim.Ifc2x3/ActorResource/IfcPerson.cs b/Xbim.Ifc2x3/ActorResource/IfcPerson.cs index 8dfbe3e38..3e72bb588 100644 --- a/Xbim.Ifc2x3/ActorResource/IfcPerson.cs +++ b/Xbim.Ifc2x3/ActorResource/IfcPerson.cs @@ -99,7 +99,7 @@ public override int GetHashCode() private int _entityLabel; bool _activated; - + private IModel _model; public IModel ModelOf diff --git a/Xbim.Ifc2x3/ActorResource/IfcPersonAndOrganization.cs b/Xbim.Ifc2x3/ActorResource/IfcPersonAndOrganization.cs index 46e8314de..664cd0858 100644 --- a/Xbim.Ifc2x3/ActorResource/IfcPersonAndOrganization.cs +++ b/Xbim.Ifc2x3/ActorResource/IfcPersonAndOrganization.cs @@ -143,7 +143,7 @@ void IPersistIfcEntity.Activate(bool write) /// The person who is related to the organization. /// - [IfcAttribute(1, IfcAttributeState.Mandatory)] + [IfcAttribute(1, IfcAttributeState.Mandatory), IndexedProperty] public IfcPerson ThePerson { get @@ -158,7 +158,7 @@ public IfcPerson ThePerson /// The organization to which the person is related. /// - [IfcAttribute(2, IfcAttributeState.Mandatory)] + [IfcAttribute(2, IfcAttributeState.Mandatory), IndexedProperty] public IfcOrganization TheOrganization { get diff --git a/Xbim.Ifc2x3/ExternalReferenceResource/IfcClassificationItem.cs b/Xbim.Ifc2x3/ExternalReferenceResource/IfcClassificationItem.cs index 7f2d9257f..2b0285b73 100644 --- a/Xbim.Ifc2x3/ExternalReferenceResource/IfcClassificationItem.cs +++ b/Xbim.Ifc2x3/ExternalReferenceResource/IfcClassificationItem.cs @@ -75,7 +75,7 @@ public override int GetHashCode() private int _entityLabel; bool _activated; - + private IModel _model; public IModel ModelOf @@ -134,7 +134,7 @@ public IfcClassificationNotationFacet Notation /// /// The classification that is the source for the uppermost level of the classification item hierarchy used. /// - [IfcAttribute(2, IfcAttributeState.Optional)] + [IfcAttribute(2, IfcAttributeState.Optional), IndexedProperty] public IfcClassification ItemOf { get diff --git a/Xbim.Ifc2x3/GeometricConstraintResource/IfcVirtualGridIntersection.cs b/Xbim.Ifc2x3/GeometricConstraintResource/IfcVirtualGridIntersection.cs index 961d4e8b0..2bc9dcd2f 100644 --- a/Xbim.Ifc2x3/GeometricConstraintResource/IfcVirtualGridIntersection.cs +++ b/Xbim.Ifc2x3/GeometricConstraintResource/IfcVirtualGridIntersection.cs @@ -132,8 +132,9 @@ public IfcVirtualGridIntersection() _offsetDistances = new XbimList(this); } /// - /// Two grid axes which intersects at exactly one intersection (see also informal proposition at IfcGrid). If attribute OffsetDistances is omited, the intersection defines the placement or ref direction of a grid placement directly. If OffsetDistances are given, the intersection is defined by the offset curves to the grid axes. + /// Two grid axes which intersects at exacty one intersection (see also informal proposition at IfcGrid). If attribute OffsetDistances is omited, the intersection defines the placement or ref direction of a grid placement directly. If OffsetDistances are given, the intersection is defined by the offset curves to the grid axes. /// + [IfcAttribute(1, IfcAttributeState.Mandatory), IndexedProperty] public XbimListUnique IntersectingAxes { get @@ -151,6 +152,7 @@ public XbimListUnique IntersectingAxes /// /// Offset distances to the grid axes. If given, it defines virtual offset curves to the grid axes. The intersection of the offset curves specify the virtual grid intersection. /// + [IfcAttribute(2, IfcAttributeState.Mandatory)] public XbimList OffsetDistances { get diff --git a/Xbim.Ifc2x3/GeometryResource/IfcCompositeCurve.cs b/Xbim.Ifc2x3/GeometryResource/IfcCompositeCurve.cs index 9fae8d50b..f2ad0998d 100644 --- a/Xbim.Ifc2x3/GeometryResource/IfcCompositeCurve.cs +++ b/Xbim.Ifc2x3/GeometryResource/IfcCompositeCurve.cs @@ -36,7 +36,7 @@ namespace Xbim.Ifc2x3.GeometryResource /// WR41 : No transition code should be Discontinuous, except for the last code of an open curve. /// WR42 : Ensures, that all segments used in the curve have the same dimensionality. /// - [IfcPersistedEntityAttribute] + [IfcPersistedEntityAttribute, IndexedClass] public class IfcCompositeCurve : IfcBoundedCurve { public IfcCompositeCurve() @@ -53,7 +53,7 @@ public IfcCompositeCurve() #region Part 21 Step file Parse routines - [IfcAttribute(1, IfcAttributeState.Mandatory, IfcAttributeType.List, IfcAttributeType.Class, 1)] + [IfcAttribute(1, IfcAttributeState.Mandatory, IfcAttributeType.List, IfcAttributeType.Class, 1), IndexedProperty] public CompositeCurveSegmentList Segments { get diff --git a/Xbim.Ifc2x3/GeometryResource/IfcMappedItem.cs b/Xbim.Ifc2x3/GeometryResource/IfcMappedItem.cs index 7c05661f0..b97f9c042 100644 --- a/Xbim.Ifc2x3/GeometryResource/IfcMappedItem.cs +++ b/Xbim.Ifc2x3/GeometryResource/IfcMappedItem.cs @@ -52,7 +52,7 @@ public class IfcMappedItem : IfcRepresentationItem /// /// A representation map that is the source of the mapped item. It can be seen as a block (or cell or macro) definition. /// - [IfcAttribute(1, IfcAttributeState.Mandatory)] + [IfcAttribute(1, IfcAttributeState.Mandatory),IndexedProperty] public IfcRepresentationMap MappingSource { get diff --git a/Xbim.Ifc2x3/GeometryResource/IfcRepresentationMap.cs b/Xbim.Ifc2x3/GeometryResource/IfcRepresentationMap.cs index 80cc150de..e33c546ad 100644 --- a/Xbim.Ifc2x3/GeometryResource/IfcRepresentationMap.cs +++ b/Xbim.Ifc2x3/GeometryResource/IfcRepresentationMap.cs @@ -34,7 +34,7 @@ internal RepresentationMapList(IPersistIfcEntity owner) } - [IfcPersistedEntityAttribute] + [IfcPersistedEntityAttribute, IndexedClass] public class IfcRepresentationMap : INotifyPropertyChanged, ISupportChangeNotification, IPersistIfcEntity, INotifyPropertyChanging { @@ -78,7 +78,7 @@ public override int GetHashCode() private int _entityLabel; bool _activated; - + private IModel _model; public IModel ModelOf @@ -148,7 +148,7 @@ public IfcAxis2Placement MappingOrigin } } - [IfcAttribute(2, IfcAttributeState.Mandatory)] + [IfcAttribute(2, IfcAttributeState.Mandatory), IndexedProperty] public IfcRepresentation MappedRepresentation { get diff --git a/Xbim.Ifc2x3/Kernel/IfcPropertySetDefinition.cs b/Xbim.Ifc2x3/Kernel/IfcPropertySetDefinition.cs index 0018d44cf..8d49e8e81 100644 --- a/Xbim.Ifc2x3/Kernel/IfcPropertySetDefinition.cs +++ b/Xbim.Ifc2x3/Kernel/IfcPropertySetDefinition.cs @@ -69,7 +69,7 @@ public IEnumerable DefinesType { return ModelOf.Instances.Where( - t => (t.HasPropertySets != null) && t.HasPropertySets.Contains(this)); + t => t.HasPropertySets.Contains(this)); } } diff --git a/Xbim.Ifc2x3/Kernel/IfcRelAssigns.cs b/Xbim.Ifc2x3/Kernel/IfcRelAssigns.cs index 10596c567..4e480ceea 100644 --- a/Xbim.Ifc2x3/Kernel/IfcRelAssigns.cs +++ b/Xbim.Ifc2x3/Kernel/IfcRelAssigns.cs @@ -31,7 +31,7 @@ public IfcRelAssigns() #region Fields - private readonly ObjectDefinitionSet _relatedObjects; + private ObjectDefinitionSet _relatedObjects; private IfcObjectType? _relatedObjectsType; #endregion @@ -48,9 +48,14 @@ public ObjectDefinitionSet RelatedObjects { get { - ((IPersistIfcEntity) this).Activate(false); + ((IPersistIfcEntity)this).Activate(false); return _relatedObjects; } + set + { + this.SetModelValue(this, ref _relatedObjects, value, v => RelatedObjects = v, + "RelatedObjects"); + } } /// diff --git a/Xbim.Ifc2x3/Kernel/IfcRelAssignsToProduct.cs b/Xbim.Ifc2x3/Kernel/IfcRelAssignsToProduct.cs index 3bdcb4958..4bb3b92bd 100644 --- a/Xbim.Ifc2x3/Kernel/IfcRelAssignsToProduct.cs +++ b/Xbim.Ifc2x3/Kernel/IfcRelAssignsToProduct.cs @@ -50,7 +50,7 @@ public class IfcRelAssignsToProduct : IfcRelAssigns /// /// WR1 : The instance to with the relation points shall not be contained in the List of RelatedObjects. /// - [IfcAttribute(7, IfcAttributeState.Mandatory)] + [IfcAttribute(7, IfcAttributeState.Mandatory), IndexedProperty] public IfcProduct RelatingProduct { get diff --git a/Xbim.Ifc2x3/Kernel/IfcRelAssociatesClassification.cs b/Xbim.Ifc2x3/Kernel/IfcRelAssociatesClassification.cs index afd3b0305..f72d086dd 100644 --- a/Xbim.Ifc2x3/Kernel/IfcRelAssociatesClassification.cs +++ b/Xbim.Ifc2x3/Kernel/IfcRelAssociatesClassification.cs @@ -45,7 +45,7 @@ public class IfcRelAssociatesClassification : IfcRelAssociates /// /// Classification applied to the objects. /// - [IfcAttribute(6, IfcAttributeState.Mandatory)] + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcClassificationNotationSelect RelatingClassification { get diff --git a/Xbim.Ifc2x3/Kernel/IfcRelAssociatesDocument.cs b/Xbim.Ifc2x3/Kernel/IfcRelAssociatesDocument.cs index 61548dfd8..d4625ed31 100644 --- a/Xbim.Ifc2x3/Kernel/IfcRelAssociatesDocument.cs +++ b/Xbim.Ifc2x3/Kernel/IfcRelAssociatesDocument.cs @@ -42,7 +42,7 @@ public class IfcRelAssociatesDocument : IfcRelAssociates /// /// Document information or reference which is applied to the objects. /// - [IfcAttribute(6, IfcAttributeState.Mandatory)] + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcDocumentSelect RelatingDocument { get diff --git a/Xbim.Ifc2x3/Kernel/IfcRelAssociatesLibrary.cs b/Xbim.Ifc2x3/Kernel/IfcRelAssociatesLibrary.cs index 85634eea4..4dec780ba 100644 --- a/Xbim.Ifc2x3/Kernel/IfcRelAssociatesLibrary.cs +++ b/Xbim.Ifc2x3/Kernel/IfcRelAssociatesLibrary.cs @@ -42,7 +42,7 @@ public class IfcRelAssociatesLibrary : IfcRelAssociates /// /// Reference to a library, from which the definition of the property set is taken. /// - [IfcAttribute(6, IfcAttributeState.Mandatory)] + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcLibrarySelect RelatingLibrary { get diff --git a/Xbim.Ifc2x3/Kernel/IfcRoot.cs b/Xbim.Ifc2x3/Kernel/IfcRoot.cs index e186306f9..b645411f9 100644 --- a/Xbim.Ifc2x3/Kernel/IfcRoot.cs +++ b/Xbim.Ifc2x3/Kernel/IfcRoot.cs @@ -108,12 +108,15 @@ void IPersistIfcEntity.Activate(bool write) if (write) { _model.Activate(this, write); - if (_ownerHistory != (_model.OwnerHistoryAddObject as IfcOwnerHistory)) + if (_model.AutoAddOwnerHistory && _ownerHistory != (_model.OwnerHistoryAddObject as IfcOwnerHistory)) //no need to do it if it is already set { - Transaction.AddPropertyChange(v => OwnerHistory = v, _ownerHistory, (IfcOwnerHistory)_model.OwnerHistoryModifyObject); - ((ISupportChangeNotification)this).NotifyPropertyChanging("OwnerHistory"); - _ownerHistory = (IfcOwnerHistory)_model.OwnerHistoryModifyObject; - ((ISupportChangeNotification)this).NotifyPropertyChanged("OwnerHistory"); + if (_ownerHistory != (_model.OwnerHistoryModifyObject as IfcOwnerHistory)) + { + Transaction.AddPropertyChange(v => OwnerHistory = v, _ownerHistory, (IfcOwnerHistory)_model.OwnerHistoryModifyObject); + ((ISupportChangeNotification)this).NotifyPropertyChanging("OwnerHistory"); + _ownerHistory = (IfcOwnerHistory)_model.OwnerHistoryModifyObject; + ((ISupportChangeNotification)this).NotifyPropertyChanged("OwnerHistory"); + } } } } diff --git a/Xbim.Ifc2x3/Kernel/IfcTypeObject.cs b/Xbim.Ifc2x3/Kernel/IfcTypeObject.cs index 3abdd7d9c..aad4d0122 100644 --- a/Xbim.Ifc2x3/Kernel/IfcTypeObject.cs +++ b/Xbim.Ifc2x3/Kernel/IfcTypeObject.cs @@ -55,7 +55,7 @@ public IfcLabel ApplicableOccurrence /// /// Optional. Set list of unique property sets, that are associated with the object type and are common to all object occurrences referring to this object type. /// - [IfcAttribute(6, IfcAttributeState.Optional, IfcAttributeType.Set, 1)] + [IfcAttribute(6, IfcAttributeState.Optional, IfcAttributeType.Set, 1), IndexedProperty] public PropertySetDefinitionSet HasPropertySets { get diff --git a/Xbim.Ifc2x3/MaterialResource/IfcMaterialClassificationRelationship.cs b/Xbim.Ifc2x3/MaterialResource/IfcMaterialClassificationRelationship.cs index d8c7d055a..4f5641b53 100644 --- a/Xbim.Ifc2x3/MaterialResource/IfcMaterialClassificationRelationship.cs +++ b/Xbim.Ifc2x3/MaterialResource/IfcMaterialClassificationRelationship.cs @@ -141,7 +141,7 @@ public XbimSet MaterialClassifications /// /// Material being classified. /// - [IfcAttribute(2, IfcAttributeState.Mandatory)] + [IfcAttribute(2, IfcAttributeState.Mandatory), IndexedProperty] public IfcMaterial ClassifiedMaterial { get diff --git a/Xbim.Ifc2x3/MaterialResource/IfcMaterialLayerSet.cs b/Xbim.Ifc2x3/MaterialResource/IfcMaterialLayerSet.cs index 4fc60b848..282d55b50 100644 --- a/Xbim.Ifc2x3/MaterialResource/IfcMaterialLayerSet.cs +++ b/Xbim.Ifc2x3/MaterialResource/IfcMaterialLayerSet.cs @@ -77,7 +77,7 @@ public override int GetHashCode() private int _entityLabel; bool _activated; - + private IModel _model; public IModel ModelOf @@ -127,7 +127,7 @@ public IfcMaterialLayerSet() /// /// Identification of the layers from which the matsel layer set is composed. /// - [IfcAttribute(1, IfcAttributeState.Mandatory, IfcAttributeType.List, 1)] + [IfcAttribute(1, IfcAttributeState.Mandatory, IfcAttributeType.List, 1),IndexedProperty] public MaterLayerList MaterialLayers { get diff --git a/Xbim.Ifc2x3/PresentationAppearanceResource/IfcCurveStyle.cs b/Xbim.Ifc2x3/PresentationAppearanceResource/IfcCurveStyle.cs index 9950029df..a33423109 100644 --- a/Xbim.Ifc2x3/PresentationAppearanceResource/IfcCurveStyle.cs +++ b/Xbim.Ifc2x3/PresentationAppearanceResource/IfcCurveStyle.cs @@ -27,13 +27,7 @@ namespace Xbim.Ifc2x3.PresentationAppearanceResource [IfcPersistedEntityAttribute] public class IfcCurveStyle : IfcPresentationStyle, IfcPresentationStyleSelect { - #region Statics - public static double DefaultCurveWidth = 1.0; - public static IfcDraughtingPreDefinedColour DefaultCurveColour = new IfcDraughtingPreDefinedColour(); - public static IfcDraughtingPreDefinedCurveFont DefaultCurveFont = new IfcDraughtingPreDefinedCurveFont(); - - #endregion #region Fields diff --git a/Xbim.Ifc2x3/PresentationAppearanceResource/IfcDraughtingPreDefinedCurveFont.cs b/Xbim.Ifc2x3/PresentationAppearanceResource/IfcDraughtingPreDefinedCurveFont.cs index bd445b3e1..5cac16295 100644 --- a/Xbim.Ifc2x3/PresentationAppearanceResource/IfcDraughtingPreDefinedCurveFont.cs +++ b/Xbim.Ifc2x3/PresentationAppearanceResource/IfcDraughtingPreDefinedCurveFont.cs @@ -23,33 +23,14 @@ namespace Xbim.Ifc2x3.PresentationAppearanceResource [IfcPersistedEntityAttribute] public class IfcDraughtingPreDefinedCurveFont : IfcPreDefinedCurveFont { - #region Constructors - - public IfcDraughtingPreDefinedCurveFont() - { - SetName(ValidFontNames[0]); - } - - #endregion - + public static string[] ValidFontNames = new[] { "continuous", "chain", "chain double dash", "dashed", "dotted", "by layer" }; - public static IfcDraughtingPreDefinedCurveFont[] PrefinedCurveFonts; - - static IfcDraughtingPreDefinedCurveFont() - { - PrefinedCurveFonts = new IfcDraughtingPreDefinedCurveFont[ValidFontNames.Length]; - for (int i = 0; i < ValidFontNames.Length; i++) - { - PrefinedCurveFonts[i] = new IfcDraughtingPreDefinedCurveFont(); - PrefinedCurveFonts[i].SetName(ValidFontNames[i]); - } - } - + public override string WhereRule() { diff --git a/Xbim.Ifc2x3/PresentationOrganizationResource/IfcPresentationLayerAssignment.cs b/Xbim.Ifc2x3/PresentationOrganizationResource/IfcPresentationLayerAssignment.cs index 6784c490a..261ed11b7 100644 --- a/Xbim.Ifc2x3/PresentationOrganizationResource/IfcPresentationLayerAssignment.cs +++ b/Xbim.Ifc2x3/PresentationOrganizationResource/IfcPresentationLayerAssignment.cs @@ -147,7 +147,7 @@ public IfcText? Description /// /// The set of layered items, which are assigned to this layer. /// - [IfcAttribute(3, IfcAttributeState.Mandatory, IfcAttributeType.Set, IfcAttributeType.Class, 1)] + [IfcAttribute(3, IfcAttributeState.Mandatory, IfcAttributeType.Set, IfcAttributeType.Class, 1),IndexedProperty] public XbimSet AssignedItems { get diff --git a/Xbim.Ifc2x3/PresentationResource/IfcDraughtingPreDefinedColour.cs b/Xbim.Ifc2x3/PresentationResource/IfcDraughtingPreDefinedColour.cs index 36f7a9067..8ef1d382d 100644 --- a/Xbim.Ifc2x3/PresentationResource/IfcDraughtingPreDefinedColour.cs +++ b/Xbim.Ifc2x3/PresentationResource/IfcDraughtingPreDefinedColour.cs @@ -28,14 +28,7 @@ namespace Xbim.Ifc2x3.PresentationResource [IfcPersistedEntityAttribute] public class IfcDraughtingPreDefinedColour : IfcPreDefinedColour, IfcFillStyleSelect { - #region Constructors - - public IfcDraughtingPreDefinedColour() - { - SetName(ValidColourNames[0]); - } - - #endregion + public static string[] ValidColourNames = new[] { @@ -43,17 +36,7 @@ public IfcDraughtingPreDefinedColour() "white", "by layer" }; - public static IfcDraughtingPreDefinedColour[] PrefinedColours; - - static IfcDraughtingPreDefinedColour() - { - PrefinedColours = new IfcDraughtingPreDefinedColour[ValidColourNames.Length]; - - for (int i = 0; i < ValidColourNames.Length; i++) - { - PrefinedColours[i] = new IfcDraughtingPreDefinedColour {Name = ValidColourNames[i]}; - } - } + /// /// Valid names for draughting colours are "black","red","green","blue","yellow", "magenta","cyan","white","by layer" diff --git a/Xbim.Ifc2x3/PresentationResource/IfcPreDefinedItem.cs b/Xbim.Ifc2x3/PresentationResource/IfcPreDefinedItem.cs index 94381186c..e7fcc3639 100644 --- a/Xbim.Ifc2x3/PresentationResource/IfcPreDefinedItem.cs +++ b/Xbim.Ifc2x3/PresentationResource/IfcPreDefinedItem.cs @@ -104,7 +104,7 @@ void IPersistIfcEntity.Activate(bool write) protected void SetName(IfcLabel name) { - m_name = name; + this.SetModelValue(this, ref m_name, name, v => Name = v, "Name"); } #endregion diff --git a/Xbim.Ifc2x3/ProductExtension/IfcElement.cs b/Xbim.Ifc2x3/ProductExtension/IfcElement.cs index 74098faeb..96dc15433 100644 --- a/Xbim.Ifc2x3/ProductExtension/IfcElement.cs +++ b/Xbim.Ifc2x3/ProductExtension/IfcElement.cs @@ -26,6 +26,16 @@ namespace Xbim.Ifc2x3.ProductExtension { + + [IfcPersistedEntityAttribute] + public class ElementSet : XbimSet + { + internal ElementSet(IPersistIfcEntity owner) + : base(owner) + { + } + } + /// /// Generalization of all components that make up an AEC product. Those elements can be logically contained by a spatial structure element that constitutes a certain level within a project structure hierarchy (e.g., site, building, storey or space). /// diff --git a/Xbim.Ifc2x3/ProductExtension/IfcGrid.cs b/Xbim.Ifc2x3/ProductExtension/IfcGrid.cs index 4e36be6e2..c1b4a722b 100644 --- a/Xbim.Ifc2x3/ProductExtension/IfcGrid.cs +++ b/Xbim.Ifc2x3/ProductExtension/IfcGrid.cs @@ -82,7 +82,7 @@ public IfcGrid() /// /// List of grid axes defining the first row of grid lines. /// - [IfcAttribute(8, IfcAttributeState.Mandatory, IfcAttributeType.ListUnique, IfcAttributeType.Class, 1)] + [IfcAttribute(8, IfcAttributeState.Mandatory, IfcAttributeType.ListUnique, IfcAttributeType.Class, 1), IndexedProperty] public XbimListUnique UAxes { get @@ -96,7 +96,7 @@ public XbimListUnique UAxes /// /// List of grid axes defining the second row of grid lines. /// - [IfcAttribute(9, IfcAttributeState.Mandatory, IfcAttributeType.ListUnique, IfcAttributeType.Class, 1)] + [IfcAttribute(9, IfcAttributeState.Mandatory, IfcAttributeType.ListUnique, IfcAttributeType.Class, 1), IndexedProperty] public XbimListUnique VAxes { get @@ -110,7 +110,7 @@ public XbimListUnique VAxes /// /// Optional. List of grid axes defining the third row of grid lines. It may be given in the case of a triangular grid. /// - [IfcAttribute(10, IfcAttributeState.Optional, IfcAttributeType.ListUnique, IfcAttributeType.Class, 1)] + [IfcAttribute(10, IfcAttributeState.Optional, IfcAttributeType.ListUnique, IfcAttributeType.Class, 1), IndexedProperty] public XbimListUnique WAxes { get diff --git a/Xbim.Ifc2x3/ProductExtension/IfcRelAssociatesMaterial.cs b/Xbim.Ifc2x3/ProductExtension/IfcRelAssociatesMaterial.cs index d90bb7dba..18c482298 100644 --- a/Xbim.Ifc2x3/ProductExtension/IfcRelAssociatesMaterial.cs +++ b/Xbim.Ifc2x3/ProductExtension/IfcRelAssociatesMaterial.cs @@ -54,7 +54,7 @@ public class IfcRelAssociatesMaterial : IfcRelAssociates /// /// Material definition (either a single material, a list of materials, or a set of material layers) assigned to the elements. /// - [IfcAttribute(6, IfcAttributeState.Mandatory)] + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcMaterialSelect RelatingMaterial { get diff --git a/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsElements.cs b/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsElements.cs index 158c164dd..12d605ee4 100644 --- a/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsElements.cs +++ b/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsElements.cs @@ -62,7 +62,7 @@ public IfcConnectionGeometry ConnectionGeometry /// /// Reference to an Element that is connected by the objectified relationship. /// - [IfcAttribute(6, IfcAttributeState.Mandatory)] + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcElement RelatingElement { get @@ -80,7 +80,7 @@ public IfcElement RelatingElement /// /// Reference to an Element that is connected by the objectified relationship. /// - [IfcAttribute(7, IfcAttributeState.Mandatory)] + [IfcAttribute(7, IfcAttributeState.Mandatory), IndexedProperty] public IfcElement RelatedElement { get diff --git a/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsPortToElement.cs b/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsPortToElement.cs index 57ef1c0cc..b5211926e 100644 --- a/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsPortToElement.cs +++ b/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsPortToElement.cs @@ -37,7 +37,7 @@ public class IfcRelConnectsPortToElement : IfcRelConnects /// /// Reference to an Port that is connected by the objectified relationship. /// - [IfcAttribute(5, IfcAttributeState.Mandatory)] + [IfcAttribute(5, IfcAttributeState.Mandatory), IndexedProperty] public IfcPort RelatingPort { get @@ -51,7 +51,7 @@ public IfcPort RelatingPort /// /// Reference to an Element that is connected by the objectified relationship. /// - [IfcAttribute(6, IfcAttributeState.Mandatory)] + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcElement RelatedElement { get diff --git a/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsPorts.cs b/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsPorts.cs index 699746a01..e321fe9c3 100644 --- a/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsPorts.cs +++ b/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsPorts.cs @@ -43,7 +43,7 @@ public class IfcRelConnectsPorts : IfcRelConnects /// /// Reference to the first port that is connected by the objectified relationship. /// - [IfcAttribute(5, IfcAttributeState.Mandatory)] + [IfcAttribute(5, IfcAttributeState.Mandatory), IndexedProperty] public IfcPort RelatingPort { get @@ -57,7 +57,7 @@ public IfcPort RelatingPort /// /// Reference to the second port that is connected by the objectified relationship. /// - [IfcAttribute(6, IfcAttributeState.Mandatory)] + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcPort RelatedPort { get diff --git a/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsWithRealizingElements.cs b/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsWithRealizingElements.cs index 49e0d5887..8ee976985 100644 --- a/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsWithRealizingElements.cs +++ b/Xbim.Ifc2x3/ProductExtension/IfcRelConnectsWithRealizingElements.cs @@ -15,6 +15,7 @@ using System; using Xbim.Ifc2x3.MeasureResource; using Xbim.XbimExtensions; +using Xbim.XbimExtensions.Interfaces; #endregion @@ -32,22 +33,67 @@ namespace Xbim.Ifc2x3.ProductExtension [IfcPersistedEntityAttribute] public class IfcRelConnectsWithRealizingElements : IfcRelConnectsElements { + + ElementSet _realizingElements; + private IfcLabel? _connectionType; + + + public IfcRelConnectsWithRealizingElements() + { + _realizingElements = new ElementSet(this); + } /// /// Defines the elements that realize a connection relationship. /// - public XbimList RealizingElements + [IndexedProperty] + [IfcAttribute(8, IfcAttributeState.Mandatory, IfcAttributeType.Set, 1)] + public ElementSet RealizingElements { - get { throw new NotImplementedException(); } - set { } + get + { + ((IPersistIfcEntity)this).Activate(false); + return _realizingElements; + } + set { this.SetModelValue(this, ref _realizingElements, value, v => RealizingElements = v, "RealizingElements"); } } /// /// The type of the connection given for informal purposes, it may include labels, like 'joint', 'rigid joint', 'flexible joint', etc. /// - public IfcLabel ConnectionType + [IfcAttribute(9, IfcAttributeState.Optional)] + public IfcLabel? ConnectionType { - get { throw new NotImplementedException(); } - set { } + get + { + ((IPersistIfcEntity)this).Activate(false); + return _connectionType; + } + set { this.SetModelValue(this, ref _connectionType, value, v => ConnectionType = v, "ConnectionType"); } } + + public override void IfcParse(int propIndex, IPropertyValue value) + { + switch (propIndex) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + base.IfcParse(propIndex, value); + break; + case 7: + _realizingElements.Add((IfcElement)value.EntityVal); + break; + case 8: + _connectionType = value.StringVal; + break; + default: + this.HandleUnexpectedAttribute(propIndex, value); break; + } + } + } } \ No newline at end of file diff --git a/Xbim.Ifc2x3/ProductExtension/IfcRelCoversBldgElements.cs b/Xbim.Ifc2x3/ProductExtension/IfcRelCoversBldgElements.cs index 13faefa35..60679411a 100644 --- a/Xbim.Ifc2x3/ProductExtension/IfcRelCoversBldgElements.cs +++ b/Xbim.Ifc2x3/ProductExtension/IfcRelCoversBldgElements.cs @@ -48,7 +48,7 @@ public IfcRelCoversBldgElements() /// /// Relationship to the element that is covered. /// - [IfcAttribute(5, IfcAttributeState.Mandatory)] + [IfcAttribute(5, IfcAttributeState.Mandatory), IndexedProperty] public IfcElement RelatingBuildingElement { get @@ -66,7 +66,7 @@ public IfcElement RelatingBuildingElement /// /// Relationship to the set of coverings at this element. /// - [IfcAttribute(6, IfcAttributeState.Mandatory, IfcAttributeType.Set, IfcAttributeType.Class, 1)] + [IfcAttribute(6, IfcAttributeState.Mandatory, IfcAttributeType.Set, IfcAttributeType.Class, 1), IndexedProperty] public XbimSet RelatedCoverings { get diff --git a/Xbim.Ifc2x3/ProductExtension/IfcRelCoversSpaces.cs b/Xbim.Ifc2x3/ProductExtension/IfcRelCoversSpaces.cs index 4b74bf223..9428f39a4 100644 --- a/Xbim.Ifc2x3/ProductExtension/IfcRelCoversSpaces.cs +++ b/Xbim.Ifc2x3/ProductExtension/IfcRelCoversSpaces.cs @@ -47,7 +47,7 @@ public IfcRelCoversSpaces() /// /// Relationship to the space object that is covered. /// - [IfcAttribute(5, IfcAttributeState.Mandatory)] + [IfcAttribute(5, IfcAttributeState.Mandatory), IndexedProperty] public IfcSpace RelatedSpace { get @@ -61,7 +61,7 @@ public IfcSpace RelatedSpace /// /// Relationship to the set of coverings covering this space. /// - [IfcAttribute(6, IfcAttributeState.Mandatory, IfcAttributeType.Set, IfcAttributeType.Class, 1)] + [IfcAttribute(6, IfcAttributeState.Mandatory, IfcAttributeType.Set, IfcAttributeType.Class, 1), IndexedProperty] public CoveringSet RelatedCoverings { get diff --git a/Xbim.Ifc2x3/ProductExtension/IfcRelFillsElement.cs b/Xbim.Ifc2x3/ProductExtension/IfcRelFillsElement.cs index 97ff0d3a7..31069a250 100644 --- a/Xbim.Ifc2x3/ProductExtension/IfcRelFillsElement.cs +++ b/Xbim.Ifc2x3/ProductExtension/IfcRelFillsElement.cs @@ -44,7 +44,7 @@ public class IfcRelFillsElement : IfcRelConnects /// /// Opening Element being filled by virtue of this relationship. /// - [IfcAttribute(5, IfcAttributeState.Mandatory)] + [IfcAttribute(5, IfcAttributeState.Mandatory), IndexedProperty] public IfcOpeningElement RelatingOpeningElement { get @@ -62,7 +62,7 @@ public IfcOpeningElement RelatingOpeningElement /// /// Reference to element that occupies fully or partially the associated opening. /// - [IfcAttribute(6, IfcAttributeState.Mandatory)] + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcElement RelatedBuildingElement { get diff --git a/Xbim.Ifc2x3/ProductExtension/IfcRelProjectsElement.cs b/Xbim.Ifc2x3/ProductExtension/IfcRelProjectsElement.cs index d1a907028..e66eda82b 100644 --- a/Xbim.Ifc2x3/ProductExtension/IfcRelProjectsElement.cs +++ b/Xbim.Ifc2x3/ProductExtension/IfcRelProjectsElement.cs @@ -61,7 +61,7 @@ public IfcElement RelatingElement /// /// Reference to the IfcFeatureElementAddition that defines an addition to the volume of the element, by using a Boolean addition operation. An example is a projection at the associated element. /// - [IfcAttribute(6, IfcAttributeState.Mandatory)] + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcFeatureElementAddition RelatedFeatureElement { get diff --git a/Xbim.Ifc2x3/ProductExtension/IfcRelReferencedInSpatialStructure.cs b/Xbim.Ifc2x3/ProductExtension/IfcRelReferencedInSpatialStructure.cs index b7e776a33..389747437 100644 --- a/Xbim.Ifc2x3/ProductExtension/IfcRelReferencedInSpatialStructure.cs +++ b/Xbim.Ifc2x3/ProductExtension/IfcRelReferencedInSpatialStructure.cs @@ -64,7 +64,7 @@ public IfcRelReferencedInSpatialStructure() /// /// NOTE Referenced elements are contained elsewhere within the spatial structure, they are referenced additionally by this spatial structure element, e.g., because they span several stories. /// - [IfcAttribute(5, IfcAttributeState.Mandatory, IfcAttributeType.Set, IfcAttributeType.Class, 1)] + [IfcAttribute(5, IfcAttributeState.Mandatory, IfcAttributeType.Set, IfcAttributeType.Class, 1), IndexedProperty] public XbimSet RelatedElements { get @@ -82,7 +82,7 @@ public XbimSet RelatedElements /// /// Spatial structure element, within which the element is referenced. Any element can be contained within zeor, one or many elements of the project spatial structure. /// - [IfcAttribute(6, IfcAttributeState.Mandatory)] + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcSpatialStructureElement RelatingStructure { get diff --git a/Xbim.Ifc2x3/ProductExtension/IfcRelServicesBuildings.cs b/Xbim.Ifc2x3/ProductExtension/IfcRelServicesBuildings.cs index ca4620f93..eb99fa2fa 100644 --- a/Xbim.Ifc2x3/ProductExtension/IfcRelServicesBuildings.cs +++ b/Xbim.Ifc2x3/ProductExtension/IfcRelServicesBuildings.cs @@ -49,7 +49,7 @@ public IfcRelServicesBuildings() /// /// System that services the Buildings. /// - [IfcAttribute(5, IfcAttributeState.Mandatory)] + [IfcAttribute(5, IfcAttributeState.Mandatory), IndexedProperty] public IfcSystem RelatingSystem { get @@ -66,7 +66,7 @@ public IfcSystem RelatingSystem /// /// IFC2x PLATFORM CHANGE The data type has been changed from IfcBuilding to IfcSpatialStructureElement with upward compatibility for file based exchange. /// - [IfcAttribute(6, IfcAttributeState.Mandatory, IfcAttributeType.Set, 1)] + [IfcAttribute(6, IfcAttributeState.Mandatory, IfcAttributeType.Set, 1), IndexedProperty] public XbimList RelatedBuildings { get diff --git a/Xbim.Ifc2x3/ProductExtension/IfcRelSpaceBoundary.cs b/Xbim.Ifc2x3/ProductExtension/IfcRelSpaceBoundary.cs index 120fa87cc..85c3d661e 100644 --- a/Xbim.Ifc2x3/ProductExtension/IfcRelSpaceBoundary.cs +++ b/Xbim.Ifc2x3/ProductExtension/IfcRelSpaceBoundary.cs @@ -73,7 +73,7 @@ public class IfcRelSpaceBoundary : IfcRelConnects /// /// Reference to one spaces that is delimited by this boundary. /// - [IfcAttribute(5, IfcAttributeState.Mandatory)] + [IfcAttribute(5, IfcAttributeState.Mandatory), IndexedProperty] public IfcSpace RelatingSpace { get @@ -87,7 +87,7 @@ public IfcSpace RelatingSpace /// /// Optional. Reference to Element, that defines the Space Boundaries. /// - [IfcAttribute(6, IfcAttributeState.Optional)] + [IfcAttribute(6, IfcAttributeState.Optional), IndexedProperty] public IfcElement RelatedBuildingElement { get diff --git a/Xbim.Ifc2x3/ProductExtension/IfcRelVoidsElement.cs b/Xbim.Ifc2x3/ProductExtension/IfcRelVoidsElement.cs index fc56b922b..8ec781f3a 100644 --- a/Xbim.Ifc2x3/ProductExtension/IfcRelVoidsElement.cs +++ b/Xbim.Ifc2x3/ProductExtension/IfcRelVoidsElement.cs @@ -43,8 +43,7 @@ public class IfcRelVoidsElement : IfcRelConnects /// /// Reference to element in which a void is created by associated feature subtraction element. /// - [IfcAttribute(5, IfcAttributeState.Mandatory)] - [IndexedProperty] + [IfcAttribute(5, IfcAttributeState.Mandatory), IndexedProperty] public IfcElement RelatingBuildingElement { get @@ -63,8 +62,8 @@ public IfcElement RelatingBuildingElement /// Reference to the feature subtraction element which defines a void in the associated element. /// /// - - [IfcAttribute(6, IfcAttributeState.Mandatory)] + + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcFeatureElementSubtraction RelatedOpeningElement { get diff --git a/Xbim.Ifc2x3/PropertyResource/IfcComplexProperty.cs b/Xbim.Ifc2x3/PropertyResource/IfcComplexProperty.cs index 61e792147..014795574 100644 --- a/Xbim.Ifc2x3/PropertyResource/IfcComplexProperty.cs +++ b/Xbim.Ifc2x3/PropertyResource/IfcComplexProperty.cs @@ -71,7 +71,7 @@ public IfcIdentifier UsageName set { this.SetModelValue(this, ref _usageName, value, v => UsageName = v, "UsageName"); } } - [IfcAttribute(4, IfcAttributeState.Mandatory, IfcAttributeType.Set, IfcAttributeType.Class, 1)] + [IfcAttribute(4, IfcAttributeState.Mandatory, IfcAttributeType.Set, IfcAttributeType.Class, 1), IndexedProperty] public SetOfProperty HasProperties { get diff --git a/Xbim.Ifc2x3/PropertyResource/IfcProperty.cs b/Xbim.Ifc2x3/PropertyResource/IfcProperty.cs index 11d0893e0..3c6333b1d 100644 --- a/Xbim.Ifc2x3/PropertyResource/IfcProperty.cs +++ b/Xbim.Ifc2x3/PropertyResource/IfcProperty.cs @@ -99,7 +99,7 @@ public override int GetHashCode() private int _entityLabel; bool _activated; - + private IModel _model; public IModel ModelOf diff --git a/Xbim.Ifc2x3/PropertyResource/IfcPropertyDependencyRelationship.cs b/Xbim.Ifc2x3/PropertyResource/IfcPropertyDependencyRelationship.cs index 15155814a..bd79e1b0c 100644 --- a/Xbim.Ifc2x3/PropertyResource/IfcPropertyDependencyRelationship.cs +++ b/Xbim.Ifc2x3/PropertyResource/IfcPropertyDependencyRelationship.cs @@ -33,7 +33,7 @@ namespace Xbim.Ifc2x3.PropertyResource /// Formal Propositions: /// WR1 : The DependingProperty shall not point to the same instance as the DependantProperty /// - [IfcPersistedEntityAttribute] + [IfcPersistedEntityAttribute, IndexedClass] public class IfcPropertyDependencyRelationship : ISupportChangeNotification, INotifyPropertyChanged, IPersistIfcEntity, INotifyPropertyChanging { @@ -76,7 +76,7 @@ public override int GetHashCode() private int _entityLabel; bool _activated; - + private IModel _model; public IModel ModelOf @@ -122,7 +122,7 @@ void IPersistIfcEntity.Activate(bool write) /// /// The property on which the relationship depends. /// - [IfcAttribute(1, IfcAttributeState.Mandatory)] + [IfcAttribute(1, IfcAttributeState.Mandatory), IndexedProperty] public IfcProperty DependingProperty { get @@ -140,7 +140,7 @@ public IfcProperty DependingProperty /// /// The dependant property /// - [IfcAttribute(2, IfcAttributeState.Mandatory)] + [IfcAttribute(2, IfcAttributeState.Mandatory), IndexedProperty] public IfcProperty DependantProperty { get diff --git a/Xbim.Ifc2x3/RepresentationResource/IfcGeometricRepresentationSubContext.cs b/Xbim.Ifc2x3/RepresentationResource/IfcGeometricRepresentationSubContext.cs index 4088d0624..cc1a2c2f7 100644 --- a/Xbim.Ifc2x3/RepresentationResource/IfcGeometricRepresentationSubContext.cs +++ b/Xbim.Ifc2x3/RepresentationResource/IfcGeometricRepresentationSubContext.cs @@ -138,7 +138,7 @@ public override IfcDirection TrueNorth /// /// SpatialStructuralElementParent context from which the sub context derives its world coordinate system, precision, space coordinate dimension and true north. /// - [IfcAttribute(7, IfcAttributeState.Mandatory)] + [IfcAttribute(7, IfcAttributeState.Mandatory), IndexedProperty] public IfcGeometricRepresentationContext ParentContext { get diff --git a/Xbim.Ifc2x3/RepresentationResource/IfcMaterialDefinitionRepresentation.cs b/Xbim.Ifc2x3/RepresentationResource/IfcMaterialDefinitionRepresentation.cs index c3ba8ef99..bdabb2a3b 100644 --- a/Xbim.Ifc2x3/RepresentationResource/IfcMaterialDefinitionRepresentation.cs +++ b/Xbim.Ifc2x3/RepresentationResource/IfcMaterialDefinitionRepresentation.cs @@ -49,7 +49,7 @@ public class IfcMaterialDefinitionRepresentation : IfcProductRepresentation /// /// Reference to the material to which the representation applies. /// - [IfcAttribute(4, IfcAttributeState.Mandatory)] + [IfcAttribute(4, IfcAttributeState.Mandatory),IndexedProperty] public IfcMaterial RepresentedMaterial { get diff --git a/Xbim.Ifc2x3/RepresentationResource/IfcRepresentation.cs b/Xbim.Ifc2x3/RepresentationResource/IfcRepresentation.cs index 58e3d1cca..6f7c6738f 100644 --- a/Xbim.Ifc2x3/RepresentationResource/IfcRepresentation.cs +++ b/Xbim.Ifc2x3/RepresentationResource/IfcRepresentation.cs @@ -259,7 +259,7 @@ public IEnumerable LayerAssignments { return ModelOf.Instances.Where( - a => (a.AssignedItems != null && a.AssignedItems.Contains(this))); + a => a.AssignedItems.Contains(this)); } } diff --git a/Xbim.Ifc2x3/RepresentationResource/IfcShapeAspect.cs b/Xbim.Ifc2x3/RepresentationResource/IfcShapeAspect.cs index b6c26031a..b0659bb59 100644 --- a/Xbim.Ifc2x3/RepresentationResource/IfcShapeAspect.cs +++ b/Xbim.Ifc2x3/RepresentationResource/IfcShapeAspect.cs @@ -32,7 +32,7 @@ namespace Xbim.Ifc2x3.RepresentationResource /// NOTE: The definition of this class relates to the STEP entity shape_aspect. Please refer to ISO/IS 10303-41:1994 for the final definition of the formal standard. /// HISTORY: New Entity in IFC Release 2.0 /// - [IfcPersistedEntityAttribute] + [IfcPersistedEntityAttribute, IndexedClass] public class IfcShapeAspect : ISupportChangeNotification, INotifyPropertyChanged, IPersistIfcEntity, INotifyPropertyChanging { @@ -133,7 +133,7 @@ public IfcShapeAspect() /// /// IFC2x Edition 3 CHANGE The data type has been changed from IfcShapeRepresentation to IfcShapeModel with upward compatibility /// - [IfcAttribute(1, IfcAttributeState.Mandatory, IfcAttributeType.List, IfcAttributeType.Class, 1)] + [IfcAttribute(1, IfcAttributeState.Mandatory, IfcAttributeType.List, IfcAttributeType.Class, 1), IndexedProperty] public ShapeModelList ShapeRepresentations { get @@ -203,7 +203,7 @@ public IfcLogical ProductDefinitional /// /// Reference to the product definition shape of which this class is an aspect. /// - [IfcAttribute(5, IfcAttributeState.Mandatory)] + [IfcAttribute(5, IfcAttributeState.Mandatory), IndexedProperty] public IfcProductDefinitionShape PartOfProductDefinitionShape { get diff --git a/Xbim.Ifc2x3/RepresentationResource/IfcShapeModel.cs b/Xbim.Ifc2x3/RepresentationResource/IfcShapeModel.cs index 118add76f..af4036bab 100644 --- a/Xbim.Ifc2x3/RepresentationResource/IfcShapeModel.cs +++ b/Xbim.Ifc2x3/RepresentationResource/IfcShapeModel.cs @@ -74,7 +74,7 @@ public IEnumerable OfShapeAspect { return ModelOf.Instances.Where( - s => (s.ShapeRepresentations != null && s.ShapeRepresentations.Contains(this))); + s => s.ShapeRepresentations.Contains(this)); } } diff --git a/Xbim.Ifc2x3/SharedBldgServiceElements/IfcRelFlowControlElements.cs b/Xbim.Ifc2x3/SharedBldgServiceElements/IfcRelFlowControlElements.cs index a8f9091a7..3883ea580 100644 --- a/Xbim.Ifc2x3/SharedBldgServiceElements/IfcRelFlowControlElements.cs +++ b/Xbim.Ifc2x3/SharedBldgServiceElements/IfcRelFlowControlElements.cs @@ -39,7 +39,7 @@ public IfcRelFlowControlElements() /// /// References control elements which may be used to impart control on the Distribution Element. /// - [IfcAttribute(5, IfcAttributeState.Mandatory, IfcAttributeType.Set, IfcAttributeType.Class, 1)] + [IfcAttribute(5, IfcAttributeState.Mandatory, IfcAttributeType.Set, IfcAttributeType.Class, 1),IndexedProperty] public XbimSet RelatedControlElements { get @@ -57,7 +57,7 @@ public XbimSet RelatedControlElements /// /// Relationship to a distribution flow element /// - [IfcAttribute(6, IfcAttributeState.Mandatory)] + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcDistributionFlowElement RelatingFlowElement { get diff --git a/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelAssociatesProfileProperties.cs b/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelAssociatesProfileProperties.cs index bfe625442..35cf7d0e6 100644 --- a/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelAssociatesProfileProperties.cs +++ b/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelAssociatesProfileProperties.cs @@ -42,7 +42,7 @@ public class IfcRelAssociatesProfileProperties : IfcRelAssociates /// /// Profile property definition assigned to the instances. /// - [IfcAttribute(6, IfcAttributeState.Mandatory)] + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcProfileProperties RelatingProfileProperties { diff --git a/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelConnectsStructuralActivity.cs b/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelConnectsStructuralActivity.cs index da27dff77..5e23437e0 100644 --- a/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelConnectsStructuralActivity.cs +++ b/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelConnectsStructuralActivity.cs @@ -31,7 +31,7 @@ public class IfcRelConnectsStructuralActivity : IfcRelConnects private IfcStructuralActivity _relatedStructuralActivity; #endregion - [IfcAttribute(5, IfcAttributeState.Mandatory)] + [IfcAttribute(5, IfcAttributeState.Mandatory), IndexedProperty] public IfcStructuralActivityAssignmentSelect RelatingElement { get { return _relatingElement; } @@ -41,7 +41,7 @@ public IfcStructuralActivityAssignmentSelect RelatingElement "RelatingElement"); } } - [IfcAttribute(6, IfcAttributeState.Mandatory)] + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcStructuralActivity RelatedStructuralActivity { get { return _relatedStructuralActivity; } diff --git a/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelConnectsStructuralElement.cs b/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelConnectsStructuralElement.cs index 2a24e2549..f325972d6 100644 --- a/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelConnectsStructuralElement.cs +++ b/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelConnectsStructuralElement.cs @@ -43,7 +43,7 @@ public class IfcRelConnectsStructuralElement : IfcRelConnects /// /// The physical element, representing a design or detailing part, that is connected to the structural member as its (partial) analytical idealization. /// - [IfcAttribute(5, IfcAttributeState.Mandatory)] + [IfcAttribute(5, IfcAttributeState.Mandatory), IndexedProperty] public IfcElement RelatingElement { get @@ -61,7 +61,7 @@ public IfcElement RelatingElement /// /// The structural member that is associated with the element of which it represents the analytical idealization. /// - [IfcAttribute(6, IfcAttributeState.Mandatory)] + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcStructuralMember RelatedStructuralMember { get diff --git a/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelConnectsStructuralMember.cs b/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelConnectsStructuralMember.cs index 8ffcfef98..23601870f 100644 --- a/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelConnectsStructuralMember.cs +++ b/Xbim.Ifc2x3/StructuralAnalysisDomain/IfcRelConnectsStructuralMember.cs @@ -43,7 +43,7 @@ public class IfcRelConnectsStructuralMember : IfcRelConnects /// /// Reference to an instance of IfcStructuralMember (or its subclasses) which is connected to the specified structural connection. /// - [IfcAttribute(5, IfcAttributeState.Mandatory)] + [IfcAttribute(5, IfcAttributeState.Mandatory), IndexedProperty] public IfcStructuralMember RelatingStructuralMember { get @@ -61,7 +61,7 @@ public IfcStructuralMember RelatingStructuralMember /// /// Reference to an instance of IfcStructuralConnection (or its subclasses) which is connected to the specified structural member. /// - [IfcAttribute(6, IfcAttributeState.Mandatory)] + [IfcAttribute(6, IfcAttributeState.Mandatory), IndexedProperty] public IfcStructuralConnection RelatedStructuralConnection { get