diff options
Diffstat (limited to 'Connections/Shear/Finplate/ModelUtils.py')
-rw-r--r-- | Connections/Shear/Finplate/ModelUtils.py | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/Connections/Shear/Finplate/ModelUtils.py b/Connections/Shear/Finplate/ModelUtils.py new file mode 100644 index 0000000..ae4e175 --- /dev/null +++ b/Connections/Shear/Finplate/ModelUtils.py @@ -0,0 +1,94 @@ +''' +Created on 29-Nov-2014 + +@author: deepa +''' +from OCC.Display.SimpleGui import init_display +from OCC.BRepPrimAPI import BRepPrimAPI_MakeBox, BRepPrimAPI_MakeSphere,\ + BRepPrimAPI_MakePrism +from OCC.gp import gp_Pnt, gp_Dir, gp_Pln, gp_Vec +from OCC.BRepBuilderAPI import BRepBuilderAPI_MakeFace +from OCC.BRepBuilderAPI import (BRepBuilderAPI_MakeEdge, + BRepBuilderAPI_MakeVertex, + BRepBuilderAPI_MakeWire) +from OCC.BRepFill import BRepFill_Filling +from OCC.GeomAbs import GeomAbs_C0 +from OCC.GeomAPI import GeomAPI_PointsToBSpline +from OCC.TColgp import TColgp_Array1OfPnt +from OCC._Quantity import Quantity_NOC_BLACK + + +def make_edge(*args): + edge = BRepBuilderAPI_MakeEdge(*args) + result = edge.Edge() + return result + + +def make_vertex(*args): + vert = BRepBuilderAPI_MakeVertex(*args) + result = vert.Vertex() + return result + + +def make_n_sided(edges, continuity=GeomAbs_C0): + n_sided = BRepFill_Filling() # TODO Checck optional NbIter=6) + for edg in edges: + n_sided.Add(edg, continuity) + n_sided.Build() + face = n_sided.Face() + return face + + +def make_wire(*args): + # if we get an iterable, than add all edges to wire builder + if isinstance(args[0], list) or isinstance(args[0], tuple): + wire = BRepBuilderAPI_MakeWire() + for i in args[0]: + wire.Add(i) + wire.Build() + return wire.Wire() + wire = BRepBuilderAPI_MakeWire(*args) + return wire.Wire() + + +def points_to_bspline(pnts): + pts = TColgp_Array1OfPnt(0, len(pnts)-1) + for n, i in enumerate(pnts): + pts.SetValue(n, i) + crv = GeomAPI_PointsToBSpline(pts) + return crv.Curve() + +def makeWireFromEdges(edges): + wire = None + for edge in edges: + if wire : + wire = make_wire(wire, edge) + else: + wire = make_wire(edge) + return wire + +def makeFaceFromWire(wire): + return BRepBuilderAPI_MakeFace(wire).Face() + +def getGpPt(point): + return gp_Pnt(point[0], point[1], point[2]) + +def getGpDir(direction): + return gp_Dir(direction[0], direction[1], direction[2]) + +def makeEdgesFromPoints(points): + edges = [] + num = len(points) + for i in range(num - 1): + edge = make_edge(getGpPt(points[i]), getGpPt(points[i + 1])) + edges.append(edge) + + cycleEdge = make_edge(getGpPt(points[num - 1]), getGpPt(points[0])) + edges.append(cycleEdge) + + return edges + +def makePrismFromFace(aFace, eDir): + return BRepPrimAPI_MakePrism(aFace, gp_Vec(gp_Pnt(0., 0., 0.),gp_Pnt(eDir[0], eDir[1], eDir[2]))).Shape() + #return BRepPrimAPI_MakePrism(aFace, gpDir, False).Shape() + |