BAB V KESIMPULAN DAN SARAN
V.2. Saran
Program Diagram Interaksi Kolom ini dapat dilanjutkan kembali dengan
menambahkan faktor-faktor yang lain, misalnya untuk dibuat lagi program untuk menghitung kolom Persegi dan kolom Komposit.
DAFTAR PUSTAKA
.
Dewobroto, Wiryanto., (2003), Aplikasi Sains dan Teknik dengan Visual Basic6.0, PT. Elex Media Komputindo, Jakarta.
--- (2005), Aplikasi Rekayasa Konstruksi dengan Visual Basic 6.0, PT. Elex Media Komputindo, Jakarta.
--- (2007), Aplikasi Rekayasa Konstruksi dengan SAP2000, PT. Elex Media Komputindo, Jakarta.
Dipohusodo, Istimawan., (1994). Struktur Beton Bertulang : Berdasarkan SK SNI T- 15-1991-03 Departemen Pekerjaan Umum RI. Jakarta : Penerbit PT Gramedia Pustaka Utama.
Hadi, Rahadian., (2006), Pengenalan VISUAL BASIC. PT. Elex Media Komputindo, Jakarta.
Kia Wang, Chu. Salmon, Charles G., (1985), Reinforced Concrete Design, Fourth Edition. Trans.. Hariandja, Ir.Binsar, M.Eng., Ph.D... Disain Beton Bertulang, Edisi Keempat. Jakarta : Erlangga.
Panitia Teknik Standarisasi., (2002), Tata Cara Perhitungan Struktur Beton Untuk Bangunan Gedung – Sk Sni 03-2847-2002. Bandung : Badan Standarnisasi Nasional.
Vis, W.C dan Gideon Kusuma., (1994), Dasar-Dasar Perencanaan Beton Bertulang. Penerbit Erlangga. Jakarta.
Wahana Komputer, Tim Penelitian dan Pengembangan., (2002), Pembuatan Program Aplikasi Konstruksi (Retaining Wall) Dengan Visual Basic 6.0. Salemba Infotek, Jakarta.
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