สิ้นสุดการรอคอย XSection Plot รุ่น 4.10 มาแล้ว ตอนที่ 1

ถึงจะล่าช้าแต่ก็มาตามสัญญา

  • โปรแกรมเขียนรูปตัดตามขวาง XSection Plot รุ่นนี้รุ่น 4.10 มาแทนรุ่นเดิม 3.25 ที่ปลดระวางด้วยเนื่องจากอายุมากร่วมสองทศวรรษ แต่ขอแจ้งไว้ก่อนรุ่นนี้ยังเป็นรุ่นทดลองใช้ (beta) นะครับ เพราะยังมีบั๊กอยู่บ้าง แต่โดยรวมใช้งานได้

xsectionplotv410-intro

ความเป็นมาของโปรแกรม

  • อ่านความเป็นมาของโปรแกรมได้อย่างละเอียดที่ => ก้าวต่อไปของโปรแกรมเขียนรูปตัดตามขวาง XSection Plot ในร่างใหม่พัฒนาด้วย Python + Qt
  • และที่ => ก้าวที่ใกล้กับโปรแกรมเขียนรูปตัดตามขวาง XSection Plot รุ่นใหม่
  • ก็ขอเท้าความเป็นมาโปรแกรมสักนิดเผื่อผู้อ่านไม่ได้ติดตามมาก่อน โปรแกรมเขียนรูปตัดตามขวาง XSection Plot รุ่นเดิมพัฒนาด้วย VB อายุอานามเกือบยี่สิบปีแล้วครับ ใช้ได้ดีตอนวินโดส์ XP แต่หลังมาวินโดส์ 7, 8 และวินโดส์ 10 ก็มีปัญหากับการติดตั้งเรื่อยมา เพราะโปรแกรมยังใช้ library ของวินโดส์รุ่นเก่า พอเจอวินโดส์ใหม่หาไลบรารีไม่เจอ ผมเขียนใหม่ด้วยภาษาไพธอน (Python) ใช้ระบบกราฟฟิคเฟรมเวิร์คของ Qt รวมๆเรียกว่า PyQt
  • ขณะที่พัฒนานี้ใช้ Python 3.5 ส่วน Qt ใช้ PyQt รุ่น 5.6 ส่วน Qt เป็นเฟรมเวิร์คที่ใหญ่โตมากๆ อ่านคู่มือไม่ไหว ก็จะเลือกอ่านแต่เท่าที่ใช้ แน่นอนสิ่งที่ทำให้ผมโปรแกรมได้สำเร็จยกเครดิตให้ stackoverflow.com ถ้าไม่มีเวปไซต์ถามและตอบปัญหาการเขียนโปรแกรมนี้ ยังคิดว่าจะเขียนโปรแกรมได้อย่างไร มีปัญหาอะไร เข้าไปค้นหาทีไร ก็เจอคำตอบทุกที จะมีคนที่มีปัญหาแบบเรามาถามก่อนเรา พร้อมมีคนมาตอบให้ ส่วนใหญ่ 99% คำตอบสามารถนำไปใช้งานต่อยอดได้

สาเหตุแห่งความล่าช้า

  • เรื่องความรู้ความเข้าใจภาษาไพธอน อาจจะไม่ใช่ปัญหานักเนื่องจากไพธ่อนเป็นภาษาที่เรียบง่ายแต่ทรงพลัง ปัญหาของผมลำดับแรกคือ Qt Framework ที่เกี่ยวกับกราฟฟิค ศึกษาได้ค่อนข้างช้า ก่อนหน้านี้ไปทุ่มให้กับ wxPython ที่เป็น GUI Framework ที่ใช้ wxWidget ทำให้เสียเวลาไปมาก  พูดอย่างนี้ไม่ใช่ wxPython ไม่ดีนะครับเพียงแต่ส่วนตัวแล้วไม่ชอบ มาเจอ Qt นี่ใช่เลย
  • ความล่าช้าลำดับที่สอง คือไลบรารีที่ผมเอามาเขียนไฟล์ Autocad DXF ใช้ ezdxf เป็นโครงการเปิดซอร์ส ตัวไลบรารีใช้งานง่าย เก่งมาก ผมลองสมมุติว่าถ้าให้ผมเขียนไลบรารีนี้เอง คงไม่มีปัญญาเป็นแน เพราะผู้พัฒนาเข้าใจถ่องแท้มาก ทั้งโครงสร้างของ  DXF ที่รุ่นหลังๆค่อนข้างซับซ้อนพอสมควร ปัญหาของผมอยู่ที่คอมไพล์โปรแกรมเพื่อสร้างไฟล์ execute ที่เป็นไบนารี .exe ตอนแรกใช้ py2exe กลับไม่สามารถรันได้ พอเปิดโปรแกรมใช้งานพอเรียกใช้ไลบรารีนี้จะ crash ทันที ตอนแรกหาสาเหตุไม่เจอ ตอนหลังมาทราบว่ามี่ไฟล์ที่ไลบรารี ezdxf ที่ต้องการใช้ แต่ py2exe ไม่ได้ใส่ไปให้ด้วย คือ py2exe จะสร้างไฟล์ไลบรารีที่โปรแกรมเรียกใช้ทั้งหมดแล้ว zip ไว้ แต่ขาดไฟล์บางไฟล์ของ ezdxf
  • ผมหันมาใช้ pyinstaller คอมไพล์และสร้างไฟล์  .exe สำเร็จเนื่องจาก pyinstaller ใช้วิธีการที่ง่ายกว่าแบบคิดไม่ถึงและก็ยืดหยุ่นมาก ตอนนี้เทใจให้กับ pyinstaller เมื่อได้ไฟล์ execute มาก็ไม่ยากแล้วทำไฟล์ติดตั้ง (setup) ด้วย Inno Setup เจ้าเดิมที่ผมใช้ประจำ เพราะฟรี ใช้งานง่าย

จุดประสงค์ของโปรแกรม

  • เนื่องจากจุดกำเนิดโปรแกรมนี้เริ่มต้นในยุค PC กับวินโดส์ที่กำลังรุ่งเรืองคือวินโดส์ 98 ที่โปรแกรมด้าน Civil/Survey ยังไม่เก่ง การเขียนรูปตัดจึงค่อนข้างจะใช้มือแบบแมนวลคือเน้นป้อนเข้าตาราง ต่อมาเริ่มมีโปรแกรมด้าน Civil/Survey เช่น Land desktop, Terramodel, โปรแกรมตระกูล Microstation เช่น PowerCivil, Inroads ประมาณนี้ หลายๆโปรแกรมสามารถ export รูปตัดเป็น text file ได้ ผมก็พัฒนาโปรแกรมให้สามารถอ่านเข้ามาโปรแกรม XSection Plot เพื่อจัดรูปแบบและสามารถนำไฟล์เข้าโปรแกรมจำพวก CAD ได้
  • ปัจจุบัน Terramodel, Land desktop หยุดพัฒนาไปหลายปี แต่ผู้พัฒนาหันมาพัฒนาตัวใหม่ที่เก่งกว่าเดิมเช่น Trimble Business Center (TBC) ของค่าย Trimble และค่าย Autodesk ก็มี Autodesk Civil3D เป็นโปรดัคเรือธง ผมลองใช้มาหมดแล้วครับ ยอมรับความสามารถเก่งกาจไปไกล แต่ราคาต่อไลเซนต์ก็สูงมากโข ถามกันจริงๆ ถ้าจะซื้อมาใช้แบบไลเซนต์ จะมีผู้ใช้ที่ไม่ใช่องค์กรสักกี่คนที่มีปัญญาซื้อมาใช้งานได้ นี่เป็นปัญหาอย่างหนึ่ง

ดาวน์โหลดและติดตั้ง

  • ดาวน์โหลดได้ที่ XSectionPlotV410b867Setup64.zip หรือดูด้านขวามือตรง ดาวน์โหลด (Download) มองหาลิ๊งค์สำหรับติดตั้งโปรแกรม  “XSection Plot V4.10” ในเบื้องต้นมีเฉพาะรุ่น 64 บิต (สำหรับรุ่น 32 บิต รออีกสักพักครับ) ดาวน์โหลดมาแล้ว ขนาดโปรแกรมไม่ใหญ่ประมาณ 16 MB จากนั้นก็ติดตั้งได้ง่ายๆ ติดตั้งแล้วจะเห็น icon ขึ้นมาบน Desktop ดังรูปด้านล่าง

xsectionplot_icon

พาทัวร์โปรแกรมทดลองใช้งาน

  • ต่อไปผมจะพาลองทดลองใช้โปรแกรมคร่าวๆ พาทัวร์การใช้งานรวดเดียวจบ ผมมีไฟล์ตัวอย่าง ตอนติดตั้งโปรแกรมจะไปอยู่ในโฟลเดอร์ของวินโดส์ C:\Users\ชื่อผู้ใช้\AppData\Roaming\XSection Plot\examples data โฟลเดอร์นี้จะถูกซ่อนอัตโนมัติ ผู้ใช้หน้าใหม่ๆอาจจะหาไม่เจอ กรณีหาไม่เจอผมเตรียมตัวช่วยไว้
  • เปิดโปรแกรมมาครั้งแรกจะเห็นว่าตารางโล่งไม่มีข้อมูล

xsectionplotv410-firstload

1.ที่จัดเก็บข้อมูลตัวอย่าง

  • เปิดเมนู Help เลือกคลิกที่ “Example data”

help_examples_data

  • โปรแกรมจะเปิด windows explorer ของวินโดส์มาให้ มองไปจะเห็นโฟลเดอร์ “examples data”

examples_data_folder

  • จากนั้น double click เข้าไปที่โฟลเดอร์ “example data\mz\import files” จะเห็นไฟล์อยู่สองไฟล์ มาถึงตรงนี้ขอให้คลิกแถบ path ดังรูปแล้วก็ใช้เมาส์คลิกขวาเลือก copy ตอนนี้ path อยู่ในคลิปบอร์ดแล้ว ต่อไปจะใช้โปรแกรม XSection Plot ทำการ import ข้อมูลที่อยู่ในพาทนี้เข้าโปรแกรม

mz_import_files_folder

2.นำข้อมูลดินเดิมเข้าโปรแกรม (Import file)

  • คลิก Import text file ที่ไอคอนตามรูปเพื่อจะนำเข้าไฟล์รูปตัด จะเห็นไดอะล็อกของ Import XSection text file ขึ้นมา คลิกที่ไอคอน Open เพื่อเปิดไฟล์

xtoolbar_import

import_dialog

  • จะเห็นไดอะล็อก “Open X-Section text file” เอาเมาส์ไปคลิกที่แถบพาทดังรูปแล้ว paste กด enter สักครั้งหนึ่งจะเห็นไฟล์ app_ch155m.xsc ที่เก็บไฟล์รูปตัดไว้ จากนั้นคลิกเลือกไฟล์นี้

xfolder_import

  • โปรแกรมจะเปิดไฟล์แล้วอ่านรูปตัดแสดง preview ไฟล์รูปตัด สังเกตว่ารูปแบบค่าปริยายจะเลือก Terramodel Road (4 decimal) คลิก “Next >” เพื่อไปขั้นตอนต่อไป

import_view

3.เลือกรูปตัดให้พอดีกับหน้ากระดาษแบบ

  • เมื่อโปรแกรมอ่านพบรูปตัดแล้วจะนำรูปตัดมาแสดงเป็นลิสต์เพื่อจะให้ผู้ใช้เลือกรูปตัดไปใส่กระดาษแบบตามที่ต้องการ ดูรูปข้างล่าง ข้อสังเกตจะเห็นขั้นตอนที่  3.เลือกปลายทาง ไฟล์นี้เป็นค่าระดับดินเดิมจึงเลือก Copy to Existing Ground section ขั้นตอนที่ 4.copy ไปตารางข้อมูล เป็นอันเรียบร้อย

import_selected

  • ข้อมูลรูปตัดจะถูก  copy ตารางป้อนข้อมูลดินเดิม (Existing Ground Section)

xsectionplot_import_ground

4.นำเข้าข้อมูลไฟล์ Typical Section

  • ต่อไปจะนำข้อมูลดินเดิม Typical section  จาก toolbar เลือกไอคอน “Import text file” เปิดไฟล์ที่โฟลเดอร์เดิม ที่นี้เลือกไฟล์ “design_ch.xsc” คลิก Open โปรแกรมจะเปิดไฟล์มาให้ดูก่อนจากนั้นคลิก “Next >” เพื่อมาเลือกรูปตัด เลือกตามรูปโดยเฉพาะขั้นตอนที่ 3.เลือกปลายทาง เลือก “Copy to Typical section” สุดท้ายคลิกที่ “Copy to >>

import_selected_ts

  • โปรแกรมจะนำข้อมูล Typical มาลงที่ตารางข้อมูล Typical section

typical_after_imported

5.บันทึกไฟล์ข้อมูล (Save file)

  • เมื่อนำข้อมูลเข้ามาแล้ว สิ่งแรกควรจะบันทึกไฟล์ข้อมูลลงดิสค์ คลิกที่ไอคอน “Save” เนื่องจาก Tab มีสองหน้าคือ Typical Section และ Existing Ground Section เวลาจะบันทึกไฟล์ข้อมูลแบบไหนก็ให้คลิกที่แท็บให้ตรงกัน เช่นถ้าต้องการบันทึกไฟล์ข้อมูลของดินเดิมก็ให้คลิกที่แท็บ “Existing Ground Section”

toolbar_save

  • ตอนนี้อยู่แท็บ “Typical Section” เราจะบันทึกไฟล์ข้อมูลนี้ก่อน ผมจะเก็บใน Documents ซึ่ง extension ของไฟล์จะเป็น .txml โดยอัตโนมัต ไฟล์ข้อมูลนี้เป็น xml เปิดดูได้ด้วย Notepad ของวินโดส์ ส่วนรูปแบบฟอร์แมตของไฟล์รุ่นเก่าเป็นไบนารีมีนามสกุล .XST

save_typical_section_file

  • บันทึกไฟล์ดินเดิม (Existing Ground Section) คลิกที่แท็บ “Existing Ground Section” เพื่อสวิตช์มาที่ตารางข้อมูลดินเดิม คลิก “Save” ที่ toolbar ด้านบน เลือกโฟลเดอร์ Documents ป้อนชื่อไฟล์ดังรูปด้านล่าง ไฟล์จะมี extension เป็น .gxml อัตโนมัติsave_existing_ground_section

จบตอนที่ 1 ติดตามต่อตอนที่ 2

  • เมื่อบันทึกข้อมูลรูปตัดลงไฟล์แล้วเราสามารถปิดโปรแกรมได้ โดยที่ไม่ต้องเริ่มต้นใหม่เมื่อเปิดโปรแกรมอีกครั้ง ก็ขอจบตอนที่ 1 ก่อน เพราะจะยาวมากเกินไปติดตามตอนที่ 2 ต่อได้ครับ

 

10 thoughts on “สิ้นสุดการรอคอย XSection Plot รุ่น 4.10 มาแล้ว ตอนที่ 1”

  1. saveเป็นนามสกุลอะไรครับถึงจะเปิดได้(แล้วใช้โปรแกมอะไรsaveครับ)

    1. ถ้าติดตั้งโปรแกรม XSection Plot จะมีไฟล์ตัวอย่างติดไปด้วย ใช้โปรแกรม XSection Plot เปิดไฟล์และ save ไฟล์ครับ ไฟล์ข้อมูลดูได้ตามหัวข้อ 1

    1. ดีใจนะเอก ในที่สุดก็มีโอกาสได้ใช้งาน

  2. มีให้โหลดที่ไหนค่ะ กำลังศึกษาโปรแกรมนี้ค่ะ

  3. Save ลง cad ทำไมรูปตัดไปกองรวมกันครับ

  4. เตรียมไฟล์ข้อมูลยังไงครับการจัดฟอร์แม็ตเพื่อที่จะนำมาพล็อทในโปรแกรมได้

    1. สวัสดีครับ ถ้าป้อนข้อมูลใน excel มาก่อนสามารถ copy มา paste ในตารางของ XSection Plot ได้ครับ ส่วนข้อมูลรูปแบบอื่นๆเช่น Hec-Ras ก็สามารถอ่านไฟล์ได้ แต่อาจจะไม่รู้จักกันนักสำหรับโปรแกรมนี้ในประเทศไทย

Leave a Reply

Your email address will not be published. Required fields are marked *