Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # edge - face - intersection
- from OCC.IntTools import IntTools_EdgeFace
- from OCC.Utils.Construct import gp_Pnt
- from OCC.BRepBuilderAPI import (BRepBuilderAPI_MakeEdge,
- BRepBuilderAPI_MakeWire,
- BRepBuilderAPI_MakeFace,
- BRepBuilderAPI_MakeVertex)
- from OCC.Display.SimpleGui import *
- def makeFace(v1, v2, v3, v4):
- '''
- make a face from 4 vertices
- @param v1: vertex 1
- @param v2: vertex 2
- @param v3: vertex 3
- @param v4: vertex 4
- @return face
- '''
- e1 = BRepBuilderAPI_MakeEdge(v1.Vertex(), v2.Vertex())
- e2 = BRepBuilderAPI_MakeEdge(v2.Vertex(), v3.Vertex())
- e3 = BRepBuilderAPI_MakeEdge(v3.Vertex(), v4.Vertex())
- e4 = BRepBuilderAPI_MakeEdge(v4.Vertex(), v1.Vertex())
- w = BRepBuilderAPI_MakeWire()
- for e in e1, e2, e3, e4:
- w.Add(e.Edge())
- f = BRepBuilderAPI_MakeFace(w.Wire())
- return f
- if __name__ == "__main__":
- # create face
- v1 = BRepBuilderAPI_MakeVertex(gp_Pnt(0,0,0.5))
- v2 = BRepBuilderAPI_MakeVertex(gp_Pnt(1,0,0.5))
- v3 = BRepBuilderAPI_MakeVertex(gp_Pnt(1,1,0.5))
- v4 = BRepBuilderAPI_MakeVertex(gp_Pnt(0,1,0.5))
- f = makeFace(v1, v2, v3, v4)
- # create edges
- # e = edge intersecting the face
- # en = edge not intersecting the face
- ve1 = BRepBuilderAPI_MakeVertex(gp_Pnt(0.5,0.5,1))
- ve1n = BRepBuilderAPI_MakeVertex(gp_Pnt(0,0,0))
- ve2 = BRepBuilderAPI_MakeVertex(gp_Pnt(0.5,0.5,0))
- e = BRepBuilderAPI_MakeEdge(ve1.Vertex(), ve2.Vertex())
- en = BRepBuilderAPI_MakeEdge(ve1n.Vertex(), ve2.Vertex())
- # does e intersect f?
- ef = IntTools_EdgeFace()
- ef.SetEdge(e.Edge())
- ef.SetFace(f.Face())
- ef.Perform()
- if ef.IsDone():
- print ef.CommonParts()
- print ef.ErrorStatus()
- # does en intersect f?
- efn = IntTools_EdgeFace()
- efn.SetEdge(en.Edge())
- efn.SetFace(f.Face())
- efn.Perform()
- if efn.IsDone():
- print efn.CommonParts()
- print efn.ErrorStatus()
- display, start_display, add_menu, add_function_to_menu = init_display()
- display.DisplayShape(f.Face())
- display.DisplayColoredShape(e.Edge(), 'GREEN')
- display.DisplayColoredShape(en.Edge(), 'RED')
- display.View_Iso()
- display.FitAll()
- start_display()
Advertisement
Add Comment
Please, Sign In to add comment