กลับไปยังบล็อก BIM และ IFC
การตรวจสอบ · 2026-10-01 · 12 นาที
IDS คืออะไร: วิธีตรวจโมเดล IFC ด้วย Information Delivery Specification
IDS เปลี่ยนประโยค “โมเดลต้องมีค่าอัตราการทนไฟ” ในไฟล์ PDF ให้กลายเป็นไฟล์ที่เครื่องตรวจได้ บทความนี้อธิบายว่า facet ทั้ง 6 ตรวจอะไรจริง ๆ ไฟล์ IDS ส่วนใหญ่ผิดพลาดตรงไหน และวิธีรัน IDS กับไฟล์ IFC ของคุณในเบราว์เซอร์
IDS คืออะไร: วิธีตรวจโมเดล IFC ด้วย Information Delivery Specification — IFC Viewer Online article cover
EIR แทบทุกฉบับมีประโยคประมาณว่า “ประตูทุกบานต้องระบุอัตราการทนไฟ” และในทุกโครงการ ประโยคนี้ถูกตรวจแบบเดียวกัน คือมีคนเปิดโมเดล คลิกดูประตูสักสองสามบาน แล้วสรุปว่า “น่าจะโอเค” ข้อกำหนดนั้นชัดเจน แต่การตรวจกลับอาศัยความรู้สึก
IDS หรือ Information Delivery Specification มีไว้เพื่อปิดช่องว่างนี้ มันคือรูปแบบ XML ขนาดเล็กที่ buildingSMART กำหนดเป็นมาตรฐานในชื่อ IDS 1.0 ใช้เขียนข้อกำหนดด้านข้อมูลในรูปที่เครื่องทดสอบได้ เขียนข้อกำหนดครั้งเดียว ส่งไฟล์ .ids ให้ผู้รับจ้างทุกราย แล้วคำว่า “น่าจะโอเค” จะกลายเป็น “ประตู 412 จาก 418 บานผ่าน และนี่คือ 6 บานที่ไม่ผ่าน”
ประเด็นสำคัญ
- IDS ตรวจข้อมูล ไม่ใช่เรขาคณิต ได้แก่ คลาส attribute property การจำแนก วัสดุ และความสัมพันธ์
- ทุก specification มีสองส่วน คือใช้กับองค์ประกอบใด และองค์ประกอบเหล่านั้นต้องมีอะไร ไฟล์ IDS ที่มีปัญหาส่วนใหญ่ผิดตั้งแต่ส่วนแรก
- IDS คือเอกสารสัญญา ควรเก็บคู่กับ BEP พร้อมจัดการเวอร์ชัน และส่งให้ผู้รับจ้างก่อนเริ่มทำโมเดล ไม่ใช่หลังการตีกลับครั้งแรก
โครงสร้างของ specification
specification ของ IDS อ่านได้เป็นหนึ่งประโยค: ทุกองค์ประกอบที่ตรงขอบเขตการใช้ ต้องผ่านข้อกำหนด
ไฟล์ IDS คือรายการของ specification แต่ละรายการอ่านได้เหมือนประโยคที่มีประธานและภาคแสดง คือ “สำหรับทุกองค์ประกอบที่ตรงกับเงื่อนไขนี้ ให้กำหนดสิ่งนั้น” ประธานคือขอบเขตการใช้ (applicability) ส่วนภาคแสดงคือข้อกำหนด (requirements)
<specification name="Doors carry a fire rating" ifcVersion="IFC4">
<applicability minOccurs="1">
<entity><name><simpleValue>IFCDOOR</simpleValue></name></entity>
</applicability>
<requirements>
<property dataType="IFCLABEL">
<propertySet><simpleValue>Pset_DoorCommon</simpleValue></propertySet>
<baseName><simpleValue>FireRating</simpleValue></baseName>
</property>
</requirements>
</specification>
ลองอ่านออกเสียงดู มันคือประโยคใน EIR เป๊ะ ๆ คือ IfcDoor ทุกชิ้นต้องมี FireRating ใน Pset_DoorCommon และเก็บเป็นชนิด label ส่วน minOccurs="1" ในขอบเขตการใช้เพิ่มเงื่อนไขข้อที่สองที่มักถูกมองข้าม คือโมเดลต้องมีประตูอย่างน้อยหนึ่งบาน ถ้าไม่มีเงื่อนไขนี้ โมเดลที่ไม่มีประตูเลยก็จะผ่าน ซึ่งแทบไม่มีใครตั้งใจแบบนั้น
facet ทั้ง 6 และสิ่งที่แต่ละตัวตรวจจริง ๆ
| Facet | ตรวจอะไร | ข้อกำหนดทั่วไป | กับดักที่พบบ่อย |
|---|
| Entity | คลาส IFC และ predefined type | ผนังต้องเป็น IfcWall ไม่ใช่ IfcBuildingElementProxy | ลืม subtype: ใน IFC2x3 IfcWallStandardCase ก็คือ IfcWall |
| Attribute | attribute ของ IFC โดยตรง (Name, Description, Tag…) | ทุก space มี Name และ LongName | สตริงว่างคือ “มีอยู่แต่ไม่ถูกต้อง” ไม่ใช่ “ไม่มี” |
| Property | property ใน property set พร้อมชนิดข้อมูลและค่า | Pset_WallCommon.IsExternal เป็น TRUE หรือ FALSE | ค่าถูก แต่ชนิดข้อมูลผิด (เป็น label ในที่ที่ต้องการ boolean) |
| Classification | การอ้างอิงระบบจำแนกและรหัส | ทุกองค์ประกอบมีรหัส Uniclass Ss | ตรวจรหัสแต่ไม่ตรวจระบบจำแนกที่รหัสนั้นสังกัด |
| Material | ชื่อหรือหมวดหมู่วัสดุที่เชื่อมโยงไว้ | เสาโครงสร้างระบุวัสดุ | วัสดุอยู่ที่ type ไม่ได้อยู่ที่ occurrence |
| PartOf | ความสัมพันธ์กับองค์ประกอบแม่ | ทุกองค์ประกอบอยู่ในชั้นใดชั้นหนึ่ง | สับสนระหว่าง aggregation กับการบรรจุเชิงพื้นที่ |
แต่ละ facet อยู่ในขอบเขตการใช้ (เพื่อเลือกองค์ประกอบ) หรืออยู่ในข้อกำหนด (เพื่อกำหนดสิ่งที่องค์ประกอบต้องมี) ก็ได้
กับดักสองข้อในนั้นควรดูให้ละเอียดขึ้น เพราะเป็นต้นเหตุของผลตรวจผิดพลาดส่วนใหญ่ที่คนเจอเมื่อรัน IDS ครั้งแรก
Type กับ occurrence
property อาจอยู่ที่ type ไม่ใช่ที่ occurrence เครื่องมือตรวจ IDS ต้องตามไปที่ type ไม่เช่นนั้นจะตัดสินว่าองค์ประกอบที่ถูกต้องไม่ผ่าน
Revit, ArchiCAD และ Tekla มักเขียน property และวัสดุไว้ที่ออบเจ็กต์ type (IfcWallType) แทนที่จะเขียนไว้ที่ผนังแต่ละชิ้น ความหมายตาม IDS ชัดเจนว่าข้อมูลที่สืบทอดจาก type นับรวมให้ occurrence ด้วย เครื่องมือตรวจที่ดูแค่ occurrence จะทำให้ผนังทุกชิ้นในโมเดลที่ถูกต้องสมบูรณ์ไม่ผ่าน ถ้า IDS บอกว่าองค์ประกอบ 100% ขาด property ที่คุณเห็นอยู่ในแผง property เหตุผลเกือบทุกครั้งคือข้อนี้ และความผิดอยู่ที่เครื่องมือตรวจ ไม่ใช่คุณ
Predefined type แบบ USERDEFINED
เมื่อ predefined type เป็น USERDEFINED ชนิดจริงจะอยู่ใน ObjectType (ที่ occurrence) หรือ ElementType (ที่ type) facet แบบ entity ที่ต้องการ IFCWALL ซึ่งมี predefined type เป็น PARAPET ต้องตรงกับผนังที่มี PredefinedType เป็น USERDEFINED และ ObjectType เป็น PARAPET เครื่องมือตรวจที่เทียบค่า enum ดิบ ๆ จะพลาดทั้งหมด
ข้อผิดพลาด 5 ข้อที่ทำให้ IDS ไร้ประโยชน์
- ขอบเขตการใช้กว้างเกินไป “ทุกองค์ประกอบต้องมีรหัส Uniclass” จะลากช่องเปิด annotation และองค์ประกอบเชิงพื้นที่ที่ไม่มีใครจำแนกเข้ามาด้วย ควรจำกัด specification ให้เหลือเฉพาะคลาสที่ข้อกำหนดนั้นหมายถึงจริง ๆ
- ระบุค่าโดยไม่ระบุชนิดข้อมูล ข้อกำหนด FireRating = “EI 60” ไม่ได้บอกเลยว่าต้องเก็บแบบไหน ข้อความเดียวกันที่เก็บเป็นคำอธิบายใน pset อื่นก็ยังไม่ผ่าน ให้เขียนสิ่งที่ต้องการให้ครบ รวมถึงชนิดข้อมูล
- ใช้ค่าตายตัวในที่ที่ควรใช้รูปแบบ ข้อมูลจริงมีทั้ง “EI60”, “EI 60” และ “EI-60” ให้ใช้ xs:pattern หรือ enumeration และตกลงรูปแบบมาตรฐานไว้ใน BEP
- specification ขนาดยักษ์อันเดียว ข้อกำหนดสี่สิบข้อใน specification เดียวให้ผลผ่าน/ไม่ผ่านแค่ค่าเดียวต่อองค์ประกอบ และได้รายงานที่ไม่มีใครลงมือแก้ได้ หนึ่ง specification ต่อหนึ่งข้อกำหนด พร้อมตั้งชื่อด้วยภาษาที่เข้าใจง่าย คือสิ่งที่ทำให้ผลลัพธ์อ่านรู้เรื่อง
- เขียน IDS หลังทำโมเดลเสร็จ IDS ที่ส่งมาพร้อมการตีกลับครั้งแรกคือข้อกำหนดใหม่ IDS ที่ส่งมาพร้อมการว่าจ้างคือข้อกำหนด มีเพียงอย่างหลังที่บังคับใช้ได้
ด้านสัญญาของข้อสุดท้ายนี้ คือข้อสัญญาใดที่ทำให้ IDS มีผลผูกพัน และจะเกิดอะไรขึ้นเมื่องานส่งมอบไม่ผ่าน อธิบายไว้ใน ข้อกำหนดใน BEP ที่ป้องกันงานส่งมอบ IFC คุณภาพต่ำได้จริง และ เกณฑ์การรับมอบ IFC
รัน IDS กับโมเดลของคุณทีละขั้นตอน
- เปิดไฟล์ IFC ลากโมเดลเข้าโปรแกรมดู ระบบจะประมวลผลในเบราว์เซอร์ของคุณ โดยไม่มีการอัปโหลดใด ๆ
- โหลดไฟล์ .ids เปิดแผง IDS แล้วเลือกไฟล์ หรือเริ่มจาก specification ตัวอย่างที่มีมาให้ ถ้าอยากดูรูปแบบไฟล์ก่อน
- เริ่มการตรวจ ทุก specification จะถูกประเมินด้วย facet ทั้ง 6 โมเดลขนาดใหญ่จะแสดงความคืบหน้าทีละช่วง และยกเลิกได้ทุกเมื่อ
- อ่านผลตาม specification องค์ประกอบ หรือคลาส จัดกลุ่มรายการที่ไม่ผ่านตามวิธีที่คุณจะแก้ไข แต่ละรายการบอกเหตุผลเป็นภาษาที่เข้าใจง่าย เช่น ขาด property ค่าผิด ชนิดข้อมูลผิด คลาสผิด
- ดูในมุมมอง 3D “ไฮไลต์” จะระบายสีองค์ประกอบที่ไม่ผ่านในโมเดล ส่วน “แยกแสดง” จะซ่อนทุกอย่างที่เหลือ ทั้งสองแบบใช้แค่คลิกเดียว และนี่คือวิธีเปลี่ยนรายการ GlobalId ให้กลายเป็นบทสนทนากับคนทำโมเดล
IDS ข้ามรีวิชัน
การรัน IDS หนึ่งครั้งเป็นแค่ภาพนิ่ง สิ่งที่ผู้ประสานงานต้องการจริง ๆ คือแนวโน้ม รีวิชัน 7 แก้ปัญหาที่พบในรีวิชัน 6 แล้วหรือยัง และสร้างปัญหาใหม่หรือไม่ เนื่องจากผลลัพธ์อ้างอิงด้วย GlobalId จึงเทียบ specification เดียวกันระหว่างโมเดลสองเวอร์ชันได้ แต่ทำได้ก็ต่อเมื่อ GlobalId ของคุณคงที่ระหว่างการ export แต่ละครั้ง ถ้าไม่คงที่ ให้แก้ข้อนั้นก่อน: ทำไม GUID ของ IFC เปลี่ยนทุกครั้งที่ export ส่วนการเปรียบเทียบอธิบายไว้ใน วิธีเปรียบเทียบโมเดล IFC สองเวอร์ชัน
ขอบเขตของ IDS
IDS ไม่ตรวจเรขาคณิต มันไม่บอกว่าท่อลมสองเส้นชนกัน ประตูแคบเกินไปสำหรับรถเข็น หรือโมเดลอยู่ห่างจากจุดอ้างอิงงานสำรวจสองกิโลเมตร และไม่ตรวจว่า IFC สมบูรณ์เชิงโครงสร้างหรือไม่ ไฟล์ที่มี GlobalId ซ้ำหรือตำแหน่งวางเสียหายก็ยังผ่าน IDS ได้สบาย ๆ
นี่ไม่ใช่จุดอ่อน แต่คือขอบเขตงาน ใช้ IDS สำหรับข้อกำหนดด้านข้อมูล ใช้โปรแกรมตรวจโมเดลสำหรับโครงสร้างและเรขาคณิต แล้วแนบรายงานทั้งสองคู่กันในงานส่งมอบ ขั้นตอนทั้งหมดอยู่ใน วิธีตรวจสอบไฟล์ IFC
IDS คืออะไร: วิธีตรวจโมเดล IFC ด้วย Information Delivery Specification