Skip to content

Commit

Permalink
Added atest to check Hypar -> IFC -> Hypar conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
srudenkoamc committed Nov 30, 2023
1 parent 7ac4986 commit 1b5b025
Showing 1 changed file with 66 additions and 0 deletions.
66 changes: 66 additions & 0 deletions Elements.Serialization.IFC/test/IFCTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using Elements.Geometry.Profiles;
using System.Linq;
using System.Xml.Linq;
using IFC;

namespace Elements.IFC.Tests
{
Expand Down Expand Up @@ -84,6 +85,71 @@ int expectedCountOfErrors
model.ToGlTF(ConstructGlbPath(name));
}

[Fact]
public void HyparIFCHyparTest()
{
string name = "HyparToIFCAndBack";
var model = new Model();

var door = new Door(clearWidth: 1.0,
clearHeight: 2.0,
thickness: Door.DEFAULT_DOOR_THICKNESS,
openingSide: DoorOpeningSide.LeftHand,
openingType: DoorOpeningType.SingleSwing,
transform: new Transform(0.2, 0.3, 0.4),
material: BuiltInMaterials.Glass,
name: "ExcellentDoor");

var beam = new Beam(new Line((0.2, 0.3, 0.4), (0.5, 0.6, 0.7)), _profileFactory.GetProfileByType(WideFlangeProfileType.W10x12), new Transform(5.2, 5.3, 5.4));
var column = new Column((10.2, 10.3, 10.4), 7.3, null, _profileFactory.GetProfileByType(WideFlangeProfileType.W10x12), new Transform(10.2, 10.3, 10.4));
var floor = new Floor(_profileFactory.GetProfileByType(WideFlangeProfileType.W10x12), 0.5, new Transform(15.2, 15.3, 15.4));
var wall = new Wall(_profileFactory.GetProfileByType(WideFlangeProfileType.W10x12), 2.0, transform: new Transform(20.2, 20.3, 20.4));

model.AddElement(door);
model.AddElement(beam);
model.AddElement(column);
model.AddElement(floor);
model.AddElement(wall);

string ifcPath = ConstructIfcPath(name);
model.ToIFC(ifcPath);

var convertedBackModel = IFCModelExtensions.FromIFC(ifcPath, out var ctorErrors);
var convertedBackDoor = convertedBackModel.GetElementOfType<Door>(door.Id);
var convertedBackBeam = convertedBackModel.GetElementOfType<Beam>(beam.Id);
var convertedBackColumn = convertedBackModel.GetElementOfType<Column>(column.Id);
var convertedBackFloor = convertedBackModel.GetElementOfType<Floor>(floor.Id);
var convertedBackWall = convertedBackModel.GetElementOfType<Wall>(wall.Id);

Assert.Empty(ctorErrors);

Assert.NotNull(convertedBackDoor);
Assert.Equal(door.DoorWidth, convertedBackDoor.DoorWidth);
Assert.Equal(door.DoorThickness, convertedBackDoor.DoorThickness);
Assert.Equal(door.DoorHeight, convertedBackDoor.DoorHeight);
Assert.Equal(door.Transform, convertedBackDoor.Transform);

Assert.NotNull(convertedBackBeam);
Assert.Equal(beam.Curve, convertedBackBeam.Curve);
Assert.Equal(beam.Profile, convertedBackBeam.Profile);
Assert.Equal(beam.Transform, convertedBackBeam.Transform);

Assert.NotNull(convertedBackColumn);
Assert.Equal(column.Location, convertedBackColumn.Location);
Assert.Equal(column.Profile, convertedBackColumn.Profile);
Assert.Equal(column.Transform, convertedBackColumn.Transform);

Assert.NotNull(convertedBackFloor);
Assert.Equal(floor.Thickness, convertedBackFloor.Thickness);
Assert.Equal(floor.Profile, convertedBackFloor.Profile);
Assert.Equal(floor.Transform, convertedBackFloor.Transform);

Assert.NotNull(convertedBackWall);
Assert.Equal(wall.Height, convertedBackWall.Height);
Assert.Equal(wall.Profile, convertedBackWall.Profile);
Assert.Equal(wall.Transform, convertedBackWall.Transform);
}

[Theory(Skip = "IFC2X3")]
[InlineData("example_1", "../../../models/IFC2X3/example_1.ifc")]
// TODO: Reenable when IfcCompositeCurve is supported.
Expand Down

0 comments on commit 1b5b025

Please sign in to comment.