private static string CreateJsonBIM(XbimModel model, string fileName) { try { var cobieFileName = Path.ChangeExtension(fileName, "json");//"semantics.json"; using (var cobieFile = new FileStream(cobieFileName, FileMode.Create)) { var helper = new CoBieLiteHelper(model, "UniClass"); var facility = helper.GetFacilities().FirstOrDefault(); if (facility != null) { using (var writer = new StreamWriter(cobieFile)) { CoBieLiteHelper.WriteJson(writer, facility); writer.Close(); } } } return(cobieFileName); } catch (Exception ex) { Log.Error("转换Cobie文件失败:" + ex.Message, ex); throw; } }
public static void ConvertDpowToCobie(Stream input, CloudBlockBlob outputCobieBlob) { var temp = Path.GetTempFileName(); try { var dpow = PlanOfWork.Open(input); var facility = new FacilityType(); var exchanger = new XbimExchanger.DPoWToCOBieLite.DpoWtoCoBieLiteExchanger(dpow, facility); exchanger.Convert(); using (var tw = File.CreateText(temp)) { CoBieLiteHelper.WriteJson(tw, facility); tw.Close(); } outputCobieBlob.UploadFromFile(temp, FileMode.Open); } finally { //tidy up if (File.Exists(temp)) { File.Delete(temp); } } }
public void ConvertCoBieLiteToJson() { using (var m = new XbimModel()) { var IfcTestFile = "2012-03-23-Duplex-Handover.ifc"; // IfcTestFile = @"D:\Users\steve\xBIM\Test Models\Autodesk\002ALakesiderestaurant.ifc"; var XbimTestFile = Path.ChangeExtension(IfcTestFile, "xbim"); m.CreateFrom(IfcTestFile, XbimTestFile, null, true, true); var helper = new CoBieLiteHelper(m, "UniClass"); var facilities = helper.GetFacilities(); foreach (var facilityType in facilities) { Assert.IsTrue(facilityType.FacilityDefaultLinearUnitSpecified); Assert.IsTrue(facilityType.FacilityDefaultAreaUnitSpecified); Assert.IsTrue(facilityType.FacilityDefaultVolumeUnitSpecified); CoBieLiteHelper.WriteJson(Console.Out, facilityType); } } }
static void Main(string[] args) { const string filename = "20200404CV.01.ifc"; using (var model = IfcStore.Open(filename)) { var context = new Xbim3DModelContext(model); context.CreateContext(); var wexBimFilename = Path.ChangeExtension(filename, "wexBim"); using (var wexBimfile = File.Create(wexBimFilename)) { using (var wexBimBinaryWriter = new BinaryWriter(wexBimfile)) { model.SaveAsWexBim(wexBimBinaryWriter); wexBimBinaryWriter.Close(); } wexBimfile.Close(); } string cobieFileName = Path.ChangeExtension(filename, "json"); using (var cobieFile = new FileStream(cobieFileName, FileMode.Create)) { var helper = new CoBieLiteHelper(model, "UniClass"); var fac = helper.GetFacilities().FirstOrDefault(); if (fac != null) { using (var writer = new StreamWriter(cobieFile)) { CoBieLiteHelper.WriteJson(writer, fac); writer.Close(); } } } model.Close(); } }
public void ConvertCoBieLiteToJson() { var IfcTestFile = "2012-03-23-Duplex-Handover.ifc"; using (var m = IfcStore.Open(IfcTestFile)) { //IfcTestFile = @"D:\Users\steve\My Documents\DPoW\001 NBS Lakeside Restaurant 2014.ifc"; var xbimTestFile = Path.ChangeExtension(IfcTestFile, "xbim"); var jsonFile = Path.ChangeExtension(IfcTestFile, "json"); var helper = new CoBieLiteHelper(m, "UniClass"); var facilities = helper.GetFacilities(); foreach (var facilityType in facilities) { Assert.IsTrue(facilityType.FacilityDefaultLinearUnitSpecified); Assert.IsTrue(facilityType.FacilityDefaultAreaUnitSpecified); Assert.IsTrue(facilityType.FacilityDefaultVolumeUnitSpecified); using (var fs = new StreamWriter(jsonFile)) { CoBieLiteHelper.WriteJson(fs, facilityType); fs.Close(); } } } }
public static void ConvertIfcToWexbimAndCobie(Stream input, CloudBlockBlob outputWexbimBlob, CloudBlockBlob outputCobieBlob, string inputExtension) { //temp files var fileName = Path.GetTempPath() + Guid.NewGuid() + inputExtension; var xbimFileName = Path.ChangeExtension(fileName, ".xBIM"); var wexBimFileName = Path.ChangeExtension(fileName, ".wexBIM"); var cobieFileName = Path.ChangeExtension(fileName, ".json"); try { using (var fileStream = File.OpenWrite(fileName)) { input.CopyTo(fileStream); fileStream.Flush(); fileStream.Close(); //open the model and import using (var model = new XbimModel()) { model.CreateFrom(fileName, null, null, true); var m3DModelContext = new Xbim3DModelContext(model); using (var wexBimFile = new FileStream(wexBimFileName, FileMode.Create)) { using (var bw = new BinaryWriter(wexBimFile)) { m3DModelContext.CreateContext(XbimGeometryType.PolyhedronBinary); m3DModelContext.Write(bw); bw.Close(); wexBimFile.Close(); outputWexbimBlob.UploadFromFile(wexBimFileName, FileMode.Open); } } using (var cobieFile = new FileStream(cobieFileName, FileMode.Create)) { var helper = new CoBieLiteHelper(model, "UniClass"); var facility = helper.GetFacilities().FirstOrDefault(); if (facility != null) { using (var writer = new StreamWriter(cobieFile)) { CoBieLiteHelper.WriteJson(writer, facility); writer.Close(); outputCobieBlob.UploadFromFile(cobieFileName, FileMode.Open); } } } model.Close(); } } } finally { //tidy up if (File.Exists(fileName)) { File.Delete(fileName); } if (File.Exists(xbimFileName)) { File.Delete(xbimFileName); } if (File.Exists(wexBimFileName)) { File.Delete(wexBimFileName); } if (File.Exists(cobieFileName)) { File.Delete(cobieFileName); } } }
public static string ConvertToWexbim(string fileName, int roomId, bool createJson = false) { var wexBimFilename = Path.ChangeExtension(fileName, "wexbim"); byte[] temp; using (ISelect select = new QQContext()) { temp = select.GetRoomModel ( roomId ); } if (temp == null) { return(null); } File.WriteAllBytes ( fileName, temp ); using (var model = IfcStore.Open(fileName)) { var context = new Xbim3DModelContext(model); context.CreateContext(); using (var wexBiMfile = File.Create(wexBimFilename)) { using (var wexBimBinaryWriter = new BinaryWriter(wexBiMfile)) { model.SaveAsWexBim(wexBimBinaryWriter); wexBimBinaryWriter.Close(); } wexBiMfile.Close(); } if (createJson) { var cobieFileName = Path.ChangeExtension ( fileName, "json" ); using (var cobieFile = new FileStream ( cobieFileName, FileMode.Create )) { var helper = new CoBieLiteHelper ( model, "UniClass" ); var facility = helper.GetFacilities() .FirstOrDefault(); if (facility != null) { using (var writer = new StreamWriter ( cobieFile )) { CoBieLiteHelper.WriteJson ( writer, facility ); writer.Close(); } } } } } File.Delete(fileName); return(wexBimFilename); }