public void EscapeHeaderTests() { const string path = @"x:\path1\path2\filename.ifc"; const string umlaut = "name with umlaut ü"; using (var model = Ifc2x3.IO.XbimModel.CreateTemporaryModel()) { model.Initialise("Creating Author", " Creating Organisation", "This Application", "This Developer", "v1.1"); using (var txn = model.BeginTransaction()) { model.IfcProject.Name = "Project Name"; txn.Commit(); } model.Header.FileName.Name = path; model.Header.FileName.Organization.Add(umlaut); model.SaveAs("testOutput.ifc"); } using (var model = new Ifc2x3.IO.XbimModel()) { model.CreateFrom("testOutput.ifc", null, null, true); Assert.IsTrue(model.Header.FileName.Name == path); Assert.IsTrue(model.Header.FileName.Organization.FirstOrDefault() == umlaut); model.Close(); } }
public void ExtractIfcGeometryEntitiesTest() { using (var source = new Ifc2x3.IO.XbimModel()) { PropertyTranformDelegate propTransform = delegate(ExpressMetaProperty prop, object toCopy) { if (toCopy is IfcProduct) { if (prop.PropertyInfo.Name == "ObjectPlacement" || prop.PropertyInfo.Name == "Representation") { return(null); } } if (toCopy is IfcTypeProduct) { if (prop.PropertyInfo.Name == "RepresentationMaps") { return(null); } } return(prop.PropertyInfo.GetValue(toCopy, null));//just pass through the value }; //source.LoadStep21("BIM Logo-LetterM.xBIM"); //source.SaveAs("WithGeometry.ifc"); var modelName = @"4walls1floorSite"; var xbimModelName = Path.ChangeExtension(modelName, "xbim"); source.CreateFrom(Path.ChangeExtension(modelName, "ifc"), null, null, true); using (var target = Ifc2x3.IO.XbimModel.CreateModel(Path.ChangeExtension(modelName + "_NoGeom", "xbim"))) { target.AutoAddOwnerHistory = false; using (var txn = target.BeginTransaction()) { var copied = new XbimInstanceHandleMap(source, target); foreach (var item in source.Instances.OfType <IfcRoot>()) { target.InsertCopy(item, copied, txn, propTransform, false); } txn.Commit(); } target.SaveAs(Path.ChangeExtension(modelName + "_NoGeom", "ifc")); target.Close(); } source.Close(); // XbimModel.Compact(Path.ChangeExtension(modelName + "_NoGeom", "xbim"), Path.ChangeExtension(modelName + "_NoGeom_Compacted", "xbim")); //the two files should be the same } }
public void CopyAllEntitiesTest() { var sourceFile = "source.ifc"; var copyFile = "copy.ifc"; using (var source = new Ifc2x3.IO.XbimModel()) { PropertyTranformDelegate propTransform = delegate(ExpressMetaProperty prop, object toCopy) { var value = prop.PropertyInfo.GetValue(toCopy, null); return(value); }; //source.CreateFrom(@"C:\Users\Steve\Downloads\Test Models\crash\NBS_LakesideRestaurant_EcoBuild2015_Revit2014_.ifc","source.xbim",null,true); //source.CreateFrom(@"C:\Users\Steve\Downloads\Test Models\Wall with complex openings.ifc", "source.xbim",null,true); source.Open("BIM Logo-LetterM.xBIM"); source.SaveAs(sourceFile); using (var target = Ifc2x3.IO.XbimModel.CreateTemporaryModel()) { target.AutoAddOwnerHistory = false; using (var txn = target.BeginTransaction()) { target.Header = source.Header; var copied = new XbimInstanceHandleMap(source, target); foreach (var item in source.Instances) { target.InsertCopy(item, copied, txn, propTransform, true); } txn.Commit(); } target.SaveAs(copyFile); } source.Close(); //the two files should be the same FileCompare(sourceFile, copyFile); } }