Of all structural analysis software I have used, this is the most user friendly !
Dennes T.
FrameCE amazed me! I can edit load values by clicking the load itself !
Jun (Perth, WA, Australia)
Editing beam section properties is very cool, it is like playing PC games....
Ana
This is first time I have experienced a structural engineering software where the user have the control which beam to show results without hiding other members! Great stuff...
Neth
Performing dynamic analysis is quick and easy...
Ribie (Melbourne, VIC, Australia)
FrameCE graphics are excellent, beam, nodes and loads are highlighted when mouse hovers over them, just like Autoccad.....never seen structural software like this before.
Bebot
I've been using another software for many years, I was hesitant to use FrameCE. But when I tried it once, I really liked it, because of its powerful graphics. Name withheld (Melbourne, VIC)
FrameCE support to users is the best!!! I want other egnineers to know how you value your users. Can't be more thankful to you.
Rob ( NSW, Aus)
Public Function EIFS_1(CrackSize, FH, A, B)
' get the FH of Crack size in the MCG
Dim x As Double
x = (Log(CrackSize) - Log(A)) / B
'Get EIFS
Dim x0 As Double
x0 = x - FH
' Get EIFS
EIFS_1 = A * Exp(B * x0)
End Function
Public Function EIFS_2(CrackSize, FH, A, B, A2, B2, DTA_a0)
' get the FH of Crack size in the MCG
Dim x As Double
x = (Log(CrackSize) - Log(A)) / B
'Get the FH under the curve1
Dim EIFS_1, x0, x2 As Double
x0 = x - FH
' Get EIFS
EIFS_1 = A * Exp(B * x0)
' Get the FH inside the DTA curve
Dim FH2, FH_DTA, DTA_FH0 As Double
If EIFS_1 < DTA_a0 Then
' Get the FH0 in the DTA
DTA_FH0 = (Log(DTA_a0) - Log(A2)) / B2
' Get the flight hours under the back extrapolated curve
x0 = x - DTA_FH0
' Get the FH under the second curve
x2 = FH - x0
' get the FH coordinate
x2 = DTA_FH0 - x2
EIFS_2 = A2 * Exp(B2 * x2)
Else
EIFS_2 = EIFS_1
End If
End Function
Public Function GetPMF(inputRange As Range, A As Single, B As Single) As Integer
Dim size As Integer, val As Single
Dim inputValue() As Variant, outputArray() As Variant
' inputValue will either be an variant array for ranges with more than 1 cell
' or a single variant value for range will only 1 cell
inputValue = inputRange
On Error Resume Next
size = UBound(inputValue)
' MsgBox (inputValue(2, 1))
Dim i, Count As Integer
Count = 0
For i = 1 To size
val = inputValue(i, 1)
If val > A And val <= B Then
Count = Count + 1
End If
Next i
GetPMF = Count
End Function
Public Function RangeToArray(inputRange As Range, A As Single, B As Single) As Variant()
Dim size As Integer
Dim inputValue() As Variant, outputArray() As Variant
' inputValue will either be an variant array for ranges with more than 1 cell
' or a single variant value for range will only 1 cell
inputValue = inputRange
On Error Resume Next
size = UBound(inputValue)
' MsgBox (inputValue(1, 1))
If Err.Number = 0 Then
RangeToArray = inputValue
Else
On Error GoTo 0
ReDim outputArray(1 To 1, 1 To 1)
outputArray(1, 1) = inputValue
RangeToArray = outputArray
End If
On Error GoTo 0
End Function
Public Function GetRangeCount(A As Single, B As Single) As Integer
Dim val As Single
Dim Count As Integer
Count = 0
For Each cell In Worksheets("Template").Range("C4:C700")
val = cell.Value
If val > A And val <= B Then
Count = Count + 1
End If
Next cell
GetRangeCount = Count
End Function
Public Function GetRangeCount2(A As Single, B As Single) As Integer
Dim val As Single
Dim Count As Integer
Count = 0
For Each cell In Worksheets("Template").Range("D4:D700")
val = cell.Value
If val > A And val <= B Then
Count = Count + 1
End If
Next cell
GetRangeCount2 = Count
End Function
Public Function GetRangeCount_CrackDist1(A As Single, B As Single) As Integer
Dim val As Single
Dim Count As Integer
Count = 0
For Each cell In Worksheets("Template").Range("E4:E700")
val = cell.Value
If val > A And val <= B Then
Count = Count + 1
End If
Next cell
GetRangeCount_CrackDist1 = Count
End Function
Public Function GetRangeCount_CrackDist2(A As Single, B As Single) As Integer
Dim val As Single
Dim Count As Integer
Count = 0
For Each cell In Worksheets("Template").Range("F4:F700")
val = cell.Value
If val > A And val <= B Then
Count = Count + 1
End If
Next cell
GetRangeCount_CrackDist2 = Count
End Function
Public Function Solve_B_given_A(DTA_a0, DTA_FH0, A) As Single
Solve_B_given_A = (Log(DTA_a0) - Log(A)) / DTA_FH0
End Function
Public Function GrowCrack2(EIFS As Single, DT As Single, A1 As Single, B1 As Single, A2 As Single, B2 As Single, DTA_a0 As Single, DTA_FH0 As Single)
' Get the location of a0
Dim FH0, T, T0, DT1, DT2 As Single
FH0 = (Log(EIFS) - Log(A1)) / B1
If EIFS > DTA_a0 Then
T = FH0 + DT
GrowCrack2 = A1 * Exp(B1 * T)
Else ' use second curve for first step
T0 = (Log(EIFS) - Log(A2)) / B2
DT1 = DTA_FH0 - T0
If DT1 > DT Then ' DTA CURVE NOT NEEDED
GrowCrack2 = A2 * Exp(B2 * (T0 + DT))
Else ' USE TWO CURVES
DT2 = DT - DT1
GrowCrack2 = A1 * Exp(B1 * (DTA_FH0 + DT2))
End If
End If
End Function
Public Function GrowCrack1(EIFS As Single, DT As Single, A1 As Single, B1 As Single)
' Get the location of a0
Dim DTA_FH0, T, T0, DT1, DT2 As Single
DTA_FH0 = (Log(EIFS) - Log(A1)) / B1
T = DTA_FH0 + DT
GrowCrack1 = A1 * Exp(B1 * T)
End Function
Dennes T.
FrameCE amazed me! I can edit load values by clicking the load itself !
Jun (Perth, WA, Australia)
Editing beam section properties is very cool, it is like playing PC games....
Ana
This is first time I have experienced a structural engineering software where the user have the control which beam to show results without hiding other members! Great stuff...
Neth
Performing dynamic analysis is quick and easy...
Ribie (Melbourne, VIC, Australia)
FrameCE graphics are excellent, beam, nodes and loads are highlighted when mouse hovers over them, just like Autoccad.....never seen structural software like this before.
Bebot
I've been using another software for many years, I was hesitant to use FrameCE. But when I tried it once, I really liked it, because of its powerful graphics. Name withheld (Melbourne, VIC)
FrameCE support to users is the best!!! I want other egnineers to know how you value your users. Can't be more thankful to you.
Rob ( NSW, Aus)
Public Function EIFS_1(CrackSize, FH, A, B)
' get the FH of Crack size in the MCG
Dim x As Double
x = (Log(CrackSize) - Log(A)) / B
'Get EIFS
Dim x0 As Double
x0 = x - FH
' Get EIFS
EIFS_1 = A * Exp(B * x0)
End Function
Public Function EIFS_2(CrackSize, FH, A, B, A2, B2, DTA_a0)
' get the FH of Crack size in the MCG
Dim x As Double
x = (Log(CrackSize) - Log(A)) / B
'Get the FH under the curve1
Dim EIFS_1, x0, x2 As Double
x0 = x - FH
' Get EIFS
EIFS_1 = A * Exp(B * x0)
' Get the FH inside the DTA curve
Dim FH2, FH_DTA, DTA_FH0 As Double
If EIFS_1 < DTA_a0 Then
' Get the FH0 in the DTA
DTA_FH0 = (Log(DTA_a0) - Log(A2)) / B2
' Get the flight hours under the back extrapolated curve
x0 = x - DTA_FH0
' Get the FH under the second curve
x2 = FH - x0
' get the FH coordinate
x2 = DTA_FH0 - x2
EIFS_2 = A2 * Exp(B2 * x2)
Else
EIFS_2 = EIFS_1
End If
End Function
Public Function GetPMF(inputRange As Range, A As Single, B As Single) As Integer
Dim size As Integer, val As Single
Dim inputValue() As Variant, outputArray() As Variant
' inputValue will either be an variant array for ranges with more than 1 cell
' or a single variant value for range will only 1 cell
inputValue = inputRange
On Error Resume Next
size = UBound(inputValue)
' MsgBox (inputValue(2, 1))
Dim i, Count As Integer
Count = 0
For i = 1 To size
val = inputValue(i, 1)
If val > A And val <= B Then
Count = Count + 1
End If
Next i
GetPMF = Count
End Function
Public Function RangeToArray(inputRange As Range, A As Single, B As Single) As Variant()
Dim size As Integer
Dim inputValue() As Variant, outputArray() As Variant
' inputValue will either be an variant array for ranges with more than 1 cell
' or a single variant value for range will only 1 cell
inputValue = inputRange
On Error Resume Next
size = UBound(inputValue)
' MsgBox (inputValue(1, 1))
If Err.Number = 0 Then
RangeToArray = inputValue
Else
On Error GoTo 0
ReDim outputArray(1 To 1, 1 To 1)
outputArray(1, 1) = inputValue
RangeToArray = outputArray
End If
On Error GoTo 0
End Function
Public Function GetRangeCount(A As Single, B As Single) As Integer
Dim val As Single
Dim Count As Integer
Count = 0
For Each cell In Worksheets("Template").Range("C4:C700")
val = cell.Value
If val > A And val <= B Then
Count = Count + 1
End If
Next cell
GetRangeCount = Count
End Function
Public Function GetRangeCount2(A As Single, B As Single) As Integer
Dim val As Single
Dim Count As Integer
Count = 0
For Each cell In Worksheets("Template").Range("D4:D700")
val = cell.Value
If val > A And val <= B Then
Count = Count + 1
End If
Next cell
GetRangeCount2 = Count
End Function
Public Function GetRangeCount_CrackDist1(A As Single, B As Single) As Integer
Dim val As Single
Dim Count As Integer
Count = 0
For Each cell In Worksheets("Template").Range("E4:E700")
val = cell.Value
If val > A And val <= B Then
Count = Count + 1
End If
Next cell
GetRangeCount_CrackDist1 = Count
End Function
Public Function GetRangeCount_CrackDist2(A As Single, B As Single) As Integer
Dim val As Single
Dim Count As Integer
Count = 0
For Each cell In Worksheets("Template").Range("F4:F700")
val = cell.Value
If val > A And val <= B Then
Count = Count + 1
End If
Next cell
GetRangeCount_CrackDist2 = Count
End Function
Public Function Solve_B_given_A(DTA_a0, DTA_FH0, A) As Single
Solve_B_given_A = (Log(DTA_a0) - Log(A)) / DTA_FH0
End Function
Public Function GrowCrack2(EIFS As Single, DT As Single, A1 As Single, B1 As Single, A2 As Single, B2 As Single, DTA_a0 As Single, DTA_FH0 As Single)
' Get the location of a0
Dim FH0, T, T0, DT1, DT2 As Single
FH0 = (Log(EIFS) - Log(A1)) / B1
If EIFS > DTA_a0 Then
T = FH0 + DT
GrowCrack2 = A1 * Exp(B1 * T)
Else ' use second curve for first step
T0 = (Log(EIFS) - Log(A2)) / B2
DT1 = DTA_FH0 - T0
If DT1 > DT Then ' DTA CURVE NOT NEEDED
GrowCrack2 = A2 * Exp(B2 * (T0 + DT))
Else ' USE TWO CURVES
DT2 = DT - DT1
GrowCrack2 = A1 * Exp(B1 * (DTA_FH0 + DT2))
End If
End If
End Function
Public Function GrowCrack1(EIFS As Single, DT As Single, A1 As Single, B1 As Single)
' Get the location of a0
Dim DTA_FH0, T, T0, DT1, DT2 As Single
DTA_FH0 = (Log(EIFS) - Log(A1)) / B1
T = DTA_FH0 + DT
GrowCrack1 = A1 * Exp(B1 * T)
End Function