الاستاذ مجدى
عزيزي الزائر / عزيزتي الزائرة يرجي التكرم بتسجبل الدخول اذا كنت عضو معنا
او التسجيل ان لم تكن عضو وترغب في الانضمام الي اسرة المنتدي
سنتشرف بتسجيلك
شكرا
ادارة المنتدي







 
الرئيسيةالأستاذ التعليماليوميةس .و .جبحـثالأعضاءضع التسجيلالمجموعاتدخولالتسجيل
سبحانك لا علم لنا إلا ما علمتنا أنك أنت العليم
عزيزى الزائر قم بالتسجيل بالمنتدى لمشاهدة باقى الاقسام المهمه
مع تحيات مجدى عبد المنعم محمود يونس ببورسعيد " مدير المنتدى "
أهلا بك من جديد يا زائر آخر زيارة لك كانت في
آخر عضو مسجل ابراهيم اسوان فمرحبا به


شاطر | 
 

 تطبيقات برمجة إكسل - التطبيق الثاني - إضافة تابع حساب تسليح مقطع 2:

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة
مجدى يونس
Admin
avatar

عدد المساهمات : 816
تاريخ التسجيل : 22/02/2013
العمر : 63

مُساهمةموضوع: تطبيقات برمجة إكسل - التطبيق الثاني - إضافة تابع حساب تسليح مقطع 2:   الإثنين ديسمبر 02, 2013 2:50 pm

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

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



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

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

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

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

http://www.jwdstructure.com/downloads/vba/excel-exercise02.zip


_________________
عندما تولد يابن ادم يؤذن فى أذنك من غير صلاة وعندما تموت يصلى عليك من غير أذان وكأن حياتك فى الدنيا ليست سوى الوقت الذى تقضيه بين الأذان والصلاة فلا تقضيهما فيما لاينفع
---((الله ناظرى الله سامعى الله مطلع علي))-

الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://magdi54.forumegypt.net
 
تطبيقات برمجة إكسل - التطبيق الثاني - إضافة تابع حساب تسليح مقطع 2:
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
الاستاذ مجدى :: قسم مجموعة الاوفيس :: قسم الاكسل-
انتقل الى: