ข้ามไปยังเนื้อหา

บทที่ 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.0
fails = 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 -> ratio
design_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