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>
21 #include <DrawTrSurf.hxx>
22 #include <Geom_Plane.hxx>
23
24 #include <STEPCAFControl_GDTProperty.hxx>
25
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
DumpDGTs(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)66 static Standard_Integer DumpDGTs (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
67 {
68 if (argc < 3) {
69 di<<"Use: XDumpDGTs Doc shape/label/all\n";
70 return 1;
71 }
72 Handle(TDocStd_Document) Doc;
73 DDocStd::GetDocument(argv[1], Doc);
74 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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);
130 di << "\n " << Entry << " Shape."<< i;
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
138 di << " Dimension."<< i << "."<< j;
139 if (argc > 3)
140 {
141 di <<" (";
142 if (aDimTolObj->GetSemanticName())
143 {
144 di << " N \"" << aDimTolObj->GetSemanticName()->String() << "\"";
145 }
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 }
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);
204 di << "\n " << Entry << " Shape."<< i;
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
212 di << " GeomTolerance."<< i << "."<< j;
213 if (argc > 3)
214 {
215 di <<" (";
216 if (aDimTolObj->GetSemanticName())
217 {
218 di << " N \"" << aDimTolObj->GetSemanticName()->String() << "\"";
219 }
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 }
257 di << " )";
258 }
259 Handle(XCAFDoc_GraphNode) aNode;
260 if(aGDTs.Value(j).FindAttribute(XCAFDoc::DatumTolRefGUID(), aNode) && aNode->NbChildren() > 0)
261 {
262 for(Standard_Integer k = 1; k<=aNode->NbChildren(); k++)
263 {
264 Handle(XCAFDoc_Datum) aDatum;
265 if(aNode->GetChild(k)->Label().FindAttribute(XCAFDoc_Datum::GetID(), aDatum))
266 {
267 Handle(XCAFDimTolObjects_DatumObject) aDatumObj = aDatum->GetObject();
268 TCollection_AsciiString anEntry;
269 TDF_Tool::Entry(aNode->GetChild(k)->Label(), anEntry);
270 di << "\n \t \t " << anEntry;
271 di << " Datum."<< i << "."<< j << "."<< k;
272 if (argc > 3)
273 {
274 di << " (";
275 if (aDimTolObj->GetSemanticName())
276 {
277 di << " N \"" << aDimTolObj->GetSemanticName()->String() << "\"";
278 }
279 XCAFDimTolObjects_DatumModifiersSequence aModif =
280 aDatumObj->GetModifiers();
281 if (!aModif.IsEmpty())
282 {
283 di << ",";
284 for (Standard_Integer iModif = aModif.Lower(); iModif <= aModif.Upper(); iModif++)
285 {
286 di << " M " << aModif.Value(iModif);
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 }
298 }
299 }
300 }
301 }
302 }
303 TDF_LabelSequence aDatumL;
304 if (aDimTolTool->GetRefDatumLabel(aLabels.Value(i), aDatumL))
305 {
306 for(Standard_Integer j = aDatumL.Lower(); j <= aDatumL.Upper(); j++)
307 {
308 Handle(XCAFDoc_Datum) aDatum;
309 if(aDatumL.Value(j).FindAttribute(XCAFDoc_Datum::GetID(), aDatum) &&
310 aDatum->GetObject()->IsDatumTarget())
311 {
312 Handle(XCAFDimTolObjects_DatumObject) aDatumObj = aDatum->GetObject();
313 if(flag)
314 {
315 TCollection_AsciiString Entry;
316 TDF_Tool::Entry(aLabels.Value(i), Entry);
317 di << "\n " << Entry << " Shape."<< i;
318 flag = Standard_False;
319 }
320 TCollection_AsciiString Entry;
321 TDF_Tool::Entry(aDatumL.First(), Entry);
322 di << "\n \t " << Entry;
323 flag = Standard_False;
324
325 di << " Datum target."<< i << "."<< j;
326 if (argc > 3)
327 {
328 di <<" (";
329 if (aDatumObj->GetSemanticName())
330 {
331 di << " N \"" << aDatumObj->GetSemanticName()->String() << "\"";
332 }
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 }
351 }
352 }
353 }
354 }
355 return 0;
356 }
357
DumpNbDGTs(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)358 static Standard_Integer DumpNbDGTs (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
359 {
360 if (argc < 2) {
361 di<<"Use: XDumpNbDGTs Doc";
362 return 1;
363 }
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 }
371 Handle(TDocStd_Document) Doc;
372 DDocStd::GetDocument(argv[1], Doc);
373 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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 }
383
384 TDF_LabelSequence aGDTs;
385 aDimTolTool->GetDimensionLabels(aGDTs);
386 di << "\n NbOfDimensions : " << aGDTs.Length();
387 if (isFull) {
388 Standard_Integer nbSize = 0,
389 nbLocation = 0,
390 nbAngular = 0,
391 nbWithPath = 0,
392 nbCommon = 0;
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();
401 if (aDimType == XCAFDimTolObjects_DimensionType_CommonLabel) {
402 nbCommon++;
403 }
404 else if (STEPCAFControl_GDTProperty::IsDimensionalLocation(aDimType)) {
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 }
415 else if (STEPCAFControl_GDTProperty::IsDimensionalSize(aDimType)) {
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;
431 di << "\n NbOfCommonLabels : " << nbCommon;
432 }
433
434 aGDTs.Clear();
435 aDimTolTool->GetGeomToleranceLabels(aGDTs);
436 di << "\n NbOfTolerances : " << aGDTs.Length();
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;
448 if (anObject->GetMaterialRequirementModifier() != XCAFDimTolObjects_GeomToleranceMatReqModif_None) {
449 nbWithModif++;
450 }
451 else if (anObject->GetModifiers().Length() > 0) {
452 Standard_Boolean isHasModif = Standard_False;
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) {
456 isHasModif = Standard_True;
457 break;
458 }
459 if (isHasModif)
460 nbWithModif++;
461 }
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 }
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 }
501 }
502 if(isDatum)
503 aCounter++;
504 }
505 }
506 di << "\n NbOfDatumFeature : " << aCounter;
507 di << "\n NbOfAttachedDatum : " << aCounter2;
508 di << "\n NbOfDatumTarget : " << aCounter1;
509
510 return 0;
511 }
512
addDim(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)513 static Standard_Integer addDim (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
514 {
515 if (argc < 3) {
516 di<<"Use: XAddDimension Doc shape/label [shape/label]\n";
517 return 1;
518 }
519 Handle(TDocStd_Document) Doc;
520 DDocStd::GetDocument(argv[1], Doc);
521 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
addGTol(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)570 static Standard_Integer addGTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
571 {
572 if (argc < 3) {
573 di<<"Use: XAddGeomTolerance Doc shape/label\n";
574 return 1;
575 }
576 Handle(TDocStd_Document) Doc;
577 DDocStd::GetDocument(argv[1], Doc);
578 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
addDatum(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)606 static Standard_Integer addDatum (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
607 {
608 if (argc < 3) {
609 di<<"Use: XAddDatum Doc shape1/label1 ... shapeN/labelN\n";
610 return 1;
611 }
612 Handle(TDocStd_Document) Doc;
613 DDocStd::GetDocument(argv[1], Doc);
614 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
615 Handle(XCAFDoc_DimTolTool) aDimTolTool = XCAFDoc_DocumentTool::DimTolTool(Doc->Main());
616 Handle(XCAFDoc_ShapeTool) aShapeTool= XCAFDoc_DocumentTool::ShapeTool(Doc->Main());
617
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;
628 }
629 aLabelSeq.Append(aLabel);
630 }
631
632 TDF_Label aDatumL = aDimTolTool->AddDatum();
633 aDimTolTool->SetDatum(aLabelSeq, aDatumL);
634 TCollection_AsciiString Entry;
635 TDF_Tool::Entry(aDatumL, Entry);
636 di << Entry;
637 return 0;
638 }
639
setDatum(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)640 static Standard_Integer setDatum (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
641 {
642 if (argc < 4) {
643 di<<"Use: XSetDatum Doc Datum_Label GeomTol_Label\n";
644 return 1;
645 }
646 Handle(TDocStd_Document) Doc;
647 DDocStd::GetDocument(argv[1], Doc);
648 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
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
688 aDimTolTool->SetDatumToGeomTol(aLabel, aTol);
689 return 0;
690 }
691
setDatumPosition(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)692 static 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
getDatumPosition(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)727 static 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
getDatum(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)755 static Standard_Integer getDatum (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
756 {
757 if (argc < 3) {
758 di<<"Use: XGetDatum Doc GeomTol_Label/Shape_Label\n";
759 return 1;
760 }
761 Handle(TDocStd_Document) Doc;
762 DDocStd::GetDocument(argv[1], Doc);
763 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
775 TDF_LabelSequence aD;
776 if(!aDimTolTool->GetRefDatumLabel(aLabel, aD))
777 {
778 aDimTolTool->GetDatumOfTolerLabels(aLabel, aD);
779 }
780 for(Standard_Integer i = aD.Lower(); i <= aD.Upper(); i++)
781 {
782 if(i>1) di<<", ";
783 TCollection_AsciiString Entry;
784 TDF_Tool::Entry(aD.Value(i), Entry);
785 di<<Entry;
786 }
787 return 0;
788 }
789
addDatumModif(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)790 static Standard_Integer addDatumModif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
791 {
792 if (argc < 4) {
793 di<<"Use: XAddDatumModifier Doc Datum_Label mod1 mod2 ...\n";
794 return 1;
795 }
796 Handle(TDocStd_Document) Doc;
797 DDocStd::GetDocument(argv[1], Doc);
798 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getDatumModif(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)825 static Standard_Integer getDatumModif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
826 {
827 if (argc < 3) {
828 di<<"Use: XGetDatumModifiers Doc Datum_Label\n";
829 return 1;
830 }
831 Handle(TDocStd_Document) Doc;
832 DDocStd::GetDocument(argv[1], Doc);
833 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
setDatumName(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)881 static Standard_Integer setDatumName (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
882 {
883 if (argc < 4) {
884 di<<"Use: XSetDatumName Doc Datum_Label name\n";
885 return 1;
886 }
887 Handle(TDocStd_Document) Doc;
888 DDocStd::GetDocument(argv[1], Doc);
889 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getDatumName(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)910 static Standard_Integer getDatumName (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
911 {
912 if (argc < 3) {
913 di<<"Use: XGetDatumName Doc Datum_Label\n";
914 return 1;
915 }
916 Handle(TDocStd_Document) Doc;
917 DDocStd::GetDocument(argv[1], Doc);
918 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
setTypeOfTol(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)937 static Standard_Integer setTypeOfTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
938 {
939 if (argc < 4) {
940 di<<"Use: XSetTypeOfTolerance Doc GTol_Label type\n";
941 return 1;
942 }
943 Handle(TDocStd_Document) Doc;
944 DDocStd::GetDocument(argv[1], Doc);
945 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getTypeOfTol(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)969 static Standard_Integer getTypeOfTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
970 {
971 if (argc < 3) {
972 di<<"Use: XGetTypeOfTolerance Doc GTol_Label\n";
973 return 1;
974 }
975 Handle(TDocStd_Document) Doc;
976 DDocStd::GetDocument(argv[1], Doc);
977 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
setTypeOfTolVal(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1014 static Standard_Integer setTypeOfTolVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1015 {
1016 if (argc < 4) {
1017 di<<"Use: XSetTypeOfToleranceValue Doc GTol_Label type\n";
1018 return 1;
1019 }
1020 Handle(TDocStd_Document) Doc;
1021 DDocStd::GetDocument(argv[1], Doc);
1022 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getTypeOfTolVal(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1046 static Standard_Integer getTypeOfTolVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1047 {
1048 if (argc < 3) {
1049 di<<"Use: XGetTypeOfToleranceValue Doc GTol_Label\n";
1050 return 1;
1051 }
1052 Handle(TDocStd_Document) Doc;
1053 DDocStd::GetDocument(argv[1], Doc);
1054 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
setTolVal(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1078 static Standard_Integer setTolVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1079 {
1080 if (argc < 4) {
1081 di<<"Use: XSetToleranceValue Doc GTol_Label value\n";
1082 return 1;
1083 }
1084 Handle(TDocStd_Document) Doc;
1085 DDocStd::GetDocument(argv[1], Doc);
1086 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getTolVal(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1107 static Standard_Integer getTolVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1108 {
1109 if (argc < 3) {
1110 di<<"Use: XGetToleranceValue Doc GTol_Label\n";
1111 return 1;
1112 }
1113 Handle(TDocStd_Document) Doc;
1114 DDocStd::GetDocument(argv[1], Doc);
1115 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
setMatReq(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1134 static Standard_Integer setMatReq (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1135 {
1136 if (argc < 4) {
1137 di<<"Use: XSetTolMaterialReq Doc GTol_Label mod\n";
1138 return 1;
1139 }
1140 Handle(TDocStd_Document) Doc;
1141 DDocStd::GetDocument(argv[1], Doc);
1142 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getMatReq(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1166 static Standard_Integer getMatReq (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1167 {
1168 if (argc < 3) {
1169 di<<"Use: XGetTolMaterialReq Doc GTol_Label\n";
1170 return 1;
1171 }
1172 Handle(TDocStd_Document) Doc;
1173 DDocStd::GetDocument(argv[1], Doc);
1174 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
setZoneMod(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1198 static Standard_Integer setZoneMod (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1199 {
1200 if (argc < 4) {
1201 di<<"Use: XSetTolZoneMod Doc GTol_Label mod\n";
1202 return 1;
1203 }
1204 Handle(TDocStd_Document) Doc;
1205 DDocStd::GetDocument(argv[1], Doc);
1206 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getZoneMod(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1230 static Standard_Integer getZoneMod (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1231 {
1232 if (argc < 3) {
1233 di<<"Use: XGetTolZoneMod Doc GTol_Label\n";
1234 return 1;
1235 }
1236 Handle(TDocStd_Document) Doc;
1237 DDocStd::GetDocument(argv[1], Doc);
1238 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
setZoneModVal(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1262 static Standard_Integer setZoneModVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1263 {
1264 if (argc < 4) {
1265 di<<"Use: XSetTolZoneModValue Doc GTol_Label val\n";
1266 return 1;
1267 }
1268 Handle(TDocStd_Document) Doc;
1269 DDocStd::GetDocument(argv[1], Doc);
1270 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getZoneModVal(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1291 static Standard_Integer getZoneModVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1292 {
1293 if (argc < 3) {
1294 di<<"Use: XGetTolZoneModValue Doc GTol_Label\n";
1295 return 1;
1296 }
1297 Handle(TDocStd_Document) Doc;
1298 DDocStd::GetDocument(argv[1], Doc);
1299 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
addTolModif(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1318 static Standard_Integer addTolModif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1319 {
1320 if (argc < 4) {
1321 di<<"Use: XAddTolModifier Doc Tol_Label mod1 mod2 ...\n";
1322 return 1;
1323 }
1324 Handle(TDocStd_Document) Doc;
1325 DDocStd::GetDocument(argv[1], Doc);
1326 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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 {
1342 if(Draw::Atoi(argv[i]) > -1 && Draw::Atoi(argv[i]) < 17)
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
getTolModif(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1353 static Standard_Integer getTolModif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1354 {
1355 if (argc < 3) {
1356 di<<"Use: XGetTolModifiers Doc Tol_Label\n";
1357 return 1;
1358 }
1359 Handle(TDocStd_Document) Doc;
1360 DDocStd::GetDocument(argv[1], Doc);
1361 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
setTolMaxVal(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1402 static Standard_Integer setTolMaxVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1403 {
1404 if (argc < 4) {
1405 di<<"Use: XSetTolMaxValue Doc Dim_Label val\n";
1406 return 1;
1407 }
1408 Handle(TDocStd_Document) Doc;
1409 DDocStd::GetDocument(argv[1], Doc);
1410 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getTolMaxVal(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1431 static Standard_Integer getTolMaxVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1432 {
1433 if (argc < 3) {
1434 di<<"Use: XGetTolMaxValue Doc Dim_Label\n";
1435 return 1;
1436 }
1437 Handle(TDocStd_Document) Doc;
1438 DDocStd::GetDocument(argv[1], Doc);
1439 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
setDimType(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1458 static Standard_Integer setDimType (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1459 {
1460 if (argc < 4) {
1461 di<<"Use: XSetDimensionType Doc Dim_Label type\n";
1462 return 1;
1463 }
1464 Handle(TDocStd_Document) Doc;
1465 DDocStd::GetDocument(argv[1], Doc);
1466 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getDimType(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1490 static Standard_Integer getDimType (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1491 {
1492 if (argc < 3) {
1493 di<<"Use: XGetDimensionType Doc Dim_Label\n";
1494 return 1;
1495 }
1496 Handle(TDocStd_Document) Doc;
1497 DDocStd::GetDocument(argv[1], Doc);
1498 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
setDimVal(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1549 static Standard_Integer setDimVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1550 {
1551 if (argc < 4) {
1552 di<<"Use: XSetDimensionValue Doc Dim_Label val\n";
1553 return 1;
1554 }
1555 Handle(TDocStd_Document) Doc;
1556 DDocStd::GetDocument(argv[1], Doc);
1557 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getDimVal(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1578 static Standard_Integer getDimVal (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1579 {
1580 if (argc < 3) {
1581 di<<"Use: XGetDimensionValue Doc Dim_Label\n";
1582 return 1;
1583 }
1584 Handle(TDocStd_Document) Doc;
1585 DDocStd::GetDocument(argv[1], Doc);
1586 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
setDimQalif(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1605 static Standard_Integer setDimQalif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1606 {
1607 if (argc < 4) {
1608 di<<"Use: XSetDimensionQualifier Doc Dim_Label val\n";
1609 return 1;
1610 }
1611 Handle(TDocStd_Document) Doc;
1612 DDocStd::GetDocument(argv[1], Doc);
1613 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getDimQalif(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1637 static Standard_Integer getDimQalif (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1638 {
1639 if (argc < 3) {
1640 di<<"Use: XGetDimensionQualifier Doc Dim_Label\n";
1641 return 1;
1642 }
1643 Handle(TDocStd_Document) Doc;
1644 DDocStd::GetDocument(argv[1], Doc);
1645 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
setDimRange(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1671 static Standard_Integer setDimRange (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1672 {
1673 if (argc < 5) {
1674 di<<"Use: XSetDimensionRange Doc Dim_Label low_val up_val\n";
1675 return 1;
1676 }
1677 Handle(TDocStd_Document) Doc;
1678 DDocStd::GetDocument(argv[1], Doc);
1679 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getDimRange(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1704 static Standard_Integer getDimRange (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1705 {
1706 if (argc < 3) {
1707 di<<"Use: XGetDimensionRange Doc Dim_Label\n";
1708 return 1;
1709 }
1710 Handle(TDocStd_Document) Doc;
1711 DDocStd::GetDocument(argv[1], Doc);
1712 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
setDimPlusMinusTol(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1732 static Standard_Integer setDimPlusMinusTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1733 {
1734 if (argc < 5) {
1735 di<<"Use: XSetDimensionPlusMinusTol Doc Dim_Label low_val up_val\n";
1736 return 1;
1737 }
1738 Handle(TDocStd_Document) Doc;
1739 DDocStd::GetDocument(argv[1], Doc);
1740 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getDimPlusMinusTol(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1765 static Standard_Integer getDimPlusMinusTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1766 {
1767 if (argc < 3) {
1768 di<<"Use: XGetDimensionPlusMinusTol Doc Dim_Label\n";
1769 return 1;
1770 }
1771 Handle(TDocStd_Document) Doc;
1772 DDocStd::GetDocument(argv[1], Doc);
1773 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
setDimClassTol(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1793 static Standard_Integer setDimClassTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1794 {
1795 if (argc < 6) {
1796 di<<"Use: XSetDimensionClassOfTol Doc Dim_Label ishole[1/0] formVar grade\n";
1797 return 1;
1798 }
1799 Handle(TDocStd_Document) Doc;
1800 DDocStd::GetDocument(argv[1], Doc);
1801 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getDimClassTol(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1825 static Standard_Integer getDimClassTol (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1826 {
1827 if (argc < 3) {
1828 di<<"Use: XGetDimensionClassOfTol Doc Dim_Label\n";
1829 return 1;
1830 }
1831 Handle(TDocStd_Document) Doc;
1832 DDocStd::GetDocument(argv[1], Doc);
1833 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
setDimNbOfDecimalPlaces(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1948 static Standard_Integer setDimNbOfDecimalPlaces (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1949 {
1950 if (argc < 5) {
1951 di<<"Use: XSetDimensionNbOfDecimalPlaces Doc Dim_Label l_val r_val\n";
1952 return 1;
1953 }
1954 Handle(TDocStd_Document) Doc;
1955 DDocStd::GetDocument(argv[1], Doc);
1956 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getDimNbOfDecimalPlaces(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)1977 static Standard_Integer getDimNbOfDecimalPlaces (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
1978 {
1979 if (argc < 3) {
1980 di<<"Use: XGetDimensionNbOfDecimalPlaces Doc Dim_Label\n";
1981 return 1;
1982 }
1983 Handle(TDocStd_Document) Doc;
1984 DDocStd::GetDocument(argv[1], Doc);
1985 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
addDimModifier(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2006 static Standard_Integer addDimModifier (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2007 {
2008 if (argc < 4) {
2009 di<<"Use: XAddDimensionModifiers Doc Dim_Label mod1 mod2 ...\n";
2010 return 1;
2011 }
2012 Handle(TDocStd_Document) Doc;
2013 DDocStd::GetDocument(argv[1], Doc);
2014 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getDimModifier(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2041 static Standard_Integer getDimModifier (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2042 {
2043 if (argc < 3) {
2044 di<<"Use: XGetDimensionModifiers Doc Dim_Label\n";
2045 return 1;
2046 }
2047 Handle(TDocStd_Document) Doc;
2048 DDocStd::GetDocument(argv[1], Doc);
2049 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
addDimPath(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2099 static Standard_Integer addDimPath (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2100 {
2101 if (argc < 4) {
2102 di<<"Use: XSetDimensionPath Doc Dim_Label path(edge)\n";
2103 return 1;
2104 }
2105 Handle(TDocStd_Document) Doc;
2106 DDocStd::GetDocument(argv[1], Doc);
2107 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
addDimPoints(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2132 static Standard_Integer addDimPoints (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2133 {
2134 if (argc < 4) {
2135 di<<"Use: XSetDimensionPoints Doc Dim_Label v1 [v2]\n";
2136 return 1;
2137 }
2138 Handle(TDocStd_Document) Doc;
2139 DDocStd::GetDocument(argv[1], Doc);
2140 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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 {
2154 Handle(XCAFDimTolObjects_DimensionObject) anObj = aDimension->GetObject();
2155
2156 TopoDS_Vertex aV1 = TopoDS::Vertex(DBRep::Get(argv[3],TopAbs_VERTEX));
2157 if(!aV1.IsNull()) {
2158 anObj->SetPoint(BRep_Tool::Pnt(aV1));
2159 }
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);
2167 }
2168 return 0;
2169 }
2170
getDimPoints(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2171 static Standard_Integer getDimPoints (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2172 {
2173 if (argc < 3) {
2174 di<<"Use: XGetDimensionPoints Doc Dim_Label\n";
2175 return 1;
2176 }
2177 Handle(TDocStd_Document) Doc;
2178 DDocStd::GetDocument(argv[1], Doc);
2179 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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 {
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();
2199 }
2200 }
2201 return 0;
2202 }
2203
addDimDir(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2204 static Standard_Integer addDimDir (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2205 {
2206 if (argc < 6) {
2207 di<<"Use: XSetDimensionDir Doc Dim_Label x y z\n";
2208 return 1;
2209 }
2210 Handle(TDocStd_Document) Doc;
2211 DDocStd::GetDocument(argv[1], Doc);
2212 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
getDimDir(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2233 static Standard_Integer getDimDir (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
2234 {
2235 if (argc < 3) {
2236 di<<"Use: XGetDimensionDir Doc Dim_Label\n";
2237 return 1;
2238 }
2239 Handle(TDocStd_Document) Doc;
2240 DDocStd::GetDocument(argv[1], Doc);
2241 if ( Doc.IsNull() ) { di << argv[1] << " is not a document\n"; return 1; }
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
addDimDescr(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2264 static 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
getDimDescr(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2297 static 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
addGDTPosition(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2330 static 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
getGDTPosition(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2382 static 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
addGDTPresentation(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2435 static 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
getGDTPresentation(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2482 static 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
addGDTAffectedPlane(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2526 static 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
getGDTAffectedPlane(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2567 static 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
getGDTSemanticName(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2608 static 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
setGDTSemanticName(Draw_Interpretor & di,Standard_Integer argc,const char ** argv)2654 static 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 }
2698
2699 //=======================================================================
2700 //function : InitCommands
2701 //purpose :
2702 //=======================================================================
2703
InitCommands(Draw_Interpretor & di)2704 void XDEDRAW_GDTs::InitCommands(Draw_Interpretor& di)
2705 {
2706 static Standard_Boolean initactor = Standard_False;
2707 if (initactor)
2708 {
2709 return;
2710 }
2711 initactor = Standard_True;
2712
2713 Standard_CString g = "XDE G&DTs commands";
2714
2715 di.Add ("XDumpDGTs","XDumpDGTs Doc shape/label/all ",
2716 __FILE__, DumpDGTs, g);
2717
2718 di.Add ("XDumpNbDGTs","XDumpNbDGTs Doc [f (full dumping)]",
2719 __FILE__, DumpNbDGTs, g);
2720
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
2727 di.Add ("XAddDatum","XAddDatum Doc shape1/label1 ... shapeN/labelN",
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
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
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
3033 di.Add ("XSetDimensionPoints","XSetDimensionPoints Doc Dim_Label v1 [v2]",
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);
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);
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);
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);
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);
3082 }
3083