บทที่ 13 Design Results
การอ่าน Design Results
นอกจาก Analysis Results (Force/Displacement) แล้ว ETABS API ยังสามารถอ่านผลการออกแบบ (Design Results) ได้ ซึ่งสำคัญมากสำหรับงานตรวจสอบความปลอดภัยของโครงสร้าง
Steel Design Results
การอ่านผลออกแบบโครงสร้างเหล็ก (Steel Frame Design):
1. อ่าน Summary Results
อ่านค่า P-M Interaction Ratio (Usage Ratio) ของทุก member:
# Function: GetSummaryResults# ret, Name, Ratio, RatioType, Location, ComboName, ErrorStr, WarningStr = ...
ret, num_res, names, ratios, ratio_types, locations, combos, errs, warns = \ sap_model.DesignSteel.GetSummaryResults()
check(ret, "DesignSteel.GetSummaryResults")
print(f"\n🏗️ Steel Design Summary ({num_res} members):")print(f"{'Frame':<10} {'Ratio':<8} {'Combo':<15} {'Status':<10}")print("─" * 45)
for i in range(num_res): status = "✅ OK" if ratios[i] < 1.0 else "❌ FAIL" print(f"{names[i]:<10} {ratios[i]:<8.3f} {combos[i]:<15} {status}")2. กรองเฉพาะ Member ที่ไม่ผ่าน (Fail)
import pandas as pd
df_steel = pd.DataFrame({ "Frame": names, "Ratio": ratios, "Combo": combos, "Error": errs,})
# หา member ที่ Ratio > 1.0fails = df_steel[df_steel["Ratio"] > 1.0]
if not fails.empty: print(f"\n⚠️ พบ {len(fails)} members ที่ไม่ผ่าน:") print(fails.sort_values(by="Ratio", ascending=False).to_string(index=False))else: print("\n✅ โครงสร้างเหล็กผ่านทุกชิ้นส่วน")Concrete Design Results
การอ่านผลออกแบบคอนกรีตเสริมเหล็ก (Concrete Frame Design):
1. อ่านปริมาณเหล็กเสริมตามยาว (Longitudinal Rebar)
# Function: GetSummaryResults (Concrete)# item type 2 = Column P-M-M Interaction# item type 1 = Beam Flexure
ret, num_res, names, my_option, locations, \ p_mm_combo, p_mm_area, \ v_major_combo, v_major_area, \ v_minor_combo, v_minor_area, \ errs, warns = sap_model.DesignConcrete.GetSummaryResults()
check(ret, "DesignConcrete.GetSummaryResults")
print(f"\n🏢 Concrete Design Summary ({num_res} items):")for i in range(min(num_res, 10)): # แสดง 10 ตัวอย่างแรก if p_mm_area[i] > 0: print(f" {names[i]}: Rebar Area = {p_mm_area[i]:.4f} (Combo: {p_mm_combo[i]})")2. อ่าน Beam Design (Flexure)
สำหรับคานคอนกรีต เรามักสนใจเหล็กเสริมบน (Top) และล่าง (Bottom):
# ต้องใช้ method เจาะจงสำหรับ Beam# GetDetailedResultsBeam(Name, ItemType...)# API นี้ซับซ้อนและ return ค่าเยอะมาก แนะนำให้ใช้ Summary แล้วกรองเอาShear Wall Design
การอ่านผลออกแบบผนังรับแรงเฉือน:
ret, num_res, names, pier_names, \ edge_members, rebar_area, \ ratios, combos, errs, warns = \ sap_model.DesignShearWall.GetSummaryResults()
check(ret, "DesignShearWall.GetSummaryResults")
print(f"\n🧱 Shear Wall Design:")for i in range(num_res): print(f" {names[i]} (Pier {pier_names[i]}): Rebar = {rebar_area[i]:.4f}")ตัวอย่าง: Export Design Report
รวมผล Analysis และ Design เข้าด้วยกันแล้ว export:
# 1. อ่าน Analysis Results (Force)# ... (ดูบทที่ 7)
# 2. อ่าน Design Results (Ratio)ret, n, st_names, st_ratios, *_ = sap_model.DesignSteel.GetSummaryResults()
# สร้าง Dictionary เพื่อ map ชื่อ frame -> ratiodesign_map = dict(zip(st_names, st_ratios))
# 3. รวมข้อมูลreport_data = []for frame in frame_names: ratio = design_map.get(frame, 0.0)
# ... logic อื่นๆ ...
report_data.append({ "Frame": frame, "UsageRatio": ratio, "Status": "PASS" if ratio <= 1.0 else "FAIL" })
pd.DataFrame(report_data).to_excel("DesignReport.xlsx", index=False)Checklist
- รัน Analysis และ Design ใน ETABS แล้ว
- เลือก code (AISC/ACI) ใน ETABS ให้ถูกต้องก่อน
- ตรวจหน่วย (Units) ให้ดีโดยเฉพาะ Rebar Area ($m^2$ vs $cm^2$)
- เข้าใจว่า API อ่านได้แค่ Summary ถ้าต้องการ Detailed Calculation ต้องดูใน ETABS