summaryrefslogtreecommitdiff
path: root/Connections/Shear/Finplate/nutBoltPlacement.py
blob: c7e583244ef3519d8a41802c85b1a2913482d47b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
'''
Created on 07-Jun-2015

@author: deepa
'''
import numpy
from bolt import Bolt
from nut import Nut

class NutBoltArray():
    def __init__(self,boltPlaceObj,nut,bolt,gap):
        self.origin = numpy.array([0.0, 0.0, 0])
        self.gaugeDir = numpy.array([1.0, 0.0, 0])
        self.pitchDir = numpy.array([0.0, 1.0, 0])
        self.boltDir =  numpy.array([0.0, 0.0, -1.0])
        
        self.initBoltPlaceParams(boltPlaceObj)
        
        self.bolt = bolt
        self.nut = nut
        self.gap = gap
        
        self.bolts = []
        self.nuts = []
        self.initialiseNutBolts()
        
        self.positions = []
        self.calculatePositions()
        
        self.models = []
                
    def initialiseNutBolts(self):
        b = self.bolt
        n = self.nut
        for i in range(self.row * self.col):
            self.bolts.append(Bolt(b.R,b.T, b.H, b.r))
            self.nuts.append(Nut(n.R, n.T,n.H, n.r1))
        
    def initBoltPlaceParams(self,boltPlaceObj):
        self.pitch = boltPlaceObj['Bolt']['pitch']
        self.gauge = boltPlaceObj['Bolt']['gauge']
        self.edge = boltPlaceObj['Bolt']['edge']
        self.end = boltPlaceObj['Bolt']['enddist']
        self.row = boltPlaceObj['Bolt']['numofrow']
        self.col = boltPlaceObj['Bolt']['numofcol']
        
    
    def calculatePositions(self):
        self.positions = []
        for rw in  range(1,(self.row +1)):
            for col in range(self.col):
                pos = self.origin +(self.edge + (col * self.gauge))* self.gaugeDir + rw * self.pitch * self.pitchDir
                self.positions.append(pos)
    
    def place(self, origin, gaugeDir, pitchDir, boltDir):
        self.origin = origin
        self.gaugeDir = gaugeDir
        self.pitchDir = pitchDir
        self.boltDir = boltDir
        
        self.calculatePositions()
        
        for index,pos in enumerate (self.positions):
            self.bolts[index].place(pos,gaugeDir,boltDir)
            self.nuts[index].place((pos + self.gap* boltDir),gaugeDir,pitchDir)
    
        
    def createModel(self):
        for bolt in self.bolts:
            self.models.append(bolt.createModel())
        for nut in self.nuts:
            self.models.append(nut.createModel())
        
    def getnutboltModels(self): 
        return self.models