├── .gitattributes ├── .gitignore ├── ConsoleCheckModelDemo ├── App.config ├── ConsoleCheckModelDemo.csproj ├── Program.cs ├── Properties │ └── AssemblyInfo.cs └── packages.config ├── ConsoleClassificationDemo ├── App.config ├── ConsoleClassificationDemo.csproj ├── Program.cs ├── Properties │ └── AssemblyInfo.cs ├── TestClassification.ifc └── packages.config ├── ConsoleCreateSpanAnnotation ├── App.config ├── ConsoleCreateSpanAnnotation.csproj ├── Program.cs ├── Properties │ └── AssemblyInfo.cs └── packages.config ├── ConsoleCreateSpatialStructure ├── App.config ├── ConsoleCreateSpatialStructure.csproj ├── DesiredResult.png ├── IFC4X3RC1_spatialDecomposition.ifc ├── Program.cs ├── Properties │ └── AssemblyInfo.cs └── packages.config ├── ConsoleCreateSurfaceMember ├── App.config ├── ConsoleCreateSurfaceMember.csproj ├── Program.cs ├── Properties │ └── AssemblyInfo.cs ├── packages.config ├── surfaceMember.ifc ├── surfaceMember.ifcjson └── surfaceMember.ifcxml ├── ConsoleCreateWall ├── App.config ├── ConsoleCreateWall.csproj ├── Program.cs ├── Properties │ └── AssemblyInfo.cs └── packages.config ├── ConsoleFilterElements ├── App.config ├── ConsoleFilterElements.csproj ├── Program.cs ├── Properties │ └── AssemblyInfo.cs └── packages.config ├── ConsoleParametricFooting ├── App.config ├── ConsoleParametricFooting.csproj ├── ParametricFooting.ifc ├── ParametricFooting.ifcjson ├── ParametricFooting.ifcxml ├── Program.cs ├── Properties │ └── AssemblyInfo.cs └── packages.config ├── ConsoleTestMEP ├── App.config ├── ConsoleTestMEP.csproj ├── Program.cs ├── Properties │ └── AssemblyInfo.cs ├── examples │ ├── AirTerminal IFC2x3.ifc │ ├── AirTerminal IFC4A1.ifc │ ├── Chiller IFC2x3.ifc │ ├── Chiller IFC4A1.ifc │ ├── ElectricPoint IFC2x3.ifc │ └── Mep Examples.zip └── packages.config ├── GeometryGymIFC Examples.sln ├── IFC4X4_Tunnel_Deployment ├── IFC4X4_Tunnel_Deployment.csproj ├── Program.cs └── Properties │ └── launchSettings.json ├── LICENSE ├── TestModelViewDefinition ├── App.config ├── Program.cs ├── Properties │ └── AssemblyInfo.cs ├── TestModelViewDefinition.csproj ├── examples │ ├── Ifc4DesignTransfer.ifc │ └── Ifc4Reference.ifc └── packages.config ├── consoleCountStories ├── App.config ├── Program.cs ├── Properties │ └── AssemblyInfo.cs ├── consoleCountStories.csproj └── packages.config ├── consoleGetBreps ├── App.config ├── ConsoleGetBreps.csproj ├── Program.cs ├── Properties │ └── AssemblyInfo.cs └── packages.config └── consoleSummarizeElements ├── App.config ├── ConsoleSummarizeElements.csproj ├── IFC Model.ifc ├── Program.cs ├── Properties └── AssemblyInfo.cs ├── packages.config └── summary.txt /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | .DS_Store 10 | 11 | # Build results 12 | [Dd]ebug/ 13 | [Dd]ebugPublic/ 14 | [Rr]elease/ 15 | [Rr]eleases/ 16 | x64/ 17 | x86/ 18 | build/ 19 | bld/ 20 | [Bb]in/ 21 | [Oo]bj/ 22 | .vs/ 23 | 24 | # Roslyn cache directories 25 | *.ide/ 26 | 27 | # MSTest test Results 28 | [Tt]est[Rr]esult*/ 29 | [Bb]uild[Ll]og.* 30 | 31 | #NUNIT 32 | *.VisualState.xml 33 | TestResult.xml 34 | 35 | # Build Results of an ATL Project 36 | [Dd]ebugPS/ 37 | [Rr]eleasePS/ 38 | dlldata.c 39 | 40 | *_i.c 41 | *_p.c 42 | *_i.h 43 | *.ilk 44 | *.meta 45 | *.obj 46 | *.pch 47 | *.pdb 48 | *.mdb 49 | *.pgc 50 | *.pgd 51 | *.rsp 52 | *.sbr 53 | *.tlb 54 | *.tli 55 | *.tlh 56 | *.tmp 57 | *.tmp_proj 58 | *.log 59 | *.vspscc 60 | *.vssscc 61 | .builds 62 | *.pidb 63 | *.svclog 64 | *.scc 65 | 66 | # Chutzpah Test files 67 | _Chutzpah* 68 | 69 | # Visual C++ cache files 70 | ipch/ 71 | *.aps 72 | *.ncb 73 | *.opensdf 74 | *.sdf 75 | *.cachefile 76 | 77 | # Visual Studio profiler 78 | *.psess 79 | *.vsp 80 | *.vspx 81 | 82 | # TFS 2012 Local Workspace 83 | $tf/ 84 | 85 | # Guidance Automation Toolkit 86 | *.gpState 87 | 88 | # ReSharper is a .NET coding add-in 89 | _ReSharper*/ 90 | *.[Rr]e[Ss]harper 91 | *.DotSettings.user 92 | 93 | # JustCode is a .NET coding addin-in 94 | .JustCode 95 | 96 | # TeamCity is a build add-in 97 | _TeamCity* 98 | 99 | # DotCover is a Code Coverage Tool 100 | *.dotCover 101 | 102 | # NCrunch 103 | _NCrunch_* 104 | .*crunch*.local.xml 105 | 106 | # MightyMoose 107 | *.mm.* 108 | AutoTest.Net/ 109 | 110 | # Web workbench (sass) 111 | .sass-cache/ 112 | 113 | # Installshield output folder 114 | [Ee]xpress/ 115 | 116 | # DocProject is a documentation generator add-in 117 | DocProject/buildhelp/ 118 | DocProject/Help/*.HxT 119 | DocProject/Help/*.HxC 120 | DocProject/Help/*.hhc 121 | DocProject/Help/*.hhk 122 | DocProject/Help/*.hhp 123 | DocProject/Help/Html2 124 | DocProject/Help/html 125 | 126 | # Click-Once directory 127 | publish/ 128 | 129 | # Publish Web Output 130 | *.[Pp]ublish.xml 131 | *.azurePubxml 132 | # TODO: Comment the next line if you want to checkin your web deploy settings 133 | # but database connection strings (with potential passwords) will be unencrypted 134 | *.pubxml 135 | *.publishproj 136 | 137 | # NuGet Packages 138 | *.nupkg 139 | # The packages folder can be ignored because of Package Restore 140 | **/packages/* 141 | # except build/, which is used as an MSBuild target. 142 | !**/packages/build/ 143 | # If using the old MSBuild-Integrated Package Restore, uncomment this: 144 | #!**/packages/repositories.config 145 | 146 | # Windows Azure Build Output 147 | csx/ 148 | *.build.csdef 149 | 150 | # Windows Store app package directory 151 | AppPackages/ 152 | 153 | # Others 154 | sql/ 155 | *.Cache 156 | ClientBin/ 157 | [Ss]tyle[Cc]op.* 158 | ~$* 159 | *~ 160 | *.dbmdl 161 | *.dbproj.schemaview 162 | *.pfx 163 | *.publishsettings 164 | node_modules/ 165 | *.msi 166 | 167 | # RIA/Silverlight projects 168 | Generated_Code/ 169 | 170 | # Backup & report files from converting an old project file 171 | # to a newer Visual Studio version. Backup files are not needed, 172 | # because we have git ;-) 173 | _UpgradeReport_Files/ 174 | Backup*/ 175 | UpgradeLog*.XML 176 | UpgradeLog*.htm 177 | 178 | # SQL Server files 179 | *.mdf 180 | *.ldf 181 | 182 | # Business Intelligence projects 183 | *.rdl.data 184 | *.bim.layout 185 | *.bim_*.settings 186 | 187 | # Microsoft Fakes 188 | FakesAssemblies/ 189 | 190 | # Rhino 191 | *.rui_bak 192 | -------------------------------------------------------------------------------- /ConsoleCheckModelDemo/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ConsoleCheckModelDemo/ConsoleCheckModelDemo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {A5A10695-EDFA-4EFB-B36B-8271E693E2E4} 8 | Exe 9 | ConsoleCheckModelDemo 10 | ConsoleCheckModelDemo 11 | v4.8 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | ..\packages\GeometryGymIFC_Core.0.1.25\lib\netstandard2.0\GeometryGymIFCcore.dll 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /ConsoleCheckModelDemo/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using GeometryGym.Ifc; 8 | 9 | namespace ConsoleCheckModelDemo 10 | { 11 | internal class Program 12 | { 13 | static void Main(string[] args) 14 | { 15 | DatabaseIfc db = new DatabaseIfc(args[0]); 16 | new ModelCheckerDemo().checkModel(db); 17 | } 18 | } 19 | 20 | internal class ModelCheckerDemo 21 | { 22 | internal void checkModel(DatabaseIfc db) 23 | { 24 | List walls = db.OfType().ToList(); 25 | checkWallsFireRating(walls); 26 | } 27 | 28 | internal void checkWallsFireRating(List walls) 29 | { 30 | foreach (IfcWall wall in walls) 31 | { 32 | if(isClassified("21.22", "NL-Sfb", wall)) 33 | { 34 | checkProperty(wall, "AedesUVIP", "Firerating", true, new HashSet() { "30", "60", "90" }); 35 | } 36 | } 37 | } 38 | internal void checkProperty(IfcObjectDefinition obj, string psetName, string propertyName, bool permitType, HashSet allowableStrings) 39 | { 40 | IfcPropertySingleValue propertySingleValue = null; 41 | if (!string.IsNullOrEmpty(psetName)) 42 | { 43 | IfcPropertySet propertySet = null; 44 | if (obj is IfcObject ifcObject) 45 | propertySet = ifcObject.FindPropertySet(psetName, permitType) as IfcPropertySet; 46 | else 47 | propertySet = obj.FindPropertySet(psetName) as IfcPropertySet; 48 | if (propertySet == null) 49 | { 50 | System.Diagnostics.Debug.WriteLine("Test Fail " + obj.GlobalId + " " + obj.Name + " missing pset " + psetName); 51 | return; 52 | } 53 | propertySingleValue = propertySet.FindProperty(propertyName) as IfcPropertySingleValue; 54 | } 55 | else 56 | propertySingleValue = obj.FindProperty(propertyName) as IfcPropertySingleValue; 57 | if(propertySingleValue == null) 58 | { 59 | System.Diagnostics.Debug.WriteLine("Test Fail " + obj.GlobalId + " " + obj.Name + " missing property " + propertyName); 60 | return; 61 | } 62 | if(propertySingleValue.NominalValue == null) 63 | { 64 | System.Diagnostics.Debug.WriteLine("Test Fail " + obj.GlobalId + " " + obj.Name + " property " + propertyName + " has no value!"); 65 | return; 66 | } 67 | if(allowableStrings.Count > 0) 68 | { 69 | string propertyValue = propertySingleValue.NominalValue.ValueString; 70 | if(!allowableStrings.Contains(propertyValue)) 71 | { 72 | System.Diagnostics.Debug.WriteLine("Test Fail " + obj.GlobalId + " " + obj.Name + " property " + propertyName + " has unacceptable value :" + propertyValue); 73 | return; 74 | } 75 | 76 | } 77 | 78 | } 79 | internal bool isClassified(string classificationId, string classificationName, IfcObjectDefinition obj) 80 | { 81 | List references = obj.HasAssociations.OfType().ToList(); 82 | if(obj is IfcObject ifcObject) 83 | { 84 | IfcTypeObject typeObject = ifcObject.RelatingType(); 85 | if (typeObject != null) 86 | references.AddRange(typeObject.HasAssociations.OfType()); 87 | } 88 | 89 | foreach(IfcClassificationReference classificationReference in references.Select(x=>x.RelatingClassification).OfType()) 90 | { 91 | if (string.Compare(classificationId, classificationReference.Identification, true) == 0) 92 | { 93 | if (string.IsNullOrEmpty(classificationName)) 94 | return true; 95 | IfcClassification classification = classificationReference.ReferencedClassification(); 96 | if(classification != null && string.Compare(classification.Name, classificationName,true) == 0) 97 | return true; 98 | } 99 | } 100 | 101 | return false; 102 | } 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /ConsoleCheckModelDemo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ConsoleCheckModelDemo")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Geometry Gym Pty Ltd")] 12 | [assembly: AssemblyProduct("ConsoleCheckModelDemo")] 13 | [assembly: AssemblyCopyright("Copyright © Geometry Gym Pty Ltd 2022")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("a5a10695-edfa-4efb-b36b-8271e693e2e4")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ConsoleCheckModelDemo/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /ConsoleClassificationDemo/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ConsoleClassificationDemo/ConsoleClassificationDemo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {CEB724C5-DBE7-4813-89F7-0A0935EED746} 8 | Exe 9 | ConsoleClassificationDemo 10 | ConsoleClassificationDemo 11 | v4.7 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | ..\packages\GeometryGymIFC_Core.0.1.25\lib\netstandard2.0\GeometryGymIFCcore.dll 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /ConsoleClassificationDemo/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.IO; 5 | using System.Reflection; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | using GeometryGym.Ifc; 9 | 10 | namespace ConsoleClassificationDemo 11 | { 12 | class Program 13 | { 14 | static void Main(string[] args) 15 | { 16 | DatabaseIfc db = new DatabaseIfc(ModelView.Ifc4X3NotAssigned); 17 | db.Factory.Options.GenerateOwnerHistory = false; 18 | 19 | IfcProject project = new IfcProject(db, "DemoProject"); 20 | IfcProjectLibrary projectLibrary = new IfcProjectLibrary(db, "ClassificationLibrary"); 21 | project.AddDeclared(projectLibrary); 22 | 23 | IfcClassification classification = new IfcClassification(db, "MyClassification"); 24 | new IfcRelAssociatesClassification(classification, projectLibrary); 25 | 26 | IfcClassificationReference buildingElements = new IfcClassificationReference(classification) { Identification = "100", Name = "BuildingElements" }; 27 | IfcClassificationReference walls = new IfcClassificationReference(buildingElements) { Identification = "100.100", Name = "Walls" }; 28 | IfcClassificationReference partionWalls = new IfcClassificationReference(walls) { Identification = "100.100.002", Name = "PartiionWalls" }; 29 | 30 | IfcSimplePropertyTemplate simplePropertyTemplate = new IfcSimplePropertyTemplate(db, "IsExternal") { GlobalId = "3Yss80qXKHuO00025QrE$V", PrimaryMeasureType = "IfcBoolean" }; 31 | IfcPropertySetTemplate psetTemplate = new IfcPropertySetTemplate("Pset_WallCommon", simplePropertyTemplate) { GlobalId = "2VWFE0qXKHuO00025QrE$V" }; 32 | 33 | IfcPropertySingleValue psv = new IfcPropertySingleValue(db, "IsExternal", new IfcBoolean(false)); 34 | IfcPropertySet pset = new IfcPropertySet("Pset_WallCommon", psv); 35 | new IfcRelDefinesByTemplate(pset, psetTemplate); 36 | 37 | new IfcRelAssociatesClassification(partionWalls, pset); 38 | 39 | DirectoryInfo di = Directory.GetParent(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)); 40 | di = Directory.GetParent(di.FullName); 41 | db.WriteFile(Path.Combine(di.FullName, "TestClassification.ifc")); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /ConsoleClassificationDemo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ConsoleClassificationDemo")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Geometry Gym")] 12 | [assembly: AssemblyProduct("ConsoleClassificationDemo")] 13 | [assembly: AssemblyCopyright("Copyright © Geometry Gym 2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("ceb724c5-dbe7-4813-89f7-0a0935eed746")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ConsoleClassificationDemo/TestClassification.ifc: -------------------------------------------------------------------------------- 1 | ISO-10303-21; 2 | HEADER; 3 | FILE_DESCRIPTION(('ViewDefinition [Ifc4X3NotAssigned]'),'2;1'); 4 | FILE_NAME( 5 | /* name */ 'F:\X\5C\X\5CMy Work\X\5C\X\5CGeometry Gym\X\5C\X\5Csource code\X\5C\X\5COpen Source\X\5C\X\5CGeometryGymIFCExamples\X\5C\X\5CConsoleClassificationDemo\X\5C\X\5CTestClassification.ifc', 6 | /* time_stamp */ '2021-06-25T12:32:26', 7 | /* author */ ('JonMirtschin'), 8 | /* organization */ ('Geometry Gym'), 9 | /* preprocessor_version */ 'GeometryGymIFC v0.1.5.0 by Geometry Gym Pty Ltd built 2020-12-07T15:31:16', 10 | /* originating_system */ 'ConsoleClassificationDemo v1.0.0.0', 11 | /* authorization */ 'None'); 12 | 13 | FILE_SCHEMA (('IFC4X3_RC2')); 14 | ENDSEC; 15 | 16 | DATA; 17 | #1= IFCPROJECT('3FHvqk95TFrxEyCzmy19vF',$,'DemoProject',$,$,$,$,$,$); 18 | #2= IFCPROJECTLIBRARY('2GkcONhjHDJwznykK4AShX',$,'ClassificationLibrary',$,$,$,$,$,$); 19 | #3= IFCRELDECLARES('1W0Ll37b96yhkf$WciEd5h',$,$,$,#1,(#2)); 20 | #4= IFCCLASSIFICATION($,$,$,'MyClassification',$,$,$); 21 | #5= IFCRELASSOCIATESCLASSIFICATION('2X4sN9MDf6ixz6f8yzL66s',$,$,$,(#2),#4); 22 | #6= IFCCLASSIFICATIONREFERENCE($,'100','BuildingElements',#4,$,$); 23 | #7= IFCCLASSIFICATIONREFERENCE($,'100.100','Walls',#6,$,$); 24 | #8= IFCCLASSIFICATIONREFERENCE($,'100.100.002','PartiionWalls',#7,$,$); 25 | #9= IFCSIMPLEPROPERTYTEMPLATE('3Yss80qXKHuO00025QrE$V',$,'IsExternal',$,$,'IfcBoolean',$,$,$,$,$,$); 26 | #10= IFCPROPERTYSETTEMPLATE('2VWFE0qXKHuO00025QrE$V',$,'Pset_WallCommon',$,$,$,(#9)); 27 | #11= IFCPROPERTYSINGLEVALUE('IsExternal',$,IFCBOOLEAN(.F.),$); 28 | #12= IFCPROPERTYSET('3GsVZWhI5679LDmePmY8Ao',$,'Pset_WallCommon',$,(#11)); 29 | #13= IFCRELDEFINESBYTEMPLATE('1Gni$3RE12mRelI3J1JDki',$,$,$,(#12),#10); 30 | #14= IFCRELASSOCIATESCLASSIFICATION('3VOe3MLAr0gB_ZF7MnmiFs',$,$,$,(#12),#8); 31 | #15= IFCPERSON('JonMirtschin','JonMirtschin',$,$,$,$,$,$); 32 | #16= IFCORGANIZATION($,'Geometry Gym',$,$,$); 33 | ENDSEC; 34 | 35 | END-ISO-10303-21; 36 | 37 | -------------------------------------------------------------------------------- /ConsoleClassificationDemo/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /ConsoleCreateSpanAnnotation/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /ConsoleCreateSpanAnnotation/ConsoleCreateSpanAnnotation.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {AC852EC7-1CF2-47D5-8044-8E8CF2D01B3B} 8 | Exe 9 | ConsoleCreateSpanAnnotation 10 | ConsoleCreateSpanAnnotation 11 | v4.7.2 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | ..\packages\GeometryGymIFC_Core.0.1.25\lib\netstandard2.0\GeometryGymIFCcore.dll 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /ConsoleCreateSpanAnnotation/Program.cs: -------------------------------------------------------------------------------- 1 | using GeometryGym.Ifc; 2 | using GeometryGym.STEP; 3 | using System.Collections.Generic; 4 | 5 | namespace ConsoleCreateSpanAnnotation 6 | { 7 | internal class Program 8 | { 9 | private static void Main(string[] args) 10 | { 11 | var database = new DatabaseIfc(ModelView.Ifc4X3NotAssigned); 12 | database.Factory.ApplicationDeveloper = "Sebastian Esser"; 13 | // turn owner history off 14 | database.Factory.Options.GenerateOwnerHistory = false; 15 | 16 | // basic setup 17 | var site = new IfcSite(database, "SiteA"); 18 | var project = new IfcProject( 19 | site, 20 | "SampleProject with a span annotation", 21 | IfcUnitAssignment.Length.Metre 22 | ); 23 | 24 | // create an annotation 25 | var annotation = new IfcAnnotation(database) 26 | { 27 | Name = "DesignSpeed", 28 | }; 29 | annotation.AddComment("Annotation item span-placed along the alignment"); 30 | 31 | // link annotation with site 32 | var contained = new IfcRelContainedInSpatialStructure(site); 33 | contained.RelatedElements.Add(annotation); 34 | 35 | #region Alignment 36 | 37 | var alignment = new IfcAlignment(site) 38 | { 39 | Name = "Basic alignment with a single horizontal segment" 40 | }; 41 | alignment.AddComment("Generate alignment representation"); 42 | 43 | // semantic 44 | var horizSegment = new IfcAlignmentHorizontalSegment( 45 | new IfcCartesianPoint(database, 5, 10), 46 | 0, 47 | 0, 48 | 0, 49 | 200, 50 | IfcAlignmentHorizontalSegmentTypeEnum.LINE); 51 | 52 | // geometric representation of a single segment. It gets referenced by IfcCompositeCurve.segments and IfcAlignmentSegment.Representation 53 | var curveSegment = new IfcCurveSegment( 54 | IfcTransitionCode.CONTSAMEGRADIENTSAMECURVATURE, 55 | new IfcAxis2Placement2D(new IfcCartesianPoint(database, 0, 0)), 56 | new IfcParameterValue(0), 57 | new IfcParameterValue(200), 58 | null); 59 | 60 | 61 | var segments = new List { curveSegment }; 62 | var compositeCurve = new IfcCompositeCurve(segments); 63 | 64 | var rep = new IfcShapeRepresentation(compositeCurve) 65 | { 66 | RepresentationIdentifier = "Axis", 67 | RepresentationType = "Curve2D" 68 | }; 69 | 70 | alignment.Representation = new IfcProductDefinitionShape(rep); 71 | alignment.Axis = compositeCurve; 72 | 73 | // create an alignment horizontal instance that takes a list of horizontal segments 74 | var alignmentHorizontal = new IfcAlignmentHorizontal(database) 75 | { 76 | Segments = new LIST() { horizSegment } 77 | }; 78 | 79 | // link alignment and and its horizontal part semantically 80 | new IfcRelAggregates(alignment, alignmentHorizontal); 81 | 82 | // create a new alignmentSegment with then gets one curve segment as its geometric representation 83 | var alignmentSegment = new IfcAlignmentSegment(database); 84 | 85 | // link horizontal alignment with the recently created alignment segment 86 | new IfcRelNests(alignmentHorizontal, alignmentSegment); // sorted list -> IfcRelNests 87 | 88 | // connect geom representation to this segment 89 | alignmentSegment.Representation = new IfcProductDefinitionShape(new IfcShapeRepresentation(curveSegment)); 90 | 91 | #endregion Alignment 92 | 93 | #region Annotation placement 94 | 95 | alignmentSegment.AddComment("Create placement for annotation"); 96 | 97 | var axis2place = new IfcAxis2PlacementLinear( 98 | new IfcPointByDistanceExpression(25, compositeCurve), 99 | null, 100 | null); 101 | 102 | var linPlacement = new IfcLinearPlacement(axis2place); 103 | linPlacement.Distance = new IfcPointByDistanceExpression(128, compositeCurve); 104 | annotation.ObjectPlacement = linPlacement; 105 | 106 | #endregion Annotation placement 107 | 108 | #region PSet 109 | 110 | //var lengthUnit = new IfcSIUnit(database, IfcUnitEnum.LENGTHUNIT, IfcSIPrefix.NONE, IfcSIUnitName.METRE); 111 | 112 | var lengthDerivedUnit = new IfcSIUnit(database, IfcUnitEnum.LENGTHUNIT, IfcSIPrefix.KILO, IfcSIUnitName.METRE); 113 | lengthDerivedUnit.AddComment("PSet setup"); 114 | var timeBaseUnit = new IfcSIUnit(database, IfcUnitEnum.TIMEUNIT, IfcSIPrefix.NONE, IfcSIUnitName.SECOND); 115 | var timeDerivedUnit = new IfcConversionBasedUnit(IfcUnitEnum.TIMEUNIT, "hour", new IfcMeasureWithUnit(new IfcPositiveInteger(3600), timeBaseUnit)); 116 | 117 | var ifcderivedunitelem1 = new IfcDerivedUnitElement(lengthDerivedUnit, 1); 118 | var ifcderivedunitelem2 = new IfcDerivedUnitElement(timeDerivedUnit, -1); 119 | var speedUnit = new IfcDerivedUnit( 120 | new List { ifcderivedunitelem1, ifcderivedunitelem2 }, 121 | IfcDerivedUnitEnum.LINEARVELOCITYUNIT); 122 | 123 | var pSet = new IfcPropertySet(annotation, "PSET_SpeedData", new List 124 | { 125 | new IfcPropertySingleValue(database, "CargoSpeed", new IfcLinearVelocityMeasure(60), speedUnit), 126 | new IfcPropertySingleValue(database, "DesignSpeed", new IfcLinearVelocityMeasure(110), speedUnit) 127 | }); 128 | 129 | #endregion PSet 130 | 131 | database.WriteFile("AlignmentWithSpanAnnotation.ifc"); 132 | } 133 | } 134 | } -------------------------------------------------------------------------------- /ConsoleCreateSpanAnnotation/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ConsoleCreateSpanAnnotation")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ConsoleCreateSpanAnnotation")] 13 | [assembly: AssemblyCopyright("Copyright © 2020")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("ac852ec7-1cf2-47d5-8044-8e8cf2d01b3b")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ConsoleCreateSpanAnnotation/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /ConsoleCreateSpatialStructure/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ConsoleCreateSpatialStructure/ConsoleCreateSpatialStructure.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {68792D4F-10A5-4541-BA0E-C1EA5DCD9AEF} 8 | Exe 9 | ConsoleCreateSpatialStructure 10 | ConsoleCreateSpatialStructure 11 | v4.7.2 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | ..\packages\GeometryGymIFC_Core.0.1.25\lib\netstandard2.0\GeometryGymIFCcore.dll 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /ConsoleCreateSpatialStructure/DesiredResult.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeometryGym/GeometryGymIFCExamples/dc00871a1ba4d9205df4c8429cd32f8481d4672d/ConsoleCreateSpatialStructure/DesiredResult.png -------------------------------------------------------------------------------- /ConsoleCreateSpatialStructure/IFC4X3RC1_spatialDecomposition.ifc: -------------------------------------------------------------------------------- 1 | ISO-10303-21; 2 | HEADER; 3 | FILE_DESCRIPTION(('ViewDefinition [Ifc4X3NotAssigned]'),'2;1'); 4 | FILE_NAME( 5 | /* name */ 'IFC4X3RC1_spatialDecomposition.ifc', 6 | /* time_stamp */ '2020-09-11T11:01:49', 7 | /* author */ ('Sebastian Esser'), 8 | /* organization */ ('Unknown'), 9 | /* preprocessor_version */ 'GeometryGymIFC v0.1.0.0 by Geometry Gym Pty Ltd built 2020-09-10T11:12:12', 10 | /* originating_system */ 'ConsoleCreateSpatialStructure v1.0.0.0', 11 | /* authorization */ 'None'); 12 | 13 | FILE_SCHEMA (('IFC4X3RC1')); 14 | ENDSEC; 15 | 16 | DATA; 17 | #1= IFCCARTESIANPOINT((0.0,0.0,0.0)); 18 | #2= IFCDIRECTION((1.0,0.0,0.0)); 19 | #3= IFCDIRECTION((0.0,1.0,0.0)); 20 | #4= IFCDIRECTION((0.0,0.0,1.0)); 21 | #5= IFCAXIS2PLACEMENT3D(#1,$,$); 22 | #6= IFCCARTESIANPOINT((0.0,0.0)); 23 | #7= IFCAXIS2PLACEMENT2D(#6,$); 24 | #8= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); 25 | #9= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); 26 | #10= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); 27 | #11= IFCCARTESIANPOINT((0.0,0.0,0.0)); 28 | #12= IFCAXIS2PLACEMENT3D(#11,#4,#2); 29 | #13= IFCLOCALPLACEMENT($,#12); 30 | #14= IFCSITE('0aAHDdpVrDm89jEVEtXtO2',#20,'sampleSite',$,$,#13,$,$,$,$,$,$,$,$); 31 | #15= IFCPERSON('Sebastian Esser','Sebastian Esser',$,$,$,$,$,$); 32 | #16= IFCORGANIZATION($,'Unknown',$,$,$); 33 | #17= IFCPERSONANDORGANIZATION(#15,#16,$); 34 | #18= IFCAPPLICATION(#19,'0.1.0.0','ConsoleCreateSpatialStructure v1.0.0.0','ConsoleCreateSpatialStructure v1.0.0.0'); 35 | #19= IFCORGANIZATION($,'Geometry Gym Pty Ltd',$,$,$); 36 | #20= IFCOWNERHISTORY(#17,#18,$,.ADDED.,1599814909,$,$,1599814909); 37 | #23= IFCPROJECT('0muHaJQlbBy938wz4rPdB_',#20,'myProject',$,$,$,$,$,#24); 38 | #24= IFCUNITASSIGNMENT((#8,#9,#10,#25,#26)); 39 | #25= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); 40 | #26= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.); 41 | #27= IFCRELAGGREGATES('1ze7aKHAD5VepXhSWWwDge',#20,$,$,#23,(#14)); 42 | #28= IFCCARTESIANPOINT((0.0,0.0,0.0)); 43 | #29= IFCAXIS2PLACEMENT3D(#28,$,$); 44 | #30= IFCLOCALPLACEMENT(#13,#29); 45 | #31= IFCFACILITY('1RF$TyqhT0pP2e$LqVRAdw',#20,'TrafficWayA',$,$,#30,$,$,.COMPLEX.); 46 | #34= IFCRELAGGREGATES('34U6CZx_5B$hHEISgPuvbY',#20,$,$,#14,(#31,#57)); 47 | #35= IFCCARTESIANPOINT((0.0,0.0,0.0)); 48 | #36= IFCAXIS2PLACEMENT3D(#35,$,$); 49 | #37= IFCLOCALPLACEMENT(#30,#36); 50 | #38= IFCFACILITYPART('3PUx0cxfr9MPUHCinEDWQ2',#20,'myRoadPart01','TrafficWayA -> Segment 1',$,#37,$,$,$,IFCROADPARTTYPEENUM(.ROADSEGMENT.),.LONGITUDINAL.); 51 | #41= IFCRELAGGREGATES('3IWOYZWP92sP0NpU9Pge1g',#20,$,$,#31,(#38,#45,#51)); 52 | #42= IFCCARTESIANPOINT((0.0,0.0,0.0)); 53 | #43= IFCAXIS2PLACEMENT3D(#42,$,$); 54 | #44= IFCLOCALPLACEMENT(#30,#43); 55 | #45= IFCFACILITY('1xI3Ksj4HCpvyBBLJVRsn8',#20,'myBridge','TrafficWayA -> Segment 2',$,#44,$,$,$); 56 | #48= IFCCARTESIANPOINT((0.0,0.0,0.0)); 57 | #49= IFCAXIS2PLACEMENT3D(#48,$,$); 58 | #50= IFCLOCALPLACEMENT(#30,#49); 59 | #51= IFCFACILITYPART('21qMfgpfH2lxA9jK1DE78Y',#20,'myRoadPart02','TrafficWayA -> Segment 3',$,#50,$,$,$,IFCROADPARTTYPEENUM(.ROADSEGMENT.),.LONGITUDINAL.); 60 | #54= IFCCARTESIANPOINT((0.0,0.0,0.0)); 61 | #55= IFCAXIS2PLACEMENT3D(#54,$,$); 62 | #56= IFCLOCALPLACEMENT(#13,#55); 63 | #57= IFCFACILITY('2wIf45vCv8k9N_mWANTXvc',#20,'River',$,$,#56,$,$,$); 64 | #60= IFCCARTESIANPOINT((0.0,0.0,0.0)); 65 | #61= IFCAXIS2PLACEMENT3D(#60,$,$); 66 | #62= IFCLOCALPLACEMENT(#56,#61); 67 | #63= IFCFACILITYPART('3yczsaPZzCMv2YTz6Ah91E',#20,'myRiver','River that passes under the bridge',$,#62,$,$,$,IFCMARINEPARTTYPEENUM(.WATERFIELD.),.LONGITUDINAL.); 68 | #66= IFCRELAGGREGATES('1YgB4CFvT0ru$63u0uqD_s',#20,$,$,#57,(#63)); 69 | ENDSEC; 70 | 71 | END-ISO-10303-21; 72 | 73 | -------------------------------------------------------------------------------- /ConsoleCreateSpatialStructure/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using GeometryGym.Ifc; 7 | 8 | namespace ConsoleCreateSpatialStructure 9 | { 10 | class Program 11 | { 12 | static void Main(string[] args) 13 | { 14 | // create database 15 | var database = new DatabaseIfc(ModelView.Ifc4X3NotAssigned); 16 | 17 | // create IfcSite instance 18 | var site = new IfcSite(database, "sampleSite"); 19 | 20 | // create top-most spatial structure element IfcProject, set units and assign facility to project 21 | var project = new IfcProject(site, "myProject", IfcUnitAssignment.Length.Metre); 22 | 23 | 24 | // -- create facility representing the logical unit of road-bridge-road -- 25 | var trafficFacility = new IfcFacility(site, "TrafficWayA") 26 | { 27 | CompositionType = IfcElementCompositionEnum.COMPLEX 28 | }; 29 | // create parts/child-facilities and assign them to the traffic way 30 | var facilityPart1 = new IfcFacilityPart( 31 | trafficFacility, 32 | "myRoadPart01", 33 | new IfcFacilityPartTypeSelect( 34 | IfcRoadPartTypeEnum.ROADSEGMENT), 35 | IfcFacilityUsageEnum.LONGITUDINAL); 36 | 37 | facilityPart1.Description = "TrafficWayA -> Segment 1"; 38 | 39 | var facilityPart2 = new IfcFacility(trafficFacility, "myBridge") 40 | { 41 | Description = "TrafficWayA -> Segment 2" 42 | }; 43 | 44 | var facilityPart3 = new IfcFacilityPart( 45 | trafficFacility, 46 | "myRoadPart02", 47 | new IfcFacilityPartTypeSelect( 48 | IfcRoadPartTypeEnum.ROADSEGMENT), 49 | IfcFacilityUsageEnum.LONGITUDINAL) 50 | { 51 | Description = "TrafficWayA -> Segment 3" 52 | }; 53 | 54 | // -- river facility -- 55 | var river = new IfcFacility(site, "River") 56 | { 57 | CompositionType = IfcElementCompositionEnum.NOTDEFINED 58 | }; 59 | // add a part to the river 60 | var riverPart = new IfcFacilityPart( 61 | river, 62 | "myRiver", 63 | new IfcFacilityPartTypeSelect( 64 | IfcMarinePartTypeEnum.WATERFIELD), 65 | IfcFacilityUsageEnum.LONGITUDINAL) {Description = "River that passes under the bridge"}; 66 | 67 | // store the IFC model 68 | database.WriteFile("IFC4X3RC1_spatialDecomposition.ifc"); 69 | 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /ConsoleCreateSpatialStructure/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ConsoleCreateSpatialStructure")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ConsoleCreateSpatialStructure")] 13 | [assembly: AssemblyCopyright("Copyright © 2020")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("68792d4f-10a5-4541-ba0e-c1ea5dcd9aef")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ConsoleCreateSpatialStructure/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /ConsoleCreateSurfaceMember/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /ConsoleCreateSurfaceMember/ConsoleCreateSurfaceMember.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {442A078B-9EE7-4136-AD2B-831DBAB519EE} 8 | Exe 9 | ConsoleCreateSurfaceMember 10 | ConsoleCreateSurfaceMember 11 | v4.8 12 | 512 13 | true 14 | 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | ..\packages\GeometryGymIFC_Core.0.1.25\lib\netstandard2.0\GeometryGymIFCcore.dll 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /ConsoleCreateSurfaceMember/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Reflection; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | using GeometryGym.Ifc; 10 | 11 | namespace ConsoleCreateSurfaceMember 12 | { 13 | class Program 14 | { 15 | static void Main(string[] args) 16 | { 17 | DatabaseIfc db = new DatabaseIfc(ModelView.Ifc4DesignTransfer); 18 | IfcBuilding building = new IfcBuilding(db, "IfcBuilding") { }; 19 | IfcProject project = new IfcProject(building, "IfcProject", IfcUnitAssignment.Length.Millimetre) { }; 20 | 21 | IfcMaterial material = new IfcMaterial(db, "Concrete"); 22 | 23 | IfcStructuralAnalysisModel analysisModel = new IfcStructuralAnalysisModel(building, "Analysis Model", IfcAnalysisModelTypeEnum.LOADING_3D); 24 | double y = -1309.6875; 25 | IfcCartesianPoint point = new IfcCartesianPoint(db, -3968.75, y, 3000.0); 26 | IfcPlane plane = new IfcPlane(new IfcAxis2Placement3D(point, db.Factory.YAxisNegative,db.Factory.XAxis)); 27 | List bounds = new List(); 28 | List points = new List(); 29 | points.Add(point); 30 | points.Add(new IfcCartesianPoint(db, 3071.25, y, 3000.0)); 31 | points.Add(new IfcCartesianPoint(db, 3071.25, y, 0.0)); 32 | points.Add(new IfcCartesianPoint(db, -3968.75, y, 0.0)); 33 | bounds.Add(new IfcFaceOuterBound(new IfcPolyLoop(points),true)); 34 | points.Clear(); 35 | points.Add(new IfcCartesianPoint(db, 551.25, y, 1000.0)); 36 | points.Add(new IfcCartesianPoint(db, -448.75, y, 1000.0)); 37 | points.Add(new IfcCartesianPoint(db, -448.75, y, 2000.0)); 38 | points.Add(new IfcCartesianPoint(db, 551.25, y, 2000.0)); 39 | bounds.Add(new IfcFaceBound(new IfcPolyLoop(points),true)); 40 | IfcFaceSurface face = new IfcFaceSurface(bounds, plane, true); 41 | IfcStructuralSurfaceMember surfaceMember = new IfcStructuralSurfaceMember(analysisModel, face, material, 1, 200); 42 | DirectoryInfo di = Directory.GetParent(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)); 43 | di = Directory.GetParent(di.FullName); 44 | db.WriteFile(Path.Combine(di.FullName, "surfaceMember.ifc")); 45 | db.WriteFile(Path.Combine(di.FullName, "surfaceMember.ifcxml")); 46 | db.WriteFile(Path.Combine(di.FullName, "surfaceMember.ifcjson")); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /ConsoleCreateSurfaceMember/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ConsoleCreateSurfaceMember")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("HP Inc.")] 12 | [assembly: AssemblyProduct("ConsoleCreateSurfaceMember")] 13 | [assembly: AssemblyCopyright("Copyright © HP Inc. 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("442a078b-9ee7-4136-ad2b-831dbab519ee")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ConsoleCreateSurfaceMember/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /ConsoleCreateSurfaceMember/surfaceMember.ifc: -------------------------------------------------------------------------------- 1 | ISO-10303-21; 2 | HEADER; 3 | FILE_DESCRIPTION(('ViewDefinition [DesignTransferView_V1]'),'2;1'); 4 | FILE_NAME( 5 | /* name */ 'F:\\My Work\\Geometry Gym\\source code\\Open Source\\GeometryGymIfcExamples\\ConsoleCreateSurfaceMember\\surfaceMember.ifc', 6 | /* time_stamp */ '2019-03-11T10:42:53', 7 | /* author */ ('Jon'), 8 | /* organization */ ('Unknown'), 9 | /* preprocessor_version */ 'GeometryGymIFC v0.0.20.0 by Geometry Gym Pty Ltd built 2019-03-10T12:19:50', 10 | /* originating_system */ 'ConsoleCreateSurfaceMember v1.0.0.0', 11 | /* authorization */ 'None'); 12 | 13 | FILE_SCHEMA (('IFC4X2')); 14 | ENDSEC; 15 | 16 | DATA; 17 | #1= IFCCARTESIANPOINT((0.0,0.0,0.0)); 18 | #2= IFCDIRECTION((1.0,0.0,0.0)); 19 | #3= IFCDIRECTION((0.0,1.0,0.0)); 20 | #4= IFCDIRECTION((0.0,0.0,1.0)); 21 | #5= IFCAXIS2PLACEMENT3D(#1,$,$); 22 | #6= IFCCARTESIANPOINT((0.0,0.0)); 23 | #7= IFCAXIS2PLACEMENT2D(#6,$); 24 | #8= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); 25 | #9= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); 26 | #10= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); 27 | #11= IFCCARTESIANPOINT((0.0,0.0,0.0)); 28 | #12= IFCAXIS2PLACEMENT3D(#11,#4,#2); 29 | #13= IFCLOCALPLACEMENT($,#12); 30 | #14= IFCBUILDING('2xQf6k9tT3oO4mFrprSGGH',#20,'IfcBuilding',$,$,#13,$,$,$,$,$,#23); 31 | #15= IFCPERSON('Jon','Jon',$,$,$,$,$,$); 32 | #16= IFCORGANIZATION($,'Unknown',$,$,$); 33 | #17= IFCPERSONANDORGANIZATION(#15,#16,$); 34 | #18= IFCAPPLICATION(#19,'0.0.20.0','ConsoleCreateSurfaceMember v1.0.0.0','ConsoleCreateSurfaceMember v1.0.0.0'); 35 | #19= IFCORGANIZATION($,'Geometry Gym Pty Ltd',$,$,$); 36 | #20= IFCOWNERHISTORY(#17,#18,$,.ADDED.,$,$,$,1552261373); 37 | #23= IFCPOSTALADDRESS($,$,$,$,('Unknown'),$,'Unknown',$,'Unknown','Unknown'); 38 | #24= IFCPROJECT('1GaJRTNDP3gfTTvlQjeh9g',#20,'IfcProject',$,$,$,$,(#92),#25); 39 | #25= IFCUNITASSIGNMENT((#26,#9,#10,#27,#28,#52,#55,#58,#60,#63,#66,#70,#71,#73,#75,#76,#79,#80,#82,#85,#90)); 40 | #26= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.); 41 | #27= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); 42 | #28= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.); 43 | #29= IFCRELAGGREGATES('3GYQwBJlf6Qg4HnXcOkJa5',#20,$,$,#24,(#14)); 44 | #30= IFCMATERIAL('Concrete',$,$); 45 | #31= IFCSTRUCTURALANALYSISMODEL('0jIerhj$v6VQsUhCjjK78i',#20,'Analysis Model',$,$,.LOADING_3D.,$,$,$,#33); 46 | #32= IFCRELSERVICESBUILDINGS('0q8DY3J5n9PulwdmUA$K2O',#20,'Analysis Model',$,#31,(#14)); 47 | #33= IFCLOCALPLACEMENT(#13,#5); 48 | #34= IFCCARTESIANPOINT((-3968.75,-1309.6875,3000.0)); 49 | #35= IFCDIRECTION((0.0,-1.0,0.0)); 50 | #36= IFCAXIS2PLACEMENT3D(#34,#35,#2); 51 | #37= IFCPLANE(#36); 52 | #38= IFCCARTESIANPOINT((3071.25,-1309.6875,3000.0)); 53 | #39= IFCCARTESIANPOINT((3071.25,-1309.6875,0.0)); 54 | #40= IFCCARTESIANPOINT((-3968.75,-1309.6875,0.0)); 55 | #41= IFCPOLYLOOP((#34,#38,#39,#40)); 56 | #42= IFCFACEOUTERBOUND(#41,.T.); 57 | #43= IFCCARTESIANPOINT((551.25,-1309.6875,1000.0)); 58 | #44= IFCCARTESIANPOINT((-448.75,-1309.6875,1000.0)); 59 | #45= IFCCARTESIANPOINT((-448.75,-1309.6875,2000.0)); 60 | #46= IFCCARTESIANPOINT((551.25,-1309.6875,2000.0)); 61 | #47= IFCPOLYLOOP((#43,#44,#45,#46)); 62 | #48= IFCFACEBOUND(#47,.T.); 63 | #49= IFCFACESURFACE((#42,#48),#37,.T.); 64 | #50= IFCSTRUCTURALSURFACEMEMBER('2NLMheYlP7Q8nixbVQjxxv',#20,'1',$,$,#33,#98,.NOTDEFINED.,200.0); 65 | #51= IFCRELASSIGNSTOGROUP('2mhOb50dv3BPmiviKO3KNB',#20,$,$,(#50),$,#31); 66 | #52= IFCSIUNIT(*,.FORCEUNIT.,$,.NEWTON.); 67 | #53= IFCDERIVEDUNITELEMENT(#52,1); 68 | #54= IFCDERIVEDUNITELEMENT(#8,1); 69 | #55= IFCDERIVEDUNIT((#53,#54),.TORQUEUNIT.,$); 70 | #56= IFCDERIVEDUNITELEMENT(#52,1); 71 | #57= IFCDERIVEDUNITELEMENT(#8,-1); 72 | #58= IFCDERIVEDUNIT((#56,#57),.LINEARFORCEUNIT.,$); 73 | #59= IFCDERIVEDUNITELEMENT(#52,1); 74 | #60= IFCDERIVEDUNIT((#59),.LINEARMOMENTUNIT.,$); 75 | #61= IFCDERIVEDUNITELEMENT(#52,1); 76 | #62= IFCDERIVEDUNITELEMENT(#8,-2); 77 | #63= IFCDERIVEDUNIT((#61,#62),.PLANARFORCEUNIT.,$); 78 | #64= IFCDERIVEDUNITELEMENT(#52,1); 79 | #65= IFCDERIVEDUNITELEMENT(#8,-2); 80 | #66= IFCDERIVEDUNIT((#64,#65),.MODULUSOFELASTICITYUNIT.,$); 81 | #67= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.); 82 | #68= IFCDERIVEDUNITELEMENT(#8,1); 83 | #69= IFCDERIVEDUNITELEMENT(#67,-2); 84 | #70= IFCDERIVEDUNIT((#68,#69),.ACCELERATIONUNIT.,$); 85 | #71= IFCSIUNIT(*,.PRESSUREUNIT.,$,.PASCAL.); 86 | #72= IFCDERIVEDUNITELEMENT(#8,3); 87 | #73= IFCDERIVEDUNIT((#72),.SECTIONMODULUSUNIT.,$); 88 | #74= IFCDERIVEDUNITELEMENT(#8,4); 89 | #75= IFCDERIVEDUNIT((#74),.MOMENTOFINERTIAUNIT.,$); 90 | #76= IFCSIUNIT(*,.MASSUNIT.,.KILO.,.GRAM.); 91 | #77= IFCDERIVEDUNITELEMENT(#76,1); 92 | #78= IFCDERIVEDUNITELEMENT(#10,-1); 93 | #79= IFCDERIVEDUNIT((#77,#78),.MASSDENSITYUNIT.,$); 94 | #80= IFCSIUNIT(*,.THERMODYNAMICTEMPERATUREUNIT.,$,.KELVIN.); 95 | #81= IFCDERIVEDUNITELEMENT(#80,-1); 96 | #82= IFCDERIVEDUNIT((#81),.THERMALEXPANSIONCOEFFICIENTUNIT.,$); 97 | #83= IFCDERIVEDUNITELEMENT(#52,1); 98 | #84= IFCDERIVEDUNITELEMENT(#8,-1); 99 | #85= IFCDERIVEDUNIT((#83,#84),.LINEARSTIFFNESSUNIT.,$); 100 | #86= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); 101 | #87= IFCDERIVEDUNITELEMENT(#52,1); 102 | #88= IFCDERIVEDUNITELEMENT(#8,1); 103 | #89= IFCDERIVEDUNITELEMENT(#86,-1); 104 | #90= IFCDERIVEDUNIT((#87,#88,#89),.ROTATIONALSTIFFNESSUNIT.,$); 105 | #91= IFCRELASSOCIATESMATERIAL('0QC19HeBv0oQ$KNx4q9fSL',#20,$,$,(#50),#30); 106 | #92= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.0001,#94,#95); 107 | #93= IFCCARTESIANPOINT((0.0,0.0,0.0)); 108 | #94= IFCAXIS2PLACEMENT3D(#93,$,$); 109 | #95= IFCDIRECTION((0.0,1.0)); 110 | #96= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#92,$,.GRAPH_VIEW.,$); 111 | #97= IFCTOPOLOGYREPRESENTATION(#96,'Axis','Face',(#49)); 112 | #98= IFCPRODUCTDEFINITIONSHAPE($,$,(#97)); 113 | ENDSEC; 114 | 115 | END-ISO-10303-21; 116 | 117 | -------------------------------------------------------------------------------- /ConsoleCreateSurfaceMember/surfaceMember.ifcjson: -------------------------------------------------------------------------------- 1 | {"HEADER":{"FILE_DESCRIPTION":{"description":"ViewDefinition[DesignTransferView_V1]","implementation_level":"2;1"},"FILE_NAME":{"name":"F:\\My Work\\Geometry Gym\\source code\\Open Source\\GeometryGymIfcExamples\\ConsoleCreateSurfaceMember\\surfaceMember.ifcjson","time_stamp":"2019-03-11T10:42:54","author":"Jon","organization":"Unknown","preprocessor_version":"GeometryGymIFC v0.0.20.0 by Geometry Gym Pty Ltd built 2019-03-10T12:19:50","originating_system":"ConsoleCreateSurfaceMember v1.0.0.0","authorization":"None"},"FILE_SCHEMA":{"schema_identifiers":"IFC4"}},"DATA":[{"type":"IfcProject","GlobalId":"1GaJRTNDP3gfTTvlQjeh9g","OwnerHistory":{"type":"IfcOwnerHistory","id":"2JLuLY_1n4TPb9m2zo4twX","OwningUser":{"type":"IfcPersonAndOrganization","id":"0HJ17tIVr0nvahkX41uT9e","ThePerson":{"type":"IfcPerson","id":"2P8_DZuaLD3h7EAYdrWyDU","Identification":"Jon"},"TheOrganization":{"type":"IfcOrganization","id":"3o9ADUoGP1sR4fQgRetMN3","Name":"Unknown"}},"OwningApplication":{"type":"IfcApplication","id":"1VZZmbZYb5bw68dyg9TfRi","ApplicationDeveloper":{"type":"IfcOrganization","id":"0sX4tLtlbCe8IJaLZY3Zhb","Name":"Geometry Gym Pty Ltd"},"Version":"0.0.20.0","ApplicationFullName":"ConsoleCreateSurfaceMember v1.0.0.0","ApplicationIdentifier":"ConsoleCreateSurfaceMember v1.0.0.0"},"ChangeAction":"ADDED","CreationDate":1552261373},"Name":"IfcProject","IsDecomposedBy":[{"type":"IfcRelAggregates","GlobalId":"3GYQwBJlf6Qg4HnXcOkJa5","OwnerHistory":{"href":"2JLuLY_1n4TPb9m2zo4twX"},"RelatedObjects":[{"type":"IfcBuilding","GlobalId":"2xQf6k9tT3oO4mFrprSGGH","OwnerHistory":{"href":"2JLuLY_1n4TPb9m2zo4twX"},"Name":"IfcBuilding","ObjectPlacement":{"type":"IfcLocalPlacement","id":"2uANxhgCPDxh8OOkzV0gq_","RelativePlacement":{"type":"IfcAxis2Placement3D","Location":{"type":"IfcCartesianPoint","Coordinates":"0 0 0"}}},"ContainsElements":[{"type":"IfcRelContainedInSpatialStructure","GlobalId":"0$gYeH0VX8RQu0z1IyG363","OwnerHistory":{"href":"2JLuLY_1n4TPb9m2zo4twX"},"Name":"Building","Description":"Building Container for Elements","RelatedElements":[]}],"ServicedBySystems":[{"type":"IfcRelServicesBuildings","GlobalId":"0q8DY3J5n9PulwdmUA$K2O","OwnerHistory":{"href":"2JLuLY_1n4TPb9m2zo4twX"},"Name":"Analysis Model","RelatingSystem":{"type":"IfcStructuralAnalysisModel","GlobalId":"0jIerhj$v6VQsUhCjjK78i","OwnerHistory":{"href":"2JLuLY_1n4TPb9m2zo4twX"},"Name":"Analysis Model","IsGroupedBy":[{"type":"IfcRelAssignsToGroup","GlobalId":"2mhOb50dv3BPmiviKO3KNB","OwnerHistory":{"href":"2JLuLY_1n4TPb9m2zo4twX"},"RelatedObjects":[{"type":"IfcStructuralSurfaceMember","GlobalId":"2NLMheYlP7Q8nixbVQjxxv","OwnerHistory":{"href":"2JLuLY_1n4TPb9m2zo4twX"},"Name":"1","HasAssociations":[{"type":"IfcRelAssociatesMaterial","GlobalId":"0QC19HeBv0oQ$KNx4q9fSL","OwnerHistory":{"href":"2JLuLY_1n4TPb9m2zo4twX"},"RelatingMaterial":{"type":"IfcMaterial","id":"0B$Zlu_PDCUfVeL_Bej40g","Name":"Concrete"}}],"ObjectPlacement":{"type":"IfcLocalPlacement","id":"3ZT9OvO09DjurXNK_zGKTH","PlacementRelTo":{"href":"2uANxhgCPDxh8OOkzV0gq_"},"RelativePlacement":{"type":"IfcAxis2Placement3D","Location":{"type":"IfcCartesianPoint","Coordinates":"0 0 0"}}},"Representation":{"type":"IfcProductDefinitionShape","id":"0W3q50Ipv2thcE0xpAUR_0","Representations":[{"type":"IfcTopologyRepresentation","ContextOfItems":{"type":"IfcGeometricRepresentationSubContext","id":"26nTvAkoj6sgI5CSvh3Qxz","ContextIdentifier":"Axis","ContextType":"Model","ParentContext":{"type":"IfcGeometricRepresentationContext","ContextType":"Model","CoordinateSpaceDimension":3,"Precision":0.0001,"WorldCoordinateSystem":{"type":"IfcAxis2Placement3D","Location":{"type":"IfcCartesianPoint","Coordinates":"0 0 0"}},"TrueNorth":{"type":"IfcDirection","DirectionRatios":"0 1"}},"TargetView":"GRAPH_VIEW"},"RepresentationIdentifier":"Axis","RepresentationType":"Face","Items":[{"type":"IfcFaceSurface","Bounds":[{"type":"IfcFaceOuterBound","Bound":{"type":"IfcPolyloop","Polygon":[{"type":"IfcCartesianPoint","Coordinates":"-3968.75 -1309.6875 3000"},{"type":"IfcCartesianPoint","Coordinates":"3071.25 -1309.6875 3000"},{"type":"IfcCartesianPoint","Coordinates":"3071.25 -1309.6875 0"},{"type":"IfcCartesianPoint","Coordinates":"-3968.75 -1309.6875 0"}]},"Orientation":true},{"type":"IfcFaceBound","Bound":{"type":"IfcPolyloop","Polygon":[{"type":"IfcCartesianPoint","Coordinates":"551.25 -1309.6875 1000"},{"type":"IfcCartesianPoint","Coordinates":"-448.75 -1309.6875 1000"},{"type":"IfcCartesianPoint","Coordinates":"-448.75 -1309.6875 2000"},{"type":"IfcCartesianPoint","Coordinates":"551.25 -1309.6875 2000"}]},"Orientation":true}]}]}]},"Thickness":200.0}]}],"PredefinedType":"LOADING_3D","SharedPlacement":{"href":"3ZT9OvO09DjurXNK_zGKTH"}}}],"BuildingAddress":{"type":"IfcPostalAddress"}}]}],"RepresentationContexts":[{"type":"IfcGeometricRepresentationContext","ContextType":"Model","CoordinateSpaceDimension":3,"Precision":0.0001,"WorldCoordinateSystem":{"type":"IfcAxis2Placement3D","Location":{"type":"IfcCartesianPoint","Coordinates":"0 0 0"}},"TrueNorth":{"type":"IfcDirection","DirectionRatios":"0 1"},"HasSubContexts":[{"href":"26nTvAkoj6sgI5CSvh3Qxz"}]}],"UnitsInContext":{"type":"IfcUnitAssignment","Units":[{"type":"IfcSIUnit","UnitType":"LENGTHUNIT","Prefix":"MILLI","Name":"METRE"},{"type":"IfcSIUnit","UnitType":"AREAUNIT","Name":"SQUARE_METRE"},{"type":"IfcSIUnit","UnitType":"VOLUMEUNIT","Name":"CUBIC_METRE"},{"type":"IfcSIUnit","UnitType":"PLANEANGLEUNIT","Name":"RADIAN"},{"type":"IfcSIUnit","UnitType":"TIMEUNIT","Name":"SECOND"},{"type":"IfcSIUnit","UnitType":"FORCEUNIT","Name":"NEWTON"},{"type":"IfcDerivedUnit","Elements":[{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"FORCEUNIT","Name":"NEWTON"},"Exponent":1},{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"LENGTHUNIT","Name":"METRE"},"Exponent":1}],"UnitType":"TORQUEUNIT"},{"type":"IfcDerivedUnit","Elements":[{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"FORCEUNIT","Name":"NEWTON"},"Exponent":1},{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"LENGTHUNIT","Name":"METRE"},"Exponent":-1}],"UnitType":"LINEARFORCEUNIT"},{"type":"IfcDerivedUnit","Elements":[{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"FORCEUNIT","Name":"NEWTON"},"Exponent":1}],"UnitType":"LINEARMOMENTUNIT"},{"type":"IfcDerivedUnit","Elements":[{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"FORCEUNIT","Name":"NEWTON"},"Exponent":1},{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"LENGTHUNIT","Name":"METRE"},"Exponent":-2}],"UnitType":"PLANARFORCEUNIT"},{"type":"IfcDerivedUnit","Elements":[{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"FORCEUNIT","Name":"NEWTON"},"Exponent":1},{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"LENGTHUNIT","Name":"METRE"},"Exponent":-2}],"UnitType":"MODULUSOFELASTICITYUNIT"},{"type":"IfcDerivedUnit","Elements":[{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"LENGTHUNIT","Name":"METRE"},"Exponent":1},{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"TIMEUNIT","Name":"SECOND"},"Exponent":-2}],"UnitType":"ACCELERATIONUNIT"},{"type":"IfcSIUnit","UnitType":"PRESSUREUNIT","Name":"PASCAL"},{"type":"IfcDerivedUnit","Elements":[{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"LENGTHUNIT","Name":"METRE"},"Exponent":3}],"UnitType":"SECTIONMODULUSUNIT"},{"type":"IfcDerivedUnit","Elements":[{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"LENGTHUNIT","Name":"METRE"},"Exponent":4}],"UnitType":"MOMENTOFINERTIAUNIT"},{"type":"IfcSIUnit","UnitType":"MASSUNIT","Prefix":"KILO","Name":"GRAM"},{"type":"IfcDerivedUnit","Elements":[{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"MASSUNIT","Prefix":"KILO","Name":"GRAM"},"Exponent":1},{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"VOLUMEUNIT","Name":"CUBIC_METRE"},"Exponent":-1}],"UnitType":"MASSDENSITYUNIT"},{"type":"IfcSIUnit","UnitType":"THERMODYNAMICTEMPERATUREUNIT","Name":"KELVIN"},{"type":"IfcDerivedUnit","Elements":[{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"THERMODYNAMICTEMPERATUREUNIT","Name":"KELVIN"},"Exponent":-1}],"UnitType":"THERMALEXPANSIONCOEFFICIENTUNIT"},{"type":"IfcDerivedUnit","Elements":[{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"FORCEUNIT","Name":"NEWTON"},"Exponent":1},{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"LENGTHUNIT","Name":"METRE"},"Exponent":-1}],"UnitType":"LINEARSTIFFNESSUNIT"},{"type":"IfcDerivedUnit","Elements":[{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"FORCEUNIT","Name":"NEWTON"},"Exponent":1},{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"LENGTHUNIT","Name":"METRE"},"Exponent":1},{"type":"IfcDerivedUnitElement","Unit":{"type":"IfcSIUnit","UnitType":"PLANEANGLEUNIT","Name":"RADIAN"},"Exponent":-1}],"UnitType":"ROTATIONALSTIFFNESSUNIT"}]}}]} -------------------------------------------------------------------------------- /ConsoleCreateSurfaceMember/surfaceMember.ifcxml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | Unknown 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | -------------------------------------------------------------------------------- /ConsoleCreateWall/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /ConsoleCreateWall/ConsoleCreateWall.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {936E0147-D449-44FC-A758-0A1496743694} 8 | Exe 9 | Properties 10 | ConsoleCreateWall 11 | ConsoleCreateWall 12 | v4.8 13 | 512 14 | true 15 | 16 | 17 | 18 | AnyCPU 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | 36 | 37 | 38 | ..\packages\GeometryGymIFC_Core.0.1.25\lib\netstandard2.0\GeometryGymIFCcore.dll 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 65 | -------------------------------------------------------------------------------- /ConsoleCreateWall/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using GeometryGym.Ifc; 7 | 8 | namespace ConsoleCreateWall 9 | { 10 | class Program 11 | { 12 | static void Main(string[] args) 13 | { 14 | DatabaseIfc db = new DatabaseIfc(ModelView.Ifc4DesignTransfer); 15 | IfcBuilding building = new IfcBuilding(db, "IfcBuilding") { }; 16 | IfcProject project = new IfcProject(building, "IfcProject",IfcUnitAssignment.Length.Millimetre) { }; 17 | 18 | //IfcBuildingStorey storey = new IfcBuildingStorey(building, "Ground Floor", 0); 19 | IfcMaterial masonryFinish = new IfcMaterial(db, "Masonry - Brick - Brown"); 20 | IfcMaterial masonry = new IfcMaterial(db, "Masonry"); 21 | IfcMaterialLayer layerFinish = new IfcMaterialLayer(masonryFinish, 110, "Finish"); 22 | IfcMaterialLayer airInfiltrationBarrier = new IfcMaterialLayer(db, 50, "Air Infiltration Barrier") { IsVentilated = IfcLogicalEnum.TRUE }; 23 | IfcMaterialLayer structure = new IfcMaterialLayer(masonry, 110, "Core"); 24 | string name = "Double Brick - 270"; 25 | IfcMaterialLayerSet materialLayerSet = new IfcMaterialLayerSet(new List() { layerFinish, airInfiltrationBarrier, structure }, name); 26 | IfcMaterialLayerSetUsage materialLayerSetUsage = new IfcMaterialLayerSetUsage(materialLayerSet, IfcLayerSetDirectionEnum.AXIS2, IfcDirectionSenseEnum.POSITIVE, 0); 27 | db.NextObjectRecord = 300; 28 | IfcWallType wallType = new IfcWallType(name, materialLayerSet, IfcWallTypeEnum.NOTDEFINED) { }; 29 | IfcWallStandardCase wallStandardCase = new IfcWallStandardCase(building, materialLayerSetUsage, new IfcAxis2Placement3D(new IfcCartesianPoint(db,0,0,0)), 5000, 2000) { }; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ConsoleCreateWall/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ConsoleCreateWall")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ConsoleCreateWall")] 13 | [assembly: AssemblyCopyright("Copyright © 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("936e0147-d449-44fc-a758-0a1496743694")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ConsoleCreateWall/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /ConsoleFilterElements/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ConsoleFilterElements/ConsoleFilterElements.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {0001A679-2FDC-4898-B906-252FAD2D9E43} 8 | Exe 9 | ConsoleFilterElements 10 | ConsoleFilterElements 11 | v4.8 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | ..\packages\GeometryGymIFC_Core.0.1.25\lib\netstandard2.0\GeometryGymIFCcore.dll 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /ConsoleFilterElements/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using GeometryGym.Ifc; 8 | 9 | namespace ConsoleFilterElements 10 | { 11 | class Program 12 | { 13 | //Demonstration of approach to filter out fire rated walls into seperate IFC file 14 | static void Main(string[] args) 15 | { 16 | DatabaseIfc db = new DatabaseIfc(args[0]); 17 | 18 | DuplicateOptions duplicateOptions = new DuplicateOptions(db.Tolerance); 19 | duplicateOptions.DuplicateDownstream = false; 20 | DatabaseIfc filteredDb = new DatabaseIfc(db); 21 | IfcProject project = filteredDb.Factory.Duplicate(db.Project, duplicateOptions) as IfcProject; 22 | 23 | duplicateOptions.DuplicateDownstream = true; 24 | 25 | List walls = db.Project.Extract(); 26 | foreach(IfcWall wall in walls) 27 | { 28 | IfcPropertySingleValue property = wall.FindProperty("FireRating", true) as IfcPropertySingleValue; 29 | if(property != null && property.NominalValue != null) 30 | { 31 | string value = property.NominalValue.ValueString.Trim(); 32 | if (value != "0") 33 | filteredDb.Factory.Duplicate(wall, duplicateOptions); 34 | } 35 | } 36 | 37 | filteredDb.WriteFile(args[1]); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /ConsoleFilterElements/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ConsoleFilterElements")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Geometry Gym")] 12 | [assembly: AssemblyProduct("ConsoleFilterElements")] 13 | [assembly: AssemblyCopyright("Copyright © Geometry Gym 2022")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("0001a679-2fdc-4898-b906-252fad2d9e43")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ConsoleFilterElements/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /ConsoleParametricFooting/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /ConsoleParametricFooting/ConsoleParametricFooting.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {0819DF6D-49F7-44B4-9AB8-6C5D118230AD} 8 | Exe 9 | Properties 10 | ConsoleParametricFooting 11 | ConsoleParametricFooting 12 | v4.8 13 | 512 14 | 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | ..\packages\GeometryGymIFC_Core.0.1.25\lib\netstandard2.0\GeometryGymIFCcore.dll 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 64 | -------------------------------------------------------------------------------- /ConsoleParametricFooting/ParametricFooting.ifc: -------------------------------------------------------------------------------- 1 | ISO-10303-21; 2 | HEADER; 3 | FILE_DESCRIPTION(('ViewDefinition [notYetAssigned]'),'2;1'); 4 | FILE_NAME( 5 | /* name */ 'F:\\My Work\\Geometry Gym\\source code\\Open Source\\GeometryGymIfcExamples\\ConsoleParametricFooting\\ParametricFooting.ifc', 6 | /* time_stamp */ '2019-03-11T10:43:12', 7 | /* author */ ('Jon'), 8 | /* organization */ ('Unknown'), 9 | /* preprocessor_version */ 'GeometryGymIFC v0.0.20.0 by Geometry Gym Pty Ltd built 2019-03-10T12:19:50', 10 | /* originating_system */ 'ConsoleParametricFooting v1.0.0.0', 11 | /* authorization */ 'None'); 12 | 13 | FILE_SCHEMA (('IFC4X2')); 14 | ENDSEC; 15 | 16 | DATA; 17 | #1= IFCCARTESIANPOINT((0.0,0.0,0.0)); 18 | #2= IFCDIRECTION((1.0,0.0,0.0)); 19 | #3= IFCDIRECTION((0.0,1.0,0.0)); 20 | #4= IFCDIRECTION((0.0,0.0,1.0)); 21 | #5= IFCAXIS2PLACEMENT3D(#1,$,$); 22 | #6= IFCCARTESIANPOINT((0.0,0.0)); 23 | #7= IFCAXIS2PLACEMENT2D(#6,$); 24 | #8= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); 25 | #9= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); 26 | #10= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); 27 | #11= IFCPROJECTLIBRARY('2rJfFD94n4WxzHxfkPCOft',$,'ObjectLibrary',$,$,$,$,(#23),#12); 28 | #12= IFCUNITASSIGNMENT((#13,#9,#10,#14,#15)); 29 | #13= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.); 30 | #14= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); 31 | #15= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.); 32 | #16= IFCFOOTINGTYPE('36UcYCIVjAfvbyIqs$Nuyh',$,'PadFootingParametric',$,$,(#30),(#29),$,$,.PAD_FOOTING.); 33 | #18= IFCRECTANGLEPROFILEDEF(.AREA.,'PadFootingParametric',$,800.0,800.0); 34 | #19= IFCCARTESIANPOINT((0.0,0.0,0.0)); 35 | #20= IFCAXIS2PLACEMENT3D(#19,$,$); 36 | #21= IFCDIRECTION((0.0,0.0,-1.0)); 37 | #22= IFCEXTRUDEDAREASOLID(#18,#20,#21,300.0); 38 | #23= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.0001,#25,#26); 39 | #24= IFCCARTESIANPOINT((0.0,0.0,0.0)); 40 | #25= IFCAXIS2PLACEMENT3D(#24,$,$); 41 | #26= IFCDIRECTION((0.0,1.0)); 42 | #27= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#23,$,.MODEL_VIEW.,$); 43 | #28= IFCSHAPEREPRESENTATION(#27,'Body','SweptSolid',(#22)); 44 | #29= IFCREPRESENTATIONMAP(#5,#28); 45 | #30= IFCELEMENTQUANTITY('0DHW$Ph$vDpetcz$zACkLP',$,'Qto_FootingBaseQuantities',$,$,(#31,#32,#33)); 46 | #31= IFCQUANTITYLENGTH('Length',$,$,800.0,$); 47 | #32= IFCQUANTITYLENGTH('Width',$,$,800.0,$); 48 | #33= IFCQUANTITYLENGTH('Height',$,$,300.0,$); 49 | #34= IFCMETRIC('Length',$,.HARD.,$,$,$,$,.EQUALTO.,$,$,#39); 50 | #35= IFCREFERENCE('IfcRectangleProfileDef','XDim',$,$,$); 51 | #36= IFCREFERENCE('IfcExtrudedAreaSolid','SweptArea',$,$,#35); 52 | #37= IFCREFERENCE($,'Items',$,(1),#36); 53 | #38= IFCREFERENCE($,'MappedRepresentation',$,$,#37); 54 | #39= IFCREFERENCE($,'RepresentationMaps',$,(1),#38); 55 | #40= IFCRESOURCECONSTRAINTRELATIONSHIP($,$,#34,(#31)); 56 | #41= IFCRELASSOCIATESCONSTRAINT('3mV1JBwqL0zeme7QhiFlHg',$,$,$,(#16),$,#34); 57 | #42= IFCMETRIC('Width',$,.HARD.,$,$,$,$,.EQUALTO.,$,$,#47); 58 | #43= IFCREFERENCE('IfcRectangleProfileDef','YDim',$,$,$); 59 | #44= IFCREFERENCE('IfcExtrudedAreaSolid','SweptArea',$,$,#43); 60 | #45= IFCREFERENCE($,'Items',$,(1),#44); 61 | #46= IFCREFERENCE($,'MappedRepresentation',$,$,#45); 62 | #47= IFCREFERENCE($,'RepresentationMaps',$,(1),#46); 63 | #48= IFCRESOURCECONSTRAINTRELATIONSHIP($,$,#42,(#32)); 64 | #49= IFCRELASSOCIATESCONSTRAINT('2LHC2dMljCVAr3mT4v0L88',$,$,$,(#16),$,#42); 65 | #50= IFCMETRIC('Height',$,.HARD.,$,$,$,$,.EQUALTO.,$,$,#54); 66 | #51= IFCREFERENCE('IfcExtrudedAreaSolid','Depth',$,$,$); 67 | #52= IFCREFERENCE($,'Items',$,(1),#51); 68 | #53= IFCREFERENCE($,'MappedRepresentation',$,$,#52); 69 | #54= IFCREFERENCE($,'RepresentationMaps',$,(1),#53); 70 | #55= IFCRESOURCECONSTRAINTRELATIONSHIP($,$,#50,(#33)); 71 | #56= IFCRELASSOCIATESCONSTRAINT('3lVKM3Ldn1awJQJS8rBHZU',$,$,$,(#16),$,#50); 72 | #57= IFCFOOTINGTYPE('0_y1uaZJz4URHVTwpHGLhr',$,'PadFooting800x800x300',$,$,(#65),(#64),$,$,.PAD_FOOTING.); 73 | #59= IFCRECTANGLEPROFILEDEF(.AREA.,'PadFooting800x800x300',$,800.0,800.0); 74 | #60= IFCCARTESIANPOINT((0.0,0.0,0.0)); 75 | #61= IFCAXIS2PLACEMENT3D(#60,$,$); 76 | #62= IFCEXTRUDEDAREASOLID(#59,#61,#21,300.0); 77 | #63= IFCSHAPEREPRESENTATION(#27,'Body','SweptSolid',(#62)); 78 | #64= IFCREPRESENTATIONMAP(#5,#63); 79 | #65= IFCELEMENTQUANTITY('2uakNmumX5AhDOfsNtQOOO',$,'Qto_FootingBaseQuantities',$,$,(#66,#67,#68)); 80 | #66= IFCQUANTITYLENGTH('Length',$,$,800.0,$); 81 | #67= IFCQUANTITYLENGTH('Width',$,$,800.0,$); 82 | #68= IFCQUANTITYLENGTH('Height',$,$,300.0,$); 83 | #69= IFCFOOTINGTYPE('0CK1RLIdb6quycorOcjqCd',$,'PadFooting600x600x250',$,$,(#77),(#76),$,$,.PAD_FOOTING.); 84 | #71= IFCRECTANGLEPROFILEDEF(.AREA.,'PadFooting600x600x250',$,600.0,600.0); 85 | #72= IFCCARTESIANPOINT((0.0,0.0,0.0)); 86 | #73= IFCAXIS2PLACEMENT3D(#72,$,$); 87 | #74= IFCEXTRUDEDAREASOLID(#71,#73,#21,250.0); 88 | #75= IFCSHAPEREPRESENTATION(#27,'Body','SweptSolid',(#74)); 89 | #76= IFCREPRESENTATIONMAP(#5,#75); 90 | #77= IFCELEMENTQUANTITY('2oRdO829r8b915aUgG6o9c',$,'Qto_FootingBaseQuantities',$,$,(#78,#79,#80)); 91 | #78= IFCQUANTITYLENGTH('Length',$,$,600.0,$); 92 | #79= IFCQUANTITYLENGTH('Width',$,$,600.0,$); 93 | #80= IFCQUANTITYLENGTH('Height',$,$,250.0,$); 94 | #81= IFCFOOTINGTYPE('1dEyJ_GMvCJwzh3BfO0z0V',$,'PadFooting400x400x200',$,$,(#89),(#88),$,$,.PAD_FOOTING.); 95 | #83= IFCRECTANGLEPROFILEDEF(.AREA.,'PadFooting400x400x200',$,400.0,400.0); 96 | #84= IFCCARTESIANPOINT((0.0,0.0,0.0)); 97 | #85= IFCAXIS2PLACEMENT3D(#84,$,$); 98 | #86= IFCEXTRUDEDAREASOLID(#83,#85,#21,200.0); 99 | #87= IFCSHAPEREPRESENTATION(#27,'Body','SweptSolid',(#86)); 100 | #88= IFCREPRESENTATIONMAP(#5,#87); 101 | #89= IFCELEMENTQUANTITY('1DRMMco_PAEOpxY4DipsX9',$,'Qto_FootingBaseQuantities',$,$,(#90,#91,#92)); 102 | #90= IFCQUANTITYLENGTH('Length',$,$,400.0,$); 103 | #91= IFCQUANTITYLENGTH('Width',$,$,400.0,$); 104 | #92= IFCQUANTITYLENGTH('Height',$,$,200.0,$); 105 | #93= IFCRELASSIGNSTOPRODUCT('1BM4i7yIf7ufZafEj3LEnB',$,$,$,(#57,#69,#81),$,#16); 106 | #94= IFCRELDECLARES('3Xfz$cwSj1b8BNdO7K32Gt',$,$,$,#11,(#57,#69,#81)); 107 | ENDSEC; 108 | 109 | END-ISO-10303-21; 110 | 111 | -------------------------------------------------------------------------------- /ConsoleParametricFooting/ParametricFooting.ifcjson: -------------------------------------------------------------------------------- 1 | {"HEADER":{"FILE_DESCRIPTION":{"description":"ViewDefinition[notYetAssigned]","implementation_level":"2;1"},"FILE_NAME":{"name":"F:\\My Work\\Geometry Gym\\source code\\Open Source\\GeometryGymIfcExamples\\ConsoleParametricFooting\\ParametricFooting.ifcjson","time_stamp":"2019-03-11T10:43:13","author":"Jon","organization":"Unknown","preprocessor_version":"GeometryGymIFC v0.0.20.0 by Geometry Gym Pty Ltd built 2019-03-10T12:19:50","originating_system":"ConsoleParametricFooting v1.0.0.0","authorization":"None"},"FILE_SCHEMA":{"schema_identifiers":"IFC4"}},"DATA":[{"type":"IfcProjectLibrary","GlobalId":"2rJfFD94n4WxzHxfkPCOft","Name":"ObjectLibrary","RepresentationContexts":[{"type":"IfcGeometricRepresentationContext","ContextType":"Model","CoordinateSpaceDimension":3,"Precision":0.0001,"WorldCoordinateSystem":{"type":"IfcAxis2Placement3D","Location":{"type":"IfcCartesianPoint","Coordinates":"0 0 0"}},"TrueNorth":{"type":"IfcDirection","DirectionRatios":"0 1"},"HasSubContexts":[{"type":"IfcGeometricRepresentationSubContext","id":"31DNfqZADFEBHuz9JoP2Qq","ContextIdentifier":"Body","ContextType":"Model","ParentContext":{"type":"IfcGeometricRepresentationContext","ContextType":"Model","CoordinateSpaceDimension":3,"Precision":0.0001,"WorldCoordinateSystem":{"type":"IfcAxis2Placement3D","Location":{"type":"IfcCartesianPoint","Coordinates":"0 0 0"}},"TrueNorth":{"type":"IfcDirection","DirectionRatios":"0 1"}},"TargetView":"MODEL_VIEW"}]}],"UnitsInContext":{"type":"IfcUnitAssignment","Units":[{"type":"IfcSIUnit","UnitType":"LENGTHUNIT","Prefix":"MILLI","Name":"METRE"},{"type":"IfcSIUnit","UnitType":"AREAUNIT","Name":"SQUARE_METRE"},{"type":"IfcSIUnit","UnitType":"VOLUMEUNIT","Name":"CUBIC_METRE"},{"type":"IfcSIUnit","UnitType":"PLANEANGLEUNIT","Name":"RADIAN"},{"type":"IfcSIUnit","UnitType":"TIMEUNIT","Name":"SECOND"}]},"Declares":[{"type":"IfcRelDeclares","GlobalId":"3Xfz$cwSj1b8BNdO7K32Gt","RelatedDefinitions":[{"type":"IfcFootingType","GlobalId":"0_y1uaZJz4URHVTwpHGLhr","Name":"PadFooting800x800x300","HasAssignments":[{"type":"IfcRelAssignsToProduct","GlobalId":"1BM4i7yIf7ufZafEj3LEnB","RelatingProduct":{"type":"IfcFootingType","GlobalId":"36UcYCIVjAfvbyIqs$Nuyh","Name":"PadFootingParametric","HasAssociations":[{"type":"IfcRelAssociatesConstraint","GlobalId":"3mV1JBwqL0zeme7QhiFlHg","RelatingConstraint":{"type":"IfcMetric","id":"1XDhzB5PzCQfxxrJUHSNX2","Name":"Length","ConstraintGrade":"HARD","PropertiesForConstraint":[{"type":"IfcResourceConstraintRelationship","id":"3hrj_ElSj9SOSjj5e6Glcr","RelatedResourceObjects":[{"type":"IfcQuantityLength","id":"0zU$6TwSD8UQIFc2$fCWjB","Name":"Length","LengthValue":800.0}]}],"BenchMark":"EQUALTO","ReferencePath":{"type":"IfcReference","AttributeIdentifier":"RepresentationMaps","ListPositions":[1],"InnerReference":{"type":"IfcReference","AttributeIdentifier":"MappedRepresentation","InnerReference":{"type":"IfcReference","AttributeIdentifier":"Items","ListPositions":[1],"InnerReference":{"type":"IfcReference","TypeIdentifier":"IfcExtrudedAreaSolid","AttributeIdentifier":"SweptArea","InnerReference":{"type":"IfcReference","TypeIdentifier":"IfcRectangleProfileDef","AttributeIdentifier":"XDim"}}}}}}},{"type":"IfcRelAssociatesConstraint","GlobalId":"2LHC2dMljCVAr3mT4v0L88","RelatingConstraint":{"type":"IfcMetric","id":"3I4L41Uwn7sPSrb4Nhs8TU","Name":"Width","ConstraintGrade":"HARD","PropertiesForConstraint":[{"type":"IfcResourceConstraintRelationship","id":"36wDzqF_HA3PpMHAYDyp59","RelatedResourceObjects":[{"type":"IfcQuantityLength","id":"3mKJp$i0f1lOdrT5wNLS6G","Name":"Width","LengthValue":800.0}]}],"BenchMark":"EQUALTO","ReferencePath":{"type":"IfcReference","AttributeIdentifier":"RepresentationMaps","ListPositions":[1],"InnerReference":{"type":"IfcReference","AttributeIdentifier":"MappedRepresentation","InnerReference":{"type":"IfcReference","AttributeIdentifier":"Items","ListPositions":[1],"InnerReference":{"type":"IfcReference","TypeIdentifier":"IfcExtrudedAreaSolid","AttributeIdentifier":"SweptArea","InnerReference":{"type":"IfcReference","TypeIdentifier":"IfcRectangleProfileDef","AttributeIdentifier":"YDim"}}}}}}},{"type":"IfcRelAssociatesConstraint","GlobalId":"3lVKM3Ldn1awJQJS8rBHZU","RelatingConstraint":{"type":"IfcMetric","id":"1EKW0B_mvC5gcToqU4imh$","Name":"Height","ConstraintGrade":"HARD","PropertiesForConstraint":[{"type":"IfcResourceConstraintRelationship","id":"1aYG9kkh56qRec7MmSZk97","RelatedResourceObjects":[{"type":"IfcQuantityLength","id":"3snOaLUnf4terMWN0Zdi1h","Name":"Height","LengthValue":300.0}]}],"BenchMark":"EQUALTO","ReferencePath":{"type":"IfcReference","AttributeIdentifier":"RepresentationMaps","ListPositions":[1],"InnerReference":{"type":"IfcReference","AttributeIdentifier":"MappedRepresentation","InnerReference":{"type":"IfcReference","AttributeIdentifier":"Items","ListPositions":[1],"InnerReference":{"type":"IfcReference","TypeIdentifier":"IfcExtrudedAreaSolid","AttributeIdentifier":"Depth"}}}}}}],"HasPropertySets":[{"type":"IfcElementQuantity","GlobalId":"0DHW$Ph$vDpetcz$zACkLP","Name":"Qto_FootingBaseQuantities","Quantities":[{"href":"0zU$6TwSD8UQIFc2$fCWjB"},{"href":"3mKJp$i0f1lOdrT5wNLS6G"},{"href":"3snOaLUnf4terMWN0Zdi1h"}]}],"RepresentationMaps":[{"type":"IfcRepresentationMap","MappingOrigin":{"type":"IfcAxis2Placement3D","Location":{"type":"IfcCartesianPoint","Coordinates":"0 0 0"}},"MappedRepresentation":{"type":"IfcShapeRepresentation","ContextOfItems":{"href":"31DNfqZADFEBHuz9JoP2Qq"},"RepresentationIdentifier":"Body","RepresentationType":"SweptSolid","Items":[{"type":"IfcExtrudedAreaSolid","SweptArea":{"type":"IfcRectangleProfileDef","id":"3xGUEfBA1BFR1OqeDaNBwd","ProfileType":"AREA","ProfileName":"PadFootingParametric","XDim":800.0,"YDim":800.0},"Position":{"type":"IfcAxis2Placement3D","Location":{"type":"IfcCartesianPoint","Coordinates":"0 0 0"}},"ExtrudedDirection":{"type":"IfcDirection","DirectionRatios":"0 0 -1"},"Depth":300.0}]}}]}}],"HasPropertySets":[{"type":"IfcElementQuantity","GlobalId":"2uakNmumX5AhDOfsNtQOOO","Name":"Qto_FootingBaseQuantities","Quantities":[{"type":"IfcQuantityLength","id":"0VpFSyj2rD4BRO6wH6oufq","Name":"Length","LengthValue":800.0},{"type":"IfcQuantityLength","id":"1Zdw0Y1VPEkgnKRAh_r_bF","Name":"Width","LengthValue":800.0},{"type":"IfcQuantityLength","id":"3dhbQqi9bDgg5Rsk3Cdbqe","Name":"Height","LengthValue":300.0}]}],"RepresentationMaps":[{"type":"IfcRepresentationMap","MappingOrigin":{"type":"IfcAxis2Placement3D","Location":{"type":"IfcCartesianPoint","Coordinates":"0 0 0"}},"MappedRepresentation":{"type":"IfcShapeRepresentation","ContextOfItems":{"href":"31DNfqZADFEBHuz9JoP2Qq"},"RepresentationIdentifier":"Body","RepresentationType":"SweptSolid","Items":[{"type":"IfcExtrudedAreaSolid","SweptArea":{"type":"IfcRectangleProfileDef","id":"1dHlNuQXD0Th_3dyQW9nbb","ProfileType":"AREA","ProfileName":"PadFooting800x800x300","XDim":800.0,"YDim":800.0},"Position":{"type":"IfcAxis2Placement3D","Location":{"type":"IfcCartesianPoint","Coordinates":"0 0 0"}},"ExtrudedDirection":{"type":"IfcDirection","DirectionRatios":"0 0 -1"},"Depth":300.0}]}}]},{"type":"IfcFootingType","GlobalId":"0CK1RLIdb6quycorOcjqCd","Name":"PadFooting600x600x250","HasAssignments":[{"href":"1BM4i7yIf7ufZafEj3LEnB"}],"HasPropertySets":[{"type":"IfcElementQuantity","GlobalId":"2oRdO829r8b915aUgG6o9c","Name":"Qto_FootingBaseQuantities","Quantities":[{"type":"IfcQuantityLength","id":"3h5hxADtf2lgfOyHlU29UJ","Name":"Length","LengthValue":600.0},{"type":"IfcQuantityLength","id":"15dXPLVi5DyB$7uXmZtBgk","Name":"Width","LengthValue":600.0},{"type":"IfcQuantityLength","id":"2L5Z5Prc9C7wH$GlNrhXOo","Name":"Height","LengthValue":250.0}]}],"RepresentationMaps":[{"type":"IfcRepresentationMap","MappingOrigin":{"type":"IfcAxis2Placement3D","Location":{"type":"IfcCartesianPoint","Coordinates":"0 0 0"}},"MappedRepresentation":{"type":"IfcShapeRepresentation","ContextOfItems":{"href":"31DNfqZADFEBHuz9JoP2Qq"},"RepresentationIdentifier":"Body","RepresentationType":"SweptSolid","Items":[{"type":"IfcExtrudedAreaSolid","SweptArea":{"type":"IfcRectangleProfileDef","id":"1Scyo0GDn2PBx4fiDvTgG3","ProfileType":"AREA","ProfileName":"PadFooting600x600x250","XDim":600.0,"YDim":600.0},"Position":{"type":"IfcAxis2Placement3D","Location":{"type":"IfcCartesianPoint","Coordinates":"0 0 0"}},"ExtrudedDirection":{"type":"IfcDirection","DirectionRatios":"0 0 -1"},"Depth":250.0}]}}]},{"type":"IfcFootingType","GlobalId":"1dEyJ_GMvCJwzh3BfO0z0V","Name":"PadFooting400x400x200","HasAssignments":[{"href":"1BM4i7yIf7ufZafEj3LEnB"}],"HasPropertySets":[{"type":"IfcElementQuantity","GlobalId":"1DRMMco_PAEOpxY4DipsX9","Name":"Qto_FootingBaseQuantities","Quantities":[{"type":"IfcQuantityLength","id":"2eikgf1Af1_uOpB1fCwy9E","Name":"Length","LengthValue":400.0},{"type":"IfcQuantityLength","id":"1yXVYBYpfC6Ar7pmE4nxtS","Name":"Width","LengthValue":400.0},{"type":"IfcQuantityLength","id":"1iezUhhY5EMuInwlbr8Zpc","Name":"Height","LengthValue":200.0}]}],"RepresentationMaps":[{"type":"IfcRepresentationMap","MappingOrigin":{"type":"IfcAxis2Placement3D","Location":{"type":"IfcCartesianPoint","Coordinates":"0 0 0"}},"MappedRepresentation":{"type":"IfcShapeRepresentation","ContextOfItems":{"href":"31DNfqZADFEBHuz9JoP2Qq"},"RepresentationIdentifier":"Body","RepresentationType":"SweptSolid","Items":[{"type":"IfcExtrudedAreaSolid","SweptArea":{"type":"IfcRectangleProfileDef","id":"1uhYl4BKD9RfCmqT7QVVtG","ProfileType":"AREA","ProfileName":"PadFooting400x400x200","XDim":400.0,"YDim":400.0},"Position":{"type":"IfcAxis2Placement3D","Location":{"type":"IfcCartesianPoint","Coordinates":"0 0 0"}},"ExtrudedDirection":{"type":"IfcDirection","DirectionRatios":"0 0 -1"},"Depth":200.0}]}}]}]}]}]} -------------------------------------------------------------------------------- /ConsoleParametricFooting/ParametricFooting.ifcxml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | -------------------------------------------------------------------------------- /ConsoleParametricFooting/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Reflection; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using GeometryGym.Ifc; 10 | 11 | namespace ConsoleParametricFooting 12 | { 13 | class Program 14 | { 15 | static void Main(string[] args) 16 | { 17 | DatabaseIfc db = new DatabaseIfc(ModelView.Ifc4NotAssigned); 18 | db.Factory.Options.GenerateOwnerHistory = false; 19 | IfcProjectLibrary context = new IfcProjectLibrary(db, "ObjectLibrary", IfcUnitAssignment.Length.Millimetre); 20 | 21 | IfcFootingType parametricType = generate(db, true, 800, 800, 300); 22 | 23 | IfcFootingType footingType1 = generate(db, false, 800, 800, 300); 24 | IfcFootingType footingType2 = generate(db, false, 600, 600, 250); 25 | IfcFootingType footingType3 = generate(db, false, 400, 400, 200); 26 | 27 | new IfcRelAssignsToProduct(new List() { footingType1, footingType2, footingType3 }, parametricType); 28 | new IfcRelDeclares(context, new List() { footingType1, footingType2, footingType3 }); 29 | DirectoryInfo di = Directory.GetParent(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)); 30 | di = Directory.GetParent(di.FullName); 31 | db.WriteFile(Path.Combine(di.FullName,"ParametricFooting.ifc")); 32 | db.WriteFile(Path.Combine(di.FullName,"ParametricFooting.ifcxml")); 33 | db.WriteFile(Path.Combine(di.FullName, "ParametricFooting.ifcjson")); 34 | } 35 | internal static IfcFootingType generate(DatabaseIfc db, bool parametric, double length, double width, double height) 36 | { 37 | string name = parametric ? "PadFootingParametric" : "PadFooting" + length + "x" + width + "x" + height; 38 | IfcFootingType footingType = new IfcFootingType(db, name, IfcFootingTypeEnum.PAD_FOOTING); 39 | IfcRectangleProfileDef rpd = new IfcRectangleProfileDef(db, name, length,width); 40 | footingType.RepresentationMaps.Add(new IfcRepresentationMap(db.Factory.XYPlanePlacement, new IfcShapeRepresentation(new IfcExtrudedAreaSolid(rpd, new IfcAxis2Placement3D(new IfcCartesianPoint(db, 0, 0, 0)), db.Factory.ZAxisNegative, height)))); 41 | Qto_FootingBaseQuantities baseQuantities = new Qto_FootingBaseQuantities(footingType); 42 | baseQuantities.Length = length; 43 | baseQuantities.Width = width; 44 | baseQuantities.Height = height; 45 | IList quantities = baseQuantities.Quantities.Values.ToList(); 46 | if (parametric) 47 | { 48 | string prefix = @"RepresentationMaps[1].MappedRepresentation.Items[1]\IfcExtrudedAreaSolid."; 49 | CreateConstraint("Length", footingType, quantities[0], prefix + @"SweptArea\IfcRectangleProfileDef.XDim"); 50 | CreateConstraint("Width", footingType, quantities[1], prefix + @"SweptArea\IfcRectangleProfileDef.YDim"); 51 | CreateConstraint("Height", footingType, quantities[2], prefix + @"Depth"); 52 | //IfcAppliedValue appv = new IfcAppliedValue(new IfcAppliedValue( IfcReference.ParseDescription(db, "HasPropertySets['" + baseQuantities.Name + "'].HasProperties['" +quantities[2].Name + "']")), IfcArithmeticOperatorEnum.MULTIPLY, new IfcAppliedValue(db, new IfcReal(-1))); 53 | //CreateConstraint("Offset",footingType,appv, @"Position.Location.Coordinates[3]"); 54 | } 55 | return footingType; 56 | } 57 | 58 | internal static IfcMetric CreateConstraint(string name, IfcElementType elementType, IfcResourceObjectSelect related, string referenceDesc) 59 | { 60 | IfcMetric metric = new IfcMetric(elementType.Database, name, IfcConstraintEnum.HARD) { ReferencePath = IfcReference.ParseDescription(elementType.Database, referenceDesc), BenchMark = IfcBenchmarkEnum.EQUALTO }; 61 | IfcResourceConstraintRelationship rcr = new IfcResourceConstraintRelationship(metric, related); 62 | new IfcRelAssociatesConstraint(elementType, metric); 63 | return metric; 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /ConsoleParametricFooting/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ConsoleParametricFooting")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ConsoleParametricFooting")] 13 | [assembly: AssemblyCopyright("Copyright © 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("0819df6d-49f7-44b4-9ab8-6c5d118230ad")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ConsoleParametricFooting/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /ConsoleTestMEP/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /ConsoleTestMEP/ConsoleTestMEP.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {74D7C9C0-8B35-4D9C-9076-966BAFFE21D2} 8 | Exe 9 | Properties 10 | ConsoleTestMEP 11 | ConsoleTestMEP 12 | v4.8 13 | 512 14 | true 15 | 16 | 17 | 18 | AnyCPU 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | 36 | 37 | 38 | ..\packages\GeometryGymIFC_Core.0.1.25\lib\netstandard2.0\GeometryGymIFCcore.dll 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 65 | -------------------------------------------------------------------------------- /ConsoleTestMEP/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.IO; 7 | using System.Reflection; 8 | 9 | using GeometryGym.Ifc; 10 | 11 | namespace ConsoleTestMEP 12 | { 13 | class Program 14 | { 15 | //Example files for https://sourceforge.net/p/ifcexporter/discussion/general/thread/9e08650b/ 16 | 17 | static void Main(string[] args) 18 | { 19 | DirectoryInfo di = Directory.GetParent(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)); 20 | di = Directory.GetParent(di.FullName); 21 | 22 | string path = Path.Combine(di.FullName, "examples"); 23 | if (!Directory.Exists(path)) 24 | Directory.CreateDirectory(path); 25 | Generate(TypeIFC.AirTerminal, ReleaseVersion.IFC2x3, path); 26 | Generate(TypeIFC.AirTerminal, ReleaseVersion.IFC4A1, path); 27 | Generate(TypeIFC.Chiller, ReleaseVersion.IFC2x3, path); 28 | Generate(TypeIFC.Chiller, ReleaseVersion.IFC4A1, path); 29 | Generate(TypeIFC.ElectricPoint, ReleaseVersion.IFC2x3, path); 30 | 31 | } 32 | internal enum TypeIFC { Chiller, AirTerminal, ElectricPoint }; 33 | static void Generate(TypeIFC type, ReleaseVersion release, string path) 34 | { 35 | DatabaseIfc db = new DatabaseIfc(true,release); 36 | IfcBuilding building = new IfcBuilding(db, "IfcBuilding") { }; 37 | IfcProject project = new IfcProject(building, "IfcProject", IfcUnitAssignment.Length.Millimetre) { }; 38 | 39 | IfcRectangleProfileDef rect = new IfcRectangleProfileDef(db, "Rect", 1000, 500); 40 | IfcExtrudedAreaSolid extrusion = new IfcExtrudedAreaSolid(rect, new IfcAxis2Placement3D(new IfcCartesianPoint(db, 0, 0, 0)), new IfcDirection(db, 0, 0, 1), 2000); 41 | IfcProductDefinitionShape rep = new IfcProductDefinitionShape(new IfcShapeRepresentation(extrusion)); 42 | 43 | if (type == TypeIFC.Chiller) 44 | { 45 | IfcChiller chiller = new IfcChiller(building, null, rep, null) { PredefinedType = IfcChillerTypeEnum.AIRCOOLED }; 46 | if(release == ReleaseVersion.IFC2x3) 47 | chiller.setRelatingType(new IfcChillerType(db, "MyChillerType", IfcChillerTypeEnum.AIRCOOLED)); 48 | } 49 | else if (type == TypeIFC.AirTerminal) 50 | { 51 | IfcAirTerminal terminal = new IfcAirTerminal(building, null, rep, null) { PredefinedType = IfcAirTerminalTypeEnum.DIFFUSER }; 52 | if (release == ReleaseVersion.IFC2x3) 53 | terminal.setRelatingType(new IfcAirTerminalType(db, "MyAirTerminalType", IfcAirTerminalTypeEnum.DIFFUSER)); 54 | } 55 | else 56 | { 57 | IfcElectricDistributionPoint point = new IfcElectricDistributionPoint(building, null, rep, null) { DistributionPointFunction = IfcElectricDistributionPointFunctionEnum.DISTRIBUTIONBOARD }; 58 | } 59 | db.WriteFile(Path.Combine(path, type.ToString() + " " + release.ToString() + ".ifc")); 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /ConsoleTestMEP/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ConsoleTestMEP")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ConsoleTestMEP")] 13 | [assembly: AssemblyCopyright("Copyright © 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("74d7c9c0-8b35-4d9c-9076-966baffe21d2")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ConsoleTestMEP/examples/AirTerminal IFC2x3.ifc: -------------------------------------------------------------------------------- 1 | ISO-10303-21; 2 | HEADER; 3 | FILE_DESCRIPTION(('ViewDefinition [notYetAssigned]'),'2;1'); 4 | FILE_NAME( 5 | /* name */ 'C:\\My Work\\Geometry Gym\\GitHub\\GeometryGymIFCExamples\\ConsoleTestMEP\\examples\\AirTerminal IFC2x3.ifc', 6 | /* time_stamp */ '2016-05-06T12:41:20', 7 | /* author */ ('jonm'), 8 | /* organization */ ('Unknown'), 9 | /* preprocessor_version */ 'GeomGymIFC by Geometry Gym Pty Ltd', 10 | /* originating_system */ 'GeometryGymIFC', 11 | /* authorization */ 'None'); 12 | 13 | FILE_SCHEMA (('IFC2X3')); 14 | ENDSEC; 15 | 16 | DATA; 17 | #1= IFCPERSONANDORGANIZATION(#2,#3,$); 18 | #2= IFCPERSON('jonm','jonm',$,$,$,$,$,$); 19 | #3= IFCORGANIZATION($,'UNKNOWN',$,$,$); 20 | #4= IFCAPPLICATION(#5,'0.0.4.0','GeometryGymIFC','GeometryGymIFC'); 21 | #5= IFCORGANIZATION($,'Geometry Gym Pty Ltd',$,$,$); 22 | #6= IFCOWNERHISTORY(#1,#4,$,.ADDED.,1462538480,$,$,1462538480); 23 | #7= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.0001,#9,$); 24 | #8= IFCCARTESIANPOINT((0.0,0.0,0.0)); 25 | #9= IFCAXIS2PLACEMENT3D(#8,$,$); 26 | #10= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#7,$,.MODEL_VIEW.,$); 27 | #11= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#7,$,.MODEL_VIEW.,$); 28 | #12= IFCCARTESIANPOINT((0.0,0.0,0.0)); 29 | #13= IFCDIRECTION((1.0,0.0,0.0)); 30 | #14= IFCDIRECTION((0.0,1.0,0.0)); 31 | #15= IFCDIRECTION((0.0,0.0,1.0)); 32 | #16= IFCCARTESIANPOINT((0.0,0.0)); 33 | #17= IFCAXIS2PLACEMENT2D(#16,$); 34 | #18= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); 35 | #19= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); 36 | #20= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); 37 | #21= IFCLOCALPLACEMENT($,#9); 38 | #22= IFCBUILDING('3T2lpntB95C8ubuhqR2Os8',#6,'IfcBuilding',$,$,#21,$,$,.ELEMENT.,$,$,$); 39 | #23= IFCRELCONTAINEDINSPATIALSTRUCTURE('1t4pxCP3X09hu3vBB$JV7c',#6,'Building','Building Container for Elements',(#39),#22); 40 | #24= IFCPROJECT('0QNgItncv45fmRLPwpMN5K',#6,'IfcProject',$,$,$,$,(#7),#25); 41 | #25= IFCUNITASSIGNMENT((#26,#19,#20,#27,#28)); 42 | #26= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.); 43 | #27= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); 44 | #28= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.); 45 | #29= IFCRELAGGREGATES('0FiU77bof8kRc6oB_1yeSo',#6,'Project Container','Project Container for Buildings',#24,(#22)); 46 | #30= IFCRECTANGLEPROFILEDEF(.AREA.,'Rect',#17,500.0,1000.0); 47 | #31= IFCGENERALPROFILEPROPERTIES($,#30,$,$,$,$,$); 48 | #33= IFCCARTESIANPOINT((0.0,0.0,0.0)); 49 | #34= IFCAXIS2PLACEMENT3D(#33,$,$); 50 | #35= IFCDIRECTION((0.0,0.0,1.0)); 51 | #36= IFCEXTRUDEDAREASOLID(#30,#34,#35,2000.0); 52 | #37= IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#36)); 53 | #38= IFCPRODUCTDEFINITIONSHAPE($,$,(#37)); 54 | #39= IFCFLOWTERMINAL('38aKCeXYzEBhCGo0PsSTrc',#6,$,$,$,#41,#38,$); 55 | #40= IFCAXIS2PLACEMENT3D(#8,$,$); 56 | #41= IFCLOCALPLACEMENT(#21,#40); 57 | #42= IFCAIRTERMINALTYPE('0coZOGT1jFsQK2HKUxy6Gw',#6,'MyAirTerminalType',$,$,$,$,$,$,.DIFFUSER.); 58 | #43= IFCRELDEFINESBYTYPE('1pnhHoRx54MP92WpvSa5Fb',#6,$,$,(#39),#42); 59 | ENDSEC; 60 | 61 | END-ISO-10303-21; 62 | 63 | -------------------------------------------------------------------------------- /ConsoleTestMEP/examples/AirTerminal IFC4A1.ifc: -------------------------------------------------------------------------------- 1 | ISO-10303-21; 2 | HEADER; 3 | FILE_DESCRIPTION(('ViewDefinition [notYetAssigned]'),'2;1'); 4 | FILE_NAME( 5 | /* name */ 'C:\\My Work\\Geometry Gym\\GitHub\\GeometryGymIFCExamples\\ConsoleTestMEP\\examples\\AirTerminal IFC4A1.ifc', 6 | /* time_stamp */ '2016-05-06T12:41:20', 7 | /* author */ ('jonm'), 8 | /* organization */ ('Unknown'), 9 | /* preprocessor_version */ 'GeomGymIFC by Geometry Gym Pty Ltd', 10 | /* originating_system */ 'GeometryGymIFC', 11 | /* authorization */ 'None'); 12 | 13 | FILE_SCHEMA (('IFC4')); 14 | ENDSEC; 15 | 16 | DATA; 17 | #1= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.0001,#3,$); 18 | #2= IFCCARTESIANPOINT((0.0,0.0,0.0)); 19 | #3= IFCAXIS2PLACEMENT3D(#2,$,$); 20 | #4= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#1,$,.MODEL_VIEW.,$); 21 | #5= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#1,$,.MODEL_VIEW.,$); 22 | #6= IFCCARTESIANPOINT((0.0,0.0,0.0)); 23 | #7= IFCDIRECTION((1.0,0.0,0.0)); 24 | #8= IFCDIRECTION((0.0,1.0,0.0)); 25 | #9= IFCDIRECTION((0.0,0.0,1.0)); 26 | #10= IFCCARTESIANPOINT((0.0,0.0)); 27 | #11= IFCAXIS2PLACEMENT2D(#10,$); 28 | #12= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); 29 | #13= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); 30 | #14= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); 31 | #15= IFCLOCALPLACEMENT($,#3); 32 | #16= IFCBUILDING('0g_X8yvL96TPRh55AQip3l',#22,'IfcBuilding',$,$,#15,$,$,$,$,$,$); 33 | #17= IFCPERSONANDORGANIZATION(#18,#19,$); 34 | #18= IFCPERSON('jonm','jonm',$,$,$,$,$,$); 35 | #19= IFCORGANIZATION($,'UNKNOWN',$,$,$); 36 | #20= IFCAPPLICATION(#21,'0.0.4.0','GeometryGymIFC','GeometryGymIFC'); 37 | #21= IFCORGANIZATION($,'Geometry Gym Pty Ltd',$,$,$); 38 | #22= IFCOWNERHISTORY(#17,#20,$,.ADDED.,1462538480,$,$,1462538480); 39 | #23= IFCRELCONTAINEDINSPATIALSTRUCTURE('17bAD3HW91wAiCdJN23OH7',#22,'Building','Building Container for Elements',(#39),#16); 40 | #24= IFCAXIS2PLACEMENT3D(#2,$,$); 41 | #26= IFCPROJECT('2Gy_hiUrTFbg$OzcLasgTN',#22,'IfcProject',$,$,$,$,(#1),#27); 42 | #27= IFCUNITASSIGNMENT((#28,#13,#14,#29,#30)); 43 | #28= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.); 44 | #29= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); 45 | #30= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.); 46 | #31= IFCRELAGGREGATES('2RhrdktUr9mPYwyxxpMuEu',#22,'Project Container','Project Container for Buildings',#26,(#16)); 47 | #32= IFCRECTANGLEPROFILEDEF(.AREA.,'Rect',$,500.0,1000.0); 48 | #33= IFCCARTESIANPOINT((0.0,0.0,0.0)); 49 | #34= IFCAXIS2PLACEMENT3D(#33,$,$); 50 | #35= IFCDIRECTION((0.0,0.0,1.0)); 51 | #36= IFCEXTRUDEDAREASOLID(#32,#34,#35,2000.0); 52 | #37= IFCSHAPEREPRESENTATION(#5,'Body','SweptSolid',(#36)); 53 | #38= IFCPRODUCTDEFINITIONSHAPE($,$,(#37)); 54 | #39= IFCAIRTERMINAL('1FAwZK7UP9beO_IaH8fMte',#22,$,$,$,#41,#38,$,.DIFFUSER.); 55 | #40= IFCAXIS2PLACEMENT3D(#2,$,$); 56 | #41= IFCLOCALPLACEMENT(#15,#40); 57 | ENDSEC; 58 | 59 | END-ISO-10303-21; 60 | 61 | -------------------------------------------------------------------------------- /ConsoleTestMEP/examples/Chiller IFC2x3.ifc: -------------------------------------------------------------------------------- 1 | ISO-10303-21; 2 | HEADER; 3 | FILE_DESCRIPTION(('ViewDefinition [notYetAssigned]'),'2;1'); 4 | FILE_NAME( 5 | /* name */ 'C:\\My Work\\Geometry Gym\\GitHub\\GeometryGymIFCExamples\\ConsoleTestMEP\\examples\\Chiller IFC2x3.ifc', 6 | /* time_stamp */ '2016-05-06T12:41:20', 7 | /* author */ ('jonm'), 8 | /* organization */ ('Unknown'), 9 | /* preprocessor_version */ 'GeomGymIFC by Geometry Gym Pty Ltd', 10 | /* originating_system */ 'GeometryGymIFC', 11 | /* authorization */ 'None'); 12 | 13 | FILE_SCHEMA (('IFC2X3')); 14 | ENDSEC; 15 | 16 | DATA; 17 | #1= IFCPERSONANDORGANIZATION(#2,#3,$); 18 | #2= IFCPERSON('jonm','jonm',$,$,$,$,$,$); 19 | #3= IFCORGANIZATION($,'UNKNOWN',$,$,$); 20 | #4= IFCAPPLICATION(#5,'0.0.4.0','GeometryGymIFC','GeometryGymIFC'); 21 | #5= IFCORGANIZATION($,'Geometry Gym Pty Ltd',$,$,$); 22 | #6= IFCOWNERHISTORY(#1,#4,$,.ADDED.,1462538480,$,$,1462538480); 23 | #7= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.0001,#9,$); 24 | #8= IFCCARTESIANPOINT((0.0,0.0,0.0)); 25 | #9= IFCAXIS2PLACEMENT3D(#8,$,$); 26 | #10= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#7,$,.MODEL_VIEW.,$); 27 | #11= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#7,$,.MODEL_VIEW.,$); 28 | #12= IFCCARTESIANPOINT((0.0,0.0,0.0)); 29 | #13= IFCDIRECTION((1.0,0.0,0.0)); 30 | #14= IFCDIRECTION((0.0,1.0,0.0)); 31 | #15= IFCDIRECTION((0.0,0.0,1.0)); 32 | #16= IFCCARTESIANPOINT((0.0,0.0)); 33 | #17= IFCAXIS2PLACEMENT2D(#16,$); 34 | #18= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); 35 | #19= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); 36 | #20= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); 37 | #21= IFCLOCALPLACEMENT($,#9); 38 | #22= IFCBUILDING('0OEXWpizDFlOUx7grJCug_',#6,'IfcBuilding',$,$,#21,$,$,.ELEMENT.,$,$,$); 39 | #23= IFCRELCONTAINEDINSPATIALSTRUCTURE('0VLFJ$$NPCZBYJT4YNgD6t',#6,'Building','Building Container for Elements',(#39),#22); 40 | #24= IFCPROJECT('34PaKfaCnAiAxWYEGAjJGY',#6,'IfcProject',$,$,$,$,(#7),#25); 41 | #25= IFCUNITASSIGNMENT((#26,#19,#20,#27,#28)); 42 | #26= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.); 43 | #27= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); 44 | #28= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.); 45 | #29= IFCRELAGGREGATES('3l7KV9OszFuxWVYlYPvsMW',#6,'Project Container','Project Container for Buildings',#24,(#22)); 46 | #30= IFCRECTANGLEPROFILEDEF(.AREA.,'Rect',#17,500.0,1000.0); 47 | #31= IFCGENERALPROFILEPROPERTIES($,#30,$,$,$,$,$); 48 | #33= IFCCARTESIANPOINT((0.0,0.0,0.0)); 49 | #34= IFCAXIS2PLACEMENT3D(#33,$,$); 50 | #35= IFCDIRECTION((0.0,0.0,1.0)); 51 | #36= IFCEXTRUDEDAREASOLID(#30,#34,#35,2000.0); 52 | #37= IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#36)); 53 | #38= IFCPRODUCTDEFINITIONSHAPE($,$,(#37)); 54 | #39= IFCENERGYCONVERSIONDEVICE('0ZwmwMGzj0og3MFbSx7A5y',#6,$,$,$,#41,#38,$); 55 | #40= IFCAXIS2PLACEMENT3D(#8,$,$); 56 | #41= IFCLOCALPLACEMENT(#21,#40); 57 | #42= IFCCHILLERTYPE('0N8yrhmnnCgA5Nl983JaND',#6,'MyChillerType',$,$,$,$,$,$,.AIRCOOLED.); 58 | #43= IFCRELDEFINESBYTYPE('0TrykRjIXEahxn9xfMb9Zf',#6,$,$,(#39),#42); 59 | ENDSEC; 60 | 61 | END-ISO-10303-21; 62 | 63 | -------------------------------------------------------------------------------- /ConsoleTestMEP/examples/Chiller IFC4A1.ifc: -------------------------------------------------------------------------------- 1 | ISO-10303-21; 2 | HEADER; 3 | FILE_DESCRIPTION(('ViewDefinition [notYetAssigned]'),'2;1'); 4 | FILE_NAME( 5 | /* name */ 'C:\\My Work\\Geometry Gym\\GitHub\\GeometryGymIFCExamples\\ConsoleTestMEP\\examples\\Chiller IFC4A1.ifc', 6 | /* time_stamp */ '2016-05-06T12:41:20', 7 | /* author */ ('jonm'), 8 | /* organization */ ('Unknown'), 9 | /* preprocessor_version */ 'GeomGymIFC by Geometry Gym Pty Ltd', 10 | /* originating_system */ 'GeometryGymIFC', 11 | /* authorization */ 'None'); 12 | 13 | FILE_SCHEMA (('IFC4')); 14 | ENDSEC; 15 | 16 | DATA; 17 | #1= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.0001,#3,$); 18 | #2= IFCCARTESIANPOINT((0.0,0.0,0.0)); 19 | #3= IFCAXIS2PLACEMENT3D(#2,$,$); 20 | #4= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#1,$,.MODEL_VIEW.,$); 21 | #5= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#1,$,.MODEL_VIEW.,$); 22 | #6= IFCCARTESIANPOINT((0.0,0.0,0.0)); 23 | #7= IFCDIRECTION((1.0,0.0,0.0)); 24 | #8= IFCDIRECTION((0.0,1.0,0.0)); 25 | #9= IFCDIRECTION((0.0,0.0,1.0)); 26 | #10= IFCCARTESIANPOINT((0.0,0.0)); 27 | #11= IFCAXIS2PLACEMENT2D(#10,$); 28 | #12= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); 29 | #13= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); 30 | #14= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); 31 | #15= IFCLOCALPLACEMENT($,#3); 32 | #16= IFCBUILDING('3jYsG7nVrFDOv1muE4KfZc',#22,'IfcBuilding',$,$,#15,$,$,$,$,$,$); 33 | #17= IFCPERSONANDORGANIZATION(#18,#19,$); 34 | #18= IFCPERSON('jonm','jonm',$,$,$,$,$,$); 35 | #19= IFCORGANIZATION($,'UNKNOWN',$,$,$); 36 | #20= IFCAPPLICATION(#21,'0.0.4.0','GeometryGymIFC','GeometryGymIFC'); 37 | #21= IFCORGANIZATION($,'Geometry Gym Pty Ltd',$,$,$); 38 | #22= IFCOWNERHISTORY(#17,#20,$,.ADDED.,1462538480,$,$,1462538480); 39 | #23= IFCRELCONTAINEDINSPATIALSTRUCTURE('26U25erh90lP1fXQ5SmkIx',#22,'Building','Building Container for Elements',(#39),#16); 40 | #24= IFCAXIS2PLACEMENT3D(#2,$,$); 41 | #26= IFCPROJECT('2m0JQm91X848YflB_ZvikK',#22,'IfcProject',$,$,$,$,(#1),#27); 42 | #27= IFCUNITASSIGNMENT((#28,#13,#14,#29,#30)); 43 | #28= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.); 44 | #29= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); 45 | #30= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.); 46 | #31= IFCRELAGGREGATES('3B5KDCNoj5UQRLEGOFSXwA',#22,'Project Container','Project Container for Buildings',#26,(#16)); 47 | #32= IFCRECTANGLEPROFILEDEF(.AREA.,'Rect',$,500.0,1000.0); 48 | #33= IFCCARTESIANPOINT((0.0,0.0,0.0)); 49 | #34= IFCAXIS2PLACEMENT3D(#33,$,$); 50 | #35= IFCDIRECTION((0.0,0.0,1.0)); 51 | #36= IFCEXTRUDEDAREASOLID(#32,#34,#35,2000.0); 52 | #37= IFCSHAPEREPRESENTATION(#5,'Body','SweptSolid',(#36)); 53 | #38= IFCPRODUCTDEFINITIONSHAPE($,$,(#37)); 54 | #39= IFCCHILLER('297yntvV98TfSor49W3ubA',#22,$,$,$,#41,#38,$,.AIRCOOLED.); 55 | #40= IFCAXIS2PLACEMENT3D(#2,$,$); 56 | #41= IFCLOCALPLACEMENT(#15,#40); 57 | ENDSEC; 58 | 59 | END-ISO-10303-21; 60 | 61 | -------------------------------------------------------------------------------- /ConsoleTestMEP/examples/ElectricPoint IFC2x3.ifc: -------------------------------------------------------------------------------- 1 | ISO-10303-21; 2 | HEADER; 3 | FILE_DESCRIPTION(('ViewDefinition [notYetAssigned]'),'2;1'); 4 | FILE_NAME( 5 | /* name */ 'C:\\My Work\\Geometry Gym\\GitHub\\GeometryGymIFCExamples\\ConsoleTestMEP\\examples\\ElectricPoint IFC2x3.ifc', 6 | /* time_stamp */ '2016-05-06T12:41:20', 7 | /* author */ ('jonm'), 8 | /* organization */ ('Unknown'), 9 | /* preprocessor_version */ 'GeomGymIFC by Geometry Gym Pty Ltd', 10 | /* originating_system */ 'GeometryGymIFC', 11 | /* authorization */ 'None'); 12 | 13 | FILE_SCHEMA (('IFC2X3')); 14 | ENDSEC; 15 | 16 | DATA; 17 | #1= IFCPERSONANDORGANIZATION(#2,#3,$); 18 | #2= IFCPERSON('jonm','jonm',$,$,$,$,$,$); 19 | #3= IFCORGANIZATION($,'UNKNOWN',$,$,$); 20 | #4= IFCAPPLICATION(#5,'0.0.4.0','GeometryGymIFC','GeometryGymIFC'); 21 | #5= IFCORGANIZATION($,'Geometry Gym Pty Ltd',$,$,$); 22 | #6= IFCOWNERHISTORY(#1,#4,$,.ADDED.,1462538480,$,$,1462538480); 23 | #7= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.0001,#9,$); 24 | #8= IFCCARTESIANPOINT((0.0,0.0,0.0)); 25 | #9= IFCAXIS2PLACEMENT3D(#8,$,$); 26 | #10= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#7,$,.MODEL_VIEW.,$); 27 | #11= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#7,$,.MODEL_VIEW.,$); 28 | #12= IFCCARTESIANPOINT((0.0,0.0,0.0)); 29 | #13= IFCDIRECTION((1.0,0.0,0.0)); 30 | #14= IFCDIRECTION((0.0,1.0,0.0)); 31 | #15= IFCDIRECTION((0.0,0.0,1.0)); 32 | #16= IFCCARTESIANPOINT((0.0,0.0)); 33 | #17= IFCAXIS2PLACEMENT2D(#16,$); 34 | #18= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); 35 | #19= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); 36 | #20= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); 37 | #21= IFCLOCALPLACEMENT($,#9); 38 | #22= IFCBUILDING('1$QoFI9398ORx69ge3_2Uq',#6,'IfcBuilding',$,$,#21,$,$,.ELEMENT.,$,$,$); 39 | #23= IFCRELCONTAINEDINSPATIALSTRUCTURE('1wCZFKrb50ABBx2_l$V2fH',#6,'Building','Building Container for Elements',(#39),#22); 40 | #24= IFCPROJECT('2ZbSC0XZLBVg1vqWmzXr3e',#6,'IfcProject',$,$,$,$,(#7),#25); 41 | #25= IFCUNITASSIGNMENT((#26,#19,#20,#27,#28)); 42 | #26= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.); 43 | #27= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); 44 | #28= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.); 45 | #29= IFCRELAGGREGATES('21XA7tjj5FLRlh8yL6rqMx',#6,'Project Container','Project Container for Buildings',#24,(#22)); 46 | #30= IFCRECTANGLEPROFILEDEF(.AREA.,'Rect',#17,500.0,1000.0); 47 | #31= IFCGENERALPROFILEPROPERTIES($,#30,$,$,$,$,$); 48 | #33= IFCCARTESIANPOINT((0.0,0.0,0.0)); 49 | #34= IFCAXIS2PLACEMENT3D(#33,$,$); 50 | #35= IFCDIRECTION((0.0,0.0,1.0)); 51 | #36= IFCEXTRUDEDAREASOLID(#30,#34,#35,2000.0); 52 | #37= IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#36)); 53 | #38= IFCPRODUCTDEFINITIONSHAPE($,$,(#37)); 54 | #39= IFCDISTRIBUTIONFLOWELEMENT('3jhQcNbaHAZhPgFTq$Qvb0',#6,$,$,$,#41,#38,$,.DISTRIBUTIONBOARD.,$); 55 | #40= IFCAXIS2PLACEMENT3D(#8,$,$); 56 | #41= IFCLOCALPLACEMENT(#21,#40); 57 | ENDSEC; 58 | 59 | END-ISO-10303-21; 60 | 61 | -------------------------------------------------------------------------------- /ConsoleTestMEP/examples/Mep Examples.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GeometryGym/GeometryGymIFCExamples/dc00871a1ba4d9205df4c8429cd32f8481d4672d/ConsoleTestMEP/examples/Mep Examples.zip -------------------------------------------------------------------------------- /ConsoleTestMEP/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /GeometryGymIFC Examples.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.0.31903.59 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleCountStories", "consoleCountStories\ConsoleCountStories.csproj", "{84E0D08C-7B02-46AE-AF40-0DD949B2B4A1}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleCreateWall", "ConsoleCreateWall\ConsoleCreateWall.csproj", "{936E0147-D449-44FC-A758-0A1496743694}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleGetBreps", "consoleGetBreps\ConsoleGetBreps.csproj", "{1A31C2C3-3C06-474B-AC42-1F8337D6D0D1}" 11 | EndProject 12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleTestMEP", "ConsoleTestMEP\ConsoleTestMEP.csproj", "{74D7C9C0-8B35-4D9C-9076-966BAFFE21D2}" 13 | EndProject 14 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleSummarizeElements", "consoleSummarizeElements\ConsoleSummarizeElements.csproj", "{EAA610E9-10AD-471D-8A33-D0F32ED80698}" 15 | EndProject 16 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestModelViewDefinition", "TestModelViewDefinition\TestModelViewDefinition.csproj", "{78D771EF-F2AA-446B-AE60-7B8F39E83AC3}" 17 | EndProject 18 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleParametricFooting", "ConsoleParametricFooting\ConsoleParametricFooting.csproj", "{0819DF6D-49F7-44B4-9AB8-6C5D118230AD}" 19 | EndProject 20 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleCreateSurfaceMember", "ConsoleCreateSurfaceMember\ConsoleCreateSurfaceMember.csproj", "{442A078B-9EE7-4136-AD2B-831DBAB519EE}" 21 | EndProject 22 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleCreateSpatialStructure", "ConsoleCreateSpatialStructure\ConsoleCreateSpatialStructure.csproj", "{68792D4F-10A5-4541-BA0E-C1EA5DCD9AEF}" 23 | EndProject 24 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleCreateSpanAnnotation", "ConsoleCreateSpanAnnotation\ConsoleCreateSpanAnnotation.csproj", "{AC852EC7-1CF2-47D5-8044-8E8CF2D01B3B}" 25 | EndProject 26 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleClassificationDemo", "ConsoleClassificationDemo\ConsoleClassificationDemo.csproj", "{CEB724C5-DBE7-4813-89F7-0A0935EED746}" 27 | EndProject 28 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleFilterElements", "ConsoleFilterElements\ConsoleFilterElements.csproj", "{0001A679-2FDC-4898-B906-252FAD2D9E43}" 29 | EndProject 30 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleCheckModelDemo", "ConsoleCheckModelDemo\ConsoleCheckModelDemo.csproj", "{A5A10695-EDFA-4EFB-B36B-8271E693E2E4}" 31 | EndProject 32 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IFC4X4_Tunnel_Deployment", "IFC4X4_Tunnel_Deployment\IFC4X4_Tunnel_Deployment.csproj", "{A804D99C-5757-4CDD-BD26-E0D5250D4667}" 33 | EndProject 34 | Global 35 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 36 | Debug|Any CPU = Debug|Any CPU 37 | Debug|x64 = Debug|x64 38 | Debug|x86 = Debug|x86 39 | Release|Any CPU = Release|Any CPU 40 | Release|x64 = Release|x64 41 | Release|x86 = Release|x86 42 | EndGlobalSection 43 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 44 | {84E0D08C-7B02-46AE-AF40-0DD949B2B4A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 45 | {84E0D08C-7B02-46AE-AF40-0DD949B2B4A1}.Debug|Any CPU.Build.0 = Debug|Any CPU 46 | {84E0D08C-7B02-46AE-AF40-0DD949B2B4A1}.Debug|x64.ActiveCfg = Debug|Any CPU 47 | {84E0D08C-7B02-46AE-AF40-0DD949B2B4A1}.Debug|x86.ActiveCfg = Debug|Any CPU 48 | {84E0D08C-7B02-46AE-AF40-0DD949B2B4A1}.Release|Any CPU.ActiveCfg = Release|Any CPU 49 | {84E0D08C-7B02-46AE-AF40-0DD949B2B4A1}.Release|Any CPU.Build.0 = Release|Any CPU 50 | {84E0D08C-7B02-46AE-AF40-0DD949B2B4A1}.Release|x64.ActiveCfg = Release|Any CPU 51 | {84E0D08C-7B02-46AE-AF40-0DD949B2B4A1}.Release|x86.ActiveCfg = Release|Any CPU 52 | {936E0147-D449-44FC-A758-0A1496743694}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 53 | {936E0147-D449-44FC-A758-0A1496743694}.Debug|Any CPU.Build.0 = Debug|Any CPU 54 | {936E0147-D449-44FC-A758-0A1496743694}.Debug|x64.ActiveCfg = Debug|Any CPU 55 | {936E0147-D449-44FC-A758-0A1496743694}.Debug|x64.Build.0 = Debug|Any CPU 56 | {936E0147-D449-44FC-A758-0A1496743694}.Debug|x86.ActiveCfg = Debug|Any CPU 57 | {936E0147-D449-44FC-A758-0A1496743694}.Debug|x86.Build.0 = Debug|Any CPU 58 | {936E0147-D449-44FC-A758-0A1496743694}.Release|Any CPU.ActiveCfg = Release|Any CPU 59 | {936E0147-D449-44FC-A758-0A1496743694}.Release|Any CPU.Build.0 = Release|Any CPU 60 | {936E0147-D449-44FC-A758-0A1496743694}.Release|x64.ActiveCfg = Release|Any CPU 61 | {936E0147-D449-44FC-A758-0A1496743694}.Release|x64.Build.0 = Release|Any CPU 62 | {936E0147-D449-44FC-A758-0A1496743694}.Release|x86.ActiveCfg = Release|Any CPU 63 | {936E0147-D449-44FC-A758-0A1496743694}.Release|x86.Build.0 = Release|Any CPU 64 | {1A31C2C3-3C06-474B-AC42-1F8337D6D0D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 65 | {1A31C2C3-3C06-474B-AC42-1F8337D6D0D1}.Debug|Any CPU.Build.0 = Debug|Any CPU 66 | {1A31C2C3-3C06-474B-AC42-1F8337D6D0D1}.Debug|x64.ActiveCfg = Debug|Any CPU 67 | {1A31C2C3-3C06-474B-AC42-1F8337D6D0D1}.Debug|x64.Build.0 = Debug|Any CPU 68 | {1A31C2C3-3C06-474B-AC42-1F8337D6D0D1}.Debug|x86.ActiveCfg = Debug|Any CPU 69 | {1A31C2C3-3C06-474B-AC42-1F8337D6D0D1}.Debug|x86.Build.0 = Debug|Any CPU 70 | {1A31C2C3-3C06-474B-AC42-1F8337D6D0D1}.Release|Any CPU.ActiveCfg = Release|Any CPU 71 | {1A31C2C3-3C06-474B-AC42-1F8337D6D0D1}.Release|Any CPU.Build.0 = Release|Any CPU 72 | {1A31C2C3-3C06-474B-AC42-1F8337D6D0D1}.Release|x64.ActiveCfg = Release|Any CPU 73 | {1A31C2C3-3C06-474B-AC42-1F8337D6D0D1}.Release|x64.Build.0 = Release|Any CPU 74 | {1A31C2C3-3C06-474B-AC42-1F8337D6D0D1}.Release|x86.ActiveCfg = Release|Any CPU 75 | {1A31C2C3-3C06-474B-AC42-1F8337D6D0D1}.Release|x86.Build.0 = Release|Any CPU 76 | {74D7C9C0-8B35-4D9C-9076-966BAFFE21D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 77 | {74D7C9C0-8B35-4D9C-9076-966BAFFE21D2}.Debug|Any CPU.Build.0 = Debug|Any CPU 78 | {74D7C9C0-8B35-4D9C-9076-966BAFFE21D2}.Debug|x64.ActiveCfg = Debug|Any CPU 79 | {74D7C9C0-8B35-4D9C-9076-966BAFFE21D2}.Debug|x64.Build.0 = Debug|Any CPU 80 | {74D7C9C0-8B35-4D9C-9076-966BAFFE21D2}.Debug|x86.ActiveCfg = Debug|Any CPU 81 | {74D7C9C0-8B35-4D9C-9076-966BAFFE21D2}.Debug|x86.Build.0 = Debug|Any CPU 82 | {74D7C9C0-8B35-4D9C-9076-966BAFFE21D2}.Release|Any CPU.ActiveCfg = Release|Any CPU 83 | {74D7C9C0-8B35-4D9C-9076-966BAFFE21D2}.Release|Any CPU.Build.0 = Release|Any CPU 84 | {74D7C9C0-8B35-4D9C-9076-966BAFFE21D2}.Release|x64.ActiveCfg = Release|Any CPU 85 | {74D7C9C0-8B35-4D9C-9076-966BAFFE21D2}.Release|x64.Build.0 = Release|Any CPU 86 | {74D7C9C0-8B35-4D9C-9076-966BAFFE21D2}.Release|x86.ActiveCfg = Release|Any CPU 87 | {74D7C9C0-8B35-4D9C-9076-966BAFFE21D2}.Release|x86.Build.0 = Release|Any CPU 88 | {EAA610E9-10AD-471D-8A33-D0F32ED80698}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 89 | {EAA610E9-10AD-471D-8A33-D0F32ED80698}.Debug|Any CPU.Build.0 = Debug|Any CPU 90 | {EAA610E9-10AD-471D-8A33-D0F32ED80698}.Debug|x64.ActiveCfg = Debug|Any CPU 91 | {EAA610E9-10AD-471D-8A33-D0F32ED80698}.Debug|x64.Build.0 = Debug|Any CPU 92 | {EAA610E9-10AD-471D-8A33-D0F32ED80698}.Debug|x86.ActiveCfg = Debug|Any CPU 93 | {EAA610E9-10AD-471D-8A33-D0F32ED80698}.Debug|x86.Build.0 = Debug|Any CPU 94 | {EAA610E9-10AD-471D-8A33-D0F32ED80698}.Release|Any CPU.ActiveCfg = Release|Any CPU 95 | {EAA610E9-10AD-471D-8A33-D0F32ED80698}.Release|Any CPU.Build.0 = Release|Any CPU 96 | {EAA610E9-10AD-471D-8A33-D0F32ED80698}.Release|x64.ActiveCfg = Release|Any CPU 97 | {EAA610E9-10AD-471D-8A33-D0F32ED80698}.Release|x64.Build.0 = Release|Any CPU 98 | {EAA610E9-10AD-471D-8A33-D0F32ED80698}.Release|x86.ActiveCfg = Release|Any CPU 99 | {EAA610E9-10AD-471D-8A33-D0F32ED80698}.Release|x86.Build.0 = Release|Any CPU 100 | {78D771EF-F2AA-446B-AE60-7B8F39E83AC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 101 | {78D771EF-F2AA-446B-AE60-7B8F39E83AC3}.Debug|Any CPU.Build.0 = Debug|Any CPU 102 | {78D771EF-F2AA-446B-AE60-7B8F39E83AC3}.Debug|x64.ActiveCfg = Debug|Any CPU 103 | {78D771EF-F2AA-446B-AE60-7B8F39E83AC3}.Debug|x64.Build.0 = Debug|Any CPU 104 | {78D771EF-F2AA-446B-AE60-7B8F39E83AC3}.Debug|x86.ActiveCfg = Debug|Any CPU 105 | {78D771EF-F2AA-446B-AE60-7B8F39E83AC3}.Debug|x86.Build.0 = Debug|Any CPU 106 | {78D771EF-F2AA-446B-AE60-7B8F39E83AC3}.Release|Any CPU.ActiveCfg = Release|Any CPU 107 | {78D771EF-F2AA-446B-AE60-7B8F39E83AC3}.Release|Any CPU.Build.0 = Release|Any CPU 108 | {78D771EF-F2AA-446B-AE60-7B8F39E83AC3}.Release|x64.ActiveCfg = Release|Any CPU 109 | {78D771EF-F2AA-446B-AE60-7B8F39E83AC3}.Release|x64.Build.0 = Release|Any CPU 110 | {78D771EF-F2AA-446B-AE60-7B8F39E83AC3}.Release|x86.ActiveCfg = Release|Any CPU 111 | {78D771EF-F2AA-446B-AE60-7B8F39E83AC3}.Release|x86.Build.0 = Release|Any CPU 112 | {0819DF6D-49F7-44B4-9AB8-6C5D118230AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 113 | {0819DF6D-49F7-44B4-9AB8-6C5D118230AD}.Debug|Any CPU.Build.0 = Debug|Any CPU 114 | {0819DF6D-49F7-44B4-9AB8-6C5D118230AD}.Debug|x64.ActiveCfg = Debug|Any CPU 115 | {0819DF6D-49F7-44B4-9AB8-6C5D118230AD}.Debug|x64.Build.0 = Debug|Any CPU 116 | {0819DF6D-49F7-44B4-9AB8-6C5D118230AD}.Debug|x86.ActiveCfg = Debug|Any CPU 117 | {0819DF6D-49F7-44B4-9AB8-6C5D118230AD}.Debug|x86.Build.0 = Debug|Any CPU 118 | {0819DF6D-49F7-44B4-9AB8-6C5D118230AD}.Release|Any CPU.ActiveCfg = Release|Any CPU 119 | {0819DF6D-49F7-44B4-9AB8-6C5D118230AD}.Release|Any CPU.Build.0 = Release|Any CPU 120 | {0819DF6D-49F7-44B4-9AB8-6C5D118230AD}.Release|x64.ActiveCfg = Release|Any CPU 121 | {0819DF6D-49F7-44B4-9AB8-6C5D118230AD}.Release|x64.Build.0 = Release|Any CPU 122 | {0819DF6D-49F7-44B4-9AB8-6C5D118230AD}.Release|x86.ActiveCfg = Release|Any CPU 123 | {0819DF6D-49F7-44B4-9AB8-6C5D118230AD}.Release|x86.Build.0 = Release|Any CPU 124 | {442A078B-9EE7-4136-AD2B-831DBAB519EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 125 | {442A078B-9EE7-4136-AD2B-831DBAB519EE}.Debug|Any CPU.Build.0 = Debug|Any CPU 126 | {442A078B-9EE7-4136-AD2B-831DBAB519EE}.Debug|x64.ActiveCfg = Debug|Any CPU 127 | {442A078B-9EE7-4136-AD2B-831DBAB519EE}.Debug|x64.Build.0 = Debug|Any CPU 128 | {442A078B-9EE7-4136-AD2B-831DBAB519EE}.Debug|x86.ActiveCfg = Debug|Any CPU 129 | {442A078B-9EE7-4136-AD2B-831DBAB519EE}.Debug|x86.Build.0 = Debug|Any CPU 130 | {442A078B-9EE7-4136-AD2B-831DBAB519EE}.Release|Any CPU.ActiveCfg = Release|Any CPU 131 | {442A078B-9EE7-4136-AD2B-831DBAB519EE}.Release|Any CPU.Build.0 = Release|Any CPU 132 | {442A078B-9EE7-4136-AD2B-831DBAB519EE}.Release|x64.ActiveCfg = Release|Any CPU 133 | {442A078B-9EE7-4136-AD2B-831DBAB519EE}.Release|x64.Build.0 = Release|Any CPU 134 | {442A078B-9EE7-4136-AD2B-831DBAB519EE}.Release|x86.ActiveCfg = Release|Any CPU 135 | {442A078B-9EE7-4136-AD2B-831DBAB519EE}.Release|x86.Build.0 = Release|Any CPU 136 | {68792D4F-10A5-4541-BA0E-C1EA5DCD9AEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 137 | {68792D4F-10A5-4541-BA0E-C1EA5DCD9AEF}.Debug|Any CPU.Build.0 = Debug|Any CPU 138 | {68792D4F-10A5-4541-BA0E-C1EA5DCD9AEF}.Debug|x64.ActiveCfg = Debug|Any CPU 139 | {68792D4F-10A5-4541-BA0E-C1EA5DCD9AEF}.Debug|x64.Build.0 = Debug|Any CPU 140 | {68792D4F-10A5-4541-BA0E-C1EA5DCD9AEF}.Debug|x86.ActiveCfg = Debug|Any CPU 141 | {68792D4F-10A5-4541-BA0E-C1EA5DCD9AEF}.Debug|x86.Build.0 = Debug|Any CPU 142 | {68792D4F-10A5-4541-BA0E-C1EA5DCD9AEF}.Release|Any CPU.ActiveCfg = Release|Any CPU 143 | {68792D4F-10A5-4541-BA0E-C1EA5DCD9AEF}.Release|Any CPU.Build.0 = Release|Any CPU 144 | {68792D4F-10A5-4541-BA0E-C1EA5DCD9AEF}.Release|x64.ActiveCfg = Release|Any CPU 145 | {68792D4F-10A5-4541-BA0E-C1EA5DCD9AEF}.Release|x64.Build.0 = Release|Any CPU 146 | {68792D4F-10A5-4541-BA0E-C1EA5DCD9AEF}.Release|x86.ActiveCfg = Release|Any CPU 147 | {68792D4F-10A5-4541-BA0E-C1EA5DCD9AEF}.Release|x86.Build.0 = Release|Any CPU 148 | {AC852EC7-1CF2-47D5-8044-8E8CF2D01B3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 149 | {AC852EC7-1CF2-47D5-8044-8E8CF2D01B3B}.Debug|Any CPU.Build.0 = Debug|Any CPU 150 | {AC852EC7-1CF2-47D5-8044-8E8CF2D01B3B}.Debug|x64.ActiveCfg = Debug|Any CPU 151 | {AC852EC7-1CF2-47D5-8044-8E8CF2D01B3B}.Debug|x64.Build.0 = Debug|Any CPU 152 | {AC852EC7-1CF2-47D5-8044-8E8CF2D01B3B}.Debug|x86.ActiveCfg = Debug|Any CPU 153 | {AC852EC7-1CF2-47D5-8044-8E8CF2D01B3B}.Debug|x86.Build.0 = Debug|Any CPU 154 | {AC852EC7-1CF2-47D5-8044-8E8CF2D01B3B}.Release|Any CPU.ActiveCfg = Release|Any CPU 155 | {AC852EC7-1CF2-47D5-8044-8E8CF2D01B3B}.Release|Any CPU.Build.0 = Release|Any CPU 156 | {AC852EC7-1CF2-47D5-8044-8E8CF2D01B3B}.Release|x64.ActiveCfg = Release|Any CPU 157 | {AC852EC7-1CF2-47D5-8044-8E8CF2D01B3B}.Release|x64.Build.0 = Release|Any CPU 158 | {AC852EC7-1CF2-47D5-8044-8E8CF2D01B3B}.Release|x86.ActiveCfg = Release|Any CPU 159 | {AC852EC7-1CF2-47D5-8044-8E8CF2D01B3B}.Release|x86.Build.0 = Release|Any CPU 160 | {CEB724C5-DBE7-4813-89F7-0A0935EED746}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 161 | {CEB724C5-DBE7-4813-89F7-0A0935EED746}.Debug|Any CPU.Build.0 = Debug|Any CPU 162 | {CEB724C5-DBE7-4813-89F7-0A0935EED746}.Debug|x64.ActiveCfg = Debug|Any CPU 163 | {CEB724C5-DBE7-4813-89F7-0A0935EED746}.Debug|x64.Build.0 = Debug|Any CPU 164 | {CEB724C5-DBE7-4813-89F7-0A0935EED746}.Debug|x86.ActiveCfg = Debug|Any CPU 165 | {CEB724C5-DBE7-4813-89F7-0A0935EED746}.Debug|x86.Build.0 = Debug|Any CPU 166 | {CEB724C5-DBE7-4813-89F7-0A0935EED746}.Release|Any CPU.ActiveCfg = Release|Any CPU 167 | {CEB724C5-DBE7-4813-89F7-0A0935EED746}.Release|Any CPU.Build.0 = Release|Any CPU 168 | {CEB724C5-DBE7-4813-89F7-0A0935EED746}.Release|x64.ActiveCfg = Release|Any CPU 169 | {CEB724C5-DBE7-4813-89F7-0A0935EED746}.Release|x64.Build.0 = Release|Any CPU 170 | {CEB724C5-DBE7-4813-89F7-0A0935EED746}.Release|x86.ActiveCfg = Release|Any CPU 171 | {CEB724C5-DBE7-4813-89F7-0A0935EED746}.Release|x86.Build.0 = Release|Any CPU 172 | {0001A679-2FDC-4898-B906-252FAD2D9E43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 173 | {0001A679-2FDC-4898-B906-252FAD2D9E43}.Debug|Any CPU.Build.0 = Debug|Any CPU 174 | {0001A679-2FDC-4898-B906-252FAD2D9E43}.Debug|x64.ActiveCfg = Debug|Any CPU 175 | {0001A679-2FDC-4898-B906-252FAD2D9E43}.Debug|x64.Build.0 = Debug|Any CPU 176 | {0001A679-2FDC-4898-B906-252FAD2D9E43}.Debug|x86.ActiveCfg = Debug|Any CPU 177 | {0001A679-2FDC-4898-B906-252FAD2D9E43}.Debug|x86.Build.0 = Debug|Any CPU 178 | {0001A679-2FDC-4898-B906-252FAD2D9E43}.Release|Any CPU.ActiveCfg = Release|Any CPU 179 | {0001A679-2FDC-4898-B906-252FAD2D9E43}.Release|Any CPU.Build.0 = Release|Any CPU 180 | {0001A679-2FDC-4898-B906-252FAD2D9E43}.Release|x64.ActiveCfg = Release|Any CPU 181 | {0001A679-2FDC-4898-B906-252FAD2D9E43}.Release|x64.Build.0 = Release|Any CPU 182 | {0001A679-2FDC-4898-B906-252FAD2D9E43}.Release|x86.ActiveCfg = Release|Any CPU 183 | {0001A679-2FDC-4898-B906-252FAD2D9E43}.Release|x86.Build.0 = Release|Any CPU 184 | {A5A10695-EDFA-4EFB-B36B-8271E693E2E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 185 | {A5A10695-EDFA-4EFB-B36B-8271E693E2E4}.Debug|Any CPU.Build.0 = Debug|Any CPU 186 | {A5A10695-EDFA-4EFB-B36B-8271E693E2E4}.Debug|x64.ActiveCfg = Debug|Any CPU 187 | {A5A10695-EDFA-4EFB-B36B-8271E693E2E4}.Debug|x64.Build.0 = Debug|Any CPU 188 | {A5A10695-EDFA-4EFB-B36B-8271E693E2E4}.Debug|x86.ActiveCfg = Debug|Any CPU 189 | {A5A10695-EDFA-4EFB-B36B-8271E693E2E4}.Debug|x86.Build.0 = Debug|Any CPU 190 | {A5A10695-EDFA-4EFB-B36B-8271E693E2E4}.Release|Any CPU.ActiveCfg = Release|Any CPU 191 | {A5A10695-EDFA-4EFB-B36B-8271E693E2E4}.Release|Any CPU.Build.0 = Release|Any CPU 192 | {A5A10695-EDFA-4EFB-B36B-8271E693E2E4}.Release|x64.ActiveCfg = Release|Any CPU 193 | {A5A10695-EDFA-4EFB-B36B-8271E693E2E4}.Release|x64.Build.0 = Release|Any CPU 194 | {A5A10695-EDFA-4EFB-B36B-8271E693E2E4}.Release|x86.ActiveCfg = Release|Any CPU 195 | {A5A10695-EDFA-4EFB-B36B-8271E693E2E4}.Release|x86.Build.0 = Release|Any CPU 196 | {A804D99C-5757-4CDD-BD26-E0D5250D4667}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 197 | {A804D99C-5757-4CDD-BD26-E0D5250D4667}.Debug|Any CPU.Build.0 = Debug|Any CPU 198 | {A804D99C-5757-4CDD-BD26-E0D5250D4667}.Debug|x64.ActiveCfg = Debug|Any CPU 199 | {A804D99C-5757-4CDD-BD26-E0D5250D4667}.Debug|x64.Build.0 = Debug|Any CPU 200 | {A804D99C-5757-4CDD-BD26-E0D5250D4667}.Debug|x86.ActiveCfg = Debug|Any CPU 201 | {A804D99C-5757-4CDD-BD26-E0D5250D4667}.Debug|x86.Build.0 = Debug|Any CPU 202 | {A804D99C-5757-4CDD-BD26-E0D5250D4667}.Release|Any CPU.ActiveCfg = Release|Any CPU 203 | {A804D99C-5757-4CDD-BD26-E0D5250D4667}.Release|Any CPU.Build.0 = Release|Any CPU 204 | {A804D99C-5757-4CDD-BD26-E0D5250D4667}.Release|x64.ActiveCfg = Release|Any CPU 205 | {A804D99C-5757-4CDD-BD26-E0D5250D4667}.Release|x64.Build.0 = Release|Any CPU 206 | {A804D99C-5757-4CDD-BD26-E0D5250D4667}.Release|x86.ActiveCfg = Release|Any CPU 207 | {A804D99C-5757-4CDD-BD26-E0D5250D4667}.Release|x86.Build.0 = Release|Any CPU 208 | EndGlobalSection 209 | GlobalSection(SolutionProperties) = preSolution 210 | HideSolutionNode = FALSE 211 | EndGlobalSection 212 | GlobalSection(ExtensibilityGlobals) = postSolution 213 | SolutionGuid = {D695B0BF-6222-4735-8F9D-F7BE7F259569} 214 | EndGlobalSection 215 | EndGlobal 216 | -------------------------------------------------------------------------------- /IFC4X4_Tunnel_Deployment/IFC4X4_Tunnel_Deployment.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | net6.0 6 | enable 7 | enable 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | ..\..\..\GeometryGym\BIM\IFC\GeometryGymIFC\GeometryGymIFCcore\bin\Debug\net6.0\GeometryGymIFCcore.dll 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /IFC4X4_Tunnel_Deployment/Program.cs: -------------------------------------------------------------------------------- 1 | using GeometryGym.Ifc; 2 | 3 | namespace IFC4X4_Tunnel_Deployment; 4 | class Program 5 | { 6 | static void Main(string[] args) 7 | { 8 | GenerateFile(GeoreferencingOption.RigidOperation_Geographic); 9 | GenerateFile(GeoreferencingOption.RigidOperation_Projected); 10 | GenerateFile(GeoreferencingOption.MapConversion); 11 | } 12 | 13 | public enum GeoreferencingOption { MapConversion, RigidOperation_Geographic, RigidOperation_Projected } 14 | internal static void GenerateFile(GeoreferencingOption georeferencing) 15 | { 16 | DatabaseIfc db = new DatabaseIfc(ModelView.Ifc4X4NotAssigned); 17 | 18 | string name = "IFC4X4 Tunnel Deployment Geometry Gym"; 19 | db.Factory.Options.AngleUnitsInRadians = true; 20 | IfcTunnel tunnel = new IfcTunnel(db, name); 21 | IfcProject project = new IfcProject(tunnel, name, IfcUnitAssignment.Length.Metre); 22 | var modelContext = db.Factory.GeometricRepresentationContext(IfcGeometricRepresentationContext.GeometricContextIdentifier.Model); 23 | 24 | IfcClassification uniclass = new IfcClassification(db, "Uniclass"); 25 | uniclass.Source = "NBS"; 26 | uniclass.Specification = "https://uniclass.thenbs.com/"; 27 | new IfcRelAssociatesClassification(uniclass, project); 28 | 29 | IfcClassificationReference entitiesClassification = new IfcClassificationReference(uniclass) { Identification = "En", Name = "Entities", Location = "https://uniclass.thenbs.com/taxon/en" }; 30 | IfcClassificationReference transportEntitiesClassification = new IfcClassificationReference(entitiesClassification) { Identification = "En_80", Name = "Transport Entities", Location = "https://uniclass.thenbs.com/taxon/en_80" }; 31 | IfcClassificationReference tunnelsAndShaftsClassification = new IfcClassificationReference(transportEntitiesClassification) { Identification = "En_80_96", Name = "Tunnels and Shafts", Location = "https://uniclass.thenbs.com/taxon/en_80_96" }; 32 | IfcClassificationReference tunnelsClassification = new IfcClassificationReference(tunnelsAndShaftsClassification) { Identification = "En_80_96_90", Name = "Tunnels", Location = "https://uniclass.thenbs.com/taxon/en_80_96_90" }; 33 | 34 | new IfcRelAssociatesClassification(tunnelsClassification, tunnel); 35 | 36 | string filenameSuffix = ""; 37 | if (georeferencing == GeoreferencingOption.RigidOperation_Geographic) 38 | { 39 | filenameSuffix = "_Georef_B"; 40 | IfcGeographicCRS geographicCRS = new IfcGeographicCRS(db, "EPSG:7844"); 41 | geographicCRS.AngleUnit = db.Factory.ConversionUnit(IfcConversionBasedUnit.CommonUnitName.degree); 42 | new IfcRigidOperation(modelContext, geographicCRS, new IfcPlaneAngleMeasure(142.237002802634), new IfcPlaneAngleMeasure(-38.3834420266629), 0); 43 | } 44 | else 45 | { 46 | IfcProjectedCRS projectedCRS = new IfcProjectedCRS(db, "EPSG:7854"); 47 | string wellKnownText = "PROJCS[\"MGA/20-54\",GEOGCS[\"GDA2020.LL\",DATUM[\"GDA2020-7P\",SPHEROID[\"GRS1980\",6378137.000,298.25722210]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"false_easting\",500000.000],PARAMETER[\"false_northing\",10000000.000],PARAMETER[\"scale_factor\",0.999600000000],PARAMETER[\"central_meridian\",141.00000000000000],PARAMETER[\"latitude_of_origin\",0.00000000000000],UNIT[\"Meter\",1.00000000000000]]"; 48 | new IfcWellKnownText(wellKnownText, projectedCRS); 49 | double eastings = 608040.1319, northings = 5750917.1421; 50 | if (georeferencing == GeoreferencingOption.MapConversion) 51 | { 52 | filenameSuffix = "_Georef_A"; 53 | new IfcMapConversion(modelContext, projectedCRS, eastings, northings, 0); 54 | } 55 | else if (georeferencing == GeoreferencingOption.RigidOperation_Projected) 56 | { 57 | filenameSuffix = "_Georef_C"; 58 | new IfcRigidOperation(modelContext, projectedCRS, new IfcLengthMeasure(607814.0), new IfcLengthMeasure(5750920.0), 0); 59 | } 60 | } 61 | 62 | 63 | IfcPropertyTemplate propertyTemplate = new IfcSimplePropertyTemplate(db, "Example Simple Property Template"); 64 | IfcPropertySetTemplate propertySetTemplate = new IfcPropertySetTemplate("Example Property Set Template", propertyTemplate); 65 | project.AddDeclared(propertySetTemplate); 66 | 67 | string filename = "GeometryGym_Tunnel" + filenameSuffix + ".ifc"; 68 | db.WriteFile(filename); 69 | } 70 | } 71 | 72 | -------------------------------------------------------------------------------- /IFC4X4_Tunnel_Deployment/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "IFC4X4_Tunnel_Deployment": { 4 | "commandName": "Project", 5 | "workingDirectory": "F:\\_ifcTunnel" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Jon Mirtschin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /TestModelViewDefinition/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /TestModelViewDefinition/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("DesignTransferModelViewDefinition")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("DesignTransferModelViewDefinition")] 13 | [assembly: AssemblyCopyright("Copyright © 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("78d771ef-f2aa-446b-ae60-7b8f39e83ac3")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /TestModelViewDefinition/TestModelViewDefinition.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {78D771EF-F2AA-446B-AE60-7B8F39E83AC3} 8 | Exe 9 | Properties 10 | TestModelViewDefinition 11 | TestModelViewDefinition 12 | v4.8 13 | 512 14 | true 15 | 16 | 17 | 18 | AnyCPU 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | 36 | 37 | 38 | ..\packages\GeometryGymIFC_Core.0.1.25\lib\netstandard2.0\GeometryGymIFCcore.dll 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 65 | -------------------------------------------------------------------------------- /TestModelViewDefinition/examples/Ifc4DesignTransfer.ifc: -------------------------------------------------------------------------------- 1 | ISO-10303-21; 2 | HEADER; 3 | FILE_DESCRIPTION(('ViewDefinition [DesignTransferView_V1]'),'2;1'); 4 | FILE_NAME( 5 | /* name */ 'C:\\My Work\\Geometry Gym\\source code\\Open Source\\GeometryGymIfcExamples\\TestModelViewDefinition\\examples\\Ifc4DesignTransfer.ifc', 6 | /* time_stamp */ '2018-08-16T11:55:27', 7 | /* author */ ('Jon'), 8 | /* organization */ ('Unknown'), 9 | /* preprocessor_version */ 'GeometryGymIFC v0.0.16.0 by Geometry Gym Pty Ltd built 2018-08-16T00:55:48', 10 | /* originating_system */ 'TestModelViewDefinition v1.0.0.0', 11 | /* authorization */ 'None'); 12 | 13 | FILE_SCHEMA (('IFC4')); 14 | ENDSEC; 15 | 16 | DATA; 17 | #1= IFCCARTESIANPOINT((0.0,0.0,0.0)); 18 | #2= IFCDIRECTION((1.0,0.0,0.0)); 19 | #3= IFCDIRECTION((0.0,1.0,0.0)); 20 | #4= IFCDIRECTION((0.0,0.0,1.0)); 21 | #5= IFCAXIS2PLACEMENT3D(#1,$,$); 22 | #6= IFCCARTESIANPOINT((0.0,0.0)); 23 | #7= IFCAXIS2PLACEMENT2D(#6,$); 24 | #8= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); 25 | #9= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); 26 | #10= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); 27 | #11= IFCCARTESIANPOINT((0.0,0.0,0.0)); 28 | #12= IFCAXIS2PLACEMENT3D(#11,#4,#2); 29 | #13= IFCLOCALPLACEMENT($,#12); 30 | #14= IFCSITE('0jCHCQNVjBIw359S7Oos4W',#20,'TestSite',$,$,#13,$,$,$,$,$,$,$,$); 31 | #15= IFCPERSON('Jon','Jon',$,$,$,$,$,$); 32 | #16= IFCORGANIZATION($,'Unknown',$,$,$); 33 | #17= IFCPERSONANDORGANIZATION(#15,#16,$); 34 | #18= IFCAPPLICATION(#19,'0.0.16.0','TestModelViewDefinition v1.0.0.0','TestModelViewDefinition v1.0.0.0'); 35 | #19= IFCORGANIZATION($,'Geometry Gym Pty Ltd',$,$,$); 36 | #20= IFCOWNERHISTORY(#17,#18,$,.ADDED.,$,$,$,1534384527); 37 | #23= IFCPROJECT('0$74sRbOLC8BRBDAmH9z2S',#20,'TestProject',$,$,$,$,(#58),#24); 38 | #24= IFCUNITASSIGNMENT((#25,#9,#10,#26,#27)); 39 | #25= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.); 40 | #26= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); 41 | #27= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.); 42 | #28= IFCRELAGGREGATES('2VJZhyB656AeN0sJ3IvZqg',#20,$,$,#23,(#14)); 43 | #29= IFCCARTESIANPOINT((0.0,0.0,0.0)); 44 | #30= IFCAXIS2PLACEMENT3D(#29,$,$); 45 | #31= IFCLOCALPLACEMENT(#13,#30); 46 | #32= IFCBUILDING('1_rZgBMoPD1u5RfpQ_Xahl',#20,'TestBuilding',$,$,#31,$,$,$,$,$,#36); 47 | #35= IFCRELAGGREGATES('2fS4qhuuDDYOZPL3HcsCmh',#20,$,$,#14,(#32)); 48 | #36= IFCPOSTALADDRESS($,$,$,$,('Unknown'),$,'Unknown',$,'Unknown','Unknown'); 49 | #37= IFCCARTESIANPOINT((0.0,0.0,200.0)); 50 | #38= IFCAXIS2PLACEMENT3D(#37,$,$); 51 | #39= IFCLOCALPLACEMENT(#31,#38); 52 | #40= IFCBUILDINGSTOREY('1YWlMOhOj0Fg9lHUNJIz8i',#20,'TestBuildingStorey',$,$,#39,$,$,$,200.0); 53 | #41= IFCRELCONTAINEDINSPATIALSTRUCTURE('2uSkiuTin1Vfc_xPvYyW53',#20,'BuildingStorey','BuildingStorey Container for Elements',(#81,#91,#99,#108,#117,#125),#40); 54 | #43= IFCRELAGGREGATES('0RLGKkZ$92oeb$uXUJjOAC',#20,$,$,#32,(#40)); 55 | #44= IFCSPACE('2mxnlS2Rv3$xgCn4ySiDZA',#20,'TestSpace',$,$,$,$,$,$,$,$); 56 | #45= IFCRELAGGREGATES('3chLSBd8j9ZRZAYbR_9nFc',#20,$,$,#40,(#44)); 57 | #46= IFCSPACETYPE('0T56PjiDz2ivr10E5DcWFk',#20,'TestSpaceType',$,$,$,$,$,$,.INTERNAL.); 58 | #47= IFCRELDEFINESBYTYPE('1wR$GwMjDDpBjshZD8LzD4',#20,'NameNotAssigned',$,(#44),#46); 59 | #48= IFCZONE('0IS9hP6VLBNOWKTUNS3TsV',#20,'TestZone',$,$,'TestZoneLongName'); 60 | #49= IFCRELASSIGNSTOGROUP('1mCt8LWN90jOAlKM0Wb$h9',#20,$,$,(#44),$,#48); 61 | #50= IFCRELSERVICESBUILDINGS('0ZGZaoIYv3OB$Xo14TW446',#20,'TestZone',$,#48,(#40)); 62 | #51= IFCMATERIAL('TestMaterial','TestDescription','TestCategory'); 63 | #52= IFCMATERIALPROPERTIES('TestMaterialProperties',$,(#53),#51); 64 | #53= IFCPROPERTYSINGLEVALUE('MassDensity',$,IFCMASSDENSITYMEASURE(1.0),$); 65 | #54= IFCCOLOURRGB('Red',1.0,0.0,0.0); 66 | #55= IFCSURFACESTYLESHADING(#54); 67 | #56= IFCSURFACESTYLE($,.BOTH.,(#55)); 68 | #57= IFCSTYLEDITEM($,(#56),'TestStyledItem'); 69 | #58= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.0001,#60,#61); 70 | #59= IFCCARTESIANPOINT((0.0,0.0,0.0)); 71 | #60= IFCAXIS2PLACEMENT3D(#59,$,$); 72 | #61= IFCDIRECTION((0.0,1.0)); 73 | #62= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#58,$,.MODEL_VIEW.,$); 74 | #63= IFCSTYLEDREPRESENTATION(#62,'Body',$,(#57)); 75 | #64= IFCMATERIALDEFINITIONREPRESENTATION($,$,(#63),#51); 76 | #65= IFCCARTESIANPOINTLIST2D(((2.8,-79.5),(2.8,79.5),(6.31472,87.98528),(14.8,91.5),(50.0,91.5),(50.0,100.0),(-50.0,100.0),(-50.0,91.5),(-14.8,91.5),(-6.31472,87.98528),(-2.8,79.5),(-2.8,-79.5),(-6.31472,-87.98528),(-14.8,-91.5),(-50.0,-91.5),(-50.0,-100.0),(50.0,-100.0),(50.0,-91.5),(14.8,-91.5),(6.31472,-87.98528))); 77 | #66= IFCINDEXEDPOLYCURVE(#65,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCLINEINDEX((4,5)),IFCLINEINDEX((5,6)),IFCLINEINDEX((6,7)),IFCLINEINDEX((7,8)),IFCLINEINDEX((8,9)),IFCARCINDEX((9,10,11)),IFCLINEINDEX((11,12)),IFCARCINDEX((12,13,14)),IFCLINEINDEX((14,15)),IFCLINEINDEX((15,16)),IFCLINEINDEX((16,17)),IFCLINEINDEX((17,18)),IFCLINEINDEX((18,19)),IFCARCINDEX((19,20,1))),$); 78 | #67= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,'IPE200',#66); 79 | #68= IFCMATERIALPROFILE('TestMaterialProfile',$,#51,#67,$,$); 80 | #69= IFCMATERIALPROFILESET('TestMaterialProfileSet',$,(#68),$); 81 | #70= IFCBEAMTYPE('2$MBz33X59ux2PrphfZ4z_',#20,'TestBeamType',$,$,$,$,$,$,.BEAM.); 82 | #71= IFCRELDEFINESBYTYPE('2p6mnV4Tv8HweW4w0HRkRA',#20,'NameNotAssigned',$,(#81),#70); 83 | #72= IFCRELASSOCIATESMATERIAL('3hoolxqW58$foXqGHIUGY2',#20,$,$,(#70),#69); 84 | #73= IFCCARTESIANPOINT((2000.0,0.0,0.0)); 85 | #74= IFCDIRECTION((0.0,-1.0,0.0)); 86 | #75= IFCAXIS2PLACEMENT3D(#1,#2,#74); 87 | #76= IFCEXTRUDEDAREASOLID(#67,#75,#4,5000.0); 88 | #77= IFCSHAPEREPRESENTATION(#62,'Body','SweptSolid',(#76)); 89 | #78= IFCPRODUCTDEFINITIONSHAPE($,$,(#77)); 90 | #79= IFCAXIS2PLACEMENT3D(#73,#4,#3); 91 | #80= IFCLOCALPLACEMENT(#39,#79); 92 | #81= IFCBEAM('16KYUrH45BNwdHw8Y$ia8f',#20,$,$,$,#80,#78,$,$); 93 | #82= IFCISHAPEPROFILEDEF(.AREA.,'IShapeProfileDef',$,500.0,300.0,15.0,20.0,10.0,$,$); 94 | #83= IFCCOLUMNTYPE('0oqyte9dDBf8VqqiCyu4g_',#20,'TestColumnType',$,$,$,$,$,$,.COLUMN.); 95 | #84= IFCRELDEFINESBYTYPE('2_2DRR2JX9hQGkY0qEUe6E',#20,'NameNotAssigned',$,(#91),#83); 96 | #85= IFCCARTESIANPOINT((-2000.0,1000.0,0.0)); 97 | #86= IFCEXTRUDEDAREASOLID(#82,$,#4,5000.0); 98 | #87= IFCSHAPEREPRESENTATION(#62,'Body','SweptSolid',(#86)); 99 | #88= IFCPRODUCTDEFINITIONSHAPE($,$,(#87)); 100 | #89= IFCAXIS2PLACEMENT3D(#85,#4,#3); 101 | #90= IFCLOCALPLACEMENT(#39,#89); 102 | #91= IFCCOLUMN('2jS8dBukzApveBm5m9QrBf',#20,$,$,$,#90,#88,$,$); 103 | #92= IFCCIRCLEPROFILEDEF(.AREA.,'TestCircleProfile',$,350.0); 104 | #93= IFCCARTESIANPOINT((-2000.0,2000.0,0.0)); 105 | #94= IFCEXTRUDEDAREASOLID(#92,$,#4,5000.0); 106 | #95= IFCSHAPEREPRESENTATION(#62,'Body','SweptSolid',(#94)); 107 | #96= IFCPRODUCTDEFINITIONSHAPE($,$,(#95)); 108 | #97= IFCAXIS2PLACEMENT3D(#93,#4,#3); 109 | #98= IFCLOCALPLACEMENT(#39,#97); 110 | #99= IFCCOLUMN('16hOQUg413s9NMhAx6bKtH',#20,$,$,$,#98,#96,$,$); 111 | #100= IFCRECTANGLEPROFILEDEF(.AREA.,'TestRectangle',$,400.0,600.0); 112 | #101= IFCCARTESIANPOINT((3000.0,0.0,0.0)); 113 | #102= IFCAXIS2PLACEMENT3D(#1,#2,#74); 114 | #103= IFCEXTRUDEDAREASOLID(#100,#102,#4,5000.0); 115 | #104= IFCSHAPEREPRESENTATION(#62,'Body','SweptSolid',(#103)); 116 | #105= IFCPRODUCTDEFINITIONSHAPE($,$,(#104)); 117 | #106= IFCAXIS2PLACEMENT3D(#101,#4,#3); 118 | #107= IFCLOCALPLACEMENT(#39,#106); 119 | #108= IFCBEAM('10yuM0ncrBiA0bSYvyBRX6',#20,$,$,$,#107,#105,$,$); 120 | #109= IFCRECTANGLEHOLLOWPROFILEDEF(.AREA.,'TestRectangleHollow',$,400.0,600.0,12.0,$,$); 121 | #110= IFCCARTESIANPOINT((4000.0,0.0,0.0)); 122 | #111= IFCAXIS2PLACEMENT3D(#1,#2,#74); 123 | #112= IFCEXTRUDEDAREASOLID(#109,#111,#4,5000.0); 124 | #113= IFCSHAPEREPRESENTATION(#62,'Body','SweptSolid',(#112)); 125 | #114= IFCPRODUCTDEFINITIONSHAPE($,$,(#113)); 126 | #115= IFCAXIS2PLACEMENT3D(#110,#4,#3); 127 | #116= IFCLOCALPLACEMENT(#39,#115); 128 | #117= IFCBEAM('366TmI9vb7jx2d3bknDTYh',#20,$,$,$,#116,#114,$,$); 129 | #118= IFCCIRCLEHOLLOWPROFILEDEF(.AREA.,'TestCircleHollowProfile',$,75.0,9.0); 130 | #119= IFCCARTESIANPOINT((-1000.0,-1000.0,0.0)); 131 | #120= IFCEXTRUDEDAREASOLID(#118,$,#4,2000.0); 132 | #121= IFCSHAPEREPRESENTATION(#62,'Body','SweptSolid',(#120)); 133 | #122= IFCPRODUCTDEFINITIONSHAPE($,$,(#121)); 134 | #123= IFCAXIS2PLACEMENT3D(#119,#4,#74); 135 | #124= IFCLOCALPLACEMENT(#39,#123); 136 | #125= IFCMEMBER('1EZBbol4z1TRSY69omFklE',#20,$,$,$,#124,#122,$,$); 137 | ENDSEC; 138 | 139 | END-ISO-10303-21; 140 | 141 | -------------------------------------------------------------------------------- /TestModelViewDefinition/examples/Ifc4Reference.ifc: -------------------------------------------------------------------------------- 1 | ISO-10303-21; 2 | HEADER; 3 | FILE_DESCRIPTION(('ViewDefinition [ReferenceView_V1]'),'2;1'); 4 | FILE_NAME( 5 | /* name */ 'C:\\My Work\\Geometry Gym\\source code\\Open Source\\GeometryGymIfcExamples\\TestModelViewDefinition\\examples\\Ifc4Reference.ifc', 6 | /* time_stamp */ '2018-08-16T11:55:27', 7 | /* author */ ('Jon'), 8 | /* organization */ ('Unknown'), 9 | /* preprocessor_version */ 'GeometryGymIFC v0.0.16.0 by Geometry Gym Pty Ltd built 2018-08-16T00:55:48', 10 | /* originating_system */ 'TestModelViewDefinition v1.0.0.0', 11 | /* authorization */ 'None'); 12 | 13 | FILE_SCHEMA (('IFC4')); 14 | ENDSEC; 15 | 16 | DATA; 17 | #1= IFCCARTESIANPOINT((0.0,0.0,0.0)); 18 | #2= IFCDIRECTION((1.0,0.0,0.0)); 19 | #3= IFCDIRECTION((0.0,1.0,0.0)); 20 | #4= IFCDIRECTION((0.0,0.0,1.0)); 21 | #5= IFCAXIS2PLACEMENT3D(#1,$,$); 22 | #6= IFCCARTESIANPOINT((0.0,0.0)); 23 | #7= IFCAXIS2PLACEMENT2D(#6,$); 24 | #8= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); 25 | #9= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); 26 | #10= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); 27 | #11= IFCCARTESIANPOINT((0.0,0.0,0.0)); 28 | #12= IFCAXIS2PLACEMENT3D(#11,#4,#2); 29 | #13= IFCLOCALPLACEMENT($,#12); 30 | #14= IFCSITE('1Gv7JuPx195QS3zPsC1zGV',$,'TestSite',$,$,#13,$,$,$,$,$,$,$,$); 31 | #17= IFCPROJECT('2YnnwkArP3mgPj9seRks08',$,'TestProject',$,$,$,$,(#52),#18); 32 | #18= IFCUNITASSIGNMENT((#19,#9,#10,#20,#21)); 33 | #19= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.); 34 | #20= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); 35 | #21= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.); 36 | #22= IFCRELAGGREGATES('2xnNKecQ17KurUgAnyKjRB',$,$,$,#17,(#14)); 37 | #23= IFCCARTESIANPOINT((0.0,0.0,0.0)); 38 | #24= IFCAXIS2PLACEMENT3D(#23,$,$); 39 | #25= IFCLOCALPLACEMENT(#13,#24); 40 | #26= IFCBUILDING('2IwmOMvO50zeNdiSiMDWRi',$,'TestBuilding',$,$,#25,$,$,$,$,$,#30); 41 | #29= IFCRELAGGREGATES('38E594k1TE28IeYzJaz$BR',$,$,$,#14,(#26)); 42 | #30= IFCPOSTALADDRESS($,$,$,$,('Unknown'),$,'Unknown',$,'Unknown','Unknown'); 43 | #31= IFCCARTESIANPOINT((0.0,0.0,200.0)); 44 | #32= IFCAXIS2PLACEMENT3D(#31,$,$); 45 | #33= IFCLOCALPLACEMENT(#25,#32); 46 | #34= IFCBUILDINGSTOREY('3YJBTJGqz5BPFy$J$oIl$A',$,'TestBuildingStorey',$,$,#33,$,$,$,200.0); 47 | #35= IFCRELCONTAINEDINSPATIALSTRUCTURE('0bSAxV389AlR2oSLNZIu43',$,'BuildingStorey','BuildingStorey Container for Elements',(#75,#84,#91),#34); 48 | #37= IFCRELAGGREGATES('3AUFJJOMn4zPk8cktYOP4F',$,$,$,#26,(#34)); 49 | #38= IFCSPACE('1lMvk5SvH8Xwz9zaQ_S2td',$,'TestSpace',$,$,$,$,$,$,$,$); 50 | #39= IFCRELAGGREGATES('2k409E5iH4kfBTnZptP9dq',$,$,$,#34,(#38)); 51 | #40= IFCSPACETYPE('3LzpNLlhD2BfSSLK3Gk9Fw',$,'TestSpaceType',$,$,$,$,$,$,.INTERNAL.); 52 | #41= IFCRELDEFINESBYTYPE('1ylFJUYdPEEv9JLd5S2FXs',$,'NameNotAssigned',$,(#38),#40); 53 | #42= IFCZONE('3jzR$cjyn1JAPeumvRmDlQ',$,'TestZone',$,$,'TestZoneLongName'); 54 | #43= IFCRELASSIGNSTOGROUP('3jYNzdaq9Frf8oMrsYyGda',$,$,$,(#38),$,#42); 55 | #44= IFCRELSERVICESBUILDINGS('1mHbosRT5D5uIQWlm8G6Hk',$,'TestZone',$,#42,(#34)); 56 | #45= IFCMATERIAL('TestMaterial','TestDescription','TestCategory'); 57 | #46= IFCMATERIALPROPERTIES('TestMaterialProperties',$,(#47),#45); 58 | #47= IFCPROPERTYSINGLEVALUE('MassDensity',$,IFCMASSDENSITYMEASURE(1.0),$); 59 | #48= IFCCOLOURRGB('Red',1.0,0.0,0.0); 60 | #49= IFCSURFACESTYLESHADING(#48); 61 | #50= IFCSURFACESTYLE($,.BOTH.,(#49)); 62 | #51= IFCSTYLEDITEM($,(#50),'TestStyledItem'); 63 | #52= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.0001,#54,#55); 64 | #53= IFCCARTESIANPOINT((0.0,0.0,0.0)); 65 | #54= IFCAXIS2PLACEMENT3D(#53,$,$); 66 | #55= IFCDIRECTION((0.0,1.0)); 67 | #56= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#52,$,.MODEL_VIEW.,$); 68 | #57= IFCSTYLEDREPRESENTATION(#56,'Body',$,(#51)); 69 | #58= IFCMATERIALDEFINITIONREPRESENTATION($,$,(#57),#45); 70 | #59= IFCCARTESIANPOINTLIST2D(((2.8,-79.5),(2.8,79.5),(6.31472,87.98528),(14.8,91.5),(50.0,91.5),(50.0,100.0),(-50.0,100.0),(-50.0,91.5),(-14.8,91.5),(-6.31472,87.98528),(-2.8,79.5),(-2.8,-79.5),(-6.31472,-87.98528),(-14.8,-91.5),(-50.0,-91.5),(-50.0,-100.0),(50.0,-100.0),(50.0,-91.5),(14.8,-91.5),(6.31472,-87.98528))); 71 | #60= IFCINDEXEDPOLYCURVE(#59,(IFCLINEINDEX((1,2)),IFCARCINDEX((2,3,4)),IFCLINEINDEX((4,5)),IFCLINEINDEX((5,6)),IFCLINEINDEX((6,7)),IFCLINEINDEX((7,8)),IFCLINEINDEX((8,9)),IFCARCINDEX((9,10,11)),IFCLINEINDEX((11,12)),IFCARCINDEX((12,13,14)),IFCLINEINDEX((14,15)),IFCLINEINDEX((15,16)),IFCLINEINDEX((16,17)),IFCLINEINDEX((17,18)),IFCLINEINDEX((18,19)),IFCARCINDEX((19,20,1))),$); 72 | #61= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,'IPE200',#60); 73 | #62= IFCMATERIALPROFILE('TestMaterialProfile',$,#45,#61,$,$); 74 | #63= IFCMATERIALPROFILESET('TestMaterialProfileSet',$,(#62),$); 75 | #64= IFCBEAMTYPE('1JiYKxTDb61hUF8L9IcDfP',$,'TestBeamType',$,$,$,$,$,$,.BEAM.); 76 | #65= IFCRELDEFINESBYTYPE('1Hw61pUqrEGxqhBqS3Q8Vv',$,'NameNotAssigned',$,(#75),#64); 77 | #66= IFCRELASSOCIATESMATERIAL('0MzV5xJBrDxhnNTo35Ffh8',$,$,$,(#64),#63); 78 | #67= IFCCARTESIANPOINT((2000.0,0.0,0.0)); 79 | #68= IFCDIRECTION((0.0,-1.0,0.0)); 80 | #69= IFCAXIS2PLACEMENT3D(#1,#2,#68); 81 | #70= IFCEXTRUDEDAREASOLID(#61,#69,#4,5000.0); 82 | #71= IFCSHAPEREPRESENTATION(#56,'Body','SweptSolid',(#70)); 83 | #72= IFCPRODUCTDEFINITIONSHAPE($,$,(#71)); 84 | #73= IFCAXIS2PLACEMENT3D(#67,#4,#3); 85 | #74= IFCLOCALPLACEMENT(#33,#73); 86 | #75= IFCBEAM('16KYUrH45BNwdHw8Y$ia8f',$,$,$,$,#74,#72,$,$); 87 | #76= IFCCOLUMNTYPE('0pbqGtgLzBOR1gpSP41FJq',$,'TestColumnType',$,$,$,$,$,$,.COLUMN.); 88 | #77= IFCRELDEFINESBYTYPE('0vssDbHQTFQvkGIM7yKKfq',$,'NameNotAssigned',$,(#84),#76); 89 | #78= IFCCARTESIANPOINT((-2000.0,1000.0,0.0)); 90 | #79= IFCEXTRUDEDAREASOLID(#61,$,#4,5000.0); 91 | #80= IFCSHAPEREPRESENTATION(#56,'Body','SweptSolid',(#79)); 92 | #81= IFCPRODUCTDEFINITIONSHAPE($,$,(#80)); 93 | #82= IFCAXIS2PLACEMENT3D(#78,#4,#3); 94 | #83= IFCLOCALPLACEMENT(#33,#82); 95 | #84= IFCCOLUMN('2jS8dBukzApveBm5m9QrBf',$,$,$,$,#83,#81,$,$); 96 | #85= IFCCARTESIANPOINT((-1000.0,-1000.0,0.0)); 97 | #86= IFCEXTRUDEDAREASOLID(#61,$,#4,2000.0); 98 | #87= IFCSHAPEREPRESENTATION(#56,'Body','SweptSolid',(#86)); 99 | #88= IFCPRODUCTDEFINITIONSHAPE($,$,(#87)); 100 | #89= IFCAXIS2PLACEMENT3D(#85,#4,#68); 101 | #90= IFCLOCALPLACEMENT(#33,#89); 102 | #91= IFCMEMBER('1KUmS_gd508wWddM4SaQ$l',$,$,$,$,#90,#88,$,$); 103 | ENDSEC; 104 | 105 | END-ISO-10303-21; 106 | 107 | -------------------------------------------------------------------------------- /TestModelViewDefinition/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /consoleCountStories/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /consoleCountStories/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using GeometryGym.Ifc; 7 | 8 | namespace testConsole 9 | { 10 | class Program 11 | { 12 | static void Main(string[] args) 13 | { 14 | DatabaseIfc db = new DatabaseIfc(Console.In); 15 | IfcProject project = db.Project; 16 | int storeyCount = project.Extract().Count; 17 | Console.Out.Write("Number of Stories in file :" + storeyCount); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /consoleCountStories/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("testConsole")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Geometry Gym Pty Ltd")] 12 | [assembly: AssemblyProduct("testConsole")] 13 | [assembly: AssemblyCopyright("Copyright © Geometry Gym Pty Ltd 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("9ea65a61-1ea1-4eff-b191-2fd68f170e97")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /consoleCountStories/consoleCountStories.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {84E0D08C-7B02-46AE-AF40-0DD949B2B4A1} 8 | Exe 9 | Properties 10 | testConsole 11 | consoleCountStories 12 | v4.8 13 | 512 14 | 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | ..\packages\GeometryGymIFC_Core.0.1.25\lib\netstandard2.0\GeometryGymIFCcore.dll 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 66 | -------------------------------------------------------------------------------- /consoleCountStories/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /consoleGetBreps/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /consoleGetBreps/ConsoleGetBreps.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {1A31C2C3-3C06-474B-AC42-1F8337D6D0D1} 8 | Exe 9 | Properties 10 | testConsole 11 | consoleGetBreps 12 | v4.8 13 | 512 14 | 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | ..\packages\GeometryGymIFC_Core.0.1.25\lib\netstandard2.0\GeometryGymIFCcore.dll 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 66 | -------------------------------------------------------------------------------- /consoleGetBreps/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using GeometryGym.Ifc; 7 | 8 | namespace testConsole 9 | { 10 | class Program 11 | { 12 | static void Main(string[] args) 13 | { 14 | DatabaseIfc db = new DatabaseIfc(Console.In); 15 | IfcProject project = db.Project; 16 | IfcSpatialElement rootElement = project.RootElement(); 17 | List elements = project.Extract(); //IfcBuiltElement renamed from IfcBuildingElement 18 | List breps = new List(); 19 | foreach(IfcBuiltElement element in elements) 20 | { 21 | IfcProductDefinitionShape representation = element.Representation; 22 | if (representation != null) 23 | { 24 | foreach (IfcShapeModel rep in representation.Representations) 25 | { 26 | IfcShapeRepresentation sr = rep as IfcShapeRepresentation; 27 | if (sr != null) 28 | { 29 | foreach (IfcRepresentationItem item in sr.Items) 30 | { 31 | IfcFacetedBrep fb = item as IfcFacetedBrep; 32 | if (fb != null) 33 | breps.Add(fb); 34 | } 35 | } 36 | } 37 | } 38 | } 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /consoleGetBreps/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("testConsole")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Geometry Gym Pty Ltd")] 12 | [assembly: AssemblyProduct("testConsole")] 13 | [assembly: AssemblyCopyright("Copyright © Geometry Gym Pty Ltd 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("9ea65a61-1ea1-4eff-b191-2fd68f170e97")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /consoleGetBreps/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /consoleSummarizeElements/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /consoleSummarizeElements/ConsoleSummarizeElements.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {EAA610E9-10AD-471D-8A33-D0F32ED80698} 8 | Exe 9 | Properties 10 | GGYM 11 | consoleSummarizeElements 12 | v4.8 13 | 512 14 | 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | ..\packages\GeometryGymIFC_Core.0.1.25\lib\netstandard2.0\GeometryGymIFCcore.dll 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 66 | -------------------------------------------------------------------------------- /consoleSummarizeElements/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Reflection; 7 | using System.IO; 8 | using GeometryGym.Ifc; 9 | 10 | namespace testConsole 11 | { 12 | class Program 13 | { 14 | internal class MyElement 15 | { 16 | internal string mMark = "", mDescription = "", mSection = "", mGrade = ""; 17 | internal double mLength = 0; 18 | internal int mQuantity = 1; 19 | internal MyElement(string mark, string description, string section, string grade, double length) 20 | { 21 | mMark = mark; 22 | mDescription = description; 23 | mSection = section; 24 | mGrade = grade; 25 | mLength = length; 26 | } 27 | } 28 | static void Main(string[] args) //Example as requested at http://forums.autodesk.com/t5/revit-api/opensource-api-for-reading-ifc-files/m-p/6435644#M17340 29 | { 30 | DirectoryInfo di = Directory.GetParent(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)); 31 | di = Directory.GetParent(di.FullName); 32 | 33 | string filename = Path.Combine(di.FullName, "IFC Model.ifc"); 34 | DatabaseIfc db = new DatabaseIfc(filename); 35 | IfcProject project = db.Project; 36 | List elements = project.Extract(); //IfcBuiltElement renamed from IfcBuildingElement 37 | Dictionary dictionary = new Dictionary(); 38 | foreach(IfcBuiltElement element in elements) 39 | { 40 | 41 | string desc = (element as IfcColumn != null ? "COL" : (element as IfcBeam != null ? "BEAM" : "")); 42 | 43 | string mark = element.Tag; 44 | if (!string.IsNullOrEmpty(desc)) 45 | { 46 | if (dictionary.ContainsKey(mark)) 47 | dictionary[mark].mQuantity++; 48 | else 49 | { 50 | string grade = ""; 51 | double length = 0; 52 | foreach (IfcRelDefinesByProperties rdp in element.IsDefinedBy) 53 | { 54 | foreach (IfcPropertySet pset in rdp.RelatingPropertyDefinition.OfType()) 55 | { 56 | foreach (System.Collections.Generic.KeyValuePair pair in pset.HasProperties) 57 | { 58 | IfcPropertySingleValue psv = pair.Value as IfcPropertySingleValue; 59 | if (psv == null) 60 | continue; 61 | if (string.Compare("Grade", psv.Name) == 0) 62 | { 63 | grade = psv.NominalValue.Value.ToString(); 64 | } 65 | else if (string.Compare("Length", psv.Name) == 0) 66 | { 67 | IfcLengthMeasure lengthmeasure = psv.NominalValue as IfcLengthMeasure; 68 | if (lengthmeasure != null) 69 | length = lengthmeasure.Measure; 70 | } 71 | } 72 | 73 | } 74 | } 75 | dictionary.Add(mark, new MyElement(mark, desc, element.ObjectType, grade, length)); 76 | } 77 | } 78 | } 79 | Console.WriteLine("Mark\tDescription\tSection\tGrade\tLength\tQty"); 80 | 81 | foreach(MyElement element in dictionary.ToList().ConvertAll(x=>x.Value).OrderBy(x => x.mMark)) 82 | Console.WriteLine(element.mMark + "\t" + element.mDescription + "\t" + element.mSection + "\t" + element.mGrade + "\t" + element.mLength + "\t" + element.mQuantity); 83 | } 84 | 85 | static IfcMaterial extractMaterial(IfcMaterialSelect materialSelect) //To be enabled in opensource Library 86 | { 87 | IfcMaterial material = materialSelect as IfcMaterial; 88 | if (material != null) 89 | return material; 90 | IfcMaterialProfile profile = materialSelect as IfcMaterialProfile; 91 | if (profile != null) 92 | return profile.Material; 93 | IfcMaterialProfileSet profileSet = materialSelect as IfcMaterialProfileSet; 94 | if (profileSet == null) 95 | { 96 | IfcMaterialProfileSetUsage profileUsage = materialSelect as IfcMaterialProfileSetUsage; 97 | if (profileUsage != null) 98 | profileSet = profileUsage.ForProfileSet; 99 | } 100 | if (profileSet != null) 101 | return profileSet.PrimaryMaterial(); 102 | IfcMaterialLayer layer = materialSelect as IfcMaterialLayer; 103 | if (layer != null) 104 | return layer.Material; 105 | IfcMaterialLayerSet layerSet = materialSelect as IfcMaterialLayerSet; 106 | if (layerSet != null) 107 | return layerSet.PrimaryMaterial(); 108 | IfcMaterialLayerSetUsage layerSetUsage = materialSelect as IfcMaterialLayerSetUsage; 109 | if (layerSetUsage != null) 110 | return layerSetUsage.PrimaryMaterial(); 111 | IfcMaterialList list = materialSelect as IfcMaterialList; 112 | if (list != null) 113 | return list.PrimaryMaterial(); 114 | IfcMaterialConstituent constituent = materialSelect as IfcMaterialConstituent; 115 | if (constituent != null) 116 | return constituent.PrimaryMaterial(); 117 | IfcMaterialConstituentSet constituentSet = materialSelect as IfcMaterialConstituentSet; 118 | if (constituentSet != null) 119 | return constituentSet.PrimaryMaterial(); 120 | return null; 121 | } 122 | 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /consoleSummarizeElements/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("testConsole")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Geometry Gym Pty Ltd")] 12 | [assembly: AssemblyProduct("testConsole")] 13 | [assembly: AssemblyCopyright("Copyright © Geometry Gym Pty Ltd 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("9ea65a61-1ea1-4eff-b191-2fd68f170e97")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /consoleSummarizeElements/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /consoleSummarizeElements/summary.txt: -------------------------------------------------------------------------------- 1 | Mark Description Section Grade Length Qty 2 | 1001 COL UC254*254*73 S275J0 5000 3 3 | 1002 COL UC356*368*153 S275J0 5000 3 4 | 1003 COL UC305*305*97 S275J0 5000 3 5 | 1004 BEAM UB356*171*51 S275J0 6000 2 6 | 1005 BEAM UB610*229*101 S275J0 7200 2 7 | 1006 BEAM UB178*102*19 S275J0 7200 2 8 | 1007 BEAM UB406*140*46 S275J0 6000 4 9 | 1008 BEAM UB406*140*46 S275J0 7200 2 10 | --------------------------------------------------------------------------------