Пример #1
0
        public static iso_10303 buildMinimumExampleObject()
        {
            iso_10303 iso = buildFailingMinimumExampleObject();

            iso.uos.id = "uos_1";
            return(iso);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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");
        }
Пример #5
0
        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);
        }
Пример #6
0
        private Entity[] DeserializeAssertISO10303AndExtractItems(StringReader stringReaderToDeserialize)
        {
            StepReader reader   = new StepReader(stringReaderToDeserialize);
            iso_10303  iso10303 = Deserialize(reader);

            AssertIso10303(iso10303);
            return(extractItems(iso10303));
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
        /// <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);
        }
Пример #10
0
        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);
        }
Пример #11
0
        /// <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());
        }
Пример #12
0
        /// <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);
        }
Пример #13
0
        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());
        }
Пример #14
0
 /// <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();
 }
Пример #15
0
        /// <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);
        }
Пример #16
0
        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);
        }
Пример #17
0
        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);
        }
Пример #18
0
		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;
		}
Пример #19
0
        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);
        }
Пример #20
0
        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 );
        }
Пример #21
0
        /// <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);
        }
Пример #22
0
		/// <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;
		}
Пример #23
0
		private Entity[] extractItems(iso_10303 iso10303){
        	uos1 uos1 = iso10303.uos as uos1;
            return uos1.Items;
        }
Пример #24
0
        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);
        }
Пример #25
0
 /// <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();
 }
Пример #26
0
		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);
        }
Пример #27
0
 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 );
 }
Пример #28
0
 /// <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();
 }
Пример #29
0
        public void CanDeserializeAlternativeFormat()
        {
            iso_10303 iso10303 = serializer.Deserialize(ExampleIfcXmlData.getAlternativeMinimumExampleXml());

            Utilities.AssertIsMinimumExample(iso10303);
        }
Пример #30
0
		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;
		}
Пример #31
0
		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;
		}
Пример #32
0
 /// <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 );
 }
Пример #33
0
 /// <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);
 }
Пример #34
0
        private Entity[] extractItems(iso_10303 iso10303)
        {
            uos1 uos1 = iso10303.uos as uos1;

            return(uos1.Items);
        }
Пример #35
0
 /// <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);
 }
Пример #36
0
        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);
        }
Пример #37
0
        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;
        }
Пример #38
0
		/// <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);
		}
Пример #39
0
        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);
        }