{"id":49739916,"url":"https://github.com/xBimTeam/XbimEssentials","last_synced_at":"2026-05-26T07:00:50.064Z","repository":{"id":24370450,"uuid":"27769728","full_name":"xBimTeam/XbimEssentials","owner":"xBimTeam","description":"A .NET library to work with data in the IFC format. This is the core component of the Xbim Toolkit","archived":false,"fork":false,"pushed_at":"2026-04-08T15:19:16.000Z","size":41978,"stargazers_count":563,"open_issues_count":124,"forks_count":182,"subscribers_count":47,"default_branch":"master","last_synced_at":"2026-05-09T03:51:05.550Z","etag":null,"topics":["bim","cobie","express","ifc","ifc2x3","ifc4","iso16739","openbim","step21"],"latest_commit_sha":null,"homepage":"https://xbimteam.github.io/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xBimTeam.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-12-09T14:14:54.000Z","updated_at":"2026-05-02T07:33:08.000Z","dependencies_parsed_at":"2023-02-18T16:46:08.216Z","dependency_job_id":"549397fa-ed83-4ee1-aea0-1d6d1bf9159e","html_url":"https://github.com/xBimTeam/XbimEssentials","commit_stats":{"total_commits":1331,"total_committers":43,"mean_commits":"30.953488372093023","dds":0.7392937640871525,"last_synced_commit":"5c3f8423cfd6d7471fa6f1b7a688570d91b6aa23"},"previous_names":[],"tags_count":204,"template":false,"template_full_name":null,"purl":"pkg:github/xBimTeam/XbimEssentials","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xBimTeam%2FXbimEssentials","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xBimTeam%2FXbimEssentials/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xBimTeam%2FXbimEssentials/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xBimTeam%2FXbimEssentials/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xBimTeam","download_url":"https://codeload.github.com/xBimTeam/XbimEssentials/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xBimTeam%2FXbimEssentials/sbom","scorecard":{"id":569714,"data":{"date":"2025-07-07","repo":{"name":"github.com/xBimTeam/XbimEssentials","commit":"8ead151e7e9bc4c61ef7d25db71dc96bbe582da7"},"scorecard":{"version":"v5.2.1-18-gbb9c347d","commit":"bb9c347dff6349d986baab6578a46d68a5524c62"},"score":5,"checks":[{"name":"Maintained","score":10,"reason":"23 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#maintained"}},{"name":"Code-Review","score":2,"reason":"Found 4/14 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENCE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#branch-protection"}},{"name":"Binary-Artifacts","score":8,"reason":"binaries present in source code","details":["Warn: binary detected: Xbim.Common/Step21/Parser/Gplex.exe:1","Warn: binary detected: Xbim.Common/Step21/Parser/Gppg.exe:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T15:58:35.936Z","repository_id":24370450,"created_at":"2025-08-20T15:58:35.936Z","updated_at":"2025-08-20T15:58:35.936Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33092435,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bim","cobie","express","ifc","ifc2x3","ifc4","iso16739","openbim","step21"],"created_at":"2026-05-09T17:00:37.028Z","updated_at":"2026-05-26T07:00:50.037Z","avatar_url":"https://github.com/xBimTeam.png","language":"C#","funding_links":[],"categories":["Libraries and SDKs"],"sub_categories":[],"readme":"\r\nBranch | Build Status  | MyGet | NuGet\r\n------ | ------- | --- | --- |\r\nMaster | [![Build Status](https://dev.azure.com/xBIMTeam/xBIMToolkit/_apis/build/status/xBimTeam.XbimEssentials?branchName=master)](https://dev.azure.com/xBIMTeam/xBIMToolkit/_build/latest?definitionId=1\u0026branchName=master) | [![master](https://img.shields.io/myget/xbim-master/v/Xbim.Essentials.svg)](https://www.myget.org/feed/xbim-master/package/nuget/Xbim.Essentials) | [![](https://img.shields.io/nuget/v/Xbim.Essentials.svg)](https://www.nuget.org/packages/Xbim.Essentials/)\r\nDevelop | [![Build Status](https://dev.azure.com/xBIMTeam/xBIMToolkit/_apis/build/status/xBimTeam.XbimEssentials?branchName=develop)](https://dev.azure.com/xBIMTeam/xBIMToolkit/_build/latest?definitionId=1\u0026branchName=develop) | ![](https://img.shields.io/myget/xbim-develop/vpre/Xbim.Essentials.svg) | -\r\n\r\n\r\n\r\n|Toolkit Component| Latest Myget (develop) | Latest Myget (master) | Latest Nuget |\r\n| ----| ---- | ----| ---- |\r\n|Essentials| ![develop](https://img.shields.io/myget/xbim-develop/vpre/Xbim.Essentials.svg) | ![master](https://img.shields.io/myget/xbim-master/v/Xbim.Essentials.svg) | [![Nuget](https://img.shields.io/nuget/v/Xbim.Essentials.svg)](https://www.nuget.org/packages/Xbim.Essentials/)\r\n|Geometry| ![develop](https://img.shields.io/myget/xbim-develop/vpre/Xbim.Geometry.svg) | ![master](https://img.shields.io/myget/xbim-master/v/Xbim.Geometry.svg) | [![Nuget](https://img.shields.io/nuget/v/Xbim.Geometry.svg)](https://www.nuget.org/packages/Xbim.Geometry/)\r\n|CobieExpress| ![develop](https://img.shields.io/myget/xbim-develop/vpre/Xbim.CobieExpress.svg) | ![master](https://img.shields.io/myget/xbim-master/v/Xbim.IO.CobieExpress.svg) | [![Nuget](https://img.shields.io/nuget/v/Xbim.IO.CobieExpress.svg)](https://www.nuget.org/packages/Xbim.CobieExpress/)\r\n|Windows UI| ![develop](https://img.shields.io/myget/xbim-develop/vpre/Xbim.WindowsUI.svg) | ![master](https://img.shields.io/myget/xbim-master/v/Xbim.WindowsUI.svg) | [![Nuget](https://img.shields.io/nuget/v/Xbim.WindowsUI.svg)](https://www.nuget.org/packages/Xbim.WindowsUI/)\r\n\r\n# XbimEssentials\r\n**XbimEssentials** is the foundational components of [Xbim](https://xbimteam.github.io/), the e**X**tensible \r\n_[**B**uilding **I**nformation **M**odelling](https://en.wikipedia.org/wiki/Building_information_modeling) toolkit_ for \r\nthe .NET platform. This library enables software developers to easily read, write, validate and interrogate data in \r\nthe buildingSmart [IFC formats](https://en.wikipedia.org/wiki/Industry_Foundation_Classes), using any .NET language. \r\n\r\nAs of version 6.0 XbimEssentials includes support for `.netstandard2.0`, `.netstandard2.1`, `.net6.0` and `net8.0`. \r\nSupporting `netstandard2.0` provides support .NET Framework 4.7.2 upwards. \r\nEarlier .NET Framework versions may work, but we can't provide any support for them.\r\n\r\n## Background / Motivation ##\r\n\r\n**IFC** is an [ISO Standard](https://www.iso.org/standard/51622.html) and platform-neutral open file format for \r\ndata exchange of building information. \r\nThis library supports *STEP*, *IfcXml* and *IfcZip* formats, and enables you to read and write the full schema of\r\n[IFC2x3](http://www.buildingsmart-tech.org/specifications/ifc-releases/ifc2x3-tc1-release/summary) and \r\n[IFC4](http://www.buildingsmart-tech.org/specifications/ifc-releases/ifc4-release) (including support for the latest\r\n[Ifc4 Addendum 2](http://www.buildingsmart-tech.org/specifications/ifc-releases/ifc4-add2)).\r\n\r\nThe wider XBIM toolkit contains additional repositories with libraries to read and write related Open BIM formats including \r\n[COBie](https://github.com/xBimTeam/XbimCobieExpress) and BIM Collaboration Format ([BCF](https://github.com/xBimTeam/XbimBCF))\r\n\r\nxbim Toolkit also supports IFC model verification with IDS using our [IDS Library](https://github.com/xBimTeam/Xbim.IDS.Validator).\r\n\r\nIn order to visualise 3D Geometries you will need to include the [Xbim.Geometry](https://github.com/xBimTeam/XbimGeometry) \r\npackage which provides full support for geometric, topological operations and visualisation.\r\n\r\nThe motivation behind XbimEssentials is to take away much of the complexity and 'heavy lifting' required to read and write \r\nOpenBIM file formats, so you can focus on creating software solutions without needing deep understanding \r\nof STEP/Express parsing, 3D graphics - enabling you to work at a higher level than the buildingSmart [data model](http://www.buildingsmart-tech.org/ifc/IFC4/Add2/html/link/introduction.htm). \r\n\r\n\r\n## Updating from prior versions\r\n\r\nPlease see our [ChangeLog](CHANGELOG.md) for details on what's new and what you need to upgrade. \r\nIn particular, please **note the following section copied here:**\r\n\r\n\u003e **BREAKING CHANGE**: xbim Toolkit V6 implements a new mechanism for registering internal resources and makes use of standard [.net Dependency Injection patterns](https://learn.microsoft.com/en-us/dotnet/core/extensions/dependency-injection) for managing services internally.\r\n\u003e `Xbim.Common` now introduces an internal DI service that you can optionally integrate with your own DI implementation, \r\n\u003e for providing Logging services, and configuring xbim service behaviour such as the model provider to use. E.g. Invoking:\r\n\u003e \r\n\u003e `XbimServices.Current.ConfigureServices(s =\u003e s.AddXbimToolkit(opt =\u003e opt.UseMemoryModel().UseLoggerFactory(yourloggerFactory)));`\r\n\u003e\r\n\u003e registers the Toolkit internal dependencies, configures an In-memory model-provider and adds an existing ILoggerFactory into the service in place of our default one.\r\n\u003e `IfcStore.ModelProviderFactory` has been deprecated as this is provided for by the above mechanism\r\n\u003e The persistent **EsentModel** is now available automatically through IfcStore (on Windows) so there is no need for the `UseHeuristicModelProvider()` 'ceremony' \r\n\u003e to ensure Esent is used although you can specify it explicitly with `XbimServices.Current.ConfigureServices(s =\u003e s.AddXbimToolkit(opt =\u003e opt.UseHeuristicModel())`\r\n\u003e\r\n\u003e Note: The default Logging implementation has been removed from Toolkit to reduce the amount of external dependencies. \r\n\u003e To enable is a simple matter of adding your preferred logging implementation to the Xbim Services. \r\n\u003e See [Example](https://github.com/xBimTeam/XbimEssentials/blob/b3fce6f40a31fb87a75b24888a4e20740a378e31/Tests/DependencyInjectionTests.cs#L96)\r\n\r\n\r\n## Code Examples\r\n\r\nIf you want to jump straight in we have some examples [on our docs site](http://docs.xbim.net/examples/examples-list.html).\r\nBut here's a 60 second tour of reading and writing:\r\n\r\n### 1. Reading data\r\n\r\nGiven an IFC File [SampleHouse.ifc](Tests/TestFiles/SampleHouse4.ifc) exported from a tool such as Revit, \r\nthis is a simple example showing how you'd read and extract data, using LINQ:\r\n\r\n```csharp\r\nconst string fileName = \"SampleHouse.ifc\";\r\nusing (var model = IfcStore.Open(fileName))\r\n{\r\n    // get all doors in the model (using IFC4 interface of IfcDoor - this will work both for IFC2x3 and IFC4)\r\n    var allDoors = model.Instances.OfType\u003cIIfcDoor\u003e();\r\n\r\n    // get only doors with defined IIfcTypeObject\r\n    var typedDoors = model.Instances.Where\u003cIIfcDoor\u003e(d =\u003e d.IsTypedBy.Any());\r\n\r\n    // get one single door by its unique identifier / guid\r\n    var id = \"2AswZfru1AdAiKfEdrNPnu\";\r\n    var theDoor = model.Instances.FirstOrDefault\u003cIIfcDoor\u003e(d =\u003e d.GlobalId == id);\r\n    Console.WriteLine($\"Door ID: {theDoor.GlobalId}, Name: {theDoor.Name}\");\r\n\r\n    // get all basic properties of the door\r\n    var properties = theDoor.IsDefinedBy\r\n        .Where(r =\u003e r.RelatingPropertyDefinition is IIfcPropertySet)\r\n        .SelectMany(r =\u003e ((IIfcPropertySet)r.RelatingPropertyDefinition).HasProperties)\r\n        .OfType\u003cIIfcPropertySingleValue\u003e();\r\n    foreach (var property in properties)\r\n        Console.WriteLine($\"Property: {property.Name}, Value: {property.NominalValue}\");\r\n}\r\n```\r\n\r\n... resulting in output like:\r\n\r\n```\r\nDoor ID: 3cUkl32yn9qRSPvBJVyWYp, Name: Doors_ExtDbl_Flush:1810x2110mm:285860\r\nProperty: IsExternal, Value: true\r\nProperty: Reference, Value: 1810x2110mm\r\nProperty: Level, Value: Level: Ground Floor\r\nProperty: Sill Height, Value: 0\r\nProperty: Area, Value: 4.9462127188431\r\nProperty: Volume, Value: 0.193819981582386\r\nProperty: Mark, Value: 1\r\nProperty: Category, Value: Doors\r\nProperty: Family, Value: Doors_ExtDbl_Flush: 1810x2110mm\r\nProperty: Family and Type, Value: Doors_ExtDbl_Flush: 1810x2110mm\r\nProperty: Head Height, Value: 2110\r\nProperty: Host Id, Value: Basic Wall: Wall-Ext_102Bwk-75Ins-100LBlk-12P\r\nProperty: Type, Value: Doors_ExtDbl_Flush: 1810x2110mm\r\nProperty: Type Id, Value: Doors_ExtDbl_Flush: 1810x2110mm\r\nProperty: Phase Created, Value: New Construction\r\n```\r\n\r\n### 2. Amending data\r\n\r\nIn this simple example we're going to add a 'purchase cost' property to a single Door. \r\nWe could have applied the cost against the Door Type if all instances of it shared the property.\r\n\r\n```csharp\r\nconst string fileName = \"SampleHouse.ifc\";\r\nvar editor = new XbimEditorCredentials\r\n{\r\n    ApplicationDevelopersName = \"EZ Bim Apps Inc\",\r\n    ApplicationFullName = \"My BIM App\",\r\n    ApplicationIdentifier = \"my-bim-app\",\r\n    ApplicationVersion = \"1.0\",\r\n    EditorsFamilyName = \"John\",\r\n    EditorsGivenName = \"Doe\",\r\n    EditorsOrganisationName = \"Acme Consultants Inc\"\r\n};\r\n\r\nusing (var model = IfcStore.Open(fileName, editor, true))\r\n{\r\n    // get an existing door from the model\r\n    var id = \"3cUkl32yn9qRSPvBJVyWYp\";\r\n    var theDoor = model.Instances.FirstOrDefault\u003cIfcDoor\u003e(d =\u003e d.GlobalId == id);\r\n\r\n    // open transaction for changes\r\n    using (var txn = model.BeginTransaction(\"Doors modification\"))\r\n    {\r\n        // create new property set to host properties\r\n        var pSetRel = model.Instances.New\u003cIfcRelDefinesByProperties\u003e(r =\u003e\r\n        {\r\n            r.GlobalId = Guid.NewGuid();\r\n            r.RelatingPropertyDefinition = model.Instances.New\u003cIfcPropertySet\u003e(pSet =\u003e\r\n            {\r\n                pSet.Name = \"Commercial\";\r\n                pSet.HasProperties.Add(model.Instances.New\u003cIfcPropertySingleValue\u003e(p =\u003e\r\n                {\r\n                    p.Name = \"PurchaseCost\";\r\n                    p.NominalValue = new IfcMonetaryMeasure(200.00); // Default Currency set on IfcProject\r\n                }));\r\n            });\r\n        });\r\n\r\n        // change the name of the door\r\n        theDoor.Name += \"_costed\";\r\n        // add properties to the door\r\n        pSetRel.RelatedObjects.Add(theDoor);\r\n\r\n        // commit changes\r\n        txn.Commit();\r\n    }\r\n}\r\n```\r\n\r\n### 3. Generating Geometry\r\n\r\nWe need to generate geometry from the IFC primitives before you can visualise the 3D model. This essentially\r\nproduces a tesselation/mesh that can be fed into a 3D graphics card, typically via some Graphics Library \r\n(OpenGL, DirectX, WebGL etc)\r\n\r\n\u003e **Note:** Generating the 3D Geometry requires the [Xbim.Geometry](https://github.com/xBimTeam/XbimGeometry) package\r\nwhich is currently only supported on a Windows platform. This utililises a native C++ geometry engine to handle \r\nboolean operations / [CSG](https://en.wikipedia.org/wiki/Constructive_solid_geometry)\r\n\r\nSince this process can take some seconds / minutes for larger models, and can consume significant computation resource, \r\nit's common to do the geometry generation once and store in the _xbim_ database format for future use. \r\n\r\nFor web-based visualisation an alternative is to output geometry to the _wexbim_ format, which is optimised for web delivery in a browser\r\nusing [Xbim.WebUI](http://docs.xbim.net/XbimWebUI/)\r\n\r\n```csharp\r\nconst string fileName = @\"SampleHouse4.ifc\";\r\nvar wexBimFilename = Path.ChangeExtension(fileName, \"wexBIM\");\r\nvar xbimDbFilename = Path.ChangeExtension(fileName, \"xBIM\");\r\n\t\r\nusing (var model = IfcStore.Open(fileName))\r\n{\r\n\t// IFC file is already parsed and open. Now build the 3D\r\n\tvar context = new Xbim3DModelContext(model);\r\n\tcontext.CreateContext();\t// Creates the Geometry using native GeometryEngine\r\n\r\n\t// Optional: Export to 'wexbim' format for use in WebUI's xViewer - geometry only\r\n\tusing (var wexBimFile = File.Create(wexBimFilename))\r\n\t{\r\n\t\tusing (var wexBimBinaryWriter = new BinaryWriter(wexBimFile))\r\n\t\t{\r\n\t\t\tmodel.SaveAsWexBim(wexBimBinaryWriter);\r\n\t\t\twexBimBinaryWriter.Close();\r\n\t\t}\r\n\t\twexBimFile.Close();\r\n\t}\r\n\t\t\r\n\t// Save IFC to the internal XBIM format, which includes geometry\r\n\tmodel.SaveAs(xbimDbFilename, StorageType.Xbim);\r\n}\r\n```\r\n\r\n## Screenshots\r\n\r\nThe XBIM Team have developed a couple of demonstrator apps to show how the toolkit can be used to develop your\r\nown applications. Both are open source under our team space on GitHub.\r\n\r\n![Xbim Xplorer WPF App](http://docs.xbim.net/examples/images/XbimXplorer.png \"Xbim Windows Xplorer app\")\r\nThe Windows [Xbim Xplorer](http://docs.xbim.net/downloads/xbimxplorer.html) application is functional demonstrator \r\napplication that shows off most of the functionality in the XBIM toolkit. The app supports visualising and inspecting multiple \r\nmodel files, as well as supporting plugins to export COBie, import/export BCF and more.\r\n\r\n![Xbim WebUI WebGL App](https://docs.xbim.net/img/visualization_pipeline.png \"Xbim WebUI WebGL app\")\r\nThe browser-based [Xbim WeXplorer](http://docs.xbim.net/XbimWebUI/) is a simple demonstrator of visualising models in a browser\r\nand an ability open sementic model data from a JSON structure.\r\n\r\n## Getting Started\r\n\r\nYou will need Visual Studio 2019 or newer to compile the Solution. Visual Studio 2022 is recommended. \r\nThe [free VS 2022 Community Edition](https://visualstudio.microsoft.com/downloads/) should work fine. \r\nOther IDEs such as JetBrains Rider and VS Code should work.\r\n\r\n### Using the library\r\n\r\nTo get started, the simplest approach is to add the `Xbim.Essentials` nuget package to your Visual Studio Project \r\nfrom [Nuget](https://www.nuget.org/packages/Xbim.Essentials/). \r\n\r\nAlternatively you can add the package using Nuget's Package Manager Console and issuing the following command:\r\n\r\n```\r\nPM\u003e Install-Package Xbim.Essentials\r\n```\r\n\r\nNote that `Xbim.Essentials` is now a meta package. For more control it will be possible to add the \r\ndependent packages directly. \r\n\r\n### Installing Development builds\r\n\r\nPre-release builds are hosted in Myget. There are two separate feeds:\r\n\r\n1. develop - for the latest development builds\r\n1. master - staging builds / release candidates that can be promoted to the public Nuget feed.\r\n\r\nTo access the Myget feeds add the following to your solution's [nuget.config](./nuget.config) or the Visual Studio global settings:\r\n\r\n- https://www.myget.org/F/xbim-develop/api/v3/index.json\r\n- https://www.myget.org/F/xbim-master/api/v3/index.json\r\n\r\n### Debugging \u0026 Symbol Support\r\n\r\nAs of April 2026, PDB debugging Symbols are no longer deployed with the Nuget packages. If you wish to debug the released xbim\r\nbinaries please add the following Myget Symbol Server locations to Visual Studio as per [these instructions](https://learn.microsoft.com/en-us/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger?view=visualstudio#configure-location-of-symbol-files-and-loading-options):\r\n\r\n- https://www.myget.org/F/xbim-master/api/v2/symbolpackage/ (For Myget master and Nuget releases)\r\n- https://www.myget.org/F/xbim-develop/api/v2/symbolpackage/ (For Myget develop releases)\r\n\r\n\r\n## Toolkit Overview\r\n\r\n\r\n### How to use it?\r\n\r\nXbimEssentials is a software library to be used for the creation of complex applications, other repositories under the\r\n[XbimTeam](https://github.com/xBimTeam) page include a number of example applications to demonstrate its capabilities.\r\n\r\nIf you wish to move your first steps these are the first resources to lookup:\r\n\r\n* [The example list page](http://docs.xbim.net/examples/examples-list.html) can act as a short tutorial \r\nto familiarise with the library.\r\n\r\n* [Small examples](https://github.com/xBimTeam/XbimSamples) - a list of small console application demonstrating \r\nhow to undertake simple IFC activities with Xbim that compiles and runs in visual studio.\r\n\r\n* [XbimXplorer](http://docs.xbim.net/downloads/xbimxplorer.html) - is a fairly complex WPF sample application \r\nthat can open and render 3D IFC models as well as displaying semantic data, \r\nits source code is available in the [Xbim.WindowsUI repo](https://github.com/xBimTeam/XbimWindowsUI).\r\n\r\n## Licence\r\n\r\nThe XBIM library is made available under [the CDDL Open Source licence](LICENCE.md).\r\n\r\nAll licences should support the commercial usage of the XBIM system within a 'Larger Work', as long as you honour\r\nthe licence agreements.\r\n\r\n## Third Party Licences\r\n\r\nThe core XBIM library makes use of the following 3rd party software packages, under their associated licences:\r\n\r\n* 'Gardens Point Parser Generator' https://github.com/KommuSoft/Gardens-Point-Parser-Generator - New BSD Licence\r\n* 'OpenCASCADE' Geometry Engine : http://www.opencascade.org/ -  GNU Lesser General Public License (LGPL) version 2.1, with additional [exception](https://dev.opencascade.org/doc/overview/html/occt_public_license.html#occt_lgpl_exception)\r\n\r\nAll 3rd party licences are permissive-style licences. We actively avoid Strong Copyleft/GPL style licences to retain\r\ncompatibility with our CDDL licence - meaning you can use the XBIM Toolkit in a closed-source commercial software package. \r\n\r\n## Support \u0026 Help\r\n\r\nWe have some guidance, examples and a FAQ on our [docs site](http://docs.xbim.net/). We're always looking\r\nfor help with areas like documentation - please see our [Docs Repo](https://github.com/xBimTeam/XbimDocs) if you \r\nthink you can help with a PR.\r\n\r\nFor bugs, and improvements, please use the GitHub Issues of the relevant repository. \r\n\r\nIf you have a question, or need some help, you may find the\r\n[Stackoverflow xbim](https://stackoverflow.com/questions/tagged/xbim) tag a good place to start.\r\n\r\n\r\n## Getting Involved\r\n\r\nIf you'd like to get involved and contribute to this project, please read the [CONTRIBUTING](https://github.com/xBimTeam/XbimEssentials/blob/master/CONTRIBUTING.md) page or contact the Project Coordinators @CBenghi and @martin1cerny.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FxBimTeam%2FXbimEssentials","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FxBimTeam%2FXbimEssentials","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FxBimTeam%2FXbimEssentials/lists"}