private void BuildMaps(Dictionary<string, DocObject> mapEntity, Dictionary<string, string> mapSchema)
{
foreach (SEntity entity in this.m_instances.Values)
{
if (entity is DocTemplateDefinition)
{
// new in 4.5
DocTemplateDefinition docTemplate = (DocTemplateDefinition)entity;
if (docTemplate.Name != null && !mapEntity.ContainsKey(docTemplate.Name))
{
// TBD: "Body Geometry" occurs multiple times
mapEntity.Add(docTemplate.Name, docTemplate);
}
}
else if (entity is DocEntity)
{
DocEntity docEntity = (DocEntity)entity;
if (docEntity.Name != null)
{
if(!mapEntity.ContainsKey(docEntity.Name))
{
mapEntity.Add(docEntity.Name, docEntity);
}
}
}
else if (entity is DocType)
{
DocType docType = (DocType)entity;
if (!mapEntity.ContainsKey(docType.Name))
{
mapEntity.Add(docType.Name, docType);
}
}
else if (entity is DocFunction)
{
DocFunction docFunc = (DocFunction)entity;
if (!mapEntity.ContainsKey(docFunc.Name))
{
mapEntity.Add(docFunc.Name, docFunc);
}
}
else if (entity is DocGlobalRule)
{
DocGlobalRule docFunc = (DocGlobalRule)entity;
mapEntity.Add(docFunc.Name, docFunc);
}
else if (entity is DocPropertySet)
{
DocPropertySet docFunc = (DocPropertySet)entity;
mapEntity.Add(docFunc.Name, docFunc);
}
else if(entity is DocPropertyEnumeration)
{
DocPropertyEnumeration docEnum = (DocPropertyEnumeration)entity;
mapEntity.Add(docEnum.Name, docEnum);
}
else if (entity is DocQuantitySet)
{
DocQuantitySet docFunc = (DocQuantitySet)entity;
mapEntity.Add(docFunc.Name, docFunc);
}
else if (entity is DocSchema)
{
DocSchema docSchema = (DocSchema)entity;
foreach (DocEntity def in docSchema.Entities)
{
if (def.Name != null)
{
if(!mapSchema.ContainsKey(def.Name))
{
mapSchema.Add(def.Name, docSchema.Name);
}
}
}
foreach (DocType def in docSchema.Types)
{
// bug in vex file: IfcNullStyle included twice (?)
if (!mapSchema.ContainsKey(def.Name))
{
mapSchema.Add(def.Name, docSchema.Name);
}
}
foreach (DocFunction def in docSchema.Functions)
{
// e.g. IfcDotProduct defined in multiple schemas!!!
if (!mapSchema.ContainsKey(def.Name))
{
mapSchema.Add(def.Name, docSchema.Name);
}
}
foreach (DocGlobalRule def in docSchema.GlobalRules)
{
mapSchema.Add(def.Name, docSchema.Name);
}
foreach (DocPropertySet def in docSchema.PropertySets)
{
mapSchema.Add(def.Name, docSchema.Name);
}
foreach (DocPropertyEnumeration def in docSchema.PropertyEnums)
{
mapSchema.Add(def.Name, docSchema.Name);
}
foreach (DocQuantitySet def in docSchema.QuantitySets)
{
mapSchema.Add(def.Name, docSchema.Name);
}
}
}
}