internal override void SetXML(XmlElement xml, BaseClassIfc host, HashSet<int> processed)
{
base.SetXML(xml, host, processed);
setAttribute(xml, "Name", Name);
setAttribute(xml, "Description", Description);
xml.SetAttribute("ConstraintGrade", mConstraintGrade.ToString().ToLower());
setAttribute(xml, "ConstraintSource", ConstraintSource);
if (mCreatingActor > 0)
xml.AppendChild(mDatabase[mCreatingActor].GetXML(xml.OwnerDocument, "CreatingActor", host, processed));
setAttribute(xml, "UserDefinedGrade", UserDefinedGrade);
if (mHasExternalReferences.Count > 0)
{
XmlElement element = xml.OwnerDocument.CreateElement("HasExternalReferences");
xml.AppendChild(element);
foreach (IfcExternalReferenceRelationship r in HasExternalReferences)
element.AppendChild(r.GetXML(xml.OwnerDocument, "", this, processed));
}
if(mPropertiesForConstraint.Count > 0)
{
XmlElement element = xml.OwnerDocument.CreateElement("PropertiesForConstraint");
foreach (IfcResourceConstraintRelationship r in mPropertiesForConstraint)
{
if (host.Index != r.mIndex && !processed.Contains(r.mIndex))
element.AppendChild(r.GetXML(xml.OwnerDocument, "", this, processed));
}
if (element.HasChildNodes)
xml.AppendChild(element);
}
if (mHasConstraintRelationships.Count > 0)
{
XmlElement element = xml.OwnerDocument.CreateElement("HasConstraintRelationships");
foreach (IfcResourceConstraintRelationship r in HasConstraintRelationships)
{
if (host.Index != r.mIndex)
element.AppendChild(r.GetXML(xml.OwnerDocument, "", this, processed));
}
if (element.HasChildNodes)
xml.AppendChild(element);
}
}
}