summaryrefslogtreecommitdiff
path: root/Connections/Shear/Finplate/bolt.py
diff options
context:
space:
mode:
Diffstat (limited to 'Connections/Shear/Finplate/bolt.py')
-rw-r--r--Connections/Shear/Finplate/bolt.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/Connections/Shear/Finplate/bolt.py b/Connections/Shear/Finplate/bolt.py
new file mode 100644
index 0000000..b3d654a
--- /dev/null
+++ b/Connections/Shear/Finplate/bolt.py
@@ -0,0 +1,67 @@
+'''
+Created on 29-Nov-2014
+
+@author: deepa
+'''
+import numpy
+from ModelUtils import *
+import math
+from OCC.BRepPrimAPI import BRepPrimAPI_MakeCylinder
+from OCC.BRepAlgo import BRepAlgo_BooleanOperations
+from OCC.gp import gp_Pnt, gp_Dir, gp_Pln, gp_Ax2
+from OCC.BRepAlgoAPI import BRepAlgoAPI_Fuse
+
+
+class Bolt(object):
+ #
+ def __init__(self,R,T,H,r):
+ self.R = R
+ self.H = H
+ self.T = T
+ self.r = r
+ self.secOrigin = numpy.array([0, 0, 0])
+ self.uDir = numpy.array([1.0, 0, 0])
+ self.wDir = numpy.array([0.0, 0, 1.0])
+ self.computeParams()
+
+ def place(self, secOrigin, uDir, wDir):
+ self.secOrigin = secOrigin
+ self.uDir = uDir
+ self.wDir = wDir
+ self.computeParams()
+
+ def getPoint(self,theta):
+ theta = math.radians(theta)
+ point = self.secOrigin + (self.R * math.cos(theta)) * self.uDir + (self.R * math.sin(theta)) * self.vDir
+ return point
+
+ def computeParams(self):
+
+ self.vDir = numpy.cross(self.wDir, self.uDir)
+ self.a1 = self.getPoint(0)
+ self.a2 = self.getPoint(60)
+ self.a3 = self.getPoint(120)
+ self.a4 = self.getPoint(180)
+ self.a5 = self.getPoint(240)
+ self.a6 = self.getPoint(300)
+ self.points = [self.a1, self.a2, self.a3, self.a4, self.a5, self.a6]
+
+
+
+ def createModel(self):
+
+ edges = makeEdgesFromPoints(self.points)
+ wire = makeWireFromEdges(edges)
+ aFace = makeFaceFromWire(wire)
+ extrudeDir = self.T * self.wDir # extrudeDir is a numpy array
+ boltHead = makePrismFromFace(aFace, extrudeDir)
+ cylOrigin = self.secOrigin + self.T * self.wDir
+
+ boltCylinder = BRepPrimAPI_MakeCylinder(gp_Ax2(getGpPt(cylOrigin), getGpDir(self.wDir)), self.r, self.H).Shape()
+ whole_Bolt = BRepAlgoAPI_Fuse(boltHead,boltCylinder).Shape()
+
+ return whole_Bolt
+
+
+
+ \ No newline at end of file