コード例 #1
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);
        }
コード例 #2
0
ファイル: ExampleData.cs プロジェクト: whztt07/ifc-dotnet
        public static StepFile simpleStepRepresentation()
        {
            StepDataObject entity0 = new StepDataObject("IFCPROJECT",
                                                        StepValue.CreateString("3MD_HkJ6X2EwpfIbCFm0g_"),
                                                        StepValue.CreateLineReference(2),
                                                        StepValue.CreateString("Default Project"),
                                                        StepValue.CreateString("Description of Default Project"),
                                                        StepValue.CreateNull(),
                                                        StepValue.CreateFloat(-22.4),
                                                        StepValue.CreateNull(),
                                                        StepValue.CreateArray(
                                                            StepValue.CreateLineReference(20)
                                                            ),
                                                        StepValue.CreateLineReference(7)
                                                        );
            StepDataObject entity1 = new StepDataObject("IFCOWNERHISTORY",
                                                        StepValue.CreateLineReference(3),
                                                        StepValue.CreateNestedEntity(new StepDataObject("IFCTEXT",
                                                                                                        StepValue.CreateString("foobar"))),
                                                        StepValue.CreateNull(),
                                                        StepValue.CreateEnum("ADDED"),
                                                        StepValue.CreateNull(),
                                                        StepValue.CreateBoolean(false),
                                                        StepValue.CreateOverridden(),
                                                        StepValue.CreateInteger(1217620436)
                                                        );
            StepFile sf = new StepFile();

            appendHeaderToStepFile(sf, createHeader());
            sf.Data.Add(1, entity0);
            sf.Data.Add(2, entity1);
            return(sf);
        }
コード例 #3
0
 /// <summary>
 /// Creates the file description step data object.
 /// This is the same for all STEP files.
 /// </summary>
 /// <returns></returns>
 private StepDataObject GenerateFileDescription( )
 {
     return(new StepDataObject("FILE_DESCRIPTION",
                               StepValue.CreateArray(
                                   StepValue.CreateString("ViewDefinition [CoordinationView, QuantityTakeOffAddOnView]")
                                   ),
                               StepValue.CreateString("2;1")
                               ));
 }
コード例 #4
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);
        }
コード例 #5
0
ファイル: ExampleData.cs プロジェクト: whztt07/ifc-dotnet
        private static IList <StepDataObject> createHeader()
        {
            IList <StepDataObject> headerLines = new List <StepDataObject>(3);

            headerLines.Add(new StepDataObject("FILE_DESCRIPTION",
                                               StepValue.CreateArray(
                                                   StepValue.CreateString("ViewDefinition [CoordinationView, QuantityTakeOffAddOnView]")
                                                   ),
                                               StepValue.CreateString("2;1")
                                               ));
            headerLines.Add(new StepDataObject("FILE_NAME",
                                               StepValue.CreateString("example.ifc"),
                                               StepValue.CreateDate("2008-08-01T21:53:56"),
                                               StepValue.CreateArray(
                                                   StepValue.CreateString("Architect")
                                                   )
                                               ));
            headerLines.Add(new StepDataObject("FILE_SCHEMA",
                                               StepValue.CreateArray(
                                                   StepValue.CreateString("IFC2X3")
                                                   )
                                               ));
            return(headerLines);
        }
コード例 #6
0
        private StepValue ExtractPropertyValue(Object value)
        {
            if (value == null)
            {
                return(StepValue.CreateNull());
            }

            if (typeof(Entity).IsAssignableFrom(value.GetType()))             //it's a nested entity, which should be referenced
            {
                return(ExtractNestedEntity(value as Entity));
            }

            Type typeOfValue = value.GetType();

            if (IsAnonymousType(typeOfValue))
            {
                if (IsValueType(typeOfValue))
                {
                    return(ExtractProperty(value, this._cache.getPropertiesOfEntity(typeOfValue)[0]));                     //HACK
                }
                else
                {
                    logger.Debug(String.Format("{0} is not a ValueType", typeOfValue.FullName));
                    return(ExtractProperty(value, GetIndirectProperty(value.GetType())));
                }
            }

            if (value.GetType().Equals(typeof(string)))
            {
                return(StepValue.CreateString((string)value));
            }

            if (value.GetType().IsArray)
            {
                Array             array       = (Array)value;
                IList <StepValue> arrayValues = extractValuesFromArray(array);
                return(StepValue.CreateArray(arrayValues));
            }

            if (value is IArray)
            {
                Type t = value.GetType();


                PropertyInfo itemsPi = t.GetProperty("Items", BindingFlags.DeclaredOnly |
                                                     BindingFlags.Public |
                                                     BindingFlags.Instance);
                if (itemsPi == null)
                {
                    throw new StepBindingException(
                              String.Format("We believe to have located a type, {0}, which derives from IArray but does not implement the Items property",
                                            t.FullName));
                }
                Array array = (Array)itemsPi.GetValue(value, null);

                IList <StepValue> arrayValues = extractValuesFromArray(array);
                return(StepValue.CreateArray(arrayValues));
            }

            if (value.GetType().IsEnum)
            {
                return(StepValue.CreateEnum(String.Format(CultureInfo.InvariantCulture,
                                                          "{0}",
                                                          value.ToString().ToUpper())));
            }

            if (value.GetType().IsPrimitive)
            {
                switch (value.GetType().FullName)                //HACK, there must be a better way of
                {
                case "System.Boolean":
                    return(StepValue.CreateBoolean((bool)value));

                case "System.Single":
                    return(StepValue.CreateFloat((Single)value));

                case "System.Double":
                    return(StepValue.CreateFloat((double)value));

                case "System.Int16":
                    return(StepValue.CreateInteger((System.Int16)value));

                case "System.Int32":
                    return(StepValue.CreateInteger((System.Int32)value));

                case "System.Int64":
                    return(StepValue.CreateInteger((System.Int64)value));

                default:
                    throw new NotImplementedException(String.Format(CultureInfo.InvariantCulture,
                                                                    "ExtractProperty method has not yet implemented for a primitive of type {0}",
                                                                    value.GetType().FullName));
                }
            }

            //nested objects
            return(StepValue.CreateNestedEntity(this.ExtractObject(value)));
        }