public static iso_10303 buildMinimumExampleObject() { iso_10303 iso = buildFailingMinimumExampleObject(); iso.uos.id = "uos_1"; return(iso); }
public void Recreate_NIST_TrainingStructure() { IStepReader reader = getNISTTrainingStructure(); iso_10303 iso10303 = serializer.Deserialize(reader); reader.Close(); string path = "./sampleData/NIST_TrainingStructure_param_output.ifc"; if (File.Exists(path)) { File.Delete(path); } Assert.IsFalse(File.Exists(path)); StreamWriter sr = new StreamWriter(path); IStepWriter writer = new StepWriter(sr); serializer.Serialize(writer, iso10303); writer.Close(); Assert.IsTrue(File.Exists(path)); //quick and dirty method for checking file string[] lines = File.ReadAllLines(path); Assert.IsNotNull(lines); Assert.AreEqual(17227 + 9, lines.Length); }
private StepDataObject ExtractFileName(iso_10303 iso10303) { if (iso10303 == null) { throw new ArgumentNullException("iso10303"); } iso_10303_28_header header = iso10303.iso_10303_28_header; if (header == null) { throw new ArgumentNullException("iso10303.iso_10303_28_header"); } StepDataObject sdo = new StepDataObject(); sdo.ObjectName = "FILE_NAME"; sdo.Properties.Add(StepValue.CreateString(header.name)); sdo.Properties.Add(StepValue.CreateDate(header.time_stamp)); sdo.Properties.Add(StepValue.CreateArray(StepValue.CreateString(header.author))); //FIXME header.organization is a string and not a list, but the Step file expects an array sdo.Properties.Add(StepValue.CreateArray(StepValue.CreateString(header.organization))); sdo.Properties.Add(StepValue.CreateString(header.preprocessor_version)); sdo.Properties.Add(StepValue.CreateString(header.originating_system)); sdo.Properties.Add(StepValue.CreateString(header.authorization)); return(sdo); }
public static void Main(string[] args) { string inputFile = "../../../IfcDotNet_UnitTests/sampleData/NIST_TrainingStructure_param.ifc"; if (!File.Exists(inputFile)) { Console.WriteLine(String.Format(CultureInfo.InvariantCulture, "File does not exist at : {0}", inputFile)); } else { Console.WriteLine("Running..."); StreamReader sr = new StreamReader(inputFile); IStepReader reader = new StepReader(sr); IfcStepSerializer serializer = new IfcStepSerializer(); iso_10303 iso10303 = serializer.Deserialize(reader); uos1 uos1 = iso10303.uos as uos1; Entity[] entities = uos1.Items; Console.WriteLine(String.Format(CultureInfo.InvariantCulture, "Have deserialized {0} entities", entities.Length)); } Console.WriteLine("Press any key to quit"); Console.ReadKey(); Console.WriteLine("Exiting"); }
public static iso_10303 buildFailingMinimumExampleObject() { iso_10303 iso10303 = new iso_10303(); iso10303.uos = new uos1(); iso10303.uos.configuration = new string[] { "i-ifc2x3" }; iso10303.version = "2.0"; iso10303.iso_10303_28_header = new iso_10303_28_header(); iso10303.iso_10303_28_header.author = "John Hancock"; iso10303.iso_10303_28_header.organization = "MegaCorp"; iso10303.iso_10303_28_header.time_stamp = new DateTime(2010, 11, 12, 13, 04, 00); iso10303.iso_10303_28_header.name = "An Example"; iso10303.iso_10303_28_header.preprocessor_version = "a preprocessor"; iso10303.iso_10303_28_header.originating_system = "IfcDotNet Library"; iso10303.iso_10303_28_header.authorization = "none"; iso10303.iso_10303_28_header.documentation = "documentation"; IfcOrganization organization = new IfcOrganization(); organization.entityid = "i1101"; organization.Name = "MegaCorp"; IfcCartesianPoint point = new IfcCartesianPoint("i101", 2500, 0, 0); IfcDirection dir = new IfcDirection("i102", 0, 1, 0); ((uos1)iso10303.uos).Items = new Entity[] { organization, point, dir }; return(iso10303); }
private Entity[] DeserializeAssertISO10303AndExtractItems(StringReader stringReaderToDeserialize) { StepReader reader = new StepReader(stringReaderToDeserialize); iso_10303 iso10303 = Deserialize(reader); AssertIso10303(iso10303); return(extractItems(iso10303)); }
public void CanDeserialize_NIST_TrainingStructure() { IStepReader reader = getNISTTrainingStructure(); iso_10303 iso10303 = serializer.Deserialize(reader); uos1 uos1 = iso10303.uos as uos1; Entity[] entities = uos1.Items; Assert.AreEqual(17227, entities.Length); }
public static void AssertIsMinimumExample(iso_10303 iso10303) { Assert.IsNotNull(iso10303); Assert.IsNotNull(iso10303.iso_10303_28_header); Assert.AreEqual("An Example", iso10303.iso_10303_28_header.name); Assert.AreEqual(new DateTime(2010, 11, 12, 13, 04, 00), iso10303.iso_10303_28_header.time_stamp); Assert.AreEqual("John Hancock", iso10303.iso_10303_28_header.author); Assert.AreEqual("MegaCorp", iso10303.iso_10303_28_header.organization); Assert.AreEqual("IfcDotNet Library", iso10303.iso_10303_28_header.originating_system); Assert.AreEqual("a preprocessor", iso10303.iso_10303_28_header.preprocessor_version); Assert.AreEqual("documentation", iso10303.iso_10303_28_header.documentation); Assert.AreEqual("none", iso10303.iso_10303_28_header.authorization); Assert.IsNotNull(iso10303.uos, "iso10303.uos is null"); uos uos = iso10303.uos; Assert.AreEqual("uos_1", uos.id); Assert.IsNotNull(uos.configuration, "iso10303.uos.configuration is null"); Assert.AreEqual(1, uos.configuration.Length, "uos.configuration does not have 1 item in it"); Assert.AreEqual("i-ifc2x3", uos.configuration[0]); Assert.IsNotNull(uos as uos1, "uos cannot be converted to uos1"); uos1 uos1 = uos as uos1; Assert.IsNotNull(uos1, "uos1 is null"); Assert.IsNotNull(uos1.Items, "uos1.items is null"); Assert.AreEqual(3, uos1.Items.Length, "uos1.Items does not have 3 items in it"); IfcOrganization org = uos1.Items[0] as IfcOrganization; Assert.IsNotNull(org, "org is null"); Assert.AreEqual("i1101", org.entityid, "entityid is not i1101"); Assert.AreEqual("MegaCorp", org.Name); IfcCartesianPoint pnt = uos1.Items[1] as IfcCartesianPoint; Assert.IsNotNull(pnt, "pnt is null"); Assert.AreEqual("i101", pnt.entityid); Assert.IsNotNull(pnt.Coordinates); Assert.IsNotNull(pnt.Coordinates.Items); Assert.AreEqual(3, pnt.Coordinates.Items.Length); Assert.AreEqual(2500, pnt.Coordinates[0].Value); //TODO shorten the number of properties needed to be called to get the value. pnt.Coordinates[0] would be perfect! Assert.AreEqual(0, pnt.Coordinates[1].Value); Assert.AreEqual(0, pnt.Coordinates[2].Value); IfcDirection dir = uos1.Items[2] as IfcDirection; Assert.IsNotNull(dir, "dir is null"); Assert.AreEqual("i102", dir.entityid); Assert.IsNotNull(dir.DirectionRatios); Assert.IsNotNull(dir.DirectionRatios.Items); Assert.AreEqual(3, dir.DirectionRatios.Items.Length); Assert.AreEqual(0, dir.DirectionRatios[0].Value); Assert.AreEqual(1, dir.DirectionRatios[1].Value); Assert.AreEqual(0, dir.DirectionRatios[0].Value); }
/// <summary> /// Extracts StepDataObjects from a .Net object /// </summary> /// <param name="iso10303"></param> /// <returns></returns> public StepFile Extract(iso_10303 iso10303) { if (iso10303 == null) { throw new ArgumentNullException("iso10303"); } if (iso10303.iso_10303_28_header == null) { throw new ArgumentNullException("iso10303.iso_10303_28_header"); } if (iso10303.uos == null) { throw new ArgumentNullException("iso10303.uos"); } StepFile stepFile = new StepFile(); //header stepFile.Header.Add(GenerateFileDescription( )); stepFile.Header.Add(ExtractFileName(iso10303)); stepFile.Header.Add(ExtractFileSchema(iso10303)); //data uos1 uos1 = iso10303.uos as uos1; if (uos1 == null) //no data { logger.Error("Extract(iso_10303) could not extract, as iso10303.uos was not a type of uos1"); return(stepFile); } //putting the entities in a dictionary so we can deal with references foreach (Entity e in uos1.Items) { if (!this._entityRegister.isAlreadyRegistered(e)) { this._entityRegister.RegisterEntity(e); this._queuedEntities.Enqueue(e); } } while (this._queuedEntities.Count > 0) { Entity e = this._queuedEntities.Dequeue(); int entityId = this._entityRegister.getEntityId(e); StepDataObject sdo = this.ExtractObject(e); stepFile.Data.Add(entityId, sdo); } //clear entityQueue, so next time this method is run it starts empty this._entityRegister = new StepBinderEntityRegister(); return(stepFile); }
private StepDataObject ExtractFileSchema(iso_10303 iso10303) { if (iso10303 == null) { throw new ArgumentNullException("iso10303"); } StepDataObject sdo = new StepDataObject(); sdo.ObjectName = "FILE_SCHEMA"; sdo.Properties.Add(StepValue.CreateArray(StepValue.CreateString("IFC2X3"))); return(sdo); }
/// <summary> /// /// </summary> /// <param name="iso10303"></param> /// <returns></returns> public string SerializeToString(iso_10303 iso10303) { if (iso10303 == null) { throw new ArgumentNullException("iso10303"); } StringBuilder sb = new StringBuilder(); StringWriter writer = new StringWriter(sb, CultureInfo.InvariantCulture); Serialize(writer, iso10303); return(sb.ToString()); }
/// <summary> /// /// </summary> /// <param name="writer"></param> /// <param name="iso10303"></param> public void Serialize(TextWriter writer, iso_10303 iso10303) { if (writer == null) { throw new ArgumentNullException("writer"); } if (iso10303 == null) { throw new ArgumentNullException("iso10303"); } IStepWriter sw = new StepWriter(writer); this.Serialize(sw, iso10303); }
private void AssertCanSerialize(String itemToEqual) { IStepReader itemToDeserialize = new StepReader(new StringReader(itemToEqual)); iso_10303 iso10303 = serializer.Deserialize(itemToDeserialize); StringBuilder sb = new StringBuilder(); StepWriter stepwriter = new StepWriter(new StringWriter(sb)); serializer.Serialize(stepwriter, iso10303); logger.Debug(sb.ToString()); Assert.AreEqual(itemToEqual, sb.ToString()); }
/// <summary> /// Writes the passed object as IfcXml. /// </summary> /// <param name="writer"></param> /// <param name="iso10303"></param> public void Serialize(TextWriter writer, iso_10303 iso10303) { if (writer == null) { throw new ArgumentNullException("writer"); } if (iso10303 == null) { throw new ArgumentNullException("iso10303"); } //TODO validate that iso10303 is valid IFC //TODO flatten Entities serializer.Serialize(writer, iso10303, getIfcNamespaces()); writer.Close(); }
/// <summary> /// Deserializes STEP format data by reading stream provided by a StreamReader. An iso_10303 object is returned. /// </summary> /// <param name="reader"></param> /// <returns></returns> public iso_10303 Deserialize(IStepReader reader) { if (reader == null) { throw new ArgumentNullException("reader"); } this._internalDeserializer = new StepDeserializer(); this._binder = new StepBinder(); StepFile stepFile = this._internalDeserializer.Deserialize(reader); iso_10303 iso10303 = this._binder.Bind(stepFile); return(iso10303); }
public void CanRoundTrip() { iso_10303 initial = Utilities.buildMinimumExampleObject(); string serialized = serializer.SerializeToString(initial); //logger.Debug( serialized ); IfcXmlValidator validator = new IfcXmlValidator(serialized); Assert.IsTrue(validator.IsValid); StringReader reader = new StringReader(serialized); iso_10303 returned = serializer.Deserialize(reader); Utilities.AssertIsMinimumExample(returned); }
public void CanSerialize() { iso_10303 iso10303 = Utilities.buildMinimumExampleObject(); string returnedValue = serializer.SerializeToString(iso10303); Assert.IsFalse(string.IsNullOrEmpty(returnedValue)); //dumping to the console logger.Debug(returnedValue); IfcXmlValidator validator = new IfcXmlValidator(returnedValue); Assert.IsTrue(validator.IsValid); Assert.AreEqual(ExampleIfcXmlData.getExpectedXmlOutputString(), returnedValue); }
public iso_10303 Bind(StepFile step){ if(step == null) throw new ArgumentNullException("step"); if(step.Data == null) throw new ArgumentNullException("step.Data"); if(step.Header == null) throw new ArgumentNullException("step.Header"); iso_10303 iso10303 = new iso_10303(); //TODO fill in meta data from STEP header iso10303.iso_10303_28_header = new iso_10303_28_header(); foreach(StepDataObject sdo in step.Header){ logger.Debug("Found header object : " + sdo.ObjectName); if(sdo.ObjectName == "FILE_NAME") bindFileName(sdo, iso10303.iso_10303_28_header); } iso10303.uos = new uos1(); IDictionary<int, Entity> entities = new SortedDictionary<int, Entity>(); //try and instantiate a type for each STEP entity //and fill its properties foreach(KeyValuePair<int, StepDataObject> kvp in step.Data){ if(kvp.Value == null) continue; Object o = this.bindObject(kvp.Key, kvp.Value); //TODO check that instance type is derived from Entity. Entity e = o as Entity; logger.Debug("Adding a deserialized item. Item Id : " + kvp.Key ); entities.Add( kvp.Key, e ); } logger.Info(String.Format(CultureInfo.InvariantCulture, "Deserialized {0} entities", entities.Count )); LinkReferences( entities ); Entity[] items = new Entity[entities.Count]; entities.Values.CopyTo( items, 0 ); ((uos1)iso10303.uos).Items = items; //clear object links so there's no issues next time this method is run this._objectLinks = new List<StepEntityReference>(); return iso10303; }
private void AssertIso10303(iso_10303 iso10303) { Assert.IsNotNull(iso10303); Assert.IsNotNull(iso10303.iso_10303_28_header); Assert.AreEqual("example.ifc", iso10303.iso_10303_28_header.name); Assert.AreEqual(new DateTime(2008, 08, 01, 21, 53, 56), iso10303.iso_10303_28_header.time_stamp); Assert.AreEqual("Architect", iso10303.iso_10303_28_header.author); Assert.AreEqual("Building Designer Office", iso10303.iso_10303_28_header.organization); Assert.AreEqual("IFC Engine DLL version 1.02 beta", iso10303.iso_10303_28_header.preprocessor_version); Assert.AreEqual("IFC Engine DLL version 1.02 beta", iso10303.iso_10303_28_header.originating_system); Assert.AreEqual("The authorising person", iso10303.iso_10303_28_header.authorization); Assert.IsNotNull(iso10303.uos); uos1 uos1 = iso10303.uos as uos1; Assert.IsNotNull(uos1); Assert.IsNotNull(uos1.Items); }
public void CanSerialize() { iso_10303 iso10303 = Utilities.buildMinimumExampleObject(); StringBuilder sb = new StringBuilder(); StringWriter writer = new StringWriter(sb); SUT.Serialize(writer, iso10303); string returnedValue = sb.ToString(); Assert.IsFalse(String.IsNullOrEmpty(returnedValue)); //dumping to the console logger.Debug(returnedValue); //Assert.AreEqual(Utilities.getExpectedXmlOutputString(), returnedValue ); }
/// <summary> /// Serializes an iso_10303 object into STEP format, writing the data to the given StepWriter /// </summary> /// <param name="writer"></param> /// <param name="iso10303"></param> public void Serialize(IStepWriter writer, iso_10303 iso10303) { if (writer == null) { throw new ArgumentNullException("writer"); } if (iso10303 == null) { throw new ArgumentNullException("iso10303"); } this._internalSerializer = new StepParser.Serialization.StepSerializer(); this._extractor = new StepObjectExtractor(); //Convert from iso_10303 to StepDataObjects StepFile stepFile = this._extractor.Extract(iso10303); //use the InternalStepSerializer to write StepDataObjects to the StepWriter this._internalSerializer.Serialize(writer, stepFile); }
/// <summary> /// Extracts StepDataObjects from a .Net object /// </summary> /// <param name="iso10303"></param> /// <returns></returns> public StepFile Extract(iso_10303 iso10303){ if(iso10303 == null) throw new ArgumentNullException("iso10303"); if(iso10303.iso_10303_28_header == null) throw new ArgumentNullException("iso10303.iso_10303_28_header"); if(iso10303.uos == null) throw new ArgumentNullException("iso10303.uos"); StepFile stepFile = new StepFile(); //header stepFile.Header.Add( GenerateFileDescription( ) ); stepFile.Header.Add( ExtractFileName( iso10303 ) ); stepFile.Header.Add( ExtractFileSchema( iso10303 ) ); //data uos1 uos1 = iso10303.uos as uos1; if(uos1 == null){ //no data logger.Error( "Extract(iso_10303) could not extract, as iso10303.uos was not a type of uos1" ); return stepFile; } //putting the entities in a dictionary so we can deal with references foreach(Entity e in uos1.Items){ if(!this._entityRegister.isAlreadyRegistered(e)){ this._entityRegister.RegisterEntity( e ); this._queuedEntities.Enqueue( e ); } } while(this._queuedEntities.Count > 0){ Entity e = this._queuedEntities.Dequeue(); int entityId = this._entityRegister.getEntityId(e); StepDataObject sdo = this.ExtractObject( e ); stepFile.Data.Add( entityId, sdo ); } //clear entityQueue, so next time this method is run it starts empty this._entityRegister = new StepBinderEntityRegister(); return stepFile; }
private Entity[] extractItems(iso_10303 iso10303){ uos1 uos1 = iso10303.uos as uos1; return uos1.Items; }
public iso_10303 Bind(StepFile step) { if (step == null) { throw new ArgumentNullException("step"); } if (step.Data == null) { throw new ArgumentNullException("step.Data"); } if (step.Header == null) { throw new ArgumentNullException("step.Header"); } iso_10303 iso10303 = new iso_10303(); //TODO fill in meta data from STEP header iso10303.iso_10303_28_header = new iso_10303_28_header(); foreach (StepDataObject sdo in step.Header) { logger.Debug("Found header object : " + sdo.ObjectName); if (sdo.ObjectName == "FILE_NAME") { bindFileName(sdo, iso10303.iso_10303_28_header); } } iso10303.uos = new uos1(); IDictionary <int, Entity> entities = new SortedDictionary <int, Entity>(); //try and instantiate a type for each STEP entity //and fill its properties foreach (KeyValuePair <int, StepDataObject> kvp in step.Data) { if (kvp.Value == null) { continue; } Object o = this.bindObject(kvp.Key, kvp.Value); //TODO check that instance type is derived from Entity. Entity e = o as Entity; logger.Debug("Adding a deserialized item. Item Id : " + kvp.Key); entities.Add(kvp.Key, e); } logger.Info(String.Format(CultureInfo.InvariantCulture, "Deserialized {0} entities", entities.Count)); LinkReferences(entities); Entity[] items = new Entity[entities.Count]; entities.Values.CopyTo(items, 0); ((uos1)iso10303.uos).Items = items; //clear object links so there's no issues next time this method is run this._objectLinks = new List <StepEntityReference>(); return(iso10303); }
/// <summary> /// /// </summary> /// <param name="iso10303"></param> /// <returns></returns> public string SerializeToString( iso_10303 iso10303 ){ if( iso10303 == null ) throw new ArgumentNullException("iso10303"); StringBuilder sb = new StringBuilder(); StringWriter writer = new StringWriter( sb, CultureInfo.InvariantCulture ); Serialize(writer, iso10303); return sb.ToString(); }
private void AssertIso10303(iso_10303 iso10303){ Assert.IsNotNull(iso10303); Assert.IsNotNull(iso10303.iso_10303_28_header); Assert.AreEqual("example.ifc", iso10303.iso_10303_28_header.name); Assert.AreEqual(new DateTime(2008,08,01,21,53,56), iso10303.iso_10303_28_header.time_stamp); Assert.AreEqual("Architect", iso10303.iso_10303_28_header.author); Assert.AreEqual("Building Designer Office", iso10303.iso_10303_28_header.organization); Assert.AreEqual("IFC Engine DLL version 1.02 beta", iso10303.iso_10303_28_header.preprocessor_version); Assert.AreEqual("IFC Engine DLL version 1.02 beta", iso10303.iso_10303_28_header.originating_system); Assert.AreEqual("The authorising person", iso10303.iso_10303_28_header.authorization); Assert.IsNotNull(iso10303.uos); uos1 uos1 = iso10303.uos as uos1; Assert.IsNotNull(uos1); Assert.IsNotNull(uos1.Items); }
public static void AssertIsMinimumExample(iso_10303 iso10303){ Assert.IsNotNull(iso10303); Assert.IsNotNull(iso10303.iso_10303_28_header); Assert.AreEqual("An Example", iso10303.iso_10303_28_header.name); Assert.AreEqual(new DateTime(2010,11,12,13,04,00), iso10303.iso_10303_28_header.time_stamp); Assert.AreEqual("John Hancock", iso10303.iso_10303_28_header.author); Assert.AreEqual("MegaCorp", iso10303.iso_10303_28_header.organization); Assert.AreEqual("IfcDotNet Library", iso10303.iso_10303_28_header.originating_system); Assert.AreEqual("a preprocessor", iso10303.iso_10303_28_header.preprocessor_version); Assert.AreEqual("documentation", iso10303.iso_10303_28_header.documentation); Assert.AreEqual("none", iso10303.iso_10303_28_header.authorization); Assert.IsNotNull(iso10303.uos, "iso10303.uos is null"); uos uos = iso10303.uos; Assert.AreEqual("uos_1", uos.id); Assert.IsNotNull(uos.configuration, "iso10303.uos.configuration is null"); Assert.AreEqual(1, uos.configuration.Length, "uos.configuration does not have 1 item in it"); Assert.AreEqual("i-ifc2x3", uos.configuration[0]); Assert.IsNotNull(uos as uos1, "uos cannot be converted to uos1"); uos1 uos1 = uos as uos1; Assert.IsNotNull(uos1, "uos1 is null"); Assert.IsNotNull(uos1.Items, "uos1.items is null"); Assert.AreEqual(3, uos1.Items.Length, "uos1.Items does not have 3 items in it"); IfcOrganization org = uos1.Items[0] as IfcOrganization; Assert.IsNotNull( org , "org is null"); Assert.AreEqual( "i1101", org.entityid , "entityid is not i1101"); Assert.AreEqual("MegaCorp", org.Name ); IfcCartesianPoint pnt = uos1.Items[1] as IfcCartesianPoint; Assert.IsNotNull( pnt, "pnt is null"); Assert.AreEqual( "i101", pnt.entityid ); Assert.IsNotNull( pnt.Coordinates ); Assert.IsNotNull( pnt.Coordinates.Items ); Assert.AreEqual( 3, pnt.Coordinates.Items.Length ); Assert.AreEqual( 2500, pnt.Coordinates[0].Value );//TODO shorten the number of properties needed to be called to get the value. pnt.Coordinates[0] would be perfect! Assert.AreEqual( 0, pnt.Coordinates[1].Value ); Assert.AreEqual( 0, pnt.Coordinates[2].Value ); IfcDirection dir = uos1.Items[2] as IfcDirection; Assert.IsNotNull( dir , "dir is null"); Assert.AreEqual( "i102", dir.entityid ); Assert.IsNotNull( dir.DirectionRatios ); Assert.IsNotNull( dir.DirectionRatios.Items ); Assert.AreEqual( 3, dir.DirectionRatios.Items.Length ); Assert.AreEqual( 0, dir.DirectionRatios[0].Value ); Assert.AreEqual( 1, dir.DirectionRatios[1].Value ); Assert.AreEqual( 0, dir.DirectionRatios[0].Value ); }
/// <summary> /// Writes the passed object as IfcXml. /// </summary> /// <param name="writer"></param> /// <param name="iso10303"></param> public void Serialize(TextWriter writer, iso_10303 iso10303){ if(writer == null) throw new ArgumentNullException("writer"); if(iso10303 == null) throw new ArgumentNullException("iso10303"); //TODO validate that iso10303 is valid IFC //TODO flatten Entities serializer.Serialize(writer, iso10303, getIfcNamespaces()); writer.Close(); }
public void CanDeserializeAlternativeFormat() { iso_10303 iso10303 = serializer.Deserialize(ExampleIfcXmlData.getAlternativeMinimumExampleXml()); Utilities.AssertIsMinimumExample(iso10303); }
private StepDataObject ExtractFileName( iso_10303 iso10303 ){ if(iso10303 == null) throw new ArgumentNullException("iso10303"); iso_10303_28_header header = iso10303.iso_10303_28_header; if(header == null) throw new ArgumentNullException("iso10303.iso_10303_28_header"); StepDataObject sdo = new StepDataObject(); sdo.ObjectName = "FILE_NAME"; sdo.Properties.Add( StepValue.CreateString(header.name)); sdo.Properties.Add( StepValue.CreateDate(header.time_stamp ) ); sdo.Properties.Add( StepValue.CreateArray( StepValue.CreateString( header.author ) ) ); //FIXME header.organization is a string and not a list, but the Step file expects an array sdo.Properties.Add( StepValue.CreateArray( StepValue.CreateString( header.organization ) ) ); sdo.Properties.Add( StepValue.CreateString( header.preprocessor_version )); sdo.Properties.Add( StepValue.CreateString( header.originating_system )); sdo.Properties.Add( StepValue.CreateString( header.authorization )); return sdo; }
private StepDataObject ExtractFileSchema( iso_10303 iso10303 ){ if(iso10303 == null) throw new ArgumentNullException( "iso10303" ); StepDataObject sdo = new StepDataObject(); sdo.ObjectName = "FILE_SCHEMA"; sdo.Properties.Add( StepValue.CreateArray( StepValue.CreateString("IFC2X3") ) ); return sdo; }
/// <summary> /// Serializes an iso_10303 object into STEP format, writing the data to the given StepWriter /// </summary> /// <param name="writer"></param> /// <param name="iso10303"></param> public void Serialize(IStepWriter writer, iso_10303 iso10303){ if(writer == null) throw new ArgumentNullException("writer"); if(iso10303 == null) throw new ArgumentNullException("iso10303"); this._internalSerializer = new StepParser.Serialization.StepSerializer(); this._extractor = new StepObjectExtractor(); //Convert from iso_10303 to StepDataObjects StepFile stepFile = this._extractor.Extract( iso10303 ); //use the InternalStepSerializer to write StepDataObjects to the StepWriter this._internalSerializer.Serialize(writer, stepFile ); }
/// <summary> /// /// </summary> /// <param name="writer"></param> /// <param name="iso10303"></param> public void Serialize(TextWriter writer, iso_10303 iso10303){ if(writer == null) throw new ArgumentNullException("writer"); if(iso10303 == null) throw new ArgumentNullException("iso10303"); IStepWriter sw = new StepWriter(writer); this.Serialize(sw, iso10303); }
private Entity[] extractItems(iso_10303 iso10303) { uos1 uos1 = iso10303.uos as uos1; return(uos1.Items); }
/// <summary> /// Serializes an iso_10303 object to a TextWriter in Json format. /// </summary> /// <param name="writer"></param> /// <param name="iso10303"></param> public void Serialize(TextWriter writer, iso_10303 iso10303) { serializer.Serialize(writer, iso10303); }
public void CanDeserialize() //FIXME this test currently fails, but the string seems to validate OK { iso_10303 iso10303 = serializer.Deserialize(ExampleIfcXmlData.getMinimumExampleXml()); Utilities.AssertIsMinimumExample(iso10303); }
public static iso_10303 buildFailingMinimumExampleObject(){ iso_10303 iso10303 = new iso_10303(); iso10303.uos = new uos1(); iso10303.uos.configuration = new string[]{"i-ifc2x3"}; iso10303.version = "2.0"; iso10303.iso_10303_28_header = new iso_10303_28_header(); iso10303.iso_10303_28_header.author = "John Hancock"; iso10303.iso_10303_28_header.organization = "MegaCorp"; iso10303.iso_10303_28_header.time_stamp = new DateTime(2010,11,12,13,04,00); iso10303.iso_10303_28_header.name = "An Example"; iso10303.iso_10303_28_header.preprocessor_version = "a preprocessor"; iso10303.iso_10303_28_header.originating_system = "IfcDotNet Library"; iso10303.iso_10303_28_header.authorization = "none"; iso10303.iso_10303_28_header.documentation = "documentation"; IfcOrganization organization = new IfcOrganization(); organization.entityid = "i1101"; organization.Name = "MegaCorp"; IfcCartesianPoint point = new IfcCartesianPoint("i101", 2500, 0, 0); IfcDirection dir = new IfcDirection("i102",0,1,0); ((uos1)iso10303.uos).Items = new Entity[]{organization, point, dir}; return iso10303; }
/// <summary> /// Serializes an iso_10303 object to a TextWriter in Json format. /// </summary> /// <param name="writer"></param> /// <param name="iso10303"></param> public void Serialize(TextWriter writer, iso_10303 iso10303){ serializer.Serialize(writer, iso10303); }
public void CanDeserialize() { //TODO move the below string to Utilities //FIXME the header in the below json string is entirely incorrect! //FIXME the output $type is specific to this library. It would be better if the ifcXml names were used string json = @"{ ""$type"":""IfcDotNet.Schema.iso_10303, IfcDotNet"", ""iso_10303_28_header"":""An Example"", ""uos"":{ ""$type"":""IfcDotNet.Schema.uos1, IfcDotNet"", ""Items"":[ { ""$type"":""IfcDotNet.Schema.IfcOrganization, IfcDotNet"", ""Id"":null, ""Name"":""MegaCorp"", ""Description"":null, ""Roles"":null, ""Addresses"":null, ""href"":null, ""ref"":null, ""proxy"":null, ""edo"":null, ""entityid"":""i1101"", ""entitypath"":null, ""pos"":null }, { ""$type"":""IfcDotNet.Schema.IfcCartesianPoint, IfcDotNet"", ""Coordinates"":[ { ""$type"":""IfcDotNet.Schema.IfcLengthMeasure1, IfcDotNet"", ""id"":null, ""path"":null, ""pos"":null, ""Value"":2500.0 }, { ""$type"":""IfcDotNet.Schema.IfcLengthMeasure1, IfcDotNet"", ""id"":null, ""path"":null, ""pos"":null, ""Value"":0.0 }, { ""$type"":""IfcDotNet.Schema.IfcLengthMeasure1, IfcDotNet"", ""id"":null, ""path"":null, ""pos"":null, ""Value"":0.0 } ], ""href"":null, ""ref"":null, ""proxy"":null, ""edo"":null, ""entityid"":""i101"", ""entitypath"":null, ""pos"":null }, { ""$type"":""IfcDotNet.Schema.IfcDirection, IfcDotNet"", ""DirectionRatios"":[ { ""$type"":""IfcDotNet.Schema.doublewrapper, IfcDotNet"", ""id"":null, ""path"":null, ""pos"":null, ""Value"":0.0 }, { ""$type"":""IfcDotNet.Schema.doublewrapper, IfcDotNet"", ""id"":null, ""path"":null, ""pos"":null, ""Value"":1.0 }, { ""$type"":""IfcDotNet.Schema.doublewrapper, IfcDotNet"", ""id"":null, ""path"":null, ""pos"":null, ""Value"":0.0 } ], ""href"":null, ""ref"":null, ""proxy"":null, ""edo"":null, ""entityid"":""i102"", ""entitypath"":null, ""pos"":null } ], ""id"":""uos_1"", ""express"":null, ""configuration"":[ ""i-ifc2x3"" ], ""schemaLocation"":null, ""edo"":null, ""description"":null }, ""version"":""2.0"" }"; StringReader reader = new StringReader(json); iso_10303 iso10303 = SUT.Deserialize(reader); Utilities.AssertIsMinimumExample(iso10303); }