1 <!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
\r
6 <title>Repairing Operations</title>
\r
7 <meta http-equiv="content-type" content="text/html; charset=windows-1252">
\r
8 <meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
\r
9 <link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
\r
11 if (navigator.appName !="Netscape")
\r
12 { document.write("<link rel='stylesheet' href='default.css'>");}
\r
15 <style type="text/css">
\r
17 p.whs1 { font-family:'Lucida Console' , monospace; }
\r
18 p.whs2 { font-family:'Times New Roman' , serif; }
\r
20 </style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
\r
23 if (innerWidth != origWidth || innerHeight != origHeight)
\r
26 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
\r
27 origWidth = innerWidth;
\r
28 origHeight = innerHeight;
\r
34 <style type="text/css">
\r
36 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
\r
37 p.WebHelpNavBar { text-align:right; }
\r
39 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
\r
40 <script type="text/javascript" language="javascript" src="whver.js"></script>
\r
41 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
\r
42 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
\r
43 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
\r
44 <script type="text/javascript" language="javascript1.2">
\r
46 if (window.gbWhTopic)
\r
48 if (window.setRelStartPage)
\r
50 addTocInfo("Geometry module\nTUI Scripts\nTransformation\nRepairing Operations");
\r
51 addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
\r
52 addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
\r
57 if (window.setRelStartPage)
\r
59 setRelStartPage("index.htm");
\r
69 document.location.reload();
\r
73 <body><script type="text/javascript" language="javascript1.2">
\r
75 if (window.writeIntopicBar)
\r
79 <h1>Repairing Operations</h1>
\r
81 <h3><a name=bookmark>Shape Processing</a></h3>
\r
83 <p class="whs1">import geompy</p>
\r
85 <p class="whs1">import salome</p>
\r
87 <p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
\r
91 <p># create vertices, an edge, an arc, a wire, a face and a prism</p>
\r
93 <p class="whs1">p1 = geompy.MakeVertex(0,0,0)</p>
\r
95 <p class="whs1">p2 = geompy.MakeVertex(200,0,0)</p>
\r
97 <p class="whs1">p3 = geompy.MakeVertex(100,150,0)</p>
\r
99 <p class="whs1">edge = geompy.MakeEdge(p1,p2)</p>
\r
101 <p class="whs1">arc =
\r
102 geompy.MakeArc(p1,p3,p2)</p>
\r
104 <p class="whs1">wire = geompy.MakeWire([edge,arc])</p>
\r
106 <p class="whs1">face = geompy.MakeFace(wire,
\r
109 <p class="whs1">theShape = geompy.MakePrismVecH(face,
\r
114 <p># check the shape at the beginning</p>
\r
116 <p class="whs1">print "Before
\r
117 ProcessShape:"</p>
\r
119 <p class="whs1">isValid = geompy.CheckShape(theShape)</p>
\r
121 <p class="whs1">if isValid == 0:</p>
\r
123 <p class="whs1"> print
\r
124 "The shape is not valid"</p>
\r
126 <p class="whs1">else:</p>
\r
128 <p class="whs1"> print
\r
129 "The shape seems to be valid"</p>
\r
131 <p class="whs1"> </p>
\r
133 <p># process the Shape</p>
\r
135 <p class="whs1">Operators = ["FixShape"]</p>
\r
137 <p class="whs1">Parameters = ["FixShape.Tolerance3d"]</p>
\r
139 <p class="whs1">Values = ["1e-7"]</p>
\r
141 <p class="whs1">PS = geompy.ProcessShape(theShape,
\r
142 Operators, Parameters, Values)</p>
\r
146 <p># check the shape at the end</p>
\r
148 <p class="whs1">print "After
\r
149 ProcessShape:"</p>
\r
151 <p class="whs1">isValid = geompy.CheckShape(PS)</p>
\r
153 <p class="whs1">if isValid == 0:</p>
\r
155 <p class="whs1"> print
\r
156 "The shape is not valid"</p>
\r
158 <p class="whs1"> raise
\r
159 RuntimeError, "It seems, that the ProcessShape() has failed"</p>
\r
161 <p class="whs1">else:</p>
\r
163 <p class="whs1"> print
\r
164 "The shape seems to be valid"</p>
\r
168 <p># add in the study and display</p>
\r
170 <p class="whs1">Id_Shape = geompy.addToStudy(theShape,
\r
171 "Invalid Shape")</p>
\r
173 <p class="whs1">Id_PS =
\r
174 geompy.addToStudy(PS, "Processed Shape")</p>
\r
176 <p class="whs1">gg.createAndDisplayGO(Id_Shape)</p>
\r
178 <p class="whs1">gg.setDisplayMode(Id_Shape,1)</p>
\r
180 <p class="whs1">gg.createAndDisplayGO(Id_PS)</p>
\r
182 <p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(Id_PS,1)</span>
\r
187 <h3><a name=bookmark1>Suppress Faces</a></h3>
\r
189 <p class="whs1">import geompy</p>
\r
191 <p class="whs1">import salome</p>
\r
193 <p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
\r
197 <p># create a box</p>
\r
199 <p class="whs1">box = geompy.MakeBoxDXDYDZ(200,
\r
204 <p># The list of IDs (IDList) for suppress faces</p>
\r
206 <p class="whs1">sup_faces = []</p>
\r
208 <p class="whs1">sup_faces = geompy.SubShapeAllSorted(box,
\r
209 geompy.ShapeType["FACE"])</p>
\r
213 <p># get indices of the sub-shape </p>
\r
215 <p class="whs1">f1_id = geompy.GetSubShapeID(box,
\r
220 <p># remove faces from the given object (shape)</p>
\r
222 <p class="whs1">result = geompy.SuppressFaces(box,
\r
227 <p># add objects in the study</p>
\r
229 <p class="whs1">id_box = geompy.addToStudy(box,
\r
230 "Box")</p>
\r
232 <p class="whs1">id_result = geompy.addToStudy(result,
\r
233 "Result")</p>
\r
237 <p># display the results</p>
\r
239 <p class="whs1">gg.createAndDisplayGO(id_box)</p>
\r
241 <p class="whs1">gg.setDisplayMode(id_box,1)</p>
\r
243 <p class="whs1">gg.createAndDisplayGO(id_result)</p>
\r
245 <p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_result,1)</span>
\r
250 <h3><a name=bookmark2>Close Contour</a></h3>
\r
252 <p class="whs1">import geompy</p>
\r
254 <p class="whs1">import salome</p>
\r
256 <p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
\r
260 <p># create vertices and vectors</p>
\r
262 <p class="whs1">p0 =
\r
263 geompy.MakeVertex( 0.,
\r
265 0.)</p>
\r
267 <p class="whs1">px =
\r
268 geompy.MakeVertex(100., 0.,
\r
269 0.)</p>
\r
271 <p class="whs1">py =
\r
272 geompy.MakeVertex( 0.,
\r
273 100., 0.)</p>
\r
275 <p class="whs1">py1 = geompy.MakeVertex(
\r
277 0.)</p>
\r
279 <p class="whs1">pz =
\r
280 geompy.MakeVertex( 0.,
\r
284 <p class="whs1">vxy = geompy.MakeVector(px,
\r
287 <p> </p>
\r
289 <p># create an arc</p>
\r
291 <p class="whs1">arc = geompy.MakeArc(py1,
\r
296 <p># create a wire</p>
\r
298 <p class="whs1">wire = geompy.MakeWire([vxy,
\r
303 <p># close an open wire by creation of an edge between ends</p>
\r
305 <p class="whs1">wire_close = geompy.CloseContour(wire,
\r
310 <p># add objects in the study</p>
\r
312 <p class="whs1">id_wire = geompy.addToStudy(wire,
\r
313 "Wire")</p>
\r
315 <p class="whs1">id_wire_close = geompy.addToStudy(wire_close,
\r
316 "Wire close")</p>
\r
320 <p># display the results</p>
\r
322 <p class="whs1">gg.createAndDisplayGO(id_wire)</p>
\r
324 <p><span style="font-family: 'Lucida Console', monospace;">gg.createAndDisplayGO(id_wire_close)</span>
\r
329 <h3><a name=bookmark3>Suppress Internal Wires</a></h3>
\r
331 <p class="whs1">import geompy</p>
\r
333 <p class="whs1">import salome</p>
\r
335 <p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
\r
339 <p># create a vertex and a vector</p>
\r
341 <p class="whs1">p1 = geompy.MakeVertex(55,
\r
344 <p class="whs1">p2 = geompy.MakeVertex(55,
\r
347 <p class="whs1">v = geompy.MakeVector(p1,
\r
352 <p># create a cylinder</p>
\r
354 <p class="whs1">height = 100</p>
\r
356 <p class="whs1">radius1 = 40</p>
\r
358 <p class="whs1">cylinder = geompy.MakeCylinder(p1,
\r
359 v, radius1, height)</p>
\r
363 <p># create a box</p>
\r
365 <p class="whs1">box = geompy.MakeBoxDXDYDZ(100,
\r
370 <p># make a cut</p>
\r
372 <p class="whs1">cut = geompy.MakeCut(box,
\r
377 <p># suppress all internal wires</p>
\r
379 <p class="whs1">result = geompy.SuppressInternalWires(cut,
\r
384 <p># add objects in the study</p>
\r
386 <p class="whs1">id_cut = geompy.addToStudy(cut,
\r
387 "Cut")</p>
\r
389 <p class="whs1">id_result = geompy.addToStudy(result,
\r
390 "Result")</p>
\r
394 <p># display the results</p>
\r
396 <p class="whs1">gg.createAndDisplayGO(id_cut)</p>
\r
398 <p class="whs1">gg.setDisplayMode(id_cut,1)</p>
\r
400 <p class="whs1">gg.createAndDisplayGO(id_result)</p>
\r
402 <p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_result,1)</span>
\r
407 <h3><a name=bookmark4>Suppress Holes</a></h3>
\r
409 <p class="whs1">import geompy</p>
\r
411 <p class="whs1">import salome</p>
\r
413 <p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
\r
417 <p># create a vertex and a vector</p>
\r
419 <p class="whs1">p1 = geompy.MakeVertex(35,
\r
422 <p class="whs1">p2 = geompy.MakeVertex(35,
\r
425 <p class="whs1">v = geompy.MakeVector(p1,
\r
430 <p># create a cylinder</p>
\r
432 <p class="whs1">height = 20</p>
\r
434 <p class="whs1">radius1 = 20</p>
\r
436 <p class="whs1">cylinder = geompy.MakeCylinder(p1,
\r
437 v, radius1, height)</p>
\r
441 <p># create a cone</p>
\r
443 <p class="whs1">cone = geompy.MakeCone(p1,
\r
448 <p># make a cut</p>
\r
450 <p class="whs1">cut = geompy.MakeCut(cone,
\r
455 <p># get faces as sub-shapes</p>
\r
457 <p class="whs1">faces = []</p>
\r
459 <p class="whs1">faces = geompy.SubShapeAllSorted(cut,
\r
460 geompy.ShapeType["FACE"])</p>
\r
462 <p class="whs1">f_2 = geompy.GetSubShapeID(cut,
\r
467 <p># remove one face from the shape</p>
\r
469 <p class="whs1">cut_without_f_2 =
\r
470 geompy.SuppressFaces(cut, [f_2])</p>
\r
474 <p># get wires as sub-shapes</p>
\r
476 <p class="whs1">wires = []</p>
\r
478 <p class="whs1">wires = geompy.SubShapeAllSorted(cut_without_f_2,
\r
479 geompy.ShapeType["WIRE"])</p>
\r
481 <p class="whs1">w_0 = geompy.GetSubShapeID(cut_without_f_2,
\r
486 <p># suppress the selected wire</p>
\r
488 <p class="whs1">result = geompy.SuppressHoles(cut_without_f_2,
\r
493 <p># add objects in the study</p>
\r
495 <p class="whs1">id_cut = geompy.addToStudy(cut,
\r
496 "Cut")</p>
\r
498 <p class="whs1">id_cut_without_f_2
\r
499 = geompy.addToStudy(cut_without_f_2, "Cut without f_2")</p>
\r
501 <p class="whs1">id_result = geompy.addToStudy(result,
\r
502 "Result")</p>
\r
506 <p># display the results</p>
\r
508 <p class="whs1">gg.createAndDisplayGO(id_cut)</p>
\r
510 <p class="whs1">gg.setDisplayMode(id_cut,1)</p>
\r
512 <p class="whs1">gg.createAndDisplayGO(id_cut_without_f_2)</p>
\r
514 <p class="whs1">gg.setDisplayMode(id_cut_without_f_2,1)</p>
\r
516 <p class="whs1">gg.createAndDisplayGO(id_result)</p>
\r
518 <p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_result,1)</span>
\r
523 <h3><a name=bookmark5>Sewing</a></h3>
\r
525 <p class="whs1">import geompy</p>
\r
527 <p class="whs1">import salome</p>
\r
529 <p class="whs1">import math</p>
\r
531 <p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
\r
535 <p># create base points</p>
\r
537 <p class="whs1">px = geompy.MakeVertex(100.,
\r
540 <p class="whs1">py = geompy.MakeVertex(0.,
\r
543 <p class="whs1">pz = geompy.MakeVertex(0.,
\r
548 <p># create base geometry 2D & 3D</p>
\r
550 <p class="whs1">vector = geompy.MakeVector(px,
\r
553 <p class="whs1">arc = geompy.MakeArc(py,
\r
558 <p># create base objects</p>
\r
560 <p class="whs1">angle = 45. * math.pi
\r
563 <p class="whs1">WantPlanarFace = 1
\r
566 <p class="whs1">wire = geompy.MakeWire([vector,
\r
569 <p class="whs1">face = geompy.MakeFace(wire,
\r
570 WantPlanarFace)</p>
\r
572 <p class="whs1">face_rot = geompy.MakeRotation(face,
\r
577 <p># make sewing</p>
\r
579 <p class="whs1">precision = 0.00001</p>
\r
581 <p class="whs1">sewing = geompy.MakeSewing([face,
\r
582 face_rot], precision)</p>
\r
586 <p># add objects in the study</p>
\r
588 <p class="whs1">id_face = geompy.addToStudy(face,
\r
589 "Face")</p>
\r
591 <p class="whs1">id_face_rot = geompy.addToStudy(face_rot,
\r
592 "Face rotation")</p>
\r
594 <p class="whs1">id_sewing = geompy.addToStudy(sewing,
\r
595 "Sewing")</p>
\r
599 <p># display the results</p>
\r
601 <p class="whs1">gg.createAndDisplayGO(id_face)</p>
\r
603 <p class="whs1">gg.setDisplayMode(id_face,1)</p>
\r
605 <p class="whs1">gg.createAndDisplayGO(id_face_rot)</p>
\r
607 <p class="whs1">gg.setDisplayMode(id_face_rot,1)</p>
\r
609 <p class="whs1">gg.createAndDisplayGO(id_sewing)</p>
\r
611 <p class="whs1">gg.setDisplayMode(id_sewing,1)
\r
614 <p class="whs1"> </p>
\r
616 <h3><a name=bookmark6>Glue Faces</a></h3>
\r
618 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
\r
621 <p class="whs1">import salome</p>
\r
623 <p class="whs1"> </p>
\r
625 <p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
\r
627 <p class="whs1"> </p>
\r
629 <p class="whs2"># create boxes</p>
\r
631 <p class="whs1">box1 = geompy.MakeBox(0,0,0,100,50,100)</p>
\r
633 <p class="whs1">box2 = <span style="font-family: 'Lucida Console', monospace;">geompy.MakeBox(100,0,0,250,50,100)</span></p>
\r
635 <p class="whs1"> </p>
\r
637 <p class="whs2"># make compound</p>
\r
639 <p class="whs1">compound = geompy.MakeCompound([box1,
\r
642 <p class="whs1"> </p>
\r
644 <p class="whs2"># glue compound's faces</p>
\r
646 <p class="whs1">tolerance = 1e-5</p>
\r
648 <p class="whs1">glue = geompy.MakeGlueFaces(compound,
\r
651 <p class="whs1"> </p>
\r
653 <p class="whs2"># add objects in study</p>
\r
655 <p class="whs1">id_box1 = geompy.addToStudy(box1,
\r
656 "Box1")</p>
\r
658 <p class="whs1">id_box2 = geompy.addToStudy(box2,
\r
659 "Box2")</p>
\r
661 <p class="whs1">id_compound = geompy.addToStudy(compound,
\r
662 "Compound")</p>
\r
664 <p class="whs1">id_glue = geompy.addToStudy(glue,
\r
665 "Glue faces")</p>
\r
667 <p class="whs1"> </p>
\r
669 <p class="whs2"># display results</p>
\r
671 <p class="whs1">gg.createAndDisplayGO(id_box1)</p>
\r
673 <p class="whs1">gg.setDisplayMode(id_box1,1)</p>
\r
675 <p class="whs1">gg.createAndDisplayGO(id_box2)</p>
\r
677 <p class="whs1">gg.setDisplayMode(id_box2,1)</p>
\r
679 <p class="whs1">gg.createAndDisplayGO(id_compound)</p>
\r
681 <p class="whs1">gg.setDisplayMode(id_compound,1)</p>
\r
683 <p class="whs1">gg.createAndDisplayGO(id_glue)</p>
\r
685 <p class="whs1">gg.setDisplayMode(id_glue,1)
\r
688 <p class="whs1"> </p>
\r
690 <h3><a name=bookmark7>Add Point on Edge</a></h3>
\r
692 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
\r
695 <p class="whs1">import salome</p>
\r
697 <p class="whs1"> </p>
\r
699 <p class="whs2"># create vertices</p>
\r
701 <p class="whs1">p1 = geompy.MakeVertex(0,0,50)</p>
\r
703 <p class="whs1">p2 = geompy.MakeVertex(60,0,50)</p>
\r
705 <p class="whs1"> </p>
\r
707 <p class="whs2"># make an edge</p>
\r
709 <p class="whs1">edge = geompy.MakeEdge(p1,
\r
710 p2) #geompy.GetSubShape(box, edge_ind)</p>
\r
712 <p class="whs1"> </p>
\r
714 <p class="whs2"># divide an edge</p>
\r
716 <p class="whs1">divide = geompy.DivideEdge(edge,
\r
719 <p class="whs1"> </p>
\r
721 <p class="whs2"># add objects in the
\r
724 <p class="whs1">id_edge = geompy.addToStudy(edge,
\r
725 "Edge")</p>
\r
727 <p class="whs1">edge_points = geompy.SubShapeAllSorted(edge,
\r
728 geompy.ShapeType["VERTEX"])</p>
\r
730 <p class="whs1">for point in edge_points:</p>
\r
732 <p class="whs1"> geompy.addToStudyInFather(edge,
\r
733 point, "Edge's point")</p>
\r
735 <p class="whs1"> </p>
\r
737 <p class="whs1">id_divide = geompy.addToStudy(divide,
\r
738 "Divided edge")</p>
\r
740 <p class="whs1">edge_points = geompy.SubShapeAllSorted(divide,
\r
741 geompy.ShapeType["VERTEX"])</p>
\r
743 <p class="whs1">for point in edge_points:</p>
\r
745 <p class="whs1"> geompy.addToStudyInFather(divide,
\r
746 point, "Edge's point after divide")</p>
\r
748 <p class="whs1"> </p>
\r
750 <p class="whs1">salome.sg.updateObjBrowser(1)
\r
753 <p class="whs2"> </p>
\r
755 <h3><a name=bookmark8>Check Free Boundaries</a></h3>
\r
757 <p class="whs1">import os</p>
\r
759 <p class="whs1">import geompy</p>
\r
761 <p class="whs1">import salome</p>
\r
763 <p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
\r
765 <p class="whs2"> </p>
\r
767 <p class="whs2"># create boxes</p>
\r
769 <p class="whs1">box1 = geompy.MakeBox(0,0,0,100,50,100)</p>
\r
771 <p class="whs1">box2 = geompy.MakeBox(100,0,0,250,50,100)</p>
\r
773 <p class="whs2"> </p>
\r
775 <p class="whs2"># make a compound</p>
\r
777 <p class="whs1">compound = geompy.MakeCompound([box1,
\r
780 <p class="whs2"> </p>
\r
782 <p class="whs2"># import from *.brep</p>
\r
784 <p class="whs1">ImportBREP = geompy.ImportBREP("<span
\r
785 style="font-family: 'Lucida Console', monospace;">os.getenv("DATA_DIR")+"/Shapes/Brep/flight_solid.brep")</span></p>
\r
787 <p class="whs2"> </p>
\r
789 <p class="whs2"># get a face</p>
\r
791 <p class="whs1">faces = geompy.SubShapeAllSorted(ImportBREP,
\r
792 geompy.ShapeType["FACE"])</p>
\r
794 <p class="whs2"> </p>
\r
796 <p class="whs2"># get the free boundary
\r
799 <p class="whs1">Res = geompy.GetFreeBoundary(faces[32])</p>
\r
801 <p class="whs1">isSuccess =
\r
804 <p class="whs1">ClosedWires = Res[1]</p>
\r
806 <p class="whs1">OpenWires =
\r
809 <p class="whs2"> </p>
\r
811 <p class="whs2">i<span style="font-family: 'Lucida Console', monospace;">f
\r
812 isSuccess == 1 :</span></p>
\r
814 <p class="whs1"> print
\r
815 "Checking free boudaries is OK."</p>
\r
817 <p class="whs1">else :</p>
\r
819 <p class="whs1"> print
\r
820 "Checking free boudaries is KO!"</p>
\r
822 <p class="whs1">print "len(ClosedWires)
\r
823 = ", len(ClosedWires)</p>
\r
825 <p class="whs1">i = 0</p>
\r
827 <p class="whs1">for wire in ClosedWires
\r
830 <p class="whs1"> wire_name
\r
831 = "Face 32 -> Close wires : WIRE %d"%(i+1)</p>
\r
833 <p class="whs1"> geompy.addToStudy(ClosedWires[i],
\r
836 <p class="whs1"> if
\r
837 i < len(ClosedWires) :</p>
\r
839 <p class="whs1"> i
\r
842 <p class="whs1">print "len(OpenWires)
\r
843 = ", len(OpenWires)</p>
\r
845 <p class="whs1">i = 0</p>
\r
847 <p class="whs1">for wire in OpenWires
\r
850 <p class="whs1"> wire_name
\r
851 = "Face 32 -> Open wires : WIRE %d"%(i+1)</p>
\r
853 <p class="whs1"> geompy.addToStudy(OpenWires[i],
\r
856 <p class="whs1"> if
\r
857 i < len(OpenWires) :</p>
\r
859 <p class="whs1"> i
\r
862 <p class="whs2"> </p>
\r
864 <p class="whs2"># get the free boundary
\r
867 <p class="whs1">Res = geompy.GetFreeBoundary(faces[41])</p>
\r
869 <p class="whs1">isSuccess =
\r
872 <p class="whs1">ClosedWires = Res[1]</p>
\r
874 <p class="whs1">OpenWires =
\r
877 <p class="whs1"> </p>
\r
879 <p class="whs1">if isSuccess == 1
\r
882 <p class="whs1"> print
\r
883 "Checking free boudaries is OK."</p>
\r
885 <p class="whs1">else :</p>
\r
887 <p class="whs1"> print
\r
888 "Checking free boudaries is KO!"</p>
\r
890 <p class="whs1">print "len(ClosedWires)
\r
891 = ", len(ClosedWires)</p>
\r
893 <p class="whs1">i = 0</p>
\r
895 <p class="whs1">for wire in ClosedWires
\r
898 <p class="whs1"> wire_name
\r
899 = "Face 41 -> Close wires : WIRE %d"%(i+1)</p>
\r
901 <p class="whs1"> geompy.addToStudy(ClosedWires[i],
\r
904 <p class="whs1"> if
\r
905 i < len(ClosedWires) :</p>
\r
907 <p class="whs1"> i
\r
910 <p class="whs1">print "len(OpenWires)
\r
911 = ", len(OpenWires)</p>
\r
913 <p class="whs1">i = 0</p>
\r
915 <p class="whs1">for wire in OpenWires
\r
918 <p class="whs1"> wire_name
\r
919 = "Face 41 -> Open wires : WIRE %d"%(i+1)</p>
\r
921 <p class="whs1"> geompy.addToStudy(OpenWires[i],
\r
924 <p class="whs1"> if
\r
925 i < len(OpenWires) :</p>
\r
927 <p class="whs1"> i
\r
930 <p class="whs2"> </p>
\r
932 <p class="whs2"># add the imported object
\r
935 <p class="whs1">id_ImportBREP = geompy.addToStudy(ImportBREP,
\r
936 "ImportBREP")</p>
\r
938 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
\r
941 <p class="whs2"> </p>
\r
943 <h3><a name=bookmark9>Check Free Faces</a></h3>
\r
945 <p class="whs1">import geompy</p>
\r
947 <p class="whs1">import salome</p>
\r
949 <p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
\r
953 <p># create a vertex and a vector</p>
\r
955 <p class="whs1">p1 = geompy.MakeVertex(35,
\r
958 <p class="whs1">p2 = geompy.MakeVertex(35,
\r
961 <p class="whs1">v = geompy.MakeVector(p1,
\r
966 <p># create a cylinder</p>
\r
968 <p class="whs1">cylinder = geompy.MakeCone(p1,
\r
973 <p># create a cone</p>
\r
975 <p class="whs1">cone = geompy.MakeCone(p1,
\r
982 <p class="whs1">cut = geompy.MakeCut(cone,
\r
987 <p># get faces as sub-shapes</p>
\r
989 <p class="whs1">faces = []</p>
\r
991 <p class="whs1">faces = geompy.SubShapeAllSorted(cut,
\r
992 geompy.ShapeType["FACE"])</p>
\r
994 <p class="whs1">f_2 = geompy.GetSubShapeID(cut,
\r
999 <p># remove one face from the shape</p>
\r
1001 <p class="whs1">cut_without_f_2 =
\r
1002 geompy.SuppressFaces(cut, [f_2])</p>
\r
1006 <p># suppress the specified wire</p>
\r
1008 <p class="whs1">result = geompy.GetFreeFacesIDs(cut_without_f_2)</p>
\r
1010 <p class="whs1">print "A number
\r
1011 of free faces is ", len(result)</p>
\r
1015 <p># add objects in the study</p>
\r
1017 <p class="whs1">all_faces = geompy.SubShapeAllSorted(cut_without_f_2,
\r
1018 geompy.ShapeType["FACE"])</p>
\r
1020 <p class="whs1">for face in all_faces
\r
1023 <p class="whs1"> sub_shape_id
\r
1024 = geompy.GetSubShapeID(cut_without_f_2, face)</p>
\r
1026 <p class="whs1"> if
\r
1027 result.count(sub_shape_id) > 0 :</p>
\r
1029 <p class="whs1"> face_name
\r
1030 = "Free face %d"%(sub_shape_id)</p>
\r
1032 <p class="whs1"> geompy.addToStudy(face,
\r
1037 <p># in this example all faces from cut_without_f_2 are free</p>
\r
1039 <p class="whs1">id_cut_without_f_2
\r
1040 = geompy.addToStudy(cut_without_f_2, "Cut without f_2")</p>
\r
1044 <p># display the results</p>
\r
1046 <p class="whs1">gg.createAndDisplayGO(id_cut_without_f_2)</p>
\r
1048 <p><span style="font-family: 'Lucida Console', monospace;">gg.setDisplayMode(id_cut_without_f_2,1)</span>
\r
1051 <script type="text/javascript" language="javascript1.2">
\r
1053 if (window.writeIntopicBar)
\r
1054 writeIntopicBar(0);
\r