コード例 #1
0
ファイル: Constraint.cpp プロジェクト: lanigb/FreeCAD
void Constraint::Restore(XMLReader &reader)
{
    reader.readElement("Constrain");
    Name      = reader.getAttribute("Name");
    Type      = (ConstraintType)  reader.getAttributeAsInteger("Type");
    Value     = reader.getAttributeAsFloat("Value");
    First     = reader.getAttributeAsInteger("First");
    FirstPos  = (PointPos)  reader.getAttributeAsInteger("FirstPos");
    Second    = reader.getAttributeAsInteger("Second");
    SecondPos = (PointPos)  reader.getAttributeAsInteger("SecondPos");

    if(this->Type==InternalAlignment) {
        AlignmentType = (InternalAlignmentType) reader.getAttributeAsInteger("InternalAlignmentType");

        if (reader.hasAttribute("InternalAlignmentIndex"))
            InternalAlignmentIndex = reader.getAttributeAsInteger("InternalAlignmentIndex");
    }
    else {
        AlignmentType = Undef;
    }

    // read the third geo group if present
    if (reader.hasAttribute("Third")) {
        Third    = reader.getAttributeAsInteger("Third");
        ThirdPos = (PointPos)  reader.getAttributeAsInteger("ThirdPos");
    }

    // Read the distance a constraint label has been moved
    if (reader.hasAttribute("LabelDistance"))
        LabelDistance = (float)reader.getAttributeAsFloat("LabelDistance");

    if (reader.hasAttribute("LabelPosition"))
        LabelPosition = (float)reader.getAttributeAsFloat("LabelPosition");

    if (reader.hasAttribute("IsDriving"))
        isDriving = reader.getAttributeAsInteger("IsDriving") ? true : false;

    if (reader.hasAttribute("IsInVirtualSpace"))
        isInVirtualSpace = reader.getAttributeAsInteger("IsInVirtualSpace") ? true : false;
}