In [1]:
from SVG_beam import beam, adjust_viewbox
from SVG_lib import point, Line
from New_Spline import Spline, control_points, intercept
from CurveManip import rotate, mirror
from numpy import sqrt
from collections import namedtuple
from numpy import array

In [2]:
class bending_failure(beam):
    def __init__(self):
        super(bending_failure,self).__init__()
        self.cracks = 0
        
    def crack(self):
        cL = self.centerline
        coef = cL.Coefficients()
        PI = intercept(cL.P0,cL.P3,coef)
        t = self.thickness
        X = array([0,-12,10,-12,18,-20,6,-12,18,-20,0])
        Y = array([0,-4,-8,-12,-16,-20,-24,-28,-32,-36,-40,-44])
        self.max_cracks = len(X)
        if self.cracks>self.max_cracks-1:
            self.cracks = self.max_cracks-1
        xi,yi=PI
        yi += t/2
        mC = list(zip(X+xi,Y+yi))
        points = list(zip(mC[:-1],mC[1:]))
        self.splits = []
        for line in range(self.cracks):
            P0,P1 = points[line]
            self.splits.append(Line(list(P0),list(P1)))

bb = bending_failure()

In [3]:
bb


Out[3]:

In [4]:
bb.sag = 30
bb.show_center_line=False
bb.display_points=False
bb.cracks=12
bb.crack()
bb


Out[4]:

In [5]:
bb.sag = 30
bb.cracks=0
bb.crack()
corners = bb.get_corners()
S = bb.support_points()
bb


Out[5]:

In [6]:
bb.manual_viewbox=True
for i in range(15):
    bb.sag = i*2
    adjust_viewbox(corners, S, bb)
    bb.save('./Bending_failure/beam')
bb


What is the maximum number of versions of this beam do you want to save? [1000]
Saving first svg drawing to: ./Bending_failure/beam-000.svg
Out[6]:

In [7]:
from numpy import floor
for i in range(22):
    bb.cracks = int(floor((i+1)/2))
    bb.crack()
    adjust_viewbox(corners, S, bb)
    bb.save('./Bending_failure/beam')
bb


Out[7]:

In [8]:
bb.cracks


Out[8]:
10

In [9]:
bb.max_cracks


Out[9]:
11

In [ ]: