0031313: Foundation Classes - Dump improvement for classes
[occt.git] / src / XDEDRAW / XDEDRAW_GDTs.cxx
CommitLineData
9ebaae37 1// Created on: 2015-06-18
2// Created by: Ilya Novikov
3// Copyright (c) 2000-2015 OPEN CASCADE SAS
4//
5// This file is part of Open CASCADE Technology software library.
6//
7// This library is free software; you can redistribute it and/or modify it under
8// the terms of the GNU Lesser General Public License version 2.1 as published
9// by the Free Software Foundation, with special exception defined in the file
10// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11// distribution for complete text of the license and disclaimer of any warranty.
12//
13// Alternatively, this file may be used under the terms of Open CASCADE
14// commercial license or contractual agreement.
15
16#include <XDEDRAW_GDTs.hxx>
17
18#include <Draw.hxx>
19#include <DBRep.hxx>
20#include <DDocStd.hxx>
b8bf9595 21#include <DrawTrSurf.hxx>
22#include <Geom_Plane.hxx>
9ebaae37 23
727b5ad9 24#include <STEPCAFControl_GDTProperty.hxx>
6595eee7 25
9ebaae37 26#include <TDF_Tool.hxx>
27#include <TDF_Label.hxx>
28#include <TDF_LabelSequence.hxx>
29#include <TDocStd_Document.hxx>
30#include <XCAFDoc_GraphNode.hxx>
31
32#include <XCAFDoc.hxx>
33#include <XCAFDoc_DocumentTool.hxx>
34#include <XCAFDoc_ShapeTool.hxx>
35#include <XCAFDoc_DimTol.hxx>
36#include <XCAFDoc_Dimension.hxx>
37#include <XCAFDimTolObjects_DimensionObject.hxx>
38#include <XCAFDoc_Datum.hxx>
39#include <XCAFDimTolObjects_DatumObject.hxx>
40#include <XCAFDoc_GeomTolerance.hxx>
41#include <XCAFDimTolObjects_GeomToleranceObject.hxx>
42#include <XCAFDoc_DimTolTool.hxx>
43#include <XCAFDimTolObjects_DimensionObjectSequence.hxx>
44#include <XCAFDimTolObjects_DatumObjectSequence.hxx>
45#include <XCAFDimTolObjects_GeomToleranceObjectSequence.hxx>
46#include <XCAFDimTolObjects_DatumSingleModif.hxx>
47#include <XCAFDimTolObjects_DimensionModif.hxx>
48#include <XCAFDimTolObjects_GeomToleranceModif.hxx>
49#include <XCAFDimTolObjects_DatumModifiersSequence.hxx>
50#include <XCAFDimTolObjects_DatumObject.hxx>
51#include <XCAFDimTolObjects_Tool.hxx>
52
53#include <TCollection_AsciiString.hxx>
54#include <TCollection_HAsciiString.hxx>
55#include <TColStd_HArray1OfReal.hxx>
56#include <TColgp_HArray1OfPnt.hxx>
57
58#include <TopoDS.hxx>
59#include <TopoDS_Shape.hxx>
60#include <TopoDS_Edge.hxx>
61#include <TopoDS_Vertex.hxx>
62#include <BRep_Tool.hxx>
63
64
65
66static Standard_Integer DumpDGTs (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
67{
68 if (argc < 3) {
586db386 69 di<<"Use: XDumpDGTs Doc shape/label/all\n";
9ebaae37 70 return 1;
71 }
72 Handle(TDocStd_Document) Doc;
73 DDocStd::GetDocument(argv[1], Doc);
586db386 74 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 75 Handle(XCAFDoc_DimTolTool) aDimTolTool= XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
76 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
77
78 TCollection_AsciiString name = argv[2];
79 TDF_LabelSequence aLabels;
80 if(name.IsEqual("all"))
81 {
82 aShapeTool->GetShapes(aLabels);
83 for ( Standard_Integer i=1; i <= aLabels.Length(); i++ )
84 {
85 aShapeTool->GetSubShapes(aLabels.Value(i), aLabels);
86 }
87 }
88 else
89 {
90 TDF_Label aLabel;
91 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
92 if ( !aLabel.IsNull() ) {
93 aLabels.Append(aLabel);
94 aShapeTool->GetSubShapes(aLabel, aLabels);
95 }
96 else
97 {
98 TopoDS_Shape aShape= DBRep::Get(argv[2]);
99 if ( !aShape.IsNull() )
100 {
101 aShapeTool->Search(aShape, aLabel);
102 if ( !aLabel.IsNull() ) {
103 aLabels.Append(aLabel);
104 aShapeTool->GetSubShapes(aLabel, aLabels);
105 }
106 else
107 {
108 di<<"Shape "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
109 return 1;
110 }
111 }
112 }
113 }
114
115 for ( Standard_Integer i=1; i <= aLabels.Length(); i++ )
116 {
117 Standard_Boolean flag = Standard_True;
118 TDF_LabelSequence aGDTs;
119 aDimTolTool->GetRefDimensionLabels(aLabels.Value(i), aGDTs);
120 for ( Standard_Integer j=1; j <= aGDTs.Length(); j++ )
121 {
122 Handle(XCAFDoc_Dimension) aDimTol;
123 if(aGDTs.Value(j).FindAttribute(XCAFDoc_Dimension::GetID(), aDimTol))
124 {
125 Handle(XCAFDimTolObjects_DimensionObject) aDimTolObj = aDimTol->GetObject();
126 if(flag)
127 {
128 TCollection_AsciiString Entry;
129 TDF_Tool::Entry(aLabels.Value(i), Entry);
586db386 130 di << "\n " << Entry << " Shape."<< i;
9ebaae37 131 flag = Standard_False;
132 }
133 TCollection_AsciiString Entry;
134 TDF_Tool::Entry(aGDTs.Value(j), Entry);
135 di << "\n \t " << Entry;
136 flag = Standard_False;
137
586db386 138 di << " Dimension."<< i << "."<< j;
1c9d3225 139 if (argc > 3)
140 {
141 di <<" (";
eacdb38f 142 if (aDimTolObj->GetSemanticName())
143 {
144 di << " N \"" << aDimTolObj->GetSemanticName()->String() << "\"";
145 }
1c9d3225 146 di << " T " << aDimTolObj->GetType();
147 if(aDimTolObj->IsDimWithRange())
148 {
149 di << ", LB " << aDimTolObj->GetLowerBound();
150 di << ", UB " << aDimTolObj->GetUpperBound();
151 }
152 else
153 {
154 di << ", V " << aDimTolObj->GetValue();
155 if (aDimTolObj->IsDimWithPlusMinusTolerance())
156 {
157 di << ", VL " << aDimTolObj->GetLowerTolValue();
158 di << ", VU " << aDimTolObj->GetUpperTolValue();
159 }
160 else if (aDimTolObj->IsDimWithClassOfTolerance())
161 {
162 Standard_Boolean isH;
163 XCAFDimTolObjects_DimensionFormVariance aFV;
164 XCAFDimTolObjects_DimensionGrade aG;
165 aDimTolObj->GetClassOfTolerance(isH, aFV, aG);
166 di << ", H " << (Standard_Integer)isH<< " F " << aFV << " G " << aG;
167 }
168 }
169 if (aDimTolObj->HasQualifier())
170 di << ", Q " << aDimTolObj->GetQualifier();
171 if (aDimTolObj->GetType() == XCAFDimTolObjects_DimensionType_Location_Oriented)
172 {
173 gp_Dir aD;
174 aDimTolObj->GetDirection(aD);
175 di << ", D (" << aD.X() << ", " << aD.Y() << ", " << aD.Z() << ")";
176 }
177 XCAFDimTolObjects_DimensionModifiersSequence aModif =
178 aDimTolObj->GetModifiers();
179 if (!aModif.IsEmpty())
180 {
181 di << ",";
182 for (Standard_Integer k = aModif.Lower(); k <= aModif.Upper(); k++)
183 {
184 di << " M " << aModif.Value(k);
185 }
186 }
187 di << ", P " << (Standard_Integer)!aDimTolObj->GetPath().IsNull();
188 di << " )";
189 }
9ebaae37 190 }
191 }
192 aGDTs.Clear();
193 aDimTolTool->GetRefGeomToleranceLabels(aLabels.Value(i), aGDTs);
194 for ( Standard_Integer j=1; j <= aGDTs.Length(); j++ )
195 {
196 Handle(XCAFDoc_GeomTolerance) aDimTol;
197 if(aGDTs.Value(j).FindAttribute(XCAFDoc_GeomTolerance::GetID(), aDimTol))
198 {
199 Handle(XCAFDimTolObjects_GeomToleranceObject) aDimTolObj = aDimTol->GetObject();
200 if(flag)
201 {
202 TCollection_AsciiString Entry;
203 TDF_Tool::Entry(aLabels.Value(i), Entry);
586db386 204 di << "\n " << Entry << " Shape."<< i;
9ebaae37 205 flag = Standard_False;
206 }
207 TCollection_AsciiString Entry;
208 TDF_Tool::Entry(aGDTs.Value(j), Entry);
209 di << "\n \t " << Entry;
210 flag = Standard_False;
211
586db386 212 di << " GeomTolerance."<< i << "."<< j;
1c9d3225 213 if (argc > 3)
214 {
215 di <<" (";
eacdb38f 216 if (aDimTolObj->GetSemanticName())
217 {
218 di << " N \"" << aDimTolObj->GetSemanticName()->String() << "\"";
219 }
1c9d3225 220 di << " T " << aDimTolObj->GetType();
221 di << " TV " << aDimTolObj->GetTypeOfValue();
222 di << ", V " << aDimTolObj->GetValue();
223
224 if (aDimTolObj->HasAxis())
225 {
226 gp_Ax2 anAx = aDimTolObj->GetAxis();
227 di << ", A ( L (" << anAx.Location().X() << anAx.Location().Y() << anAx.Location().Z()
228 << "), XD (" << anAx.XDirection().X() << anAx.XDirection().Y() << anAx.XDirection().Z()
229 << "), RD (" << anAx.YDirection().X() << anAx.YDirection().Y() << anAx.YDirection().Z() << "))";
230 }
231 XCAFDimTolObjects_GeomToleranceModifiersSequence aModif =
232 aDimTolObj->GetModifiers();
233 if (!aModif.IsEmpty())
234 {
235 di << ",";
236 for (Standard_Integer k = aModif.Lower(); k <= aModif.Upper(); k++)
237 {
238 di << " M " << aModif.Value(k);
239 }
240 }
241 if (aDimTolObj->GetMaterialRequirementModifier() != XCAFDimTolObjects_GeomToleranceMatReqModif_None)
242 {
243 di << ", MR " << aDimTolObj->GetMaterialRequirementModifier();
244 }
245 if (aDimTolObj->GetMaxValueModifier() > 0)
246 {
247 di << "MaxV " << aDimTolObj->GetMaxValueModifier();
248 }
249 if ( aDimTolObj->GetZoneModifier() != XCAFDimTolObjects_GeomToleranceZoneModif_None)
250 {
251 di << ", ZM " << aDimTolObj->GetZoneModifier();
252 if (aDimTolObj->GetValueOfZoneModifier() > 0)
253 {
254 di << " ZMV " <<aDimTolObj->GetValueOfZoneModifier();
255 }
256 }
1c9d3225 257 di << " )";
258 }
9ebaae37 259 Handle(XCAFDoc_GraphNode) aNode;
260 if(aGDTs.Value(j).FindAttribute(XCAFDoc::DatumTolRefGUID(), aNode) && aNode->NbChildren() > 0)
261 {
51740958 262 for(Standard_Integer k = 1; k<=aNode->NbChildren(); k++)
9ebaae37 263 {
264 Handle(XCAFDoc_Datum) aDatum;
51740958 265 if(aNode->GetChild(k)->Label().FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
9ebaae37 266 {
1c9d3225 267 Handle(XCAFDimTolObjects_DatumObject) aDatumObj = aDatum->GetObject();
51740958 268 TCollection_AsciiString anEntry;
269 TDF_Tool::Entry(aNode->GetChild(k)->Label(), anEntry);
270 di << "\n \t \t " << anEntry;
586db386 271 di << " Datum."<< i << "."<< j << "."<< k;
1c9d3225 272 if (argc > 3)
273 {
eacdb38f 274 di << " (";
275 if (aDimTolObj->GetSemanticName())
276 {
277 di << " N \"" << aDimTolObj->GetSemanticName()->String() << "\"";
278 }
1c9d3225 279 XCAFDimTolObjects_DatumModifiersSequence aModif =
280 aDatumObj->GetModifiers();
281 if (!aModif.IsEmpty())
282 {
283 di << ",";
f2139a7f 284 for (Standard_Integer iModif = aModif.Lower(); iModif <= aModif.Upper(); iModif++)
1c9d3225 285 {
f2139a7f 286 di << " M " << aModif.Value(iModif);
1c9d3225 287 }
288 }
289 XCAFDimTolObjects_DatumModifWithValue aM;
290 Standard_Real aV;
291 aDatumObj->GetModifierWithValue(aM, aV);
292 if (aM != XCAFDimTolObjects_DatumModifWithValue_None)
293 {
294 di << ", MV" << aM << " " << aV;
295 }
296 di << " )";
297 }
9ebaae37 298 }
299 }
300 }
301 }
302 }
1c9d3225 303 TDF_LabelSequence aDatumL;
9ebaae37 304 if (aDimTolTool->GetRefDatumLabel(aLabels.Value(i), aDatumL))
305 {
1c9d3225 306 for(Standard_Integer j = aDatumL.Lower(); j <= aDatumL.Upper(); j++)
9ebaae37 307 {
1c9d3225 308 Handle(XCAFDoc_Datum) aDatum;
309 if(aDatumL.Value(j).FindAttribute(XCAFDoc_Datum::GetID(), aDatum) &&
310 aDatum->GetObject()->IsDatumTarget())
9ebaae37 311 {
1c9d3225 312 Handle(XCAFDimTolObjects_DatumObject) aDatumObj = aDatum->GetObject();
313 if(flag)
314 {
315 TCollection_AsciiString Entry;
316 TDF_Tool::Entry(aLabels.Value(i), Entry);
586db386 317 di << "\n " << Entry << " Shape."<< i;
1c9d3225 318 flag = Standard_False;
319 }
9ebaae37 320 TCollection_AsciiString Entry;
1c9d3225 321 TDF_Tool::Entry(aDatumL.First(), Entry);
322 di << "\n \t " << Entry;
9ebaae37 323 flag = Standard_False;
1c9d3225 324
586db386 325 di << " Datum target."<< i << "."<< j;
1c9d3225 326 if (argc > 3)
327 {
328 di <<" (";
eacdb38f 329 if (aDatumObj->GetSemanticName())
330 {
331 di << " N \"" << aDatumObj->GetSemanticName()->String() << "\"";
332 }
1c9d3225 333 di << " T " << aDatumObj->GetDatumTargetType();
334 if (aDatumObj->GetDatumTargetType() != XCAFDimTolObjects_DatumTargetType_Area)
335 {
336 gp_Ax2 anAx = aDatumObj->GetDatumTargetAxis();
337 di << ", A ( L (" << anAx.Location().X() << anAx.Location().Y() << anAx.Location().Z()
338 << "), XD (" << anAx.XDirection().X() << anAx.XDirection().Y() << anAx.XDirection().Z()
339 << "), RD (" << anAx.YDirection().X() << anAx.YDirection().Y() << anAx.YDirection().Z() << "))";
340 if (aDatumObj->GetDatumTargetType() != XCAFDimTolObjects_DatumTargetType_Point)
341 {
342 di << ", L " << aDatumObj->GetDatumTargetLength() ;
343 if (aDatumObj->GetDatumTargetType() == XCAFDimTolObjects_DatumTargetType_Rectangle)
344 {
345 di << ", W " << aDatumObj->GetDatumTargetWidth() ;
346 }
347 }
348 }
349 di << " )";
350 }
9ebaae37 351 }
1c9d3225 352 }
353 }
354 }
355 return 0;
356}
357
358static Standard_Integer DumpNbDGTs (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
359{
360 if (argc < 2) {
586db386 361 di<<"Use: XDumpNbDGTs Doc";
1c9d3225 362 return 1;
363 }
6595eee7 364
365 Standard_Boolean isFull = Standard_False;
366 if (argc == 3) {
367 char aChar = argv[2][0];
368 if (aChar == 'f')
369 isFull = Standard_True;
370 }
1c9d3225 371 Handle(TDocStd_Document) Doc;
372 DDocStd::GetDocument(argv[1], Doc);
586db386 373 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
1c9d3225 374 Handle(XCAFDoc_DimTolTool) aDimTolTool= XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
375 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
376
377 TDF_LabelSequence aLabels;
378 aShapeTool->GetShapes(aLabels);
379 for ( Standard_Integer i=1; i <= aLabels.Length(); i++ )
380 {
381 aShapeTool->GetSubShapes(aLabels.Value(i), aLabels);
382 }
9ebaae37 383
1c9d3225 384 TDF_LabelSequence aGDTs;
385 aDimTolTool->GetDimensionLabels(aGDTs);
386 di << "\n NbOfDimensions : " << aGDTs.Length();
6595eee7 387 if (isFull) {
388 Standard_Integer nbSize = 0,
389 nbLocation = 0,
390 nbAngular = 0,
0b622d67 391 nbWithPath = 0,
392 nbCommon = 0;
6595eee7 393 for (Standard_Integer i = 1; i <= aGDTs.Length(); i++) {
394 Handle(XCAFDoc_Dimension) aDimAttr;
395 if (!aGDTs.Value(i).FindAttribute(XCAFDoc_Dimension::GetID(),aDimAttr))
396 continue;
397 Handle(XCAFDimTolObjects_DimensionObject) anObject = aDimAttr->GetObject();
398 if (anObject.IsNull())
399 continue;
400 XCAFDimTolObjects_DimensionType aDimType = anObject->GetType();
0b622d67 401 if (aDimType == XCAFDimTolObjects_DimensionType_CommonLabel) {
402 nbCommon++;
403 }
404 else if (STEPCAFControl_GDTProperty::IsDimensionalLocation(aDimType)) {
6595eee7 405 nbLocation++;
406 }
407 else if (aDimType == XCAFDimTolObjects_DimensionType_Location_Angular) {
408 nbAngular++;
409 nbLocation++;
410 }
411 else if (aDimType == XCAFDimTolObjects_DimensionType_Location_WithPath) {
412 nbLocation++;
413 nbWithPath++;
414 }
727b5ad9 415 else if (STEPCAFControl_GDTProperty::IsDimensionalSize(aDimType)) {
6595eee7 416 nbSize++;
417 }
418 else if (aDimType == XCAFDimTolObjects_DimensionType_Size_Angular) {
419 nbSize++;
420 nbAngular++;
421 }
422 else if (aDimType == XCAFDimTolObjects_DimensionType_Size_WithPath) {
423 nbSize++;
424 nbWithPath++;
425 }
426 }
427 di << "\n NbOfDimensionalSize : " << nbSize;
428 di << "\n NbOfDimensionalLocation: " << nbLocation;
429 di << "\n NbOfAngular : " << nbAngular;
430 di << "\n NbOfWithPath : " << nbWithPath;
0b622d67 431 di << "\n NbOfCommonLabels : " << nbCommon;
6595eee7 432 }
1c9d3225 433
434 aGDTs.Clear();
435 aDimTolTool->GetGeomToleranceLabels(aGDTs);
436 di << "\n NbOfTolerances : " << aGDTs.Length();
6595eee7 437 if (isFull) {
438 Standard_Integer nbWithModif = 0,
439 nbWithMaxTol = 0,
440 nbWithDatumRef = 0;
441 for (Standard_Integer i = 1; i <= aGDTs.Length(); i++) {
442 Handle(XCAFDoc_GeomTolerance) aGTAttr;
443 if (!aGDTs.Value(i).FindAttribute(XCAFDoc_GeomTolerance::GetID(),aGTAttr))
444 continue;
445 Handle(XCAFDimTolObjects_GeomToleranceObject) anObject = aGTAttr->GetObject();
446 if (anObject.IsNull())
447 continue;
51663cb4 448 if (anObject->GetMaterialRequirementModifier() != XCAFDimTolObjects_GeomToleranceMatReqModif_None) {
6595eee7 449 nbWithModif++;
450 }
51663cb4 451 else if (anObject->GetModifiers().Length() > 0) {
452 Standard_Boolean isHasModif = Standard_False;
9f951ebc 453 for (Standard_Integer j = 1; j <= anObject->GetModifiers().Length(); j++)
454 if (anObject->GetModifiers().Value(j) != XCAFDimTolObjects_GeomToleranceModif_All_Around &&
455 anObject->GetModifiers().Value(j) != XCAFDimTolObjects_GeomToleranceModif_All_Over) {
51663cb4 456 isHasModif = Standard_True;
457 break;
458 }
459 if (isHasModif)
460 nbWithModif++;
461 }
6595eee7 462 if (anObject->GetMaxValueModifier() != 0) {
463 nbWithMaxTol++;
464 }
465 TDF_LabelSequence aDatumSeq;
466 aDimTolTool->GetDatumWithObjectOfTolerLabels(aGDTs.Value(i), aDatumSeq);
467 if (aDatumSeq.Length() > 0) {
468 nbWithDatumRef++;
469 }
470 }
471 di << "\n NbOfGTWithModifiers : " << nbWithModif;
472 di << "\n NbOfGTWithMaxTolerance : " << nbWithMaxTol;
473 di << "\n NbOfGTWithDatums : " << nbWithDatumRef;
474 }
1c9d3225 475
476 Standard_Integer aCounter = 0;
477 Standard_Integer aCounter1 = 0;
478 Standard_Integer aCounter2 = 0;
479
480 for ( Standard_Integer i=1; i <= aLabels.Length(); i++ )
481 {
482 Standard_Boolean isDatum = Standard_False;
483 TDF_LabelSequence aDatL;
484 if(aDimTolTool->GetRefDatumLabel(aLabels.Value(i), aDatL))
485 {
486 for(Standard_Integer j = aDatL.Lower(); j <= aDatL.Upper(); j++)
487 {
488 Handle(XCAFDoc_Datum) aDat;
489 if(aDatL.Value(j).FindAttribute(XCAFDoc_Datum::GetID(), aDat))
490 {
491 if(aDat->GetObject()->IsDatumTarget())
492 {
493 aCounter1++;
494 }
495 else
496 {
497 aCounter2++;
498 isDatum = Standard_True;
499 }
500 }
9ebaae37 501 }
1c9d3225 502 if(isDatum)
503 aCounter++;
9ebaae37 504 }
505 }
1c9d3225 506 di << "\n NbOfDatumFeature : " << aCounter;
507 di << "\n NbOfAttachedDatum : " << aCounter2;
508 di << "\n NbOfDatumTarget : " << aCounter1;
509
9ebaae37 510 return 0;
511}
512
513static Standard_Integer addDim (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
514{
515 if (argc < 3) {
586db386 516 di<<"Use: XAddDimension Doc shape/label [shape/label]\n";
9ebaae37 517 return 1;
518 }
519 Handle(TDocStd_Document) Doc;
520 DDocStd::GetDocument(argv[1], Doc);
586db386 521 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 522 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
523 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
524
525 TDF_Label aLabel;
526 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
527 if ( aLabel.IsNull() )
528 {
529 TopoDS_Shape aShape= DBRep::Get(argv[2]);
530 if ( !aShape.IsNull() )
531 {
532 aShapeTool->Search(aShape, aLabel);
533 if ( aLabel.IsNull() )
534 {
535 di<<"Shape "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
536 return 1;
537 }
538 }
539 }
540 TDF_Label aLabel1;
541 if(argc == 4)
542 {
543 TDF_Tool::Label(Doc->GetData(), argv[3], aLabel1);
544 if ( aLabel1.IsNull() )
545 {
546 TopoDS_Shape aShape= DBRep::Get(argv[3]);
547 if ( !aShape.IsNull() )
548 {
549 aShapeTool->Search(aShape, aLabel1);
550 if ( aLabel1.IsNull() )
551 {
552 di<<"Shape "<<argv[3]<<" is absent in "<<argv[1]<<"\n";
553 return 1;
554 }
555 }
556 }
557 }
558
559 TDF_Label aDimL = aDimTolTool->AddDimension();
560 if(aLabel1.IsNull())
561 aDimTolTool->SetDimension(aLabel, aDimL);
562 else
563 aDimTolTool->SetDimension(aLabel, aLabel1, aDimL);
564 TCollection_AsciiString Entry;
565 TDF_Tool::Entry(aDimL, Entry);
566 di << Entry;
567 return 0;
568}
569
570static Standard_Integer addGTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
571{
572 if (argc < 3) {
586db386 573 di<<"Use: XAddGeomTolerance Doc shape/label\n";
9ebaae37 574 return 1;
575 }
576 Handle(TDocStd_Document) Doc;
577 DDocStd::GetDocument(argv[1], Doc);
586db386 578 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 579 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
580 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
581
582 TDF_Label aLabel;
583 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
584 if ( aLabel.IsNull() )
585 {
586 TopoDS_Shape aShape= DBRep::Get(argv[2]);
587 if ( !aShape.IsNull() )
588 {
589 aShapeTool->Search(aShape, aLabel);
590 if ( aLabel.IsNull() )
591 {
592 di<<"Shape "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
593 return 1;
594 }
595 }
596 }
597
598 TDF_Label aTolL = aDimTolTool->AddGeomTolerance();
599 aDimTolTool->SetGeomTolerance(aLabel, aTolL);
600 TCollection_AsciiString Entry;
601 TDF_Tool::Entry(aTolL, Entry);
602 di << Entry;
603 return 0;
604}
605
606static Standard_Integer addDatum (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
607{
608 if (argc < 3) {
400af1bc 609 di<<"Use: XAddDatum Doc shape1/label1 ... shapeN/labelN\n";
9ebaae37 610 return 1;
611 }
612 Handle(TDocStd_Document) Doc;
613 DDocStd::GetDocument(argv[1], Doc);
586db386 614 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 615 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
616 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
617
400af1bc 618 TDF_LabelSequence aLabelSeq;
619 for (Standard_Integer i = 2; i < argc; i++) {
620 TDF_Label aLabel;
621 TDF_Tool::Label(Doc->GetData(), argv[i], aLabel);
622 if (aLabel.IsNull()) {
623 TopoDS_Shape aShape = DBRep::Get(argv[i]);
624 if (!aShape.IsNull())
625 aShapeTool->Search(aShape, aLabel);
626 if (aLabel.IsNull())
627 continue;
9ebaae37 628 }
400af1bc 629 aLabelSeq.Append(aLabel);
9ebaae37 630 }
631
632 TDF_Label aDatumL = aDimTolTool->AddDatum();
400af1bc 633 aDimTolTool->SetDatum(aLabelSeq, aDatumL);
9ebaae37 634 TCollection_AsciiString Entry;
635 TDF_Tool::Entry(aDatumL, Entry);
636 di << Entry;
637 return 0;
638}
639
640static Standard_Integer setDatum (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
641{
642 if (argc < 4) {
586db386 643 di<<"Use: XSetDatum Doc Datum_Label GeomTol_Label\n";
9ebaae37 644 return 1;
645 }
646 Handle(TDocStd_Document) Doc;
647 DDocStd::GetDocument(argv[1], Doc);
586db386 648 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 649 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
650 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
651
652 TDF_Label aLabel;
653 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
654 if ( aLabel.IsNull() )
655 {
656 di<<"Datum "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
657 return 1;
658 }
659
660 TDF_Label aTol;
661 TDF_Tool::Label(Doc->GetData(), argv[3], aTol);
662 if ( aTol.IsNull() )
663 {
664 di<<"GeomTolerance "<<argv[3]<<" is absent in "<<argv[1]<<"\n";
665 return 1;
666 }
667
c1070321 668 // check datum position number
669 Handle(XCAFDoc_Datum) aDatumAttr;
670 if (!aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatumAttr))
671 {
672 di<<"Invalid datum object\n";
673 return 1;
674 }
675 Handle(XCAFDimTolObjects_DatumObject) aDatumObj = aDatumAttr->GetObject();
676 if (aDatumObj.IsNull())
677 {
678 di<<"Invalid datum object\n";
679 return 1;
680 }
681
682 if (aDatumObj->GetPosition() < 1 || aDatumObj->GetPosition() > 3)
683 {
684 di<<"Invalid datum position number: use XSetDatumPosition\n";
685 return 1;
686 }
687
9ebaae37 688 aDimTolTool->SetDatumToGeomTol(aLabel, aTol);
689 return 0;
690}
691
c1070321 692static Standard_Integer setDatumPosition (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
693{
694 if (argc < 4) {
695 di<<"Use: XSetDatumPosition Doc Datum_Label position[1-3]\n";
696 return 1;
697 }
698
699 if (Draw::Atoi(argv[3]) < 1 || Draw::Atoi(argv[3]) > 3) {
700 di<<"Datum position should be 1, 2 or 3\n";
701 return 1;
702 }
703
704 Handle(TDocStd_Document) Doc;
705 DDocStd::GetDocument(argv[1], Doc);
706 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
707 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
708 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
709
710 TDF_Label aLabel;
711 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
712 if ( aLabel.IsNull() )
713 {
714 di<<"Datum "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
715 return 1;
716 }
717 Handle(XCAFDoc_Datum) aDatum;
718 if(aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
719 {
720 Handle(XCAFDimTolObjects_DatumObject) anObj = aDatum->GetObject();
721 anObj->SetPosition(Draw::Atoi(argv[3]));
722 aDatum->SetObject(anObj);
723 }
724 return 0;
725}
726
727static Standard_Integer getDatumPosition (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
728{
729 if (argc < 3) {
730 di<<"Use: XGetDatumPosition Doc Datum_Label\n";
731 return 1;
732 }
733 Handle(TDocStd_Document) Doc;
734 DDocStd::GetDocument(argv[1], Doc);
735 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
736 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
737 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
738
739 TDF_Label aLabel;
740 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
741 if ( aLabel.IsNull() )
742 {
743 di<<"Datum "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
744 return 1;
745 }
746 Handle(XCAFDoc_Datum) aDatum;
747 if(aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
748 {
749 di << aDatum->GetObject()->GetPosition();
750 }
751 return 0;
752}
753
754
9ebaae37 755static Standard_Integer getDatum (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
756{
757 if (argc < 3) {
586db386 758 di<<"Use: XGetDatum Doc GeomTol_Label/Shape_Label\n";
9ebaae37 759 return 1;
760 }
761 Handle(TDocStd_Document) Doc;
762 DDocStd::GetDocument(argv[1], Doc);
586db386 763 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 764 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
765 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
766
767 TDF_Label aLabel;
768 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
769 if ( aLabel.IsNull() )
770 {
771 di<<"Label "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
772 return 1;
773 }
774
1c9d3225 775 TDF_LabelSequence aD;
9ebaae37 776 if(!aDimTolTool->GetRefDatumLabel(aLabel, aD))
777 {
1c9d3225 778 aDimTolTool->GetDatumOfTolerLabels(aLabel, aD);
9ebaae37 779 }
1c9d3225 780 for(Standard_Integer i = aD.Lower(); i <= aD.Upper(); i++)
9ebaae37 781 {
1c9d3225 782 if(i>1) di<<", ";
9ebaae37 783 TCollection_AsciiString Entry;
1c9d3225 784 TDF_Tool::Entry(aD.Value(i), Entry);
9ebaae37 785 di<<Entry;
786 }
787 return 0;
788}
789
790static Standard_Integer addDatumModif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
791{
792 if (argc < 4) {
586db386 793 di<<"Use: XAddDatumModifier Doc Datum_Label mod1 mod2 ...\n";
9ebaae37 794 return 1;
795 }
796 Handle(TDocStd_Document) Doc;
797 DDocStd::GetDocument(argv[1], Doc);
586db386 798 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 799 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
800 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
801
802 TDF_Label aLabel;
803 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
804 if ( aLabel.IsNull() )
805 {
806 di<<"Datum "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
807 return 1;
808 }
809 Handle(XCAFDoc_Datum) aDatum;
810 if(aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
811 {
812 for(Standard_Integer i = 3; i < argc; i++)
813 {
814 if(Draw::Atoi(argv[i]) < 22 && Draw::Atoi(argv[i]) > -1)
815 {
816 Handle(XCAFDimTolObjects_DatumObject) anObj = aDatum->GetObject();
817 anObj->AddModifier((XCAFDimTolObjects_DatumSingleModif)Draw::Atoi(argv[i]));
818 aDatum->SetObject(anObj);
819 }
820 }
821 }
822 return 0;
823}
824
825static Standard_Integer getDatumModif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
826{
827 if (argc < 3) {
586db386 828 di<<"Use: XGetDatumModifiers Doc Datum_Label\n";
9ebaae37 829 return 1;
830 }
831 Handle(TDocStd_Document) Doc;
832 DDocStd::GetDocument(argv[1], Doc);
586db386 833 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 834 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
835 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
836
837 TDF_Label aLabel;
838 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
839 if ( aLabel.IsNull() )
840 {
841 di<<"Datum "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
842 return 1;
843 }
844 Handle(XCAFDoc_Datum) aDatum;
845 if(aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
846 {
847 XCAFDimTolObjects_DatumModifiersSequence aS = aDatum->GetObject()->GetModifiers();
848 for(Standard_Integer i = 1; i<=aS.Length();i++)
849 {
850 if (i > 1) di<<", ";
851 switch(aS.Value(i)){
852 case 0 : di<<"AnyCrossSection"; break;
853 case 1 : di<<"AnyLongitudinalSection"; break;
854 case 2 : di<<"Basic"; break;
855 case 3 : di<<"ContactingFeature\n"; break;
856 case 4 : di<<"DegreeOfFreedomConstraintU"; break;
857 case 5 : di<<"DegreeOfFreedomConstraintV"; break;
858 case 6 : di<<"DegreeOfFreedomConstraintW"; break;
859 case 7 : di<<"DegreeOfFreedomConstraintX"; break;
860 case 8 : di<<"DegreeOfFreedomConstraintY"; break;
861 case 9 : di<<"DegreeOfFreedomConstraintZ"; break;
862 case 10 : di<<"DistanceVariable"; break;
863 case 11 : di<<"FreeState"; break;
864 case 12 : di<<"LeastMaterialRequirement"; break;
865 case 13 : di<<"Line"; break;
866 case 14 : di<<"MajorDiameter"; break;
867 case 15 : di<<"MaximumMaterialRequirement"; break;
868 case 16 : di<<"MinorDiameter"; break;
869 case 17 : di<<"Orientation"; break;
870 case 18 : di<<"PitchDiameter"; break;
871 case 19 : di<<"Plane"; break;
872 case 20 : di<<"Point"; break;
873 case 21 : di<<"Translation"; break;
874 default : break;
875 }
876 }
877 }
878 return 0;
879}
880
881static Standard_Integer setDatumName (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
882{
883 if (argc < 4) {
586db386 884 di<<"Use: XSetDatumName Doc Datum_Label name\n";
9ebaae37 885 return 1;
886 }
887 Handle(TDocStd_Document) Doc;
888 DDocStd::GetDocument(argv[1], Doc);
586db386 889 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 890 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
891 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
892
893 TDF_Label aLabel;
894 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
895 if ( aLabel.IsNull() )
896 {
897 di<<"Datum "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
898 return 1;
899 }
900 Handle(XCAFDoc_Datum) aDatum;
901 if(aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
902 {
903 Handle(XCAFDimTolObjects_DatumObject) anObj = aDatum->GetObject();
904 anObj->SetName(new TCollection_HAsciiString(argv[3]));
905 aDatum->SetObject(anObj);
906 }
907 return 0;
908}
909
910static Standard_Integer getDatumName (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
911{
912 if (argc < 3) {
586db386 913 di<<"Use: XGetDatumName Doc Datum_Label\n";
9ebaae37 914 return 1;
915 }
916 Handle(TDocStd_Document) Doc;
917 DDocStd::GetDocument(argv[1], Doc);
586db386 918 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 919 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
920 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
921
922 TDF_Label aLabel;
923 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
924 if ( aLabel.IsNull() )
925 {
926 di<<"Datum "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
927 return 1;
928 }
929 Handle(XCAFDoc_Datum) aDatum;
930 if(aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
931 {
932 di<<aDatum->GetObject()->GetName()->ToCString();
933 }
934 return 0;
935}
936
937static Standard_Integer setTypeOfTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
938{
939 if (argc < 4) {
586db386 940 di<<"Use: XSetTypeOfTolerance Doc GTol_Label type\n";
9ebaae37 941 return 1;
942 }
943 Handle(TDocStd_Document) Doc;
944 DDocStd::GetDocument(argv[1], Doc);
586db386 945 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 946 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
947 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
948
949 TDF_Label aLabel;
950 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
951 if ( aLabel.IsNull() )
952 {
953 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
954 return 1;
955 }
956 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
957 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
958 {
959 if(Draw::Atoi(argv[3]) > -1 && Draw::Atoi(argv[3]) < 16)
960 {
961 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
962 anObj->SetType((XCAFDimTolObjects_GeomToleranceType)Draw::Atoi(argv[3]));
963 aGeomTolerance->SetObject(anObj);
964 }
965 }
966 return 0;
967}
968
969static Standard_Integer getTypeOfTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
970{
971 if (argc < 3) {
586db386 972 di<<"Use: XGetTypeOfTolerance Doc GTol_Label\n";
9ebaae37 973 return 1;
974 }
975 Handle(TDocStd_Document) Doc;
976 DDocStd::GetDocument(argv[1], Doc);
586db386 977 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 978 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
979 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
980
981 TDF_Label aLabel;
982 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
983 if ( aLabel.IsNull() )
984 {
985 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
986 return 1;
987 }
988 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
989 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
990 {
991 switch(aGeomTolerance->GetObject()->GetType()){
992 case 0 : di<<"type is absent"; break;
993 case 1 : di<<"Angularity"; break;
994 case 2 : di<<"CircularRunout"; break;
995 case 3 : di<<"CircularityOrRoundness"; break;
996 case 4 : di<<"Coaxiality"; break;
997 case 5 : di<<"Concentricity"; break;
998 case 6 : di<<"Cylindricity"; break;
999 case 7 : di<<"Flatness"; break;
1000 case 8 : di<<"Parallelism"; break;
1001 case 9 : di<<"Perpendicularity"; break;
1002 case 10 : di<<"Position"; break;
1003 case 11 : di<<"ProfileOfLine"; break;
1004 case 12 : di<<"ProfileOfSurface"; break;
1005 case 13 : di<<"Straightness"; break;
1006 case 14 : di<<"Symmetry"; break;
1007 case 15 : di<<"TotalRunout"; break;
1008 default : break;
1009 }
1010 }
1011 return 0;
1012}
1013
1014static Standard_Integer setTypeOfTolVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1015{
1016 if (argc < 4) {
586db386 1017 di<<"Use: XSetTypeOfToleranceValue Doc GTol_Label type\n";
9ebaae37 1018 return 1;
1019 }
1020 Handle(TDocStd_Document) Doc;
1021 DDocStd::GetDocument(argv[1], Doc);
586db386 1022 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1023 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1024 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1025
1026 TDF_Label aLabel;
1027 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1028 if ( aLabel.IsNull() )
1029 {
1030 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1031 return 1;
1032 }
1033 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
1034 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
1035 {
1036 if(Draw::Atoi(argv[3]) > -1 && Draw::Atoi(argv[3]) < 3)
1037 {
1038 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
1039 anObj->SetTypeOfValue((XCAFDimTolObjects_GeomToleranceTypeValue)Draw::Atoi(argv[3]));
1040 aGeomTolerance->SetObject(anObj);
1041 }
1042 }
1043 return 0;
1044}
1045
1046static Standard_Integer getTypeOfTolVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1047{
1048 if (argc < 3) {
586db386 1049 di<<"Use: XGetTypeOfToleranceValue Doc GTol_Label\n";
9ebaae37 1050 return 1;
1051 }
1052 Handle(TDocStd_Document) Doc;
1053 DDocStd::GetDocument(argv[1], Doc);
586db386 1054 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1055 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1056 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1057
1058 TDF_Label aLabel;
1059 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1060 if ( aLabel.IsNull() )
1061 {
1062 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1063 return 1;
1064 }
1065 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
1066 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
1067 {
1068 switch(aGeomTolerance->GetObject()->GetTypeOfValue()){
1069 case 0 : di<<"type is absent"; break;
1070 case 1 : di<<"Diameter"; break;
1071 case 2 : di<<"SphericalDiameter"; break;
1072 default : break;
1073 }
1074 }
1075 return 0;
1076}
1077
1078static Standard_Integer setTolVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1079{
1080 if (argc < 4) {
586db386 1081 di<<"Use: XSetToleranceValue Doc GTol_Label value\n";
9ebaae37 1082 return 1;
1083 }
1084 Handle(TDocStd_Document) Doc;
1085 DDocStd::GetDocument(argv[1], Doc);
586db386 1086 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1087 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1088 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1089
1090 TDF_Label aLabel;
1091 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1092 if ( aLabel.IsNull() )
1093 {
1094 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1095 return 1;
1096 }
1097 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
1098 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
1099 {
1100 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
1101 anObj->SetValue(Draw::Atof(argv[3]));
1102 aGeomTolerance->SetObject(anObj);
1103 }
1104 return 0;
1105}
1106
1107static Standard_Integer getTolVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1108{
1109 if (argc < 3) {
586db386 1110 di<<"Use: XGetToleranceValue Doc GTol_Label\n";
9ebaae37 1111 return 1;
1112 }
1113 Handle(TDocStd_Document) Doc;
1114 DDocStd::GetDocument(argv[1], Doc);
586db386 1115 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1116 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1117 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1118
1119 TDF_Label aLabel;
1120 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1121 if ( aLabel.IsNull() )
1122 {
1123 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1124 return 1;
1125 }
1126 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
1127 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
1128 {
1129 di << aGeomTolerance->GetObject()->GetValue();
1130 }
1131 return 0;
1132}
1133
1134static Standard_Integer setMatReq (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1135{
1136 if (argc < 4) {
586db386 1137 di<<"Use: XSetTolMaterialReq Doc GTol_Label mod\n";
9ebaae37 1138 return 1;
1139 }
1140 Handle(TDocStd_Document) Doc;
1141 DDocStd::GetDocument(argv[1], Doc);
586db386 1142 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1143 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1144 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1145
1146 TDF_Label aLabel;
1147 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1148 if ( aLabel.IsNull() )
1149 {
1150 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1151 return 1;
1152 }
1153 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
1154 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
1155 {
1156 if(Draw::Atoi(argv[3]) > -1 && Draw::Atoi(argv[3]) < 3)
1157 {
1158 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
1159 anObj->SetMaterialRequirementModifier((XCAFDimTolObjects_GeomToleranceMatReqModif)Draw::Atoi(argv[3]));
1160 aGeomTolerance->SetObject(anObj);
1161 }
1162 }
1163 return 0;
1164}
1165
1166static Standard_Integer getMatReq (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1167{
1168 if (argc < 3) {
586db386 1169 di<<"Use: XGetTolMaterialReq Doc GTol_Label\n";
9ebaae37 1170 return 1;
1171 }
1172 Handle(TDocStd_Document) Doc;
1173 DDocStd::GetDocument(argv[1], Doc);
586db386 1174 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1175 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1176 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1177
1178 TDF_Label aLabel;
1179 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1180 if ( aLabel.IsNull() )
1181 {
1182 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1183 return 1;
1184 }
1185 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
1186 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
1187 {
1188 switch(aGeomTolerance->GetObject()->GetMaterialRequirementModifier()){
1189 case 0 : di<<"modifier is absent"; break;
1190 case 1 : di<<"M"; break;
1191 case 2 : di<<"L"; break;
1192 default : break;
1193 }
1194 }
1195 return 0;
1196}
1197
1198static Standard_Integer setZoneMod (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1199{
1200 if (argc < 4) {
586db386 1201 di<<"Use: XSetTolZoneMod Doc GTol_Label mod\n";
9ebaae37 1202 return 1;
1203 }
1204 Handle(TDocStd_Document) Doc;
1205 DDocStd::GetDocument(argv[1], Doc);
586db386 1206 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1207 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1208 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1209
1210 TDF_Label aLabel;
1211 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1212 if ( aLabel.IsNull() )
1213 {
1214 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1215 return 1;
1216 }
1217 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
1218 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
1219 {
1220 if(Draw::Atoi(argv[3]) > -1 && Draw::Atoi(argv[3]) < 3)
1221 {
1222 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
1223 anObj->SetZoneModifier((XCAFDimTolObjects_GeomToleranceZoneModif)Draw::Atoi(argv[3]));
1224 aGeomTolerance->SetObject(anObj);
1225 }
1226 }
1227 return 0;
1228}
1229
1230static Standard_Integer getZoneMod (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1231{
1232 if (argc < 3) {
586db386 1233 di<<"Use: XGetTolZoneMod Doc GTol_Label\n";
9ebaae37 1234 return 1;
1235 }
1236 Handle(TDocStd_Document) Doc;
1237 DDocStd::GetDocument(argv[1], Doc);
586db386 1238 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1239 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1240 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1241
1242 TDF_Label aLabel;
1243 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1244 if ( aLabel.IsNull() )
1245 {
1246 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1247 return 1;
1248 }
1249 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
1250 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
1251 {
1252 switch(aGeomTolerance->GetObject()->GetZoneModifier()){
1253 case 0 : di<<"modifier is absent"; break;
1254 case 1 : di<<"P"; break;
1255 case 2 : di<<"NonUniform"; break;
1256 default : break;
1257 }
1258 }
1259 return 0;
1260}
1261
1262static Standard_Integer setZoneModVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1263{
1264 if (argc < 4) {
586db386 1265 di<<"Use: XSetTolZoneModValue Doc GTol_Label val\n";
9ebaae37 1266 return 1;
1267 }
1268 Handle(TDocStd_Document) Doc;
1269 DDocStd::GetDocument(argv[1], Doc);
586db386 1270 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1271 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1272 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1273
1274 TDF_Label aLabel;
1275 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1276 if ( aLabel.IsNull() )
1277 {
1278 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1279 return 1;
1280 }
1281 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
1282 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
1283 {
1284 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
1285 anObj->SetValueOfZoneModifier(Draw::Atof(argv[3]));
1286 aGeomTolerance->SetObject(anObj);
1287 }
1288 return 0;
1289}
1290
1291static Standard_Integer getZoneModVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1292{
1293 if (argc < 3) {
586db386 1294 di<<"Use: XGetTolZoneModValue Doc GTol_Label\n";
9ebaae37 1295 return 1;
1296 }
1297 Handle(TDocStd_Document) Doc;
1298 DDocStd::GetDocument(argv[1], Doc);
586db386 1299 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1300 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1301 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1302
1303 TDF_Label aLabel;
1304 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1305 if ( aLabel.IsNull() )
1306 {
1307 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1308 return 1;
1309 }
1310 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
1311 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
1312 {
1313 di << aGeomTolerance->GetObject()->GetValueOfZoneModifier();
1314 }
1315 return 0;
1316}
1317
1318static Standard_Integer addTolModif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1319{
1320 if (argc < 4) {
586db386 1321 di<<"Use: XAddTolModifier Doc Tol_Label mod1 mod2 ...\n";
9ebaae37 1322 return 1;
1323 }
1324 Handle(TDocStd_Document) Doc;
1325 DDocStd::GetDocument(argv[1], Doc);
586db386 1326 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1327 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1328 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1329
1330 TDF_Label aLabel;
1331 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1332 if ( aLabel.IsNull() )
1333 {
1334 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1335 return 1;
1336 }
1337 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
1338 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
1339 {
1340 for(Standard_Integer i = 3; i < argc; i++)
1341 {
ea3193f5 1342 if(Draw::Atoi(argv[i]) > -1 && Draw::Atoi(argv[i]) < 17)
9ebaae37 1343 {
1344 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
1345 anObj->AddModifier((XCAFDimTolObjects_GeomToleranceModif)Draw::Atoi(argv[i]));
1346 aGeomTolerance->SetObject(anObj);
1347 }
1348 }
1349 }
1350 return 0;
1351}
1352
1353static Standard_Integer getTolModif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1354{
1355 if (argc < 3) {
586db386 1356 di<<"Use: XGetTolModifiers Doc Tol_Label\n";
9ebaae37 1357 return 1;
1358 }
1359 Handle(TDocStd_Document) Doc;
1360 DDocStd::GetDocument(argv[1], Doc);
586db386 1361 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1362 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1363 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1364
1365 TDF_Label aLabel;
1366 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1367 if ( aLabel.IsNull() )
1368 {
1369 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1370 return 1;
1371 }
1372 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
1373 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
1374 {
1375 XCAFDimTolObjects_GeomToleranceModifiersSequence aS = aGeomTolerance->GetObject()->GetModifiers();
1376 for(Standard_Integer i = 1; i <= aS.Length(); i++)
1377 {
1378 if (i > 1) di<<", ";
1379 switch(aS.Value(i)){
1380 case 0 : di<<"Any_Cross_Section"; break;
1381 case 1 : di<<"Common_Zone"; break;
1382 case 2 : di<<"Each_Radial_Element"; break;
1383 case 3 : di<<"Free_State"; break;
1384 case 4 : di<<"Least_Material_Requirement"; break;
1385 case 5 : di<<"Line_Element"; break;
1386 case 6 : di<<"Major_Diameter"; break;
1387 case 7 : di<<"Maximum_Material_Requirement"; break;
1388 case 8 : di<<"Minor_Diameter"; break;
1389 case 9 : di<<"Not_Convex"; break;
1390 case 10 : di<<"Pitch_Diameter"; break;
1391 case 11 : di<<"Reciprocity_Requirement"; break;
1392 case 12 : di<<"Separate_Requirement"; break;
1393 case 13 : di<<"Statistical_Tolerance"; break;
1394 case 14 : di<<"Tangent_Plane"; break;
1395 default : break;
1396 }
1397 }
1398 }
1399 return 0;
1400}
1401
1402static Standard_Integer setTolMaxVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1403{
1404 if (argc < 4) {
586db386 1405 di<<"Use: XSetTolMaxValue Doc Dim_Label val\n";
9ebaae37 1406 return 1;
1407 }
1408 Handle(TDocStd_Document) Doc;
1409 DDocStd::GetDocument(argv[1], Doc);
586db386 1410 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1411 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1412 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1413
1414 TDF_Label aLabel;
1415 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1416 if ( aLabel.IsNull() )
1417 {
1418 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1419 return 1;
1420 }
1421 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
1422 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
1423 {
1424 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
1425 anObj->SetMaxValueModifier(Draw::Atof(argv[3]));
1426 aGeomTolerance->SetObject(anObj);
1427 }
1428 return 0;
1429}
1430
1431static Standard_Integer getTolMaxVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1432{
1433 if (argc < 3) {
586db386 1434 di<<"Use: XGetTolMaxValue Doc Dim_Label\n";
9ebaae37 1435 return 1;
1436 }
1437 Handle(TDocStd_Document) Doc;
1438 DDocStd::GetDocument(argv[1], Doc);
586db386 1439 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1440 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1441 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1442
1443 TDF_Label aLabel;
1444 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1445 if ( aLabel.IsNull() )
1446 {
1447 di<<"GeomTolerance "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1448 return 1;
1449 }
1450 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
1451 if(aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
1452 {
1453 di << aGeomTolerance->GetObject()->GetMaxValueModifier();
1454 }
1455 return 0;
1456}
1457
1458static Standard_Integer setDimType (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1459{
1460 if (argc < 4) {
586db386 1461 di<<"Use: XSetDimensionType Doc Dim_Label type\n";
9ebaae37 1462 return 1;
1463 }
1464 Handle(TDocStd_Document) Doc;
1465 DDocStd::GetDocument(argv[1], Doc);
586db386 1466 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1467 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1468 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1469
1470 TDF_Label aLabel;
1471 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1472 if ( aLabel.IsNull() )
1473 {
1474 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1475 return 1;
1476 }
1477 Handle(XCAFDoc_Dimension) aDimension;
1478 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
1479 {
1480 if(Draw::Atoi(argv[3]) > -1 && Draw::Atoi(argv[3]) < 30)
1481 {
1482 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
1483 anObj->SetType((XCAFDimTolObjects_DimensionType)Draw::Atoi(argv[3]));
1484 aDimension->SetObject(anObj);
1485 }
1486 }
1487 return 0;
1488}
1489
1490static Standard_Integer getDimType (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1491{
1492 if (argc < 3) {
586db386 1493 di<<"Use: XGetDimensionType Doc Dim_Label\n";
9ebaae37 1494 return 1;
1495 }
1496 Handle(TDocStd_Document) Doc;
1497 DDocStd::GetDocument(argv[1], Doc);
586db386 1498 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1499 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1500 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1501
1502 TDF_Label aLabel;
1503 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1504 if ( aLabel.IsNull() )
1505 {
1506 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1507 return 1;
1508 }
1509 Handle(XCAFDoc_Dimension) aDimension;
1510 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
1511 {
1512 switch(aDimension->GetObject()->GetType()){
1513 case 0 : di<<"type is absent"; break;
1514 case 1 : di<<"Location_CurvedDistance"; break;
1515 case 2 : di<<"Location_LinearDistance"; break;
1516 case 3 : di<<"Location_LinearDistance_FromCenterToOuter"; break;
1517 case 4 : di<<"Location_LinearDistance_FromCenterToInner"; break;
1518 case 5 : di<<"Location_LinearDistance_FromOuterToCenter"; break;
1519 case 6 : di<<"Location_LinearDistance_FromOuterToOuter"; break;
1520 case 7 : di<<"Location_LinearDistance_FromOuterToInner"; break;
1521 case 8 : di<<"Location_LinearDistance_FromInnerToCenter"; break;
1522 case 9 : di<<"Location_LinearDistance_FromInnerToOuter"; break;
1523 case 10 : di<<"Location_LinearDistance_FromInnerToInner"; break;
1524 case 11 : di<<"Location_Angular"; break;
1525 case 12 : di<<"Location_Oriented"; break;
1526 case 13 : di<<"Location_WithPath"; break;
1527 case 14 : di<<"Size_CurveLength"; break;
1528 case 15 : di<<"Size_Diameter"; break;
1529 case 16 : di<<"Size_SphericalDiameter"; break;
1530 case 17 : di<<"Size_Radius"; break;
1531 case 18 : di<<"Size_SphericalRadius"; break;
1532 case 19 : di<<"Size_ToroidalMinorDiameter"; break;
1533 case 20 : di<<"Size_ToroidalMajorDiameter"; break;
1534 case 21 : di<<"Size_ToroidalMinorRadius"; break;
1535 case 22 : di<<"Size_ToroidalMajorRadius"; break;
1536 case 23 : di<<"Size_ToroidalHighMajorDiameter"; break;
1537 case 24 : di<<"Size_ToroidalLowMajorDiameter"; break;
1538 case 25 : di<<"Size_ToroidalHighMajorRadius"; break;
1539 case 26 : di<<"Size_ToroidalLowMajorRadius"; break;
1540 case 27 : di<<"Size_Thickness"; break;
1541 case 28 : di<<"Size_Angular"; break;
1542 case 29 : di<<"Size_WithPath"; break;
1543 default : break;
1544 }
1545 }
1546 return 0;
1547}
1548
1549static Standard_Integer setDimVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1550{
1551 if (argc < 4) {
586db386 1552 di<<"Use: XSetDimensionValue Doc Dim_Label val\n";
9ebaae37 1553 return 1;
1554 }
1555 Handle(TDocStd_Document) Doc;
1556 DDocStd::GetDocument(argv[1], Doc);
586db386 1557 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1558 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1559 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1560
1561 TDF_Label aLabel;
1562 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1563 if ( aLabel.IsNull() )
1564 {
1565 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1566 return 1;
1567 }
1568 Handle(XCAFDoc_Dimension) aDimension;
1569 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
1570 {
1571 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
1572 anObj->SetValue(Draw::Atof(argv[3]));
1573 aDimension->SetObject(anObj);
1574 }
1575 return 0;
1576}
1577
1578static Standard_Integer getDimVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1579{
1580 if (argc < 3) {
586db386 1581 di<<"Use: XGetDimensionValue Doc Dim_Label\n";
9ebaae37 1582 return 1;
1583 }
1584 Handle(TDocStd_Document) Doc;
1585 DDocStd::GetDocument(argv[1], Doc);
586db386 1586 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1587 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1588 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1589
1590 TDF_Label aLabel;
1591 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1592 if ( aLabel.IsNull() )
1593 {
1594 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1595 return 1;
1596 }
1597 Handle(XCAFDoc_Dimension) aDimension;
1598 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
1599 {
1600 di << aDimension->GetObject()->GetValue();
1601 }
1602 return 0;
1603}
1604
1605static Standard_Integer setDimQalif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1606{
1607 if (argc < 4) {
586db386 1608 di<<"Use: XSetDimensionQualifier Doc Dim_Label val\n";
9ebaae37 1609 return 1;
1610 }
1611 Handle(TDocStd_Document) Doc;
1612 DDocStd::GetDocument(argv[1], Doc);
586db386 1613 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1614 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1615 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1616
1617 TDF_Label aLabel;
1618 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1619 if ( aLabel.IsNull() )
1620 {
1621 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1622 return 1;
1623 }
1624 Handle(XCAFDoc_Dimension) aDimension;
1625 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
1626 {
1627 if(Draw::Atoi(argv[3]) > -1 && Draw::Atoi(argv[3]) < 4)
1628 {
1629 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
1630 anObj->SetQualifier((XCAFDimTolObjects_DimensionQualifier)Draw::Atoi(argv[3]));
1631 aDimension->SetObject(anObj);
1632 }
1633 }
1634 return 0;
1635}
1636
1637static Standard_Integer getDimQalif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1638{
1639 if (argc < 3) {
586db386 1640 di<<"Use: XGetDimensionQualifier Doc Dim_Label\n";
9ebaae37 1641 return 1;
1642 }
1643 Handle(TDocStd_Document) Doc;
1644 DDocStd::GetDocument(argv[1], Doc);
586db386 1645 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1646 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1647 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1648
1649 TDF_Label aLabel;
1650 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1651 if ( aLabel.IsNull() )
1652 {
1653 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1654 return 1;
1655 }
1656 Handle(XCAFDoc_Dimension) aDimension;
1657 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
1658 {
1659
1660 switch(aDimension->GetObject()->GetQualifier()){
1661 case 0 : di<<"type is absent"; break;
1662 case 1 : di<<"Min"; break;
1663 case 2 : di<<"Max"; break;
1664 case 3 : di<<"Avg"; break;
1665 default : break;
1666 }
1667 }
1668 return 0;
1669}
1670
1671static Standard_Integer setDimRange (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1672{
1673 if (argc < 5) {
586db386 1674 di<<"Use: XSetDimensionRange Doc Dim_Label low_val up_val\n";
9ebaae37 1675 return 1;
1676 }
1677 Handle(TDocStd_Document) Doc;
1678 DDocStd::GetDocument(argv[1], Doc);
586db386 1679 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1680 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1681 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1682
1683 TDF_Label aLabel;
1684 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1685 if ( aLabel.IsNull() )
1686 {
1687 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1688 return 1;
1689 }
1690 Handle(XCAFDoc_Dimension) aDimension;
1691 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
1692 {
1693 if(Draw::Atof(argv[3]) < Draw::Atof(argv[4]))
1694 {
1695 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
1696 anObj->SetLowerBound(Draw::Atof(argv[3]));
1697 anObj->SetUpperBound(Draw::Atof(argv[4]));
1698 aDimension->SetObject(anObj);
1699 }
1700 }
1701 return 0;
1702}
1703
1704static Standard_Integer getDimRange (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1705{
1706 if (argc < 3) {
586db386 1707 di<<"Use: XGetDimensionRange Doc Dim_Label\n";
9ebaae37 1708 return 1;
1709 }
1710 Handle(TDocStd_Document) Doc;
1711 DDocStd::GetDocument(argv[1], Doc);
586db386 1712 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1713 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1714 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1715
1716 TDF_Label aLabel;
1717 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1718 if ( aLabel.IsNull() )
1719 {
1720 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1721 return 1;
1722 }
1723 Handle(XCAFDoc_Dimension) aDimension;
1724 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
1725 {
1726 di << "lower " << aDimension->GetObject()->GetLowerBound();
1727 di << " upper " << aDimension->GetObject()->GetUpperBound();
1728 }
1729 return 0;
1730}
1731
1732static Standard_Integer setDimPlusMinusTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1733{
1734 if (argc < 5) {
586db386 1735 di<<"Use: XSetDimensionPlusMinusTol Doc Dim_Label low_val up_val\n";
9ebaae37 1736 return 1;
1737 }
1738 Handle(TDocStd_Document) Doc;
1739 DDocStd::GetDocument(argv[1], Doc);
586db386 1740 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1741 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1742 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1743
1744 TDF_Label aLabel;
1745 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1746 if ( aLabel.IsNull() )
1747 {
1748 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1749 return 1;
1750 }
1751 Handle(XCAFDoc_Dimension) aDimension;
1752 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
1753 {
1754 if(Draw::Atof(argv[3]) < Draw::Atof(argv[4]))
1755 {
1756 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
1757 anObj->SetLowerTolValue(Draw::Atof(argv[3]));
1758 anObj->SetUpperTolValue(Draw::Atof(argv[4]));
1759 aDimension->SetObject(anObj);
1760 }
1761 }
1762 return 0;
1763}
1764
1765static Standard_Integer getDimPlusMinusTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1766{
1767 if (argc < 3) {
586db386 1768 di<<"Use: XGetDimensionPlusMinusTol Doc Dim_Label\n";
9ebaae37 1769 return 1;
1770 }
1771 Handle(TDocStd_Document) Doc;
1772 DDocStd::GetDocument(argv[1], Doc);
586db386 1773 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1774 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1775 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1776
1777 TDF_Label aLabel;
1778 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1779 if ( aLabel.IsNull() )
1780 {
1781 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1782 return 1;
1783 }
1784 Handle(XCAFDoc_Dimension) aDimension;
1785 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
1786 {
1787 di << "lower " << aDimension->GetObject()->GetLowerTolValue();
1788 di << " upper " << aDimension->GetObject()->GetUpperTolValue();
1789 }
1790 return 0;
1791}
1792
1793static Standard_Integer setDimClassTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1794{
1795 if (argc < 6) {
586db386 1796 di<<"Use: XSetDimensionClassOfTol Doc Dim_Label ishole[1/0] formVar grade\n";
9ebaae37 1797 return 1;
1798 }
1799 Handle(TDocStd_Document) Doc;
1800 DDocStd::GetDocument(argv[1], Doc);
586db386 1801 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1802 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1803 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1804
1805 TDF_Label aLabel;
1806 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1807 if ( aLabel.IsNull() )
1808 {
1809 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1810 return 1;
1811 }
1812 Handle(XCAFDoc_Dimension) aDimension;
1813 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
1814 {
1815 if(Draw::Atoi(argv[4]) > 0 && Draw::Atoi(argv[4]) < 29 && Draw::Atoi(argv[5]) > -1 && Draw::Atoi(argv[5]) < 20)
1816 {
1817 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
1818 anObj->SetClassOfTolerance((Draw::Atoi(argv[3]) != 0), (XCAFDimTolObjects_DimensionFormVariance)Draw::Atoi(argv[4]), (XCAFDimTolObjects_DimensionGrade)Draw::Atoi(argv[5]));
1819 aDimension->SetObject(anObj);
1820 }
1821 }
1822 return 0;
1823}
1824
1825static Standard_Integer getDimClassTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1826{
1827 if (argc < 3) {
586db386 1828 di<<"Use: XGetDimensionClassOfTol Doc Dim_Label\n";
9ebaae37 1829 return 1;
1830 }
1831 Handle(TDocStd_Document) Doc;
1832 DDocStd::GetDocument(argv[1], Doc);
586db386 1833 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1834 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1835 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1836
1837 TDF_Label aLabel;
1838 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1839 if ( aLabel.IsNull() )
1840 {
1841 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1842 return 1;
1843 }
1844 Handle(XCAFDoc_Dimension) aDimension;
1845 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
1846 {
1847 Standard_Boolean h;
1848 XCAFDimTolObjects_DimensionFormVariance f;
1849 XCAFDimTolObjects_DimensionGrade g;
1850 if(aDimension->GetObject()->GetClassOfTolerance(h ,f, g))
1851 {
1852 if(h)
1853 {
1854 switch(f){
1855 case 1 : di<<"a";break;
1856 case 2 : di<<"b";break;
1857 case 3 : di<<"c";break;
1858 case 4 : di<<"cd";break;
1859 case 5 : di<<"d";break;
1860 case 6 : di<<"e";break;
1861 case 7 : di<<"ef";break;
1862 case 8 : di<<"f";break;
1863 case 9 : di<<"fg";break;
1864 case 10 : di<<"g";break;
1865 case 11 : di<<"h";break;
1866 case 12 : di<<"js";break;
1867 case 13 : di<<"j";break;
1868 case 14 : di<<"k";break;
1869 case 15 : di<<"m";break;
1870 case 16 : di<<"n";break;
1871 case 17 : di<<"p";break;
1872 case 18 : di<<"r";break;
1873 case 19 : di<<"s";break;
1874 case 20 : di<<"t";break;
1875 case 21 : di<<"u";break;
1876 case 22 : di<<"v";break;
1877 case 23 : di<<"x";break;
1878 case 24 : di<<"y";break;
1879 case 25 : di<<"z";break;
1880 case 26 : di<<"a";break;
1881 case 27 : di<<"zb";break;
1882 case 28 : di<<"zc";break;
1883 default : break;
1884 }
1885 }
1886 else
1887 {
1888 switch(f){
1889 case 1 : di<<"A";break;
1890 case 2 : di<<"B";break;
1891 case 3 : di<<"C";break;
1892 case 4 : di<<"CD";break;
1893 case 5 : di<<"D";break;
1894 case 6 : di<<"E";break;
1895 case 7 : di<<"EF";break;
1896 case 8 : di<<"F";break;
1897 case 9 : di<<"FG";break;
1898 case 10 : di<<"G";break;
1899 case 11 : di<<"H";break;
1900 case 12 : di<<"JS";break;
1901 case 13 : di<<"J";break;
1902 case 14 : di<<"K";break;
1903 case 15 : di<<"M";break;
1904 case 16 : di<<"N";break;
1905 case 17 : di<<"P";break;
1906 case 18 : di<<"R";break;
1907 case 19 : di<<"S";break;
1908 case 20 : di<<"T";break;
1909 case 21 : di<<"U";break;
1910 case 22 : di<<"V";break;
1911 case 23 : di<<"X";break;
1912 case 24 : di<<"Y";break;
1913 case 25 : di<<"Z";break;
1914 case 26 : di<<"ZA";break;
1915 case 27 : di<<"ZB";break;
1916 case 28 : di<<"ZC";break;
1917 default : break;
1918 }
1919 }
1920 switch(g){
1921 case 0 : di<<"01"; break;
1922 case 1 : di<<"0"; break;
1923 case 2 : di<<"1"; break;
1924 case 3 : di<<"2"; break;
1925 case 4 : di<<"3"; break;
1926 case 5 : di<<"4"; break;
1927 case 6 : di<<"5"; break;
1928 case 7 : di<<"6"; break;
1929 case 8 : di<<"7"; break;
1930 case 9 : di<<"8"; break;
1931 case 10 : di<<"9"; break;
1932 case 11 : di<<"10"; break;
1933 case 12 : di<<"11"; break;
1934 case 13 : di<<"12"; break;
1935 case 14 : di<<"13"; break;
1936 case 15 : di<<"14"; break;
1937 case 16 : di<<"15"; break;
1938 case 17 : di<<"16"; break;
1939 case 18 : di<<"17"; break;
1940 case 19 : di<<"18"; break;
1941 default : break;
1942 }
1943 }
1944 }
1945 return 0;
1946}
1947
1948static Standard_Integer setDimNbOfDecimalPlaces (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1949{
1950 if (argc < 5) {
586db386 1951 di<<"Use: XSetDimensionNbOfDecimalPlaces Doc Dim_Label l_val r_val\n";
9ebaae37 1952 return 1;
1953 }
1954 Handle(TDocStd_Document) Doc;
1955 DDocStd::GetDocument(argv[1], Doc);
586db386 1956 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1957 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1958 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1959
1960 TDF_Label aLabel;
1961 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1962 if ( aLabel.IsNull() )
1963 {
1964 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1965 return 1;
1966 }
1967 Handle(XCAFDoc_Dimension) aDimension;
1968 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
1969 {
1970 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
1971 anObj->SetNbOfDecimalPlaces(Draw::Atoi(argv[3]), Draw::Atoi(argv[4]));
1972 aDimension->SetObject(anObj);
1973 }
1974 return 0;
1975}
1976
1977static Standard_Integer getDimNbOfDecimalPlaces (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1978{
1979 if (argc < 3) {
586db386 1980 di<<"Use: XGetDimensionNbOfDecimalPlaces Doc Dim_Label\n";
9ebaae37 1981 return 1;
1982 }
1983 Handle(TDocStd_Document) Doc;
1984 DDocStd::GetDocument(argv[1], Doc);
586db386 1985 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 1986 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
1987 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
1988
1989 TDF_Label aLabel;
1990 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
1991 if ( aLabel.IsNull() )
1992 {
1993 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
1994 return 1;
1995 }
1996 Handle(XCAFDoc_Dimension) aDimension;
1997 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
1998 {
1999 Standard_Integer l, r;
2000 aDimension->GetObject()->GetNbOfDecimalPlaces(l,r);
2001 di << l << "." << r;
2002 }
2003 return 0;
2004}
2005
2006static Standard_Integer addDimModifier (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2007{
2008 if (argc < 4) {
586db386 2009 di<<"Use: XAddDimensionModifiers Doc Dim_Label mod1 mod2 ...\n";
9ebaae37 2010 return 1;
2011 }
2012 Handle(TDocStd_Document) Doc;
2013 DDocStd::GetDocument(argv[1], Doc);
586db386 2014 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 2015 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
2016 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
2017
2018 TDF_Label aLabel;
2019 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2020 if ( aLabel.IsNull() )
2021 {
2022 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
2023 return 1;
2024 }
2025 Handle(XCAFDoc_Dimension) aDimension;
2026 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
2027 {
2028 for(Standard_Integer i = 3; i < argc; i++)
2029 {
2030 if(Draw::Atoi(argv[i]) > -1 && Draw::Atoi(argv[i]) < 24)
2031 {
2032 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
2033 anObj->AddModifier((XCAFDimTolObjects_DimensionModif)Draw::Atoi(argv[i]));
2034 aDimension->SetObject(anObj);
2035 }
2036 }
2037 }
2038 return 0;
2039}
2040
2041static Standard_Integer getDimModifier (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2042{
2043 if (argc < 3) {
586db386 2044 di<<"Use: XGetDimensionModifiers Doc Dim_Label\n";
9ebaae37 2045 return 1;
2046 }
2047 Handle(TDocStd_Document) Doc;
2048 DDocStd::GetDocument(argv[1], Doc);
586db386 2049 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 2050 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
2051 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
2052
2053 TDF_Label aLabel;
2054 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2055 if ( aLabel.IsNull() )
2056 {
2057 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
2058 return 1;
2059 }
2060 Handle(XCAFDoc_Dimension) aDimension;
2061 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
2062 {
2063 XCAFDimTolObjects_DimensionModifiersSequence aS = aDimension->GetObject()->GetModifiers();
2064 for(Standard_Integer i = 1; i <= aS.Length(); i++)
2065 {
2066 if (i > 1) di<<", ";
2067 switch(aS.Value(i)){
2068 case 0 : di<<"ControlledRadius"; break;
2069 case 1 : di<<"Square"; break;
2070 case 2 : di<<"StatisticalTolerance"; break;
2071 case 3 : di<<"ContinuousFeature"; break;
2072 case 4 : di<<"TwoPointSize"; break;
2073 case 5 : di<<"LocalSizeDefinedBySphere"; break;
2074 case 6 : di<<"LeastSquaresAssociationCriterion"; break;
2075 case 7 : di<<"MaximumInscribedAssociation"; break;
2076 case 8 : di<<"MinimumCircumscribedAssociation"; break;
2077 case 9 : di<<"CircumferenceDiameter"; break;
2078 case 10 : di<<"AreaDiameter"; break;
2079 case 11 : di<<"VolumeDiameter"; break;
2080 case 12 : di<<"MaximumSize"; break;
2081 case 13 : di<<"MinimumSize"; break;
2082 case 14 : di<<"AverageSize"; break;
2083 case 15 : di<<"MedianSize"; break;
2084 case 16 : di<<"MidRangeSize"; break;
2085 case 17 : di<<"RangeOfSizes"; break;
2086 case 18 : di<<"AnyRestrictedPortionOfFeature"; break;
2087 case 19 : di<<"AnyCrossSection"; break;
2088 case 20 : di<<"SpecificFixedCrossSection"; break;
2089 case 21 : di<<"CommonTolerance"; break;
2090 case 22 : di<<"FreeStateCondition"; break;
2091 case 23 : di<<"Between"; break;
2092 default : break;
2093 }
2094 }
2095 }
2096 return 0;
2097}
2098
2099static Standard_Integer addDimPath (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2100{
2101 if (argc < 4) {
586db386 2102 di<<"Use: XSetDimensionPath Doc Dim_Label path(edge)\n";
9ebaae37 2103 return 1;
2104 }
2105 Handle(TDocStd_Document) Doc;
2106 DDocStd::GetDocument(argv[1], Doc);
586db386 2107 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 2108 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
2109 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
2110
2111 TDF_Label aLabel;
2112 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2113 if ( aLabel.IsNull() )
2114 {
2115 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
2116 return 1;
2117 }
2118 Handle(XCAFDoc_Dimension) aDimension;
2119 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
2120 {
2121 TopoDS_Edge aE = TopoDS::Edge(DBRep::Get(argv[3],TopAbs_EDGE));
2122 if(!aE.IsNull())
2123 {
2124 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
2125 anObj->SetPath(aE);
2126 aDimension->SetObject(anObj);
2127 }
2128 }
2129 return 0;
2130}
2131
2132static Standard_Integer addDimPoints (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2133{
b7b2f85a 2134 if (argc < 4) {
2135 di<<"Use: XSetDimensionPoints Doc Dim_Label v1 [v2]\n";
9ebaae37 2136 return 1;
2137 }
2138 Handle(TDocStd_Document) Doc;
2139 DDocStd::GetDocument(argv[1], Doc);
586db386 2140 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 2141 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
2142 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
2143
2144 TDF_Label aLabel;
2145 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2146 if ( aLabel.IsNull() )
2147 {
2148 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
2149 return 1;
2150 }
2151 Handle(XCAFDoc_Dimension) aDimension;
2152 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
2153 {
b7b2f85a 2154 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
2155
9ebaae37 2156 TopoDS_Vertex aV1 = TopoDS::Vertex(DBRep::Get(argv[3],TopAbs_VERTEX));
b7b2f85a 2157 if(!aV1.IsNull()) {
2158 anObj->SetPoint(BRep_Tool::Pnt(aV1));
9ebaae37 2159 }
b7b2f85a 2160 if (argc == 5) {
2161 TopoDS_Vertex aV2 = TopoDS::Vertex(DBRep::Get(argv[4],TopAbs_VERTEX));
2162 if(!aV2.IsNull()) {
2163 anObj->SetPoint2(BRep_Tool::Pnt(aV2));
2164 }
2165 }
2166 aDimension->SetObject(anObj);
9ebaae37 2167 }
2168 return 0;
2169}
2170
2171static Standard_Integer getDimPoints (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2172{
2173 if (argc < 3) {
586db386 2174 di<<"Use: XGetDimensionPoints Doc Dim_Label\n";
9ebaae37 2175 return 1;
2176 }
2177 Handle(TDocStd_Document) Doc;
2178 DDocStd::GetDocument(argv[1], Doc);
586db386 2179 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 2180 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
2181 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
2182
2183 TDF_Label aLabel;
2184 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2185 if ( aLabel.IsNull() )
2186 {
2187 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
2188 return 1;
2189 }
2190 Handle(XCAFDoc_Dimension) aDimension;
2191 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
2192 {
b7b2f85a 2193 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
2194 if(anObj->HasPoint()) {
2195 di << anObj->GetPoint().X() << ";" << anObj->GetPoint().Y() << ";" << anObj->GetPoint().Z() << " ";
2196 }
2197 if(anObj->HasPoint2()) {
2198 di << anObj->GetPoint2().X() << ";" << anObj->GetPoint2().Y() << ";" << anObj->GetPoint2().Z();
9ebaae37 2199 }
2200 }
2201 return 0;
2202}
2203
2204static Standard_Integer addDimDir (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2205{
2206 if (argc < 6) {
586db386 2207 di<<"Use: XSetDimensionDir Doc Dim_Label x y z\n";
9ebaae37 2208 return 1;
2209 }
2210 Handle(TDocStd_Document) Doc;
2211 DDocStd::GetDocument(argv[1], Doc);
586db386 2212 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 2213 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
2214 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
2215
2216 TDF_Label aLabel;
2217 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2218 if ( aLabel.IsNull() )
2219 {
2220 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
2221 return 1;
2222 }
2223 Handle(XCAFDoc_Dimension) aDimension;
2224 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
2225 {
2226 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
2227 anObj->SetDirection(gp_Dir(Draw::Atof(argv[3]),Draw::Atof(argv[4]),Draw::Atof(argv[5])));
2228 aDimension->SetObject(anObj);
2229 }
2230 return 0;
2231}
2232
2233static Standard_Integer getDimDir (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2234{
2235 if (argc < 3) {
7644c7f4 2236 di<<"Use: XGetDimensionDir Doc Dim_Label\n";
9ebaae37 2237 return 1;
2238 }
2239 Handle(TDocStd_Document) Doc;
2240 DDocStd::GetDocument(argv[1], Doc);
586db386 2241 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
9ebaae37 2242 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
2243 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
2244
2245 TDF_Label aLabel;
2246 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2247 if ( aLabel.IsNull() )
2248 {
2249 di<<"Dimension "<<argv[2]<<" is absent in "<<argv[1]<<"\n";
2250 return 1;
2251 }
2252 Handle(XCAFDoc_Dimension) aDimension;
2253 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
2254 {
2255 gp_Dir dir;
2256 if(aDimension->GetObject()->GetDirection(dir))
2257 {
2258 di << dir.X()<< ";"<< dir.Y()<< ";"<<dir.Z();
2259 }
2260 }
2261 return 0;
2262}
2263
7644c7f4 2264static Standard_Integer addDimDescr (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2265{
2266 if (argc < 4) {
2267 di<<"Use: XAddDimensionDescr Doc Dim_Label Description [DescriptionName]\n";
2268 return 1;
2269 }
2270 Handle(TDocStd_Document) Doc;
2271 DDocStd::GetDocument(argv[1], Doc);
2272 if ( Doc.IsNull() ) {
2273 di << argv[1] << " is not a document\n";
2274 return 1;
2275 }
2276
2277 TDF_Label aLabel;
2278 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2279 if ( aLabel.IsNull() )
2280 {
2281 di << "Dimension "<< argv[2] << " is absent in " << argv[1] << "\n";
2282 return 1;
2283 }
2284 Handle(XCAFDoc_Dimension) aDimension;
2285 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
2286 {
2287 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
2288 Handle(TCollection_HAsciiString) aDescription = new TCollection_HAsciiString(argv[3]);
2289 Handle(TCollection_HAsciiString) aDescrName = (argc == 4) ? new TCollection_HAsciiString()
2290 : new TCollection_HAsciiString(argv[4]);
2291 anObj->AddDescription(aDescription, aDescrName);
2292 aDimension->SetObject(anObj);
2293 }
2294 return 0;
2295}
2296
2297static Standard_Integer getDimDescr (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2298{
2299 if (argc < 3) {
2300 di << "Use: XGetDimensionDescr Doc Dim_Label\n";
2301 return 1;
2302 }
2303 Handle(TDocStd_Document) Doc;
2304 DDocStd::GetDocument(argv[1], Doc);
2305 if ( Doc.IsNull() ) {
2306 di << argv[1] << " is not a document\n";
2307 return 1;
2308 }
2309
2310 TDF_Label aLabel;
2311 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2312 if ( aLabel.IsNull() )
2313 {
2314 di << "Dimension "<< argv[2] << " is absent in " << argv[1] << "\n";
2315 return 1;
2316 }
2317 Handle(XCAFDoc_Dimension) aDimension;
2318 if(aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
2319 {
2320 Handle(XCAFDimTolObjects_DimensionObject) anObject = aDimension->GetObject();
2321 for (Standard_Integer i = 0; i < anObject->NbDescriptions(); i++) {
2322 Handle(TCollection_HAsciiString) aDescription = anObject->GetDescription(i);
2323 Handle(TCollection_HAsciiString) aDescrName = anObject->GetDescriptionName(i);
2324 di << "name: " << aDescrName->ToCString() << " description: " << aDescription->ToCString() << "\n";
2325 }
2326 }
2327 return 0;
2328}
2329
f0bf70e8 2330static Standard_Integer addGDTPosition (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2331{
2332 if (argc < 12) {
2333 di << "Use: XSetGDTPosition Doc GDT_Label loc_x loc_y loc_z normal_x normal_y normal_z xdir_x xdir_y xdir_z\n";
2334 return 1;
2335 }
2336 Handle(TDocStd_Document) Doc;
2337 DDocStd::GetDocument(argv[1], Doc);
2338 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
2339
2340 TDF_Label aLabel;
2341 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2342 if ( aLabel.IsNull() )
2343 {
2344 di << "GDT " << argv[2] << " is absent in " << argv[1] << "\n";
2345 return 1;
2346 }
2347
2348 gp_Pnt aPoint(Draw::Atof(argv[3]), Draw::Atof(argv[4]), Draw::Atof(argv[5]));
2349 gp_Dir aNormal(Draw::Atof(argv[6]), Draw::Atof(argv[7]), Draw::Atof(argv[8]));
2350 gp_Dir aDir(Draw::Atof(argv[9]), Draw::Atof(argv[10]), Draw::Atof(argv[11]));
2351 gp_Ax2 aPlane(aPoint, aNormal, aDir);
2352 // Dimension
2353 Handle(XCAFDoc_Dimension) aDimension;
2354 if (aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
2355 {
2356 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
2357 anObj->SetPlane(aPlane);
2358 anObj->SetPointTextAttach(aPoint);
2359 aDimension->SetObject(anObj);
2360 }
2361 // Geometric Tolerance
2362 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
2363 if (aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
2364 {
2365 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
2366 anObj->SetPlane(aPlane);
2367 anObj->SetPointTextAttach(aPoint);
2368 aGeomTolerance->SetObject(anObj);
2369 }
2370 // Datum
2371 Handle(XCAFDoc_Datum) aDatum;
2372 if (aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
2373 {
2374 Handle(XCAFDimTolObjects_DatumObject) anObj = aDatum->GetObject();
2375 anObj->SetPlane(aPlane);
2376 anObj->SetPointTextAttach(aPoint);
2377 aDatum->SetObject(anObj);
2378 }
2379 return 0;
2380}
2381
2382static Standard_Integer getGDTPosition (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2383{
2384 if (argc < 3) {
2385 di << "Use: XGetGDTPosition Doc GDT_Label\n";
2386 return 1;
2387 }
2388 Handle(TDocStd_Document) Doc;
2389 DDocStd::GetDocument(argv[1], Doc);
2390 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
2391
2392 TDF_Label aLabel;
2393 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2394 if ( aLabel.IsNull() )
2395 {
2396 di << "GDT " << argv[2] << " is absent in " << argv[1] << "\n";
2397 return 1;
2398 }
2399 gp_Pnt aPoint;
2400 gp_Dir aNormal, aDir;
2401 // Dimension
2402 Handle(XCAFDoc_Dimension) aDimension;
2403 if (aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
2404 {
2405 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
2406 aPoint = anObj->GetPointTextAttach();
2407 aNormal = anObj->GetPlane().Direction();
2408 aDir = anObj->GetPlane().XDirection();
2409 }
2410 // Geometric Tolerance
2411 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
2412 if (aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
2413 {
2414 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
2415 aPoint = anObj->GetPointTextAttach();
2416 aNormal = anObj->GetPlane().Direction();
2417 aDir = anObj->GetPlane().XDirection();
2418 }
2419 // Datum
2420 Handle(XCAFDoc_Datum) aDatum;
2421 if (aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
2422 {
2423 Handle(XCAFDimTolObjects_DatumObject) anObj = aDatum->GetObject();
2424 aPoint = anObj->GetPointTextAttach();
2425 aNormal = anObj->GetPlane().Direction();
2426 aDir = anObj->GetPlane().XDirection();
2427 }
2428
2429 di << "position: " << aPoint.X() << " " << aPoint.Y() << " " << aPoint.Z() << "\n";
2430 di << "normal: " << aNormal.X() << " " << aNormal.Y() << " " << aNormal.Z() << "\n";
2431 di << "x_direction: " << aDir.X() << " " << aDir.Y() << " " << aDir.Z() << "\n";
2432 return 0;
2433}
2434
2435static Standard_Integer addGDTPresentation (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2436{
2437 if (argc < 5) {
2438 di << "Use: XSetGDTPresentation Doc GDT_Label Shape Name\n";
2439 return 1;
2440 }
2441 Handle(TDocStd_Document) Doc;
2442 DDocStd::GetDocument(argv[1], Doc);
2443 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
2444
2445 TDF_Label aLabel;
2446 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2447 if ( aLabel.IsNull() )
2448 {
2449 di << "GDT " << argv[2] << " is absent in " << argv[1] << "\n";
2450 return 1;
2451 }
2452
2453 TopoDS_Shape aPresentation= DBRep::Get(argv[3]);
2454 Handle(TCollection_HAsciiString) aName = new TCollection_HAsciiString(argv[4]);
2455 // Dimension
2456 Handle(XCAFDoc_Dimension) aDimension;
2457 if (aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
2458 {
2459 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
2460 anObj->SetPresentation(aPresentation, aName);
2461 aDimension->SetObject(anObj);
2462 }
2463 // Geometric Tolerance
2464 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
2465 if (aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
2466 {
2467 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
2468 anObj->SetPresentation(aPresentation, aName);
2469 aGeomTolerance->SetObject(anObj);
2470 }
2471 // Datum
2472 Handle(XCAFDoc_Datum) aDatum;
2473 if (aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
2474 {
2475 Handle(XCAFDimTolObjects_DatumObject) anObj = aDatum->GetObject();
2476 anObj->SetPresentation(aPresentation, aName);
2477 aDatum->SetObject(anObj);
2478 }
2479 return 0;
2480}
2481
2482static Standard_Integer getGDTPresentation (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2483{
2484 if (argc < 3) {
2485 di << "Use: XGetGDTPresentation Doc GDT_Label Shape\n";
2486 return 1;
2487 }
2488 Handle(TDocStd_Document) Doc;
2489 DDocStd::GetDocument(argv[1], Doc);
2490 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
2491
2492 TDF_Label aLabel;
2493 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2494 if ( aLabel.IsNull() )
2495 {
2496 di << "GDT " << argv[2] << " is absent in " << argv[1] << "\n";
2497 return 1;
2498 }
2499 TopoDS_Shape aPresentation;
2500 // Dimension
2501 Handle(XCAFDoc_Dimension) aDimension;
2502 if (aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
2503 {
2504 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
2505 aPresentation = anObj->GetPresentation();
2506 }
2507 // Geometric Tolerance
2508 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
2509 if (aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
2510 {
2511 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
2512 aPresentation = anObj->GetPresentation();
2513 }
2514 // Datum
2515 Handle(XCAFDoc_Datum) aDatum;
2516 if (aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
2517 {
2518 Handle(XCAFDimTolObjects_DatumObject) anObj = aDatum->GetObject();
2519 aPresentation = anObj->GetPresentation();
2520 }
2521
2522 DBRep::Set (argv[3], aPresentation);
2523 return 0;
2524}
2525
b8bf9595 2526static Standard_Integer addGDTAffectedPlane(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2527{
2528 if (argc != 5) {
2529 di << "Use: XSetGDTAffectedPlane Doc GDT_Label plane type[1 - intersection/ 2 - orientation]\n";
2530 return 1;
2531 }
2532 Handle(TDocStd_Document) Doc;
2533 DDocStd::GetDocument(argv[1], Doc);
2534 if (Doc.IsNull()) { di << argv[1] << " is not a document\n"; return 1; }
2535
2536 TDF_Label aLabel;
2537 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2538 if (aLabel.IsNull())
2539 {
2540 di << "GDT " << argv[2] << " is absent in " << argv[1] << "\n";
2541 return 1;
2542 }
2543
2544 Handle(Geom_Surface) aSurf = DrawTrSurf::GetSurface(argv[3]);
2545 Handle(Geom_Plane) aPlane = Handle(Geom_Plane)::DownCast(aSurf);
2546 if (aPlane.IsNull())
2547 {
2548 di << "Invalid plane\n";
2549 return 1;
2550 }
2551 Standard_Integer aType = Draw::Atoi(argv[4]);
2552
2553 // Geometric Tolerance
2554 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
2555 if (!aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
2556 {
2557 di << "Geometric tolerance is abcent on label" << argv[2] << "\n";
2558 return 1;
2559 }
2560
2561 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
2562 anObj->SetAffectedPlane(aPlane->Pln(), (XCAFDimTolObjects_ToleranceZoneAffectedPlane)aType);
2563 aGeomTolerance->SetObject(anObj);
2564 return 0;
2565}
2566
2567static Standard_Integer getGDTAffectedPlane(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2568{
2569 if (argc != 4) {
2570 di << "Use: XGetGDTAffectedPlane Doc GDT_Label Plane\n";
2571 return 1;
2572 }
2573 Handle(TDocStd_Document) Doc;
2574 DDocStd::GetDocument(argv[1], Doc);
2575 if (Doc.IsNull()) { di << argv[1] << " is not a document\n"; return 1; }
2576
2577 TDF_Label aLabel;
2578 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2579 if (aLabel.IsNull())
2580 {
2581 di << "GDT " << argv[2] << " is absent in " << argv[1] << "\n";
2582 return 1;
2583 }
2584
2585 // Geometric Tolerance
2586 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
2587 Handle(Geom_Plane) aPlane;
2588 if (aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
2589 {
2590 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
2591 if (anObj->GetAffectedPlaneType() == XCAFDimTolObjects_ToleranceZoneAffectedPlane_None)
2592 {
2593 di << "No affected plane\n";
2594 return 0;
2595 }
2596 gp_Pln aPln = anObj->GetAffectedPlane();
2597 aPlane = new Geom_Plane(aPln);
2598 if (anObj->GetAffectedPlaneType() == XCAFDimTolObjects_ToleranceZoneAffectedPlane_Intersection)
2599 di << "intersection plane\n";
2600 if (anObj->GetAffectedPlaneType() == XCAFDimTolObjects_ToleranceZoneAffectedPlane_Orientation)
2601 di << "orientation plane\n";
2602 DrawTrSurf::Set(argv[3], aPlane);
2603 }
2604
2605 return 0;
2606}
2607
eacdb38f 2608static Standard_Integer getGDTSemanticName(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2609{
2610 if (argc < 3) {
2611 di << "Use: XGetGDTSemanticName Doc GDT_Label\n";
2612 return 1;
2613 }
2614 Handle(TDocStd_Document) Doc;
2615 DDocStd::GetDocument(argv[1], Doc);
2616 if (Doc.IsNull()) { di << argv[1] << " is not a document\n"; return 1; }
2617
2618 TDF_Label aLabel;
2619 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2620 if (aLabel.IsNull())
2621 {
2622 di << "GDT " << argv[2] << " is absent in " << argv[1] << "\n";
2623 return 1;
2624 }
2625 Handle(TCollection_HAsciiString) aSemanticName;
2626 // Dimension
2627 Handle(XCAFDoc_Dimension) aDimension;
2628 if (aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
2629 {
2630 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
2631 aSemanticName = anObj->GetSemanticName();
2632 }
2633 // Geometric Tolerance
2634 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
2635 if (aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
2636 {
2637 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
2638 aSemanticName = anObj->GetSemanticName();
2639 }
2640 // Datum
2641 Handle(XCAFDoc_Datum) aDatum;
2642 if (aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
2643 {
2644 Handle(XCAFDimTolObjects_DatumObject) anObj = aDatum->GetObject();
2645 aSemanticName = anObj->GetSemanticName();
2646 }
2647 if (aSemanticName)
2648 {
2649 di << aSemanticName->String();
2650 }
2651 return 0;
2652}
2653
2654static Standard_Integer setGDTSemanticName(Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2655{
2656 if (argc < 3) {
2657 di << "Use: XSetGDTSemanticName Doc GDT_Label Name\n";
2658 return 1;
2659 }
2660 Handle(TDocStd_Document) Doc;
2661 DDocStd::GetDocument(argv[1], Doc);
2662 if (Doc.IsNull()) { di << argv[1] << " is not a document\n"; return 1; }
2663
2664 TDF_Label aLabel;
2665 TDF_Tool::Label(Doc->GetData(), argv[2], aLabel);
2666 if (aLabel.IsNull())
2667 {
2668 di << "GDT " << argv[2] << " is absent in " << argv[1] << "\n";
2669 return 1;
2670 }
2671 Handle(TCollection_HAsciiString) aSemanticName = new TCollection_HAsciiString(argv[3]);
2672 // Dimension
2673 Handle(XCAFDoc_Dimension) aDimension;
2674 if (aLabel.FindAttribute(XCAFDoc_Dimension::GetID(), aDimension))
2675 {
2676 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
2677 anObj->SetSemanticName(aSemanticName);
2678 aDimension->SetObject(anObj);
2679 }
2680 // Geometric Tolerance
2681 Handle(XCAFDoc_GeomTolerance) aGeomTolerance;
2682 if (aLabel.FindAttribute(XCAFDoc_GeomTolerance::GetID(), aGeomTolerance))
2683 {
2684 Handle(XCAFDimTolObjects_GeomToleranceObject) anObj = aGeomTolerance->GetObject();
2685 anObj->SetSemanticName(aSemanticName);
2686 aGeomTolerance->SetObject(anObj);
2687 }
2688 // Datum
2689 Handle(XCAFDoc_Datum) aDatum;
2690 if (aLabel.FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
2691 {
2692 Handle(XCAFDimTolObjects_DatumObject) anObj = aDatum->GetObject();
2693 anObj->SetSemanticName(aSemanticName);
2694 aDatum->SetObject(anObj);
2695 }
2696 return 0;
2697}
b8bf9595 2698
9ebaae37 2699//=======================================================================
2700//function : InitCommands
2701//purpose :
2702//=======================================================================
2703
2704void XDEDRAW_GDTs::InitCommands(Draw_Interpretor& di)
2705{
9ebaae37 2706 static Standard_Boolean initactor = Standard_False;
c48e2889 2707 if (initactor)
2708 {
2709 return;
2710 }
2711 initactor = Standard_True;
9ebaae37 2712
2713 Standard_CString g = "XDE G&DTs commands";
2714
2715 di.Add ("XDumpDGTs","XDumpDGTs Doc shape/label/all ",
2716 __FILE__, DumpDGTs, g);
2717
6595eee7 2718 di.Add ("XDumpNbDGTs","XDumpNbDGTs Doc [f (full dumping)]",
1c9d3225 2719 __FILE__, DumpNbDGTs, g);
2720
9ebaae37 2721 di.Add ("XAddDimension","XAddDimension Doc shape/label [shape/label]",
2722 __FILE__, addDim, g);
2723
2724 di.Add ("XAddGeomTolerance","XAddGeomTolerance Doc shape/label",
2725 __FILE__, addGTol, g);
2726
400af1bc 2727 di.Add ("XAddDatum","XAddDatum Doc shape1/label1 ... shapeN/labelN",
9ebaae37 2728 __FILE__, addDatum, g);
2729
2730 di.Add ("XSetDatum","XSetDatum Doc Datum_Label GeomTol_Label",
2731 __FILE__, setDatum, g);
2732
2733 di.Add ("XGetDatum","XGetDatum Doc GeomTol_Label/Shape_Label",
2734 __FILE__, getDatum, g);
2735
2736 di.Add ("XAddDatumModifier","XAddDatumModifier Doc Datum_Label mod1 mod2 ...\n"
2737 "Values:"
2738 "\n 0 AnyCrossSection"
2739 "\n 1 Any_LongitudinalSection"
2740 "\n 2 Basic"
2741 "\n 3 ContactingFeature"
2742 "\n 4 DegreeOfFreedomConstraintU"
2743 "\n 5 DegreeOfFreedomConstraintV"
2744 "\n 6 DegreeOfFreedomConstraintW"
2745 "\n 7 DegreeOfFreedomConstraintX"
2746 "\n 8 DegreeOfFreedomConstraintY"
2747 "\n 9 DegreeOfFreedomConstraintZ"
2748 "\n 10 DistanceVariable"
2749 "\n 11 FreeState"
2750 "\n 12 LeastMaterialRequirement"
2751 "\n 13 Line"
2752 "\n 14 MajorDiameter"
2753 "\n 15 MaximumMaterialRequirement"
2754 "\n 16 MinorDiameter"
2755 "\n 17 Orientation"
2756 "\n 18 PitchDiameter"
2757 "\n 19 Plane"
2758 "\n 20 Point"
2759 "\n 21 Translation",
2760 __FILE__, addDatumModif, g);
2761
2762 di.Add ("XGetDatumModifiers","XGetDatumModifiers Doc Datum_Label",
2763 __FILE__, getDatumModif, g);
2764
2765 di.Add ("XSetDatumName","XSetDatumName Doc Datum_Label name",
2766 __FILE__, setDatumName, g);
2767
2768 di.Add ("XGetDatumName","XGetDatumName Doc Datum_Label",
2769 __FILE__, getDatumName, g);
2770
c1070321 2771 di.Add ("XSetDatumPosition","XSetDatumPosition Doc Datum_Label position[1-3]"
2772 "Set datum position number in geometric tolerance datum system",
2773 __FILE__, setDatumPosition, g);
2774
2775 di.Add ("XGetDatumPosition","XGetDatumPosition Doc Datum_Label",
2776 __FILE__, getDatumPosition, g);
2777
9ebaae37 2778 di.Add ("XSetTypeOfTolerance","XSetTypeOfTolerance Doc GTol_Label type"
2779 "Values:\n"
2780 "\t 0 type is absent\n"
2781 "\t 1 Angularity\n"
2782 "\t 2 CircularRunout\n"
2783 "\t 3 CircularityOrRoundness\n"
2784 "\t 4 Coaxiality\n"
2785 "\t 5 Concentricity\n"
2786 "\t 6 Cylindricity\n"
2787 "\t 7 Flatness\n"
2788 "\t 8 Parallelism\n"
2789 "\t 9 Perpendicularity\n"
2790 "\t 10 Position\n"
2791 "\t 11 ProfileOfLine\n"
2792 "\t 12 ProfileOfSurface\n"
2793 "\t 13 Straightness\n"
2794 "\t 14 Symmetry\n"
2795 "\t 15 TotalRunout\n",
2796 __FILE__, setTypeOfTol, g);
2797
2798 di.Add ("XGetTypeOfTolerance","XGetTypeOfTolerance Doc GTol_Label",
2799 __FILE__, getTypeOfTol, g);
2800
2801 di.Add ("XSetTypeOfToleranceValue","XSetTypeOfToleranceValue Doc GTol_Label type"
2802 "Values:"
2803 "\n 0 none"
2804 "\n 1 Diameter"
2805 "\n 2 SphericalDiameter",
2806 __FILE__, setTypeOfTolVal, g);
2807
2808 di.Add ("XGetTypeOfToleranceValue","XGetTypeOfToleranceValue Doc GTol_Label",
2809 __FILE__, getTypeOfTolVal, g);
2810
2811 di.Add ("XSetToleranceValue","XSetToleranceValue Doc GTol_Label value",
2812 __FILE__, setTolVal, g);
2813
2814 di.Add ("XGetToleranceValue","XGetToleranceValue Doc GTol_Label",
2815 __FILE__, getTolVal, g);
2816
2817 di.Add ("XSetTolMaterialReq","XSetTolMaterialReq Doc GTol_Label mod"
2818 "Values:"
2819 "\n 0 none"
2820 "\n 1 M"
2821 "\n 2 L",
2822 __FILE__, setMatReq, g);
2823
2824 di.Add ("XGetTolMaterialReq","XGetTolMaterialReq Doc GTol_Label",
2825 __FILE__, getMatReq, g);
2826
2827 di.Add ("XSetTolZoneMod","XSetTolZoneMod Doc GTol_Label mod"
2828 "Values:"
2829 "\n 0 none"
2830 "\n 1 P"
2831 "\n 2 NonUniform",
2832 __FILE__, setZoneMod, g);
2833
2834 di.Add ("XGetTolZoneMod","XGetTolZoneMod Doc GTol_Label",
2835 __FILE__, getZoneMod, g);
2836
2837 di.Add ("XSetTolZoneModValue","XSetTolZoneModValue Doc GTol_Label val",
2838 __FILE__, setZoneModVal, g);
2839
2840 di.Add ("XGetTolZoneModValue","XGetTolZoneModValue Doc GTol_Label",
2841 __FILE__, getZoneModVal, g);
2842
2843 di.Add ("XAddTolModifier","XAddTolModifier Doc Tol_Label mod1 mod2 ..."
2844 "Values:\n"
2845 "\t 0 Any_Cross_Section\n"
2846 "\t 1 Common_Zone\n"
2847 "\t 2 Each_Radial_Element\n"
2848 "\t 3 Free_State\n"
2849 "\t 4 Least_Material_Requirement\n"
2850 "\t 5 Line_Element\n"
2851 "\t 6 Major_Diameter\n"
2852 "\t 7 Maximum_Material_Requirement\n"
2853 "\t 8 Minor_Diameter\n"
2854 "\t 9 Not_Convex\n"
2855 "\t 10 Pitch_Diameter\n"
2856 "\t 11 Reciprocity_Requirement\n"
2857 "\t 12 Separate_Requirement\n"
2858 "\t 13 Statistical_Tolerance\n"
2859 "\t 14 Tangent_Plane\n",
2860 __FILE__, addTolModif, g);
2861
2862 di.Add ("XGetTolModifier","XGetTolModifier Doc Tol_Label",
2863 __FILE__, getTolModif, g);
2864
2865 di.Add ("XSetTolMaxValue","XSetTolMaxValue Doc Dim_Label val",
2866 __FILE__, setTolMaxVal, g);
2867
2868 di.Add ("XGetTolMaxValue","XGetTolMaxValue Doc Dim_Label val",
2869 __FILE__, getTolMaxVal, g);
2870
2871 di.Add ("XSetDimensionType","XSetDimensionType Doc Dim_Label type"
2872 "Values:"
2873 "\t 0 type is absent\n"
2874 "\t 1 Location_CurvedDistance\n"
2875 "\t 2 Location_LinearDistance\n"
2876 "\t 3 Location_LinearDistance_FromCenterToOuter\n"
2877 "\t 4 Location_LinearDistance_FromCenterToInner\n"
2878 "\t 5 Location_LinearDistance_FromOuterToCenter\n"
2879 "\t 6 Location_LinearDistance_FromOuterToOuter\n"
2880 "\t 7 Location_LinearDistance_FromOuterToInner\n"
2881 "\t 8 Location_LinearDistance_FromInnerToCenter\n"
2882 "\t 9 Location_LinearDistance_FromInnerToOuter\n"
2883 "\t 10 Location_LinearDistance_FromInnerToInner\n"
2884 "\t 11 Location_Angular\n"
2885 "\t 12 Location_Oriented\n"
2886 "\t 13 Location_WithPath\n"
2887 "\t 14 Size_CurveLength\n"
2888 "\t 15 Size_Diameter\n"
2889 "\t 16 Size_SphericalDiameter\n"
2890 "\t 17 Size_Radius\n"
2891 "\t 18 Size_SphericalRadius\n"
2892 "\t 19 Size_ToroidalMinorDiameter\n"
2893 "\t 20 Size_ToroidalMajorDiameter\n"
2894 "\t 21 Size_ToroidalMinorRadius\n"
2895 "\t 22 Size_ToroidalMajorRadius\n"
2896 "\t 23 Size_ToroidalHighMajorDiameter\n"
2897 "\t 24 Size_ToroidalLowMajorDiameter\n"
2898 "\t 25 Size_ToroidalHighMajorRadius\n"
2899 "\t 26 Size_ToroidalLowMajorRadius\n"
2900 "\t 27 Size_Thickness\n"
2901 "\t 28 Size_Angular\n"
2902 "\t 29 Size_WithPath\n",
2903 __FILE__, setDimType, g);
2904
2905 di.Add ("XGetDimensionType","XGetDimensionType Doc Dim_Label",
2906 __FILE__, getDimType, g);
2907
2908 di.Add ("XSetDimensionValue","XSetDimensionValue Doc Dim_Label val",
2909 __FILE__, setDimVal, g);
2910
2911 di.Add ("XGetDimensionValue","XGetDimensionValue Doc Dim_Label",
2912 __FILE__, getDimVal, g);
2913
2914 di.Add ("XSetDimensionQualifier","XSetDimensionQualifier Doc Dim_Label val"
2915 "Values:"
2916 "\n 0 none"
2917 "\n 1 Min"
2918 "\n 2 Max"
2919 "\n 3 Avg",
2920 __FILE__, setDimQalif, g);
2921
2922 di.Add ("XGetDimensionQualifier","XGetDimensionQualifier Doc Dim_Label",
2923 __FILE__, getDimQalif, g);
2924
2925 di.Add ("XSetDimensionRange","XSetDimensionRange Doc Dim_Label low_val up_val",
2926 __FILE__, setDimRange, g);
2927
2928 di.Add ("XGetDimensionRange","XGetDimensionRange Doc Dim_Label",
2929 __FILE__, getDimRange, g);
2930
2931 di.Add ("XSetDimensionPlusMinusTol","XSetDimensionPlusMinusTol Doc Dim_Label low_val up_val",
2932 __FILE__, setDimPlusMinusTol, g);
2933
2934 di.Add ("XGetDimensionPlusMinusTol","XGetDimensionPlusMinusTol Doc Dim_Label",
2935 __FILE__, getDimPlusMinusTol, g);
2936
2937 di.Add ("XSetDimensionClassOfTol","XSetDimensionClassOfTol Doc Dim_Label ishole[1/0] formVar grade"
2938 "Values of formVar:"
2939 "\t 1 a\n"
2940 "\t 2 b\n"
2941 "\t 3 c\n"
2942 "\t 4 cd\n"
2943 "\t 5 d\n"
2944 "\t 6 e\n"
2945 "\t 7 ef\n"
2946 "\t 8 f\n"
2947 "\t 9 fg\n"
2948 "\t10 g\n"
2949 "\t11 h\n"
2950 "\t12 js\n"
2951 "\t13 j\n"
2952 "\t14 k\n"
2953 "\t15 m\n"
2954 "\t16 n\n"
2955 "\t17 p\n"
2956 "\t18 r\n"
2957 "\t19 s\n"
2958 "\t20 t\n"
2959 "\t21 u\n"
2960 "\t22 v\n"
2961 "\t23 x\n"
2962 "\t24 y\n"
2963 "\t25 z\n"
2964 "\t26 za\n"
2965 "\t27 zb\n"
2966 "\t28 zc\n\n"
2967 "Values of grade:"
2968 "\t 0 01\n"
2969 "\t 1 0\n"
2970 "\t 2 1\n"
2971 "\t 3 2d\n"
2972 "\t 4 3\n"
2973 "\t 5 4\n"
2974 "\t 6 5f\n"
2975 "\t 7 76\n"
2976 "\t 8 7g\n"
2977 "\t 9 8\n"
2978 "\t10 9\n"
2979 "\t11 10js\n"
2980 "\t12 11j\n"
2981 "\t13 12k\n"
2982 "\t14 13m\n"
2983 "\t15 14n\n"
2984 "\t16 15p\n"
2985 "\t17 16r\n"
2986 "\t18 17s\n"
2987 "\t19 18t\n",
2988 __FILE__, setDimClassTol, g);
2989
2990 di.Add ("XGetDimensionClassOfTol","XGetDimensionClassOfTol Doc Dim_Label",
2991 __FILE__, getDimClassTol, g);
2992
2993 di.Add ("XSetDimensionNbOfDecimalPlaces","XSetDimensionNbOfDecimalPlaces Doc Dim_Label l_val r_val",
2994 __FILE__, setDimNbOfDecimalPlaces, g);
2995
2996 di.Add ("XGetDimensionNbOfDecimalPlaces","XGetDimensionNbOfDecimalPlaces Doc Dim_Label",
2997 __FILE__, getDimNbOfDecimalPlaces, g);
2998
2999 di.Add ("XAddDimensionModifiers","XAddDimensionModifiers Doc Dim_Label mod1 mod2 ..."
3000 "Values:"
3001 "\t 0 ControlledRadius\n"
3002 "\t 1 Square\n"
3003 "\t 2 StatisticalTolerance\n"
3004 "\t 3 ContinuousFeature\n"
3005 "\t 4 TwoPointSize\n"
3006 "\t 5 LocalSizeDefinedBySphere\n"
3007 "\t 6 LeastSquaresAssociationCriterion\n"
3008 "\t 7 MaximumInscribedAssociation\n"
3009 "\t 8 MinimumCircumscribedAssociation\n"
3010 "\t 9 CircumferenceDiameter\n"
3011 "\t10 AreaDiameter\n"
3012 "\t11 VolumeDiameter\n"
3013 "\t12 MaximumSize\n"
3014 "\t13 MinimumSize\n"
3015 "\t14 AverageSize\n"
3016 "\t15 MedianSize\n"
3017 "\t16 MidRangeSize\n"
3018 "\t17 RangeOfSizes\n"
3019 "\t18 AnyRestrictedPortionOfFeature\n"
3020 "\t19 AnyCrossSection\n"
3021 "\t20 SpecificFixedCrossSection\n"
3022 "\t21 CommonTolerance\n"
3023 "\t22 FreeStateCondition\n"
3024 "\t23 Between\n",
3025 __FILE__, addDimModifier, g);
3026
3027 di.Add ("XGetDimensionModifiers","XGetDimensionModifiers Doc Dim_Label",
3028 __FILE__, getDimModifier, g);
3029
3030 di.Add ("XSetDimensionPath","XSetDimensionPath Doc Dim_Label path(edge)",
3031 __FILE__, addDimPath, g);
3032
b7b2f85a 3033 di.Add ("XSetDimensionPoints","XSetDimensionPoints Doc Dim_Label v1 [v2]",
9ebaae37 3034 __FILE__, addDimPoints, g);
3035
3036 di.Add ("XGetDimensionPoints","XGetDimensionPoints Doc Dim_Label",
3037 __FILE__, getDimPoints, g);
3038
3039 di.Add ("XSetDimensionDir","XSetDimensionDir Doc Dim_Label x y z",
3040 __FILE__, addDimDir, g);
3041
3042 di.Add ("XGetDimensionDir","XGetDimensionDir Doc Dim_Label",
3043 __FILE__, getDimDir, g);
7644c7f4 3044
3045 di.Add ("XAddDimensionDescr","XAddDimensionDescr Doc Dim_Label Description [DescriptionName]\n"
3046 "Add named text description to given Dimension, if DescriptionName is missed"
3047 "name will be an empty string.",
3048 __FILE__, addDimDescr, g);
3049
3050 di.Add ("XGetDimensionDescr","XGetDimensionDescr Doc Dim_Label\n"
3051 "Return all descriptions of given Dimension.",
3052 __FILE__, getDimDescr, g);
f0bf70e8 3053
3054 di.Add ("XSetGDTPosition","XSetGDTPosition Doc GDT_Label loc_x loc_y loc_z normal_x normal_y normal_z xdir_x xdir_y xdir_z"
3055 "Set plane to display dimension parallel to and point to display text (loc)",
3056 __FILE__, addGDTPosition, g);
3057
3058 di.Add ("XGetGDTPosition","XGetGDTPosition Doc GDT_Label"
3059 "Returns text position and plane, parallel to which dimension is displayed",
3060 __FILE__, getGDTPosition, g);
3061
3062 di.Add ("XSetGDTPresentation","XSetGDTPresentation Doc GDT_Label Shape Name"
3063 "Set presentation with given name for dimension",
3064 __FILE__, addGDTPresentation, g);
3065
3066 di.Add ("XGetGDTPresentation","XGetGDTPresentation Doc GDT_Label Shape"
3067 "Returns Presentation into Shape",
3068 __FILE__, getGDTPresentation, g);
b8bf9595 3069 di.Add("XSetGDTAffectedPlane", "XSetGDTAffectedPlane Doc GDT_Label Plane type[1 - intersection/ 2 - orientation]"
3070 "Set affectedP plane for geometric tolerance",
3071 __FILE__, addGDTAffectedPlane, g);
3072
3073 di.Add("XGetGDTAffectedPlane", "XGetGDTAffectedPlane Doc GDT_Label Plane"
3074 "Returns affected plane into Plane",
3075 __FILE__, getGDTAffectedPlane, g);
eacdb38f 3076 di.Add("XGetGDTSemanticName", "XGetGDTSemanticName Doc GDT_Label"
3077 __FILE__, getGDTSemanticName, g);
3078
3079 di.Add("XSetGDTSemanticName", "XSetGDTSemanticName Doc GDT_Label Name"
3080 "Set semantic name",
3081 __FILE__, setGDTSemanticName, g);
9ebaae37 3082}