From 402ffcc9b314a03fc2c5d2b08825fa4959e9910c Mon Sep 17 00:00:00 2001 From: Andy Ward Date: Fri, 25 Oct 2019 17:31:12 +0100 Subject: [PATCH 01/21] Added additional guard to be more tolerant when processing models without valid Contexts supplied. Should address xBimTeam/XbimWindowsUI#94 --- Xbim.ModelGeometry.Scene/Xbim3DModelContext.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Xbim.ModelGeometry.Scene/Xbim3DModelContext.cs b/Xbim.ModelGeometry.Scene/Xbim3DModelContext.cs index f28ded750..1db666807 100644 --- a/Xbim.ModelGeometry.Scene/Xbim3DModelContext.cs +++ b/Xbim.ModelGeometry.Scene/Xbim3DModelContext.cs @@ -1111,6 +1111,11 @@ private List WriteProductShapeRepresentationItems(XbimCreateC IIfcRepresentation rep, XbimGeometryRepresentationType repType, XbimMatrix3D placementTransform, IItemSet representationItems) { var shapesInstances = new List(); + if(rep.ContextOfItems == null) + { + LogWarning(product, "Unable to write representation because no ContextOfItems was provided for representation {0}", rep.EntityLabel); + return shapesInstances; + } var contextId = rep.ContextOfItems.EntityLabel; foreach (var representationItem in representationItems) { From 6c9886778ec4def23c21ddcfcd025e3cf17fabec Mon Sep 17 00:00:00 2001 From: Andy Ward Date: Fri, 25 Oct 2019 17:09:02 +0100 Subject: [PATCH 02/21] More graceful handling of representations without a ContextOfItems. These are in violation of the specs but we should support them better. E.g. 2x3_Arboleda_Bldg-Arch.ifc --- .../Xbim3DModelContext.cs | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/Xbim.ModelGeometry.Scene/Xbim3DModelContext.cs b/Xbim.ModelGeometry.Scene/Xbim3DModelContext.cs index 1db666807..07dd54245 100644 --- a/Xbim.ModelGeometry.Scene/Xbim3DModelContext.cs +++ b/Xbim.ModelGeometry.Scene/Xbim3DModelContext.cs @@ -268,6 +268,7 @@ internal bool Initialise(bool adjustWcs) } catch (Exception e) { + LogError("Unexpected failure during context initialisation", e); InitialiseError = e.Message; return false; } @@ -419,8 +420,7 @@ private void GetProductShapeIds() continue; // Write product representations of context - foreach (var rep in product.Representation.Representations.Where( - r => (!Contexts.Any() || Contexts.Contains(r.ContextOfItems.EntityLabel)) && r.IsBodyRepresentation())) + foreach (var rep in product.Representation.Representations.Where(r => IsInContext(Contexts, r) && r.IsBodyRepresentation())) { foreach (var shape in rep.Items.Where(i => !(i is IIfcGeometricSet))) { @@ -1046,7 +1046,7 @@ private void WriteProductShapes(XbimCreateContextHelper contextHelper, IEnumerab return; // Write product representations of context - if (product.Representation.Representations.Any(r => IsInContext(r) && r.IsBodyRepresentation())) + if (product.Representation.Representations.Any(r => IsInContext(_contexts, r) && r.IsBodyRepresentation())) { WriteProductShape(contextHelper, product, true, txn); } @@ -1056,11 +1056,17 @@ private void WriteProductShapes(XbimCreateContextHelper contextHelper, IEnumerab contextHelper.PercentageParsed = localPercentageParsed; } - private bool IsInContext(IIfcRepresentation r) + private static bool IsInContext(IfcRepresentationContextCollection contexts, IIfcRepresentation r) { - if (!_contexts.Any()) return true; //if we have no context take everything + if (!contexts.Any()) return true; //if we have no context take everything + + if(r.ContextOfItems == null) + { + LogWarning(r, "No Context found for this representation"); + return false; + } // check for entity label to take advantage of keyed collection - return _contexts.Contains(r.ContextOfItems.EntityLabel); + return contexts.Contains(r.ContextOfItems.EntityLabel); } @@ -1088,7 +1094,7 @@ private IEnumerable WriteProductShape(XbimCreateContextHelper if (product.Representation.Representations == null) return Enumerable.Empty(); - var reps = product.Representation.Representations.Where(r => IsInContext(r) && r.IsBodyRepresentation()); + var reps = product.Representation.Representations.Where(r => IsInContext(_contexts, r) && r.IsBodyRepresentation()); // logic to classify feature tagging var repType = includesOpenings @@ -1465,6 +1471,7 @@ private IXbimGeometryObject CallWithTimeout(IIfcGeometricRepresentationItem shap } catch (ThreadAbortException) { + _logger.LogWarning("Thread aborted due to timeout"); Thread.ResetAbort();// cancel hard aborting, lets to finish it nicely. return null; } @@ -1496,6 +1503,7 @@ private IXbimGeometryObjectSet CutWithTimeOut(IXbimGeometryObjectSet elementGeom } catch (ThreadAbortException) { + _logger.LogWarning("Thread aborted due to timeout"); Thread.ResetAbort();// cancel hard aborting, lets to finish it nicely. return null; } From 8c5db8c8ea02662bfac6639b6136d478471b62cf Mon Sep 17 00:00:00 2001 From: Andy Ward Date: Fri, 25 Oct 2019 18:12:58 +0100 Subject: [PATCH 03/21] Going for green. Ignore an unimplemented test in this branch --- Xbim.Geometry.Engine.Interop.Tests/Ifc4GeometryTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Xbim.Geometry.Engine.Interop.Tests/Ifc4GeometryTests.cs b/Xbim.Geometry.Engine.Interop.Tests/Ifc4GeometryTests.cs index dfad8344d..99545e7af 100644 --- a/Xbim.Geometry.Engine.Interop.Tests/Ifc4GeometryTests.cs +++ b/Xbim.Geometry.Engine.Interop.Tests/Ifc4GeometryTests.cs @@ -36,6 +36,7 @@ static public void Cleanup() [TestMethod] public void Can_build_ifcadvancedbrep_with_faulty_surface_orientation() { + Assert.Inconclusive("Not implemented in master"); using (var model = MemoryModel.OpenRead(@"ifcadvancedbrep_with_faulty_surface_orientation.ifc")) { var pfs = model.Instances.OfType().FirstOrDefault(); From b3e13201890baa4ec41f11a16335442c4ea67481 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20=C4=8Cern=C3=BD?= Date: Thu, 15 Oct 2020 08:46:23 +0200 Subject: [PATCH 04/21] Update azure-pipelines.yml for Azure Pipelines --- azure-pipelines.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 0728b6d76..674d5b91c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -176,3 +176,9 @@ jobs: publishFeedCredentials: 'MyGetDev' versioningScheme: byEnvVar versionEnvVar: packageversion + + # Add tag to mark source + - script: | + git tag $(packageversion) + git push origin $(packageversion) + workingDirectory: $(Build.SourcesDirectory) \ No newline at end of file From 2002e1d7475af1b03ebc923e53826faf72b263ef Mon Sep 17 00:00:00 2001 From: Andy Ward Date: Thu, 15 Oct 2020 15:59:50 +0100 Subject: [PATCH 05/21] Updated Essentials. No significant changes --- .../Xbim.Geometry.Engine.Interop.csproj | 4 ++-- Xbim.Geometry.Regression/XbimRegression.csproj | 2 +- Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj index 01437962c..a1aef2490 100644 --- a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj +++ b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj @@ -31,8 +31,8 @@ - - + + diff --git a/Xbim.Geometry.Regression/XbimRegression.csproj b/Xbim.Geometry.Regression/XbimRegression.csproj index 71968fcbf..871a74c2b 100644 --- a/Xbim.Geometry.Regression/XbimRegression.csproj +++ b/Xbim.Geometry.Regression/XbimRegression.csproj @@ -15,7 +15,7 @@ - + diff --git a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj index 311a5767a..11c6dcd20 100644 --- a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj +++ b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj @@ -18,8 +18,8 @@ - - + + From 70cef2230e46a64f140525b9c86aeef72be82372 Mon Sep 17 00:00:00 2001 From: Andy Ward Date: Thu, 15 Oct 2020 19:09:43 +0100 Subject: [PATCH 06/21] Target net472 - attempt to fix build --- .../Xbim.Geometry.Engine.Interop.Tests.csproj | 4 +--- .../Xbim.Geometry.Engine.Interop.csproj | 5 +---- Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj | 2 +- .../Xbim.Geometry.Engine.vcxproj.filters | 15 +++++++++++++++ Xbim.Geometry.Regression/XbimRegression.csproj | 2 +- .../Xbim.ModelGeometry.Scene.csproj | 2 +- 6 files changed, 20 insertions(+), 10 deletions(-) diff --git a/Xbim.Geometry.Engine.Interop.Tests/Xbim.Geometry.Engine.Interop.Tests.csproj b/Xbim.Geometry.Engine.Interop.Tests/Xbim.Geometry.Engine.Interop.Tests.csproj index 9f3f002ab..06d5fe6b6 100644 --- a/Xbim.Geometry.Engine.Interop.Tests/Xbim.Geometry.Engine.Interop.Tests.csproj +++ b/Xbim.Geometry.Engine.Interop.Tests/Xbim.Geometry.Engine.Interop.Tests.csproj @@ -1,13 +1,11 @@  - net47 + net472 false true true ..\XbimOpenSourceKeyFile.snk - - diff --git a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj index a1aef2490..0b8d6a0dc 100644 --- a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj +++ b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj @@ -1,16 +1,13 @@  - net47 + net472 true Xbim Geometry Engine Provides support for the Ifc4 and Ifc2x3 Geometry conversion. true Xbim.Geometry.Engine.Interop logo.png - 5.1.0.1 - 5.1.0.1 - 5.1.0.0-Dev diff --git a/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj b/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj index 72d7a0051..d383c3982 100644 --- a/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj +++ b/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj @@ -24,7 +24,7 @@ 15.0 {DEFB2CD3-B35F-450A-A829-D3FE50CFC19A} - v4.7 + v4.7.2 ManagedCProj Xbim.Geometry.Engine 10.0 diff --git a/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj.filters b/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj.filters index 9ba98e21b..0de2ffa63 100644 --- a/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj.filters +++ b/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj.filters @@ -9432,6 +9432,21 @@ Header Files + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + diff --git a/Xbim.Geometry.Regression/XbimRegression.csproj b/Xbim.Geometry.Regression/XbimRegression.csproj index 871a74c2b..73c807f32 100644 --- a/Xbim.Geometry.Regression/XbimRegression.csproj +++ b/Xbim.Geometry.Regression/XbimRegression.csproj @@ -1,7 +1,7 @@  Exe - net47 + net472 true ..\XbimOpenSourceKeyFile.snk win7-x86 diff --git a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj index 11c6dcd20..5101f42ed 100644 --- a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj +++ b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj @@ -1,7 +1,7 @@  - net47 + net472 Xbim ModelGeometry Scene true Provides support for the Geometry Scene creation. From d1c6085013f176dad50eb95b1b32742e1ec8f6d3 Mon Sep 17 00:00:00 2001 From: Andy Ward Date: Thu, 15 Oct 2020 19:09:43 +0100 Subject: [PATCH 07/21] Target net472 - attempt to fix build --- .../Xbim.Geometry.Engine.Interop.Tests.csproj | 4 +--- .../Xbim.Geometry.Engine.Interop.csproj | 2 +- Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj | 2 +- .../Xbim.Geometry.Engine.vcxproj.filters | 15 +++++++++++++++ Xbim.Geometry.Regression/XbimRegression.csproj | 2 +- .../Xbim.ModelGeometry.Scene.csproj | 2 +- 6 files changed, 20 insertions(+), 7 deletions(-) diff --git a/Xbim.Geometry.Engine.Interop.Tests/Xbim.Geometry.Engine.Interop.Tests.csproj b/Xbim.Geometry.Engine.Interop.Tests/Xbim.Geometry.Engine.Interop.Tests.csproj index 90eeb4142..c1763be50 100644 --- a/Xbim.Geometry.Engine.Interop.Tests/Xbim.Geometry.Engine.Interop.Tests.csproj +++ b/Xbim.Geometry.Engine.Interop.Tests/Xbim.Geometry.Engine.Interop.Tests.csproj @@ -1,13 +1,11 @@  - net47 + net472 false true true ..\XbimOpenSourceKeyFile.snk - - diff --git a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj index 8ef6b18d4..b51bd5b58 100644 --- a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj +++ b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj @@ -1,7 +1,7 @@  - net47 + net472 true Xbim Geometry Engine Provides support for the Ifc4 and Ifc2x3 Geometry conversion. diff --git a/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj b/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj index 013a20fa4..87546122f 100644 --- a/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj +++ b/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj @@ -24,7 +24,7 @@ 15.0 {DEFB2CD3-B35F-450A-A829-D3FE50CFC19A} - v4.7 + v4.7.2 ManagedCProj Xbim.Geometry.Engine 10.0.17763.0 diff --git a/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj.filters b/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj.filters index 1ae187e8c..d218afb51 100644 --- a/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj.filters +++ b/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj.filters @@ -9426,6 +9426,21 @@ Header Files + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + diff --git a/Xbim.Geometry.Regression/XbimRegression.csproj b/Xbim.Geometry.Regression/XbimRegression.csproj index 9d39185c4..f3c29e354 100644 --- a/Xbim.Geometry.Regression/XbimRegression.csproj +++ b/Xbim.Geometry.Regression/XbimRegression.csproj @@ -1,7 +1,7 @@  Exe - net47 + net472 true ..\XbimOpenSourceKeyFile.snk diff --git a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj index 5b4fc6906..8aa403259 100644 --- a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj +++ b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj @@ -1,7 +1,7 @@  - net47 + net472 Xbim ModelGeometry Scene true Provides support for the Geometry Scene creation. From b8152f72d2c62ff0324f50e500b9b89c53d166c6 Mon Sep 17 00:00:00 2001 From: Andy Ward Date: Sat, 17 Oct 2020 16:43:46 +0100 Subject: [PATCH 08/21] Fixed HintPaths after net472 update --- Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj b/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj index d383c3982..166d083e5 100644 --- a/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj +++ b/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj @@ -158,22 +158,22 @@ - ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net47\Microsoft.Extensions.Logging.Abstractions.dll + ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net472\Microsoft.Extensions.Logging.Abstractions.dll - ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net47\Xbim.Common.dll + ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net472\Xbim.Common.dll - ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net47\Xbim.Ifc4.dll + ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net472\Xbim.Ifc4.dll - ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net47\Xbim.Ifc2x3.dll + ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net472\Xbim.Ifc2x3.dll - ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net47\Xbim.Tessellator.dll + ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net472\Xbim.Tessellator.dll - ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net47\System.Runtime.dll + ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net472\System.Runtime.dll From df298ec93b405954a1250c14f68bdca5fa2f2280 Mon Sep 17 00:00:00 2001 From: Andy Ward Date: Sat, 17 Oct 2020 16:43:46 +0100 Subject: [PATCH 09/21] Fixed HintPaths after net472 update --- Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj b/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj index 87546122f..7d1fae6c5 100644 --- a/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj +++ b/Xbim.Geometry.Engine/Xbim.Geometry.Engine.vcxproj @@ -155,22 +155,22 @@ - ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net47\Microsoft.Extensions.Logging.Abstractions.dll + ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net472\Microsoft.Extensions.Logging.Abstractions.dll - ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net47\Xbim.Common.dll + ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net472\Xbim.Common.dll - ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net47\Xbim.Ifc4.dll + ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net472\Xbim.Ifc4.dll - ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net47\Xbim.Ifc2x3.dll + ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net472\Xbim.Ifc2x3.dll - ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net47\Xbim.Tessellator.dll + ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net472\Xbim.Tessellator.dll - ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net47\System.Runtime.dll + ..\Xbim.Geometry.Engine.Interop\bin\$(Configuration)\net472\System.Runtime.dll From c39b50b621043b675b5dbf8a566b0f5fec3e6ecb Mon Sep 17 00:00:00 2001 From: Andy Ward Date: Sun, 18 Oct 2020 18:13:25 +0100 Subject: [PATCH 10/21] Build fix: Removed use of deprecated PackageIconUrl in packaging --- Directory.Build.props | 4 ++-- .../Xbim.Geometry.Engine.Interop.csproj | 3 +++ .../Xbim.ModelGeometry.Scene.csproj | 3 +++ xbim-toolkit-icon.png | Bin 0 -> 12672 bytes 4 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 xbim-toolkit-icon.png diff --git a/Directory.Build.props b/Directory.Build.props index c0b05ecd3..e650ff0f2 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -16,8 +16,8 @@ Steve Lockley, Martin Cerny and XBIMTeam Contributors XBIM Geometry CDDL-1.0 - https://github.com/xBimTeam/XbimGeometry - https://avatars1.githubusercontent.com/u/2284875?v=3&amp;s=240 + https://github.com/xBimTeam/XbimGeometry + xbim-toolkit-icon.png Version 5.1 update. See https://github.com/xBimTeam/XbimGeometry/blob/master/CHANGELOG.md BIM, IFC, Geometry, Meshing, Tesselation diff --git a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj index b51bd5b58..b0f61c2c6 100644 --- a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj +++ b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj @@ -68,5 +68,8 @@ + + + \ No newline at end of file diff --git a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj index 8aa403259..f5a437304 100644 --- a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj +++ b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj @@ -25,4 +25,7 @@ + + + diff --git a/xbim-toolkit-icon.png b/xbim-toolkit-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4569b2b2832adecdf43cddf62ba4647ccfc53386 GIT binary patch literal 12672 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 d8IkrJdq&Dt#TO7X;4c*{hWAYGBJMc7_& literal 0 HcmV?d00001 From e3ef2e7b21f6744620c1221e871b57f008d3901b Mon Sep 17 00:00:00 2001 From: Andy Ward Date: Sun, 18 Oct 2020 19:51:47 +0100 Subject: [PATCH 11/21] Update azure-pipelines.yml for Azure Pipelines Removed script to tag sources. This is now done in the Devops trigger, on build success --- azure-pipelines.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 674d5b91c..0728b6d76 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -176,9 +176,3 @@ jobs: publishFeedCredentials: 'MyGetDev' versioningScheme: byEnvVar versionEnvVar: packageversion - - # Add tag to mark source - - script: | - git tag $(packageversion) - git push origin $(packageversion) - workingDirectory: $(Build.SourcesDirectory) \ No newline at end of file From 57f992366a3d5e1964ce8b0d6be4938ddefe3cd3 Mon Sep 17 00:00:00 2001 From: Andy Ward Date: Fri, 23 Oct 2020 13:20:59 +0100 Subject: [PATCH 12/21] Updated the latest Essentials and stubbed implementation of new interface. This is to fix runtime issues when using latest Geometry and Essentials from Myget Master See https://github.com/xBimTeam/XbimGeometry/issues/285#issuecomment-715306995 --- .../Xbim.Geometry.Engine.Interop.csproj | 2 +- Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs | 6 +++++- Xbim.Geometry.Regression/XbimRegression.csproj | 4 ++-- Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj | 4 ++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj index b0f61c2c6..9736166c8 100644 --- a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj +++ b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj @@ -13,7 +13,7 @@ - + diff --git a/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs b/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs index a5680952c..762917962 100644 --- a/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs +++ b/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs @@ -823,7 +823,11 @@ public IXbimGeometryObjectSet CreateSurfaceModel(IIfcPolygonalFaceSet shell, ILo } } - + // TODO: Stubbed until we merge https://github.com/xBimTeam/XbimGeometry/commit/86bc1e83eeed0fd84b33bf64045cb6afeac3807b#diff-569f41af2079f5a015416a3c37bb6a5a1b81c5f97b33a341d506634abbfbe52b + public XbimShapeGeometry CreateShapeGeometry(double oneMillimetre, IXbimGeometryObject geometryObject, double precision, ILogger logger = null) + { + throw new NotImplementedException(); + } } public static class LogHelper diff --git a/Xbim.Geometry.Regression/XbimRegression.csproj b/Xbim.Geometry.Regression/XbimRegression.csproj index f3c29e354..f1e4ccbf5 100644 --- a/Xbim.Geometry.Regression/XbimRegression.csproj +++ b/Xbim.Geometry.Regression/XbimRegression.csproj @@ -11,8 +11,8 @@ - - + + diff --git a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj index f5a437304..f0ff07abb 100644 --- a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj +++ b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj @@ -14,8 +14,8 @@ - - + + From 9fb2519f02aa28d380d0d20b81db632fa87874d0 Mon Sep 17 00:00:00 2001 From: Andy Ward Date: Mon, 26 Oct 2020 17:33:23 +0000 Subject: [PATCH 13/21] Stubbed out implementation This is just a stop gap to fix the master build. Need to revert this when merging develop, --- Xbim.Geometry.Engine/XbimGeometryCreator.cpp | 6 ++++++ Xbim.Geometry.Engine/XbimGeometryCreator.h | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Xbim.Geometry.Engine/XbimGeometryCreator.cpp b/Xbim.Geometry.Engine/XbimGeometryCreator.cpp index 8ccadacde..430336b50 100644 --- a/Xbim.Geometry.Engine/XbimGeometryCreator.cpp +++ b/Xbim.Geometry.Engine/XbimGeometryCreator.cpp @@ -1338,6 +1338,12 @@ namespace Xbim return nullptr; } + Xbim::Common::Geometry::XbimShapeGeometry^ XbimGeometryCreator::CreateShapeGeometry(double oneMillimetre, Xbim::Common::Geometry::IXbimGeometryObject^ geometryObject, double precision, Microsoft::Extensions::Logging::ILogger^ logger) + { + throw gcnew System::NotImplementedException(); + // TODO: This is stubbed out until we merge the implementation from develop. temp fix for broken build + } + IXbimGeometryObject^ XbimGeometryCreator::Trim(XbimSetObject^ geometryObject) { return geometryObject->Trim(); diff --git a/Xbim.Geometry.Engine/XbimGeometryCreator.h b/Xbim.Geometry.Engine/XbimGeometryCreator.h index 75782b062..aab5e7ee8 100644 --- a/Xbim.Geometry.Engine/XbimGeometryCreator.h +++ b/Xbim.Geometry.Engine/XbimGeometryCreator.h @@ -229,6 +229,9 @@ namespace Xbim virtual IXbimGeometryObject ^ Moved(IXbimGeometryObject ^geometryObject, IIfcObjectPlacement ^objectPlacement, ILogger^ logger); virtual IXbimGeometryObject^ FromBrep(String^ brepStr); virtual String^ ToBrep(IXbimGeometryObject^ geometryObject); - }; + + + virtual Xbim::Common::Geometry::XbimShapeGeometry^ CreateShapeGeometry(double oneMillimetre, Xbim::Common::Geometry::IXbimGeometryObject^ geometryObject, double precision, Microsoft::Extensions::Logging::ILogger^ logger); +}; } } \ No newline at end of file From 67837ce24aada9d818283a2dad6fd0839614b0cd Mon Sep 17 00:00:00 2001 From: Martin Cerny Date: Wed, 18 Nov 2020 08:41:07 +0100 Subject: [PATCH 14/21] Updated Essentials --- .../Xbim.Geometry.Engine.Interop.csproj | 4 ++-- Xbim.Geometry.Regression/XbimRegression.csproj | 2 +- Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj index 0b8d6a0dc..a1ec44276 100644 --- a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj +++ b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj @@ -28,8 +28,8 @@ - - + + diff --git a/Xbim.Geometry.Regression/XbimRegression.csproj b/Xbim.Geometry.Regression/XbimRegression.csproj index 73c807f32..b2efc9a2a 100644 --- a/Xbim.Geometry.Regression/XbimRegression.csproj +++ b/Xbim.Geometry.Regression/XbimRegression.csproj @@ -15,7 +15,7 @@ - + diff --git a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj index 5101f42ed..03b5309f9 100644 --- a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj +++ b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj @@ -18,8 +18,8 @@ - - + + From 02ce514b2f25aecd9f9fe7b0d423ecefab85efa1 Mon Sep 17 00:00:00 2001 From: Stephen Lockley Date: Tue, 15 Dec 2020 14:43:34 +0000 Subject: [PATCH 15/21] Merged with Development --- .../Xbim.Geometry.Engine.Interop.Tests.csproj | 4 +- .../Xbim.Geometry.Engine.Interop.csproj | 31 ++++---- .../XbimGeometryEngine.cs | 8 +-- Xbim.Geometry.Engine/XbimGeometryCreator.cpp | 6 +- Xbim.Geometry.Engine/XbimGeometryCreator.h | 71 +++++++++---------- .../XbimRegression.csproj | 8 +-- .../Xbim.ModelGeometry.Scene.csproj | 13 ++-- 7 files changed, 63 insertions(+), 78 deletions(-) diff --git a/Xbim.Geometry.Engine.Interop.Tests/Xbim.Geometry.Engine.Interop.Tests.csproj b/Xbim.Geometry.Engine.Interop.Tests/Xbim.Geometry.Engine.Interop.Tests.csproj index 06d5fe6b6..d6cd7e06d 100644 --- a/Xbim.Geometry.Engine.Interop.Tests/Xbim.Geometry.Engine.Interop.Tests.csproj +++ b/Xbim.Geometry.Engine.Interop.Tests/Xbim.Geometry.Engine.Interop.Tests.csproj @@ -17,10 +17,10 @@ - + PreserveNewest - + PreserveNewest diff --git a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj index 6142ecd13..7c30bea83 100644 --- a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj +++ b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj @@ -7,7 +7,7 @@ Provides support for the Ifc4 and Ifc2x3 Geometry conversion. true Xbim.Geometry.Engine.Interop - logo.png + xbim-toolkit-icon.png @@ -26,8 +26,8 @@ - - + + @@ -44,35 +44,35 @@ - + - + - + - + - + true - build\net47; + build\net472; - + true - build\net47; + build\net472; Xbim.Geometry.Interop.targets PreserveNewest - build\net47; + build\net472; true @@ -81,12 +81,7 @@ - - - True - - - + diff --git a/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs b/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs index 81a9317c3..b7077648e 100644 --- a/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs +++ b/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs @@ -30,7 +30,7 @@ public XbimGeometryEngine() : this(null) public XbimGeometryEngine(ILogger logger) { - // Warn if runtime for Engine is not present, this is not necessary any more as we are net47 + // Warn if runtime for Engine is not present, this is not necessary any more as we are net472 //XbimPrerequisitesValidator.Validate(); @@ -837,11 +837,7 @@ public IXbimGeometryObjectSet CreateSurfaceModel(IIfcPolygonalFaceSet shell, ILo } } - // TODO: Stubbed until we merge https://github.com/xBimTeam/XbimGeometry/commit/86bc1e83eeed0fd84b33bf64045cb6afeac3807b#diff-569f41af2079f5a015416a3c37bb6a5a1b81c5f97b33a341d506634abbfbe52b - public XbimShapeGeometry CreateShapeGeometry(double oneMillimetre, IXbimGeometryObject geometryObject, double precision, ILogger logger = null) - { - throw new NotImplementedException(); - } + } public static class LogHelper diff --git a/Xbim.Geometry.Engine/XbimGeometryCreator.cpp b/Xbim.Geometry.Engine/XbimGeometryCreator.cpp index 5d2d52e33..a1f85f999 100644 --- a/Xbim.Geometry.Engine/XbimGeometryCreator.cpp +++ b/Xbim.Geometry.Engine/XbimGeometryCreator.cpp @@ -1348,11 +1348,7 @@ namespace Xbim return nullptr; } - Xbim::Common::Geometry::XbimShapeGeometry^ XbimGeometryCreator::CreateShapeGeometry(double oneMillimetre, Xbim::Common::Geometry::IXbimGeometryObject^ geometryObject, double precision, Microsoft::Extensions::Logging::ILogger^ logger) - { - throw gcnew System::NotImplementedException(); - // TODO: This is stubbed out until we merge the implementation from develop. temp fix for broken build - } + IXbimGeometryObject^ XbimGeometryCreator::Trim(XbimSetObject^ geometryObject) { diff --git a/Xbim.Geometry.Engine/XbimGeometryCreator.h b/Xbim.Geometry.Engine/XbimGeometryCreator.h index b851fe593..729a7d665 100644 --- a/Xbim.Geometry.Engine/XbimGeometryCreator.h +++ b/Xbim.Geometry.Engine/XbimGeometryCreator.h @@ -23,30 +23,30 @@ namespace Xbim public ref class XbimGeometryCreator : IXbimGeometryEngine { - - static Assembly^ ResolveHandler(Object^ /*Sender*/, ResolveEventArgs^ /*args*/) + + static Assembly^ ResolveHandler(Object^ /*Sender*/, ResolveEventArgs^ /*args*/) { - + // Warning: this should check the args for the assembly name! return nullptr; } bool Is3D(IIfcCurve^ rep); - + public: static String^ SurfaceOfLinearExtrusion = "#SurfaceOfLinearExtrusion"; static String^ PolylineTrimLengthOneForEntireLine = "#PolylineTrimLengthOneForEntireLine"; private: - - IXbimGeometryObject ^ Trim(XbimSetObject ^geometryObject); + + IXbimGeometryObject^ Trim(XbimSetObject^ geometryObject); static XbimGeometryCreator() { //AppDomain::CurrentDomain->AssemblyResolve += gcnew ResolveEventHandler(ResolveHandler); /*Assembly::Load("Xbim.Ifc4"); Assembly::Load("Xbim.Common"); Assembly::Load("Xbim.Tessellator");*/ - + String^ timeOut = ConfigurationManager::AppSettings["BooleanTimeOut"]; if (!int::TryParse(timeOut, BooleanTimeOut)) BooleanTimeOut = 60; @@ -63,18 +63,18 @@ namespace Xbim AngularDeflectionInRadians = 0.5;// deflection of 28 degrees String^ ignoreIfcSweptDiskSolidParamsString = ConfigurationManager::AppSettings["IgnoreIfcSweptDiskSolidParams"]; - if(!bool::TryParse(ignoreIfcSweptDiskSolidParamsString,IgnoreIfcSweptDiskSolidParams)) + if (!bool::TryParse(ignoreIfcSweptDiskSolidParamsString, IgnoreIfcSweptDiskSolidParams)) IgnoreIfcSweptDiskSolidParams = false; - + } protected: ~XbimGeometryCreator() { } - + public: - + //Central point for logging all errors static void LogInfo(ILogger^ logger, Object^ entity, String^ format, ... array^ arg); static void LogWarning(ILogger^ logger, Object^ entity, String^ format, ... array^ arg); @@ -86,17 +86,17 @@ namespace Xbim static double LinearDeflectionInMM; static double AngularDeflectionInRadians; static bool IgnoreIfcSweptDiskSolidParams; - + virtual XbimShapeGeometry^ CreateShapeGeometry(IXbimGeometryObject^ geometryObject, double precision, double deflection, double angle, XbimGeometryType storageType, ILogger^ logger); - + virtual XbimShapeGeometry^ CreateShapeGeometry(IXbimGeometryObject^ geometryObject, double precision, double deflection, ILogger^ logger/*, double angle = 0.5, XbimGeometryType storageType = XbimGeometryType::Polyhedron*/) { - return CreateShapeGeometry(geometryObject, precision, deflection, 0.5, XbimGeometryType::PolyhedronBinary,logger); + return CreateShapeGeometry(geometryObject, precision, deflection, 0.5, XbimGeometryType::PolyhedronBinary, logger); }; virtual XbimShapeGeometry^ CreateShapeGeometry(double oneMillimetre, IXbimGeometryObject^ geometryObject, double precision, ILogger^ logger) { - double linearDeflection = oneMillimetre * LinearDeflectionInMM; + double linearDeflection = oneMillimetre * LinearDeflectionInMM; return CreateShapeGeometry(geometryObject, precision, linearDeflection, AngularDeflectionInRadians, XbimGeometryType::PolyhedronBinary, logger); }; @@ -131,16 +131,16 @@ namespace Xbim //Create Wire virtual IXbimWire^ CreateWire(IIfcCurve^ curve, ILogger^ logger); - + virtual IXbimWire^ CreateWire(IIfcCompositeCurveSegment^ compCurveSeg, ILogger^ logger); //Face creation - virtual IXbimFace^ CreateFace(IIfcProfileDef ^ profile, ILogger^ logger); - virtual IXbimFace^ CreateFace(IIfcCompositeCurve ^ cCurve, ILogger^ logger); - virtual IXbimFace^ CreateFace(IIfcPolyline ^ pline, ILogger^ logger); - virtual IXbimFace^ CreateFace(IIfcPolyLoop ^ loop, ILogger^ logger); - virtual IXbimFace^ CreateFace(IIfcSurface ^ surface, ILogger^ logger); - virtual IXbimFace^ CreateFace(IIfcPlane ^ plane, ILogger^ logger); - virtual IXbimFace^ CreateFace(IXbimWire ^ wire, ILogger^ logger); + virtual IXbimFace^ CreateFace(IIfcProfileDef^ profile, ILogger^ logger); + virtual IXbimFace^ CreateFace(IIfcCompositeCurve^ cCurve, ILogger^ logger); + virtual IXbimFace^ CreateFace(IIfcPolyline^ pline, ILogger^ logger); + virtual IXbimFace^ CreateFace(IIfcPolyLoop^ loop, ILogger^ logger); + virtual IXbimFace^ CreateFace(IIfcSurface^ surface, ILogger^ logger); + virtual IXbimFace^ CreateFace(IIfcPlane^ plane, ILogger^ logger); + virtual IXbimFace^ CreateFace(IXbimWire^ wire, ILogger^ logger); //Shells creation virtual IXbimShell^ CreateShell(IIfcOpenShell^ shell, ILogger^ logger); @@ -164,7 +164,7 @@ namespace Xbim virtual IXbimSolid^ CreateSolid(IIfcBooleanResult^ ifcSolid, ILogger^ logger); virtual IXbimSolid^ CreateSolid(IIfcBooleanClippingResult^ ifcSolid, ILogger^ logger); - + virtual IXbimSolid^ CreateSolid(IIfcHalfSpaceSolid^ ifcSolid, ILogger^ logger); virtual IXbimSolid^ CreateSolid(IIfcPolygonalBoundedHalfSpace^ ifcSolid, ILogger^ logger); virtual IXbimSolid^ CreateSolid(IIfcBoxedHalfSpace^ ifcSolid, ILogger^ logger); @@ -188,7 +188,7 @@ namespace Xbim virtual IXbimSolid^ CreateSolid(IIfcFaceBasedSurfaceModel^ ifcSurface, ILogger^ logger); virtual IXbimSolid^ CreateSolid(IIfcCsgPrimitive3D^ ifcSolid, ILogger^ logger); - + virtual IXbimSolid^ CreateSolid(IIfcSphere^ ifcSolid, ILogger^ logger); virtual IXbimSolid^ CreateSolid(IIfcBlock^ ifcSolid, ILogger^ logger); virtual IXbimSolid^ CreateSolid(IIfcRightCircularCylinder^ ifcSolid, ILogger^ logger); @@ -233,26 +233,25 @@ namespace Xbim virtual IXbimCurve^ CreateCurve(IIfcBSplineCurveWithKnots^ curve, ILogger^ logger); virtual IXbimCurve^ CreateCurve(IIfcOffsetCurve3D^ curve, ILogger^ logger); virtual IXbimCurve^ CreateCurve(IIfcOffsetCurve2D^ curve, ILogger^ logger); - virtual XbimMatrix3D ToMatrix3D(IIfcObjectPlacement ^ objPlacement, ILogger^ logger); + virtual XbimMatrix3D ToMatrix3D(IIfcObjectPlacement^ objPlacement, ILogger^ logger); virtual IXbimSolidSet^ CreateGrid(IIfcGrid^ grid, ILogger^ logger); // Inherited via IXbimGeometryEngine - virtual IXbimGeometryObject ^ Transformed(IXbimGeometryObject ^geometryObject, IIfcCartesianTransformationOperator ^transformation); - virtual IXbimGeometryObject ^ Moved(IXbimGeometryObject ^geometryObject, IIfcPlacement ^placement); - virtual IXbimGeometryObject ^ Moved(IXbimGeometryObject ^geometryObject, IIfcAxis2Placement3D ^placement) + virtual IXbimGeometryObject^ Transformed(IXbimGeometryObject^ geometryObject, IIfcCartesianTransformationOperator^ transformation); + virtual IXbimGeometryObject^ Moved(IXbimGeometryObject^ geometryObject, IIfcPlacement^ placement); + virtual IXbimGeometryObject^ Moved(IXbimGeometryObject^ geometryObject, IIfcAxis2Placement3D^ placement) { - return Moved(geometryObject, (IIfcPlacement ^)placement); + return Moved(geometryObject, (IIfcPlacement^)placement); }; - virtual IXbimGeometryObject ^ Moved(IXbimGeometryObject ^geometryObject, IIfcAxis2Placement2D ^placement) + virtual IXbimGeometryObject^ Moved(IXbimGeometryObject^ geometryObject, IIfcAxis2Placement2D^ placement) { - return Moved(geometryObject, (IIfcPlacement ^)placement); + return Moved(geometryObject, (IIfcPlacement^)placement); }; - virtual IXbimGeometryObject ^ Moved(IXbimGeometryObject ^geometryObject, IIfcObjectPlacement ^objectPlacement, ILogger^ logger); + virtual IXbimGeometryObject^ Moved(IXbimGeometryObject^ geometryObject, IIfcObjectPlacement^ objectPlacement, ILogger^ logger); virtual IXbimGeometryObject^ FromBrep(String^ brepStr); virtual String^ ToBrep(IXbimGeometryObject^ geometryObject); + }; - virtual Xbim::Common::Geometry::XbimShapeGeometry^ CreateShapeGeometry(double oneMillimetre, Xbim::Common::Geometry::IXbimGeometryObject^ geometryObject, double precision, Microsoft::Extensions::Logging::ILogger^ logger); -}; - } + }; } \ No newline at end of file diff --git a/Xbim.Geometry.Regression/XbimRegression.csproj b/Xbim.Geometry.Regression/XbimRegression.csproj index 8d661001e..a11b8e592 100644 --- a/Xbim.Geometry.Regression/XbimRegression.csproj +++ b/Xbim.Geometry.Regression/XbimRegression.csproj @@ -15,18 +15,18 @@ - - + + - + PreserveNewest - + PreserveNewest diff --git a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj index 694dc4fac..635b3ea8b 100644 --- a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj +++ b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj @@ -7,7 +7,7 @@ Provides support for the Geometry Scene creation. true true - logo.png + xbim-toolkit-icon.png 5.1.0.0-Dev 5.1.0.1 5.1.0.1 @@ -18,18 +18,17 @@ - - + + - + + + - - - From 9dd9f045ca2d2ffbf6bf25da7de29736b6e49f4d Mon Sep 17 00:00:00 2001 From: Claudio Benghi Date: Wed, 3 Mar 2021 12:39:12 +0100 Subject: [PATCH 16/21] Stubbed missing interface methods. --- .../Xbim.Geometry.Engine.Interop.csproj | 4 ++-- Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs | 14 ++++++++++++-- Xbim.Geometry.Engine/XbimGeometryCreator.cpp | 14 ++++++++++++++ Xbim.Geometry.Engine/XbimGeometryCreator.h | 3 +++ Xbim.Geometry.Regression/XbimRegression.csproj | 4 ++-- .../Xbim.ModelGeometry.Scene.csproj | 4 ++-- 6 files changed, 35 insertions(+), 8 deletions(-) diff --git a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj index 7c30bea83..35a4dc7d2 100644 --- a/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj +++ b/Xbim.Geometry.Engine.Interop/Xbim.Geometry.Engine.Interop.csproj @@ -26,8 +26,8 @@ - - + + diff --git a/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs b/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs index b7077648e..ce5d5dc17 100644 --- a/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs +++ b/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs @@ -837,8 +837,18 @@ public IXbimGeometryObjectSet CreateSurfaceModel(IIfcPolygonalFaceSet shell, ILo } } - - } + public void WriteBrep(string filename, IXbimGeometryObject geomObj) + { + // no logger is provided so no tracing is started for this function + _engine.WriteBrep(filename, geomObj); + } + + public IXbimGeometryObject ReadBrep(string filename) + { + // no logger is provided so no tracing is started for this function + return _engine.ReadBrep(filename); + } + } public static class LogHelper { diff --git a/Xbim.Geometry.Engine/XbimGeometryCreator.cpp b/Xbim.Geometry.Engine/XbimGeometryCreator.cpp index a1f85f999..7ab10ccb6 100644 --- a/Xbim.Geometry.Engine/XbimGeometryCreator.cpp +++ b/Xbim.Geometry.Engine/XbimGeometryCreator.cpp @@ -99,6 +99,20 @@ namespace Xbim } } + void XbimGeometryCreator::WriteBrep(String^ filename, IXbimGeometryObject^ geomObj) + { + throw gcnew System::NotImplementedException(); + // TODO: This is stubbed out until we merge the implementation from unpushed code. + // temp fix for broken build + } + + IXbimGeometryObject^ XbimGeometryCreator::ReadBrep(String^ filename) + { + throw gcnew System::NotImplementedException(); + // TODO: This is stubbed out until we merge the implementation from unpushed code. + // temp fix for broken build + } + void XbimGeometryCreator::LogError(ILogger^ logger, Object^ entity, String^ format, ...array^ arg) { String^ msg = String::Format(format, arg); diff --git a/Xbim.Geometry.Engine/XbimGeometryCreator.h b/Xbim.Geometry.Engine/XbimGeometryCreator.h index 729a7d665..a0de1ba3a 100644 --- a/Xbim.Geometry.Engine/XbimGeometryCreator.h +++ b/Xbim.Geometry.Engine/XbimGeometryCreator.h @@ -81,6 +81,9 @@ namespace Xbim static void LogError(ILogger^ logger, Object^ entity, String^ format, ... array^ arg); static void LogDebug(ILogger^ logger, Object^ entity, String^ format, ... array^ arg); + virtual void WriteBrep(String^ filename, IXbimGeometryObject^ geomObj); + virtual IXbimGeometryObject^ ReadBrep(String^ filename); + static int BooleanTimeOut; static double FuzzyFactor; static double LinearDeflectionInMM; diff --git a/Xbim.Geometry.Regression/XbimRegression.csproj b/Xbim.Geometry.Regression/XbimRegression.csproj index a11b8e592..6ae20c4b2 100644 --- a/Xbim.Geometry.Regression/XbimRegression.csproj +++ b/Xbim.Geometry.Regression/XbimRegression.csproj @@ -15,8 +15,8 @@ - - + + diff --git a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj index 635b3ea8b..fa05b33ff 100644 --- a/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj +++ b/Xbim.ModelGeometry.Scene/Xbim.ModelGeometry.Scene.csproj @@ -18,8 +18,8 @@ - - + + From c1ba561e017c62e45ca6a95ffb8cadc6a4072309 Mon Sep 17 00:00:00 2001 From: Claudio Benghi Date: Wed, 3 Mar 2021 12:40:17 +0100 Subject: [PATCH 17/21] Added regression commands for debugging. --- Xbim.Geometry.Regression/BatchProcessor.cs | 81 +++++++++++++++++++++- Xbim.Geometry.Regression/Params.cs | 16 ++--- Xbim.Geometry.Regression/Program.cs | 2 +- 3 files changed, 84 insertions(+), 15 deletions(-) diff --git a/Xbim.Geometry.Regression/BatchProcessor.cs b/Xbim.Geometry.Regression/BatchProcessor.cs index e97935dde..a2891a0dc 100644 --- a/Xbim.Geometry.Regression/BatchProcessor.cs +++ b/Xbim.Geometry.Regression/BatchProcessor.cs @@ -6,6 +6,7 @@ using System.IO; using System.Linq; using Xbim.Common; +using Xbim.Geometry.Engine.Interop; using Xbim.Ifc; using Xbim.Ifc4.Interfaces; using Xbim.IO.Memory; @@ -121,7 +122,6 @@ private ProcessResult ProcessFile(string ifcFile, StreamWriter writer, ILogger(); + + var exportBrepByType = new string[] + { + "IfcFacetedBrep", + // IIfcGeometricRepresentationItem + "IfcCsgSolid", + "IfcExtrudedAreaSolid", + "IfcExtrudedAreaSolidTapered", + "IfcFixedReferenceSweptAreaSolid", + "IfcRevolvedAreaSolid", + "IfcRevolvedAreaSolidTapered", + "IfcSurfaceCurveSweptAreaSolid", + "IfcSectionedSolidHorizontal", + "IfcSweptDiskSolid", + "IfcSweptDiskSolidPolygonal", + "IfcBooleanResult", + "IfcBooleanClippingResult", + // composing objects + "IfcConnectedFaceSet" + }; + + // ADD Individual entities to extract brep here + // ents.Add(s.Instances[69512]); + + foreach (var type in exportBrepByType) + { + ents.AddRange(s.Instances.OfType(type, false)); + } + foreach (var ent in ents) + { + try + { + Xbim.Common.Geometry.IXbimGeometryObject created = null; + if (ent is IIfcGeometricRepresentationItem igri) + created = engine.Create(igri); + if (ent is IIfcConnectedFaceSet icfs) + created = engine.CreateShell(icfs); + // IIfcConnectedFaceSet + if (created != null) + { + var brep = engine.ToBrep(created); + var brepFileName = Path.Combine(path, $"{ent.EntityLabel}.{ent.GetType().Name}.brep"); + using (var tw = File.CreateText(brepFileName)) + { + tw.WriteLine("DBRep_DrawableShape"); + tw.WriteLine(brep); + } + } + } + catch (Exception ex) + { + Console.WriteLine($"Error writing brep {ent.EntityLabel}: {ex.Message}"); + } + } + } + } + if (_params.Caching) { IfcStore s = ((IfcStore)model); - s.SaveAs(xbimFilename, Xbim.IO.StorageType.Xbim); - s.Close(); + if (s != null) + { + s.SaveAs(xbimFilename, Xbim.IO.StorageType.Xbim); + s.Close(); + } } } } diff --git a/Xbim.Geometry.Regression/Params.cs b/Xbim.Geometry.Regression/Params.cs index 4c8bc3f5f..82fd04d22 100644 --- a/Xbim.Geometry.Regression/Params.cs +++ b/Xbim.Geometry.Regression/Params.cs @@ -11,15 +11,13 @@ namespace XbimRegression /// public class Params { - public int MaxThreads; private const int DefaultTimeout = 1000 * 60 * 20; // 20 mins public bool Caching; + public bool WriteBreps = false; public bool GeometryV1; - - public Params(string[] args) { if (args.Length < 1) @@ -38,7 +36,6 @@ public Params(string[] args) } Timeout = DefaultTimeout; - CompoundParameter paramType = CompoundParameter.None; foreach (string arg in args.Skip(1)) @@ -51,6 +48,9 @@ public Params(string[] args) case "/singlethread": MaxThreads = 1; break; + case "/writebreps": + WriteBreps = true; + break; case "/timeout": paramType = CompoundParameter.Timeout; break; @@ -68,7 +68,6 @@ public Params(string[] args) break; } break; - case CompoundParameter.Timeout: int timeout; if (int.TryParse(arg, out timeout)) @@ -86,16 +85,13 @@ public Params(string[] args) paramType = CompoundParameter.None; break; } - } - IsValid = true; - } private static void WriteSyntax() { - Console.WriteLine("Syntax: XbimRegression [/timeout ]"); + Console.WriteLine("Syntax: XbimRegression [/timeout ] [/maxthreads ] [/singlethread] /writebreps"); } /// @@ -122,6 +118,4 @@ private enum CompoundParameter CachingOn }; } - - } diff --git a/Xbim.Geometry.Regression/Program.cs b/Xbim.Geometry.Regression/Program.cs index 337c20f85..f6fb61207 100644 --- a/Xbim.Geometry.Regression/Program.cs +++ b/Xbim.Geometry.Regression/Program.cs @@ -9,7 +9,7 @@ private static void Main(string[] args) // ContextTesting is a class that has been temporarily created to test multiple files // ContextTesting.Run(); // return; - // IfcStore.ModelProviderFactory.UseHeuristicModelProvider(); + IfcStore.ModelProviderFactory.UseHeuristicModelProvider(); var arguments = new Params(args); if (!arguments.IsValid) return; From 6e0f71994b89878e2e88784cd8a4661765bcf72c Mon Sep 17 00:00:00 2001 From: Dmytro Kravchyna Date: Mon, 29 Mar 2021 17:44:39 +0300 Subject: [PATCH 18/21] Fixed merge issues --- .../XbimCustomAssemblyResolver.cs | 2 +- .../XbimGeometryEngine.cs | 3 - Xbim.Geometry.Regression/BatchProcessor.cs | 13 ++-- .../Xbim3DModelContext.cs | 64 ------------------- Xbim.ModelGeometry.Scene/XbimEnvironment.cs | 45 ------------- 5 files changed, 6 insertions(+), 121 deletions(-) diff --git a/Xbim.Geometry.Engine.Interop/XbimCustomAssemblyResolver.cs b/Xbim.Geometry.Engine.Interop/XbimCustomAssemblyResolver.cs index 50480c70c..261e2a341 100644 --- a/Xbim.Geometry.Engine.Interop/XbimCustomAssemblyResolver.cs +++ b/Xbim.Geometry.Engine.Interop/XbimCustomAssemblyResolver.cs @@ -40,7 +40,7 @@ private static Assembly ProbeForAssembly(string moduleName) { _logger.LogDebug("Getting probing path from executing assembly"); Assembly assembly = Assembly.GetExecutingAssembly(); // The Xbim.Geometry.Engine.Interop assembly - // code base always points to the deployed DLL, which may be different to the executing Location because of Shadow Copying in the AppDomain (e.g. ASP.NET) + // Location always points to the deployed DLL, which may be different to the executing Location because of Shadow Copying in the AppDomain (e.g. ASP.NET) var codepath = new Uri(assembly.Location); // Unlike Assembly.Location, CodeBase is a URI [file:\\c:\wwwroot\etc\WebApp\bin\Xbim.Geometry.Engine.Interop.dll] appDir = Path.GetDirectoryName(codepath.LocalPath); diff --git a/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs b/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs index 9d3679809..7f0ec85cd 100644 --- a/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs +++ b/Xbim.Geometry.Engine.Interop/XbimGeometryEngine.cs @@ -34,9 +34,6 @@ public XbimGeometryEngine(ILogger logger) { _logger = logger ?? XbimLogging.CreateLogger(); - // Warn if runtime for Engine is not present, this is not necessary any more as we are net47 - //XbimPrerequisitesValidator.Validate(); - #if DELAY_LOAD var conventions = new XbimArchitectureConventions(); // understands the process we run under diff --git a/Xbim.Geometry.Regression/BatchProcessor.cs b/Xbim.Geometry.Regression/BatchProcessor.cs index 615d09ef8..2a3dd32ba 100644 --- a/Xbim.Geometry.Regression/BatchProcessor.cs +++ b/Xbim.Geometry.Regression/BatchProcessor.cs @@ -188,8 +188,8 @@ private ProcessResult ProcessFile(string ifcFile, StreamWriter writer, ILogger wrappedAction = () => - // { - // threadToKill = Thread.CurrentThread; - // try - // { - // return Engine.Create(shape, logger); - // } - // catch (ThreadAbortException) - // { - // _logger.LogWarning("Thread aborted due to timeout"); - // Thread.ResetAbort();// cancel hard aborting, lets to finish it nicely. - // return null; - // } - - // }; - - // IAsyncResult result = wrappedAction.BeginInvoke(null, null); - // if (result.AsyncWaitHandle.WaitOne(booleanTimeOutMilliSeconds)) - // { - // var res = wrappedAction.EndInvoke(result); - // result.AsyncWaitHandle.Close(); - // return res; - // } - // else - // { - // threadToKill?.Abort(); - // throw new TimeoutException(); - // } - //} - //private IXbimGeometryObjectSet CutWithTimeOut(IXbimGeometryObjectSet elementGeom, IXbimSolidSet cutGeometries, double precision, int booleanTimeOutMilliSeconds) - //{ - // Thread threadToKill = null; - // Func wrappedAction = () => - // { - // try - // { - // threadToKill = Thread.CurrentThread; - // return elementGeom.Cut(cutGeometries, precision); - // } - // catch (ThreadAbortException) - // { - // _logger.LogWarning("Thread aborted due to timeout"); - // Thread.ResetAbort();// cancel hard aborting, lets to finish it nicely. - // return null; - // } - // }; - - // IAsyncResult result = wrappedAction.BeginInvoke(null, null); - // if (result.AsyncWaitHandle.WaitOne(booleanTimeOutMilliSeconds)) - // { - // var res = wrappedAction.EndInvoke(result); - // result.AsyncWaitHandle.Close(); - // return res; - // } - // else - // { - // threadToKill?.Abort(); - // throw new TimeoutException(); - // } - //} - private void WriteRegionsToStore(IIfcRepresentationContext context, IEnumerable elementsToCluster, IGeometryStoreInitialiser txn, XbimMatrix3D WorldCoordinateSystem) { //set up a world to partition the model diff --git a/Xbim.ModelGeometry.Scene/XbimEnvironment.cs b/Xbim.ModelGeometry.Scene/XbimEnvironment.cs index ac21bed75..27e76021d 100644 --- a/Xbim.ModelGeometry.Scene/XbimEnvironment.cs +++ b/Xbim.ModelGeometry.Scene/XbimEnvironment.cs @@ -8,23 +8,6 @@ namespace Xbim.ModelGeometry { public static class XbimEnvironment { - ///// - ///// Tests if the requierd VC++ redist platform is installed for the current execution environment. - ///// - ///// true if installed - //public static bool RedistInstalled(bool? overrideUse64Bit = null) - //{ - // var use64 = Is64BitProcess(); - // if (overrideUse64Bit.HasValue) - // use64 = overrideUse64Bit.Value; - - // var substring = use64 - // ? "x64" - // : "x86"; - - // return InstalledRuntimes().Any(x => x.Contains(substring)); - //} - /// /// Suggests the relevant download URL for the required C++ redistributable setup. /// @@ -39,34 +22,6 @@ public static string RedistDownloadPath() : @"https://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x86.exe"; } - - //public static IEnumerable InstalledRuntimes() - //{ - // var t2 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default); - // var t3 = t2.OpenSubKey(@"SOFTWARE\Classes\Installer\Dependencies"); - // if (t3 == null) - // yield break; - - // foreach (var subKeyName in t3.GetSubKeyNames()) - // { - // var t4 = t3.OpenSubKey(subKeyName); - // // ReSharper disable once UseNullPropagation - // if (t4 == null) - // continue; - // var t5 = t4.GetValue(@"DisplayName"); - // // ReSharper disable once UseNullPropagation - // if (t5 == null) - // continue; - // var s = t5 as string; - // if (s == null) - // continue; - // if (s.Contains(@"Microsoft Visual C++ 2013 Redistributable")) - // { - // yield return s; - // } - // } - //} - /// /// The function used by the underlying interop library to determin what C++ assembly to load. /// From ec8602943384548be73d8d6bb0d0d79f21ba8fc9 Mon Sep 17 00:00:00 2001 From: Dmytro Kravchyna Date: Wed, 7 Apr 2021 16:52:56 +0300 Subject: [PATCH 19/21] Fixed null ref errors --- Xbim.Geometry.Engine/XbimFace.cpp | 57 +++++++++----------- Xbim.Geometry.Engine/XbimGeometryCreator.cpp | 5 ++ Xbim.Geometry.Engine/XbimSolid.cpp | 4 +- Xbim.Geometry.Engine/XbimWire.cpp | 35 ++++++------ 4 files changed, 51 insertions(+), 50 deletions(-) diff --git a/Xbim.Geometry.Engine/XbimFace.cpp b/Xbim.Geometry.Engine/XbimFace.cpp index 3594691ca..b5321ffac 100644 --- a/Xbim.Geometry.Engine/XbimFace.cpp +++ b/Xbim.Geometry.Engine/XbimFace.cpp @@ -1780,38 +1780,33 @@ namespace Xbim //trim 1 and trim 2 will be cartesian points IIfcCartesianPoint^ trim1 = dynamic_cast(Enumerable::FirstOrDefault(tc->Trim1)); IIfcCartesianPoint^ trim2 = dynamic_cast(Enumerable::FirstOrDefault(tc->Trim2)); - gp_Pnt p1 = XbimConvert::GetPoint3d(trim1); - gp_Pnt p2 = XbimConvert::GetPoint3d(trim2); - //there are two solutions A, B - //calc solution A - double radsq = circle->Radius * circle->Radius; - double qX = System::Math::Sqrt(((p2.X() - p1.X()) * (p2.X() - p1.X())) + ((p2.Y() - p1.Y()) * (p2.Y() - p1.Y()))); - double x3 = (p1.X() + p2.X()) / 2; - double centreX = x3 - System::Math::Sqrt(radsq - ((qX / 2) * (qX / 2))) * ((p1.Y() - p2.Y()) / qX); - - double qY = System::Math::Sqrt(((p2.X() - p1.X()) * (p2.X() - p1.X())) + ((p2.Y() - p1.Y()) * (p2.Y() - p1.Y()))); - - double y3 = (p1.Y() + p2.Y()) / 2; - - double centreY = y3 - System::Math::Sqrt(radsq - ((qY / 2) * (qY / 2))) * ((p2.X() - p1.X()) / qY); - - - - ITransaction^ txn = sLin->Model->BeginTransaction("Fix Centre"); - - - IIfcPlacement^ p = dynamic_cast(circle->Position); - - p->Location->Coordinates[0] = centreX; - p->Location->Coordinates[1] = centreY; - p->Location->Coordinates[2] = 0; - - xbasisEdge1 = gcnew XbimEdge(sLin->SweptCurve, logger); - txn->RollBack(); - isFixed = true; + if (trim1 != nullptr && trim2 != nullptr) + { + gp_Pnt p1 = XbimConvert::GetPoint3d(trim1); + gp_Pnt p2 = XbimConvert::GetPoint3d(trim2); + //there are two solutions A, B + //calc solution A + double radsq = circle->Radius * circle->Radius; + double qX = System::Math::Sqrt(((p2.X() - p1.X()) * (p2.X() - p1.X())) + ((p2.Y() - p1.Y()) * (p2.Y() - p1.Y()))); + double x3 = (p1.X() + p2.X()) / 2; + double centreX = x3 - System::Math::Sqrt(radsq - ((qX / 2) * (qX / 2))) * ((p1.Y() - p2.Y()) / qX); + + double qY = System::Math::Sqrt(((p2.X() - p1.X()) * (p2.X() - p1.X())) + ((p2.Y() - p1.Y()) * (p2.Y() - p1.Y()))); + double y3 = (p1.Y() + p2.Y()) / 2; + double centreY = y3 - System::Math::Sqrt(radsq - ((qY / 2) * (qY / 2))) * ((p2.X() - p1.X()) / qY); + + ITransaction^ txn = sLin->Model->BeginTransaction("Fix Centre"); + + IIfcPlacement^ p = dynamic_cast(circle->Position); + p->Location->Coordinates[0] = centreX; + p->Location->Coordinates[1] = centreY; + p->Location->Coordinates[2] = 0; + + xbasisEdge1 = gcnew XbimEdge(sLin->SweptCurve, logger); + txn->RollBack(); + isFixed = true; + } } - - } if (!isFixed) //just build it xbasisEdge1 = gcnew XbimEdge(sLin->SweptCurve, logger); diff --git a/Xbim.Geometry.Engine/XbimGeometryCreator.cpp b/Xbim.Geometry.Engine/XbimGeometryCreator.cpp index 2442bb9ec..5394bc057 100644 --- a/Xbim.Geometry.Engine/XbimGeometryCreator.cpp +++ b/Xbim.Geometry.Engine/XbimGeometryCreator.cpp @@ -301,6 +301,11 @@ namespace Xbim LogError(logger, geomRep, "Error creating geometry #{2} representation of type {0}, {1}", geomRep->GetType()->Name, err, geomRep->EntityLabel); return XbimGeometryObjectSet::Empty; } + catch (System::Exception^ exc) + { + LogError(logger, geomRep, "Error creating geometry #{2} representation of type {0}, {1}", geomRep->GetType()->Name, exc, geomRep->EntityLabel); + return XbimGeometryObjectSet::Empty; + } //catch () catch (...) { diff --git a/Xbim.Geometry.Engine/XbimSolid.cpp b/Xbim.Geometry.Engine/XbimSolid.cpp index 422f30523..ea1712fa2 100644 --- a/Xbim.Geometry.Engine/XbimSolid.cpp +++ b/Xbim.Geometry.Engine/XbimSolid.cpp @@ -1307,9 +1307,9 @@ namespace Xbim { //BRepTools::Write(revol.Shape(), "d:\\tmp\\rev"); pSolid = new TopoDS_Solid(); + *pSolid = TopoDS::Solid(revol.Shape()); if (repItem->Position != nullptr) - *pSolid = TopoDS::Solid(revol.Shape()); - pSolid->Move(XbimConvert::ToLocation(repItem->Position)); + pSolid->Move(XbimConvert::ToLocation(repItem->Position)); ShapeFix_ShapeTolerance tolFixer; tolFixer.LimitTolerance(*pSolid, repItem->Model->ModelFactors->Precision); } diff --git a/Xbim.Geometry.Engine/XbimWire.cpp b/Xbim.Geometry.Engine/XbimWire.cpp index 35c45dc29..5bcc9003f 100644 --- a/Xbim.Geometry.Engine/XbimWire.cpp +++ b/Xbim.Geometry.Engine/XbimWire.cpp @@ -236,27 +236,28 @@ namespace Xbim pWire = new TopoDS_Wire(); if (profile->ProfileType == IfcProfileTypeEnum::AREA && !loop->IsClosed) //need to make sure it is not self intersecting and it is closed area { - // todo: this code is not quite robust, it did not manage to close fairly simple polylines. try { - - double oneMilli = profile->Model->ModelFactors->OneMilliMeter; - TopoDS_Face face = gcnew XbimFace(loop, true, oneMilli, profile->OuterCurve->EntityLabel, logger); - ShapeFix_Wire wireFixer(loop, face, profile->Model->ModelFactors->Precision); - wireFixer.ClosedWireMode() = Standard_True; - wireFixer.FixGaps2dMode() = Standard_True; - wireFixer.FixGaps3dMode() = Standard_True; - wireFixer.ModifyGeometryMode() = Standard_True; - wireFixer.SetMinTolerance(profile->Model->ModelFactors->Precision); - wireFixer.SetPrecision(oneMilli); - wireFixer.SetMaxTolerance(oneMilli * 10); - Standard_Boolean closed = wireFixer.Perform(); - if (closed) - *pWire = wireFixer.Wire(); - else - *pWire = loop; + XbimFace^ xbimFace = gcnew XbimFace(loop, true, oneMilli, profile->OuterCurve->EntityLabel, logger); + if (xbimFace->IsValid) + { + TopoDS_Face face = xbimFace; + ShapeFix_Wire wireFixer(loop, face, profile->Model->ModelFactors->Precision); + wireFixer.ClosedWireMode() = Standard_True; + wireFixer.FixGaps2dMode() = Standard_True; + wireFixer.FixGaps3dMode() = Standard_True; + wireFixer.ModifyGeometryMode() = Standard_True; + wireFixer.SetMinTolerance(profile->Model->ModelFactors->Precision); + wireFixer.SetPrecision(oneMilli); + wireFixer.SetMaxTolerance(oneMilli * 10); + Standard_Boolean closed = wireFixer.Perform(); + if (closed) + *pWire = wireFixer.Wire(); + else + *pWire = loop; + } } catch (Standard_Failure sf) { From 815a1af2e5a4e13630714303eb41a0c29bcf09e3 Mon Sep 17 00:00:00 2001 From: Dmytro Kravchyna Date: Wed, 7 Apr 2021 16:53:42 +0300 Subject: [PATCH 20/21] Fixed file hang issues --- .../OCC/src/BRepTools/BRepTools_WireExplorer.cxx | 3 +++ .../OCC/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Xbim.Geometry.Engine/OCC/src/BRepTools/BRepTools_WireExplorer.cxx b/Xbim.Geometry.Engine/OCC/src/BRepTools/BRepTools_WireExplorer.cxx index 1fe412abe..263f8dfa7 100644 --- a/Xbim.Geometry.Engine/OCC/src/BRepTools/BRepTools_WireExplorer.cxx +++ b/Xbim.Geometry.Engine/OCC/src/BRepTools/BRepTools_WireExplorer.cxx @@ -751,6 +751,9 @@ Standard_Real GetNextParamOnPC(const Handle(Geom2d_Curve)& aPC, { Standard_Real result = ( reverse ) ? fP : lP; Standard_Real dP = Abs( lP - fP ) / 1000.; // was / 16.; + // Ensure incrememt is large enough to effect startPar + Standard_Real resolution = Abs(fP / Pow(2, 52)); + dP = Max(dP, resolution); if( reverse ) { Standard_Real startPar = fP; diff --git a/Xbim.Geometry.Engine/OCC/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx b/Xbim.Geometry.Engine/OCC/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx index 010386c99..613ac1443 100644 --- a/Xbim.Geometry.Engine/OCC/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx +++ b/Xbim.Geometry.Engine/OCC/src/ShapeUpgrade/ShapeUpgrade_UnifySameDomain.cxx @@ -315,10 +315,12 @@ static void RelocatePCurvesToNewUorigin(const TopTools_SequenceOfShape& theEdges for (;;) //collect pcurves of a contour { RemoveEdgeFromMap(CurEdge, theVEmap); - theUsedEdges.Add(CurEdge); + Standard_Boolean notUsed = theUsedEdges.Add(CurEdge); + if (!notUsed) + break; TopoDS_Vertex CurVertex = (anOr == TopAbs_FORWARD)? TopExp::LastVertex(CurEdge, Standard_True) : TopExp::FirstVertex(CurEdge, Standard_True); - + const TopTools_ListOfShape& Elist = theVEmap.FindFromKey(CurVertex); if (Elist.IsEmpty()) break; //end of contour in 3d From 9081cb61169fbe2bd982c283f70afbadd56980d8 Mon Sep 17 00:00:00 2001 From: dmk-rib <78206446+dmk-rib@users.noreply.github.com> Date: Thu, 15 Apr 2021 16:34:39 +0300 Subject: [PATCH 21/21] Update XbimSolidSet.cpp --- Xbim.Geometry.Engine/XbimSolidSet.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Xbim.Geometry.Engine/XbimSolidSet.cpp b/Xbim.Geometry.Engine/XbimSolidSet.cpp index 165bc0e4f..4cdc48ea1 100644 --- a/Xbim.Geometry.Engine/XbimSolidSet.cpp +++ b/Xbim.Geometry.Engine/XbimSolidSet.cpp @@ -1055,7 +1055,9 @@ namespace Xbim if (dynamic_cast(bOp) && bOp->GetType()->Name->Contains("IfcHalfSpaceSolid") || dynamic_cast(bOp) && bOp->GetType()->Name->Contains("IfcPolygonalBoundedHalfSpace")) { - bodySet = (XbimSolidSet^)bodySet->Cut(s, mf->Precision, logger); + XbimSolidSet^ bodySetCut = (XbimSolidSet^)bodySet->Cut(s, mf->Precision, logger); + if (bodySetCut->IsValid) + bodySet = bodySetCut; } else solidSet->Add(s);