├── .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 |
--------------------------------------------------------------------------------