IfcDoc.Program.ExportMvd C# (CSharp) Method

ExportMvd() static private method

static private ExportMvd ( mvdXML mvd, DocProject docProject, bool>.Dictionary included ) : void
mvd IfcDoc.Schema.MVD.mvdXML
docProject DocProject
included bool>.Dictionary
return void
        internal static void ExportMvd(
            mvdXML mvd,
            DocProject docProject,
            Dictionary<DocObject, bool> included)
        {
            mvd.Uuid = Guid.NewGuid(); // changes every time saved
            mvd.Name = String.Empty;

            foreach (DocTemplateDefinition docTemplateDef in docProject.Templates)
            {
                if (included == null || included.ContainsKey(docTemplateDef))
                {
                    ConceptTemplate mvdConceptTemplate = new ConceptTemplate();
                    mvd.Templates.Add(mvdConceptTemplate);
                    ExportMvdTemplate(mvdConceptTemplate, docTemplateDef, included, true);
                }
            }

            foreach (DocModelView docModelView in docProject.ModelViews)
            {
                if (included == null || included.ContainsKey(docModelView))
                {
                    ModelView mvdModelView = new ModelView();
                    mvd.Views.Add(mvdModelView);
                    ExportMvdObject(mvdModelView, docModelView, true);
                    mvdModelView.ApplicableSchema = "IFC4";
                    mvdModelView.BaseView = docModelView.BaseView;

                    foreach (DocExchangeDefinition docExchangeDef in docModelView.Exchanges)
                    {
                        ExchangeRequirement mvdExchangeDef = new ExchangeRequirement();
                        mvdModelView.ExchangeRequirements.Add(mvdExchangeDef);
                        ExportMvdObject(mvdExchangeDef, docExchangeDef, true);
                        switch (docExchangeDef.Applicability)
                        {
                            case DocExchangeApplicabilityEnum.Export:
                                mvdExchangeDef.Applicability = ApplicabilityEnum.Export;
                                break;

                            case DocExchangeApplicabilityEnum.Import:
                                mvdExchangeDef.Applicability = ApplicabilityEnum.Import;
                                break;
                        }
                    }

                    // export template usages for model view
                    foreach (DocConceptRoot docRoot in docModelView.ConceptRoots)
                    {
                        if (docRoot.ApplicableEntity != null)
                        {
                            // check if entity contains any concept roots
                            ConceptRoot mvdConceptRoot = new ConceptRoot();
                            mvdModelView.Roots.Add(mvdConceptRoot);

                            Program.ExportMvdConceptRoot(mvdConceptRoot, docRoot, true);
                        }
                    }
                }
            }
        }