|   | 605 |  | 
                  
                          |   | 606 | === Izdelava CAD kocke z predhodno definiranimi točkami (Uporaba for zanke za generiranje točk, površin, mreže) === | 
                  
                          |   | 607 | {{{ | 
                  
                          |   | 608 | #!python | 
                  
                          |   | 609 | import sys | 
                  
                          |   | 610 | from OCC.Display.SimpleGui import * | 
                  
                          |   | 611 |  | 
                  
                          |   | 612 | from OCC.gp import gp_Pnt | 
                  
                          |   | 613 | from OCC.GC import GC_MakeSegment | 
                  
                          |   | 614 | from OCC.BRepBuilderAPI import \ | 
                  
                          |   | 615 |   BRepBuilderAPI_MakeEdge, BRepBuilderAPI_MakeFace, BRepBuilderAPI_MakeWire,\ | 
                  
                          |   | 616 |   BRepBuilderAPI_MakeShell, BRepBuilderAPI_MakeSolid | 
                  
                          |   | 617 | from OCC.BRep import BRep_Builder | 
                  
                          |   | 618 | from OCC.TopoDS import TopoDS_Shell, TopoDS_Solid | 
                  
                          |   | 619 | from OCC import StlAPI | 
                  
                          |   | 620 |  | 
                  
                          |   | 621 | mesh = { | 
                  
                          |   | 622 |   "vertices":[[-0.2,-0.2,0.2],[0.2,-0.2,0.2],[0.2,0.2,0.2],[-0.2,0.2,0.2],\ | 
                  
                          |   | 623 |                   [-0.2,-0.2,0.6000000000000001],[0.2,-0.2,0.6000000000000001],\ | 
                  
                          |   | 624 |                   [0.2,0.2,0.6000000000000001],[-0.2,0.2,0.6000000000000001]], | 
                  
                          |   | 625 |   "faces":[[3,2,1,0],[4,5,6,7],[7,6,2,3],[5,4,0,1],[6,5,1,2],[4,7,3,0]] | 
                  
                          |   | 626 | } | 
                  
                          |   | 627 |  | 
                  
                          |   | 628 | def main(): | 
                  
                          |   | 629 |  | 
                  
                          |   | 630 |   vertices = [ gp_Pnt(p[0],p[1],p[2]) for p in mesh['vertices'] ] | 
                  
                          |   | 631 |   oFaces = [] | 
                  
                          |   | 632 |  | 
                  
                          |   | 633 |   builder = BRep_Builder() | 
                  
                          |   | 634 |   shell = TopoDS_Shell() | 
                  
                          |   | 635 |   builder.MakeShell(shell) | 
                  
                          |   | 636 |  | 
                  
                          |   | 637 |   for face in mesh['faces']: | 
                  
                          |   | 638 |     edges = [] | 
                  
                          |   | 639 |     face.reverse() | 
                  
                          |   | 640 |     for i in range(len(face)): | 
                  
                          |   | 641 |       cur = face[i] | 
                  
                          |   | 642 |       nxt = face[(i+1)%len(face)] | 
                  
                          |   | 643 |       segment = GC_MakeSegment(vertices[cur],vertices[nxt]) | 
                  
                          |   | 644 |       edges.append(BRepBuilderAPI_MakeEdge(segment.Value())) | 
                  
                          |   | 645 |  | 
                  
                          |   | 646 |     wire = BRepBuilderAPI_MakeWire() | 
                  
                          |   | 647 |     for edge in edges: | 
                  
                          |   | 648 |       wire.Add(edge.Edge()) | 
                  
                          |   | 649 |  | 
                  
                          |   | 650 |     oFace = BRepBuilderAPI_MakeFace(wire.Wire()) | 
                  
                          |   | 651 |  | 
                  
                          |   | 652 |     builder.Add(shell, oFace.Shape()) | 
                  
                          |   | 653 |     display.DisplayShape(shell) | 
                  
                          |   | 654 |  | 
                  
                          |   | 655 | if __name__ == '__main__': | 
                  
                          |   | 656 |     display, start_display, add_menu, add_function_to_menu = \ | 
                  
                          |   | 657 |         init_display() | 
                  
                          |   | 658 |     main() | 
                  
                          |   | 659 |     start_display() | 
                  
                          |   | 660 | }}} |