internal override void ParseXml(XmlElement xml)
{
base.ParseXml(xml);
if (xml.HasAttribute("CoordinateSpaceDimension"))
CoordinateSpaceDimension = int.Parse(xml.Attributes["CoordinateSpaceDimension"].Value);
if (xml.HasAttribute("Precision"))
Precision = double.Parse(xml.Attributes["Precision"].Value);
foreach (XmlNode child in xml.ChildNodes)
{
string name = child.Name;
if (string.Compare(name, "WorldCoordinateSystem") == 0)
WorldCoordinateSystem = mDatabase.ParseXml<IfcAxis2Placement3D>(child as XmlElement);
else if (string.Compare(name, "TrueNorth") == 0)
TrueNorth = mDatabase.ParseXml<IfcDirection>(child as XmlElement);
else if (string.Compare(name, "HasSubContexts") == 0)
{
List<IfcGeometricRepresentationSubContext> subs = new List<IfcGeometricRepresentationSubContext>();
foreach (XmlNode node in child.ChildNodes)
{
IfcGeometricRepresentationSubContext sub = mDatabase.ParseXml<IfcGeometricRepresentationSubContext>(node as XmlElement);
if (sub != null)
sub.ContainerContext = this;
}
}
else if (string.Compare(name, "HasCoordinateOperation") == 0)
HasCoordinateOperation = mDatabase.ParseXml<IfcCoordinateOperation>(child as XmlElement);
}
}