RemoveUnderlying property for primitives was added
This commit is contained in:
@@ -3,6 +3,11 @@ using NUnit.Framework;
|
||||
using System.Linq;
|
||||
using StructureHelperCommon.Models.Shapes;
|
||||
using StructureHelperLogics.NdmCalculations.Triangulations;
|
||||
using StructureHelperLogics.Models.Materials;
|
||||
using StructureHelperLogics.NdmCalculations.Primitives;
|
||||
using StructureHelperLogics.Services.NdmPrimitives;
|
||||
using StructureHelperCommon.Infrastructures.Enums;
|
||||
using LoaderCalculator.Logics.Geometry;
|
||||
|
||||
namespace StructureHelperTests.UnitTests.Ndms.Triangulations
|
||||
{
|
||||
@@ -34,5 +39,91 @@ namespace StructureHelperTests.UnitTests.Ndms.Triangulations
|
||||
Assert.AreEqual(expectedFirstCenterX, firstNdm.CenterX);
|
||||
Assert.AreEqual(expectedFirstCenterY, firstNdm.CenterY);
|
||||
}
|
||||
[TestCase(0d, 0d, 1.0d, 1.0d, true, 1d, 3020418448.8512335d, 3020418448.8512335d)]
|
||||
[TestCase(0d, 0d, 1.0d, 1.0d, false, 0.94d, 3013186843.9241991d, 3004124682.3615651d)]
|
||||
[TestCase(0.1d, 0.2d, 1.0d, 1.0d, true, 1d, 3020418448.8512335d, 3020418448.8512335d)]
|
||||
[TestCase(0.1d, 0.2d, 1.0d, 1.0d, false, 0.94d, 2920637108.8157182d, 2980987248.5842943d)]
|
||||
public void Run_Shouldpass_RectOpeningRect(double centerX, double centerY, double width, double height, bool triangOpening, double expectedArea, double expectedMomX, double expectedMomY)
|
||||
{
|
||||
//Arrange
|
||||
var material = HeadMaterialFactory.GetHeadMaterial(HeadmaterialType.Concrete40, CodeTypes.SP63_13330_2018);
|
||||
var mainBlock = new RectanglePrimitive() { CenterX = centerX, CenterY = centerY, Width = width, Height = height, HeadMaterial = material };
|
||||
mainBlock.VisualProperty.ZIndex = 0;
|
||||
var opening = new RectanglePrimitive()
|
||||
{ CenterX = 0d, CenterY = 0d, Width = 0.3d, Height = 0.2d,
|
||||
HeadMaterial = material, Triangulate = triangOpening,
|
||||
ClearUnderlying = true};
|
||||
opening.VisualProperty.ZIndex = 1;
|
||||
var primitives = new List<INdmPrimitive>() { mainBlock, opening };
|
||||
//Act
|
||||
var ndms = NdmPrimitivesService.GetNdms(primitives, LimitStates.ULS, CalcTerms.ShortTerm);
|
||||
//Assert
|
||||
var area = ndms.Sum(x => x.Area);
|
||||
var moments = GeometryOperations.GetMomentsOfInertiaMod(ndms);
|
||||
Assert.AreEqual(expectedArea, area, 0.001d);
|
||||
Assert.AreEqual(expectedMomX, moments.MomentX, 0.001d);
|
||||
Assert.AreEqual(expectedMomY, moments.MomentY, 1d);
|
||||
}
|
||||
[TestCase(0d, 0d, 1.0d, 1.0d, true, 1d, 3020017308.3574591d, 3020017308.3574591d)]
|
||||
[TestCase(0d, 0d, 1.0d, 1.0d, false, 0.92839999999991407d, 3005633713.5049105d, 3005633713.5049105d)]
|
||||
[TestCase(0.1d, 0.2d, 1.0d, 1.0d, true, 1d, 3018642205.1351919d, 3019673532.5518913d)]
|
||||
[TestCase(0.1d, 0.2d, 1.0d, 1.0d, false, 0.92839999999991407d, 2893811090.8611836d, 2977678057.8439965d)]
|
||||
public void Run_Shouldpass_RectOpeningCircle(double centerX, double centerY, double width, double height, bool triangOpening, double expectedArea, double expectedMomX, double expectedMomY)
|
||||
{
|
||||
//Arrange
|
||||
var material = HeadMaterialFactory.GetHeadMaterial(HeadmaterialType.Concrete40, CodeTypes.SP63_13330_2018);
|
||||
var mainBlock = new RectanglePrimitive() { CenterX = centerX, CenterY = centerY, Width = width, Height = height, HeadMaterial = material };
|
||||
mainBlock.VisualProperty.ZIndex = 0;
|
||||
var opening = new CirclePrimitive()
|
||||
{
|
||||
CenterX = 0d,
|
||||
CenterY = 0d,
|
||||
Diameter = 0.3d,
|
||||
HeadMaterial = material,
|
||||
Triangulate = triangOpening,
|
||||
ClearUnderlying = true
|
||||
};
|
||||
opening.VisualProperty.ZIndex = 1;
|
||||
var primitives = new List<INdmPrimitive>() { mainBlock, opening };
|
||||
//Act
|
||||
var ndms = NdmPrimitivesService.GetNdms(primitives, LimitStates.ULS, CalcTerms.ShortTerm);
|
||||
//Assert
|
||||
var area = ndms.Sum(x => x.Area);
|
||||
var moments = GeometryOperations.GetMomentsOfInertiaMod(ndms);
|
||||
Assert.AreEqual(expectedArea, area, 0.001d);
|
||||
Assert.AreEqual(expectedMomX, moments.MomentX, 0.001d);
|
||||
Assert.AreEqual(expectedMomY, moments.MomentY, 1d);
|
||||
}
|
||||
[TestCase(0d, 0d, 1.0d, true, 0.78079430967489682d, 1777730450.3666615d, 1776732530.5957441d)]
|
||||
[TestCase(0d, 0d, 1.0d, false, 0.72079430967490343d, 1770498845.4396176d, 1760438764.1059904d)]
|
||||
[TestCase(0.1d, 0.2d, 1.0d, true, 0.78386909642355929d, 1772956158.4523892d, 1777255335.2898147d)]
|
||||
[TestCase(0.1d, 0.2d, 1.0d, false, 0.72386909642356589d, 1670848320.3763092d, 1737334754.3254938d)]
|
||||
public void Run_Shouldpass_CircleOpeningRect(double centerX, double centerY, double diameter, bool triangOpening, double expectedArea, double expectedMomX, double expectedMomY)
|
||||
{
|
||||
//Arrange
|
||||
var material = HeadMaterialFactory.GetHeadMaterial(HeadmaterialType.Concrete40, CodeTypes.SP63_13330_2018);
|
||||
var mainBlock = new CirclePrimitive() { CenterX = centerX, CenterY = centerY, Diameter = diameter, HeadMaterial = material };
|
||||
mainBlock.VisualProperty.ZIndex = 0;
|
||||
var opening = new RectanglePrimitive()
|
||||
{
|
||||
CenterX = 0d,
|
||||
CenterY = 0d,
|
||||
Width = 0.3d,
|
||||
Height = 0.2d,
|
||||
HeadMaterial = material,
|
||||
Triangulate = triangOpening,
|
||||
ClearUnderlying = true
|
||||
};
|
||||
opening.VisualProperty.ZIndex = 1;
|
||||
var primitives = new List<INdmPrimitive>() { mainBlock, opening };
|
||||
//Act
|
||||
var ndms = NdmPrimitivesService.GetNdms(primitives, LimitStates.ULS, CalcTerms.ShortTerm);
|
||||
//Assert
|
||||
var area = ndms.Sum(x => x.Area);
|
||||
var moments = GeometryOperations.GetMomentsOfInertiaMod(ndms);
|
||||
Assert.AreEqual(expectedArea, area, 0.001d);
|
||||
Assert.AreEqual(expectedMomX, moments.MomentX, 0.001d);
|
||||
Assert.AreEqual(expectedMomY, moments.MomentY, 1d);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user