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);
}
}
}
}
}