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:
@@ -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
|
||||
|
@@ -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++) {
|
||||
|
@@ -1,3 +1,4 @@
|
||||
XCAFApp
|
||||
XCAFDimTolObjects
|
||||
XCAFDoc
|
||||
XCAFPrs
|
||||
|
291
src/XCAFDimTolObjects/XCAFDimTolObjects.cdl
Normal file
291
src/XCAFDimTolObjects/XCAFDimTolObjects.cdl
Normal 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;
|
63
src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.cdl
Normal file
63
src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.cdl
Normal 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;
|
142
src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.cxx
Normal file
142
src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.cxx
Normal 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();
|
||||
}
|
128
src/XCAFDimTolObjects/XCAFDimTolObjects_DimensionObject.cdl
Normal file
128
src/XCAFDimTolObjects/XCAFDimTolObjects_DimensionObject.cdl
Normal 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;
|
430
src/XCAFDimTolObjects/XCAFDimTolObjects_DimensionObject.cxx
Normal file
430
src/XCAFDimTolObjects/XCAFDimTolObjects_DimensionObject.cxx
Normal 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;
|
||||
}
|
@@ -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;
|
210
src/XCAFDimTolObjects/XCAFDimTolObjects_GeomToleranceObject.cxx
Normal file
210
src/XCAFDimTolObjects/XCAFDimTolObjects_GeomToleranceObject.cxx
Normal 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;
|
||||
}
|
62
src/XCAFDimTolObjects/XCAFDimTolObjects_Tool.cdl
Normal file
62
src/XCAFDimTolObjects/XCAFDimTolObjects_Tool.cdl
Normal 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;
|
187
src/XCAFDimTolObjects/XCAFDimTolObjects_Tool.cxx
Normal file
187
src/XCAFDimTolObjects/XCAFDimTolObjects_Tool.cxx
Normal 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;
|
||||
}
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -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 &
|
||||
|
@@ -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
|
||||
{
|
||||
}
|
||||
|
||||
}
|
55
src/XCAFDoc/XCAFDoc_Dimension.cdl
Normal file
55
src/XCAFDoc/XCAFDoc_Dimension.cdl
Normal 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;
|
329
src/XCAFDoc/XCAFDoc_Dimension.cxx
Normal file
329
src/XCAFDoc/XCAFDoc_Dimension.cxx
Normal 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
|
||||
{
|
||||
}
|
58
src/XCAFDoc/XCAFDoc_GeomTolerance.cdl
Normal file
58
src/XCAFDoc/XCAFDoc_GeomTolerance.cdl
Normal 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;
|
261
src/XCAFDoc/XCAFDoc_GeomTolerance.cxx
Normal file
261
src/XCAFDoc/XCAFDoc_GeomTolerance.cxx
Normal 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
|
||||
{
|
||||
}
|
@@ -28,6 +28,8 @@ is
|
||||
|
||||
class Layers;
|
||||
|
||||
class GDTs;
|
||||
|
||||
class Props;
|
||||
|
||||
class Common;
|
||||
|
@@ -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
|
||||
|
||||
}
|
||||
|
27
src/XDEDRAW/XDEDRAW_GDTs.cdl
Normal file
27
src/XDEDRAW/XDEDRAW_GDTs.cdl
Normal 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
2209
src/XDEDRAW/XDEDRAW_GDTs.cxx
Normal file
File diff suppressed because it is too large
Load Diff
2
tests/gdt/begin
Normal file
2
tests/gdt/begin
Normal file
@@ -0,0 +1,2 @@
|
||||
cpulimit 1000
|
||||
pload ALL
|
14
tests/gdt/dimensions/A1
Normal file
14
tests/gdt/dimensions/A1
Normal 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
16
tests/gdt/dimensions/A2
Normal 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
15
tests/gdt/dimensions/A3
Normal 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
20
tests/gdt/dimensions/A4
Normal 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
24
tests/gdt/dimensions/A5
Normal 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
22
tests/gdt/dimensions/A6
Normal 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"
|
12
tests/gdt/dimensions/begin
Normal file
12
tests/gdt/dimensions/begin
Normal 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
57
tests/gdt/dimensions/end
Normal 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
0
tests/gdt/end
Normal file
2
tests/gdt/grids.list
Normal file
2
tests/gdt/grids.list
Normal file
@@ -0,0 +1,2 @@
|
||||
001 dimensions
|
||||
002 tolerances
|
34
tests/gdt/tolerances/A1
Normal file
34
tests/gdt/tolerances/A1
Normal 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
26
tests/gdt/tolerances/A2
Normal 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"
|
||||
|
||||
|
11
tests/gdt/tolerances/begin
Normal file
11
tests/gdt/tolerances/begin
Normal 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
54
tests/gdt/tolerances/end
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user