JWDStructure

دروس VBA Excel

تطبيقات برمجة إكسل - التطبيق الثاني - إضافة تابع حساب تسليح مقطع 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)

الشكل (1)
الشكل (1): إدراج المعادلة بعد اختيار المجال D7:E7 وهو عبارة عن خليتين

ثم نضغط Ctrl+Shift+Enter ونعيد نفس الخطوات لبقية الأسطر (أو ننسخ هاتين الخليتين إلى بقية الأسطر) فنحصل على صفحة النتائج التالية:

الشكل (2)
الشكل (2): النتائج النهائية

إن تسليح العزم 13 كن.م هو تسليح أصغري، أما العزم 60 كن.م فتسليحه حسابي، وهي نفس نتائج التابع السابق.

نلاحظ أن تسليح المقطع على العزم 128 كن.م هو تسليح ثنائي، أما العزم 200 كن.م فلا يمكن تحمله ويجب تغيير أبعاد المقطع.

خاتمة

قمنا في هذا التطبيق بمتابعة كتابة برنامج تصميم وحساب تسليح مقطع مستطيل خاضع لعزم حدي مصعد، بحسب الطريقة الحدية ومعطيات الكود العربي السوري، هذا البرنامج الذي بدأنا كتابته في التطبيق السابق.

تحميل