p VrmlConverter
p VrmlData
p XCAFApp
+p XCAFDimTolObjects
p XCAFDoc
p XCAFDrivers
p XCAFPrs
p IVtkTools
t TKIVtk
p IVtkDraw
-t TKIVtkDraw
\ No newline at end of file
+t TKIVtkDraw
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 );
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 );
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++) {
XCAFApp
+XCAFDimTolObjects
XCAFDoc
XCAFPrs
--- /dev/null
+-- 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;
--- /dev/null
+-- 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;
--- /dev/null
+// 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();
+}
--- /dev/null
+-- 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;
--- /dev/null
+// 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;
+}
--- /dev/null
+-- 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;
--- /dev/null
+// 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;
+}
--- /dev/null
+-- 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;
--- /dev/null
+// 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;
+}
Quantity,
TCollection,
TColStd,
+ TColgp,
TopLoc,
TopoDS,
TopTools,
TDF,
TDocStd,
TDataStd,
+ XCAFDimTolObjects,
gp
is
ColorSurf, -- color of surfaces
ColorCurv -- color of curves
end ColorType;
-
class DocumentTool;
class Color;
class DimTol;
-
+
+ class Dimension;
+
+ class GeomTolerance;
+
class Datum;
-
+
class Material;
class Volume;
class GraphNodeSequence instantiates Sequence from TCollection
(GraphNode from XCAFDoc);
---Purpose: class for containing GraphNodes.
+
class DataMapOfShapeLabel instantiates
DataMap from TCollection (Shape from TopoDS,
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
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
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
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;
#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
{
}
-
//=======================================================================
//function : GetID
//purpose :
//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) aDatum;
+ if (!theLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum)) {
+ aDatum = new XCAFDoc_Datum();
+ theLabel.AddAttribute(aDatum);
+ }
+ aDatum->Set(theName,theDescription,theIdentification);
+ return aDatum;
+}
+
+//=======================================================================
+//function : Set
+//purpose :
+//=======================================================================
+
+Handle(XCAFDoc_Datum) XCAFDoc_Datum::Set(const TDF_Label& theLabel)
{
- 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;
+ return aDatum;
}
//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;
}
Handle(TCollection_HAsciiString) XCAFDoc_Datum::GetName() const
{
+ if(myName.IsNull())
+ return new TCollection_HAsciiString();
return myName;
}
-
//=======================================================================
-//function : GetDescription
+//function : GetDescriptio7n
//purpose :
//=======================================================================
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
//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();
}
//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);
}
const Handle(TCollection_HAsciiString)& aName,
const Handle(TCollection_HAsciiString)& aDescription)
{
+ Backup();
myKind = kind;
myVal = aVal;
myName = aName;
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
---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;
---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
-- 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;
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;
---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;
---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 &
#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>
//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
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);
}
//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 : GetRefDimensionLabels
+//purpose :
+//=======================================================================
+
+Standard_Boolean XCAFDoc_DimTolTool::GetRefDimensionLabels(const TDF_Label& theShapeL,
+ TDF_LabelSequence& theDimTols) const
+{
+ 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 : GetRefDGTLabels
+//function : GetRefGeomToleranceLabels
//purpose :
//=======================================================================
-Standard_Boolean XCAFDoc_DimTolTool::GetRefDGTLabels(const TDF_Label& ShapeL,
- TDF_LabelSequence &DimTols) const
+Standard_Boolean XCAFDoc_DimTolTool::GetRefGeomToleranceLabels(const TDF_Label& theShapeL,
+ TDF_LabelSequence& theDimTols) const
{
- Handle(TDataStd_TreeNode) Node;
- if( !ShapeL.FindAttribute(XCAFDoc::DimTolRefGUID(),Node) ||
- !Node->HasFirst() ) {
+ 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
//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;
//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 :
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 :
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 :
//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;
}
void XCAFDoc_DimTolTool::Paste(const Handle(TDF_Attribute)& /*into*/,
const Handle(TDF_RelocationTable)& /*RT*/) const
{
-}
-
+}
\ No newline at end of file
--- /dev/null
+-- 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;
--- /dev/null
+// 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
+{
+}
--- /dev/null
+-- 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;
--- /dev/null
+// 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
+{
+}
class Layers;
+ class GDTs;
+
class Props;
class Common;
#include <XDEDRAW_Shapes.hxx>
#include <XDEDRAW_Colors.hxx>
+#include <XDEDRAW_GDTs.hxx>
#include <XDEDRAW_Layers.hxx>
#include <XDEDRAW_Props.hxx>
#include <XDEDRAW_Common.hxx>
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;
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);
XDEDRAW_Colors::InitCommands ( di );
XDEDRAW_Layers::InitCommands ( di );
XDEDRAW_Props::InitCommands ( di );
+ XDEDRAW_GDTs::InitCommands ( di );
XDEDRAW_Common::InitCommands ( di );//moved from EXE
}
--- /dev/null
+-- 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;
--- /dev/null
+// 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.
+
+#include <XDEDRAW_GDTs.ixx>
+
+#include <Draw.hxx>
+#include <DBRep.hxx>
+#include <DDocStd.hxx>
+
+#include <TDF_Tool.hxx>
+#include <TDF_Label.hxx>
+#include <TDF_LabelSequence.hxx>
+#include <TDocStd_Document.hxx>
+#include <XCAFDoc_GraphNode.hxx>
+
+#include <XCAFDoc.hxx>
+#include <XCAFDoc_DocumentTool.hxx>
+#include <XCAFDoc_ShapeTool.hxx>
+#include <XCAFDoc_DimTol.hxx>
+#include <XCAFDoc_Dimension.hxx>
+#include <XCAFDimTolObjects_DimensionObject.hxx>
+#include <XCAFDoc_Datum.hxx>
+#include <XCAFDimTolObjects_DatumObject.hxx>
+#include <XCAFDoc_GeomTolerance.hxx>
+#include <XCAFDimTolObjects_GeomToleranceObject.hxx>
+#include <XCAFDoc_DimTolTool.hxx>
+#include <XCAFDimTolObjects_DimensionObjectSequence.hxx>
+#include <XCAFDimTolObjects_DatumObjectSequence.hxx>
+#include <XCAFDimTolObjects_GeomToleranceObjectSequence.hxx>
+#include <XCAFDimTolObjects_DatumSingleModif.hxx>
+#include <XCAFDimTolObjects_DimensionModif.hxx>
+#include <XCAFDimTolObjects_GeomToleranceModif.hxx>
+#include <XCAFDimTolObjects_DatumModifiersSequence.hxx>
+#include <XCAFDimTolObjects_DatumObject.hxx>
+#include <XCAFDimTolObjects_Tool.hxx>
+
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <TColStd_HArray1OfReal.hxx>
+#include <TColgp_HArray1OfPnt.hxx>
+
+#include <TopoDS.hxx>
+#include <TopoDS_Shape.hxx>
+#include <TopoDS_Edge.hxx>
+#include <TopoDS_Vertex.hxx>
+#include <BRep_Tool.hxx>
+
+
+
+static Standard_Integer DumpDGTs (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XDumpDGTs Doc shape/label/all\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool= XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TCollection_AsciiString name = argv[2];
+ TDF_LabelSequence aLabels;
+ if(name.IsEqual("all"))
+ {
+ aShapeTool->GetShapes(aLabels);
+ for ( Standard_Integer i=1; i <= aLabels.Length(); i++ )
+ {
+ aShapeTool->GetSubShapes(aLabels.Value(i), aLabels);
+ }
+ }
+ else
+ {
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( !aLabel.IsNull() ) {
+ aLabels.Append(aLabel);
+ aShapeTool->GetSubShapes(aLabel, aLabels);
+ }
+ else
+ {
+ TopoDS_Shape aShape= DBRep::Get(argv[2]);
+ if ( !aShape.IsNull() )
+ {
+ aShapeTool->Search(aShape, aLabel);
+ if ( !aLabel.IsNull() ) {
+ aLabels.Append(aLabel);
+ aShapeTool->GetSubShapes(aLabel, aLabels);
+ }
+ else
+ {
+ di<<"Shape "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ }
+ }
+ }
+
+ for ( Standard_Integer i=1; i <= aLabels.Length(); i++ )
+ {
+ Standard_Boolean flag = Standard_True;
+ TDF_LabelSequence aGDTs;
+ aDimTolTool->GetRefDimensionLabels(aLabels.Value(i), aGDTs);
+ for ( Standard_Integer j=1; j <= aGDTs.Length(); j++ )
+ {
+ Handle(XCAFDoc_Dimension) aDimTol;
+ if(aGDTs.Value(j).FindAttribute(XCAFDoc_Dimension::GetID(), aDimTol))
+ {
+ Handle(XCAFDimTolObjects_DimensionObject) aDimTolObj = aDimTol->GetObject();
+ if(flag)
+ {
+ TCollection_AsciiString Entry;
+ TDF_Tool::Entry(aLabels.Value(i), Entry);
+ di << "\n " << Entry;
+ flag = Standard_False;
+ }
+ TCollection_AsciiString Entry;
+ TDF_Tool::Entry(aGDTs.Value(j), Entry);
+ di << "\n \t " << Entry;
+ flag = Standard_False;
+
+ di << " Dimension";
+ }
+ }
+ aGDTs.Clear();
+ aDimTolTool->GetRefGeomToleranceLabels(aLabels.Value(i), aGDTs);
+ for ( Standard_Integer j=1; j <= aGDTs.Length(); j++ )
+ {
+ Handle(XCAFDoc_GeomTolerance) aDimTol;
+ if(aGDTs.Value(j).FindAttribute(XCAFDoc_GeomTolerance::GetID(), aDimTol))
+ {
+ Handle(XCAFDimTolObjects_GeomToleranceObject) aDimTolObj = aDimTol->GetObject();
+ if(flag)
+ {
+ TCollection_AsciiString Entry;
+ TDF_Tool::Entry(aLabels.Value(i), Entry);
+ di << "\n " << Entry;
+ flag = Standard_False;
+ }
+ TCollection_AsciiString Entry;
+ TDF_Tool::Entry(aGDTs.Value(j), Entry);
+ di << "\n \t " << Entry;
+ flag = Standard_False;
+
+ di << " GeomTolerance";
+ Handle(XCAFDoc_GraphNode) aNode;
+ if(aGDTs.Value(j).FindAttribute(XCAFDoc::DatumTolRefGUID(), aNode) && aNode->NbChildren() > 0)
+ {
+ for(Standard_Integer i = 1; i<=aNode->NbChildren(); i++)
+ {
+ Handle(XCAFDoc_Datum) aDatum;
+ if(aNode->GetChild(i)->Label().FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
+ {
+ TCollection_AsciiString Entry;
+ TDF_Tool::Entry(aNode->GetChild(i)->Label(), Entry);
+ di << "\n \t \t " << Entry;
+ di << " Datum";
+ }
+ }
+ }
+ }
+ }
+ TDF_Label aDatumL;
+ if (aDimTolTool->GetRefDatumLabel(aLabels.Value(i), aDatumL))
+ {
+ Handle(XCAFDoc_Datum) aDatum;
+ if(aDatumL.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
+ {
+ if(flag)
+ {
+ TCollection_AsciiString Entry;
+ TDF_Tool::Entry(aLabels.Value(i), Entry);
+ di << "\n " << Entry;
+ flag = Standard_False;
+ }
+ TCollection_AsciiString Entry;
+ TDF_Tool::Entry(aDatumL, Entry);
+ di << "\n \t " << Entry;
+ flag = Standard_False;
+
+ di << " Datum";
+ }
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer addDim (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XAddDimension Doc shape/label [shape/label]\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ TopoDS_Shape aShape= DBRep::Get(argv[2]);
+ if ( !aShape.IsNull() )
+ {
+ aShapeTool->Search(aShape, aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Shape "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ }
+ }
+ TDF_Label aLabel1;
+ if(argc == 4)
+ {
+ TDF_Tool::Label(Doc->GetData(), argv[3], aLabel1);
+ if ( aLabel1.IsNull() )
+ {
+ TopoDS_Shape aShape= DBRep::Get(argv[3]);
+ if ( !aShape.IsNull() )
+ {
+ aShapeTool->Search(aShape, aLabel1);
+ if ( aLabel1.IsNull() )
+ {
+ di<<"Shape "<<argv[3]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ }
+ }
+ }
+
+ TDF_Label aDimL = aDimTolTool->AddDimension();
+ if(aLabel1.IsNull())
+ aDimTolTool->SetDimension(aLabel, aDimL);
+ else
+ aDimTolTool->SetDimension(aLabel, aLabel1, aDimL);
+ TCollection_AsciiString Entry;
+ TDF_Tool::Entry(aDimL, Entry);
+ di << Entry;
+ return 0;
+}
+
+static Standard_Integer addGTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XAddGeomTolerance Doc shape/label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ TopoDS_Shape aShape= DBRep::Get(argv[2]);
+ if ( !aShape.IsNull() )
+ {
+ aShapeTool->Search(aShape, aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Shape "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ }
+ }
+
+ TDF_Label aTolL = aDimTolTool->AddGeomTolerance();
+ aDimTolTool->SetGeomTolerance(aLabel, aTolL);
+ TCollection_AsciiString Entry;
+ TDF_Tool::Entry(aTolL, Entry);
+ di << Entry;
+ return 0;
+}
+
+static Standard_Integer addDatum (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XAddDatum Doc shape/label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ TopoDS_Shape aShape= DBRep::Get(argv[2]);
+ if ( !aShape.IsNull() )
+ {
+ aShapeTool->Search(aShape, aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Shape "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ }
+ }
+
+ TDF_Label aDatumL = aDimTolTool->AddDatum();
+ aDimTolTool->SetDatum(aLabel, aDatumL);
+ TCollection_AsciiString Entry;
+ TDF_Tool::Entry(aDatumL, Entry);
+ di << Entry;
+ return 0;
+}
+
+static Standard_Integer setDatum (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XSetDatum Doc Datum_Label GeomTol_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Datum "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+
+ TDF_Label aTol;
+ TDF_Tool::Label(Doc->GetData(), argv[3], aTol);
+ if ( aTol.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[3]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+
+ aDimTolTool->SetDatumToGeomTol(aLabel, aTol);
+ return 0;
+}
+
+static Standard_Integer getDatum (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetDatum Doc GeomTol_Label/Shape_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Label "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+
+ TDF_Label aD;
+ if(!aDimTolTool->GetRefDatumLabel(aLabel, aD))
+ {
+ TDF_LabelSequence aDS;
+ if(aDimTolTool->GetDatumOfTolerLabels(aLabel, aDS))
+ {
+ for(Standard_Integer i = 1; i<=aDS.Length();i++)
+ {
+ if(i>1) di<<", ";
+ TCollection_AsciiString Entry;
+ TDF_Tool::Entry(aDS.Value(i), Entry);
+ di<<Entry;
+ }
+ }
+ }
+ else
+ {
+ TCollection_AsciiString Entry;
+ TDF_Tool::Entry(aD, Entry);
+ di<<Entry;
+ }
+ return 0;
+}
+
+static Standard_Integer addDatumModif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XAddDatumModifier Doc Datum_Label mod1 mod2 ...\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Datum "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Datum) aDatum;
+ if(aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
+ {
+ for(Standard_Integer i = 3; i < argc; i++)
+ {
+ if(Draw::Atoi(argv[i]) < 22 && Draw::Atoi(argv[i]) > -1)
+ {
+ Handle(XCAFDimTolObjects_DatumObject) anObj = aDatum->GetObject();
+ anObj->AddModifier((XCAFDimTolObjects_DatumSingleModif)Draw::Atoi(argv[i]));
+ aDatum->SetObject(anObj);
+ }
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer getDatumModif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetDatumModifiers Doc Datum_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Datum "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Datum) aDatum;
+ if(aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
+ {
+ XCAFDimTolObjects_DatumModifiersSequence aS = aDatum->GetObject()->GetModifiers();
+ for(Standard_Integer i = 1; i<=aS.Length();i++)
+ {
+ if (i > 1) di<<", ";
+ switch(aS.Value(i)){
+ case 0 : di<<"AnyCrossSection"; break;
+ case 1 : di<<"AnyLongitudinalSection"; break;
+ case 2 : di<<"Basic"; break;
+ case 3 : di<<"ContactingFeature\n"; break;
+ case 4 : di<<"DegreeOfFreedomConstraintU"; break;
+ case 5 : di<<"DegreeOfFreedomConstraintV"; break;
+ case 6 : di<<"DegreeOfFreedomConstraintW"; break;
+ case 7 : di<<"DegreeOfFreedomConstraintX"; break;
+ case 8 : di<<"DegreeOfFreedomConstraintY"; break;
+ case 9 : di<<"DegreeOfFreedomConstraintZ"; break;
+ case 10 : di<<"DistanceVariable"; break;
+ case 11 : di<<"FreeState"; break;
+ case 12 : di<<"LeastMaterialRequirement"; break;
+ case 13 : di<<"Line"; break;
+ case 14 : di<<"MajorDiameter"; break;
+ case 15 : di<<"MaximumMaterialRequirement"; break;
+ case 16 : di<<"MinorDiameter"; break;
+ case 17 : di<<"Orientation"; break;
+ case 18 : di<<"PitchDiameter"; break;
+ case 19 : di<<"Plane"; break;
+ case 20 : di<<"Point"; break;
+ case 21 : di<<"Translation"; break;
+ default : break;
+ }
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer setDatumName (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XSetDatumName Doc Datum_Label name\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Datum "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Datum) aDatum;
+ if(aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
+ {
+ Handle(XCAFDimTolObjects_DatumObject) anObj = aDatum->GetObject();
+ anObj->SetName(new TCollection_HAsciiString(argv[3]));
+ aDatum->SetObject(anObj);
+ }
+ return 0;
+}
+
+static Standard_Integer getDatumName (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetDatumName Doc Datum_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Datum "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Datum) aDatum;
+ if(aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
+ {
+ di<<aDatum->GetObject()->GetName()->ToCString();
+ }
+ return 0;
+}
+
+static Standard_Integer setTypeOfTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XSetTypeOfTolerance Doc GTol_Label type\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ if(Draw::Atoi(argv[3]) > -1 && Draw::Atoi(argv[3]) < 16)
+ {
+ Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
+ anObj->SetType((XCAFDimTolObjects_GeomToleranceType)Draw::Atoi(argv[3]));
+ aGeomTolerance->SetObject(anObj);
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer getTypeOfTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetTypeOfTolerance Doc GTol_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ switch(aGeomTolerance->GetObject()->GetType()){
+ case 0 : di<<"type is absent"; break;
+ case 1 : di<<"Angularity"; break;
+ case 2 : di<<"CircularRunout"; break;
+ case 3 : di<<"CircularityOrRoundness"; break;
+ case 4 : di<<"Coaxiality"; break;
+ case 5 : di<<"Concentricity"; break;
+ case 6 : di<<"Cylindricity"; break;
+ case 7 : di<<"Flatness"; break;
+ case 8 : di<<"Parallelism"; break;
+ case 9 : di<<"Perpendicularity"; break;
+ case 10 : di<<"Position"; break;
+ case 11 : di<<"ProfileOfLine"; break;
+ case 12 : di<<"ProfileOfSurface"; break;
+ case 13 : di<<"Straightness"; break;
+ case 14 : di<<"Symmetry"; break;
+ case 15 : di<<"TotalRunout"; break;
+ default : break;
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer setTypeOfTolVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XSetTypeOfToleranceValue Doc GTol_Label type\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ if(Draw::Atoi(argv[3]) > -1 && Draw::Atoi(argv[3]) < 3)
+ {
+ Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
+ anObj->SetTypeOfValue((XCAFDimTolObjects_GeomToleranceTypeValue)Draw::Atoi(argv[3]));
+ aGeomTolerance->SetObject(anObj);
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer getTypeOfTolVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetTypeOfToleranceValue Doc GTol_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ switch(aGeomTolerance->GetObject()->GetTypeOfValue()){
+ case 0 : di<<"type is absent"; break;
+ case 1 : di<<"Diameter"; break;
+ case 2 : di<<"SphericalDiameter"; break;
+ default : break;
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer setTolVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XSetToleranceValue Doc GTol_Label value\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
+ anObj->SetValue(Draw::Atof(argv[3]));
+ aGeomTolerance->SetObject(anObj);
+ }
+ return 0;
+}
+
+static Standard_Integer getTolVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetToleranceValue Doc GTol_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ di << aGeomTolerance->GetObject()->GetValue();
+ }
+ return 0;
+}
+
+static Standard_Integer setMatReq (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XSetTolMaterialReq Doc GTol_Label mod\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ if(Draw::Atoi(argv[3]) > -1 && Draw::Atoi(argv[3]) < 3)
+ {
+ Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
+ anObj->SetMaterialRequirementModifier((XCAFDimTolObjects_GeomToleranceMatReqModif)Draw::Atoi(argv[3]));
+ aGeomTolerance->SetObject(anObj);
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer getMatReq (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetTolMaterialReq Doc GTol_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ switch(aGeomTolerance->GetObject()->GetMaterialRequirementModifier()){
+ case 0 : di<<"modifier is absent"; break;
+ case 1 : di<<"M"; break;
+ case 2 : di<<"L"; break;
+ default : break;
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer setZoneMod (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XSetTolZoneMod Doc GTol_Label mod\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ if(Draw::Atoi(argv[3]) > -1 && Draw::Atoi(argv[3]) < 3)
+ {
+ Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
+ anObj->SetZoneModifier((XCAFDimTolObjects_GeomToleranceZoneModif)Draw::Atoi(argv[3]));
+ aGeomTolerance->SetObject(anObj);
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer getZoneMod (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetTolZoneMod Doc GTol_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ switch(aGeomTolerance->GetObject()->GetZoneModifier()){
+ case 0 : di<<"modifier is absent"; break;
+ case 1 : di<<"P"; break;
+ case 2 : di<<"NonUniform"; break;
+ default : break;
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer setZoneModVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XSetTolZoneModValue Doc GTol_Label val\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
+ anObj->SetValueOfZoneModifier(Draw::Atof(argv[3]));
+ aGeomTolerance->SetObject(anObj);
+ }
+ return 0;
+}
+
+static Standard_Integer getZoneModVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetTolZoneModValue Doc GTol_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ di << aGeomTolerance->GetObject()->GetValueOfZoneModifier();
+ }
+ return 0;
+}
+
+static Standard_Integer addTolModif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XAddTolModifier Doc Tol_Label mod1 mod2 ...\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ for(Standard_Integer i = 3; i < argc; i++)
+ {
+ if(Draw::Atoi(argv[i]) > -1 && Draw::Atoi(argv[i]) < 15)
+ {
+ Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
+ anObj->AddModifier((XCAFDimTolObjects_GeomToleranceModif)Draw::Atoi(argv[i]));
+ aGeomTolerance->SetObject(anObj);
+ }
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer getTolModif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetTolModifiers Doc Tol_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ XCAFDimTolObjects_GeomToleranceModifiersSequence aS = aGeomTolerance->GetObject()->GetModifiers();
+ for(Standard_Integer i = 1; i <= aS.Length(); i++)
+ {
+ if (i > 1) di<<", ";
+ switch(aS.Value(i)){
+ case 0 : di<<"Any_Cross_Section"; break;
+ case 1 : di<<"Common_Zone"; break;
+ case 2 : di<<"Each_Radial_Element"; break;
+ case 3 : di<<"Free_State"; break;
+ case 4 : di<<"Least_Material_Requirement"; break;
+ case 5 : di<<"Line_Element"; break;
+ case 6 : di<<"Major_Diameter"; break;
+ case 7 : di<<"Maximum_Material_Requirement"; break;
+ case 8 : di<<"Minor_Diameter"; break;
+ case 9 : di<<"Not_Convex"; break;
+ case 10 : di<<"Pitch_Diameter"; break;
+ case 11 : di<<"Reciprocity_Requirement"; break;
+ case 12 : di<<"Separate_Requirement"; break;
+ case 13 : di<<"Statistical_Tolerance"; break;
+ case 14 : di<<"Tangent_Plane"; break;
+ default : break;
+ }
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer setTolMaxVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XSetTolMaxValue Doc Dim_Label val\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
+ anObj->SetMaxValueModifier(Draw::Atof(argv[3]));
+ aGeomTolerance->SetObject(anObj);
+ }
+ return 0;
+}
+
+static Standard_Integer getTolMaxVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetTolMaxValue Doc Dim_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
+ if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
+ {
+ di << aGeomTolerance->GetObject()->GetMaxValueModifier();
+ }
+ return 0;
+}
+
+static Standard_Integer setDimType (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XSetDimensionType Doc Dim_Label type\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ if(Draw::Atoi(argv[3]) > -1 && Draw::Atoi(argv[3]) < 30)
+ {
+ Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
+ anObj->SetType((XCAFDimTolObjects_DimensionType)Draw::Atoi(argv[3]));
+ aDimension->SetObject(anObj);
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer getDimType (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetDimensionType Doc Dim_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ switch(aDimension->GetObject()->GetType()){
+ case 0 : di<<"type is absent"; break;
+ case 1 : di<<"Location_CurvedDistance"; break;
+ case 2 : di<<"Location_LinearDistance"; break;
+ case 3 : di<<"Location_LinearDistance_FromCenterToOuter"; break;
+ case 4 : di<<"Location_LinearDistance_FromCenterToInner"; break;
+ case 5 : di<<"Location_LinearDistance_FromOuterToCenter"; break;
+ case 6 : di<<"Location_LinearDistance_FromOuterToOuter"; break;
+ case 7 : di<<"Location_LinearDistance_FromOuterToInner"; break;
+ case 8 : di<<"Location_LinearDistance_FromInnerToCenter"; break;
+ case 9 : di<<"Location_LinearDistance_FromInnerToOuter"; break;
+ case 10 : di<<"Location_LinearDistance_FromInnerToInner"; break;
+ case 11 : di<<"Location_Angular"; break;
+ case 12 : di<<"Location_Oriented"; break;
+ case 13 : di<<"Location_WithPath"; break;
+ case 14 : di<<"Size_CurveLength"; break;
+ case 15 : di<<"Size_Diameter"; break;
+ case 16 : di<<"Size_SphericalDiameter"; break;
+ case 17 : di<<"Size_Radius"; break;
+ case 18 : di<<"Size_SphericalRadius"; break;
+ case 19 : di<<"Size_ToroidalMinorDiameter"; break;
+ case 20 : di<<"Size_ToroidalMajorDiameter"; break;
+ case 21 : di<<"Size_ToroidalMinorRadius"; break;
+ case 22 : di<<"Size_ToroidalMajorRadius"; break;
+ case 23 : di<<"Size_ToroidalHighMajorDiameter"; break;
+ case 24 : di<<"Size_ToroidalLowMajorDiameter"; break;
+ case 25 : di<<"Size_ToroidalHighMajorRadius"; break;
+ case 26 : di<<"Size_ToroidalLowMajorRadius"; break;
+ case 27 : di<<"Size_Thickness"; break;
+ case 28 : di<<"Size_Angular"; break;
+ case 29 : di<<"Size_WithPath"; break;
+ default : break;
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer setDimVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XSetDimensionValue Doc Dim_Label val\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
+ anObj->SetValue(Draw::Atof(argv[3]));
+ aDimension->SetObject(anObj);
+ }
+ return 0;
+}
+
+static Standard_Integer getDimVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetDimensionValue Doc Dim_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ di << aDimension->GetObject()->GetValue();
+ }
+ return 0;
+}
+
+static Standard_Integer setDimQalif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XSetDimensionQualifier Doc Dim_Label val\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ if(Draw::Atoi(argv[3]) > -1 && Draw::Atoi(argv[3]) < 4)
+ {
+ Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
+ anObj->SetQualifier((XCAFDimTolObjects_DimensionQualifier)Draw::Atoi(argv[3]));
+ aDimension->SetObject(anObj);
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer getDimQalif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetDimensionQualifier Doc Dim_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+
+ switch(aDimension->GetObject()->GetQualifier()){
+ case 0 : di<<"type is absent"; break;
+ case 1 : di<<"Min"; break;
+ case 2 : di<<"Max"; break;
+ case 3 : di<<"Avg"; break;
+ default : break;
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer setDimRange (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 5) {
+ di<<"Use: "<<"XSetDimensionRange Doc Dim_Label low_val up_val\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ if(Draw::Atof(argv[3]) < Draw::Atof(argv[4]))
+ {
+ Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
+ anObj->SetLowerBound(Draw::Atof(argv[3]));
+ anObj->SetUpperBound(Draw::Atof(argv[4]));
+ aDimension->SetObject(anObj);
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer getDimRange (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetDimensionRange Doc Dim_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ di << "lower " << aDimension->GetObject()->GetLowerBound();
+ di << " upper " << aDimension->GetObject()->GetUpperBound();
+ }
+ return 0;
+}
+
+static Standard_Integer setDimPlusMinusTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 5) {
+ di<<"Use: "<<"XSetDimensionPlusMinusTol Doc Dim_Label low_val up_val\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ if(Draw::Atof(argv[3]) < Draw::Atof(argv[4]))
+ {
+ Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
+ anObj->SetLowerTolValue(Draw::Atof(argv[3]));
+ anObj->SetUpperTolValue(Draw::Atof(argv[4]));
+ aDimension->SetObject(anObj);
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer getDimPlusMinusTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetDimensionPlusMinusTol Doc Dim_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ di << "lower " << aDimension->GetObject()->GetLowerTolValue();
+ di << " upper " << aDimension->GetObject()->GetUpperTolValue();
+ }
+ return 0;
+}
+
+static Standard_Integer setDimClassTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 6) {
+ di<<"Use: "<<"XSetDimensionClassOfTol Doc Dim_Label ishole[1/0] formVar grade\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ if(Draw::Atoi(argv[4]) > 0 && Draw::Atoi(argv[4]) < 29 && Draw::Atoi(argv[5]) > -1 && Draw::Atoi(argv[5]) < 20)
+ {
+ Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
+ anObj->SetClassOfTolerance((Draw::Atoi(argv[3]) != 0), (XCAFDimTolObjects_DimensionFormVariance)Draw::Atoi(argv[4]), (XCAFDimTolObjects_DimensionGrade)Draw::Atoi(argv[5]));
+ aDimension->SetObject(anObj);
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer getDimClassTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetDimensionClassOfTol Doc Dim_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ Standard_Boolean h;
+ XCAFDimTolObjects_DimensionFormVariance f;
+ XCAFDimTolObjects_DimensionGrade g;
+ if(aDimension->GetObject()->GetClassOfTolerance(h ,f, g))
+ {
+ if(h)
+ {
+ switch(f){
+ case 1 : di<<"a";break;
+ case 2 : di<<"b";break;
+ case 3 : di<<"c";break;
+ case 4 : di<<"cd";break;
+ case 5 : di<<"d";break;
+ case 6 : di<<"e";break;
+ case 7 : di<<"ef";break;
+ case 8 : di<<"f";break;
+ case 9 : di<<"fg";break;
+ case 10 : di<<"g";break;
+ case 11 : di<<"h";break;
+ case 12 : di<<"js";break;
+ case 13 : di<<"j";break;
+ case 14 : di<<"k";break;
+ case 15 : di<<"m";break;
+ case 16 : di<<"n";break;
+ case 17 : di<<"p";break;
+ case 18 : di<<"r";break;
+ case 19 : di<<"s";break;
+ case 20 : di<<"t";break;
+ case 21 : di<<"u";break;
+ case 22 : di<<"v";break;
+ case 23 : di<<"x";break;
+ case 24 : di<<"y";break;
+ case 25 : di<<"z";break;
+ case 26 : di<<"a";break;
+ case 27 : di<<"zb";break;
+ case 28 : di<<"zc";break;
+ default : break;
+ }
+ }
+ else
+ {
+ switch(f){
+ case 1 : di<<"A";break;
+ case 2 : di<<"B";break;
+ case 3 : di<<"C";break;
+ case 4 : di<<"CD";break;
+ case 5 : di<<"D";break;
+ case 6 : di<<"E";break;
+ case 7 : di<<"EF";break;
+ case 8 : di<<"F";break;
+ case 9 : di<<"FG";break;
+ case 10 : di<<"G";break;
+ case 11 : di<<"H";break;
+ case 12 : di<<"JS";break;
+ case 13 : di<<"J";break;
+ case 14 : di<<"K";break;
+ case 15 : di<<"M";break;
+ case 16 : di<<"N";break;
+ case 17 : di<<"P";break;
+ case 18 : di<<"R";break;
+ case 19 : di<<"S";break;
+ case 20 : di<<"T";break;
+ case 21 : di<<"U";break;
+ case 22 : di<<"V";break;
+ case 23 : di<<"X";break;
+ case 24 : di<<"Y";break;
+ case 25 : di<<"Z";break;
+ case 26 : di<<"ZA";break;
+ case 27 : di<<"ZB";break;
+ case 28 : di<<"ZC";break;
+ default : break;
+ }
+ }
+ switch(g){
+ case 0 : di<<"01"; break;
+ case 1 : di<<"0"; break;
+ case 2 : di<<"1"; break;
+ case 3 : di<<"2"; break;
+ case 4 : di<<"3"; break;
+ case 5 : di<<"4"; break;
+ case 6 : di<<"5"; break;
+ case 7 : di<<"6"; break;
+ case 8 : di<<"7"; break;
+ case 9 : di<<"8"; break;
+ case 10 : di<<"9"; break;
+ case 11 : di<<"10"; break;
+ case 12 : di<<"11"; break;
+ case 13 : di<<"12"; break;
+ case 14 : di<<"13"; break;
+ case 15 : di<<"14"; break;
+ case 16 : di<<"15"; break;
+ case 17 : di<<"16"; break;
+ case 18 : di<<"17"; break;
+ case 19 : di<<"18"; break;
+ default : break;
+ }
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer setDimNbOfDecimalPlaces (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 5) {
+ di<<"Use: "<<"XSetDimensionNbOfDecimalPlaces Doc Dim_Label l_val r_val\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
+ anObj->SetNbOfDecimalPlaces(Draw::Atoi(argv[3]), Draw::Atoi(argv[4]));
+ aDimension->SetObject(anObj);
+ }
+ return 0;
+}
+
+static Standard_Integer getDimNbOfDecimalPlaces (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetDimensionNbOfDecimalPlaces Doc Dim_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ Standard_Integer l, r;
+ aDimension->GetObject()->GetNbOfDecimalPlaces(l,r);
+ di << l << "." << r;
+ }
+ return 0;
+}
+
+static Standard_Integer addDimModifier (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XAddDimensionModifiers Doc Dim_Label mod1 mod2 ...\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ for(Standard_Integer i = 3; i < argc; i++)
+ {
+ if(Draw::Atoi(argv[i]) > -1 && Draw::Atoi(argv[i]) < 24)
+ {
+ Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
+ anObj->AddModifier((XCAFDimTolObjects_DimensionModif)Draw::Atoi(argv[i]));
+ aDimension->SetObject(anObj);
+ }
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer getDimModifier (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetDimensionModifiers Doc Dim_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ XCAFDimTolObjects_DimensionModifiersSequence aS = aDimension->GetObject()->GetModifiers();
+ for(Standard_Integer i = 1; i <= aS.Length(); i++)
+ {
+ if (i > 1) di<<", ";
+ switch(aS.Value(i)){
+ case 0 : di<<"ControlledRadius"; break;
+ case 1 : di<<"Square"; break;
+ case 2 : di<<"StatisticalTolerance"; break;
+ case 3 : di<<"ContinuousFeature"; break;
+ case 4 : di<<"TwoPointSize"; break;
+ case 5 : di<<"LocalSizeDefinedBySphere"; break;
+ case 6 : di<<"LeastSquaresAssociationCriterion"; break;
+ case 7 : di<<"MaximumInscribedAssociation"; break;
+ case 8 : di<<"MinimumCircumscribedAssociation"; break;
+ case 9 : di<<"CircumferenceDiameter"; break;
+ case 10 : di<<"AreaDiameter"; break;
+ case 11 : di<<"VolumeDiameter"; break;
+ case 12 : di<<"MaximumSize"; break;
+ case 13 : di<<"MinimumSize"; break;
+ case 14 : di<<"AverageSize"; break;
+ case 15 : di<<"MedianSize"; break;
+ case 16 : di<<"MidRangeSize"; break;
+ case 17 : di<<"RangeOfSizes"; break;
+ case 18 : di<<"AnyRestrictedPortionOfFeature"; break;
+ case 19 : di<<"AnyCrossSection"; break;
+ case 20 : di<<"SpecificFixedCrossSection"; break;
+ case 21 : di<<"CommonTolerance"; break;
+ case 22 : di<<"FreeStateCondition"; break;
+ case 23 : di<<"Between"; break;
+ default : break;
+ }
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer addDimPath (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 4) {
+ di<<"Use: "<<"XSetDimensionPath Doc Dim_Label path(edge)\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ TopoDS_Edge aE = TopoDS::Edge(DBRep::Get(argv[3],TopAbs_EDGE));
+ if(!aE.IsNull())
+ {
+ Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
+ anObj->SetPath(aE);
+ aDimension->SetObject(anObj);
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer addDimPoints (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 5) {
+ di<<"Use: "<<"XSetDimensionPoints Doc Dim_Label v1 v2\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ TopoDS_Vertex aV1 = TopoDS::Vertex(DBRep::Get(argv[3],TopAbs_VERTEX));
+ TopoDS_Vertex aV2 = TopoDS::Vertex(DBRep::Get(argv[4],TopAbs_VERTEX));
+ if(!aV1.IsNull() && !aV1.IsNull())
+ {
+ Handle(TColgp_HArray1OfPnt) arr = new TColgp_HArray1OfPnt(1,2);
+ arr->SetValue(1, BRep_Tool::Pnt(aV1));
+ arr->SetValue(2, BRep_Tool::Pnt(aV2));
+ Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
+ anObj->SetPoints(arr);
+ aDimension->SetObject(anObj);
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer getDimPoints (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XGetDimensionPoints Doc Dim_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ Handle(TColgp_HArray1OfPnt) pnts = aDimension->GetObject()->GetPoints();
+ if(!pnts.IsNull() && pnts->Length() == 2)
+ {
+ di << pnts->Value(1).X() << ";" << pnts->Value(1).Y() << ";" << pnts->Value(1).Z() << " ";
+ di << pnts->Value(2).X() << ";" << pnts->Value(2).Y() << ";" << pnts->Value(2).Z();
+ }
+ }
+ return 0;
+}
+
+static Standard_Integer addDimDir (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 6) {
+ di<<"Use: "<<"XSetDimensionDir Doc Dim_Label x y z\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
+ anObj->SetDirection(gp_Dir(Draw::Atof(argv[3]),Draw::Atof(argv[4]),Draw::Atof(argv[5])));
+ aDimension->SetObject(anObj);
+ }
+ return 0;
+}
+
+static Standard_Integer getDimDir (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
+{
+ if (argc < 3) {
+ di<<"Use: "<<"XSetDimensionDir Doc Dim_Label\n";
+ return 1;
+ }
+ Handle(TDocStd_Document) Doc;
+ DDocStd::GetDocument(argv[1], Doc);
+ if ( Doc.IsNull() ) { di << argv[1] << " is not a document" << "\n"; return 1; }
+ Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
+ Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
+
+ TDF_Label aLabel;
+ TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
+ if ( aLabel.IsNull() )
+ {
+ di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
+ return 1;
+ }
+ Handle(XCAFDoc_Dimension) aDimension;
+ if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
+ {
+ gp_Dir dir;
+ if(aDimension->GetObject()->GetDirection(dir))
+ {
+ di << dir.X()<< ";"<< dir.Y()<< ";"<<dir.Z();
+ }
+ }
+ return 0;
+}
+
+//=======================================================================
+//function : InitCommands
+//purpose :
+//=======================================================================
+
+void XDEDRAW_GDTs::InitCommands(Draw_Interpretor& di)
+{
+
+ static Standard_Boolean initactor = Standard_False;
+ if (initactor) return; initactor = Standard_True;
+
+
+ Standard_CString g = "XDE G&DTs commands";
+
+ di.Add ("XDumpDGTs","XDumpDGTs Doc shape/label/all ",
+ __FILE__, DumpDGTs, g);
+
+ di.Add ("XAddDimension","XAddDimension Doc shape/label [shape/label]",
+ __FILE__, addDim, g);
+
+ di.Add ("XAddGeomTolerance","XAddGeomTolerance Doc shape/label",
+ __FILE__, addGTol, g);
+
+ di.Add ("XAddDatum","XAddDatum Doc shape/label",
+ __FILE__, addDatum, g);
+
+ di.Add ("XSetDatum","XSetDatum Doc Datum_Label GeomTol_Label",
+ __FILE__, setDatum, g);
+
+ di.Add ("XGetDatum","XGetDatum Doc GeomTol_Label/Shape_Label",
+ __FILE__, getDatum, g);
+
+ di.Add ("XAddDatumModifier","XAddDatumModifier Doc Datum_Label mod1 mod2 ...\n"
+ "Values:"
+ "\n 0 AnyCrossSection"
+ "\n 1 Any_LongitudinalSection"
+ "\n 2 Basic"
+ "\n 3 ContactingFeature"
+ "\n 4 DegreeOfFreedomConstraintU"
+ "\n 5 DegreeOfFreedomConstraintV"
+ "\n 6 DegreeOfFreedomConstraintW"
+ "\n 7 DegreeOfFreedomConstraintX"
+ "\n 8 DegreeOfFreedomConstraintY"
+ "\n 9 DegreeOfFreedomConstraintZ"
+ "\n 10 DistanceVariable"
+ "\n 11 FreeState"
+ "\n 12 LeastMaterialRequirement"
+ "\n 13 Line"
+ "\n 14 MajorDiameter"
+ "\n 15 MaximumMaterialRequirement"
+ "\n 16 MinorDiameter"
+ "\n 17 Orientation"
+ "\n 18 PitchDiameter"
+ "\n 19 Plane"
+ "\n 20 Point"
+ "\n 21 Translation",
+ __FILE__, addDatumModif, g);
+
+ di.Add ("XGetDatumModifiers","XGetDatumModifiers Doc Datum_Label",
+ __FILE__, getDatumModif, g);
+
+ di.Add ("XSetDatumName","XSetDatumName Doc Datum_Label name",
+ __FILE__, setDatumName, g);
+
+ di.Add ("XGetDatumName","XGetDatumName Doc Datum_Label",
+ __FILE__, getDatumName, g);
+
+ di.Add ("XSetTypeOfTolerance","XSetTypeOfTolerance Doc GTol_Label type"
+ "Values:\n"
+ "\t 0 type is absent\n"
+ "\t 1 Angularity\n"
+ "\t 2 CircularRunout\n"
+ "\t 3 CircularityOrRoundness\n"
+ "\t 4 Coaxiality\n"
+ "\t 5 Concentricity\n"
+ "\t 6 Cylindricity\n"
+ "\t 7 Flatness\n"
+ "\t 8 Parallelism\n"
+ "\t 9 Perpendicularity\n"
+ "\t 10 Position\n"
+ "\t 11 ProfileOfLine\n"
+ "\t 12 ProfileOfSurface\n"
+ "\t 13 Straightness\n"
+ "\t 14 Symmetry\n"
+ "\t 15 TotalRunout\n",
+ __FILE__, setTypeOfTol, g);
+
+ di.Add ("XGetTypeOfTolerance","XGetTypeOfTolerance Doc GTol_Label",
+ __FILE__, getTypeOfTol, g);
+
+ di.Add ("XSetTypeOfToleranceValue","XSetTypeOfToleranceValue Doc GTol_Label type"
+ "Values:"
+ "\n 0 none"
+ "\n 1 Diameter"
+ "\n 2 SphericalDiameter",
+ __FILE__, setTypeOfTolVal, g);
+
+ di.Add ("XGetTypeOfToleranceValue","XGetTypeOfToleranceValue Doc GTol_Label",
+ __FILE__, getTypeOfTolVal, g);
+
+ di.Add ("XSetToleranceValue","XSetToleranceValue Doc GTol_Label value",
+ __FILE__, setTolVal, g);
+
+ di.Add ("XGetToleranceValue","XGetToleranceValue Doc GTol_Label",
+ __FILE__, getTolVal, g);
+
+ di.Add ("XSetTolMaterialReq","XSetTolMaterialReq Doc GTol_Label mod"
+ "Values:"
+ "\n 0 none"
+ "\n 1 M"
+ "\n 2 L",
+ __FILE__, setMatReq, g);
+
+ di.Add ("XGetTolMaterialReq","XGetTolMaterialReq Doc GTol_Label",
+ __FILE__, getMatReq, g);
+
+ di.Add ("XSetTolZoneMod","XSetTolZoneMod Doc GTol_Label mod"
+ "Values:"
+ "\n 0 none"
+ "\n 1 P"
+ "\n 2 NonUniform",
+ __FILE__, setZoneMod, g);
+
+ di.Add ("XGetTolZoneMod","XGetTolZoneMod Doc GTol_Label",
+ __FILE__, getZoneMod, g);
+
+ di.Add ("XSetTolZoneModValue","XSetTolZoneModValue Doc GTol_Label val",
+ __FILE__, setZoneModVal, g);
+
+ di.Add ("XGetTolZoneModValue","XGetTolZoneModValue Doc GTol_Label",
+ __FILE__, getZoneModVal, g);
+
+ di.Add ("XAddTolModifier","XAddTolModifier Doc Tol_Label mod1 mod2 ..."
+ "Values:\n"
+ "\t 0 Any_Cross_Section\n"
+ "\t 1 Common_Zone\n"
+ "\t 2 Each_Radial_Element\n"
+ "\t 3 Free_State\n"
+ "\t 4 Least_Material_Requirement\n"
+ "\t 5 Line_Element\n"
+ "\t 6 Major_Diameter\n"
+ "\t 7 Maximum_Material_Requirement\n"
+ "\t 8 Minor_Diameter\n"
+ "\t 9 Not_Convex\n"
+ "\t 10 Pitch_Diameter\n"
+ "\t 11 Reciprocity_Requirement\n"
+ "\t 12 Separate_Requirement\n"
+ "\t 13 Statistical_Tolerance\n"
+ "\t 14 Tangent_Plane\n",
+ __FILE__, addTolModif, g);
+
+ di.Add ("XGetTolModifier","XGetTolModifier Doc Tol_Label",
+ __FILE__, getTolModif, g);
+
+ di.Add ("XSetTolMaxValue","XSetTolMaxValue Doc Dim_Label val",
+ __FILE__, setTolMaxVal, g);
+
+ di.Add ("XGetTolMaxValue","XGetTolMaxValue Doc Dim_Label val",
+ __FILE__, getTolMaxVal, g);
+
+ di.Add ("XSetDimensionType","XSetDimensionType Doc Dim_Label type"
+ "Values:"
+ "\t 0 type is absent\n"
+ "\t 1 Location_CurvedDistance\n"
+ "\t 2 Location_LinearDistance\n"
+ "\t 3 Location_LinearDistance_FromCenterToOuter\n"
+ "\t 4 Location_LinearDistance_FromCenterToInner\n"
+ "\t 5 Location_LinearDistance_FromOuterToCenter\n"
+ "\t 6 Location_LinearDistance_FromOuterToOuter\n"
+ "\t 7 Location_LinearDistance_FromOuterToInner\n"
+ "\t 8 Location_LinearDistance_FromInnerToCenter\n"
+ "\t 9 Location_LinearDistance_FromInnerToOuter\n"
+ "\t 10 Location_LinearDistance_FromInnerToInner\n"
+ "\t 11 Location_Angular\n"
+ "\t 12 Location_Oriented\n"
+ "\t 13 Location_WithPath\n"
+ "\t 14 Size_CurveLength\n"
+ "\t 15 Size_Diameter\n"
+ "\t 16 Size_SphericalDiameter\n"
+ "\t 17 Size_Radius\n"
+ "\t 18 Size_SphericalRadius\n"
+ "\t 19 Size_ToroidalMinorDiameter\n"
+ "\t 20 Size_ToroidalMajorDiameter\n"
+ "\t 21 Size_ToroidalMinorRadius\n"
+ "\t 22 Size_ToroidalMajorRadius\n"
+ "\t 23 Size_ToroidalHighMajorDiameter\n"
+ "\t 24 Size_ToroidalLowMajorDiameter\n"
+ "\t 25 Size_ToroidalHighMajorRadius\n"
+ "\t 26 Size_ToroidalLowMajorRadius\n"
+ "\t 27 Size_Thickness\n"
+ "\t 28 Size_Angular\n"
+ "\t 29 Size_WithPath\n",
+ __FILE__, setDimType, g);
+
+ di.Add ("XGetDimensionType","XGetDimensionType Doc Dim_Label",
+ __FILE__, getDimType, g);
+
+ di.Add ("XSetDimensionValue","XSetDimensionValue Doc Dim_Label val",
+ __FILE__, setDimVal, g);
+
+ di.Add ("XGetDimensionValue","XGetDimensionValue Doc Dim_Label",
+ __FILE__, getDimVal, g);
+
+ di.Add ("XSetDimensionQualifier","XSetDimensionQualifier Doc Dim_Label val"
+ "Values:"
+ "\n 0 none"
+ "\n 1 Min"
+ "\n 2 Max"
+ "\n 3 Avg",
+ __FILE__, setDimQalif, g);
+
+ di.Add ("XGetDimensionQualifier","XGetDimensionQualifier Doc Dim_Label",
+ __FILE__, getDimQalif, g);
+
+ di.Add ("XSetDimensionRange","XSetDimensionRange Doc Dim_Label low_val up_val",
+ __FILE__, setDimRange, g);
+
+ di.Add ("XGetDimensionRange","XGetDimensionRange Doc Dim_Label",
+ __FILE__, getDimRange, g);
+
+ di.Add ("XSetDimensionPlusMinusTol","XSetDimensionPlusMinusTol Doc Dim_Label low_val up_val",
+ __FILE__, setDimPlusMinusTol, g);
+
+ di.Add ("XGetDimensionPlusMinusTol","XGetDimensionPlusMinusTol Doc Dim_Label",
+ __FILE__, getDimPlusMinusTol, g);
+
+ di.Add ("XSetDimensionClassOfTol","XSetDimensionClassOfTol Doc Dim_Label ishole[1/0] formVar grade"
+ "Values of formVar:"
+ "\t 1 a\n"
+ "\t 2 b\n"
+ "\t 3 c\n"
+ "\t 4 cd\n"
+ "\t 5 d\n"
+ "\t 6 e\n"
+ "\t 7 ef\n"
+ "\t 8 f\n"
+ "\t 9 fg\n"
+ "\t10 g\n"
+ "\t11 h\n"
+ "\t12 js\n"
+ "\t13 j\n"
+ "\t14 k\n"
+ "\t15 m\n"
+ "\t16 n\n"
+ "\t17 p\n"
+ "\t18 r\n"
+ "\t19 s\n"
+ "\t20 t\n"
+ "\t21 u\n"
+ "\t22 v\n"
+ "\t23 x\n"
+ "\t24 y\n"
+ "\t25 z\n"
+ "\t26 za\n"
+ "\t27 zb\n"
+ "\t28 zc\n\n"
+ "Values of grade:"
+ "\t 0 01\n"
+ "\t 1 0\n"
+ "\t 2 1\n"
+ "\t 3 2d\n"
+ "\t 4 3\n"
+ "\t 5 4\n"
+ "\t 6 5f\n"
+ "\t 7 76\n"
+ "\t 8 7g\n"
+ "\t 9 8\n"
+ "\t10 9\n"
+ "\t11 10js\n"
+ "\t12 11j\n"
+ "\t13 12k\n"
+ "\t14 13m\n"
+ "\t15 14n\n"
+ "\t16 15p\n"
+ "\t17 16r\n"
+ "\t18 17s\n"
+ "\t19 18t\n",
+ __FILE__, setDimClassTol, g);
+
+ di.Add ("XGetDimensionClassOfTol","XGetDimensionClassOfTol Doc Dim_Label",
+ __FILE__, getDimClassTol, g);
+
+ di.Add ("XSetDimensionNbOfDecimalPlaces","XSetDimensionNbOfDecimalPlaces Doc Dim_Label l_val r_val",
+ __FILE__, setDimNbOfDecimalPlaces, g);
+
+ di.Add ("XGetDimensionNbOfDecimalPlaces","XGetDimensionNbOfDecimalPlaces Doc Dim_Label",
+ __FILE__, getDimNbOfDecimalPlaces, g);
+
+ di.Add ("XAddDimensionModifiers","XAddDimensionModifiers Doc Dim_Label mod1 mod2 ..."
+ "Values:"
+ "\t 0 ControlledRadius\n"
+ "\t 1 Square\n"
+ "\t 2 StatisticalTolerance\n"
+ "\t 3 ContinuousFeature\n"
+ "\t 4 TwoPointSize\n"
+ "\t 5 LocalSizeDefinedBySphere\n"
+ "\t 6 LeastSquaresAssociationCriterion\n"
+ "\t 7 MaximumInscribedAssociation\n"
+ "\t 8 MinimumCircumscribedAssociation\n"
+ "\t 9 CircumferenceDiameter\n"
+ "\t10 AreaDiameter\n"
+ "\t11 VolumeDiameter\n"
+ "\t12 MaximumSize\n"
+ "\t13 MinimumSize\n"
+ "\t14 AverageSize\n"
+ "\t15 MedianSize\n"
+ "\t16 MidRangeSize\n"
+ "\t17 RangeOfSizes\n"
+ "\t18 AnyRestrictedPortionOfFeature\n"
+ "\t19 AnyCrossSection\n"
+ "\t20 SpecificFixedCrossSection\n"
+ "\t21 CommonTolerance\n"
+ "\t22 FreeStateCondition\n"
+ "\t23 Between\n",
+ __FILE__, addDimModifier, g);
+
+ di.Add ("XGetDimensionModifiers","XGetDimensionModifiers Doc Dim_Label",
+ __FILE__, getDimModifier, g);
+
+ di.Add ("XSetDimensionPath","XSetDimensionPath Doc Dim_Label path(edge)",
+ __FILE__, addDimPath, g);
+
+ di.Add ("XSetDimensionPoints","XSetDimensionPoints Doc Dim_Label v1 v2",
+ __FILE__, addDimPoints, g);
+
+ di.Add ("XGetDimensionPoints","XGetDimensionPoints Doc Dim_Label",
+ __FILE__, getDimPoints, g);
+
+ di.Add ("XSetDimensionDir","XSetDimensionDir Doc Dim_Label x y z",
+ __FILE__, addDimDir, g);
+
+ di.Add ("XGetDimensionDir","XGetDimensionDir Doc Dim_Label",
+ __FILE__, getDimDir, g);
+}
--- /dev/null
+cpulimit 1000
+pload ALL
\ No newline at end of file
--- /dev/null
+
+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"
\ No newline at end of file
--- /dev/null
+
+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"
\ No newline at end of file
--- /dev/null
+
+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"
\ No newline at end of file
--- /dev/null
+
+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"
\ No newline at end of file
--- /dev/null
+
+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"
\ No newline at end of file
--- /dev/null
+
+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"
--- /dev/null
+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
\ No newline at end of file
--- /dev/null
+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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
--- /dev/null
+001 dimensions
+002 tolerances
\ No newline at end of file
--- /dev/null
+
+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"
+
--- /dev/null
+
+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"
+
+
--- /dev/null
+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
\ No newline at end of file
--- /dev/null
+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"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+