กลับไปยังบล็อก BIM และ IFC
เครื่องมือและการเปรียบเทียบ · 2026-10-02 · 11 นาที
ข้างในไฟล์ IFC มีอะไร? อธิบายรูปแบบไฟล์ด้วยแผนภาพ
ไฟล์ .ifc เป็นข้อความธรรมดาที่เปิดในโปรแกรมแก้ไขโค้ดได้ และเมื่ออ่านเป็นแล้ว ความลึกลับของ IFC จะหายไปครึ่งหนึ่ง ทั้งส่วนหัว อินสแตนซ์ที่มีหมายเลข GlobalId และความสัมพันธ์ที่พา property มา บทความนี้วาดรูปแบบไฟล์ออกมาให้ดู
ข้างในไฟล์ IFC มีอะไร? อธิบายรูปแบบไฟล์ด้วยแผนภาพ — IFC Viewer Online article cover
คนส่วนใหญ่เห็นไฟล์ IFC ผ่านโปรแกรมดูเท่านั้น น่าเสียดาย เพราะไฟล์ .ifc เป็นข้อความธรรมดา และการอ่านสักสิบนาทีจะอธิบายเรื่องที่ปกติยังลึกลับได้ ทั้งทำไม GUID จึงสำคัญ ทำไม property จึง “หายไป” ทั้งที่มองเห็น ทำไมไฟล์จึงใหญ่ และทำไมการตั้งค่า export ผิดเพียงจุดเดียวจึงทำให้ทุกอย่างปลายทางพัง
บทความนี้เปิดไฟล์และวาดสิ่งที่อยู่ข้างในออกมา
ไฟล์ IFC ในรูปแบบ STEP (ISO 10303-21): ส่วนหัวระบุ schema แล้วตามด้วยอินสแตนซ์ที่มีหมายเลขบรรทัดละหนึ่งรายการ
ประเด็นสำคัญ
- ไฟล์ IFC คือรายการอินสแตนซ์ที่มีหมายเลข หมายเลขใช้ได้เฉพาะในไฟล์และเปลี่ยนทุกครั้งที่ export
- GlobalId ซึ่งเป็นสตริง 22 ตัวอักษรในแต่ละอินสแตนซ์ คือตัวตนที่ออกแบบมาให้คงอยู่
- ข้อมูลสำคัญเกือบทั้งหมด รวมถึง property และ containment เชิงพื้นที่ ถูกผูกผ่าน entity ความสัมพันธ์ แทนที่จะเก็บไว้ที่ตัวองค์ประกอบ
ส่วนหัว: schema ใด มุมมองใด
ไฟล์เริ่มต้นด้วย ISO-10303-21; และส่วน HEADER สั้น ๆ มีสามบรรทัดที่สำคัญ
- FILE_DESCRIPTION ระบุ model view definition เช่น Coordination View, Reference View, Design Transfer View ซึ่งกำหนดส่วนย่อยของ IFC ที่ตัว export ตั้งใจใช้
- FILE_NAME บันทึกชื่อไฟล์ เวลา ผู้สร้าง และโปรแกรมที่ใช้สร้าง
- FILE_SCHEMA ระบุ schema: IFC2X3, IFC4 หรือ IFC4X3 ทุกบรรทัดถัดไปอ่านตาม schema นี้ entity เดียวกันอาจมี attribute ต่างกันในแต่ละเวอร์ชัน
การเลือกเวอร์ชันของ schema เป็นอีกหัวข้อหนึ่ง: IFC2x3 กับ IFC4 ต่างกันอย่างไร
ส่วนข้อมูล: บรรทัดละหนึ่งอินสแตนซ์
หลัง DATA; ทุกบรรทัดมีรูปแบบเดียวกัน คือ หมายเลข ชื่อ entity และรายการ attribute ตามลำดับที่ schema กำหนด
#245= IFCWALL('1kTvXnbbzCWw8lcMd1dR4o',#2,'Basic Wall:Ext 300',$,$,#210,#240,$,.STANDARD.);
| ส่วน | ความหมาย |
|---|
| #245 | หมายเลขอินสแตนซ์ (express ID) ใช้ได้เฉพาะในไฟล์นี้ |
| '1kTvXnbbz…' | GlobalId คือ GUID แบบบีบอัดยาว 22 ตัวอักษร |
| #2 | อ้างอิงไปยังอินสแตนซ์อื่น (ในที่นี้คือ owner history) |
| $ | ไม่ได้กำหนดค่า attribute |
| .STANDARD. | ค่า enumeration (predefined type) |
| #210, #240 | ตำแหน่งวางและการแสดงผลทางเรขาคณิต ซึ่งนิยามไว้ในบรรทัดอื่น |
เมื่อ GlobalId เองเปลี่ยนทุกครั้งที่ export กระบวนการปลายทางทั้งหมดจะพังพร้อมกัน สาเหตุและวิธีแก้ของแต่ละโปรแกรมอยู่ใน ทำไม GUID ของ IFC เปลี่ยนทุกครั้งที่ export
entity สืบทอดจากกันและกัน
IFC เป็นโมเดลเชิงวัตถุ IfcWall คือ IfcBuiltElement ซึ่งเป็น IfcElement, IfcProduct, IfcObject และท้ายที่สุดคือ IfcRoot และมันพา attribute ของทั้งหมดนี้มาด้วย นี่คือเหตุผลที่ผนัง ประตู และพื้นที่ทุกชิ้นมี GlobalId และ Name เพราะมาจาก IfcRoot
ทุก entity สืบทอด attribute จาก supertype การตรวจที่เขียนสำหรับ IfcElement จึงใช้กับผนัง ประตู และเสาทุกชิ้นที่อยู่ด้านล่าง
ชื่อเปลี่ยนไปตามเวอร์ชัน สิ่งที่ IFC4.3 เรียกว่า IfcBuiltElement เคยชื่อ IfcBuildingElement ใน IFC2x3 และ IFC4 เครื่องมือที่ฝังชื่อตายตัวไว้ในโค้ดจะพลาดอีกชื่อหนึ่ง และนี่คือเหตุผลหนึ่งที่โมเดลเดียวกันผ่านการตรวจในเครื่องมือหนึ่งแต่ไม่ผ่านในอีกเครื่องมือ
ความสัมพันธ์ก็เป็น entity
การตัดสินใจเชิงออกแบบที่ทำให้ IFC อ่านยากในตอนแรก ก็คือสิ่งที่ทำให้มันทรงพลัง ความสัมพันธ์เป็นวัตถุในตัวเอง ผนังไม่มีรายการ property ของตัวเอง แต่มีอินสแตนซ์ IfcRelDefinesByProperties ที่ชี้ไปยังผนังและ property set แทน containment เชิงพื้นที่ วัสดุ type ช่องเปิด และกลุ่ม ก็ทำงานแบบเดียวกัน
property อยู่ใน property set ซึ่งผูกกับองค์ประกอบหรือกับ type ของมัน property set ที่อยู่บน type ใช้กับทุก occurrence
นี่คือต้นเหตุของการแจ้งเตือนผิดที่พบบ่อยที่สุดในการตรวจคุณภาพ IFC: property ที่นิยามไว้บน type ดูเหมือนหายไปสำหรับเครื่องมือที่อ่านแค่ occurrence สาเหตุที่แท้จริงอยู่ใน property ของ IFC หายหลัง export ส่วนวิธีไล่ตามความสัมพันธ์เหล่านี้ในโค้ดอยู่ใน อ่าน property set ด้วย Python
ทำไมไฟล์ IFC จึงใหญ่
- เรขาคณิตกินพื้นที่มากที่สุด ผนังภายนอกที่แบ่งเป็นสามเหลี่ยมหรืออุปกรณ์งานระบบที่ละเอียดอาจยาวหลายพันบรรทัด ส่วน extrusion และเรขาคณิตแบบ mapped (instance) เล็กกว่ามาก
- ข้อมูลซ้ำก็ถูกเขียนซ้ำ ตัว export ที่ไม่แชร์ property set หรือการแสดงผล จะเขียนบรรทัดเดิมซ้ำทุกองค์ประกอบ
- STEP ธรรมดาไม่มีการบีบอัด ifcZIP มักลดขนาดไฟล์ได้หลายเท่า และเป็นรูปแบบส่งมอบที่เหมาะสมเมื่อเครื่องมือของผู้รับรองรับ
วิธีลดขนาดไฟล์อย่างปลอดภัยอยู่ใน วิธีลดขนาดไฟล์ IFC และเมื่อไฟล์ใหญ่จนเบราว์เซอร์ล่ม ดู ไฟล์ IFC ขนาดใหญ่ที่ทำให้เบราว์เซอร์ล่ม
อ่านไฟล์ด้วยตัวเอง
- เปิดในโปรแกรมแก้ไขข้อความ โปรแกรมใดก็ได้ที่รับไฟล์ใหญ่ได้ ดูส่วนหัวก่อน schema และ model view จะบอกว่าควรคาดหวังอะไร
- ค้นหา entity ที่สนใจ IFCWALL(, IFCSPACE(, IFCBUILDINGSTOREY( แค่จำนวนที่พบก็เป็นการตรวจเบื้องต้นได้แล้ว
- ไล่ตามการอ้างอิงขององค์ประกอบหนึ่ง จากผนังหนึ่งแผ่น ค้นหาหมายเลข # ของมันเพื่อหาความสัมพันธ์ที่ชี้มาหา ได้แก่ containment property และ type
- แล้วจึงเปลี่ยนไปใช้โปรแกรมดู ข้อมูลเดียวกันแต่นำทางได้ ทั้งต้นไม้เชิงพื้นที่ แผง property และการตรวจสอบที่เช็กความสัมพันธ์เหล่านี้ให้คุณ
การจัดองค์ประกอบเป็นชั้นและพื้นที่ อธิบายไว้ใน อธิบายโครงสร้างเชิงพื้นที่ของ IFC
ข้างในไฟล์ IFC มีอะไร? อธิบายรูปแบบไฟล์ด้วยแผนภาพ