365tuwe

edge-face-intersection.py

May 21st, 2013
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.26 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. # edge - face - intersection
  4.  
  5. from OCC.IntTools import IntTools_EdgeFace
  6. from OCC.Utils.Construct import gp_Pnt
  7. from OCC.BRepBuilderAPI import (BRepBuilderAPI_MakeEdge,
  8.                                 BRepBuilderAPI_MakeWire,
  9.                                 BRepBuilderAPI_MakeFace,
  10.                                 BRepBuilderAPI_MakeVertex)
  11. from OCC.Display.SimpleGui import *
  12.  
  13. def makeFace(v1, v2, v3, v4):
  14.   '''
  15.    make a face from 4 vertices
  16.    @param v1: vertex 1
  17.    @param v2: vertex 2
  18.    @param v3: vertex 3
  19.    @param v4: vertex 4
  20.    @return face
  21.  '''
  22.   e1 = BRepBuilderAPI_MakeEdge(v1.Vertex(), v2.Vertex())
  23.   e2 = BRepBuilderAPI_MakeEdge(v2.Vertex(), v3.Vertex())
  24.   e3 = BRepBuilderAPI_MakeEdge(v3.Vertex(), v4.Vertex())
  25.   e4 = BRepBuilderAPI_MakeEdge(v4.Vertex(), v1.Vertex())
  26.   w = BRepBuilderAPI_MakeWire()
  27.   for e in e1, e2, e3, e4:
  28.     w.Add(e.Edge())
  29.  
  30.   f = BRepBuilderAPI_MakeFace(w.Wire())
  31.  
  32.   return f
  33.  
  34. if __name__ == "__main__":
  35.  
  36.   # create face
  37.   v1 = BRepBuilderAPI_MakeVertex(gp_Pnt(0,0,0.5))
  38.   v2 = BRepBuilderAPI_MakeVertex(gp_Pnt(1,0,0.5))
  39.   v3 = BRepBuilderAPI_MakeVertex(gp_Pnt(1,1,0.5))
  40.   v4 = BRepBuilderAPI_MakeVertex(gp_Pnt(0,1,0.5))
  41.   f = makeFace(v1, v2, v3, v4)
  42.  
  43.   # create edges
  44.   # e = edge intersecting the face
  45.   # en = edge not intersecting the face
  46.   ve1 = BRepBuilderAPI_MakeVertex(gp_Pnt(0.5,0.5,1))
  47.   ve1n = BRepBuilderAPI_MakeVertex(gp_Pnt(0,0,0))
  48.   ve2 = BRepBuilderAPI_MakeVertex(gp_Pnt(0.5,0.5,0))
  49.   e = BRepBuilderAPI_MakeEdge(ve1.Vertex(), ve2.Vertex())
  50.   en = BRepBuilderAPI_MakeEdge(ve1n.Vertex(), ve2.Vertex())
  51.  
  52.   # does e intersect f?
  53.   ef = IntTools_EdgeFace()
  54.   ef.SetEdge(e.Edge())
  55.   ef.SetFace(f.Face())
  56.   ef.Perform()
  57.   if ef.IsDone():
  58.     print ef.CommonParts()
  59.     print ef.ErrorStatus()
  60.  
  61.   # does en intersect f?
  62.   efn = IntTools_EdgeFace()
  63.   efn.SetEdge(en.Edge())
  64.   efn.SetFace(f.Face())
  65.   efn.Perform()
  66.   if efn.IsDone():
  67.     print efn.CommonParts()
  68.     print efn.ErrorStatus()
  69.  
  70.   display, start_display, add_menu, add_function_to_menu = init_display()
  71.   display.DisplayShape(f.Face())
  72.   display.DisplayColoredShape(e.Edge(), 'GREEN')
  73.   display.DisplayColoredShape(en.Edge(), 'RED')
  74.  
  75.   display.View_Iso()
  76.   display.FitAll()
  77.   start_display()
Advertisement
Add Comment
Please, Sign In to add comment