Listing Program
'*************************************************************** '*************************************************************** '**** D I A G R A M I N T E R A K S I **** '**** Kolom Bujur Sangkar / Lingkaran **** '**** **** '**** A LGORITMA PEMROGRAMAN : NUMERIK **** '**** **** '**** Tugas Akhir **** '**** A n d R E W _ 5 i h i T e **** '**** Aplikasi Rekayasa Konstruksi dengan Visual Basic 6.0 **** '**** **** '**** email : [email protected] **** '**** Jurusan Teknik Sipil - Universitas Sumatera Utara **** '*************************************************************** '***************************************************************
Dim h, d1, n_tul, D_tul, nlapis, fc, fy, Mn, Cc, y0 Dim Pn0, PnMax, Pnb, Mnb
Dim y(100), f(100), esi(100), Atul(100) Dim ttk_tbh
Dim titik_PM(50, 3), red_PM(50, 3), nttk_kurva Dim Pu, Mu
Dim red_k, red_b Dim Persen_Tul, TipeKol Const regUlt = 0.003
Const phi = 3.14159265358979 'Keterangan Notasi
'h = diameter kolom bulat
'd1 = jarak titik berat tulangan di perimeter thd tepi luar 'n_tul = jumlah tulangna pada perimeter
'nlapis = jumlah lapis horizontal hasil konversi perimeter tul 'fc = kuat tekan beton silinder
'fy = tegangan leleh baja tulangan 'Mn = kuat lentur nominal
'Pnb = kuat tekan nominal pada kondisi balans 'Mnb = kuat lentur nominal pada kondisi balans 'Cc = blok desak beton
'y0 = jarak titik berat Cc ke tepi desak luar
'y(i) = jarak lapis horizontal tulangan ke tepi desak luar 'esi(i) = regangan pada lapis horizontal tulangan
'f(i) = gaya pada tiap lapis horizontal tulangan 'Atul(i)= luas baja pada tiap lapis horizontal tulangan 'titik_PM(i) = titik-titik pada kurva interaksi
'red_PM(i) = titik-titik kurva interaksi dengan faktor reduksi 'ttk_tbh= titik tambahan untuk memperhalus kurva interaksi 'Pu, Mu = beban aksial dan lentur terfaktor utk diplotkan pd kurva 'red_k = strength reduction factor - column
'red_b = strength reduction factor - beam Sub Hitung()
If Option1.Value = True Then
LayerTul_Kol_Persegi h, d1, n_tul, D_tul, nlapis Else
LayerTul_Kol_Bulat h, d1, n_tul, D_tul, nlapis End If
'Jumlah titik pada kurva interaksi yang dihitung nttk_kurva = 5 + 2 * ttk_tbh
'menyiapkan file untuk menyimpan hasil perhitungan Open "Kolom.out" For Output As #1
Print_Header
'1========================================================| 'Beban aksial tekan maksimum (teori)======================|
If Option1.Value = True Then Ag = h ^ 2
Else
Ag = 0.25 * phi * h ^ 2 End If
Ast = n_tul * 0.25 * phi * D_tul ^ 2 Persen_Tul = Ast / Ag * 100
Pn0 = 0.85 * fc * (Ag - Ast) + Ast * fy titik_PM(1, 1) = Pn0
titik_PM(1, 2) = 0 titik_PM(1, 3) = "Pn0"
'2========================================================| 'Beban aksial tekan maksimum yang diijinkan===============|
Ket = "PnMax dan Mn e-min"
Print #1, "Titik Kurva"; 2; "("; Ket; ")" PnMax = 0.8 * Pn0 Call iterasi_cariM(PnMax, Mn) titik_PM(2, 1) = PnMax titik_PM(2, 2) = Mn titik_PM(2, 3) = Ket '3========================================================| 'Kondisi Balans===========================================| i = 3 + ttk_tbh
Ket = "Kondisi Balans"
Print #1, "Titik Kurva"; i; "("; Ket; ")" Call Hitung_Balans(Pnb, Mnb) titik_PM(3 + ttk_tbh, 1) = Pnb titik_PM(3 + ttk_tbh, 2) = Mnb titik_PM(3 + ttk_tbh, 3) = Ket '2a=======================================================| 'Titik tambahan pada daerah keruntuhan tekan==============|
If ttk_tbh > 0 Then Print #1, String(59, "_")
Print #1, "Ada"; ttk_tbh; "titik tambahan di zona tekan" P = (PnMax - Pnb) / (ttk_tbh + 1)
For i = 1 To ttk_tbh
Print #1, "Titik Kurva"; 2 + i; "(--)" Pn = PnMax - P * i
Call iterasi_cariM(Pn, Mn) titik_PM(2 + i, 1) = Pn
titik_PM(2 + i, 2) = Mn titik_PM(2 + i, 3) = "--" Next i End If '3a=======================================================| 'Titik tambahan pada daerah keruntuhan tarik==============|
If ttk_tbh > 0 Then Print #1, String(59, "_")
Print #1, "Ada"; ttk_tbh; "titik tambahan di zona tarik" P = Pnb / (ttk_tbh + 1)
For i = 1 To ttk_tbh ii = 3 + ttk_tbh + i
Print #1, "Titik Kurva"; ii; "(++)" Pn = Pnb - P * i Call iterasi_cariM(Pn, Mn) titik_PM(3 + ttk_tbh + i, 1) = Pn titik_PM(3 + ttk_tbh + i, 2) = Mn titik_PM(3 + ttk_tbh + i, 3) = "++" Next i End If '4========================================================| 'Beban lentur pada kondisi tanpa beban aksial ============|
i = 4 + 2 * ttk_tbh Ket = "Balok Murni"
Print #1, "Titik Kurva"; i; "("; Ket; ")" Call iterasi_cariM(0, Mn) titik_PM(4 + 2 * ttk_tbh, 1) = 0 titik_PM(4 + 2 * ttk_tbh, 2) = Mn titik_PM(4 + 2 * ttk_tbh, 3) = Ket '5========================================================| 'Beban aksial tekan maksimum yang diijinkan===============|
PnT = -Ast * fy
titik_PM(5 + 2 * ttk_tbh, 1) = PnT titik_PM(5 + 2 * ttk_tbh, 2) = 0
titik_PM(5 + 2 * ttk_tbh, 3) = "Full tarik"
'6========================================================| 'konversi ke kN dan m , sekaligus cetak ke file Kolom.OUT |
Print #1, String(59, "_")
Print #1, "KURVA INTERAKSI KOLOM tanpa reduksi" Print #1, "Titik Kurva", " Pn (kN)", "Mn (kN-m)", "Keterangan" For i = 1 To nttk_kurva
titik_PM(i, 1) = titik_PM(i, 1) / 1000# titik_PM(i, 2) = titik_PM(i, 2) / 1000000# Print #1, FrmAngka(i, 5, 0),
Print #1, FrmAngka(titik_PM(i, 1), 8, 1),
Print #1, FrmAngka(titik_PM(i, 2), 8, 1), titik_PM(i, 3) Next i
'7========================================================| 'memasukkan parameter reduksi kekuatan====================|
batas = 0.1 * fc * Ag / 1000# Pnb = titik_PM(3 + ttk_tbh, 1) If batas > Pnb Then
End If
For i = 1 To nttk_kurva P = titik_PM(i, 1) If P > batas Then
red_PM(i, 1) = titik_PM(i, 1) * red_k red_PM(i, 2) = titik_PM(i, 2) * red_k red_PM(i, 3) = red_k
ElseIf P > 0 Then
red = (red_b - red_k) / batas * P red = red_b - red
red_PM(i, 1) = titik_PM(i, 1) * red red_PM(i, 2) = titik_PM(i, 2) * red red_PM(i, 3) = red
Else
red_PM(i, 1) = titik_PM(i, 1) * red_b red_PM(i, 2) = titik_PM(i, 2) * red_b red_PM(i, 3) = red_b
End If Next i
'mencetak hasil setelah direduksi ke file "Kolom.OUT" Print #1,
Print #1, "KURVA INTERAKSI KOLOM dengan Faktor reduksi" Print #1, "Titik Kurva", " "; Chr(216); "Pn (kN)", Chr(216); Print #1, "Mn(kN-m)", Chr(216); "-Faktor" For i = 1 To nttk_kurva Print #1, FrmAngka(i, 5, 0), Print #1, FrmAngka(red_PM(i, 1), 8, 1), Print #1, FrmAngka(red_PM(i, 2), 8, 1), Print #1, FrmAngka(red_PM(i, 3), 4, 2) Next i
'menutup file "Kolom.OUT" Close #1
'simpan data yang baru diproses dan menampilkan ke layar saveData Tabulasi Plot_Penampang Plot_KurvaINT Command1.Caption = "O K" End Sub
'Algoritma ini didasarkan bagan alir pada Gambar 6.16 dan 6.17 Sub iterasi_cariM(Pn, Mn) 'estimasi awal xa = h * 3 xb = 0 Do c = (xa + xb) / 2
'hitung resultante tekan pada blok beton a = Beta1(fc) * c
If Option1.Value = True Then BlokDesakKolPersegi a, h, Cc, y0 Else BlokDesakKolBulat a, h, Cc, y0 End If residu = -Cc + Pn Mn = -Cc * y0
'hitung gaya-gaya pada tulangan For i = 1 To nlapis
If y(i) > c Then 'tulangan tarik
esi(i) = regUlt * (y(i) - c) / c f(i) = fSteel(esi(i)) * Atul(i) Else
'tulangan tekan
esi(i) = regUlt * (c - y(i)) / c f(i) = fSteel(esi(i)) * -Atul(i) End If
residu = residu + f(i) Mn = Mn + f(i) * y(i) Next i If residu < 0 Then xa = c Else xb = c End If
Loop Until Abs(residu) < 0.0001 Mn = Mn + Pn * h / 2
Call Tabel_Teg_Reg(Cc, Pn, c) End Sub
Sub Hitung_Balans(Pnb, Mnb)
'kondisi balans nilai ditentukan oleh regangan terluar 'cari serat terluar tulangan, sekaligus mengkonversi 'perimeter tulangan ke layer horizontal
If Option1.Value = True Then
LayerTul_Kol_Persegi h, d1, n_tul, D_tul, nlapis Else
LayerTul_Kol_Bulat h, d1, n_tul, D_tul, nlapis End If
d = y(nlapis)
'hitung c balans dan tinggi blok desak cb = 600 / (600 + fy) * d
ab = Beta1(fc) * cb
If Option1.Value = True Then BlokDesakKolPersegi ab, h, Cc, y0 Else BlokDesakKolBulat ab, h, Cc, y0 End If Pnb = -Cc Mnb = -Cc * y0
'hitung gaya-gaya pada tulangan For i = 1 To nlapis
If y(i) > cb Then 'tulangan tarik
esi(i) = regUlt * (y(i) - cb) / cb f(i) = fSteel(esi(i)) * Atul(i) Else
'tulangan tekan
esi(i) = regUlt * (cb - y(i)) / cb f(i) = fSteel(esi(i)) * -Atul(i) End If Pnb = Pnb + f(i) Mnb = Mnb + f(i) * y(i) Next i Pnb = Abs(Pnb) Mnb = Mnb + Pnb * h / 2
Call Tabel_Teg_Reg(Cc, Pnb, cb) End Sub
Sub Tabel_Teg_Reg(Cc, Pn, c)
Print #1, "Regangan-tegangan Lapis Baja Tulangan (c = "; Print #1, Format(c, "0.00 mm)")
'123456789012345678901234567890 Print #1, "Lapis y(i) Regangan "; Print #1, Tab(30); "fs(MPa)";
Print #1, Tab(40); "As(mm2)"; Print #1, Tab(50); "Gaya(kN)" For i = 1 To nlapis
Print #1, FrmAngka(i, 3, 0);
Print #1, Tab(10); FrmAngka(y(i), 5, 1); Print #1, Tab(20); FrmAngka(esi(i), 7, 5); Print #1, Tab(33); FrmAngka(fSteel(esi(i)), 3, 0); Print #1, Tab(42); FrmAngka(Atul(i), 4, 0); Print #1, Tab(50); FrmAngka(f(i) / 1000#, 7, 0) Next i
Print #1, Tab(52); "--- +" Print #1, Tab(40); "F Baja:";
Print #1, Tab(50); FrmAngka((Cc - Pn) / 1000#, 7, 0); " kN" Print #1, Tab(40); "F Beton:";
Print #1, Tab(50); FrmAngka(-Cc / 1000#, 7, 0); " kN" End Sub
' fungsi modifikasi format angka agar rata kanan Function FrmAngka(angka, number, digit) FrmAngka = FormatNumber(angka, digit) T = Len(FrmAngka)
If T < number Then ii = number - T
FrmAngka = String(ii, " ") + FrmAngka End If End Function Function LuasTul(d) LuasTul = (d / 2) ^ 2 * phi End Function Function Arccos(x)
Arccos = Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1) End Function
'============================================================| 'Menghitung blok desak beton berbentuk segmen persegi =======|
Sub BlokDesakKolPersegi(a, h, Cc, y0) Ac = a * h
y0 = a / 2
Cc = Ac * 0.85 * fc End Sub
'============================================================| 'Menghitung blok desak beton berbentuk segmen lingkaran =====|
Sub BlokDesakKolBulat(a, h, Cc, y0) If a > h Then
'suatu kondisi jika penampang desak seluas lingkaran Ac = phi / 4 * h ^ 2
y0 = h / 2
ElseIf a > 0.5 * h Then x = (a - h / 2) / (0.5 * h)
teta1 = phi - Arccos(x) ' dalam radian lho Else
x = (h / 2 - a) / (0.5 * h)
teta1 = Arccos(x) ' dalam radian lho End If
If a < h Then
Ac = h ^ 2 * (teta1 - Sin(teta1) * Cos(teta1)) / 4 y_ = h ^ 3 * Sin(teta1) ^ 3 / (12 * Ac) y0 = h / 2 - y_ End If Cc = Ac * 0.85 * fc End Sub '============================================================| 'Konversi Tulangan Perimeter Bulat ke lapis horizontal=======|
Sub LayerTul_Kol_Bulat(h, d1, nbar, dbar, n_layer) phi1 = 360 / nbar
alfa = phi1 / 2 r = 0.5 * h - d1 k = nbar Mod 2 If k = 0 Then
'jumlah tulangan genap n_layer = nbar / 2 Else n_layer = (nbar + 1) / 2 alfa = 0 End If For i = 1 To n_layer teta1 = alfa + phi1 * (i - 1)
y(i) = 0.5 * h - r * Cos(teta1 * phi / 180) If k = 1 And i = 1 Then Atul(i) = LuasTul(D_tul) Else Atul(i) = 2 * LuasTul(D_tul) End If Next i End Sub '============================================================| 'Konversi Tulangan Perimeter Bulat ke lapis horizontal=======|
Sub LayerTul_Kol_Persegi(h, d1, nbar, dbar, n_layer) n_layer = nbar / 4 + 1 r = h - (2 * d1) spasi = r / (n_layer - 1) For i = 1 To n_layer y(i) = d1 + spasi * (i - 1) If i = 1 Or i = n_layer Then
Atul(i) = LuasTul(D_tul) * n_layer Else Atul(i) = 2 * LuasTul(D_tul) End If Next i End Sub '============================================================|
'konstanta beton desak ultimate bentuk persegi equivalent ===| Function Beta1(fc) If fc <= 30 Then Beta1 = 0.85 ElseIf fc > 58 Then Beta1 = 0.65 Else Beta1 = 0.85 - (fc - 30) * 0.05 / 7 End If End Function '============================================================| 'fungsi tegangan-regangan baja tulangan bi-linier ===========|
Function fSteel(reg) Es = 200000 If reg < fy / Es Then fSteel = reg * Es Else fSteel = fy End If End Function
Private Sub Command1_Click() 'check validitas data
If d1 < D_tul / 2 + 20 Then T = Round(D_tul / 2 + 20)
Msg = "Jarak titik berat tulangan terlalu kecil "
Msg = Msg + "sebaiknya berjarak >= " + Str(T) + " mm" Title = "Evaluasi jarak titik berat tulangan ketepi " d1 = InputBox(Msg, Title, T)
Text2.Text = d1 End If
If h < 5 * d1 Then T = Round(5 * d1)
Msg = "Ukuran kolom terlalu kecil "
Msg = Msg + "sebaiknya >= " + Str(T) + " mm" Title = "Evaluasi ukuran kolom "
h = InputBox(Msg, Title, T) Text1.Text = h
End If
If Option1.Value = True Then 'Persyaratan untuk kolom persegi If n_tul Mod 4 <> 0 Then
Msg = "Jumlah tulangan harus kelipatan 4 " Title = "Evaluasi jumlah tulangan yang dipasang" qa = Round(n_tul / 4, 0)
qa = qa * 4
n_tul = InputBox(Msg, Title, qa) End If
Else
'Persyaratan untuk kolom bulat If n_tul < 4 Then
Msg = "Jumlah tulangan minimum 4 "
Title = "Evaluasi jumlah tulangan yang dipasang" n_tul = InputBox(Msg, Title, 4)
End If End If
Hitung End Sub
Private Sub Form_Load()
'menetapkan parameter-parameter pertama kali
T = "Diagram Interaksi Kolom Bujur Sangkar & Lingkaran" Form1.Caption = T Picture2.Height = Picture1.Height * 0.25 Picture2.Width = Picture2.Height k = Picture1.Width - Picture2.Width Picture2.Left = k + Picture1.Left * 2 / 3 Picture2.Top = Picture1.Top + 50 Picture2.BorderStyle = 0 bacaData If TipeKol = 1 Then
Option1.Value = True ' kolom bujur sangkar Else
Option2.Value = True ' kolom lingkaran End If Text1.Text = h Text2.Text = d1 Text3.Text = n_tul Text4.Text = D_tul Text5.Text = fy Text6.Text = fc Text7.Text = ttk_tbh Text8.Text = Pu Text9.Text = Mu Text10.Text = red_k Text11.Text = red_b Hitung Plot_KurvaINT End Sub Sub bacaData()
Open "default.txt" For Input As #1
Input #1, h, d1, n_tul, D_tul ' geometri penampang Input #1, fy, fc ' properti material
Input #1, red_k, red_b Input #1, ttk_tbh Input #1, Pu, Mu Input #1, TipeKol Close #1 End Sub Sub saveData()
Open "default.txt" For Output As #1
Write #1, h, d1, n_tul, D_tul ' geometri penampang Write #1, fy, fc ' properti material
Write #1, red_k, red_b Write #1, ttk_tbh Write #1, Pu, Mu Write #1, TipeKol Close #1 End Sub Sub ChangeInterface()
End Sub
Private Sub Option1_Click()
If Option1.Value Then TipeKol = 1 ChangeInterface
Plot_Penampang End Sub
Private Sub Option2_Click()
If Option2.Value Then TipeKol = 0 ChangeInterface
Plot_Penampang End Sub
Private Sub Text1_Change() h = Val(Text1.Text) ChangeInterface End Sub
Private Sub Text2_Change() d1 = Val(Text2.Text)
If d1 > 0 Then ChangeInterface End Sub
Private Sub Text3_Change() n_tul = Val(Text3.Text) ChangeInterface End Sub
Private Sub Text4_Change() D_tul = Val(Text4.Text)
If D_tul > 0 Then ChangeInterface End Sub
Private Sub Text5_Change() fy = Val(Text5.Text)
If fy > 0 Then ChangeInterface End Sub
Private Sub Text6_Change() fc = Val(Text6.Text)
If fc > 0 Then ChangeInterface End Sub
Private Sub Text7_Change() ttk_tbh = Val(Text7.Text) ChangeInterface
End Sub
Private Sub Text8_Change() Pu = Val(Text8.Text)
If Pu > 0 Then ChangeInterface End Sub
Private Sub Text9_Change() Mu = Val(Text9.Text)
If Mu > 0 Then ChangeInterface End Sub
Private Sub Text10_Change() red_k = Val(Text10.Text) ChangeInterface
End Sub
Private Sub Text11_Change() red_b = Val(Text11.Text) ChangeInterface End Sub '============================================================| '=== P L O T P E N A M P A N G T U L A N G A N ====| '============================================================| Sub gbrTul(x, y) Picture2.DrawWidth = 1 Picture2.FillColor = vbRed
Picture2.Circle (x, y), D_tul / 2, vbRed End Sub
Sub Plot_Penampang()
'Mengatur bidang gambar , kira-kira 108% dari objek 'sekaligus mengatur agar sumbu (0,0) ada di tengah xa = -h * 1.08 / 2
xb = -xa ya = xa yb = -ya
Picture2.Scale (xa, ya)-(xb, yb) Picture2.Cls
'Mengatur agar setiap gambar lingkaran adalah solid Picture2.FillColor = vbWhite
Picture2.FillStyle = 0
If Option1.Value = True Then Gambar_Kolom_Persegi Else Gambar_Kolom_Lingkaran End If End Sub '============================================================| 'Gambar potongan kolom di pojok kanan atas ==================|
Sub Gambar_Kolom_Lingkaran() '==================| 'Gambar Penampang Lingkaran
Picture2.DrawWidth = 2 Picture2.Circle (0, 0), h / 2 'Gambar sengkang
sengkang = h / 2 - d1 + D_tul / 2 Picture2.DrawWidth = 1
Picture2.Circle (0, 0), sengkang, vbBlue 'Gambar Tulangan phi1 = 360 / n_tul alfa = phi1 / 2 r = 0.5 * h - d1 k = n_tul Mod 2 If k = 0 Then
'jumlah tulangan genap n_layer = n_tul / 2 Else
n_layer = (n_tul + 1) / 2 alfa = 0
End If
For i = 1 To n_layer teta1 = alfa + phi1 * (i - 1) y_ = -r * Cos(teta1 * phi / 180) x_ = y_ * Tan(teta1 * phi / 180) If k = 1 And i = 1 Then
'untuk jumlah tulangan ganjil 'dan khusus yang paling atas Call gbrTul(0, y_)
Else
'untuk jumlah tulangan genap Call gbrTul(-x_, y_)
Call gbrTul(x_, y_) End If Next i Picture2.CurrentX = -25 Picture2.CurrentY = -20 T = Format(Persen_Tul, ".0") + "%" Picture2.Print T End Sub '============================================================| 'Gambar potongan kolom di pojok kanan atas ==================|
Sub Gambar_Kolom_Persegi() '==================| 'Persyaratan untuk kolom persegi
If n_tul Mod 4 <> 0 Then
Msg = "Jumlah tulangan harus kelipatan 4 " Title = "Evaluasi jumlah tulangan yang dipasang" qa = Round(n_tul / 4, 0)
qa = qa * 4
n_tul = InputBox(Msg, Title, qa) End If
'Gambar Penampang Persegi Picture2.DrawWidth = 2 Picture2.Line (-h / 2, h / 2)-(h / 2, -h / 2), , B 'Gambar sengkang hs = h / 2 - d1 + D_tul / 2 Picture2.DrawWidth = 1 Picture2.Line (-hs, hs)-(hs, -hs), vbBlue, B 'Gambar Tulangan r = 0.5 * h - d1 n_layer = n_tul / 4 + 1 spasi = 2 * r / (n_layer - 1) For i = 1 To n_layer x_ = -r + spasi * (i - 1) For j = 1 To n_layer y_ = r - spasi * (j - 1)
If i = 1 Or i = n_layer Or j = 1 Or j = n_layer Then Call gbrTul(x_, y_)
End If Next j Next i Picture2.CurrentX = -25 Picture2.CurrentY = -20 T = Format(Persen_Tul, ".0") + "%" Picture2.Print T
End Sub
'============================================================| 'plot diagram interaksi kolom termasuk yang tereduksi =======|
Sub Plot_KurvaINT() '=======| 'Mengatur bidang gambar , kira-kira 110% dari objek 'sekaligus mengatur agar sumbu (0,0) ada di tengah ymax = 0
ymin = 0 xmin = 0 xmax = 0
For i = 1 To nttk_kurva
If ymax < titik_PM(i, 1) Then ymax = titik_PM(i, 1) If ymin > titik_PM(i, 1) Then ymin = titik_PM(i, 1) If xmax < titik_PM(i, 2) Then xmax = titik_PM(i, 2) Next i
tinggi = ymax - ymin lebar = xmax - xmin sy = 0.05 * tinggi sx = 0.05 * lebar xkr = xmin - sx xkn = xmax + sx yat = ymax + sy ybw = ymin - sy
Picture1.Scale (xkr, yat)-(xkn, ybw) Picture1.Cls
'=================================================| 'bikin sumbu
Picture1.Line (xkr, 0)-(xkn, 0) Picture1.Line (0, yat)-(0, ybw)
'=================================================| 'gambar daerah kurva nominal sebelum direduksi
Pn0 = titik_PM(1, 1) Mn0 = titik_PM(1, 2) PnMax = titik_PM(2, 1) MnMin = titik_PM(2, 2) Pnb = titik_PM(3 + ttk_tbh, 1) Mnb = titik_PM(3 + ttk_tbh, 2) 'grs diagonal dari puncak ke Mn-min Picture1.DrawWidth = 1
Picture1.DrawStyle = vbDot 'grs diagonal|
Picture1.Line (0, Pn0)-(MnMin, PnMax) 'grs diagonal eksentrisitas
Picture1.Line (0, 0)-(MnMin, PnMax), vbGreen Picture1.Line (0, 0)-(Mnb, Pnb), vbGreen 'grs kurva Picture1.DrawWidth = 1 Picture1.DrawStyle = vbSolid Picture1.CurrentX = 0 Picture1.CurrentY = PnMax For i = 2 To nttk_kurva xb = titik_PM(i, 2) yb = titik_PM(i, 1) Picture1.Line -(xb, yb)
Next i
Picture1.DrawWidth = 1
'=================================================| '
gambar nomor titik kurva For i = 1 To nttk_kurva xa = titik_PM(i, 2) ya = titik_PM(i, 1) With Picture1 .CurrentX = xa .CurrentY = ya oldColor = .ForeColor .ForeColor = vbBlue Picture1.Print i .ForeColor = oldColor End With Next i '=================================================| 'gambar daerah kurva nominal setelah direduksi
P = red_PM(2, 1) Picture1.DrawWidth = 2 Picture1.DrawStyle = vbSolid Picture1.CurrentX = 0 Picture1.CurrentY = P For i = 2 To nttk_kurva xb = red_PM(i, 2) yb = red_PM(i, 1) Picture1.Line -(xb, yb) Next i Picture1.DrawWidth = 1 '=================================================| 'gambar Pu dan Mu pada kurva
If Pu > 0 Or Mu > 0 Then With Picture1
.DrawWidth = 1 .FillColor = vbGreen tt = lebar * 0.018
Picture1.Circle (Mu, Pu), tt, vbRed .DrawWidth = 1
tt = lebar * 0.04
Picture1.Line (Mu - tt, Pu)-(Mu + tt, Pu) tt = tinggi * 0.04
Picture1.Line (Mu, tt + Pu)-(Mu, Pu - tt) End With
End If End Sub
'============================================================| 'Menyiapkan tampilan MSFlexGrid untuk gaya reaksi tumpuan ===|
Sub Tabulasi() '==================| With MSFlexGrid1
.Visible = True
.Rows = nttk_kurva + 1 ' jml brs termasuk judul .Cols = 3 ' jml kol
.ColWidth(0) = 500 ' lebar kolom pertama 'Menentukan ukuran jendela grid yang ditampilkan If nttk_kurva <= 6 Then
.ColWidth(1) = 1060
.Width = .ColWidth(0) + 2 * .ColWidth(1) + 100 .Height = (nttk_kurva + 1) * .RowHeight(0) + 88 Else
.ColWidth(1) = 970
.Width = .ColWidth(0) + 2 * .ColWidth(1) + 300 .Height = 6 * .RowHeight(0) + 88
End If
.ColWidth(2) = .ColWidth(1)
'Menempatkan label di baris judul horizontal .ColAlignment(0) = flexAlignCenterCenter .ColAlignment(1) = flexAlignCenterCenter .TextMatrix(0, 0) = "No"
.TextMatrix(0, 1) = Space(3) & "Pn (kN)" .TextMatrix(0, 2) = Space(3) & "Mn (kNm)" For i = 1 To nttk_kurva
P = titik_PM(i, 1) M = titik_PM(i, 2) .TextMatrix(i, 0) = i
.TextMatrix(i, 1) = Format(P, "#.0")
.TextMatrix(i, 2) = Format(M, "#.0") & Space(5) Next i
End With End Sub
Sub Print_Header()
Print #1, " Diagram Interaksi================================" Print #1, " ### ### ### ##### ### ###"
Print #1, " ### ### ##### ### ### ### ##### .####" Print #1, " ### ### ### ### ### ### ### ### #######" Print #1, " ### ### ### ### ### ### ### ### #' ###" Print #1, " ### ### ### ### ######## ##### ### ###" Print #1, " ### ### ##### Bujur Sangkar dan Lingkaran" Print #1, " ### ### by AndREW_5ihiTe" Print #1, "Jurusan Teknik Sipil - Universitas Sumatera Utara"
Print #1, "================================================" Print #1,
Print #1, "Beton Berpenampang "; If Option1.Value = True Then
Print #1, "Bujur Sangkar: h = "; Format(h, "0"); " mm , "; Else
Print #1, "Lingkaran: dia. = "; Format(h, "0"); " mm , "; End If
Print #1, "fc "; Format(fc, "0"); " MPa"
Print #1, "Baja Tulangan: "; Format(n_tul, "0"); "-D"; Print #1, Format(D_tul, "0");
Print #1, " , fy "; Format(fy, "0"); " MPa ,"; Print #1, " c-to-c ke tepi: "; Format(d1, "0"); " mm" Print #1, "Jumlah titik pada kurva yang ditinjau :"; Print #1, nttk_kurva
Print #1, End Sub