1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-09-03 14:10:33 +03:00

0026411: Necessary to improve XCAF to store and querying GD&T data.

This commit is contained in:
ink
2015-07-09 12:01:55 +03:00
parent 59b82b1526
commit 74ddccd303
42 changed files with 5498 additions and 105 deletions

View File

@@ -402,6 +402,7 @@ p VrmlAPI
p VrmlConverter
p VrmlData
p XCAFApp
p XCAFDimTolObjects
p XCAFDoc
p XCAFDrivers
p XCAFPrs
@@ -481,4 +482,4 @@ p IVtkVTK
p IVtkTools
t TKIVtk
p IVtkDraw
t TKIVtkDraw
t TKIVtkDraw

View File

@@ -2024,10 +2024,10 @@ Standard_Boolean STEPCAFControl_Writer::WriteDGTs (const Handle(XSControl_WorkSe
Standard_Integer i;
for(i=1; i<=DGTLabels.Length(); i++) {
TDF_Label DatumL = DGTLabels.Value(i);
TDF_Label ShapeL;
TDF_LabelSequence ShapeL;
if(!DGTTool->GetRefShapeLabel(DatumL,ShapeL)) continue;
// find target shape
TopoDS_Shape aShape = XCAFDoc_ShapeTool::GetShape(ShapeL);
TopoDS_Shape aShape = XCAFDoc_ShapeTool::GetShape(ShapeL.Value(1));
TopLoc_Location Loc;
TColStd_SequenceOfTransient seqRI;
FindEntities( FP, aShape, Loc, seqRI );
@@ -2105,10 +2105,10 @@ Standard_Boolean STEPCAFControl_Writer::WriteDGTs (const Handle(XSControl_WorkSe
if(DGTLabels.Length()<=0) return Standard_False;
for(i=1; i<=DGTLabels.Length(); i++) {
TDF_Label DimTolL = DGTLabels.Value(i);
TDF_Label ShapeL;
TDF_LabelSequence ShapeL;
if(!DGTTool->GetRefShapeLabel(DimTolL,ShapeL)) continue;
// find target shape
TopoDS_Shape aShape = XCAFDoc_ShapeTool::GetShape(ShapeL);
TopoDS_Shape aShape = XCAFDoc_ShapeTool::GetShape(ShapeL.Value(1));
TopLoc_Location Loc;
TColStd_SequenceOfTransient seqRI;
FindEntities( FP, aShape, Loc, seqRI );
@@ -2248,7 +2248,7 @@ Standard_Boolean STEPCAFControl_Writer::WriteDGTs (const Handle(XSControl_WorkSe
else if(kind<50) { //tolerance
if(kind<35) { // tolerance with datum system
TDF_LabelSequence DatumLabels;
DGTTool->GetDatumTolerLabels(DimTolL,DatumLabels);
DGTTool->GetDatumOfTolerLabels(DimTolL,DatumLabels);
Standard_Integer NbDR = DatumLabels.Length();
Handle(StepDimTol_HArray1OfDatumReference) HADR = new StepDimTol_HArray1OfDatumReference(1,NbDR);
for(Standard_Integer j=1; j<=NbDR; j++) {

View File

@@ -1,3 +1,4 @@
XCAFApp
XCAFDimTolObjects
XCAFDoc
XCAFPrs

View File

@@ -0,0 +1,291 @@
-- Created on: 2015-07-31
-- Created by: data exchange team
-- Copyright (c) 2000-2015 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- This library is free software; you can redistribute it and/or modify it under
-- the terms of the GNU Lesser General Public License version 2.1 as published
-- by the Free Software Foundation, with special exception defined in the file
-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-- distribution for complete text of the license and disclaimer of any warranty.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
package XCAFDimTolObjects
---Purpose:
uses
TCollection,
TColStd,
TopoDS,
gp,
TColgp,
XCAFDoc,
TDocStd
is
enumeration DimensionType is
---Purpose: Defines types of dimension
DimensionType_Location_None,
DimensionType_Location_CurvedDistance,
DimensionType_Location_LinearDistance,
DimensionType_Location_LinearDistance_FromCenterToOuter,
DimensionType_Location_LinearDistance_FromCenterToInner,
DimensionType_Location_LinearDistance_FromOuterToCenter,
DimensionType_Location_LinearDistance_FromOuterToOuter,
DimensionType_Location_LinearDistance_FromOuterToInner,
DimensionType_Location_LinearDistance_FromInnerToCenter,
DimensionType_Location_LinearDistance_FromInnerToOuter,
DimensionType_Location_LinearDistance_FromInnerToInner,
DimensionType_Location_Angular,
DimensionType_Location_Oriented,
DimensionType_Location_WithPath,
DimensionType_Size_CurveLength,
DimensionType_Size_Diameter,
DimensionType_Size_SphericalDiameter,
DimensionType_Size_Radius,
DimensionType_Size_SphericalRadius,
DimensionType_Size_ToroidalMinorDiameter,
DimensionType_Size_ToroidalMajorDiameter,
DimensionType_Size_ToroidalMinorRadius,
DimensionType_Size_ToroidalMajorRadius,
DimensionType_Size_ToroidalHighMajorDiameter,
DimensionType_Size_ToroidalLowMajorDiameter,
DimensionType_Size_ToroidalHighMajorRadius,
DimensionType_Size_ToroidalLowMajorRadius,
DimensionType_Size_Thickness,
DimensionType_Size_Angular,
DimensionType_Size_WithPath
end DimensionType;
enumeration DimensionQualifier is
---Purpose: Defines types of qualifier
DimensionQualifier_None,
DimensionQualifier_Min,
DimensionQualifier_Max,
DimensionQualifier_Avg
end DimensionQualifier;
enumeration DimensionFormVariance is
---Purpose: Defines value of form variance
DimensionFormVariance_None,
DimensionFormVariance_A,
DimensionFormVariance_B,
DimensionFormVariance_C,
DimensionFormVariance_CD,
DimensionFormVariance_D,
DimensionFormVariance_E,
DimensionFormVariance_EF,
DimensionFormVariance_F,
DimensionFormVariance_FG,
DimensionFormVariance_G,
DimensionFormVariance_H,
DimensionFormVariance_JS,
DimensionFormVariance_J,
DimensionFormVariance_K,
DimensionFormVariance_M,
DimensionFormVariance_N,
DimensionFormVariance_P,
DimensionFormVariance_R,
DimensionFormVariance_S,
DimensionFormVariance_T,
DimensionFormVariance_U,
DimensionFormVariance_V,
DimensionFormVariance_X,
DimensionFormVariance_Y,
DimensionFormVariance_Z,
DimensionFormVariance_ZA,
DimensionFormVariance_ZB,
DimensionFormVariance_ZC
end DimensionFormVariance;
enumeration DimensionGrade is
---Purpose: Defines value of grade
DimensionGrade_IT01,
DimensionGrade_IT0,
DimensionGrade_IT1,
DimensionGrade_IT2,
DimensionGrade_IT3,
DimensionGrade_IT4,
DimensionGrade_IT5,
DimensionGrade_IT6,
DimensionGrade_IT7,
DimensionGrade_IT8,
DimensionGrade_IT9,
DimensionGrade_IT10,
DimensionGrade_IT11,
DimensionGrade_IT12,
DimensionGrade_IT13,
DimensionGrade_IT14,
DimensionGrade_IT15,
DimensionGrade_IT16,
DimensionGrade_IT17,
DimensionGrade_IT18
end DimensionGrade;
enumeration GeomToleranceType is
---Purpose: Defines types of geom tolerance
GeomToleranceType_None,
GeomToleranceType_Angularity,
GeomToleranceType_CircularRunout,
GeomToleranceType_CircularityOrRoundness,
GeomToleranceType_Coaxiality,
GeomToleranceType_Concentricity,
GeomToleranceType_Cylindricity,
GeomToleranceType_Flatness,
GeomToleranceType_Parallelism,
GeomToleranceType_Perpendicularity,
GeomToleranceType_Position,
GeomToleranceType_ProfileOfLine,
GeomToleranceType_ProfileOfSurface,
GeomToleranceType_Straightness,
GeomToleranceType_Symmetry,
GeomToleranceType_TotalRunout
end GeomToleranceType;
enumeration GeomToleranceTypeValue is
---Purpose: Defines types of value of tolerane
GeomToleranceTypeValue_None,
GeomToleranceTypeValue_Diameter,
GeomToleranceTypeValue_SphericalDiameter
end GeomToleranceTypeValue;
enumeration GeomToleranceMatReqModif is
---Purpose: Defines types of material requirement
GeomToleranceMatReqModif_None,
GeomToleranceMatReqModif_M,
GeomToleranceMatReqModif_L
end GeomToleranceMatReqModif;
enumeration GeomToleranceZoneModif is
---Purpose: Defines types of zone
GeomToleranceZoneModif_None,
GeomToleranceZoneModif_P,
GeomToleranceZoneModif_NonUniform
end GeomToleranceZoneModif;
enumeration DatumSingleModif is
---Purpose: Defines modifirs
DatumSingleModif_AnyCrossSection,
DatumSingleModif_Any_LongitudinalSection,
DatumSingleModif_Basic,
DatumSingleModif_ContactingFeature,
DatumSingleModif_DegreeOfFreedomConstraintU,
DatumSingleModif_DegreeOfFreedomConstraintV,
DatumSingleModif_DegreeOfFreedomConstraintW,
DatumSingleModif_DegreeOfFreedomConstraintX,
DatumSingleModif_DegreeOfFreedomConstraintY,
DatumSingleModif_DegreeOfFreedomConstraintZ,
DatumSingleModif_DistanceVariable,
DatumSingleModif_FreeState,
DatumSingleModif_LeastMaterialRequirement,
DatumSingleModif_Line,
DatumSingleModif_MajorDiameter,
DatumSingleModif_MaximumMaterialRequirement,
DatumSingleModif_MinorDiameter,
DatumSingleModif_Orientation,
DatumSingleModif_PitchDiameter,
DatumSingleModif_Plane,
DatumSingleModif_Point,
DatumSingleModif_Translation
end DatumSingleModif;
enumeration DatumModifWithValue is
---Purpose: Defines modifirs
DatumModifWithValue_None,
DatumModifWithValue_CircularOrCylindrical,
DatumModifWithValue_Distance,
DatumModifWithValue_Projected,
DatumModifWithValue_Spherical
end DatumModifWithValue;
enumeration DimensionModif is
---Purpose: Defines modifirs
DimensionModif_ControlledRadius,
DimensionModif_Square,
DimensionModif_StatisticalTolerance,
DimensionModif_ContinuousFeature,
DimensionModif_TwoPointSize,
DimensionModif_LocalSizeDefinedBySphere,
DimensionModif_LeastSquaresAssociationCriterion,
DimensionModif_MaximumInscribedAssociation,
DimensionModif_MinimumCircumscribedAssociation,
DimensionModif_CircumferenceDiameter,
DimensionModif_AreaDiameter,
DimensionModif_VolumeDiameter,
DimensionModif_MaximumSize,
DimensionModif_MinimumSize,
DimensionModif_AverageSize,
DimensionModif_MedianSize,
DimensionModif_MidRangeSize,
DimensionModif_RangeOfSizes,
DimensionModif_AnyRestrictedPortionOfFeature,
DimensionModif_AnyCrossSection,
DimensionModif_SpecificFixedCrossSection,
DimensionModif_CommonTolerance,
DimensionModif_FreeStateCondition,
DimensionModif_Between
end DimensionModif;
enumeration GeomToleranceModif is
---Purpose: Defines modifirs
GeomToleranceModif_Any_Cross_Section,
GeomToleranceModif_Common_Zone,
GeomToleranceModif_Each_Radial_Element,
GeomToleranceModif_Free_State,
GeomToleranceModif_Least_Material_Requirement,
GeomToleranceModif_Line_Element,
GeomToleranceModif_Major_Diameter,
GeomToleranceModif_Maximum_Material_Requirement,
GeomToleranceModif_Minor_Diameter,
GeomToleranceModif_Not_Convex,
GeomToleranceModif_Pitch_Diameter,
GeomToleranceModif_Reciprocity_Requirement,
GeomToleranceModif_Separate_Requirement,
GeomToleranceModif_Statistical_Tolerance,
GeomToleranceModif_Tangent_Plane
end GeomToleranceModif;
class DimensionObject;
class GeomToleranceObject;
class DatumObject;
class Tool;
class DimensionObjectSequence instantiates Sequence from TCollection
(DimensionObject from XCAFDimTolObjects);
---Purpose: class for containing Dimension.
class GeomToleranceObjectSequence instantiates Sequence from TCollection
(GeomToleranceObject from XCAFDimTolObjects);
---Purpose: class for containing GeomTolerances.
class DatumObjectSequence instantiates Sequence from TCollection
(DatumObject from XCAFDimTolObjects);
---Purpose: class for containing Datums.
class DimensionModifiersSequence instantiates Sequence from TCollection
(DimensionModif from XCAFDimTolObjects);
---Purpose: class for containing modifiers of Dimension.
class GeomToleranceModifiersSequence instantiates Sequence from TCollection
(GeomToleranceModif from XCAFDimTolObjects);
---Purpose: class for containing modifiers of GeomTolerances.
class DatumModifiersSequence instantiates Sequence from TCollection
(DatumSingleModif from XCAFDimTolObjects);
---Purpose: class for containing modifiers of Datums.
class DataMapOfToleranceDatum instantiates DataMap from TCollection
(GeomToleranceObject from XCAFDimTolObjects,DatumObject from XCAFDimTolObjects,MapTransientHasher from TColStd);
---Purpose:
end XCAFDimTolObjects;

View File

@@ -0,0 +1,63 @@
-- Created on: 2015-07-31
-- Created by: data exchange team
-- Copyright (c) 2000-2015 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- This library is free software; you can redistribute it and/or modify it under
-- the terms of the GNU Lesser General Public License version 2.1 as published
-- by the Free Software Foundation, with special exception defined in the file
-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-- distribution for complete text of the license and disclaimer of any warranty.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
class DatumObject from XCAFDimTolObjects inherits Transient from Standard
---Purpose: object to store datum
uses
HAsciiString from TCollection,
DatumModifWithValue from XCAFDimTolObjects,
DatumModifiersSequence from XCAFDimTolObjects,
DatumSingleModif from XCAFDimTolObjects,
Shape from TopoDS
is
Create returns DatumObject from XCAFDimTolObjects;
Create(theObj : DatumObject from XCAFDimTolObjects) returns DatumObject from XCAFDimTolObjects;
---Category: class methods
-- =============
GetName (me) returns HAsciiString from TCollection;
SetName (me : mutable; theTag : HAsciiString from TCollection);
GetModifiers (me) returns DatumModifiersSequence from XCAFDimTolObjects;
SetModifiers (me : mutable; theModifiers : DatumModifiersSequence from XCAFDimTolObjects);
GetModifierWithValue (me; theModifier : out DatumModifWithValue from XCAFDimTolObjects; theValue : out Real from Standard);
SetModifierWithValue (me : mutable; theModifier : DatumModifWithValue from XCAFDimTolObjects; theValue : Real from Standard);
AddModifier (me : mutable; theModifier : DatumSingleModif from XCAFDimTolObjects);
GetDatumTarget (me) returns Shape from TopoDS;
SetDatumTarget (me : mutable; theShape : Shape from TopoDS);
IsDatumTarget (me) returns Boolean from Standard;
fields
myName : HAsciiString from TCollection;
myModifiers : DatumModifiersSequence from XCAFDimTolObjects;
myModifierWithValue : DatumModifWithValue from XCAFDimTolObjects;
myValueOfModifier : Real from Standard;
myDatumTarget : Shape from TopoDS;
end DatumObject;

View File

@@ -0,0 +1,142 @@
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <XCAFDimTolObjects_DatumObject.ixx>
//=======================================================================
//function : XCAFDimTolObjects_DatumObject
//purpose :
//=======================================================================
XCAFDimTolObjects_DatumObject::XCAFDimTolObjects_DatumObject()
{
}
//=======================================================================
//function : XCAFDimTolObjects_DatumObject
//purpose :
//=======================================================================
XCAFDimTolObjects_DatumObject::XCAFDimTolObjects_DatumObject(const Handle(XCAFDimTolObjects_DatumObject)& theObj)
{
myName = theObj->myName;
myModifiers = theObj->myModifiers;
myModifierWithValue = theObj->myModifierWithValue;
myValueOfModifier = theObj->myValueOfModifier;
myDatumTarget = theObj->myDatumTarget;
}
//=======================================================================
//function : GetName
//purpose :
//=======================================================================
Handle(TCollection_HAsciiString) XCAFDimTolObjects_DatumObject::GetName() const
{
if(myName.IsNull())
return new TCollection_HAsciiString();
return myName;
}
//=======================================================================
//function : SetName
//purpose :
//=======================================================================
void XCAFDimTolObjects_DatumObject::SetName(const Handle(TCollection_HAsciiString)& theName)
{
myName = theName;
}
//=======================================================================
//function : GetModifiers
//purpose :
//=======================================================================
XCAFDimTolObjects_DatumModifiersSequence XCAFDimTolObjects_DatumObject::GetModifiers() const
{
return myModifiers;
}
//=======================================================================
//function : SetModifiers
//purpose :
//=======================================================================
void XCAFDimTolObjects_DatumObject::SetModifiers(const XCAFDimTolObjects_DatumModifiersSequence& theModifiers)
{
myModifiers = theModifiers;
}
//=======================================================================
//function : SetModifierWithValue
//purpose :
//=======================================================================
void XCAFDimTolObjects_DatumObject::SetModifierWithValue(const XCAFDimTolObjects_DatumModifWithValue theModifier, const Standard_Real theValue)
{
myModifierWithValue = theModifier;
myValueOfModifier = theValue;
}
//=======================================================================
//function : GetModifierWithValue
//purpose :
//=======================================================================
void XCAFDimTolObjects_DatumObject::GetModifierWithValue(XCAFDimTolObjects_DatumModifWithValue& theModifier, Standard_Real& theValue) const
{
theModifier = myModifierWithValue;
theValue = myValueOfModifier;
}
//=======================================================================
//function : AddModifier
//purpose :
//=======================================================================
void XCAFDimTolObjects_DatumObject::AddModifier(const XCAFDimTolObjects_DatumSingleModif theModifier)
{
myModifiers.Append(theModifier);
}
//=======================================================================
//function : GetDatumTarget
//purpose :
//=======================================================================
TopoDS_Shape XCAFDimTolObjects_DatumObject::GetDatumTarget() const
{
return myDatumTarget;
}
//=======================================================================
//function : SetDatumTarget
//purpose :
//=======================================================================
void XCAFDimTolObjects_DatumObject::SetDatumTarget (const TopoDS_Shape& theShape)
{
myDatumTarget = theShape;
}
//=======================================================================
//function : IsDatumTarget
//purpose :
//=======================================================================
Standard_Boolean XCAFDimTolObjects_DatumObject::IsDatumTarget() const
{
return !myDatumTarget.IsNull();
}

View File

@@ -0,0 +1,128 @@
-- Created on: 2015-07-31
-- Created by: data exchange team
-- Copyright (c) 2000-2015 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- This library is free software; you can redistribute it and/or modify it under
-- the terms of the GNU Lesser General Public License version 2.1 as published
-- by the Free Software Foundation, with special exception defined in the file
-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-- distribution for complete text of the license and disclaimer of any warranty.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
class DimensionObject from XCAFDimTolObjects inherits Transient from Standard
---Purpose: object to store dimension
uses
HArray1OfReal from TColStd,
DimensionQualifier from XCAFDimTolObjects,
DimensionType from XCAFDimTolObjects,
DimensionFormVariance from XCAFDimTolObjects,
DimensionGrade from XCAFDimTolObjects,
Edge from TopoDS,
Dir from gp,
HArray1OfPnt from TColgp,
DimensionModifiersSequence from XCAFDimTolObjects,
DimensionModif from XCAFDimTolObjects
is
Create returns DimensionObject from XCAFDimTolObjects;
Create(theObj : DimensionObject from XCAFDimTolObjects) returns DimensionObject from XCAFDimTolObjects;
---Category: class methods
-- =============
SetQualifier (me : mutable; theQualifier : DimensionQualifier from XCAFDimTolObjects);
GetQualifier (me) returns DimensionQualifier from XCAFDimTolObjects;
HasQualifier (me) returns Boolean;
SetType (me : mutable; theTyupe : DimensionType from XCAFDimTolObjects);
GetType (me) returns DimensionType from XCAFDimTolObjects;
GetValue (me) returns Real from Standard ;
GetValues (me) returns HArray1OfReal from TColStd ;
SetValue (me : mutable; theValue : Real from Standard );
SetValues (me : mutable; theValue : HArray1OfReal from TColStd );
IsDimWithRange (me) returns Boolean;
SetUpperBound(me : mutable; theUpperBound : Real from Standard);
SetLowerBound(me : mutable; theLowerBound : Real from Standard);
GetUpperBound(me) returns Real from Standard;
GetLowerBound(me) returns Real from Standard;
IsDimWithPlusMinusTolerance (me) returns Boolean;
SetUpperTolValue(me : mutable; theUperTolValue : Real from Standard) returns Boolean from Standard;
SetLowerTolValue(me : mutable; theLowerTolValue : Real from Standard) returns Boolean from Standard;
GetUpperTolValue(me) returns Real from Standard;
GetLowerTolValue(me) returns Real from Standard;
IsDimWithClassOfTolerance (me) returns Boolean;
SetClassOfTolerance(me : mutable; theHole : Boolean from Standard;
theFormVariance : DimensionFormVariance from XCAFDimTolObjects;
theGrade : DimensionGrade from XCAFDimTolObjects);
GetClassOfTolerance(me; theHole : out Boolean from Standard;
theFormVariance : out DimensionFormVariance from XCAFDimTolObjects;
theGrade : out DimensionGrade from XCAFDimTolObjects)
returns Boolean from Standard;
SetNbOfDecimalPlaces(me : mutable; theL : Integer from Standard;
theR : Integer from Standard);
GetNbOfDecimalPlaces(me; theL : out Integer from Standard;
theR : out Integer from Standard);
GetModifiers(me) returns DimensionModifiersSequence from XCAFDimTolObjects;
SetModifiers(me : mutable; theModifiers : DimensionModifiersSequence from XCAFDimTolObjects );
AddModifier(me : mutable; theModifier : DimensionModif from XCAFDimTolObjects);
GetPath(me) returns Edge from TopoDS;
SetPath(me : mutable; thePath : Edge from TopoDS);
GetDirection(me; theDir : out Dir from gp) returns Boolean from Standard;
SetDirection(me : mutable; theDir : Dir from gp)returns Boolean from Standard;
GetPoints(me) returns HArray1OfPnt from TColgp;
SetPoints(me : mutable; thePnts : HArray1OfPnt from TColgp);
fields
myType : DimensionType from XCAFDimTolObjects;
myVal : HArray1OfReal from TColStd;
myQualifier : DimensionQualifier from XCAFDimTolObjects;
myIsHole : Boolean from Standard;
myFormVariance : DimensionFormVariance from XCAFDimTolObjects;
myGrade : DimensionGrade from XCAFDimTolObjects;
myL : Integer from Standard;
myR : Integer from Standard;
myModifiers : DimensionModifiersSequence from XCAFDimTolObjects;
myPath : Edge from TopoDS;
myDir : Dir from gp;
myPnts : HArray1OfPnt from TColgp;
end DimensionObject;

View File

@@ -0,0 +1,430 @@
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <XCAFDimTolObjects_DimensionObject.ixx>
#include <Precision.hxx>
#include <TColgp_HArray1OfPnt.hxx>
//=======================================================================
//function : XCAFDimTolObjects_DimensionObject
//purpose :
//=======================================================================
XCAFDimTolObjects_DimensionObject::XCAFDimTolObjects_DimensionObject()
{
}
//=======================================================================
//function :
//purpose :
//=======================================================================
XCAFDimTolObjects_DimensionObject::XCAFDimTolObjects_DimensionObject(const Handle(XCAFDimTolObjects_DimensionObject)& theObj)
{
myType = theObj->myType;
myVal = theObj->myVal;
myQualifier = theObj->myQualifier;
myIsHole = theObj->myIsHole;
myFormVariance = theObj->myFormVariance;
myGrade = theObj->myGrade;
myL = theObj->myL;
myR = theObj->myR;
myModifiers = theObj->myModifiers;
myPath = theObj->myPath;
myDir = theObj->myDir;
myPnts = theObj->myPnts;
}
//=======================================================================
//function : SetQualifier
//purpose :
//=======================================================================
void XCAFDimTolObjects_DimensionObject::SetQualifier (const XCAFDimTolObjects_DimensionQualifier theQualifier)
{
myQualifier = theQualifier;
}
//=======================================================================
//function : GetQualifier
//purpose :
//=======================================================================
XCAFDimTolObjects_DimensionQualifier XCAFDimTolObjects_DimensionObject::GetQualifier() const
{
return myQualifier;
}
//=======================================================================
//function : HasQualifier
//purpose :
//=======================================================================
Standard_Boolean XCAFDimTolObjects_DimensionObject::HasQualifier() const
{
return (myQualifier != XCAFDimTolObjects_DimensionQualifier_None);
}
//=======================================================================
//function : SetType
//purpose :
//=======================================================================
void XCAFDimTolObjects_DimensionObject::SetType (const XCAFDimTolObjects_DimensionType theType)
{
myType = theType;
}
//=======================================================================
//function : GetType
//purpose :
//=======================================================================
XCAFDimTolObjects_DimensionType XCAFDimTolObjects_DimensionObject::GetType() const
{
return myType;
}
//=======================================================================
//function : GetValue
//purpose :
//=======================================================================
Standard_Real XCAFDimTolObjects_DimensionObject::GetValue () const
{
if(!myVal.IsNull() && (myVal->Length() == 1 || myVal->Length() == 3))
{
return myVal->Value(1);
}
return 0;
}
//=======================================================================
//function : GetValues
//purpose :
//=======================================================================
Handle(TColStd_HArray1OfReal) XCAFDimTolObjects_DimensionObject::GetValues () const
{
return myVal;
}
//=======================================================================
//function : SetValue
//purpose :
//=======================================================================
void XCAFDimTolObjects_DimensionObject::SetValue (const Standard_Real theValue)
{
myVal = new TColStd_HArray1OfReal(1, 1);
myVal->SetValue(1,theValue);
}
//=======================================================================
//function : SetValues
//purpose :
//=======================================================================
void XCAFDimTolObjects_DimensionObject::SetValues (const Handle(TColStd_HArray1OfReal)& theValue)
{
myVal = theValue;
}
//=======================================================================
//function : IsDimWithRange
//purpose :
//=======================================================================
Standard_Boolean XCAFDimTolObjects_DimensionObject::IsDimWithRange() const
{
if (!myVal.IsNull() && myVal->Length() == 2)
return Standard_True;
return Standard_False;
}
//=======================================================================
//function : SetUpperBound
//purpose :
//=======================================================================
void XCAFDimTolObjects_DimensionObject::SetUpperBound (const Standard_Real theUpperBound)
{
if(!myVal.IsNull() && myVal->Length() > 1)
myVal->SetValue(2, theUpperBound);
else
{
myVal = new TColStd_HArray1OfReal(1, 2);
myVal->SetValue(1, theUpperBound);
myVal->SetValue(2, theUpperBound);
}
}
//=======================================================================
//function : SetLowerBound
//purpose :
//=======================================================================
void XCAFDimTolObjects_DimensionObject::SetLowerBound (const Standard_Real theLowerBound)
{
if(!myVal.IsNull() && myVal->Length() > 1)
myVal->SetValue(1, theLowerBound);
else
{
myVal = new TColStd_HArray1OfReal(1, 2);
myVal->SetValue(2, theLowerBound);
myVal->SetValue(1, theLowerBound);
}
}
//=======================================================================
//function : GetUpperBound
//purpose :
//=======================================================================
Standard_Real XCAFDimTolObjects_DimensionObject::GetUpperBound () const
{
if(!myVal.IsNull() && myVal->Length() == 2)
{
return myVal->Value(2);
}
return 0;
}
//=======================================================================
//function : GetLowerBound
//purpose :
//=======================================================================
Standard_Real XCAFDimTolObjects_DimensionObject::GetLowerBound () const
{
if(!myVal.IsNull() && myVal->Length() == 2)
{
return myVal->Value(1);
}
return 0;
}
//=======================================================================
//function : IsDimWithPlusMinusTolerance
//purpose :
//=======================================================================
Standard_Boolean XCAFDimTolObjects_DimensionObject::IsDimWithPlusMinusTolerance() const
{
return (!myVal.IsNull() && myVal->Length() == 3);
}
//=======================================================================
//function : SetUpperTolValue
//purpose :
//=======================================================================
Standard_Boolean XCAFDimTolObjects_DimensionObject::SetUpperTolValue (const Standard_Real theUperTolValue)
{
if(!myVal.IsNull() && myVal->Length() == 3)
{
myVal->SetValue(3, theUperTolValue);
return Standard_True;
}
else if(!myVal.IsNull() && myVal->Length() == 1)
{
Standard_Real v = myVal->Value(1);
myVal = new TColStd_HArray1OfReal(1, 3);
myVal->SetValue(1, v);
myVal->SetValue(2, theUperTolValue);
myVal->SetValue(3, theUperTolValue);
return Standard_True;
}
return Standard_False;
}
//=======================================================================
//function : SetLowerTolValue
//purpose :
//=======================================================================
Standard_Boolean XCAFDimTolObjects_DimensionObject::SetLowerTolValue (const Standard_Real theLowerTolValue)
{
if(!myVal.IsNull() && myVal->Length() == 3)
{
myVal->SetValue(2, theLowerTolValue);
return Standard_True;
}
else if(!myVal.IsNull() && myVal->Length() == 1)
{
Standard_Real v = myVal->Value(1);
myVal = new TColStd_HArray1OfReal(1, 3);
myVal->SetValue(1, v);
myVal->SetValue(2, theLowerTolValue);
myVal->SetValue(3, theLowerTolValue);
return Standard_True;
}
return Standard_False;
}
//=======================================================================
//function : GetUpperTolValue
//purpose :
//=======================================================================
Standard_Real XCAFDimTolObjects_DimensionObject::GetUpperTolValue () const
{
if(!myVal.IsNull() && myVal->Length() == 3)
{
return myVal->Value(3);
}
return 0;
}
//=======================================================================
//function : GetLowerTolValue
//purpose :
//=======================================================================
Standard_Real XCAFDimTolObjects_DimensionObject::GetLowerTolValue () const
{
if(!myVal.IsNull() && myVal->Length() == 3)
{
return myVal->Value(2);
}
return 0;
}
//=======================================================================
//function : IsDimWithClassOfTolerance
//purpose :
//=======================================================================
Standard_Boolean XCAFDimTolObjects_DimensionObject::IsDimWithClassOfTolerance() const
{
return (myFormVariance != XCAFDimTolObjects_DimensionFormVariance_None);
}
//=======================================================================
//function : SetClassOfTolerance
//purpose :
//=======================================================================
void XCAFDimTolObjects_DimensionObject::SetClassOfTolerance (const Standard_Boolean theHole,
const XCAFDimTolObjects_DimensionFormVariance theFormVariance,
const XCAFDimTolObjects_DimensionGrade theGrade)
{
myIsHole = theHole;
myFormVariance = theFormVariance;
myGrade = theGrade;
}
//=======================================================================
//function : GetClassOfTolerance
//purpose :
//=======================================================================
Standard_Boolean XCAFDimTolObjects_DimensionObject::GetClassOfTolerance (Standard_Boolean& theHole,
XCAFDimTolObjects_DimensionFormVariance& theFormVariance,
XCAFDimTolObjects_DimensionGrade& theGrade) const
{
if(myFormVariance != XCAFDimTolObjects_DimensionFormVariance_None)
{
theHole = myIsHole;
theFormVariance = myFormVariance;
theGrade = myGrade;
return Standard_True;
}
return Standard_False;
}
//=======================================================================
//function : SetNbOfDecimalPlaces
//purpose :
//=======================================================================
void XCAFDimTolObjects_DimensionObject::SetNbOfDecimalPlaces (const Standard_Integer theL, const Standard_Integer theR)
{
myL = theL;
myR = theR;
}
//=======================================================================
//function : GetNbOfDecimalPlaces
//purpose :
//=======================================================================
void XCAFDimTolObjects_DimensionObject::GetNbOfDecimalPlaces (Standard_Integer& theL, Standard_Integer& theR) const
{
theL = myL;
theR = myR;
}
//=======================================================================
//function : GetModifiers
//purpose :
//=======================================================================
XCAFDimTolObjects_DimensionModifiersSequence XCAFDimTolObjects_DimensionObject::GetModifiers () const
{
return myModifiers;
}
//=======================================================================
//function : SetModifiers
//purpose :
//=======================================================================
void XCAFDimTolObjects_DimensionObject::SetModifiers (const XCAFDimTolObjects_DimensionModifiersSequence& theModifiers)
{
myModifiers = theModifiers;
}
//=======================================================================
//function : AddModifier
//purpose :
//=======================================================================
void XCAFDimTolObjects_DimensionObject::AddModifier (const XCAFDimTolObjects_DimensionModif theModifier)
{
myModifiers.Append(theModifier);
}
//=======================================================================
//function : GetPath
//purpose :
//=======================================================================
TopoDS_Edge XCAFDimTolObjects_DimensionObject::GetPath () const
{
return myPath;
}
//=======================================================================
//function : SetPath
//purpose :
//=======================================================================
void XCAFDimTolObjects_DimensionObject::SetPath (const TopoDS_Edge& thePath)
{
if(!thePath.IsNull())
{
myPath = thePath;
}
}
//=======================================================================
//function : GetDirection
//purpose :
//=======================================================================
Standard_Boolean XCAFDimTolObjects_DimensionObject::GetDirection (gp_Dir& theDir) const
{
theDir = myDir;
return Standard_True;
}
//=======================================================================
//function : SetDirection
//purpose :
//=======================================================================
Standard_Boolean XCAFDimTolObjects_DimensionObject::SetDirection (const gp_Dir& theDir)
{
myDir = theDir;
return Standard_True;
}
//=======================================================================
//function : GetPoints
//purpose :
//=======================================================================
Handle(TColgp_HArray1OfPnt) XCAFDimTolObjects_DimensionObject::GetPoints () const
{
return myPnts;
}
//=======================================================================
//function : SetPoints
//purpose :
//=======================================================================
void XCAFDimTolObjects_DimensionObject::SetPoints (const Handle(TColgp_HArray1OfPnt)& thePnts)
{
myPnts = thePnts;
}

View File

@@ -0,0 +1,84 @@
-- Created on: 2015-07-31
-- Created by: data exchange team
-- Copyright (c) 2000-2015 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- This library is free software; you can redistribute it and/or modify it under
-- the terms of the GNU Lesser General Public License version 2.1 as published
-- by the Free Software Foundation, with special exception defined in the file
-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-- distribution for complete text of the license and disclaimer of any warranty.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
class GeomToleranceObject from XCAFDimTolObjects inherits Transient from Standard
---Purpose: attribute to store dimension and tolerance
uses
HArray1OfReal from TColStd,
HAsciiString from TCollection,
GeomToleranceType from XCAFDimTolObjects,
GeomToleranceTypeValue from XCAFDimTolObjects,
GeomToleranceMatReqModif from XCAFDimTolObjects,
GeomToleranceZoneModif from XCAFDimTolObjects,
GeomToleranceModifiersSequence from XCAFDimTolObjects,
GeomToleranceModif from XCAFDimTolObjects
is
Create returns GeomToleranceObject from XCAFDimTolObjects;
Create(theObj : GeomToleranceObject from XCAFDimTolObjects) returns GeomToleranceObject from XCAFDimTolObjects;
---Category: class methods
-- =============
SetType (me : mutable; theType : GeomToleranceType from XCAFDimTolObjects);
GetType (me) returns GeomToleranceType from XCAFDimTolObjects;
SetTypeOfValue (me : mutable; theTypeOfValue : GeomToleranceTypeValue from XCAFDimTolObjects);
GetTypeOfValue (me) returns GeomToleranceTypeValue from XCAFDimTolObjects;
SetValue (me : mutable; theValue : Real from Standard);
GetValue (me) returns Real from Standard;
SetMaterialRequirementModifier (me : mutable; theGeomToleranceMatReqModif : GeomToleranceMatReqModif from XCAFDimTolObjects);
GetMaterialRequirementModifier (me) returns GeomToleranceMatReqModif from XCAFDimTolObjects;
SetZoneModifier (me : mutable; theGeomToleranceZoneModif : GeomToleranceZoneModif from XCAFDimTolObjects);
GetZoneModifier (me) returns GeomToleranceZoneModif from XCAFDimTolObjects;
SetValueOfZoneModifier (me : mutable; theValue : Real from Standard);
GetValueOfZoneModifier (me) returns Real from Standard;
SetModifiers (me : mutable; theModifiers : GeomToleranceModifiersSequence from XCAFDimTolObjects);
AddModifier (me : mutable; theModifier : GeomToleranceModif from XCAFDimTolObjects);
GetModifiers (me) returns GeomToleranceModifiersSequence from XCAFDimTolObjects;
SetMaxValueModifier (me : mutable; theModifier : Real from Standard);
GetMaxValueModifier (me) returns Real from Standard;
fields
myType : GeomToleranceType from XCAFDimTolObjects;
myTypeOfValue : GeomToleranceTypeValue from XCAFDimTolObjects ;
myValue : Real from Standard ;
myMatReqModif : GeomToleranceMatReqModif from XCAFDimTolObjects ;
myZoneModif : GeomToleranceZoneModif from XCAFDimTolObjects;
myValueOfZoneModif : Real from Standard;
myModifiers : GeomToleranceModifiersSequence from XCAFDimTolObjects;
myMaxValueModif : Real from Standard ;
end GeomToleranceObject;

View File

@@ -0,0 +1,210 @@
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <XCAFDimTolObjects_GeomToleranceObject.ixx>
//=======================================================================
//function : XCAFDimTolObjects_GeomTolerance
//purpose :
//=======================================================================
XCAFDimTolObjects_GeomToleranceObject::XCAFDimTolObjects_GeomToleranceObject()
{
}
//=======================================================================
//function : XCAFDimTolObjects_GeomTolerance
//purpose :
//=======================================================================
XCAFDimTolObjects_GeomToleranceObject::XCAFDimTolObjects_GeomToleranceObject(const Handle(XCAFDimTolObjects_GeomToleranceObject)& theObj)
{
myType = theObj->myType;
myTypeOfValue = theObj->myTypeOfValue;
myValue = theObj->myValue;
myMatReqModif = theObj->myMatReqModif;
myZoneModif = theObj->myZoneModif;
myValueOfZoneModif = theObj->myValueOfZoneModif;
myModifiers = theObj->myModifiers;
myMaxValueModif = theObj->myMaxValueModif;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
void XCAFDimTolObjects_GeomToleranceObject::SetType (const XCAFDimTolObjects_GeomToleranceType theType)
{
myType = theType;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
XCAFDimTolObjects_GeomToleranceType XCAFDimTolObjects_GeomToleranceObject::GetType() const
{
return myType;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
void XCAFDimTolObjects_GeomToleranceObject::SetTypeOfValue (const XCAFDimTolObjects_GeomToleranceTypeValue theTypeOfValue)
{
myTypeOfValue = theTypeOfValue;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
XCAFDimTolObjects_GeomToleranceTypeValue XCAFDimTolObjects_GeomToleranceObject::GetTypeOfValue() const
{
return myTypeOfValue;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
void XCAFDimTolObjects_GeomToleranceObject::SetValue (const Standard_Real theValue)
{
myValue = theValue;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
Standard_Real XCAFDimTolObjects_GeomToleranceObject::GetValue() const
{
return myValue;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
void XCAFDimTolObjects_GeomToleranceObject::SetMaterialRequirementModifier (const XCAFDimTolObjects_GeomToleranceMatReqModif theMatReqModif)
{
myMatReqModif = theMatReqModif;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
XCAFDimTolObjects_GeomToleranceMatReqModif XCAFDimTolObjects_GeomToleranceObject::GetMaterialRequirementModifier() const
{
return myMatReqModif;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
void XCAFDimTolObjects_GeomToleranceObject::SetZoneModifier (const XCAFDimTolObjects_GeomToleranceZoneModif theZoneModif)
{
myZoneModif = theZoneModif;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
XCAFDimTolObjects_GeomToleranceZoneModif XCAFDimTolObjects_GeomToleranceObject::GetZoneModifier() const
{
return myZoneModif;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
void XCAFDimTolObjects_GeomToleranceObject::SetValueOfZoneModifier (const Standard_Real theValue)
{
myValueOfZoneModif = theValue;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
Standard_Real XCAFDimTolObjects_GeomToleranceObject::GetValueOfZoneModifier() const
{
return myValueOfZoneModif;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
void XCAFDimTolObjects_GeomToleranceObject::SetModifiers (const XCAFDimTolObjects_GeomToleranceModifiersSequence& theModifiers)
{
myModifiers = theModifiers;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
void XCAFDimTolObjects_GeomToleranceObject::AddModifier (const XCAFDimTolObjects_GeomToleranceModif theModifier)
{
myModifiers.Append(theModifier);
}
//=======================================================================
//function :
//purpose :
//=======================================================================
XCAFDimTolObjects_GeomToleranceModifiersSequence XCAFDimTolObjects_GeomToleranceObject::GetModifiers() const
{
return myModifiers;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
void XCAFDimTolObjects_GeomToleranceObject::SetMaxValueModifier (const Standard_Real theModifier)
{
myMaxValueModif = theModifier;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
Standard_Real XCAFDimTolObjects_GeomToleranceObject::GetMaxValueModifier() const
{
return myMaxValueModif;
}

View File

@@ -0,0 +1,62 @@
-- Created on: 2004-01-09
-- Created by: Sergey KUUL
-- Copyright (c) 2004-2014 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- This library is free software; you can redistribute it and/or modify it under
-- the terms of the GNU Lesser General Public License version 2.1 as published
-- by the Free Software Foundation, with special exception defined in the file
-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-- distribution for complete text of the license and disclaimer of any warranty.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
class Tool from XCAFDimTolObjects
---Purpose:
uses
Shape from TopoDS,
Document from TDocStd,
DimTolTool from XCAFDoc,
GeomToleranceObject from XCAFDimTolObjects,
DatumObject from XCAFDimTolObjects,
DimensionObject from XCAFDimTolObjects,
DimensionObjectSequence from XCAFDimTolObjects,
DatumObjectSequence from XCAFDimTolObjects,
GeomToleranceObjectSequence from XCAFDimTolObjects,
DataMapOfToleranceDatum from XCAFDimTolObjects
is
Create (theDoc : Document from TDocStd) returns Tool from XCAFDimTolObjects;
GetDimensions (me; theDimensionObjectSequence: out DimensionObjectSequence from XCAFDimTolObjects);
---Purpose: Returns a sequence of Dimensions currently stored
-- in the DGTtable
GetRefDimensions (me; theShape: Shape from TopoDS; theDimensions: out DimensionObjectSequence from XCAFDimTolObjects)
returns Boolean;
---Purpose: Returns all Dimensions defined for Shape
GetGeomTolerances (me; theGeomToleranceObjectSequence : out GeomToleranceObjectSequence from XCAFDimTolObjects;
theDatumObjectSequence : out DatumObjectSequence from XCAFDimTolObjects;
theMap : out DataMapOfToleranceDatum from XCAFDimTolObjects);
---Purpose: Returns a sequence of Tolerancess currently stored
-- in the DGTtable
GetRefGeomTolerances (me; theShape: Shape from TopoDS;
theGeomToleranceObjectSequence: out GeomToleranceObjectSequence from XCAFDimTolObjects;
theDatumObjectSequence : out DatumObjectSequence from XCAFDimTolObjects;
theMap : out DataMapOfToleranceDatum from XCAFDimTolObjects)
returns Boolean;
---Purpose: Returns all GeomTolerances defined for Shape
GetRefDatum (me; theShape: Shape from TopoDS; theDatum: out DatumObject from XCAFDimTolObjects)
returns Boolean;
---Purpose: Returns DatumObject defined for Shape
fields
myDimTolTool : DimTolTool from XCAFDoc;
end Tool;

View File

@@ -0,0 +1,187 @@
// Copyright (c) 1999-2015 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <XCAFDimTolObjects_Tool.hxx>
#include <XCAFDimTolObjects_DimensionObjectSequence.hxx>
#include <TDF_ChildIterator.hxx>
#include <XCAFDoc_DimTolTool.hxx>
#include <XCAFDoc_Dimension.hxx>
#include <XCAFDimTolObjects_GeomToleranceObjectSequence.hxx>
#include <XCAFDoc_GeomTolerance.hxx>
#include <XCAFDimTolObjects_DatumObjectSequence.hxx>
#include <XCAFDoc_Datum.hxx>
#include <XCAFDoc_ShapeTool.hxx>
#include <XCAFDoc_Datum.hxx>
#include <TDF_Label.hxx>
#include <TDF_LabelSequence.hxx>
#include <XCAFDoc_DocumentTool.hxx>
#include <TDocStd_Document.hxx>
#include <NCollection_DataMap.hxx>
#include <XCAFDimTolObjects_DataMapOfToleranceDatum.hxx>
//=======================================================================
//function : XCAFDimTolObjects_Tool
//purpose :
//=======================================================================
XCAFDimTolObjects_Tool::XCAFDimTolObjects_Tool(const Handle(TDocStd_Document)& theDoc)
{
myDimTolTool = XCAFDoc_DocumentTool::DimTolTool(theDoc->Main());
}
//=======================================================================
//function : GetDimensions
//purpose :
//=======================================================================
void XCAFDimTolObjects_Tool::GetDimensions(XCAFDimTolObjects_DimensionObjectSequence& theDimensionObjectSequence) const
{
theDimensionObjectSequence.Clear();
TDF_ChildIterator aChildIterator( myDimTolTool->Label() );
for (; aChildIterator.More(); aChildIterator.Next()) {
TDF_Label aL = aChildIterator.Value();
Handle(XCAFDoc_Dimension) aDimension;
if(aL.FindAttribute(XCAFDoc_Dimension::GetID(),aDimension)) {
theDimensionObjectSequence.Append(aDimension->GetObject());
}
}
}
//=======================================================================
//function : GetGeomTolerances
//purpose :
//=======================================================================
void XCAFDimTolObjects_Tool::GetGeomTolerances(XCAFDimTolObjects_GeomToleranceObjectSequence& theGeomToleranceObjectSequence,
XCAFDimTolObjects_DatumObjectSequence& theDatumSequence,
XCAFDimTolObjects_DataMapOfToleranceDatum& theMap) const
{
theGeomToleranceObjectSequence.Clear();
TDF_ChildIterator aChildIterator( myDimTolTool->Label() );
for (; aChildIterator.More(); aChildIterator.Next()) {
TDF_Label aL = aChildIterator.Value();
Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
if(aL.FindAttribute(XCAFDoc_GeomTolerance::GetID(),aGeomTolerance)) {
theGeomToleranceObjectSequence.Append(aGeomTolerance->GetObject());
TDF_LabelSequence aSeq;
if(myDimTolTool->GetDatumOfTolerLabels(aGeomTolerance->Label(), aSeq))
{
for(Standard_Integer i = 1; i <= aSeq.Length(); i++)
{
Handle(XCAFDoc_Datum) aDatum;
if(aSeq.Value(i).FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
{
theDatumSequence.Append(aDatum->GetObject());
theMap.Bind(theGeomToleranceObjectSequence.Last(), theDatumSequence.Last());
}
}
}
}
}
}
//=======================================================================
//function : GetRefDimensions
//purpose :
//=======================================================================
Standard_Boolean XCAFDimTolObjects_Tool::GetRefDimensions(const TopoDS_Shape& theShape,
XCAFDimTolObjects_DimensionObjectSequence& theDimensionObjectSequence) const
{
theDimensionObjectSequence.Clear();
TDF_Label aShapeL;
myDimTolTool->ShapeTool()->Search(theShape, aShapeL);
if(!aShapeL.IsNull())
{
TDF_LabelSequence aSeq;
if( myDimTolTool->GetRefDimensionLabels(aShapeL, aSeq) ) {
for(Standard_Integer i = 1; i <= aSeq.Length(); i++)
{
Handle(XCAFDoc_Dimension) aDimension;
if( aSeq.Value(i).FindAttribute(XCAFDoc_Dimension::GetID(),aDimension))
theDimensionObjectSequence.Append(aDimension->GetObject());
}
return Standard_True;
}
}
return Standard_False;
}
//=======================================================================
//function : GetRefGeomTolerances
//purpose :
//=======================================================================
Standard_Boolean XCAFDimTolObjects_Tool::GetRefGeomTolerances(const TopoDS_Shape& theShape,
XCAFDimTolObjects_GeomToleranceObjectSequence& theGeomToleranceObjectSequence,
XCAFDimTolObjects_DatumObjectSequence& theDatumSequence,
XCAFDimTolObjects_DataMapOfToleranceDatum& theMap) const
{
theGeomToleranceObjectSequence.Clear();
TDF_Label aShapeL;
myDimTolTool->ShapeTool()->Search(theShape, aShapeL);
if(!aShapeL.IsNull())
{
TDF_LabelSequence aSeq;
if( myDimTolTool->GetRefGeomToleranceLabels(aShapeL, aSeq) ) {
for(Standard_Integer i = 1; i <= aSeq.Length(); i++)
{
Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
if( aSeq.Value(i).FindAttribute(XCAFDoc_GeomTolerance::GetID(),aGeomTolerance))
{
theGeomToleranceObjectSequence.Append(aGeomTolerance->GetObject());
TDF_LabelSequence aSeq;
if(myDimTolTool->GetDatumOfTolerLabels(aGeomTolerance->Label(), aSeq))
{
for(Standard_Integer i = 1; i <= aSeq.Length(); i++)
{
Handle(XCAFDoc_Datum) aDatum;
if(aSeq.Value(i).FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
{
theDatumSequence.Append(aDatum->GetObject());
theMap.Bind(theGeomToleranceObjectSequence.Last(), theDatumSequence.Last());
}
}
}
}
}
return Standard_True;
}
}
return Standard_False;
}
//=======================================================================
//function : GetRefDatum
//purpose :
//=======================================================================
Standard_Boolean XCAFDimTolObjects_Tool::GetRefDatum(const TopoDS_Shape& theShape,
Handle(XCAFDimTolObjects_DatumObject)& theDatumObject) const
{
TDF_Label aShapeL;
myDimTolTool->ShapeTool()->Search(theShape, aShapeL);
if(!aShapeL.IsNull())
{
TDF_Label aDatumL;
if(myDimTolTool->GetRefDatumLabel(aShapeL, aDatumL))
{
Handle(XCAFDoc_Datum) aDatum;
if( aDatumL.FindAttribute(XCAFDoc_Datum::GetID(),aDatum)){
theDatumObject = aDatum->GetObject();
return Standard_True;
}
}
}
return Standard_False;
}

View File

@@ -34,12 +34,14 @@ uses
Quantity,
TCollection,
TColStd,
TColgp,
TopLoc,
TopoDS,
TopTools,
TDF,
TDocStd,
TDataStd,
XCAFDimTolObjects,
gp
is
@@ -56,7 +58,6 @@ is
ColorSurf, -- color of surfaces
ColorCurv -- color of curves
end ColorType;
class DocumentTool;
@@ -65,9 +66,13 @@ is
class Color;
class DimTol;
class Dimension;
class GeomTolerance;
class Datum;
class Material;
class Volume;
@@ -93,6 +98,7 @@ is
class GraphNodeSequence instantiates Sequence from TCollection
(GraphNode from XCAFDoc);
---Purpose: class for containing GraphNodes.
class DataMapOfShapeLabel instantiates
DataMap from TCollection (Shape from TopoDS,
@@ -113,9 +119,15 @@ is
DimTolRefGUID returns GUID from Standard;
---Purpose: Return GUIDs for TreeNode representing specified types of DGT
DimensionRefGUID returns GUID from Standard;
---Purpose: Return GUIDs for TreeNode representing specified types of Dimension
DatumRefGUID returns GUID from Standard;
---Purpose: Return GUIDs for TreeNode representing specified types of datum
GeomToleranceRefGUID returns GUID from Standard;
---Purpose: Return GUIDs for TreeNode representing specified types of GeomTolerance
DatumTolRefGUID returns GUID from Standard;
---Purpose: Return GUIDs for TreeNode representing connections Datum-Toler

View File

@@ -89,6 +89,27 @@ Standard_GUID XCAFDoc::DimTolRefGUID()
return ID;
}
//=======================================================================
//function : DimensionRefGUID
//purpose :
//=======================================================================
Standard_GUID XCAFDoc::DimensionRefGUID()
{
static Standard_GUID ID("efd212e3-6dfd-11d4-b9c8-0060b0ee281b");
return ID;
}
//=======================================================================
//function : GeomToleranceRefGUID
//purpose :
//=======================================================================
Standard_GUID XCAFDoc::GeomToleranceRefGUID()
{
static Standard_GUID ID("efd213e3-6dfd-11d4-b9c8-0060b0ee281b");
return ID;
}
//=======================================================================
//function : DatumRefGUID

View File

@@ -20,9 +20,11 @@ class Datum from XCAFDoc inherits Attribute from TDF
uses
Label from TDF,
RelocationTable from TDF,
HAsciiString from TCollection
HAsciiString from TCollection,
DatumObject from XCAFDimTolObjects
is
Create returns Datum from XCAFDoc;
---Category: class methods
@@ -38,16 +40,24 @@ is
anIdentification : HAsciiString from TCollection)
returns Datum from XCAFDoc;
Set (myclass; label : Label from TDF)
returns Datum from XCAFDoc;
Set (me : mutable; aName : HAsciiString from TCollection;
aDescription : HAsciiString from TCollection;
anIdentification : HAsciiString from TCollection);
GetName (me) returns HAsciiString from TCollection;
GetDescription (me) returns HAsciiString from TCollection;
GetIdentification (me) returns HAsciiString from TCollection;
GetObject (me) returns DatumObject from XCAFDimTolObjects;
SetObject (me : mutable; theObject : DatumObject from XCAFDimTolObjects);
ID (me)
---C++: return const &
returns GUID from Standard;

View File

@@ -14,7 +14,20 @@
#include <XCAFDoc_Datum.ixx>
#include <TDF_RelocationTable.hxx>
#include <TDataStd_AsciiString.hxx>
#include <TDataStd_IntegerArray.hxx>
#include <TDataStd_Integer.hxx>
#include <TDataStd_Real.hxx>
#include <TNaming_NamedShape.hxx>
#include <TNaming_Builder.hxx>
enum ChildLab
{
ChildLab_Name = 1,
ChildLab_Modifiers,
ChildLab_ModifierWithValue,
ChildLab_DatumTarget
};
//=======================================================================
//function : XCAFDoc_Datum
@@ -25,7 +38,6 @@ XCAFDoc_Datum::XCAFDoc_Datum()
{
}
//=======================================================================
//function : GetID
//purpose :
@@ -45,18 +57,33 @@ const Standard_GUID& XCAFDoc_Datum::GetID()
//purpose :
//=======================================================================
Handle(XCAFDoc_Datum) XCAFDoc_Datum::Set(const TDF_Label& label,
const Handle(TCollection_HAsciiString)& aName,
const Handle(TCollection_HAsciiString)& aDescription,
const Handle(TCollection_HAsciiString)& anIdentification)
Handle(XCAFDoc_Datum) XCAFDoc_Datum::Set(const TDF_Label& theLabel,
const Handle(TCollection_HAsciiString)& theName,
const Handle(TCollection_HAsciiString)& theDescription,
const Handle(TCollection_HAsciiString)& theIdentification)
{
Handle(XCAFDoc_Datum) A;
if (!label.FindAttribute(XCAFDoc_Datum::GetID(), A)) {
A = new XCAFDoc_Datum();
label.AddAttribute(A);
Handle(XCAFDoc_Datum) aDatum;
if (!theLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum)) {
aDatum = new XCAFDoc_Datum();
theLabel.AddAttribute(aDatum);
}
A->Set(aName,aDescription,anIdentification);
return A;
aDatum->Set(theName,theDescription,theIdentification);
return aDatum;
}
//=======================================================================
//function : Set
//purpose :
//=======================================================================
Handle(XCAFDoc_Datum) XCAFDoc_Datum::Set(const TDF_Label& theLabel)
{
Handle(XCAFDoc_Datum) aDatum;
if (!theLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum)) {
aDatum = new XCAFDoc_Datum();
theLabel.AddAttribute(aDatum);
}
return aDatum;
}
@@ -65,13 +92,14 @@ Handle(XCAFDoc_Datum) XCAFDoc_Datum::Set(const TDF_Label& label,
//purpose :
//=======================================================================
void XCAFDoc_Datum::Set(const Handle(TCollection_HAsciiString)& aName,
const Handle(TCollection_HAsciiString)& aDescription,
const Handle(TCollection_HAsciiString)& anIdentification)
void XCAFDoc_Datum::Set(const Handle(TCollection_HAsciiString)& theName,
const Handle(TCollection_HAsciiString)& theDescription,
const Handle(TCollection_HAsciiString)& theIdentification)
{
myName = aName;
myDescription = aDescription;
myIdentification = anIdentification;
Backup();
myName = theName;
myDescription = theDescription;
myIdentification = theIdentification;
}
@@ -82,12 +110,13 @@ void XCAFDoc_Datum::Set(const Handle(TCollection_HAsciiString)& aName,
Handle(TCollection_HAsciiString) XCAFDoc_Datum::GetName() const
{
if(myName.IsNull())
return new TCollection_HAsciiString();
return myName;
}
//=======================================================================
//function : GetDescription
//function : GetDescriptio7n
//purpose :
//=======================================================================
@@ -107,6 +136,127 @@ Handle(TCollection_HAsciiString) XCAFDoc_Datum::GetIdentification() const
return myIdentification;
}
//=======================================================================
//function : SetObject
//purpose :
//=======================================================================
void XCAFDoc_Datum::SetObject(const Handle(XCAFDimTolObjects_DatumObject)& theObject)
{
Backup();
if (!theObject->GetName().IsNull())
{
Handle(TDataStd_AsciiString) anAttName;
if(!Label().FindChild(ChildLab_Name).FindAttribute(TDataStd_AsciiString::GetID(), anAttName))
{
anAttName = new TDataStd_AsciiString();
Label().FindChild(ChildLab_Name).AddAttribute(anAttName);
}
anAttName->Set(theObject->GetName()->String());
}
else
{
Label().FindChild(ChildLab_Name).ForgetAllAttributes();
}
if(theObject->GetModifiers().Length() == 0)
{
Label().FindChild(ChildLab_Modifiers).ForgetAllAttributes();
}
else
{
Handle(TDataStd_IntegerArray) aModifiers;
if(!Label().FindChild(ChildLab_Modifiers).FindAttribute(TDataStd_IntegerArray::GetID(), aModifiers))
{
aModifiers = new TDataStd_IntegerArray();
Label().FindChild(ChildLab_Modifiers).AddAttribute(aModifiers);
}
Handle(TColStd_HArray1OfInteger) anArr = new TColStd_HArray1OfInteger(1,theObject->GetModifiers().Length());
for(Standard_Integer i = 1; i <= theObject->GetModifiers().Length(); i++)
anArr->SetValue(i,theObject->GetModifiers().Value(i));
aModifiers->ChangeArray(anArr);
}
XCAFDimTolObjects_DatumModifWithValue aM;
Standard_Real aV;
theObject->GetModifierWithValue(aM, aV);
if(aM != XCAFDimTolObjects_DatumModifWithValue_None)
{
Handle(TDataStd_Integer) aModifierWithValueM;
if(!Label().FindChild(ChildLab_ModifierWithValue).FindAttribute(TDataStd_Integer::GetID(), aModifierWithValueM))
{
aModifierWithValueM = new TDataStd_Integer();
Label().FindChild(ChildLab_ModifierWithValue).AddAttribute(aModifierWithValueM);
}
Handle(TDataStd_Real) aModifierWithValueV;
if(!Label().FindChild(ChildLab_ModifierWithValue).FindAttribute(TDataStd_Real::GetID(), aModifierWithValueV))
{
aModifierWithValueV = new TDataStd_Real();
Label().FindChild(ChildLab_ModifierWithValue).AddAttribute(aModifierWithValueV);
}
aModifierWithValueM->Set(aM);
aModifierWithValueV->Set(aV);
}
else
{
Label().FindChild(ChildLab_ModifierWithValue).ForgetAllAttributes();
}
if(!theObject->GetDatumTarget().IsNull())
{
TNaming_Builder tnBuild(Label().FindChild(ChildLab_DatumTarget));
tnBuild.Generated(theObject->GetDatumTarget());
}
else
{
Label().FindChild(ChildLab_DatumTarget).ForgetAllAttributes();
}
}
//=======================================================================
//function : GetObject
//purpose :
//=======================================================================
Handle(XCAFDimTolObjects_DatumObject) XCAFDoc_Datum::GetObject() const
{
Handle(XCAFDimTolObjects_DatumObject) anObj = new XCAFDimTolObjects_DatumObject();
Handle(TDataStd_AsciiString) anAttName;
if(Label().FindChild(ChildLab_Name).FindAttribute(TDataStd_AsciiString::GetID(), anAttName))
{
Handle(TCollection_HAsciiString) aStr = new TCollection_HAsciiString(anAttName->Get());
anObj->SetName(aStr);
}
Handle(TDataStd_IntegerArray) anArr;
if(Label().FindChild(ChildLab_Modifiers).FindAttribute(TDataStd_IntegerArray::GetID(), anArr)
&& !anArr->Array().IsNull())
{
XCAFDimTolObjects_DatumModifiersSequence aModifiers;
for(Standard_Integer i = 1; i <= anArr->Length(); i++)
aModifiers.Append((XCAFDimTolObjects_DatumSingleModif)anArr->Value(i));
anObj->SetModifiers(aModifiers);
}
Handle(TDataStd_Integer) aModifierWithValueM;
if(Label().FindChild(ChildLab_ModifierWithValue).FindAttribute(TDataStd_Integer::GetID(), aModifierWithValueM))
{
Handle(TDataStd_Real) aModifierWithValueV;
if(Label().FindChild(ChildLab_ModifierWithValue).FindAttribute(TDataStd_Real::GetID(), aModifierWithValueV))
{
anObj->SetModifierWithValue((XCAFDimTolObjects_DatumModifWithValue)aModifierWithValueM->Get(),aModifierWithValueV->Get());
}
}
Handle(TNaming_NamedShape) aDatumTarget;
if(Label().FindChild(ChildLab_DatumTarget).FindAttribute(TNaming_NamedShape::GetID(), aDatumTarget))
{
anObj->SetDatumTarget(aDatumTarget->Get());
}
return anObj;
}
//=======================================================================
//function : ID
@@ -124,11 +274,11 @@ const Standard_GUID& XCAFDoc_Datum::ID() const
//purpose :
//=======================================================================
void XCAFDoc_Datum::Restore(const Handle(TDF_Attribute)& With)
void XCAFDoc_Datum::Restore(const Handle(TDF_Attribute)& theWith)
{
myName = Handle(XCAFDoc_Datum)::DownCast(With)->GetName();
myDescription = Handle(XCAFDoc_Datum)::DownCast(With)->GetDescription();
myIdentification = Handle(XCAFDoc_Datum)::DownCast(With)->GetIdentification();
myName = Handle(XCAFDoc_Datum)::DownCast(theWith)->GetName();
myDescription = Handle(XCAFDoc_Datum)::DownCast(theWith)->GetDescription();
myIdentification = Handle(XCAFDoc_Datum)::DownCast(theWith)->GetIdentification();
}
@@ -148,9 +298,9 @@ Handle(TDF_Attribute) XCAFDoc_Datum::NewEmpty() const
//purpose :
//=======================================================================
void XCAFDoc_Datum::Paste(const Handle(TDF_Attribute)& Into,
void XCAFDoc_Datum::Paste(const Handle(TDF_Attribute)& theInto,
const Handle(TDF_RelocationTable)& /*RT*/) const
{
Handle(XCAFDoc_Datum)::DownCast(Into)->Set(myName,myDescription,myIdentification);
Handle(XCAFDoc_Datum)::DownCast(theInto)->Set(myName,myDescription,myIdentification);
}

View File

@@ -71,6 +71,7 @@ void XCAFDoc_DimTol::Set(const Standard_Integer kind,
const Handle(TCollection_HAsciiString)& aName,
const Handle(TCollection_HAsciiString)& aDescription)
{
Backup();
myKind = kind;
myVal = aVal;
myName = aName;

View File

@@ -27,6 +27,9 @@ uses
LabelSequence from TDF,
Document from TDocStd,
ShapeTool from XCAFDoc,
GeomTolerance from XCAFDoc,
Datum from XCAFDoc,
Dimension from XCAFDoc,
RelocationTable from TDF,
HArray1OfReal from TColStd,
HAsciiString from TCollection
@@ -53,6 +56,61 @@ is
---C++: return const &
-- Methods for Dimension:
IsDimension (me; theLab: Label from TDF) returns Boolean;
---Purpose: Returns True if label belongs to a dimtoltable and
-- is a Dimension definition
GetDimensionLabels (me; theLabels: out LabelSequence from TDF);
---Purpose: Returns a sequence of Dimensions labels currently stored
-- in the DGTtable
SetDimension (me; theFirstL: Label from TDF;
theSecondL: Label from TDF;
theDimTolL: Label from TDF);
---Purpose: Sets a link with GUID
SetDimension (me; theL: Label from TDF;
theDimTolL: Label from TDF);
---Purpose: Sets a link with GUID
GetRefDimensionLabels (me; theShapeL: Label from TDF; theDimensions: out LabelSequence from TDF)
returns Boolean;
---Purpose: Returns all Dimension labels defined for label ShapeL
AddDimension (me : mutable)
returns Label from TDF;
---Purpose: Adds a dimension definition to a DGTtable and returns its label
-- Methods for GeomTolerance:
IsGeomTolerance (me; theLab: Label from TDF) returns Boolean;
---Purpose: Returns True if label belongs to a dimtoltable and
-- is a DimTol definition
GetGeomToleranceLabels (me; theLabels: out LabelSequence from TDF);
---Purpose: Returns a sequence of Tolerance labels currently stored
-- in the DGTtable
SetGeomTolerance (me; theL: Label from TDF;
theDimTolL: Label from TDF);
---Purpose: Sets a link with GUID
GetRefGeomToleranceLabels (me; theShapeL: Label from TDF; theDimTols: out LabelSequence from TDF)
returns Boolean;
---Purpose: Returns all GeomTolerance labels defined for label ShapeL
AddGeomTolerance (me : mutable)
returns Label from TDF;
---Purpose: Adds a GeomTolerance definition to a DGTtable and returns its label
-- Methods for DimTol:
IsDimTol (me; lab: Label from TDF) returns Boolean;
@@ -98,12 +156,12 @@ is
---Purpose: Sets a link with GUID
-- Adds a DimTol as necessary
GetRefShapeLabel (me; DimTolL: Label from TDF; ShapeL: out Label from TDF)
GetRefShapeLabel (me; theDimTolL: Label from TDF; theShapeL: out LabelSequence from TDF)
returns Boolean;
---Purpose: Returns ShapeL defined for label DimTolL
-- Returns False if the DimTolL is not in DGTtable
GetRefDGTLabels (me; ShapeL: Label from TDF; DimTols: out LabelSequence from TDF)
GetRefDGTLabels (me; theShapeL: Label from TDF; theDimTols: out LabelSequence from TDF)
returns Boolean;
---Purpose: Returns all DimTol labels defined for label ShapeL
@@ -117,14 +175,14 @@ is
-- Methods for Datum:
IsDatum (me; lab: Label from TDF) returns Boolean;
IsDatum (me; theLab: Label from TDF) returns Boolean;
---Purpose: Returns True if label belongs to a dimtoltable and
-- is a Datum definition
GetDatumLabels (me; Labels: out LabelSequence from TDF);
---Purpose: Returns a sequence of Datumss currently stored
GetDatumLabels (me; theLabels: out LabelSequence from TDF);
---Purpose: Returns a sequence of Datum labels currently stored
-- in the DGTtable
FindDatum (me; aName : HAsciiString from TCollection;
aDescription : HAsciiString from TCollection;
anIdentification : HAsciiString from TCollection;
@@ -138,8 +196,12 @@ is
returns Label from TDF;
---Purpose: Adds a datum definition to a DGTtable and returns its label
SetDatum (me; L: Label from TDF;
DatumL: Label from TDF);
AddDatum (me : mutable)
returns Label from TDF;
---Purpose: Adds a datum definition to a DGTtable and returns its label
SetDatum (me; theL: Label from TDF;
theDatumL: Label from TDF);
---Purpose: Sets a link with GUID
SetDatum (me; L: Label from TDF; TolerL: Label from TDF;
@@ -149,6 +211,11 @@ is
---Purpose: Sets a link with GUID for Datum
-- Adds a Datum as necessary
-- Sets connection between Datum and Tolerance
SetDatumToGeomTol (me; theL: Label from TDF; theTolerL: Label from TDF);
---Purpose: Sets a link with GUID for Datum
-- Sets connection between Datum and Tolerance
GetDatum (me; DatumL: Label from TDF;
aName : out HAsciiString from TCollection;
@@ -157,10 +224,21 @@ is
---Purpose: Returns datum assigned to <DatumL>
-- Returns False if no such datum is assigned
GetDatumTolerLabels (me; DimTolL: Label from TDF; Datums: out LabelSequence from TDF)
GetDatumOfTolerLabels (me; theDimTolL: Label from TDF; theDatums: out LabelSequence from TDF)
returns Boolean;
---Purpose: Returns all Datum labels defined for label DimTolL
GetTolerOfDatumLabels (me; theDatumL: Label from TDF; theTols: out LabelSequence from TDF)
returns Boolean;
---Purpose: Returns all GeomToleranses labels defined for label DatumL
GetRefDatumLabel (me; theShapeL: Label from TDF; theDatum: out Label from TDF)
returns Boolean;
---Purpose: Returns Datum label defined for label ShapeL
GetRefDatum (me; theShape: Shape from TopoDS; theDatum: out Datum from XCAFDoc)
returns Boolean;
---Purpose: Returns Datum label defined for label Shape
ID (me)
---C++: return const &

View File

@@ -15,6 +15,8 @@
#include <XCAFDoc.hxx>
#include <XCAFDoc_DimTol.hxx>
#include <XCAFDoc_Dimension.hxx>
#include <XCAFDoc_GeomTolerance.hxx>
#include <XCAFDoc_Datum.hxx>
#include <XCAFDoc_DocumentTool.hxx>
#include <XCAFDoc_GraphNode.hxx>
@@ -92,31 +94,87 @@ const Handle(XCAFDoc_ShapeTool)& XCAFDoc_DimTolTool::ShapeTool()
//purpose :
//=======================================================================
Standard_Boolean XCAFDoc_DimTolTool::IsDimTol(const TDF_Label& DimTolL) const
Standard_Boolean XCAFDoc_DimTolTool::IsDimTol(const TDF_Label& theDimTolL) const
{
Handle(XCAFDoc_DimTol) DimTolAttr;
if(DimTolL.FindAttribute(XCAFDoc_DimTol::GetID(),DimTolAttr)) {
Handle(XCAFDoc_DimTol) aDimTolAttr;
if(theDimTolL.FindAttribute(XCAFDoc_DimTol::GetID(),aDimTolAttr)) {
return Standard_True;
}
return Standard_False;
}
//=======================================================================
//function : IsDimension
//purpose :
//=======================================================================
Standard_Boolean XCAFDoc_DimTolTool::IsDimension(const TDF_Label& theDimTolL) const
{
Handle(XCAFDoc_Dimension) aDimTolAttr;
if(theDimTolL.FindAttribute(XCAFDoc_Dimension::GetID(),aDimTolAttr)) {
return Standard_True;
}
return Standard_False;
}
//=======================================================================
//function : IsGeomTolerance
//purpose :
//=======================================================================
Standard_Boolean XCAFDoc_DimTolTool::IsGeomTolerance(const TDF_Label& theDimTolL) const
{
Handle(XCAFDoc_GeomTolerance) aDimTolAttr;
if(theDimTolL.FindAttribute(XCAFDoc_GeomTolerance::GetID(),aDimTolAttr)) {
return Standard_True;
}
return Standard_False;
}
//=======================================================================
//function : GetDimTolLabels
//purpose :
//=======================================================================
void XCAFDoc_DimTolTool::GetDimTolLabels(TDF_LabelSequence& Labels) const
void XCAFDoc_DimTolTool::GetDimTolLabels(TDF_LabelSequence& theLabels) const
{
Labels.Clear();
TDF_ChildIterator ChildIterator( Label() );
for (; ChildIterator.More(); ChildIterator.Next()) {
TDF_Label L = ChildIterator.Value();
if ( IsDimTol(L)) Labels.Append(L);
theLabels.Clear();
TDF_ChildIterator aChildIterator( Label() );
for (; aChildIterator.More(); aChildIterator.Next()) {
TDF_Label aL = aChildIterator.Value();
if ( IsDimTol(aL)) theLabels.Append(aL);
}
}
//=======================================================================
//function : GetDimensionLabels
//purpose :
//=======================================================================
void XCAFDoc_DimTolTool::GetDimensionLabels(TDF_LabelSequence& theLabels) const
{
theLabels.Clear();
TDF_ChildIterator aChildIterator( Label() );
for (; aChildIterator.More(); aChildIterator.Next()) {
TDF_Label aL = aChildIterator.Value();
if ( IsDimension(aL)) theLabels.Append(aL);
}
}
//=======================================================================
//function : GetGeomToleranceLabels
//purpose :
//=======================================================================
void XCAFDoc_DimTolTool::GetGeomToleranceLabels(TDF_LabelSequence& theLabels) const
{
theLabels.Clear();
TDF_ChildIterator aChildIterator( Label() );
for (; aChildIterator.More(); aChildIterator.Next()) {
TDF_Label aL = aChildIterator.Value();
if ( IsGeomTolerance(aL)) theLabels.Append(aL);
}
}
//=======================================================================
//function : FindDimTol
@@ -198,21 +256,129 @@ TDF_Label XCAFDoc_DimTolTool::AddDimTol(const Standard_Integer kind,
return DimTolL;
}
//=======================================================================
//function : AddDimension
//purpose :
//=======================================================================
TDF_Label XCAFDoc_DimTolTool::AddDimension()
{
TDF_Label aDimTolL;
TDF_TagSource aTag;
aDimTolL = aTag.NewChild ( Label() );
Handle(XCAFDoc_Dimension) aDim = XCAFDoc_Dimension::Set(aDimTolL);
TCollection_AsciiString aStr = "DGT:Dimension";
TDataStd_Name::Set(aDimTolL,aStr);
return aDimTolL;
}
//=======================================================================
//function : AddGeomTolerance
//purpose :
//=======================================================================
TDF_Label XCAFDoc_DimTolTool::AddGeomTolerance()
{
TDF_Label aDimTolL;
TDF_TagSource aTag;
aDimTolL = aTag.NewChild ( Label() );
Handle(XCAFDoc_GeomTolerance) aTol = XCAFDoc_GeomTolerance::Set(aDimTolL);
TCollection_AsciiString aStr = "DGT:Tolerance";
TDataStd_Name::Set(aDimTolL,aStr);
return aDimTolL;
}
//=======================================================================
//function : SetDimension
//purpose :
//=======================================================================
void XCAFDoc_DimTolTool::SetDimension(const TDF_Label& theL,
const TDF_Label& theDimTolL) const
{
TDF_Label nullLab;
SetDimension(theL, nullLab, theDimTolL);
}
//=======================================================================
//function : SetDimension
//purpose :
//=======================================================================
void XCAFDoc_DimTolTool::SetDimension(const TDF_Label& theFirstL,
const TDF_Label& theSecondL,
const TDF_Label& theDimTolL) const
{
Handle(XCAFDoc_GraphNode) aChGNode;
Handle(XCAFDoc_GraphNode) aFGNode;
Handle(XCAFDoc_GraphNode) aSecondFGNode;
//Handle(XCAFDoc_GraphNode) ChGNode, FGNode;
if ( theDimTolL.FindAttribute (XCAFDoc::DimensionRefGUID(), aChGNode) ) {
while (aChGNode->NbFathers() > 0) {
aFGNode = aChGNode->GetFather(1);
aFGNode->UnSetChild(aChGNode);
}
theDimTolL.ForgetAttribute ( XCAFDoc::DimTolRefGUID() );
}
if(!IsDimension(theDimTolL))
{
return;
}
if (!theDimTolL.FindAttribute(XCAFDoc::DimensionRefGUID(), aChGNode) ) {
aChGNode = new XCAFDoc_GraphNode;
aChGNode = XCAFDoc_GraphNode::Set(theDimTolL);
}
if (!theFirstL.FindAttribute(XCAFDoc::DimensionRefGUID(), aFGNode) ) {
aFGNode = new XCAFDoc_GraphNode;
aFGNode = XCAFDoc_GraphNode::Set(theFirstL);
}
aFGNode->SetGraphID(XCAFDoc::DimensionRefGUID());
aChGNode->SetGraphID(XCAFDoc::DimensionRefGUID());
aFGNode->SetChild(aChGNode);
aChGNode->SetFather(aFGNode);
if (!theSecondL.IsNull()){
if(!theSecondL.FindAttribute(XCAFDoc::DimensionRefGUID(), aSecondFGNode) ) {
aSecondFGNode = new XCAFDoc_GraphNode;
aSecondFGNode = XCAFDoc_GraphNode::Set(theSecondL);
}
aSecondFGNode->SetGraphID(XCAFDoc::DimensionRefGUID());
aSecondFGNode->SetChild(aChGNode);
aChGNode->SetFather(aSecondFGNode);
}
}
//=======================================================================
//function : SetGeomTolerance
//purpose :
//=======================================================================
void XCAFDoc_DimTolTool::SetGeomTolerance(const TDF_Label& theL,
const TDF_Label& theDimTolL) const
{
// set reference
Handle(TDataStd_TreeNode) refNode, mainNode;
refNode = TDataStd_TreeNode::Set ( theDimTolL, XCAFDoc::GeomToleranceRefGUID() );
mainNode = TDataStd_TreeNode::Set ( theL, XCAFDoc::GeomToleranceRefGUID() );
refNode->Remove(); // abv: fix against bug in TreeNode::Append()
mainNode->Append(refNode);
}
//=======================================================================
//function : SetDimTol
//purpose :
//=======================================================================
void XCAFDoc_DimTolTool::SetDimTol(const TDF_Label& L,
const TDF_Label& DimTolL) const
void XCAFDoc_DimTolTool::SetDimTol(const TDF_Label& theL,
const TDF_Label& theDimTolL) const
{
// set reference
Handle(TDataStd_TreeNode) refNode, mainNode;
// mainNode = TDataStd_TreeNode::Set ( DimTolL, XCAFDoc::DimTolRefGUID() );
// refNode = TDataStd_TreeNode::Set ( L, XCAFDoc::DimTolRefGUID() );
refNode = TDataStd_TreeNode::Set ( DimTolL, XCAFDoc::DimTolRefGUID() );
mainNode = TDataStd_TreeNode::Set ( L, XCAFDoc::DimTolRefGUID() );
refNode = TDataStd_TreeNode::Set ( theDimTolL, XCAFDoc::DimTolRefGUID() );
mainNode = TDataStd_TreeNode::Set (theL, XCAFDoc::DimTolRefGUID() );
refNode->Remove(); // abv: fix against bug in TreeNode::Append()
mainNode->Append(refNode);
}
@@ -240,42 +406,88 @@ TDF_Label XCAFDoc_DimTolTool::SetDimTol(const TDF_Label& L,
//purpose :
//=======================================================================
Standard_Boolean XCAFDoc_DimTolTool::GetRefShapeLabel(const TDF_Label& L,
TDF_Label& ShapeL) const
Standard_Boolean XCAFDoc_DimTolTool::GetRefShapeLabel(const TDF_Label& theL,
TDF_LabelSequence& theShapeL) const
{
Handle(TDataStd_TreeNode) Node;
if( !L.FindAttribute(XCAFDoc::DimTolRefGUID(),Node) || !Node->HasFather() ) {
if( !L.FindAttribute(XCAFDoc::DatumRefGUID(),Node) || !Node->HasFather() ) {
return Standard_False;
theShapeL.Clear();
Handle(TDataStd_TreeNode) aNode;
if( !theL.FindAttribute(XCAFDoc::DimTolRefGUID(),aNode) || !aNode->HasFather() ) {
if( !theL.FindAttribute(XCAFDoc::DatumRefGUID(),aNode) || !aNode->HasFather() ) {
if( !theL.FindAttribute(XCAFDoc::GeomToleranceRefGUID(),aNode) || !aNode->HasFather() ) {
Handle(XCAFDoc_GraphNode) aGNode;
if( theL.FindAttribute(XCAFDoc::DimensionRefGUID(),aGNode) && aGNode->NbFathers() > 0 ) {
for(Standard_Integer i = 1; i <= aGNode->NbFathers(); i++)
{
theShapeL.Append(aGNode->GetFather(i)->Label());
}
return Standard_True;
}
return Standard_False;
}
}
}
ShapeL = Node->Father()->Label();
theShapeL.Append(aNode->Father()->Label());
return Standard_True;
}
//=======================================================================
//function : GetRefDGTLabels
//function : GetRefDimensionLabels
//purpose :
//=======================================================================
Standard_Boolean XCAFDoc_DimTolTool::GetRefDGTLabels(const TDF_Label& ShapeL,
TDF_LabelSequence &DimTols) const
Standard_Boolean XCAFDoc_DimTolTool::GetRefDimensionLabels(const TDF_Label& theShapeL,
TDF_LabelSequence& theDimTols) const
{
Handle(TDataStd_TreeNode) Node;
if( !ShapeL.FindAttribute(XCAFDoc::DimTolRefGUID(),Node) ||
!Node->HasFirst() ) {
Handle(XCAFDoc_GraphNode) aGNode;
if( theShapeL.FindAttribute(XCAFDoc::DimensionRefGUID(),aGNode) && aGNode->NbChildren() > 0 ) {
for(Standard_Integer i = 1; i <= aGNode->NbChildren(); i++)
{
theDimTols.Append(aGNode->GetChild(i)->Label());
}
return Standard_True;
}
return Standard_False;
}
//=======================================================================
//function : GetRefGeomToleranceLabels
//purpose :
//=======================================================================
Standard_Boolean XCAFDoc_DimTolTool::GetRefGeomToleranceLabels(const TDF_Label& theShapeL,
TDF_LabelSequence& theDimTols) const
{
Handle(TDataStd_TreeNode) aNode;
if( !theShapeL.FindAttribute(XCAFDoc::GeomToleranceRefGUID(),aNode) ||
!aNode->HasFirst() ) {
return Standard_False;
}
Handle(TDataStd_TreeNode) Last = Node->First();
DimTols.Append(Last->Label());
while(Last->HasNext()) {
Last = Last->Next();
DimTols.Append(Last->Label());
Handle(TDataStd_TreeNode) aLast = aNode->First();
theDimTols.Append(aLast->Label());
while(aLast->HasNext()) {
aLast = aLast->Next();
theDimTols.Append(aLast->Label());
}
return Standard_True;
}
//=======================================================================
//function : GetRefDatumLabel
//purpose :
//=======================================================================
Standard_Boolean XCAFDoc_DimTolTool::GetRefDatumLabel(const TDF_Label& theShapeL,
TDF_Label& theDatum) const
{
Handle(TDataStd_TreeNode) aNode;
if( !theShapeL.FindAttribute(XCAFDoc::DatumRefGUID(),aNode) ||
!aNode->HasFirst() ) {
return Standard_False;
}
Handle(TDataStd_TreeNode) aLast = aNode->First();
theDatum = aLast->Label();
return Standard_True;
}
//=======================================================================
//function : GetDimTol
@@ -306,10 +518,10 @@ Standard_Boolean XCAFDoc_DimTolTool::GetDimTol(const TDF_Label& DimTolL,
//purpose :
//=======================================================================
Standard_Boolean XCAFDoc_DimTolTool::IsDatum(const TDF_Label& DimTolL) const
Standard_Boolean XCAFDoc_DimTolTool::IsDatum(const TDF_Label& theDimTolL) const
{
Handle(XCAFDoc_Datum) DatumAttr;
if(DimTolL.FindAttribute(XCAFDoc_Datum::GetID(),DatumAttr)) {
Handle(XCAFDoc_Datum) aDatumAttr;
if(theDimTolL.FindAttribute(XCAFDoc_Datum::GetID(),aDatumAttr)) {
return Standard_True;
}
return Standard_False;
@@ -321,17 +533,16 @@ Standard_Boolean XCAFDoc_DimTolTool::IsDatum(const TDF_Label& DimTolL) const
//purpose :
//=======================================================================
void XCAFDoc_DimTolTool::GetDatumLabels(TDF_LabelSequence& Labels) const
void XCAFDoc_DimTolTool::GetDatumLabels(TDF_LabelSequence& theLabels) const
{
Labels.Clear();
TDF_ChildIterator ChildIterator( Label() );
for (; ChildIterator.More(); ChildIterator.Next()) {
TDF_Label L = ChildIterator.Value();
if ( IsDatum(L)) Labels.Append(L);
theLabels.Clear();
TDF_ChildIterator aChildIterator( Label() );
for (; aChildIterator.More(); aChildIterator.Next()) {
TDF_Label L = aChildIterator.Value();
if ( IsDatum(L)) theLabels.Append(L);
}
}
//=======================================================================
//function : FindDatum
//purpose :
@@ -375,24 +586,37 @@ TDF_Label XCAFDoc_DimTolTool::AddDatum(const Handle(TCollection_HAsciiString)& a
return DatumL;
}
//=======================================================================
//function : AddDatum
//purpose :
//=======================================================================
TDF_Label XCAFDoc_DimTolTool::AddDatum()
{
TDF_Label aDatumL;
TDF_TagSource aTag;
aDatumL = aTag.NewChild ( Label() );
Handle(XCAFDoc_Datum) aDat = XCAFDoc_Datum::Set(aDatumL);
TDataStd_Name::Set(aDatumL,"DGT:Datum");
return aDatumL;
}
//=======================================================================
//function : SetDatum
//purpose :
//=======================================================================
void XCAFDoc_DimTolTool::SetDatum(const TDF_Label& L,
const TDF_Label& DatumL) const
void XCAFDoc_DimTolTool::SetDatum(const TDF_Label& theL,
const TDF_Label& theDatumL) const
{
// set reference
Handle(TDataStd_TreeNode) refNode, mainNode;
refNode = TDataStd_TreeNode::Set ( DatumL, XCAFDoc::DatumRefGUID() );
mainNode = TDataStd_TreeNode::Set ( L, XCAFDoc::DatumRefGUID() );
refNode = TDataStd_TreeNode::Set ( theDatumL, XCAFDoc::DatumRefGUID() );
mainNode = TDataStd_TreeNode::Set ( theL, XCAFDoc::DatumRefGUID() );
refNode->Remove();
mainNode->Append(refNode);
}
//=======================================================================
//function : SetDatum
//purpose :
@@ -425,6 +649,31 @@ void XCAFDoc_DimTolTool::SetDatum(const TDF_Label& L,
ChGNode->SetFather(FGNode);
}
//=======================================================================
//function : SetDatumToGeomTol
//purpose :
//=======================================================================
void XCAFDoc_DimTolTool::SetDatumToGeomTol(const TDF_Label& theDatumL,
const TDF_Label& theTolerL) const
{
// set reference
Handle(XCAFDoc_GraphNode) aFGNode;
Handle(XCAFDoc_GraphNode) aChGNode;
if (! theTolerL.FindAttribute( XCAFDoc::DatumTolRefGUID(), aFGNode) ) {
aFGNode = new XCAFDoc_GraphNode;
aFGNode = XCAFDoc_GraphNode::Set(theTolerL);
}
if (! theDatumL.FindAttribute( XCAFDoc::DatumTolRefGUID(), aChGNode) ) {
aChGNode = new XCAFDoc_GraphNode;
aChGNode = XCAFDoc_GraphNode::Set(theDatumL);
}
aFGNode->SetGraphID( XCAFDoc::DatumTolRefGUID() );
aChGNode->SetGraphID( XCAFDoc::DatumTolRefGUID() );
aFGNode->SetChild(aChGNode);
aChGNode->SetFather(aFGNode);
}
//=======================================================================
//function : GetDatum
//purpose :
@@ -451,15 +700,33 @@ Standard_Boolean XCAFDoc_DimTolTool::GetDatum(const TDF_Label& theDatumL,
//purpose :
//=======================================================================
Standard_Boolean XCAFDoc_DimTolTool::GetDatumTolerLabels(const TDF_Label& DimTolL,
TDF_LabelSequence &Datums) const
Standard_Boolean XCAFDoc_DimTolTool::GetDatumOfTolerLabels(const TDF_Label& theDimTolL,
TDF_LabelSequence& theDatums) const
{
Handle(XCAFDoc_GraphNode) Node;
if( !DimTolL.FindAttribute(XCAFDoc::DatumTolRefGUID(),Node) )
Handle(XCAFDoc_GraphNode) aNode;
if( !theDimTolL.FindAttribute(XCAFDoc::DatumTolRefGUID(),aNode) )
return Standard_False;
for(Standard_Integer i=1; i<=Node->NbChildren(); i++) {
Handle(XCAFDoc_GraphNode) DatumNode = Node->GetChild(i);
Datums.Append(DatumNode->Label());
for(Standard_Integer i=1; i<=aNode->NbChildren(); i++) {
Handle(XCAFDoc_GraphNode) aDatumNode = aNode->GetChild(i);
theDatums.Append(aDatumNode->Label());
}
return Standard_True;
}
//=======================================================================
//function : GetTolerDatumLabels
//purpose :
//=======================================================================
Standard_Boolean XCAFDoc_DimTolTool::GetTolerOfDatumLabels(const TDF_Label& theDatumL,
TDF_LabelSequence& theTols) const
{
Handle(XCAFDoc_GraphNode) aNode;
if( !theDatumL.FindAttribute(XCAFDoc::DatumTolRefGUID(),aNode) )
return Standard_False;
for(Standard_Integer i=1; i<=aNode->NbFathers(); i++) {
Handle(XCAFDoc_GraphNode) aDatumNode = aNode->GetFather(i);
theTols.Append(aDatumNode->Label());
}
return Standard_True;
}
@@ -505,5 +772,4 @@ Handle(TDF_Attribute) XCAFDoc_DimTolTool::NewEmpty() const
void XCAFDoc_DimTolTool::Paste(const Handle(TDF_Attribute)& /*into*/,
const Handle(TDF_RelocationTable)& /*RT*/) const
{
}
}

View File

@@ -0,0 +1,55 @@
-- Created on: 2004-01-09
-- Created by: Sergey KUUL
-- Copyright (c) 2004-2014 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- This library is free software; you can redistribute it and/or modify it under
-- the terms of the GNU Lesser General Public License version 2.1 as published
-- by the Free Software Foundation, with special exception defined in the file
-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-- distribution for complete text of the license and disclaimer of any warranty.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
class Dimension from XCAFDoc inherits Attribute from TDF
---Purpose: attribute to store dimension
uses
Label from TDF,
RelocationTable from TDF,
DimensionObject from XCAFDimTolObjects
is
Create returns Dimension from XCAFDoc;
---Category: class methods
-- =============
GetID (myclass)
---C++: return const &
returns GUID from Standard;
Set (myclass; theLabel : Label from TDF)
returns Dimension from XCAFDoc;
ID (me)
---C++: return const &
returns GUID from Standard;
Restore (me: mutable; With : Attribute from TDF);
NewEmpty (me)
returns Attribute from TDF;
Paste (me; Into : Attribute from TDF;
RT : RelocationTable from TDF);
SetObject (me : mutable; theDimensionObject : DimensionObject from XCAFDimTolObjects);
GetObject (me) returns DimensionObject from XCAFDimTolObjects;
end Dimension;

View File

@@ -0,0 +1,329 @@
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <XCAFDoc_Dimension.ixx>
#include <TDF_RelocationTable.hxx>
#include <XCAFDoc.hxx>
#include <TDataStd_TreeNode.hxx>
#include <Precision.hxx>
#include <TColgp_HArray1OfPnt.hxx>
#include <TDataStd_Integer.hxx>
#include <TDataStd_IntegerArray.hxx>
#include <TDataStd_Real.hxx>
#include <TDataStd_RealArray.hxx>
#include <TNaming_Builder.hxx>
#include <TNaming_NamedShape.hxx>
#include <TColStd_HArray1OfReal.hxx>
#include <TopoDS.hxx>
enum ChildLab
{
ChildLab_Type = 1,
ChildLab_Value,
ChildLab_Qualifier,
ChildLab_Class,
ChildLab_Dec,
ChildLab_Modifiers,
ChildLab_Path,
ChildLab_Dir,
ChildLab_Pnts
};
//=======================================================================
//function : XCAFDoc_Dimension
//purpose :
//=======================================================================
XCAFDoc_Dimension::XCAFDoc_Dimension()
{
}
//=======================================================================
//function : GetID
//purpose :
//=======================================================================
const Standard_GUID& XCAFDoc_Dimension::GetID()
{
static Standard_GUID DGTID ("58ed092c-44de-11d8-8776-001083004c77");
//static Standard_GUID ID("efd212e9-6dfd-11d4-b9c8-0060b0ee281b");
return DGTID;
//return ID;
}
//=======================================================================
//function : Set
//purpose :
//=======================================================================
Handle(XCAFDoc_Dimension) XCAFDoc_Dimension::Set(const TDF_Label& theLabel)
{
Handle(XCAFDoc_Dimension) A;
if (!theLabel.FindAttribute(XCAFDoc_Dimension::GetID(), A)) {
A = new XCAFDoc_Dimension();
theLabel.AddAttribute(A);
}
return A;
}
//=======================================================================
//function : SetObject
//purpose :
//=======================================================================
void XCAFDoc_Dimension::SetObject (const Handle(XCAFDimTolObjects_DimensionObject)& theObject)
{
Backup();
Handle(TDataStd_Integer) aType;
if(!Label().FindChild(ChildLab_Type).FindAttribute(TDataStd_Integer::GetID(), aType))
{
aType = new TDataStd_Integer();
Label().FindChild(ChildLab_Type).AddAttribute(aType);
}
aType->Set(theObject->GetType());
if(theObject->GetValues().IsNull())
{
Label().FindChild(ChildLab_Value).ForgetAllAttributes();
}
else
{
Handle(TDataStd_RealArray) aVal;
if(!Label().FindChild(ChildLab_Value).FindAttribute(TDataStd_RealArray::GetID(), aVal))
{
aVal = new TDataStd_RealArray();
Label().FindChild(ChildLab_Value).AddAttribute(aVal);
}
aVal->ChangeArray(theObject->GetValues());
}
Handle(TDataStd_Integer) aQualifier;
if(!Label().FindChild(ChildLab_Qualifier).FindAttribute(TDataStd_Integer::GetID(), aQualifier))
{
aQualifier = new TDataStd_Integer();
Label().FindChild(ChildLab_Qualifier).AddAttribute(aQualifier);
}
aQualifier->Set(theObject->GetQualifier());
Standard_Boolean aH;
XCAFDimTolObjects_DimensionFormVariance aF;
XCAFDimTolObjects_DimensionGrade aG;
theObject->GetClassOfTolerance(aH,aF,aG);
Handle(TDataStd_IntegerArray) aClass;
if(!Label().FindChild(ChildLab_Class).FindAttribute(TDataStd_IntegerArray::GetID(), aClass))
{
aClass = new TDataStd_IntegerArray();
Label().FindChild(ChildLab_Class).AddAttribute(aClass);
}
Handle(TColStd_HArray1OfInteger) anArrI = new TColStd_HArray1OfInteger(1,3);
anArrI->SetValue(1,aH);
anArrI->SetValue(2,aF);
anArrI->SetValue(3,aG);
aClass->ChangeArray(anArrI);
Standard_Integer aL, aR;
theObject->GetNbOfDecimalPlaces(aL, aR);
Handle(TDataStd_IntegerArray) aDec;
if(!Label().FindChild(ChildLab_Dec).FindAttribute(TDataStd_IntegerArray::GetID(), aDec))
{
aDec = new TDataStd_IntegerArray();
Label().FindChild(ChildLab_Dec).AddAttribute(aDec);
}
anArrI = new TColStd_HArray1OfInteger(1,2);
anArrI->SetValue(1,aL);
anArrI->SetValue(2,aR);
aDec->ChangeArray(anArrI);
if(theObject->GetModifiers().Length() == 0)
{
Label().FindChild(ChildLab_Modifiers).ForgetAllAttributes();
}
else
{
Handle(TDataStd_IntegerArray) aModifiers;
if(!Label().FindChild(ChildLab_Modifiers).FindAttribute(TDataStd_IntegerArray::GetID(), aModifiers))
{
aModifiers = new TDataStd_IntegerArray();
Label().FindChild(ChildLab_Modifiers).AddAttribute(aModifiers);
}
anArrI = new TColStd_HArray1OfInteger(1,theObject->GetModifiers().Length());
for(Standard_Integer i = 1; i <= theObject->GetModifiers().Length(); i++)
anArrI->SetValue(i,theObject->GetModifiers().Value(i));
aModifiers->ChangeArray(anArrI);
}
if(!theObject->GetPath().IsNull())
{
TNaming_Builder tnBuild(Label().FindChild(ChildLab_Path));
tnBuild.Generated(theObject->GetPath());
}
else
{
Label().FindChild(ChildLab_Path).ForgetAllAttributes();
}
Handle(TDataStd_RealArray) aDir;
if(!Label().FindChild(ChildLab_Dir).FindAttribute(TDataStd_RealArray::GetID(), aDir))
{
aDir = new TDataStd_RealArray();
Label().FindChild(ChildLab_Dir).AddAttribute(aDir);
}
gp_Dir aD;
theObject->GetDirection(aD);
Handle(TColStd_HArray1OfReal) anArrR = new TColStd_HArray1OfReal(1,3);
anArrR->SetValue(1,aD.X());
anArrR->SetValue(2,aD.Y());
anArrR->SetValue(3,aD.Z());
aDir->ChangeArray(anArrR);
Handle(TDataStd_RealArray) aPnts;
if(!Label().FindChild(ChildLab_Pnts).FindAttribute(TDataStd_RealArray::GetID(), aPnts))
{
aPnts = new TDataStd_RealArray();
Label().FindChild(ChildLab_Pnts).AddAttribute(aPnts);
}
Handle(TColgp_HArray1OfPnt) aP = theObject->GetPoints();
if(!aP.IsNull() && aP->Length() > 0)
{
anArrR = new TColStd_HArray1OfReal(1,6);
anArrR->SetValue(1,aP->Value(1).X());
anArrR->SetValue(2,aP->Value(1).Y());
anArrR->SetValue(3,aP->Value(1).Z());
anArrR->SetValue(4,aP->Value(2).X());
anArrR->SetValue(5,aP->Value(2).Y());
anArrR->SetValue(6,aP->Value(2).Z());
aPnts->ChangeArray(anArrR);
}
}
//=======================================================================
//function : GetObject
//purpose :
//=======================================================================
Handle(XCAFDimTolObjects_DimensionObject) XCAFDoc_Dimension::GetObject() const
{
Handle(XCAFDimTolObjects_DimensionObject) anObj = new XCAFDimTolObjects_DimensionObject();
Handle(TDataStd_Integer) aType;
if(Label().FindChild(ChildLab_Type).FindAttribute(TDataStd_Integer::GetID(), aType))
{
anObj->SetType((XCAFDimTolObjects_DimensionType)aType->Get());
}
Handle(TDataStd_RealArray) aVal;
if(Label().FindChild(ChildLab_Value).FindAttribute(TDataStd_RealArray::GetID(), aVal)
&& !aVal->Array().IsNull())
{
anObj->SetValues(aVal->Array());
}
Handle(TDataStd_Integer) aQualifier;
if(Label().FindChild(ChildLab_Qualifier).FindAttribute(TDataStd_Integer::GetID(), aQualifier))
{
anObj->SetQualifier((XCAFDimTolObjects_DimensionQualifier)aQualifier->Get());
}
Handle(TDataStd_IntegerArray) aClass;
if(Label().FindChild(ChildLab_Class).FindAttribute(TDataStd_IntegerArray::GetID(), aClass)
&& !aClass->Array().IsNull() && aClass->Array()->Length() > 0)
{
anObj->SetClassOfTolerance(aClass->Array()->Value(1), (XCAFDimTolObjects_DimensionFormVariance)aClass->Array()->Value(2), (XCAFDimTolObjects_DimensionGrade)aClass->Array()->Value(3));
}
Handle(TDataStd_IntegerArray) aDec;
if(Label().FindChild(ChildLab_Dec).FindAttribute(TDataStd_IntegerArray::GetID(), aDec)
&& !aDec->Array().IsNull() && aDec->Array()->Length() > 0)
{
anObj->SetNbOfDecimalPlaces(aDec->Array()->Value(1), aDec->Array()->Value(2));
}
Handle(TDataStd_IntegerArray) aModifiers;
if(Label().FindChild(ChildLab_Modifiers).FindAttribute(TDataStd_IntegerArray::GetID(), aModifiers)
&& !aModifiers->Array().IsNull())
{
XCAFDimTolObjects_DimensionModifiersSequence aM;
for(Standard_Integer i = 1; i <= aModifiers->Array()->Length(); i++)
aM.Append((XCAFDimTolObjects_DimensionModif)aModifiers->Array()->Value(i));
anObj->SetModifiers(aM);
}
Handle(TNaming_NamedShape) aShape;
if(Label().FindChild(ChildLab_Path).FindAttribute(TNaming_NamedShape::GetID(), aShape)
&& !aShape.IsNull())
{
anObj->SetPath(TopoDS::Edge(aShape->Get()));
}
Handle(TDataStd_RealArray) aDir;
if(Label().FindChild(ChildLab_Dir).FindAttribute(TDataStd_RealArray::GetID(), aDir)
&& !aDir->Array().IsNull() && aDir->Array()->Length() > 0)
{
gp_Dir aD(aDir->Array()->Value(1), aDir->Array()->Value(2), aDir->Array()->Value(3));
anObj->SetDirection(aD);
}
Handle(TDataStd_RealArray) aPnts;
if(Label().FindChild(ChildLab_Pnts).FindAttribute(TDataStd_RealArray::GetID(), aPnts)
&& !aPnts->Array().IsNull() && aPnts->Array()->Length() > 0)
{
Handle(TColgp_HArray1OfPnt) aP = new TColgp_HArray1OfPnt(1,2);
aP->SetValue(1, gp_Pnt(aPnts->Array()->Value(1), aPnts->Array()->Value(2), aPnts->Array()->Value(3)));
aP->SetValue(2, gp_Pnt(aPnts->Array()->Value(4), aPnts->Array()->Value(5), aPnts->Array()->Value(6)));
anObj->SetPoints(aP);
}
return anObj;
}
//=======================================================================
//function : ID
//purpose :
//=======================================================================
const Standard_GUID& XCAFDoc_Dimension::ID() const
{
return GetID();
}
//=======================================================================
//function : Restore
//purpose :
//=======================================================================
void XCAFDoc_Dimension::Restore(const Handle(TDF_Attribute)& /*With*/)
{
}
//=======================================================================
//function : NewEmpty
//purpose :
//=======================================================================
Handle(TDF_Attribute) XCAFDoc_Dimension::NewEmpty() const
{
return new XCAFDoc_Dimension();
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
void XCAFDoc_Dimension::Paste(const Handle(TDF_Attribute)& /*Into*/,
const Handle(TDF_RelocationTable)& /*RT*/) const
{
}

View File

@@ -0,0 +1,58 @@
-- Created on: 2004-01-09
-- Created by: Sergey KUUL
-- Copyright (c) 2004-2014 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- This library is free software; you can redistribute it and/or modify it under
-- the terms of the GNU Lesser General Public License version 2.1 as published
-- by the Free Software Foundation, with special exception defined in the file
-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-- distribution for complete text of the license and disclaimer of any warranty.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
class GeomTolerance from XCAFDoc inherits Attribute from TDF
---Purpose: attribute to store dimension and tolerance
uses
Label from TDF,
RelocationTable from TDF,
GeomToleranceObject from XCAFDimTolObjects
is
Create returns GeomTolerance from XCAFDoc;
Create(theObj : GeomTolerance from XCAFDoc) returns GeomTolerance from XCAFDoc;
---Category: class methods
-- =============
GetID (myclass)
---C++: return const &
returns GUID from Standard;
Set (myclass; theLabel : Label from TDF)
returns GeomTolerance from XCAFDoc;
SetObject (me : mutable; theObject : GeomToleranceObject from XCAFDimTolObjects);
GetObject (me) returns GeomToleranceObject from XCAFDimTolObjects;
ID (me)
---C++: return const &
returns GUID from Standard;
Restore (me: mutable; With : Attribute from TDF);
NewEmpty (me)
returns Attribute from TDF;
Paste (me; Into : Attribute from TDF;
RT : RelocationTable from TDF);
end GeomTolerance;

View File

@@ -0,0 +1,261 @@
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <XCAFDoc_GeomTolerance.ixx>
#include <TDF_RelocationTable.hxx>
#include <XCAFDoc.hxx>
#include <TDataStd_TreeNode.hxx>
#include <TDataStd_Integer.hxx>
#include <TDataStd_IntegerArray.hxx>
#include <TDataStd_Real.hxx>
enum ChildLab
{
ChildLab_Type = 1,
ChildLab_TypeOfValue,
ChildLab_Value,
ChildLab_MatReqModif,
ChildLab_ZoneModif,
ChildLab_ValueOfZoneModif,
ChildLab_Modifiers,
ChildLab_aMaxValueModif
};
//=======================================================================
//function : XCAFDoc_GeomTolerance
//purpose :
//=======================================================================
XCAFDoc_GeomTolerance::XCAFDoc_GeomTolerance()
{
}
//=======================================================================
//function : GetID
//purpose :
//=======================================================================
const Standard_GUID& XCAFDoc_GeomTolerance::GetID()
{
static Standard_GUID DGTID ("58ed092f-44de-11d8-8776-001083004c77");
//static Standard_GUID ID("efd212e9-6dfd-11d4-b9c8-0060b0ee281b");
return DGTID;
//return ID;
}
//=======================================================================
//function :
//purpose :
//=======================================================================
Handle(XCAFDoc_GeomTolerance) XCAFDoc_GeomTolerance::Set (const TDF_Label& theLabel)
{
Handle(XCAFDoc_GeomTolerance) A;
if (!theLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), A)) {
A = new XCAFDoc_GeomTolerance();
theLabel.AddAttribute(A);
}
return A;
}
//=======================================================================
//function : SetObject
//purpose :
//=======================================================================
void XCAFDoc_GeomTolerance::SetObject (const Handle(XCAFDimTolObjects_GeomToleranceObject)& theObject)
{
Backup();
Handle(TDataStd_Integer) aType;
if(!Label().FindChild(ChildLab_Type).FindAttribute(TDataStd_Integer::GetID(), aType))
{
aType = new TDataStd_Integer();
Label().FindChild(ChildLab_Type).AddAttribute(aType);
}
aType->Set(theObject->GetType());
Handle(TDataStd_Integer) aTypeOfValue;
if(!Label().FindChild(ChildLab_TypeOfValue).FindAttribute(TDataStd_Integer::GetID(), aTypeOfValue))
{
aTypeOfValue = new TDataStd_Integer();
Label().FindChild(ChildLab_TypeOfValue).AddAttribute(aTypeOfValue);
}
aTypeOfValue->Set(theObject->GetTypeOfValue());
Handle(TDataStd_Real) aValue;
if(!Label().FindChild(ChildLab_Value).FindAttribute(TDataStd_Real::GetID(), aValue))
{
aValue = new TDataStd_Real();
Label().FindChild(ChildLab_Value).AddAttribute(aValue);
}
aValue->Set(theObject->GetValue());
Handle(TDataStd_Integer) aMatReqModif;
if(!Label().FindChild(ChildLab_MatReqModif).FindAttribute(TDataStd_Integer::GetID(), aMatReqModif))
{
aMatReqModif = new TDataStd_Integer();
Label().FindChild(ChildLab_MatReqModif).AddAttribute(aMatReqModif);
}
aMatReqModif->Set(theObject->GetMaterialRequirementModifier());
Handle(TDataStd_Integer) aZoneModif;
if(!Label().FindChild(ChildLab_ZoneModif).FindAttribute(TDataStd_Integer::GetID(), aZoneModif))
{
aZoneModif = new TDataStd_Integer();
Label().FindChild(ChildLab_ZoneModif).AddAttribute(aZoneModif);
}
aZoneModif->Set(theObject->GetZoneModifier());
Handle(TDataStd_Real) aValueOfZoneModif;
if(!Label().FindChild(ChildLab_ValueOfZoneModif).FindAttribute(TDataStd_Real::GetID(), aValueOfZoneModif))
{
aValueOfZoneModif = new TDataStd_Real();
Label().FindChild(ChildLab_ValueOfZoneModif).AddAttribute(aValueOfZoneModif);
}
aValueOfZoneModif->Set(theObject->GetValueOfZoneModifier());
if(theObject->GetModifiers().Length() == 0)
{
Label().FindChild(ChildLab_Modifiers).ForgetAllAttributes();
}
else
{
Handle(TDataStd_IntegerArray) aModifiers;
if(!Label().FindChild(ChildLab_Modifiers).FindAttribute(TDataStd_IntegerArray::GetID(), aModifiers)
|| theObject->GetModifiers().Length() == 0)
{
aModifiers = new TDataStd_IntegerArray();
Label().FindChild(ChildLab_Modifiers).AddAttribute(aModifiers);
}
Handle(TColStd_HArray1OfInteger) anArr = new TColStd_HArray1OfInteger(1,theObject->GetModifiers().Length());
for(Standard_Integer i = 1; i <= theObject->GetModifiers().Length(); i++)
anArr->SetValue(i,theObject->GetModifiers().Value(i));
aModifiers->ChangeArray(anArr);
}
Handle(TDataStd_Real) aMaxValueModif;
if(!Label().FindChild(ChildLab_aMaxValueModif).FindAttribute(TDataStd_Real::GetID(), aMaxValueModif))
{
aMaxValueModif = new TDataStd_Real();
Label().FindChild(ChildLab_aMaxValueModif).AddAttribute(aMaxValueModif);
}
aMaxValueModif->Set(theObject->GetMaxValueModifier());
}
//=======================================================================
//function :GetObject
//purpose :
//=======================================================================
Handle(XCAFDimTolObjects_GeomToleranceObject) XCAFDoc_GeomTolerance::GetObject() const
{
Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = new XCAFDimTolObjects_GeomToleranceObject();
Handle(TDataStd_Integer) aType;
if(Label().FindChild(ChildLab_Type).FindAttribute(TDataStd_Integer::GetID(), aType))
{
anObj->SetType((XCAFDimTolObjects_GeomToleranceType)aType->Get());
}
Handle(TDataStd_Integer) aTypeOfValue;
if(Label().FindChild(ChildLab_TypeOfValue).FindAttribute(TDataStd_Integer::GetID(), aTypeOfValue))
{
anObj->SetTypeOfValue((XCAFDimTolObjects_GeomToleranceTypeValue)aTypeOfValue->Get());
}
Handle(TDataStd_Real) aValue;
if(Label().FindChild(ChildLab_Value).FindAttribute(TDataStd_Real::GetID(), aValue))
{
anObj->SetValue(aValue->Get());
}
Handle(TDataStd_Integer) aMatReqModif;
if(Label().FindChild(ChildLab_MatReqModif).FindAttribute(TDataStd_Integer::GetID(), aMatReqModif))
{
anObj->SetMaterialRequirementModifier((XCAFDimTolObjects_GeomToleranceMatReqModif)aMatReqModif->Get());
}
Handle(TDataStd_Integer) aZoneModif;
if(Label().FindChild(ChildLab_ZoneModif).FindAttribute(TDataStd_Integer::GetID(), aZoneModif))
{
anObj->SetZoneModifier((XCAFDimTolObjects_GeomToleranceZoneModif)aZoneModif->Get());
}
Handle(TDataStd_Real) aValueOfZoneModif;
if(Label().FindChild(ChildLab_ValueOfZoneModif).FindAttribute(TDataStd_Real::GetID(), aValueOfZoneModif))
{
anObj->SetValueOfZoneModifier(aValueOfZoneModif->Get());
}
Handle(TDataStd_IntegerArray) anArr;
if(Label().FindChild(ChildLab_Modifiers).FindAttribute(TDataStd_IntegerArray::GetID(), anArr)
&& !anArr->Array().IsNull())
{
XCAFDimTolObjects_GeomToleranceModifiersSequence aModifiers;
for(Standard_Integer i = 1; i <= anArr->Length(); i++)
aModifiers.Append((XCAFDimTolObjects_GeomToleranceModif)anArr->Value(i));
anObj->SetModifiers(aModifiers);
}
Handle(TDataStd_Real) aMaxValueModif;
if(Label().FindChild(ChildLab_aMaxValueModif).FindAttribute(TDataStd_Real::GetID(), aMaxValueModif))
{
anObj->SetMaxValueModifier(aMaxValueModif->Get());
}
return anObj;
}
//=======================================================================
//function : ID
//purpose :
//=======================================================================
const Standard_GUID& XCAFDoc_GeomTolerance::ID() const
{
return GetID();
}
//=======================================================================
//function : Restore
//purpose :
//=======================================================================
void XCAFDoc_GeomTolerance::Restore(const Handle(TDF_Attribute)& /*With*/)
{
}
//=======================================================================
//function : NewEmpty
//purpose :
//=======================================================================
Handle(TDF_Attribute) XCAFDoc_GeomTolerance::NewEmpty() const
{
return new XCAFDoc_GeomTolerance();
}
//=======================================================================
//function : Paste
//purpose :
//=======================================================================
void XCAFDoc_GeomTolerance::Paste(const Handle(TDF_Attribute)& /*Into*/,
const Handle(TDF_RelocationTable)& /*RT*/) const
{
}

View File

@@ -28,6 +28,8 @@ is
class Layers;
class GDTs;
class Props;
class Common;

View File

@@ -75,6 +75,7 @@
#include <XDEDRAW_Shapes.hxx>
#include <XDEDRAW_Colors.hxx>
#include <XDEDRAW_GDTs.hxx>
#include <XDEDRAW_Layers.hxx>
#include <XDEDRAW_Props.hxx>
#include <XDEDRAW_Common.hxx>
@@ -600,8 +601,6 @@ static Standard_Integer XAttributeValue (Draw_Interpretor& di, Standard_Integer
else if ( att->ID() == XCAFDoc::ColorRefGUID(XCAFDoc_ColorGen) ) type = "Generic Color Link";
else if ( att->ID() == XCAFDoc::ColorRefGUID(XCAFDoc_ColorSurf) ) type = "Surface Color Link";
else if ( att->ID() == XCAFDoc::ColorRefGUID(XCAFDoc_ColorCurv) ) type = "Curve Color Link";
else if ( att->ID() == XCAFDoc::DimTolRefGUID() ) type = "DGT Link";
else if ( att->ID() == XCAFDoc::DatumRefGUID() ) type = "Datum Link";
else if ( att->ID() == XCAFDoc::MaterialRefGUID() ) type = "Material Link";
Handle(TDataStd_TreeNode) TN = Handle(TDataStd_TreeNode)::DownCast(att);
TCollection_AsciiString ref;
@@ -768,6 +767,12 @@ static Standard_Integer XAttributeValue (Draw_Interpretor& di, Standard_Integer
else if ( att->ID() == XCAFDoc::DatumTolRefGUID() ) {
type = "DatumToler Link";
}
else if ( att->ID() == XCAFDoc::DimTolRefGUID() ){
type = "DGT Link";
}
else if ( att->ID() == XCAFDoc::DatumRefGUID() ){
type = "Datum Link";
}
else return 0;
Handle(XCAFDoc_GraphNode) DETGN = Handle(XCAFDoc_GraphNode)::DownCast(att);
@@ -1140,6 +1145,7 @@ void XDEDRAW::Init(Draw_Interpretor& di)
XDEDRAW_Colors::InitCommands ( di );
XDEDRAW_Layers::InitCommands ( di );
XDEDRAW_Props::InitCommands ( di );
XDEDRAW_GDTs::InitCommands ( di );
XDEDRAW_Common::InitCommands ( di );//moved from EXE
}

View File

@@ -0,0 +1,27 @@
-- Created on: 2015-06-18
-- Created by: Ilya Novikov
-- Copyright (c) 2000-2015 OPEN CASCADE SAS
--
-- This file is part of Open CASCADE Technology software library.
--
-- This library is free software; you can redistribute it and/or modify it under
-- the terms of the GNU Lesser General Public License version 2.1 as published
-- by the Free Software Foundation, with special exception defined in the file
-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-- distribution for complete text of the license and disclaimer of any warranty.
--
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
class GDTs from XDEDRAW
---Purpose: Contains commands to work with G&DTs
uses
Interpretor from Draw
is
InitCommands (myclass; theCommands: in out Interpretor from Draw);
end GDTs;

2209
src/XDEDRAW/XDEDRAW_GDTs.cxx Normal file

File diff suppressed because it is too large Load Diff

2
tests/gdt/begin Normal file
View File

@@ -0,0 +1,2 @@
cpulimit 1000
pload ALL

14
tests/gdt/dimensions/A1 Normal file
View File

@@ -0,0 +1,14 @@
box b 10 10 10
explode b
explode b_1
NewDocument D
XAddShape D b
XAddDimension D b_1_1
#0:1:4:1
XSetDimensionType D 0:1:4:1 14
XSetDimensionValue D 0:1:4:1 1.5
set c_value "1.5"
set c_type "Size_CurveLength"

16
tests/gdt/dimensions/A2 Normal file
View File

@@ -0,0 +1,16 @@
box b 10 10 10
explode b
explode b_1
NewDocument D
XAddShape D b
XAddDimension D b_1_1
#0:1:4:1
XSetDimensionType D 0:1:4:1 15
XSetDimensionValue D 0:1:4:1 2.5
XSetDimensionQualifier D 0:1:4:1 2
set c_value "2.5"
set c_type "Size_Diameter"
set c_qalif "Max"

15
tests/gdt/dimensions/A3 Normal file
View File

@@ -0,0 +1,15 @@
box b 10 10 10
explode b
explode b_1
NewDocument D
XAddShape D b
XAddDimension D b_1_1
#0:1:4:1
XSetDimensionType D 0:1:4:1 14
XSetDimensionRange D 0:1:4:1 1.5 2.5
set c_range "lower 1.5 upper 2.5"
set c_type "Size_CurveLength"

20
tests/gdt/dimensions/A4 Normal file
View File

@@ -0,0 +1,20 @@
box b 10 10 10
explode b
explode b_1
NewDocument D
XAddShape D b
XAddDimension D b_1_1
#0:1:4:1
XSetDimensionType D 0:1:4:1 15
XSetDimensionValue D 0:1:4:1 2.5
XSetDimensionClassOfTol D 0:1:4:1 1 8 7
XSetDimensionNbOfDecimalPlaces D 0:1:4:1 3 3
XAddDimensionModifiers D 0:1:4:1 14 0
set c_value "2.5"
set c_type "Size_Diameter"
set c_class "f6"
set c_d "3.3"
set c_mod "AverageSize, ControlledRadius"

24
tests/gdt/dimensions/A5 Normal file
View File

@@ -0,0 +1,24 @@
box b 10 10 10
box b1 20 20 20 30 30 30
explode b
explode b_1
explode b1
explode b1_1
NewDocument D
XAddShape D b
XAddShape D b1
XAddDimension D b_1_1 b1_1_1
#0:1:4:1
XSetDimensionType D 0:1:4:1 2
XSetDimensionValue D 0:1:4:1 6
XSetDimensionPlusMinusTol D 0:1:4:1 -0.001 0.002
vertex v1 10 10 10
vertex v2 20 20 20
XSetDimensionPoints D 0:1:4:1 v1 v2
set c_value "6"
set c_type "Location_LinearDistance"
set c_pnts "10;10;10 20;20;20"
set c_plusminus "lower -0.001 upper 0.002"

22
tests/gdt/dimensions/A6 Normal file
View File

@@ -0,0 +1,22 @@
box b 10 10 10
box b1 20 20 20 30 30 30
explode b
explode b_1
explode b1
explode b1_1
NewDocument D
XAddShape D b
XAddShape D b1
XAddDimension D b_1_1 b1_1_1
#0:1:4:1
XSetDimensionType D 0:1:4:1 2
XSetDimensionValue D 0:1:4:1 6
XSetDimensionPlusMinusTol D 0:1:4:1 -0.001 0.002
XSetDimensionDir D 0:1:4:1 1 1 0
set c_value "6"
set c_type "Location_LinearDistance"
set c_plusminus "lower -0.001 upper 0.002"
set c_dir "0.70710678118654757;0.70710678118654757;0"

View File

@@ -0,0 +1,12 @@
set c_type 0
set c_value 0
set c_qalif 0
set c_classtol 0
set c_d 0
set c_modif 0
set c_dir 0
set c_pnts 0
set c_range 0
set c_mod 0
set c_plusminus 0
set c_dump 0

57
tests/gdt/dimensions/end Normal file
View File

@@ -0,0 +1,57 @@
set value [XGetDimensionValue D 0:1:4:1]
set type [XGetDimensionType D 0:1:4:1]
set qualif [XGetDimensionQualifier D 0:1:4:1]
set range [XGetDimensionRange D 0:1:4:1]
set classtol [XGetDimensionClassOfTol D 0:1:4:1]
set d [XGetDimensionNbOfDecimalPlaces D 0:1:4:1]
set dir [XGetDimensionDir D 0:1:4:1]
set pnts [XGetDimensionPoints D 0:1:4:1]
set mod [XGetDimensionModifiers D 0:1:4:1]
set plusminus [XGetDimensionPlusMinusTol D 0:1:4:1]
set dump [XDumpDGTs D all]
if { $c_value != 0 && $value != $c_value} {
puts "Error wrong value"
} else {
if { $c_type != 0 && [string compare $type $c_type] != 0} {
puts "Error wrong type"
} else {
if { $c_qalif != 0 && [string compare $qualif $c_qalif] != 0} {
puts "Error wrong qualifier"
} else {
if { $c_classtol != 0 && $classtol != $c_classtol} {
puts "Error wrong class of tolerance"
} else {
if { $c_d != 0 && $d != $c_d} {
puts "Error wrong nbdigit"
} else {
if { $c_modif != 0 && [string compare $modif $c_modif] != 0} {
puts "Error wrong modifiers"
} else {
if { $c_dir != 0 && [string compare $dir $c_dir] != 0} {
puts "Error wrong direction"
} else {
if { $c_pnts != 0 && [string compare $pnts $c_pnts] != 0} {
puts "Error wrong points"
} else {
if { $c_range != 0 && [string compare $range $c_range] != 0} {
puts "Error wrong range"
} else {
if { $c_mod != 0 && [string compare $mod $c_mod] != 0} {
puts "Error wrong modifiers"
} else {
if { $c_plusminus != 0 && [string compare $plusminus $c_plusminus] != 0} {
puts "Error wrong modifiers"
} else {
puts "TEST COMPLETED"
}
}
}
}
}
}
}
}
}
}
}

0
tests/gdt/end Normal file
View File

2
tests/gdt/grids.list Normal file
View File

@@ -0,0 +1,2 @@
001 dimensions
002 tolerances

34
tests/gdt/tolerances/A1 Normal file
View File

@@ -0,0 +1,34 @@
box b 10 10 10
explode b
explode b_1
NewDocument D
XAddShape D b
XAddGeomTolerance D b_1_1
XAddDatum D b_1_2
#0:1:4:1
#0:1:4:2
XSetDatumName D 0:1:4:2 A
XAddDatumModifier D 0:1:4:2 10
XSetDatum D 0:1:4:2 0:1:4:1
XSetToleranceValue D 0:1:4:1 0.5
XSetTypeOfTolerance D 0:1:4:1 1
XSetTypeOfToleranceValue D 0:1:4:1 1
XSetTolMaterialReq D 0:1:4:1 1
XSetTolZoneMod D 0:1:4:1 1
XSetTolZoneModValue D 0:1:4:1 1
XAddTolModifier D 0:1:4:1 6 1
XSetTolMaxValue D 0:1:4:1 1.5
set c_dname "A"
set c_dmod "DistanceVariable"
set c_val "0.5"
set c_type "Angularity"
set c_typev "Diameter"
set c_mat "M"
set c_zone "P"
set c_zonev "1"
set c_mod "Major_Diameter, Common_Zone"
set c_max "1.5"

26
tests/gdt/tolerances/A2 Normal file
View File

@@ -0,0 +1,26 @@
box b 10 10 10
explode b
explode b_1
NewDocument D
XAddShape D b
XAddGeomTolerance D b_1_1
XAddDatum D b_1_2
XAddDatum D b_1_3
#0:1:4:1
#0:1:4:2
#0:1:4:3
XSetDatumName D 0:1:4:2 A
XSetDatumName D 0:1:4:3 B
XAddDatumModifier D 0:1:4:2 10
XSetDatum D 0:1:4:2 0:1:4:1
XSetDatum D 0:1:4:3 0:1:4:1
XSetToleranceValue D 0:1:4:1 0.5
set c_dname "A"
set c_dmod "DistanceVariable"
set c_val "0.5"

View File

@@ -0,0 +1,11 @@
set c_dmod 0
set c_dname 0
set c_val 0
set c_type 0
set c_typev 0
set c_mat 0
set c_zone 0
set c_zonev 0
set c_mod 0
set c_max 0
set c_dump 0

54
tests/gdt/tolerances/end Normal file
View File

@@ -0,0 +1,54 @@
set dmod [XGetDatumModifiers D 0:1:4:2]
set dname [XGetDatumName D 0:1:4:2]
set type [XGetTypeOfTolerance D 0:1:4:1]
set typev [XGetTypeOfToleranceValue D 0:1:4:1]
set val [XGetToleranceValue D 0:1:4:1]
set mat [XGetTolMaterialReq D 0:1:4:1]
set zone [XGetTolZoneMod D 0:1:4:1]
set zonev [XGetTolZoneModValue D 0:1:4:1]
set mod [XGetTolModifier D 0:1:4:1]
set max [XGetTolMaxValue D 0:1:4:1]
set dump [XDumpDGTs D all]
if { $c_dmod != 0 && [string compare $dmod $c_dmod] != 0} {
puts "Error wrong datum modif"
} else {
if { $c_dname != 0 && [string compare $dname $c_dname] != 0} {
puts "Error wrong datum name"
} else {
if { $c_type != 0 && [string compare $type $c_type] != 0} {
puts "Error wrong type"
} else {
if { $c_typev != 0 && [string compare $typev $c_typev] != 0} {
puts "Error wrong type of value"
} else {
if { $c_mat != 0 && [string compare $mat $c_mat] != 0} {
puts "Error wrong mat"
} else {
if { $c_zone != 0 && [string compare $zone $c_zone] != 0} {
puts "Error wrong zone"
} else {
if { $c_zonev != 0 && $zonev != $c_zonev } {
puts "Error wrong zome value"
} else {
if { $c_mod != 0 && [string compare $mod $c_mod] != 0} {
puts "Error wrong modifiers"
} else {
if { $c_max != 0 && $max != $c_max } {
puts "Error wrong maxvalue"
} else {
if { $c_val != 0 && $val != $c_val } {
puts "Error wrong value"
} else {
puts "TEST COMPLETED"
}
}
}
}
}
}
}
}
}
}