تطبيقات برمجة إكسل - التطبيق الثاني - إضافة تابع حساب تسليح مقطع 2
هذا التطبيق هو تتمة للتطبيق الأول، وتم نشرهما سابقاً مع الدرس الخامس في ملتقى المهندسين العرب في موضوع واحد.
المستوى
- مبتدئ
مقدمة
تعلمنا في التطبيق السابق كيف نقوم بكتابة تابع لحساب تسليح مقطع مستطيل خاضع لعزم حدي مصعد بحسب معطيات الكود العربي السوري، بتسليح شد فقط، وقمنا بشرح طريقة الحساب نظرياً.
سنقوم الآن بتعديل تابع حساب التسليح السابق ليقوم بحساب التسليح الثنائي عند الحاجة، ويفضل قبل المتابعة مراجعة التطبيق السابق وعلاقات التصميم وكذلك الدرس الخامس.
المهارات المطلوبة:
- معرفة بسيطة بلغة Visual Basic أي (VB).
- معرفة باستخدام أوامر إكسل الأساسية.
- يفضل أن تكون مهندساً مدنياً أو طالباً في الهندسة المدنية لفهم العلاقات المستخدمة.
- قراءة الدرس الخامس وما سبقه.
- قراءة التطبيق الأول مع علاقات التصميم النظرية فيه.
تعديل التابع الذي تمت كتابته في التطبيق السابق
إن التابع السابق كان يعيد قيمة واحدة فقط، وأول تعديل سنجريه هو على سطر تعريف التابع حيث سنضيف قوسين إلى آخر السطر لنخبر فيجوال بيسيك أن هذا التابع سيعيد مصفوفة أعداد حقيقية، ليصبح:
Public Function RectMomentLimit2(Mu As Single, B
As Single, d As Single, _
d1 As Single, fy As Single, fc As Single) As Single()
أما التعديل الثاني فهو لحساب التسليح الثنائي، أي إضافة برنامج حساب التسليح الثنائي عندما يكون تسليح الشد الناتج سابقاً أكبر من التسليح الأعظمي (في التطبيق السابق أعدنا القيمة -1 وهنا سنقوم بالتعديل):
If tAs < As_min Then
tAs = As_min
ElseIf tAs > As_max Then
Dim Mu1 As Single
alpha = mu_max * fy / (0.85 * fc)
gamma = 1 - alpha / 2
Mu1 = OMEGA * As_max * fy * gamma * d
cAs = (Mu - Mu1) / (OMEGA * fy * (d - d1))
tAs = As_max + cAs
If tAs > 1.5 * As_max Then
tAs = -1: cAs = -1
End If
End If
قمنا أولاً بحساب العزم Mu1 الذي يتحمله المقطع إذا قمنا بتسليحه تسليحاً أحادياً أعظمياً، ثم حسبنا تسليح الضغط cAs ثم حسبنا تسليح الشد النهائي tAs كما هو موضح في العلاقات الموضحة في التطبيق السابق.
ثم قمنا باختبار قيمة تسليح الشد النهائية إن كانت أكبر من مرة ونصف التسليح الأعظمي الأحادي، فإن كانت كذلك نغير قيم تسليح الشد والضغط إلى -1 للدلالة على صغر المقطع.
حتى هذه النقطة حصلنا على قيمة تسليح الضغط في المتحول cAs وقيمة تسليح الشد في المتحول tAs.
الآن نتبع الخطوات السابقة لإسناد هاتين القيمتين إلى مصفوفة جديدة مكونة هذه المرة من سطر واحد وعمودين، ونستبدل السطر الأخير في التابع السابق (في التطبيق السابق) بالأسطر التالية:
Dim result(0, 0 To 1) As Single
result(0, 0) = tAs
result(0, 1) = cAs
RectMomentLimit2 = result
التابع كاملاً أصبح كما يلي:
Public Function RectMomentLimit2(Mu As Single, B
As Single, d As Single, _
d1 As Single, fy As Single, fc As Single) As Single()
Dim OMEGA As Single: OMEGA = 0.9
Dim mu_min As Single, mu_max As Single
Dim As_min As Single, As_max As Single
mu_min = 0.9 / fy
mu_max = 0.5 * 455 / (630 + fy) * fc / fy
As_min = mu_min * B * d: As_max = mu_max * B * d
Dim A0 As Single, alpha As Single, gamma As Single
Dim tAs As Single, cAs As Single
A0 = Mu / (OMEGA * B * d ^ 2 * 0.85 * fc)
alpha = 1 - Sqr(1 - 2 * A0)
gamma = 1 - alpha / 2
tAs = Mu / (OMEGA * gamma * d * fy)
If tAs < As_min Then
'حالة التسليح الأصغري
tAs = As_min
ElseIf tAs > As_max Then
'حالة التسليح الثنائي
Dim Mu1 As Single
alpha = mu_max * fy / (0.85 * fc)
gamma = 1 - alpha / 2
Mu1 = OMEGA * As_max * fy * gamma * d
cAs = (Mu - Mu1) / (OMEGA * fy * (d -
d1))
tAs = As_max + cAs
If tAs > 1.5 * As_max Then
'المقطع صغير ولا يتحمل العزم
tAs = -1: cAs
= -1
End If
End If
Dim result(0, 0 To 1) As Single
result(0, 0) = tAs
result(0, 1) = cAs
RectMomentLimit2 = result
End Function
لاستخدامه نعود إلى ملف إكسل السابق (الذي صممناه في التطبيق السابق)، ونختار المجال D7:E7 المكون من خليتين على سطر واحد ثم نكتب المعادلة التالية:
=RectMomentLimit2(B7;$B$2;$D$2;$B$3;$B$1;$D$1)
ثم نضغط Ctrl+Shift+Enter ونعيد نفس الخطوات لبقية الأسطر (أو ننسخ هاتين الخليتين إلى بقية الأسطر) فنحصل على صفحة النتائج التالية:
إن تسليح العزم 13 كن.م هو تسليح أصغري، أما العزم 60 كن.م فتسليحه حسابي، وهي نفس نتائج التابع السابق.
نلاحظ أن تسليح المقطع على العزم 128 كن.م هو تسليح ثنائي، أما العزم 200 كن.م فلا يمكن تحمله ويجب تغيير أبعاد المقطع.
خاتمة
قمنا في هذا التطبيق بمتابعة كتابة برنامج تصميم وحساب تسليح مقطع مستطيل خاضع لعزم حدي مصعد، بحسب الطريقة الحدية ومعطيات الكود العربي السوري، هذا البرنامج الذي بدأنا كتابته في التطبيق السابق.
تحميل
- ملف
الإكسل الذي يحوي البرنامج النهائي مع برنامج التطبيق السابق
تذكر أن تقوم بتفعيل الماكرو عند فتح الملف كما تعلمت في الدرس الأول.
هاتف: +963-31-2220008
جوال: +963-999-824193
سوريا - حمص