Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge xBimTeam Develop #1

Merged
merged 127 commits into from
Dec 7, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
958ae0e
Bugfix CI build failure.
CBenghi May 23, 2017
cf7e8c1
Xbim.Geometry.Helpers commenced
SteveLockley Jul 25, 2017
c2228cf
Nuget config added
SteveLockley Jul 25, 2017
f9b755e
Merged with Master
SteveLockley Jul 25, 2017
7d00ca0
Geometry solution added, nuget pack properties set
SteveLockley Jul 25, 2017
ddb0101
Axis2 Placement extension removed as duplicated in Ifc4
SteveLockley Jul 25, 2017
0d07f6e
Ref to latest Ifc4 added
SteveLockley Jul 25, 2017
f056869
Signed the assembly
SteveLockley Jul 26, 2017
e7fc694
Dependencies updated
SteveLockley Jul 26, 2017
276443f
Updated dependencies
SteveLockley Jul 26, 2017
fb6f207
Updated dependencies and Nuget CI build versioning
SteveLockley Jul 28, 2017
ec3ebdf
Upgrade Geometry Engine to Net47
SteveLockley Aug 4, 2017
b274b93
Solution files tidied
SteveLockley Aug 4, 2017
3d4cd2f
Nuget config added
SteveLockley Aug 4, 2017
cf6f8d1
Debug builds fixed, Nuget targets fixed, publish to BimpGet Server added
SteveLockley Aug 5, 2017
041d422
Net47 supported added
SteveLockley Aug 7, 2017
7ebd505
Interfaces updated to logger support
SteveLockley Aug 10, 2017
397c33d
Partial port to full loggin integration
SteveLockley Aug 10, 2017
8cc3697
Support for Micrsoft Logging 1.1.1 added
SteveLockley Aug 11, 2017
b9e524a
Updated dependencies
SteveLockley Aug 15, 2017
826bbc1
Updated References
SteveLockley Aug 28, 2017
0569480
Updated References
SteveLockley Aug 28, 2017
537cd1c
Tests improved recursion in solid boolean cuts fixed
SteveLockley Aug 29, 2017
e472722
Finally.....resolved assembly referencing issues from native code to …
SteveLockley Aug 30, 2017
4d822c2
Updated Ifc4 dependencies
SteveLockley Aug 30, 2017
d0d835c
Support for creating solids and solidsets from face based entities added
SteveLockley Aug 30, 2017
8cb418f
Assemblies loaded in static constructor, improved error handling in G…
SteveLockley Sep 22, 2017
f566f63
Logging altered to handle better null entities
SteveLockley Sep 22, 2017
1fcd126
ProtoBuffers added for geometry
SteveLockley Sep 28, 2017
9a3fd39
Pack done on build
SteveLockley Sep 28, 2017
cad2a6c
Updated dependencies and packed 32bit dll
SteveLockley Sep 28, 2017
417205a
Updated Nuget dependencies
SteveLockley Sep 28, 2017
92f0b6e
Asset Model Id added to wexbim proto
SteveLockley Oct 2, 2017
0de63c8
Removed net standard 2.0 sdk
SteveLockley Oct 4, 2017
16bb7a1
Xbim Geometry engine interface extended to support creating solid set…
SteveLockley Oct 9, 2017
910fab3
Boolean operations for solid sets changed to be multi-threaded to imp…
SteveLockley Oct 11, 2017
b8e403f
Attempt to fix VSTS build.
andyward Nov 1, 2017
ce1e804
Removed redundant redirects
andyward Nov 1, 2017
ff18e1e
Removed ref to Ifc2x3 Extensions
SteveLockley Mar 2, 2018
ef93a7d
Merge branch 'master' of https://bimpress.visualstudio.com/Xbim.Aim/_…
SteveLockley Mar 2, 2018
33ff1fd
Updated Nuget dependencies and commented out the 64 bit build to help…
SteveLockley Mar 2, 2018
eecd690
Double precision support added for Tessellation
SteveLockley Mar 2, 2018
26efd2d
Geometry 32 and 64 dlls can have a load path specified
SteveLockley Mar 4, 2018
f93e262
Added logging to GeometryEngine construction
andyward Mar 4, 2018
0f20e17
Changed to use LoadFrom rather than LoadFile - suspect this causes du…
andyward Mar 5, 2018
702c1f5
Allow consumers to over-ride the bin output folder. e.g. For Functions
andyward Mar 8, 2018
6836af0
Nuget++
SteveLockley Apr 15, 2018
15d75a7
Merge branch 'master' of https://bimpress.visualstudio.com/Xbim.Aim/_…
SteveLockley Apr 15, 2018
34e61e6
Tessellator updated
SteveLockley May 3, 2018
be7f92b
Fixed targets file renaming error
SteveLockley May 4, 2018
565e7f7
64 bit build added back in
SteveLockley May 4, 2018
ad9558e
Updated to latest MemoryModel & Tessellator
SteveLockley May 4, 2018
bc96246
Nuget++
SteveLockley May 11, 2018
b8e371b
tweaked nuget package convention so latest builds displayed first
andyward May 14, 2018
57595fb
Nuget++
SteveLockley Jun 6, 2018
5b3268a
Merge branch 'master' of https://bimpress.visualstudio.com/Xbim.Aim/_…
SteveLockley Jun 6, 2018
9395ce5
CompositeProfile support improced
SteveLockley Jun 9, 2018
184c7f0
Matrix calculation error corrected
SteveLockley Jun 10, 2018
ed1c29f
Fix to a test case of total void clipping result
SteveLockley Jun 10, 2018
51832b5
Precision modified for archicad tolerances
SteveLockley Jun 11, 2018
eacd25f
Initial update Geometry engine to OpenCascade 7.3.0
CBenghi Jun 12, 2018
ced5772
Model federation test added
SteveLockley Jun 13, 2018
c1c3868
Nuget++
SteveLockley Jun 14, 2018
153dd0f
Updated Essentials to resolve breaking signature changes.
CBenghi Oct 11, 2018
dad8569
Fixing and refactoring boolean solid operations
bekraft Oct 20, 2018
7bdb0e8
Trimmed Curve support added for Advanced Brep edges. Test case added
SteveLockley Nov 9, 2018
9ba1f6b
Undefined AxisPlacements are now treated as at 0,0 to perform as othe…
SteveLockley Nov 9, 2018
5c93ac5
Merged BimPress Master with Git Hub feture/occ730 branch
SteveLockley Nov 10, 2018
afeb963
Inital tests all pass
SteveLockley Nov 10, 2018
39a4cf0
IfcExtrudedAreaSolidTapered re-enginered to use BRepOffsetAPI_ThruSe…
SteveLockley Nov 13, 2018
54c677d
Test Fixed
SteveLockley Nov 21, 2018
b4870f4
Merged with Develop
SteveLockley Nov 21, 2018
679da14
Merged to Open Source
SteveLockley Nov 21, 2018
b81bc7f
ModelGeometry Scene updated to net47
SteveLockley Nov 21, 2018
83583dc
Xbim Regression added and updared to net 47
SteveLockley Nov 21, 2018
4e8e765
Regression dependencies updated
SteveLockley Nov 22, 2018
23eba6f
Merge branch 'opensource' into github-develop
SteveLockley Nov 22, 2018
09336fb
Added azure pipelines configuration.
SteveLockley Nov 22, 2018
9d97112
Renamed YML file.
SteveLockley Nov 22, 2018
7b4bd01
Removed requirements
SteveLockley Nov 22, 2018
2c2dff5
Fixed a config with our MyGet feeds
SteveLockley Nov 22, 2018
8de3d36
Fixed variables in the CI config
SteveLockley Nov 22, 2018
895994d
Package support added to interop, deprecated files deleted
SteveLockley Nov 22, 2018
bba80e6
Removed nuget.config
martin1cerny Nov 23, 2018
7ef6c86
Added nuget.config
martin1cerny Nov 23, 2018
77cdea0
Tests all added and passing
SteveLockley Nov 23, 2018
3387588
Set ModelGeometry.Scene to produce nuget package
andyward Nov 23, 2018
8951bee
Use the same Nuget packaging as Essentials
andyward Nov 24, 2018
98e73a9
Issue #46 in Github resolution
SteveLockley Nov 24, 2018
11e7141
Merge branch 'develop' of https://github.com/xBimTeam/XbimGeometry in…
SteveLockley Nov 24, 2018
7c9a341
Work around for is #74 where Ifc exporters badly specify parameters o…
SteveLockley Nov 24, 2018
53fe413
Removed separate Pack for Geometry Interop until work out build serve…
andyward Nov 24, 2018
868bde8
Fixes for #92 proposed in #137 by Befraft
SteveLockley Nov 25, 2018
a7f3488
Merge branch 'develop' of https://github.com/xBimTeam/XbimGeometry in…
SteveLockley Nov 25, 2018
522e7a5
Converted ModelGeometry.Scene to new style csproj to help with Nuget …
andyward Nov 25, 2018
af6c5c2
Removed some of the build versioning in G.E so we can get a consisten…
andyward Nov 25, 2018
f3adcd6
Updated nupkg output dir so it gets picked up by nuget pack (and clea…
andyward Nov 25, 2018
cbfe9e7
Updated Essentials deps - to latest master
andyward Nov 26, 2018
994dd67
Added Xbim.Geometry meta package.
andyward Nov 26, 2018
33bca48
Updated latest Essentials with newer Logger dependencies
andyward Nov 26, 2018
4f50168
Updated licence link to fix build warning
andyward Nov 26, 2018
185814a
Added File Version stamping for netcore csprojs
andyward Nov 26, 2018
8af96a5
Added tests to pipeline.
andyward Nov 26, 2018
df397b6
Updated Essentials dependencies and hooked in new XbimLogging ILogger…
andyward Nov 26, 2018
8a91dc5
Boolean Timeout control removed from OCC and implemeneted in executin…
SteveLockley Nov 27, 2018
93ca1e4
Merged
SteveLockley Nov 27, 2018
13e77ee
Updated xBIM Esentials packages
martin1cerny Nov 27, 2018
6f99c80
Fixed incremenental build issuse and updated Nuget Essentials package…
SteveLockley Nov 27, 2018
c4c32ef
Boolean tolerances set to respect half space edge tolerances
SteveLockley Nov 28, 2018
b9f4304
Boolean Clipping Result moved to solid set
SteveLockley Nov 28, 2018
82872ce
Tolerances limited to Ifc precison for all solids and shells
SteveLockley Nov 28, 2018
f5996a2
Retry with courser precision added for booleans that are not precisel…
SteveLockley Nov 28, 2018
48e4c7c
Composite curve fixed where vertices are not connected
SteveLockley Nov 29, 2018
a939e23
Trimmed lines amended to respect correct parameterisation of the line…
SteveLockley Nov 30, 2018
257c681
Composite curve with bad precision fix
SteveLockley Dec 1, 2018
b8b98d0
Updated latest Essentials dependencies.
andyward Dec 3, 2018
ed05cb2
Boolean cuts optimised for nexted boolean results
SteveLockley Dec 3, 2018
8214ada
Updated dependencies
SteveLockley Dec 3, 2018
bf44b84
removed unnecessay declaration in XbimCompound
SteveLockley Dec 3, 2018
9db4c43
Reinstated ILogger
andyward Dec 4, 2018
52ca9ea
Wired into XBIM logger factory
andyward Dec 4, 2018
b37463d
Added logging to GeometryEngine and modelScene to help with diagnostics
andyward Dec 6, 2018
e0be9b8
Make sure we use a recent Nuget
andyward Dec 6, 2018
4e6c987
Fixed a log issue in targets
andyward Dec 6, 2018
7a9669e
Corrected yaml syntax
andyward Dec 6, 2018
fd767c9
Build: Fixed nuget breaking change
andyward Dec 6, 2018
f230d2d
Build: use same approach as Exchange for versioning
andyward Dec 6, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions LICENCE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
XBIM Licence

For the Geometry Engine library please also consult the documents in the Xbim.Geometry.Engine\OCC folder.

Common Development and Distribution License (CDDL)
==================================================

Expand Down
21 changes: 0 additions & 21 deletions Performance3.psess

This file was deleted.

5 changes: 0 additions & 5 deletions Publish.bat

This file was deleted.

5 changes: 0 additions & 5 deletions PublishVS2015.bat

This file was deleted.

5 changes: 0 additions & 5 deletions PublishVS2017.bat

This file was deleted.

70 changes: 0 additions & 70 deletions README.md

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
using System.Collections;
using System.Text.RegularExpressions;

namespace GeometryTests {
namespace Xbim.Geometry.Engine.Interop.Tests
{
/// <summary>
/// This Class implements the Difference Algorithm published in
/// "An O(ND) Difference Algorithm and its Variations" by Eugene Myers
Expand Down
30 changes: 30 additions & 0 deletions Xbim.Geometry.Engine.Interop.Tests/EntityRepository.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.IO;
using Xbim.Common;
using Xbim.IO.Memory;

namespace Xbim.Geometry.Engine.Interop.Tests
{
public class EntityRepository<T> : IDisposable where T : IPersistEntity
{
MemoryModel model;
public T Entity;
public EntityRepository(string name, bool inRadians = false)
{
var path = Path.GetFullPath($@"TestFiles\{name}.ifc");
Assert.IsTrue(File.Exists(path), path);
model = MemoryModel.OpenRead(path);
if (inRadians)
model.ModelFactors.Initialise(1, 1e-3, 1e-5);
else
model.ModelFactors.Initialise(Math.PI / 180, 1e-3, 1e-5);
Entity = (T)model.Instances[1];
}

public void Dispose()
{
model.Dispose();
}
}
}
184 changes: 184 additions & 0 deletions Xbim.Geometry.Engine.Interop.Tests/HelperFunctions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
using Microsoft.Extensions.Logging;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Diagnostics;
using Xbim.Common.Geometry;
using Xbim.Ifc4.Interfaces;

namespace Xbim.Geometry.Engine.Interop.Tests
{
public static class HelperFunctions
{

//public static double ConvertGeometryAllCompositesAtOnce(IXbimGeometryEngine geometryEngine, ShapeGeometryDTO geomDto, ILogger logger =null)
//{
// var geomHelper = ShapeGeometryHelper.BuildFromDTO(geomDto);
// var assetModel = new AssetModel();
// var shapeGeometry = new AimShapeGeometry(assetModel)
// {
// AssetModelId = 1,
// ShapeGeometryId = geomDto.GeometryId,
// EntityVariantId = geomDto.EntityVariantId,
// MaterialId = geomDto.ShapeMaterialId,
// Volume = 0,
// };

// var sw = new Stopwatch();
// var model = geomHelper.Geometry.Model;
// if (geomHelper.Voids != null && geomHelper.Voids.Any(v => v != null))
// {
// var cuts = geometryEngine.CreateSolidSet();
// foreach (var voidItem in geomHelper.Voids)
// {
// var cut = geometryEngine.CreateGeometryObjectSet();
// foreach (var shapeRep in voidItem.Flatten())
// {
// var geometry = geometryEngine.Create(shapeRep.GeometryItem, logger);
// if (geometry != null && geometry.IsValid)
// {
// if (shapeRep.Transform.HasValue)
// {
// var transformed = geometry.Transform(shapeRep.Transform.Value);
// cut.Add(transformed);
// }
// else
// cut.Add(geometry);
// }
// }
// cuts.Add(cut);
// }

// // using (var = GeometryEngine.Create(_geometryRepresentationItem))
// var bodyGeom = geomHelper.Geometry.CreateSolids(geometryEngine, logger);
// {
// if (bodyGeom != null && bodyGeom.Any())
// {
// var precision = model.ModelFactors.Precision;
// var deflection = model.ModelFactors.DeflectionTolerance;
// var deflectionAngle = model.ModelFactors.DeflectionAngle;


// try
// {

// sw.Start();
// using (var bodyCut = bodyGeom.Cut(cuts, precision))
// {

// }
// }
// catch (Exception e)
// {
// throw new Exception($"Exception cutting voids in Geometric Shape #{geomHelper.ShapeGeometryId}, Entity #{geomHelper.EntityVariantId}, Error[{e.Message}]");
// }
// sw.Stop();
// }
// }
// //cleanup up the
// foreach (var cut in cuts) cut.Dispose();
// }
// else
// {
// var tessellator = new XbimTessellator(model, XbimGeometryType.PolyhedronBinary);
// if (tessellator.CanMesh(geomHelper.Geometry))
// {
// IXbimShapeGeometryData shapeData = tessellator.Mesh(geomHelper.Geometry);
// shapeGeometry.BoundingBox = shapeData.BoundingBox;
// shapeGeometry.Triangulation = shapeData.ShapeData;
// }
// else
// {
// using (var geometry = geometryEngine.Create(geomHelper.Geometry, logger))
// {
// if (geometry != null)
// {
// IXbimShapeGeometryData shapeData = geometryEngine.CreateShapeGeometry(geometry, model.ModelFactors.Precision, model.ModelFactors.DeflectionTolerance,
// model.ModelFactors.DeflectionAngle, XbimGeometryType.PolyhedronBinary, logger);
// shapeGeometry.BoundingBox = shapeData.BoundingBox;
// shapeGeometry.Triangulation = shapeData.ShapeData;
// var solid = geometry as IXbimSolid;
// shapeGeometry.Volume = solid?.Volume ?? 0;
// }
// }
// }
// }
// sw.Stop();
// return sw.ElapsedMilliseconds;
//}

public static void IsValidSolid(IXbimSolid solid, bool ignoreVolume = false, bool isHalfSpace = false, int entityLabel = 0)
{
// ReSharper disable once CompareOfFloatsByEqualityOperator
if (ignoreVolume && !isHalfSpace && solid.Volume == 0)
{
Trace.WriteLine(String.Format("Entity #{0} has zero volume>", entityLabel));
}
if (!ignoreVolume) Assert.IsTrue(solid.Volume > 0, "Volume should be greater than 0");
Assert.IsTrue(solid.SurfaceArea > 0, "Surface Area should be greater than 0");
Assert.IsTrue(solid.IsValid);

if (!isHalfSpace)
{
foreach (var face in solid.Faces)
{

Assert.IsTrue(face.OuterBound.IsValid, "Face has no outer bound in #" + entityLabel);

Assert.IsTrue(face.Area > 0, "Face area should be greater than 0 in #" + entityLabel);
Assert.IsTrue(face.Perimeter > 0, "Face perimeter should be breater than 0 in #" + entityLabel);

if (face.IsPlanar)
{
Assert.IsTrue(!face.Normal.IsInvalid(), "Face normal is invalid in #" + entityLabel);
// Assert.IsTrue(face.OuterBound.Edges.Count>2, "A face should have at least 3 edges");
// Assert.IsTrue(!face.OuterBound.Normal.IsInvalid(), "Face outerbound normal is invalid in #" + entityLabel);
// Assert.IsTrue(face.OuterBound.IsPlanar, "Face is planar but wire is not in #" + entityLabel);
}
else
Assert.IsFalse(face.OuterBound.IsPlanar, "Face is not planar but wire is planar in #" + entityLabel);
foreach (var edge in face.OuterBound.Edges)
{
Assert.IsTrue(edge.EdgeGeometry.IsValid, "Edge element is invalid in #" + entityLabel);
Assert.IsTrue(edge.EdgeStart.IsValid, "Edge start is invalid in #" + entityLabel);
Assert.IsTrue(edge.EdgeEnd.IsValid, "Edge end is invalid in #" + entityLabel);
}
}
}
}

private static IXbimSolidSet CreateSolids(this IIfcGeometricRepresentationItem repItem, IXbimGeometryEngine engine, ILogger logger)
{
var sSet = engine.CreateSolidSet();
var sweptArea = repItem as IIfcSweptAreaSolid;
if (sweptArea != null && (sweptArea.SweptArea is IIfcCompositeProfileDef))
{
//this is necessary as composite profile definitions produce multiple solid
return engine.CreateSolidSet(sweptArea, logger);
}
else if( repItem is IIfcSweptAreaSolid)
{
sSet.Add(engine.CreateSolid(repItem as IIfcSweptAreaSolid, logger));
return sSet;
}
else if (repItem is IIfcSweptDiskSolid)
{
sSet.Add(engine.CreateSolid(repItem as IIfcSweptDiskSolid, logger));
return sSet;
}
else if (repItem is IIfcBooleanResult) { return engine.CreateSolidSet(repItem as IIfcBooleanResult, logger); }
else if (repItem is IIfcBooleanClippingResult) { return engine.CreateSolidSet(repItem as IIfcBooleanClippingResult, logger); }
else if (repItem is IIfcCsgSolid) { return engine.CreateSolidSet(repItem as IIfcCsgSolid, logger); }
else if (repItem is IIfcFacetedBrep) return engine.CreateSolidSet(repItem as IIfcFacetedBrep, logger);
else if (repItem is IIfcTriangulatedFaceSet) return engine.CreateSolidSet(repItem as IIfcTriangulatedFaceSet);
else if (repItem is IIfcShellBasedSurfaceModel) return engine.CreateSolidSet(repItem as IIfcShellBasedSurfaceModel);
else if (repItem is IIfcFaceBasedSurfaceModel) return engine.CreateSolidSet(repItem as IIfcFaceBasedSurfaceModel);
else if (repItem is IIfcBoundingBox) { sSet.Add(engine.CreateSolid(repItem as IIfcBoundingBox, logger)); return sSet; }
else if (repItem is IIfcSectionedSpine) { sSet.Add(engine.CreateSolid(repItem as IIfcSectionedSpine, logger)); return sSet; }
else if (repItem is IIfcCsgPrimitive3D) { sSet.Add(engine.CreateSolid(repItem as IIfcCsgPrimitive3D, logger)); return sSet; }
else if (repItem is IIfcAdvancedBrep) { sSet.Add(engine.CreateSolid(repItem as IIfcAdvancedBrep, logger)); return sSet; }
else return null;


}
}
}
Loading