コード例 #1
0
        private IFCType GetIfcType(string path)
        {
            IFCType result = IFCType.None;

            IntPtr ifcModel = ifcEngine.OpenModelUnicode(IntPtr.Zero, path, Constants.IFC2X3_SCHEMA_NAME);

            if (ifcModel != IntPtr.Zero)
            {
                ifcEngine.GetSPFFHeaderItem(ifcModel, 9, 0, IfcEngine.SdaiType.String, out IntPtr outputValue);

                string headerItem = Marshal.PtrToStringAnsi(outputValue);

                if (!string.IsNullOrEmpty(headerItem))
                {
                    if (headerItem.Contains(IFCType.IFC2.ToString()))
                    {
                        result = IFCType.IFC2;
                    }
                    else if (headerItem.Contains(IFCType.IFC4.ToString()))
                    {
                        result = IFCType.IFC4;
                    }
                }

                ifcEngine.CloseModel(ifcModel);
            }

            return(result);
        }
コード例 #2
0
        private bool ParseIfcFile(string sPath)
        {
            if (File.Exists(sPath))
            {
                IntPtr ifcModel = _ifcEngine.OpenModel(IntPtr.Zero, sPath, "IFC2X3_TC1.exp");

                string xmlSettings_IFC2x3 = @"IFC2X3-Settings.xml";
                string xmlSettings_IFC4   = @"IFC4-Settings.xml";

                if (ifcModel != IntPtr.Zero)
                {
                    IntPtr outputValue = IntPtr.Zero;

                    _ifcEngine.GetSPFFHeaderItem(ifcModel, 9, 0, IfcEngine.SdaiType.String, out outputValue);

                    string s = Marshal.PtrToStringAnsi(outputValue);


                    XmlTextReader textReader = null;
                    if (string.IsNullOrEmpty(s) || s.Contains("IFC2"))
                    {
                        textReader = new XmlTextReader(xmlSettings_IFC2x3);
                    }
                    else if (s.Contains("IFC4"))
                    {
                        _ifcEngine.CloseModel(ifcModel);
                        ifcModel = _ifcEngine.OpenModel(IntPtr.Zero, sPath, "IFC4.exp");

                        if (ifcModel != IntPtr.Zero)
                        {
                            textReader = new XmlTextReader(xmlSettings_IFC4);
                        }
                    }

                    if (textReader == null)
                    {
                        return(false);
                    }

                    // if node type us an attribute
                    while (textReader.Read())
                    {
                        textReader.MoveToElement();

                        if (textReader.AttributeCount > 0)
                        {
                            if (textReader.LocalName == "object")
                            {
                                if (textReader.GetAttribute("name") != null)
                                {
                                    string Name = textReader.GetAttribute("name").ToString();
                                    //string Desc = textReader.GetAttribute("description").ToString();

                                    RetrieveObjects(ifcModel, Name, Name);
                                }
                            }
                        }
                    }

                    int a = 0;
                    GenerateGeometry(ifcModel, _rootIfcItem, ref a);

                    // Generate Tree Control
                    _treeData.BuildTree(this, ifcModel, _rootIfcItem, _treeControl);

                    _ifcEngine.CloseModel(ifcModel);

                    return(true);
                }
            }

            return(false);
        }
コード例 #3
0
        private void CreateHeaderTreeItems()
        {
            var tnHeaderInfo = new TreeViewItem()
            {
                Header = "Header Info"
            };

            treeControl.Items.Add(tnHeaderInfo);
            // Descriptions
            var tnDescriptions = new TreeViewItem()
            {
                Header = "Descriptions"
            };

            tnHeaderInfo.Items.Add(tnDescriptions);

            int counter = 0;

            while (IFCEngine.GetSPFFHeaderItem(IfcModel, 0, counter++, IfcEngine.SdaiType.Unicode, out IntPtr description) == IntPtr.Zero)
            {
                var tnDescription = new TreeViewItem()
                {
                    Header = Marshal.PtrToStringUni(description)
                };
                tnDescriptions.Items.Add(tnDescription);
            }

            // ImplementationLevel
            IFCEngine.GetSPFFHeaderItem(IfcModel, 1, 0, IfcEngine.SdaiType.Unicode, out IntPtr implementationLevel);

            var tnImplementationLevel = new TreeViewItem()
            {
                Header = "ImplementationLevel = '" + Marshal.PtrToStringUni(implementationLevel) + "'"
            };

            tnHeaderInfo.Items.Add(tnImplementationLevel);

            // Name
            IFCEngine.GetSPFFHeaderItem(IfcModel, 2, 0, IfcEngine.SdaiType.Unicode, out IntPtr name);

            this.ModelName = Marshal.PtrToStringUni(name);
            var tnName = new TreeViewItem()
            {
                Header = "Name = '" + Marshal.PtrToStringUni(name) + "'"
            };

            tnHeaderInfo.Items.Add(tnName);

            // TimeStamp
            IFCEngine.GetSPFFHeaderItem(IfcModel, 3, 0, IfcEngine.SdaiType.Unicode, out IntPtr timeStamp);

            var tnTimeStamp = new TreeViewItem()
            {
                Header = "TimeStamp = '" + Marshal.PtrToStringUni(timeStamp) + "'"
            };

            tnHeaderInfo.Items.Add(tnTimeStamp);

            // Authors
            var tnAuthors = new TreeViewItem()
            {
                Header = "Authors"
            };

            tnHeaderInfo.Items.Add(tnAuthors);

            counter = 0;
            while (IFCEngine.GetSPFFHeaderItem(IfcModel, 4, counter++, IfcEngine.SdaiType.Unicode, out IntPtr author) == IntPtr.Zero)
            {
                var tnAuthor = new TreeViewItem()
                {
                    Header = Marshal.PtrToStringUni(author)
                };
                tnAuthors.Items.Add(tnAuthor);
            }

            // Organizations
            var tnOrganizations = new TreeViewItem()
            {
                Header = "Organizations"
            };

            tnHeaderInfo.Items.Add(tnOrganizations);

            counter = 0;
            while (IFCEngine.GetSPFFHeaderItem(IfcModel, 5, counter++, IfcEngine.SdaiType.Unicode, out IntPtr organization) == IntPtr.Zero)
            {
                var tnOrganization = new TreeViewItem()
                {
                    Header = Marshal.PtrToStringUni(organization)
                };
                tnOrganizations.Items.Add(tnOrganization);
            }

            // PreprocessorVersion
            IFCEngine.GetSPFFHeaderItem(IfcModel, 6, 0, IfcEngine.SdaiType.Unicode, out IntPtr preprocessorVersion);

            var tnPreprocessorVersion = new TreeViewItem()
            {
                Header = "PreprocessorVersion = '" + Marshal.PtrToStringUni(preprocessorVersion) + "'"
            };

            tnHeaderInfo.Items.Add(tnPreprocessorVersion);

            // OriginatingSystem
            IFCEngine.GetSPFFHeaderItem(IfcModel, 7, 0, IfcEngine.SdaiType.Unicode, out IntPtr originatingSystem);

            var tnOriginatingSystem = new TreeViewItem()
            {
                Header = "OriginatingSystem = '" + Marshal.PtrToStringUni(originatingSystem) + "'"
            };

            tnHeaderInfo.Items.Add(tnOriginatingSystem);

            // Authorization
            IFCEngine.GetSPFFHeaderItem(IfcModel, 8, 0, IfcEngine.SdaiType.Unicode, out IntPtr authorization);

            var tnAuthorization = new TreeViewItem()
            {
                Header = "Authorization = '" + Marshal.PtrToStringUni(authorization) + "'"
            };

            tnHeaderInfo.Items.Add(tnAuthorization);

            // FileSchemas
            var tnFileSchemas = new TreeViewItem()
            {
                Header = "FileSchemas"
            };

            tnHeaderInfo.Items.Add(tnFileSchemas);

            counter = 0;
            while (IFCEngine.GetSPFFHeaderItem(IfcModel, 9, counter++, IfcEngine.SdaiType.Unicode, out IntPtr fileSchema) == IntPtr.Zero)
            {
                var tnFileSchema = new TreeViewItem()
                {
                    Header = Marshal.PtrToStringUni(fileSchema)
                };
                tnFileSchemas.Items.Add(tnFileSchema);
            }
        }
コード例 #4
0
ファイル: CIFCTreeData.cs プロジェクト: stefkeB/IfcEngineCS
        /// <summary>
        /// Helper
        /// </summary>
        private void CreateHeaderTreeItems()
        {
            // Header info
            TreeViewItem tnHeaderInfo = new TreeViewItem()
            {
                Header = "Header Info"
            };

            _treeControl.Items.Add(tnHeaderInfo);

            // Descriptions
            TreeViewItem tnDescriptions = new TreeViewItem()
            {
                Header = "Descriptions"
            };

            tnHeaderInfo.Items.Add(tnDescriptions);

            int    i = 0;
            IntPtr description;

            while (_ifcEngine.GetSPFFHeaderItem(_ifcModel, 0, i++, IfcEngine.SdaiType.Unicode, out description) == IntPtr.Zero)
            {
                TreeViewItem tnDescription = new TreeViewItem()
                {
                    Header = Marshal.PtrToStringUni(description)
                };
                tnDescriptions.Items.Add(tnDescription);
            }

            // ImplementationLevel
            IntPtr implementationLevel;

            _ifcEngine.GetSPFFHeaderItem(_ifcModel, 1, 0, IfcEngine.SdaiType.Unicode, out implementationLevel);

            TreeViewItem tnImplementationLevel = new TreeViewItem()
            {
                Header = "ImplementationLevel = '" + Marshal.PtrToStringUni(implementationLevel) + "'"
            };

            tnHeaderInfo.Items.Add(tnImplementationLevel);


            // Name
            IntPtr name;

            _ifcEngine.GetSPFFHeaderItem(_ifcModel, 2, 0, IfcEngine.SdaiType.Unicode, out name);

            TreeViewItem tnName = new TreeViewItem()
            {
                Header = "Name = '" + Marshal.PtrToStringUni(name) + "'"
            };

            tnHeaderInfo.Items.Add(tnName);

            // TimeStamp
            IntPtr timeStamp;

            _ifcEngine.GetSPFFHeaderItem(_ifcModel, 3, 0, IfcEngine.SdaiType.Unicode, out timeStamp);

            TreeViewItem tnTimeStamp = new TreeViewItem()
            {
                Header = "TimeStamp = '" + Marshal.PtrToStringUni(timeStamp) + "'"
            };

            tnHeaderInfo.Items.Add(tnTimeStamp);

            // Authors
            TreeViewItem tnAuthors = new TreeViewItem()
            {
                Header = "Authors"
            };

            tnHeaderInfo.Items.Add(tnAuthors);

            i = 0;
            IntPtr author;

            while (_ifcEngine.GetSPFFHeaderItem(_ifcModel, 4, i++, IfcEngine.SdaiType.Unicode, out author) == IntPtr.Zero)
            {
                TreeViewItem tnAuthor = new TreeViewItem()
                {
                    Header = Marshal.PtrToStringUni(author)
                };
                tnAuthors.Items.Add(tnAuthor);
            }

            // Organizations
            TreeViewItem tnOrganizations = new TreeViewItem()
            {
                Header = "Organizations"
            };

            tnHeaderInfo.Items.Add(tnOrganizations);

            i = 0;
            IntPtr organization;

            while (_ifcEngine.GetSPFFHeaderItem(_ifcModel, 5, i++, IfcEngine.SdaiType.Unicode, out organization) == IntPtr.Zero)
            {
                TreeViewItem tnOrganization = new TreeViewItem()
                {
                    Header = Marshal.PtrToStringUni(organization)
                };
                tnOrganizations.Items.Add(tnOrganization);
            }

            // PreprocessorVersion
            IntPtr preprocessorVersion;

            _ifcEngine.GetSPFFHeaderItem(_ifcModel, 6, 0, IfcEngine.SdaiType.Unicode, out preprocessorVersion);

            TreeViewItem tnPreprocessorVersion = new TreeViewItem()
            {
                Header = "PreprocessorVersion = '" + Marshal.PtrToStringUni(preprocessorVersion) + "'"
            };

            tnHeaderInfo.Items.Add(tnPreprocessorVersion);

            // OriginatingSystem
            IntPtr originatingSystem;

            _ifcEngine.GetSPFFHeaderItem(_ifcModel, 7, 0, IfcEngine.SdaiType.Unicode, out originatingSystem);

            TreeViewItem tnOriginatingSystem = new TreeViewItem()
            {
                Header = "OriginatingSystem = '" + Marshal.PtrToStringUni(originatingSystem) + "'"
            };

            tnHeaderInfo.Items.Add(tnOriginatingSystem);

            // Authorization
            IntPtr authorization;

            _ifcEngine.GetSPFFHeaderItem(_ifcModel, 8, 0, IfcEngine.SdaiType.Unicode, out authorization);

            TreeViewItem tnAuthorization = new TreeViewItem()
            {
                Header = "Authorization = '" + Marshal.PtrToStringUni(authorization) + "'"
            };

            tnHeaderInfo.Items.Add(tnAuthorization);

            // FileSchemas
            TreeViewItem tnFileSchemas = new TreeViewItem()
            {
                Header = "FileSchemas"
            };

            tnHeaderInfo.Items.Add(tnFileSchemas);

            i = 0;
            IntPtr fileSchema;

            while (_ifcEngine.GetSPFFHeaderItem(_ifcModel, 9, i++, IfcEngine.SdaiType.Unicode, out fileSchema) == IntPtr.Zero)
            {
                TreeViewItem tnFileSchema = new TreeViewItem()
                {
                    Header = Marshal.PtrToStringUni(fileSchema)
                };
                tnHeaderInfo.Items.Add(tnFileSchema);
            }
        }