#include #include #include #include #include #include #include #include #include #include #include //======================================================================= //function : MDataXtd_ConstraintRetrievalDriver //purpose : //======================================================================= MDataXtd_ConstraintRetrievalDriver::MDataXtd_ConstraintRetrievalDriver(const Handle(CDM_MessageDriver)& theMsgDriver):MDF_ARDriver(theMsgDriver) { } //======================================================================= //function : VersionNumber //purpose : //======================================================================= Standard_Integer MDataXtd_ConstraintRetrievalDriver::VersionNumber() const { return 0; } //======================================================================= //function : SourceType //purpose : //======================================================================= Handle(Standard_Type) MDataXtd_ConstraintRetrievalDriver::SourceType() const { return STANDARD_TYPE(PDataXtd_Constraint); } //======================================================================= //function : NewEmpty //purpose : //======================================================================= Handle(TDF_Attribute) MDataXtd_ConstraintRetrievalDriver::NewEmpty() const { return new TDataXtd_Constraint (); } //======================================================================= //function : Paste //purpose : //======================================================================= void MDataXtd_ConstraintRetrievalDriver::Paste ( const Handle(PDF_Attribute)& Source, const Handle(TDF_Attribute)& Target, const Handle(MDF_RRelocationTable)& RelocTable) const { Handle(PDataXtd_Constraint) S = Handle(PDataXtd_Constraint)::DownCast (Source); Handle(TDataXtd_Constraint) T = Handle(TDataXtd_Constraint)::DownCast (Target); Handle(TDataStd_Real) TValue; Handle(PDataStd_Real) Value = S->GetValue (); if (!Value.IsNull ()) { if (!RelocTable->HasRelocation(Value, TValue )) { Standard_NoSuchObject::Raise("MDataXtd_ConstraintRetrievalDriver::Paste"); } T->SetValue(TValue); } Handle(PDF_HAttributeArray1) PGeometries = S->GetGeometries (); if (!PGeometries.IsNull()) { for (Standard_Integer i = 1; i <= PGeometries->Length (); i++) { Handle(PDF_Attribute) PG = PGeometries->Value (i); if (!PG.IsNull ()) { Handle(TNaming_NamedShape) G; if (!RelocTable->HasRelocation (PG, G)) { Standard_NoSuchObject::Raise("MDataXtd_ConstraintRetrievalDriver::Paste"); } T->SetGeometry (i, G); } } } Handle(PNaming_NamedShape) PPlane = S->GetPlane(); Handle(TNaming_NamedShape) TPlane; if (!PPlane.IsNull()) { if (!RelocTable->HasRelocation (PPlane, TPlane )) { Standard_NoSuchObject::Raise("MDataXtd_ConstraintStorageDriver::Paste"); } T->SetPlane(TPlane); } T->SetType (MDataXtd::IntegerToConstraintType (S->GetType ())); T->Verified(S->Verified()); T->Inverted(S->Inverted()); T->Reversed(S->Reversed()); }