The Return of Spot Fire ก้าวกลับมาอีกครั้งของ Spot Fire รุ่น 2.10 (ล่าสุด)

Spot Fire V2.10 รุ่นล่าสุด

  • และแล้วก็ได้เวลา upgrade โปรแกรมอีกตัว ซึ่งโปรแกรมเขียนตัวเลขค่าระดับส่งเข้า Autocad โดยตรง เป็นโปรแกรมเล็กมากๆ เรียกว่าเป็นทูลส์ (tools) ก็ได้ครับ ขนาดไฟล์ติดตั้ง 1.5 MB แค่นั้นเอง
  • เดิมทีโปรแกรมพัฒนาด้วย Delphi ซึ่งติดเรื่องลิขสิทธิ์ ผมพอร์ทโปรแกรมมา Lazarus ซึ่งใช้ Free pascal compiler เป็นคอมไพเลอร์ ที่ฟรีและ opensource เนื่องจากโค๊ดของ Dephi เป็นปาสคาลอยู่แล้วการพอร์ทโค๊ดมา Lazarus ซึ่งเป็นภาษาปาสคาลเหมือนกัน จึงเป็นเรื่องง่ายๆ และได้อัพเกรดความสามารถหลายๆอย่างเพิ่มเติมครับ
  • รองรับจอ 4K เหมือนทุกโปรแกรมที่อัพเดทก่อนหน้านี้

SpotFire_Intro

จุดกำเนิดโปรแกรม

  • งานสำรวจทางทะเลหรือแม่น้ำ สำรวจความลึกท้องทะเล (sea bed) หรือท้องแม่น้ำ (river bed) เรียกให้แคบในภาษาปัจจุบันคือ  Bathymetric Survey จะมีเอกลักษณ์เฉพาะตัว คือการเขียนเลขน้ำ (เขียนค่าระดับหรือความลึกตรงบริเวณจุดสำรวจ)

bathy_example

  • งานทางน้ำทางทะเล เลขน้ำลึกตัวเลขจะบวก ที่ตื้นค่าระดับจะเป็นลบ เลขน้ำทางสากล จะไม่เขียนจุดทศนิยม ถ้าเลขทศนิยมเป็นศูนย์ เช่น 1.0, 2.0 จะไม่เขียนเลขทศนิยมคือเลขศูนย์ ตัวเลขทศนิยมจะเป็นตัวห้อย ตัวหนังสือจะเล็กว่าเลขหลักประมาณ 70-80% (ดูรูปด้านบน ผมดาวน์โหลดจากอินเทอร์เน็ต) ถ้าเป็นเลขลบจะขีดเส้นใต้ตัวเลขตัวหลัก ส่วนทศนิยมจะไม่มีขีดด้านล่าง
  • ตัวหนังสือนิยมเขียนตัวเอียงแบบ oblique อีกเอียงโย้ไปด้านหลังประมาณ 15 องศา ลองดูแผนที่เดินเรือแบบสากล สังเกตที่ตื้นๆสีเขียวเข้มๆด้านขวาค่าระดับจะเป็นลบ จะมีขีดใต้ตัวเลขหลัก

portion-of-raster-chart

  • เนื่องจากผมทำงานทางทะเลมาตั้งแต่จุดเริ่มต้น จึงเขียนโปรแกรมนี้มาใช้งาน รุ่นแรกๆก็ยังไม่ดีนักแต่ก็พอใช้งานได้ จนถึงตอนนี้ได้ยกเครื่องอัพเกรดโปรแกรมใหม่ ให้เขียนเลขน้ำได้หลากหลายมากขึ้น มาดูกันว่ารุ่นนี้ทำอะไรได้บ้าง

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

  • ดาวน์โหลดได้ที่ SpotFire V2.10 แบบ 64 bit และ SpotFire V2.10 แบบ 32 bit ตอนนี้เป็น build 2370 หรือถ้าลิ๊งค์ตรงนี้ขาดให้ดูด้านขวามือของ blog ในส่วน Download เมื่อดาวน์โหลดมาแล้วก็ unzip แล้วทำการติดตั้งง่ายๆ ติดตั้งแล้วจะเห็นไอคอนของโปรแกรมอยู่บน desktop ดับเบิ้ลคลิกเพื่อเปิดโปรแกรม

spotfire_icon_desktop

เปิดโปรแกรม

  • เปิดมาหน้าแรกจะเป็นหน้าต่างของแท็บ “Options” ที่เป็นหน้าให้ป้อนค่าตัวเลือกเพื่อควบคุมตัวเลขค่าระดับ ตั้งแต่กำหนดมาตราส่วนของแผนที่ ฟอนต์ ขนาดตัวเลข และอื่นๆ
  • ส่วนทูลบาร์ มีแค่สองไอคอนคือเปิดไฟล์ กับส่งตัวเลขค่าระดับเข้า Autocad

spotfire_introduction

  • อีกหน้าจะเป็นหน้าต่างของแท็บ “Points” ไว้แสดงข้อมูล X,Y,Z หรือ N,E,Z ที่อ่านได้จากไฟล์ CSV ตอนนี้ยังโล่งเพราะยังไม่มีข้อมูล

SpotFire_points

ทดสอบข้อมูล

  • ข้อมูลตัวอย่างเก็บไว้ที่ “C:\Users\ชื่อผู้ใช้\Appdata\Roaming\Spot Fire\Examples Data” ซึ่งจะเป็นโฟลเดอร์ที่ซ่อนไว้ จะใช้ตัวช่วย คลิกที่เมนู “Help > Examples Data Folder…” ดังรูป

spotfire_open_examples_folder

  • โปรแกรมจะบอกว่าได้ก๊อปปี้พาท (path) ของโฟลเดอร์ตัวอย่างข้อมูลไปไว้ในคลิปบอร์ดเรียบร้อยแล้ว คลิก “OK” เพื่อปิด

spotfire_copytoclipboard

  • โปรแกรมจะเปิด Windows Explorer แสดงพาทที่เก็บข้อมูล จะเห็นไฟล์ชื่อ “Cavite-NEZ.csv” เราจะทดสอบไฟล์นี้ก่อน ไฟล์ข้อมูลจะเป็น text file ที่เก็บจุดงานสำรวจ (point) ไว้ในรูปแบบ NEZ โดยที่ใช้ตัวคั่นคือเครื่องหมายคอมม่า

spotfire_tested_file

เปิดไฟล์ข้อมูล

  • กลับมาที่โปรแกรมกันต่อ ที่ทูลบาร์คลิกไอคอน “Open CSV text file…

spotfire_open_file_icon

  • จะเห็นไฟล์ไดอะล็อก เนื่องจากพาทข้อมูลที่วินโดส์ซ่อนไว้ ถ้า browse จะมองไม่เห็น วิธีการคือเอาพาทที่เราก็อปปี้ไปไว้ในคลิปบอร์ดมาวาง (pasted) บนพาทของไดอะล็อก กด “Enter” ที่คีย์บอร์ดครั้งหนึ่ง เลือกไฟล์ เลือกรูปแบบไฟล์เป็น N,E,Z แล้วเปิดไฟล์ ดูรูปประกอบ

spotfire_selected_file

  • ตอนเลือกรูปแบบไฟล์ต้องเลือกให้ตรง เพราะบางท่านนิยมเก็บไว้ในรูปแบบ E,N,Z ค่า N และ E บางครั้งมีค่าใกล้เคียงกัน ผมไม่สามารถโปรแกรมให้อ่านไฟล์ แล้วตัดสินใจเลือกว่าคอลัมน์ไหนเป็น N หรือ E ซึ่งอาจจะผิดพลาด ผู้ใช้ต้องเลือกเองครับ
  • Format ของ CSV มี 4 รูปแบบที่โปรแกรมอ่านได้คือ
    • P,N,E,Z,D (P = Point No. D=Description) และ P,N,E,Z
    • P,E,N,Z,D และ P,E,N,Z
    • N,E,Z,D และ N,E,Z
    • E,N,Z,D และ E,N,Z

ตรวจสอบข้อมูล

  • ไฟล์ข้อมูล “Cavite-NEZ.csv” ที่เปิด จะมีจำนวนจุดประมาณ 19789 จุด โปรแกรมใช้เวลาอ่านนิดเดียว คลิกที่แท็บ “Points” มาดูข้อมูลบนตารางข้อมูล ตารางนี้ดูได้อย่างเดียวไม่สามารถแก้ไขได้

spotfire_data_table

  • เปิดเมนู “File > Properties” จะเห็นค่าระดับลึกสุด = 43.160 เมตร ค่าตื้นสุด = -1.060 เมตร ไฟล์งานนี้เป็นไฟล์สำรวจ seabed ของทะเล

spotfire_file_properties

ตั้งค่าตัวเลือกเพื่อตั้งรูปแบบตัวเลขค่าระดับ

  • คลิกแท็บกลับมาที่ “Options” รูปด้านล่างดูแล้วอาจจะลายตา ทนเอาหน่อยครับ หน้านี้เป็นการกำหนดรูปแบบให้ตัวเลข อย่างเช่นอันดับแรกมาตราส่วน ผมเลือกมาตราส่วน 1 : 20000 เพราะงานสำรวจเป็นพื้นที่ขนาดใหญ่ในทะเลติดชายฝั่งแห่งหนึ่ง

spotfire_set_options

  • มาตราส่วนแผนที่จะเป็นสิ่งแรกที่เราคิดไว้ก่อนสิ่งอื่น 1 : 20000 เทียบแบบนี้จะเข้าใจง่าย 1 มม. บนแผนที่ = ขนาดจริงบนโลก 20000 มม. หรือ 1 มม.บนแผนที่ = 20 เมตร (หาร 20000 ด้วย 1000) ฉะนั้นเวลากำหนดตัวอักษรสูงขนาด 2 มม. เวลาเขียนแบบตัวอักษรใน CAD จะต้องตั้งความสูงเท่ากับ 2 x 20 = 40 เมตร (ถ้าเรากำหนดหน่วยเขียนแบบใน CAD เป็นหน่วยเมตร) แต่ไม่ต้องปวดหัวครับ ถ้าตั้งมาตราส่วนเท่าไหร่โปรแกรมจะคำนวณมาให้ถูกต้องได้ถูกต้องเท่านั้น
  • Text layer สามารถเลือกเป็น “Single layer” โปรแกรมจะใช้ชื่อเลเยอร์ “SpotText” โดยอัตโนมัติ แต่ถ้าเลือก “Multiple layers” โปรแกรมจะสร้างให้ตามชั้นหรือช่วงของค่าระดับ (Color band)
  • เลือกฟอนต์ไว้เป็น “Romans” เพราะตัวเลขจะออกมาสวย เลือกความสูงตัวเลขหลัก 2 มม. ตัวทศนิยมจะเป็นตัวห้อยขนาดเล็กกว่า ขนาด 1.5 มม. ไม่หมุนตัวเลข จัดให้ตัวเลขเอียงไปด้านหลัง (Oblique) 15 องศา
  • รูปแบบเครื่องหมายลบ เลือก “Underlineขีดเส้นใต้ล่างตัวเลขหลัก กำหนดจำนวนทศนิยม 1 ตำแหน่ง ไม่แสดงเครื่องหมายจุดทศนิยม
  • จะเขียน point ลงให้ไปด้วย ตั้งชื่อเลเยอร์ “Points
  • เลือกจำนวนจุด (Select point every) ในเบื้องต้นตั้งเป็น 1 สามารถตั้งค่าอื่นได้เช่น ตั้งเป็น 4 ถ้าจุดเรียงกันไป 1,2,3,4,5,6,7,8…. โปรแกรมจะเลือกจุดที่ 1 จุดต่อไปจะเลือกจุดที่ 5 (ทุกๆ 4)
  • ในตอนนี้โปรแกรมจะตั้งค่าปริยาย Automatic color band interval = 5 เมตร ถ้าเปลี่ยนค่าโปรแกรมจะคำนวณให้ใหม่โดยคลิกที่ปุ่มยาวๆ “Apply” ด้านล่าง
  • จะเห็นว่าแบ่งค่าระดับจากมากไปน้อยได้ 10 ระดับ โปรแกรมจะเลือกสีมาให้เช่นกัน 10 สี และตั้งค่าเลเยอร์ตามค่าระดับอีก 10 เลเยอร์

ปั๊มตัวเลขค่าระดับเข้า Autocad

  • ก่อนจะปั๊มตัวเลขเข้า ขอให้เปิดโปรแกรม Autocad  ไว้ก่อน เพราะไม่งั้น Autocad ใช้เวลาเปิดนาน โปรแกรม Spot Fire อาจจะรวน
  • ที่ทูลบาร์คลิกที่ไอคอน Autocad

spotfire_fire_to_acad_icon

  • เมื่อสถานะการส่งจุดครบ 100% ไปที่โปรแกรม Autocad จะเห็นจุดดังรูป

autocad_all_points_cavite

  • ลอง Zoom เข้าไปดูใกล้ๆ จะเห็นว่าจุดแน่น ตัวเลขค่าระดับติดกันเป็นพรืด

dense_points

  • ที่ Options ตรงเลือกจุด (Select point every) เพิ่มจาก  1 เป็น 4 แล้วส่งจุดเข้า Autocad อีกครั้ง เมื่อครบ 100%  ซูมดูอีกครั้ง จะเห็นตัวเลขอยู่ห่างกันพอประมาณ และสีตัวเลขเป็นไปตามช่วงค่าระดับที่ตั้งไว้ ส่วนตัวเลขทับกันตรงที่แนวตัดกัน ต้องอาศัยลบออกด้วยมือครับ

dense_points_level2

  • มาดูถ้าจุดที่ค่าระดับเป็นลบ ผมใช้ไฟล์ข้อมูลอีกไฟล์ ที่มีค่าระดับเป็นลบชัดเจน จะเห็นเครื่องหมายขีดเส้นใต้ตัวเลขหลัก

points_onshore

  • ตรวจสอบเลเยอร์ใน Autocad ที่ Layer properties ว่าโปรแกรมเขียนมาให้ตามที่ต้องการไหม ก็โอเคครับ

Autocad_layers_banding

 

เลือกรูปแบบที่กำหนดไว้แล้ว

  • ในแท็บ “Options” ตรง Annotation style จะมี “User define” ถ้าเลือกตัวนี้ ผู้ใช้จะเป็นคนกำหนดเอง แต่ถ้าเลือก Preset style จะเป็นสไตล์ที่โปรแกรมเตรียมไว้ให้ จะขอกล่าวถึง Preset Style #1 อันเป็นการเขียนเลขน้ำสไตล์กรมเจ้าท่าของไทย ที่มีเอกลักษณ์เฉพาะตัว ตัวเลขจะเอียงไปด้านหลัง 15 องศา ตัวทศนิยมตัวเล็กกว่าแต่จะไม่ห้อย เขียนเสมอกับตัวเลขหลัก จุดทศนิยมใช้เครื่องหมายคอมม่า ที่ขีดตรงๆ ถ้าค่าเป็นลบ จะขีดเส้นใต้เครื่องหมายคอมม่า

spotfire_preset_style_1

  • เลือก  “Preset style #1” แล้วส่งจุดเข้าโปรแกรม Autocad อีกครั้ง ดูตัวเลขสไตล์ของกรมเจ้าท่า สวยงามครับ

points_doh_style

  • หรือตัวเลขติดลบบนฝั่ง เครื่องหมายลบใช้ขีดใต้เครื่องหมายคอมม่า

points_doh_style_onshore

  • ลองทดสอบดู “Preset Style #3” ตัวเลขจะหมุนทวนเข็ม 15 องศา

points_preset_style_3

สรุป

  • Spot Fire เป็นโปรแกรมตัวเล็กๆมาอำนวยความสะดวกในการเขียนตัวเลขค่าระดับ นอกจากใช้งานทางน้ำเป็นพิเศษ ผมว่าก็ดัดแปลงใช้งานบกได้ถ้าต้องการ สำหรับรุ่นต่อไปผมจะเขียนให้สามารถบันทึกไฟล์เป็น DXF ได้โดยไม่ต้องพึ่ง Autocad มากเกินไป โปรแกรมนี้ก็ยังแจกฟรีเหมือนเดิม นำไปใช้งานและแจกจ่ายได้ พบกันใหม่ครับ

SpotFire_About

สิ้นสุดการรอคอย XSection Plot รุ่น 4.10 มาแล้ว ตอนที่ 3 (จบ)

10.การจัดเรียงรูปตัดบนกระดาษเขียนแบบ (Page Layout)

  • การจัดเรียงรูปตัด เลือกทูลบาร์และคลิกที่ “Page layout” ได้ดังรูป

page_layout_toolbar

  • ความยาวของรูปตัดแต่ละรูปตัด ความกว้างในแนวดิ่ง มาตราส่วน จะมีผลต่อขนาดของรูปตัดแต่ละรูป ที่่จะวางบนกระดาษเขียนแบบ  การจัดเรียงรูปตัดให้เหมาะสม ผู้ใช้สามารถเลือกจำนวนรูปตัดในแนวดิ่ง จำนวนรูปตัดในแนวนอน ลองตั้งค่าตามรูปด้านล่าง เนื่องจากข้อมูลที่เรากำลังทดลองใช้งานอยู่มี 4 รูปตัดและความกว้างของรูปตัดประมาณ 1300 เมตร จึงยาวจรดกระดาษซ้ายขวา จำนวนรูปตัดในแนวดิ่งจึงเลือกเป็น 1 ส่วนจำนวนรูปตัดในแนวนอนเลือกเป็น 4

page_layout_1

  • มาดูตั้งค่าให้กริดทางราบ จัดระยะราบจาก CL (ค่าที่ X = 0) ไปด้านซ้าย ตั้งไว้ 700 เมตร เผื่อยาวเกินกว่าข้อมูลไว้นิดหนึ่งไม่ให้รูปตัดไปชน ด้านขวาตั้งไว้ 650 เมตร ส่วนระยะราบของกริดแต่ละช่อง(grid spacing) เลือกไว้ 10 เมตร

page_layout_2

  • มาดูการตั้งกริดทางดิ่ง ผมตั้งไว้ 21 เมตร ระยะของช่องกริดทางดิ่ง (มาตราส่วน 1:200) 1 เมตร ดูรูปกราฟฟิคที่ลากลูกศรเชื่อมโยงด้านล่างเพื่อความเข้าใจ และตั้งระยะของช่องกริดทางดิ่ง 1 เมตร

page_layout_3

  • เวลาเปลี่ยนค่า ต้องกปุ่ม “Apply” เพื่อโปรแกรมจะได้จัดวางรูปตัดให้ใหม่ ถ้ารูปตัดทับซ้อนกันโปรแกรมจะเตือนให้ทราบ ผมเตรียมไอคอนบนทูลบาร์ด้านบน เพื่อ  copy ค่าพิกัดของรูปตัดเมื่อเทียบกับค่าพิกัดของกระดาษ มุมล่างซ้าย x,y = 0,0 หน่วยเป็น ซม.ครับ เมื่อคลิกที่ไอคอน โปรแกรมจะคัดลอกค่าพิกัดลงไปตารางข้อมูล จากนั้นคลิก “OK” เพื่อปิดหน้าต่างไดอะล็อก

page_layout_coors

  • บันทึกไฟล์ข้อมูลลงดิสค์ ให้เรียบร้อย

11.แสดงรูปตัดตามขวาง (Section Viewer)

  • ในที่สุดก็มาดูรูปตัดที่เราตั้งค่าไว้ ว่าตรงตามที่ต้องการหรือไม่ ที่ทูลบาร์ คลิก “Section Viewer”

section_viewer_toolbar

  • จะเห็นรูปตัดตามขวางแสดงผลมาให้ดูแต่ละ section ซึ่งจะเริ่มจาก section แรกก่อน ดังรูปด้านล่าง การขยาย ย่อ แผนที่ทำได้โดยการ scroll เมาส์ปุ่มกลางครับง่ายๆ ส่วนการเลื่อนแผนที่คลิกกดปุ่มกลางของเมาส์แล้วลาก

section_viewer_elements

  • ค่าที่เราตั้งค่าสำหรับรูปตัดไว้ก่อนหน้านี้ เช่นค่าระดับกริดเส้นบน (Top grid elevation) หรือไม่รูปแบบการเขียนตัวเลข จะส่งผลต่อรูปตัด พิจารณาดูรูปด้านล่างที่แสดงเส้นลูกศรเชื่อมโยง

section_viewer_shown_topgrid_int

  • ส่วนค่าอื่นๆเช่นตั้งค่าให้คำนวณหาพื้นที่ดินตัด (cut) หรือดินถม (fill) หรือหาจุดตัดระหว่าง typical  และเส้นดินเดิม

section_viewer_shown_calcarea_interval

  • สังเกตรูปตัดด้านบนจะเห็นว่าตัวรูปตัดตกจากเส้นกริดลงมาด้านล่างเนื่องจากค่าระดับกริดเส้นบนใส่ค่ามากไป จากที่โปรแกรมคำนวณมาให้ ลองกลับไปตั้งค่าใหม่จาก 6 เมตร เป็น 4 เมตร จะเห็นว่ารูปตัดเลื่อนขึ้นไปอยู่ในกริด แต่เส้น existing ground ล้นกริดด้านบนไปแทน ซึ่งสามารถ trim ออกได้ในโปรแกรมด้าน CAD ในภายหลัง

section_viewer_shown_new_topgrid_elev

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

section_viewer_interactive

  • ลองคลิกที่ลูกศรเพื่อขยับไปดูรูปตัดถัดไป เสร็จแล้วจะออกจากการแสดงผลก็คลิกที่ไอคอน รูปประตู

section_viewer_next_prev12.บันทึกไฟล์ Autocad DXF (Save to DXF)

  • เมื่อตั้งค่ารูปตัดทั้งหลายจนเป็นที่พอใจ กระบวนการสุดท้ายที่ต้องการคือ แผนที่แสดงรูปตัดตามขวาง ที่สามารถส่งงานกันได้ ซึ่งจะใช้โปรแกรมอะไรด้าน CAD ความสามารถโปรแกรมเหล่านี้คือสามารถอ่านเขียนไฟล์ฟอร์แม็ต dxf ได้เพราะเจ้าของคือ Autodesk เปิดเป็นสาธารณะ ที่ทูลบาร์เลือกคลิก “Save to DXF

save_to_dxf_toolbar

  • โปรแกรมจะแสดงไดอะล็อก คลิกที่รูปไอคอนรูปดิสเก็ตเพื่อเลือกโฟลเดอร์ที่จะจัดเก็บตลอดทั้งป้อนชื่อไฟล์ทึ่จะบันทึกเป็น dxf ดังรูป

save_to_dxf_inputfile

  • เมื่อเสร็จสิ้นโปรแกรมจะขึ้น message box ว่าจัดเก็บเรียบร้อย คลิก “OK” และ “Close” เพื่อปิด

save_to_dxf_ready

13.เปิดไฟล์ด้วยโปรแกรมด้าน CAD

  • โปรแกรมด้าน CAD ขนาดเล็กๆ เขียนแบบ 2มิติ ใช้งานได้ฟรีขอแนะนำ Draftsight ดาวน์โหลด ติดตั้งแล้วลงทะเบียนก็พร้อมใช้งาน ใช้งานง่ายสะดวกครับ (ยังมีรุ่นเสียตังค์ซื้อด้วย ถ้าต้องการ) ลองเปิดไฟล์ dxf ที่บันทึกเก็บไว้จะเห็นผลงานออกมาดังรูป

draftsight2d-first

  • จะเห็นว่าตัว hatch สำหรับพื้นที่ดินตัด ดินถม ทึบสนิท ทั้งๆที่ผมตั้ง scale ของแฮ็ทช์ไว้ 1.0 ปัญหาไม่ใช่ของ Draftsight แต่มาจากไฟล์ dxf ซึ่งผมคิดว่าน่าจะเป็นไลบรารีเขียน dxf ที่ผมใช้งานอยู่คือ ezdxf แต่ไม่เป็นไรวิธีแก้กลับคือไปคลิกเลือก hatch ทุก section ที่ property มองหา scale เจอแล้วจะเห็นตัวเลข 1.000 ป้อนค่าใหม่เป็น 10.000 (หรืออะไรก็ได้) จากนั้นป้อนกลับไปค่าเดิมอีกครั้งเป็น 1.000 เหมือนเดิม จะเห็น hatch เปลี่ยนเป็นโปร่งขึ้น
  • ปัญหา hatch นี้เปิดใน Autocad ก็เป็นครับ

 

draftsight2d-hatch_ok

  • ผมลองเปิดข้อมูลเก่าที่ Titleblock เป็นภาษาไทย ลองดูก็ใช้ได้บน Draftsight สำหรับ Draftsight แบบสองมิติ อ่านดูในเน็ตเห็นว่ารุ่นนี้ฟรี (แต่ต้องลงทะเบียน ซึ่งง่ายๆ ถามไม่กี่คำถาม) แต่ก็ไม่แน่ใจว่าฟรีไปตลอดหรือไม่ ซึ่งก็น่าใช้งานมากครับถ้าฟรีตลอด สำหรับท่านที่ใช้งานแคด ที่ไม่ได้มีงานสามมิติเข้ามาเกี่ยวข้อง ดีกว่าไปละเมิดลิขสิทธิ์

draftsight2d_thai_ok

สรุป

  • โปรแกรมนี้ใช้เวลาพัฒนาประมาณ 2 ปีกว่าๆ แต่ไม่ได้ต่อเนื่องนะครับ เนื่องจากเขียนเป็นงานอดิเรก ไม่มีความกดดันอะไร ถือว่าเป็นการศึกษาด้านโปรแกรมมิ่งในตัวโดยเฉพาะ python เขียนสนุก กระชับ ทรงพลัง มีแง่บางอย่างที่นึกไม่ถึงว่าภาษาสามารถทำได้ และที่สำคัญมีไลบรารีหรือโมดูลให้ใช้มากมาย ส่วนใหญ่ฟรี เมื่อมารวมกับ Qt framework ที่เก่งอยู่แล้ว โปรแกรมที่เขียนออกมาแล้วจึงดูเป็นมืออาชีพพอสมควร แต่ก็แจ้งเตือนก่อนว่าโปรแกรม XSection Plot รุ่นนี้ยังมีบั๊กอยู่บ้าง ถ้าพบก็แจ้งมาได้ที่ blog นี้
  • เกือบลืมบอกไป โปรแกรมนี้สนับสนุนจอ 4K เรียบร้อยแล้ว ไม่มีปัญหาเรื่องไอคอนเล็ก ตัวหนังสือเล็ก

xsectionplot_about

  • ก่อนจากกันก็ขอบอกว่าโปรแกรมทุกโปรแกรมที่ผมพัฒนาขึ้นมายังคง concept เหมือนเดิมคือให้ใช้ฟรี และสำหรับช่างสำรวจและช่างโยธา เหมือนเดิมครับ

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

6.เปิดไฟล์ข้อมูล (Open file)

  • ขั้นตอนต่อไปจะมาเปิดไฟล์ข้อมูล เริ่มจากไฟล์ Typical section ที่จัดเก็บไว้ใน Documents ขั้นตอนตามรูปด้านล่าง ขั้นตอนที่ 3 เลือกประเภทของไฟล์เป็น .txml โปรแกรมจะอ่านข้อมูล และแสดงผลบนตารางในแท็บ “Typical section”

open_typical_section_file

  • ต่อไปเช่นเดียวกันเปิดไฟล์ Existing Ground section

open_ground_section_file

7.ป้อนข้อมูลโครงการ

  • ตอนนี้ข้อมูลของเราที่ได้จาก import  จาก text file มีแต่รูปตัดในตารางเท่านั้น เราจะทำการบันทึกข้อมูลโครงการของงาน นอกจากบันทึกเพื่อจำแล้วยังสามารถนำไปเขียนเป็น Titleblock ใน Autocad คลิกที่ Toolbar ดังรูปด้านล่างedit_titleblock
  • จะเห็นหน้าต่างไดอะล็อกให้ป้อนข้อมูล ถ้ามีข้อมูลอะไรให้ลบออกหมด เนื่องจากโปรแกรมจะบันทึกสถานะครั้งสุดท้ายที่ใช้เอาไว้set_project_info_procedure
  • ป้อนข้อมูลโครงการเข้าไป (ข้อมูลมาจากการสำรวจจริง แต่ชื่อโครงการ บริษัท ชื่อคน สมมุติหมด)

set_project_info_filled

เลือกภาษาให้  Titleblock

  • ที่ผมเตรียมไว้ให้มีภาษาไทยกับอังกฤษเท่านั้น ถ้าต้องการใช้ภาษาไทยก็คลิกตามรูป

set_project_info_locale

8.ตั้งขนาดกระดาษสำหรับเขียนแบบ (Page Setup)

  • สำหรับงานเขียนแบบใน Autocad แล้วขนาดกระดาษที่เราใช้มักจะเป็นขนาดกระดาษมาตรฐานได้แก่ A4, A3, A2, A1 และ A0 ขึ้นอยู่กับขนาด printer หรือ plotter ที่ใช้ด้วย ที่ทูลบาร์หลักคลิกที่ “Page Setup”

page_setup_toolbar

  • จะมีหน้าต่างไดอะล๊อกให้เลือกตั้งขนาดกระดาษ (ขนาดกระดาษกำหนดโดยผู้ใช้  Custom Paper Size โปรแกรมตอนนี้ยังไม่ support) เลือก A1 ดังรูป

page_setup

9.ตั้งค่ารูปตัด (Cross-section settings)

  • รูปแบบรูปตัดเช่นการเลือกมาตราส่วนทางราบและทางดิ่งให้ตรงกับความต้องการ การจัดรูปแบบตัวอักษร ค่า x,y (offset/elevation) หรือการตั้งจำนวนทศนิยม สามารถตั้งค่าได้ที่นี่ จากทูลบาร์หลักเลือก “Xsection Settings” ดังรูป

section_settings_toolbarตั้งค่าทั่วไป

  • จะเห็นหน้าต่างไดอะล็อก มีแท็บทั้งหมด 4 แท็บ แยกค่าที่จะตั้งเป็นสัดส่วน มาดูหน้าแรกสำหรับตั้งค่ารูปตัดทั่วๆไป

section_settings_page1_desc

  • ข้อสังเกตรูปตัดจะเห็นว่าใช้มาตราส่วนทางราบ 1 : 2000 คิดง่ายๆ ในแผนที่วัดได้ 1 มม. = ระยะจริงในสนามได้ 2 เมตร หรือในแผนที่วัดได 1 ซม. เท่ากับระยะจริงในสนาม 20 เมตร ขนาดกระดาษ A1 594 x 871 มม. แต่ขนาดที่ปริ๊นท์ได้เท่ากับ 517 x 817 มม. ถ้าวางกระดาษในแนวนอน (landscape) ความยาวคร่าวๆคือ 800 มม. สามารถเขียนแบบรูปตัดตามขวางได้เท่ากับระยะในสนาม = 2 x 800 เมตร = 1600 เมตร
  • ถ้ากลับไปดูข้อมูลในตารางจะเห็นว่าจากซ้ายไปขวาประมาณ 1300 เมตร ซึ่งกระดาษ A1 และมาตราส่วนนี้สามารถเขียนแบบได้โดยที่ไม่ล้นกระดาษ

ตั้งค่ารูปแบบตารางแสดงตัวเลข offset/elevation

  • จากหน้าต่างไดอะล็อก คลิกที่แท็บที่ 2 เลือกรูปแบบแสดงตัวเลข  offset/elevation  จาก 3 รูปแบบที่มีรูปตัวอย่างแสดงไว้ให้เห็นง่ายๆ ที่นี้ผมเลือก  Type 3 ดังรูปด้านล่าง

section_settings_page2_desc

ตั้งค่าตัวหนังสือคำหน้า/ตามหลัง ค่าระดับ datum

  •  ที่หน้าต่างไดอะล็อกคลิกที่แท็บตัวที่ 3 “Grid datum postfix/prefix” เลือกแบบที่สาม เขียนตัวหนังสือ CD (Chard Datum)  ตามหลังค่าระดับ 0.0  บางครั้งงานทางทะเลจะระบุว่าค่า 0.0 เมตร อิงอยู่กับอะไรเช่นน้ำทะเลปานกลาง (MSL) หรือ Chart Datum (CD)

section_settings_page3_desc

 ตั้งค่าระดับเส้นกริด

  • เป็นการตั้งค่าระดับเส้นกริดตัวบนสุด ปรับได้ตามต้องการเพื่อให้รูปตัดอยู่กลางๆรูปตัด จะได้ดูง่าย ไม่อึดอัด

section_settings_page4_desc

  • แต่ก็สามารถเลือกตั้งได้อัตโนมัติโดยโปรแกรม ดูรูปด้านล่างประกอบ เมื่อเสร็จสิ้นการตั้งค่ารูปตัด สามารถคลิกปุ่ม “OK” เพื่อออกจากไดอะล็อก

section_settings_page4_auto

  • ต่อไปบันทึกข้อมูลลงไฟล์ ที่เราแก้ไขตั้งค่ารูปตัด โปรแกรมจะเก็บค่าทั้งหลายเอาไว้ในไฟล์ Existing ground section รวมทั้งข้อมูล offset/elevation ในตารางทุก  section
  • ก่อนจะทำอะไรต่อ ให้คลิกรูปดิสค์เก็ตที่ทูลบาร์ เพื่อบันทึกข้อมูลลงดิสค์ โลกสวยด้วยมือเราครับ

เปิดดูไฟล์ข้อมูล

  • ลองเปิดไฟล์ข้อมูลด้วยโปรแกรมเช่น  Notepad, Notepad++  จะเห็นข้อมูลดังข้างล่าง (คลิกที่สี่เหลี่ยมลิ๊งค์ด้านล่าง เพื่อขยายออกมา)
<root version="1.0">
  <!--Generated by XSection Plot-->
  <!--This data file is Existing ground section-->
  <Header>
    <AppName>XSection Plot</AppName>
    <Developer>Prajuab Riabroy</Developer>
    <Version>4.1.512</Version>
    <SectionType>Ground</SectionType>
    <DateCreated>2016-08-15 21:09:30.751163</DateCreated>
  </Header>
  <ProjectInfo>
    <ProjectName>Macuzy International Port</ProjectName>
    <ClientName>MX Port Authority</ClientName>
    <ContractorName>East West Construction &amp; Engineering</ContractorName>
    <DrawingTitle>X-Section of Approach Channel</DrawingTitle>
    <DrawnName>Sergio Motezia</DrawnName>
    <ApprovedName>Prati Wisas</ApprovedName>
    <ClientApprovedName>Mario P. Tenes</ClientApprovedName>
    <CheckedName>Antonio Molibzo</CheckedName>
    <SurveyorName>Suras Malcom</SurveyorName>
    <SurveyedDate>1-7/03/2016</SurveyedDate>
    <DrawingNo>2017-MZ-001-PLN-020</DrawingNo>
    <SheetNo>1 / 50</SheetNo>
    <DrawingDate>1-7/03/2016</DrawingDate>
    <Revision></Revision>
    <UseLocaleLanguage>False</UseLocaleLanguage>
    <MapTexts>
      <MapText Label="Client" Locale="เจ้าของโครงการ"/>
      <MapText Label="Contractor" Locale="ผู้รับจ้าง"/>
      <MapText Label="Drawn" Locale="เขียน"/>
      <MapText Label="Design" Locale="ออกแบบ"/>
      <MapText Label="Surveyor" Locale="ผู้สำรวจ"/>
      <MapText Label="Surveyed Date" Locale="วันที่สำรวจ"/>
      <MapText Label="Checked" Locale="ตรวจสอบ"/>
      <MapText Label="Approved" Locale="อนุมัติ"/>
      <MapText Label="Client Approved" Locale="ผู้คุมงานอนุมัติ"/>
      <MapText Label="Drawing No." Locale="แบบเลขที่"/>
      <MapText Label="Plotted Date" Locale="แบบวันที่"/>
      <MapText Label="Project" Locale="โครงการ"/>
      <MapText Label="Drawing Title" Locale="แผนที่แสดง"/>
      <MapText Label="Sheet No." Locale="แบบเลขที่"/>
      <MapText Label="Scale" Locale="มาตราส่วน"/>
      <MapText Label="Vertical" Locale="ทางดิ่ง"/>
      <MapText Label="Horizontal" Locale="ทางราบ"/>
      <MapText Label="Vertical Scale" Locale="มาตราส่วนทางดิ่ง"/>
      <MapText Label="Horizontal Scale" Locale="มาตราส่วนทางราบ"/>
      <MapText Label="Legend" Locale="สัญลักษณ์"/>
      <MapText Label="Note" Locale="หมายเหตุ"/>
      <MapText Label="Geodetic Information" Locale="ข้อมูลระบบพิกัด"/>
      <MapText Label="No." Locale="ครั้งที่"/>
      <MapText Label="Amendments" Locale="ความเห็น"/>
      <MapText Label="By" Locale="โดย"/>
      <MapText Label="Date" Locale="วันที่"/>
      <MapText Label="Revision" Locale="ครั้งที่แก้ไข"/>
    </MapTexts>
  </ProjectInfo>
  <SectionOptions>
    <VerticalScale>200.0</VerticalScale>
    <HorizontalScale>2000.0</HorizontalScale>
    <HozGridSpace>10.0</HozGridSpace>
    <VertGridSpace>1.0</VertGridSpace>
    <GridLineType>0</GridLineType>
    <CalcIntersection>True</CalcIntersection>
    <CalcArea>True</CalcArea>
    <TrimTypical>False</TrimTypical>
    <NumDecimalElev>3</NumDecimalElev>
    <NumDecimalDist>3</NumDecimalDist>
    <UseIntervalText>True</UseIntervalText>
    <IntervalDist>20.0</IntervalDist>
    <PrefixText></PrefixText>
    <PostfixText>CD</PostfixText>
    <UsePostPrefix>0</UsePostPrefix>
    <UseOffsetElevFormat>2</UseOffsetElevFormat>
    <CalcPlotAreaCut>True</CalcPlotAreaCut>
    <CalcPlotAreaFill>True</CalcPlotAreaFill>
    <NumVertCLLeft>70</NumVertCLLeft>
    <NumVertCLRight>65</NumVertCLRight>
    <NumHozTopBottom>21</NumHozTopBottom>
    <LeftSideText>LT.</LeftSideText>
    <RightSideText>RT.</RightSideText>
    <StationText>Km.</StationText>
    <SelectedTBlock>2</SelectedTBlock>
    <NumSectionRows>4</NumSectionRows>
    <NumSectionColumns>1</NumSectionColumns>
    <SurveyType>0</SurveyType>
    <PlotTBlock>True</PlotTBlock>
    <SwapLeftAndRight>False</SwapLeftAndRight>
  </SectionOptions>
  <PageSetup>
    <Size>A1</Size>
    <Width>817</Width>
    <Height>570</Height>
  </PageSetup>
  <Sections>
    <NumSections>4</NumSections>
    <Section Name="-0+078">
      <XPositionOnPaper>0.0</XPositionOnPaper>
      <YPositionOnPaper>0.0</YPositionOnPaper>
      <TopGridElev>0.0</TopGridElev>
      <NumPoints>94</NumPoints>
      <Points>
        <Point Elevation="5.696" Offset="-600.0"/>
        <Point Elevation="5.693" Offset="-596.305"/>
        <Point Elevation="5.337" Offset="-587.506"/>
        <Point Elevation="2.271" Offset="-526.489"/>
        <Point Elevation="0.579" Offset="-507.151"/>
        <Point Elevation="-1.19" Offset="-490.954"/>
        <Point Elevation="-2.314" Offset="-471.14"/>
        <Point Elevation="-2.766" Offset="-462.616"/>
        <Point Elevation="-2.875" Offset="-457.815"/>
        <Point Elevation="-3.6" Offset="-434.419"/>
        <Point Elevation="-4.104" Offset="-414.736"/>
        <Point Elevation="-4.128" Offset="-406.659"/>
        <Point Elevation="-4.356" Offset="-380.964"/>
        <Point Elevation="-4.382" Offset="-376.491"/>
        <Point Elevation="-4.406" Offset="-375.215"/>
        <Point Elevation="-4.989" Offset="-349.559"/>
        <Point Elevation="-5.161" Offset="-338.86"/>
        <Point Elevation="-5.347" Offset="-322.669"/>
        <Point Elevation="-5.812" Offset="-302.883"/>
        <Point Elevation="-5.942" Offset="-297.584"/>
        <Point Elevation="-6.148" Offset="-283.939"/>
        <Point Elevation="-6.342" Offset="-272.05"/>
        <Point Elevation="-6.387" Offset="-267.862"/>
        <Point Elevation="-6.733" Offset="-246.07"/>
        <Point Elevation="-7.111" Offset="-231.836"/>
        <Point Elevation="-7.372" Offset="-217.745"/>
        <Point Elevation="-7.824" Offset="-194.494"/>
        <Point Elevation="-7.882" Offset="-191.371"/>
        <Point Elevation="-7.834" Offset="-183.933"/>
        <Point Elevation="-7.668" Offset="-165.389"/>
        <Point Elevation="-8.54" Offset="-139.979"/>
        <Point Elevation="-8.98" Offset="-123.408"/>
        <Point Elevation="-9.255" Offset="-115.989"/>
        <Point Elevation="-9.487" Offset="-93.719"/>
        <Point Elevation="-9.566" Offset="-88.009"/>
        <Point Elevation="-9.732" Offset="-85.635"/>
        <Point Elevation="-11.591" Offset="-57.803"/>
        <Point Elevation="-11.779" Offset="-43.322"/>
        <Point Elevation="-11.967" Offset="-27.782"/>
        <Point Elevation="-11.928" Offset="-5.492"/>
        <Point Elevation="-11.967" Offset="-1.247"/>
        <Point Elevation="-12.16" Offset="11.274"/>
        <Point Elevation="-12.318" Offset="20.29"/>
        <Point Elevation="-12.301" Offset="22.958"/>
        <Point Elevation="-12.249" Offset="39.553"/>
        <Point Elevation="-12.303" Offset="48.517"/>
        <Point Elevation="-12.25" Offset="59.398"/>
        <Point Elevation="-12.081" Offset="76.972"/>
        <Point Elevation="-12.057" Offset="79.758"/>
        <Point Elevation="-12.02" Offset="83.034"/>
        <Point Elevation="-11.703" Offset="98.323"/>
        <Point Elevation="-11.569" Offset="104.196"/>
        <Point Elevation="-11.562" Offset="105.697"/>
        <Point Elevation="-11.365" Offset="116.141"/>
        <Point Elevation="-11.25" Offset="117.347"/>
        <Point Elevation="-10.732" Offset="135.54"/>
        <Point Elevation="-10.625" Offset="146.227"/>
        <Point Elevation="-10.077" Offset="158.793"/>
        <Point Elevation="-8.681" Offset="177.76"/>
        <Point Elevation="-8.592" Offset="181.044"/>
        <Point Elevation="-8.401" Offset="194.035"/>
        <Point Elevation="-8.271" Offset="203.535"/>
        <Point Elevation="-7.923" Offset="213.249"/>
        <Point Elevation="-7.728" Offset="217.373"/>
        <Point Elevation="-7.095" Offset="235.24"/>
        <Point Elevation="-6.982" Offset="241.693"/>
        <Point Elevation="-6.682" Offset="247.206"/>
        <Point Elevation="-6.075" Offset="256.627"/>
        <Point Elevation="-5.455" Offset="278.481"/>
        <Point Elevation="-5.337" Offset="282.26"/>
        <Point Elevation="-5.042" Offset="294.845"/>
        <Point Elevation="-5.019" Offset="295.988"/>
        <Point Elevation="-4.347" Offset="321.161"/>
        <Point Elevation="-4.189" Offset="329.073"/>
        <Point Elevation="-3.808" Offset="348.654"/>
        <Point Elevation="-3.664" Offset="355.277"/>
        <Point Elevation="-3.317" Offset="372.887"/>
        <Point Elevation="-3.154" Offset="382.261"/>
        <Point Elevation="-2.776" Offset="410.279"/>
        <Point Elevation="-2.765" Offset="410.995"/>
        <Point Elevation="-2.704" Offset="413.887"/>
        <Point Elevation="-2.197" Offset="439.138"/>
        <Point Elevation="-1.967" Offset="448.435"/>
        <Point Elevation="-1.716" Offset="464.705"/>
        <Point Elevation="-1.481" Offset="485.302"/>
        <Point Elevation="-1.403" Offset="489.714"/>
        <Point Elevation="-1.251" Offset="498.925"/>
        <Point Elevation="-0.928" Offset="517.874"/>
        <Point Elevation="-0.799" Offset="529.258"/>
        <Point Elevation="-0.604" Offset="548.73"/>
        <Point Elevation="-1.169" Offset="576.146"/>
        <Point Elevation="-1.18" Offset="579.205"/>
        <Point Elevation="-1.305" Offset="585.252"/>
        <Point Elevation="-1.468" Offset="600.0"/>
      </Points>
    </Section>
    <Section Name="0+172">
      <XPositionOnPaper>0.0</XPositionOnPaper>
      <YPositionOnPaper>0.0</YPositionOnPaper>
      <TopGridElev>0.0</TopGridElev>
      <NumPoints>104</NumPoints>
      <Points>
        <Point Elevation="4.21" Offset="-600.0"/>
        <Point Elevation="3.865" Offset="-590.197"/>
        <Point Elevation="3.192" Offset="-572.372"/>
        <Point Elevation="1.492" Offset="-534.461"/>
        <Point Elevation="-1.278" Offset="-510.761"/>
        <Point Elevation="-1.773" Offset="-506.708"/>
        <Point Elevation="-2.262" Offset="-496.208"/>
        <Point Elevation="-3.027" Offset="-480.587"/>
        <Point Elevation="-3.26" Offset="-473.089"/>
        <Point Elevation="-4.034" Offset="-454.61"/>
        <Point Elevation="-4.281" Offset="-430.868"/>
        <Point Elevation="-4.355" Offset="-425.789"/>
        <Point Elevation="-4.35" Offset="-412.009"/>
        <Point Elevation="-4.367" Offset="-398.744"/>
        <Point Elevation="-4.437" Offset="-394.505"/>
        <Point Elevation="-4.911" Offset="-371.013"/>
        <Point Elevation="-5.369" Offset="-344.896"/>
        <Point Elevation="-5.909" Offset="-321.896"/>
        <Point Elevation="-5.972" Offset="-318.479"/>
        <Point Elevation="-6.203" Offset="-307.947"/>
        <Point Elevation="-6.559" Offset="-290.298"/>
        <Point Elevation="-6.742" Offset="-282.919"/>
        <Point Elevation="-7.278" Offset="-261.654"/>
        <Point Elevation="-7.19" Offset="-241.456"/>
        <Point Elevation="-7.206" Offset="-234.351"/>
        <Point Elevation="-7.744" Offset="-212.894"/>
        <Point Elevation="-7.972" Offset="-205.898"/>
        <Point Elevation="-8.011" Offset="-204.056"/>
        <Point Elevation="-8.937" Offset="-181.613"/>
        <Point Elevation="-9.613" Offset="-169.45"/>
        <Point Elevation="-10.568" Offset="-155.252"/>
        <Point Elevation="-11.306" Offset="-139.728"/>
        <Point Elevation="-11.435" Offset="-136.455"/>
        <Point Elevation="-11.67" Offset="-122.543"/>
        <Point Elevation="-11.836" Offset="-115.516"/>
        <Point Elevation="-11.845" Offset="-113.826"/>
        <Point Elevation="-12.223" Offset="-102.969"/>
        <Point Elevation="-12.219" Offset="-100.525"/>
        <Point Elevation="-12.572" Offset="-83.796"/>
        <Point Elevation="-12.666" Offset="-73.185"/>
        <Point Elevation="-12.605" Offset="-61.703"/>
        <Point Elevation="-12.379" Offset="-44.437"/>
        <Point Elevation="-12.45" Offset="-41.849"/>
        <Point Elevation="-12.273" Offset="-20.661"/>
        <Point Elevation="-12.271" Offset="-15.995"/>
        <Point Elevation="-12.279" Offset="-14.536"/>
        <Point Elevation="-12.193" Offset="7.86"/>
        <Point Elevation="-12.049" Offset="12.127"/>
        <Point Elevation="-11.97" Offset="26.792"/>
        <Point Elevation="-11.482" Offset="39.803"/>
        <Point Elevation="-11.428" Offset="47.755"/>
        <Point Elevation="-11.244" Offset="53.548"/>
        <Point Elevation="-10.805" Offset="70.223"/>
        <Point Elevation="-10.718" Offset="74.57"/>
        <Point Elevation="-10.702" Offset="75.913"/>
        <Point Elevation="-10.087" Offset="96.66"/>
        <Point Elevation="-9.799" Offset="103.819"/>
        <Point Elevation="-9.63" Offset="112.183"/>
        <Point Elevation="-9.234" Offset="126.254"/>
        <Point Elevation="-8.999" Offset="137.384"/>
        <Point Elevation="-8.476" Offset="159.55"/>
        <Point Elevation="-8.445" Offset="160.778"/>
        <Point Elevation="-8.271" Offset="164.407"/>
        <Point Elevation="-7.259" Offset="184.045"/>
        <Point Elevation="-7.127" Offset="189.256"/>
        <Point Elevation="-6.92" Offset="198.448"/>
        <Point Elevation="-6.48" Offset="207.958"/>
        <Point Elevation="-6.04" Offset="221.897"/>
        <Point Elevation="-5.474" Offset="242.469"/>
        <Point Elevation="-5.364" Offset="247.769"/>
        <Point Elevation="-5.253" Offset="251.096"/>
        <Point Elevation="-4.998" Offset="265.24"/>
        <Point Elevation="-4.818" Offset="275.102"/>
        <Point Elevation="-4.715" Offset="277.979"/>
        <Point Elevation="-4.027" Offset="298.699"/>
        <Point Elevation="-3.738" Offset="309.727"/>
        <Point Elevation="-3.575" Offset="322.408"/>
        <Point Elevation="-3.105" Offset="340.851"/>
        <Point Elevation="-2.937" Offset="346.115"/>
        <Point Elevation="-2.855" Offset="359.315"/>
        <Point Elevation="-2.833" Offset="366.127"/>
        <Point Elevation="-2.816" Offset="367.498"/>
        <Point Elevation="-2.675" Offset="385.31"/>
        <Point Elevation="-2.596" Offset="391.895"/>
        <Point Elevation="-2.673" Offset="406.1"/>
        <Point Elevation="-2.465" Offset="418.482"/>
        <Point Elevation="-2.516" Offset="427.315"/>
        <Point Elevation="-2.328" Offset="445.356"/>
        <Point Elevation="-2.337" Offset="446.342"/>
        <Point Elevation="-2.626" Offset="452.604"/>
        <Point Elevation="-3.486" Offset="470.977"/>
        <Point Elevation="-3.693" Offset="476.912"/>
        <Point Elevation="-3.777" Offset="496.074"/>
        <Point Elevation="-3.932" Offset="501.72"/>
        <Point Elevation="-4.018" Offset="513.362"/>
        <Point Elevation="-3.474" Offset="529.259"/>
        <Point Elevation="-3.265" Offset="532.878"/>
        <Point Elevation="-2.893" Offset="543.264"/>
        <Point Elevation="-2.834" Offset="544.691"/>
        <Point Elevation="-2.372" Offset="551.966"/>
        <Point Elevation="-1.374" Offset="568.651"/>
        <Point Elevation="-1.184" Offset="572.608"/>
        <Point Elevation="-0.9" Offset="589.873"/>
        <Point Elevation="-0.265" Offset="600.0"/>
      </Points>
    </Section>
    <Section Name="0+422">
      <XPositionOnPaper>0.0</XPositionOnPaper>
      <YPositionOnPaper>0.0</YPositionOnPaper>
      <TopGridElev>0.0</TopGridElev>
      <NumPoints>98</NumPoints>
      <Points>
        <Point Elevation="2.527" Offset="-600.0"/>
        <Point Elevation="1.923" Offset="-583.886"/>
        <Point Elevation="1.147" Offset="-573.7"/>
        <Point Elevation="0.148" Offset="-560.844"/>
        <Point Elevation="-1.561" Offset="-534.717"/>
        <Point Elevation="-1.604" Offset="-534.134"/>
        <Point Elevation="-2.764" Offset="-502.908"/>
        <Point Elevation="-3.147" Offset="-490.643"/>
        <Point Elevation="-3.634" Offset="-472.527"/>
        <Point Elevation="-4.199" Offset="-442.515"/>
        <Point Elevation="-4.26" Offset="-440.183"/>
        <Point Elevation="-4.353" Offset="-435.493"/>
        <Point Elevation="-4.626" Offset="-412.074"/>
        <Point Elevation="-4.836" Offset="-400.43"/>
        <Point Elevation="-4.963" Offset="-383.964"/>
        <Point Elevation="-5.335" Offset="-361.676"/>
        <Point Elevation="-5.378" Offset="-357.711"/>
        <Point Elevation="-5.461" Offset="-354.483"/>
        <Point Elevation="-5.587" Offset="-348.617"/>
        <Point Elevation="-6.599" Offset="-306.504"/>
        <Point Elevation="-6.923" Offset="-292.309"/>
        <Point Elevation="-7.646" Offset="-260.816"/>
        <Point Elevation="-7.665" Offset="-260.005"/>
        <Point Elevation="-8.267" Offset="-238.897"/>
        <Point Elevation="-9.466" Offset="-215.915"/>
        <Point Elevation="-9.939" Offset="-205.494"/>
        <Point Elevation="-10.636" Offset="-192.184"/>
        <Point Elevation="-11.499" Offset="-177.238"/>
        <Point Elevation="-11.845" Offset="-170.731"/>
        <Point Elevation="-12.281" Offset="-152.944"/>
        <Point Elevation="-12.343" Offset="-150.873"/>
        <Point Elevation="-12.345" Offset="-150.114"/>
        <Point Elevation="-12.485" Offset="-127.286"/>
        <Point Elevation="-12.474" Offset="-120.381"/>
        <Point Elevation="-12.427" Offset="-111.488"/>
        <Point Elevation="-12.447" Offset="-105.883"/>
        <Point Elevation="-12.651" Offset="-87.792"/>
        <Point Elevation="-12.622" Offset="-78.078"/>
        <Point Elevation="-12.53" Offset="-55.591"/>
        <Point Elevation="-12.495" Offset="-52.513"/>
        <Point Elevation="-12.115" Offset="-31.23"/>
        <Point Elevation="-12.009" Offset="-23.783"/>
        <Point Elevation="-11.488" Offset="-9.776"/>
        <Point Elevation="-11.236" Offset="4.184"/>
        <Point Elevation="-10.416" Offset="13.232"/>
        <Point Elevation="-10.641" Offset="20.134"/>
        <Point Elevation="-10.28" Offset="44.002"/>
        <Point Elevation="-10.292" Offset="44.652"/>
        <Point Elevation="-10.289" Offset="44.792"/>
        <Point Elevation="-10.828" Offset="56.567"/>
        <Point Elevation="-10.797" Offset="59.917"/>
        <Point Elevation="-10.401" Offset="76.981"/>
        <Point Elevation="-10.186" Offset="85.234"/>
        <Point Elevation="-10.076" Offset="91.139"/>
        <Point Elevation="-9.671" Offset="106.374"/>
        <Point Elevation="-9.556" Offset="114.729"/>
        <Point Elevation="-9.018" Offset="131.881"/>
        <Point Elevation="-8.96" Offset="133.976"/>
        <Point Elevation="-8.938" Offset="135.194"/>
        <Point Elevation="-8.59" Offset="157.634"/>
        <Point Elevation="-8.516" Offset="163.615"/>
        <Point Elevation="-8.379" Offset="182.167"/>
        <Point Elevation="-8.093" Offset="194.118"/>
        <Point Elevation="-7.878" Offset="204.774"/>
        <Point Elevation="-7.548" Offset="221.957"/>
        <Point Elevation="-7.482" Offset="225.607"/>
        <Point Elevation="-7.519" Offset="237.596"/>
        <Point Elevation="-7.537" Offset="244.959"/>
        <Point Elevation="-7.524" Offset="247.228"/>
        <Point Elevation="-7.202" Offset="265.159"/>
        <Point Elevation="-6.937" Offset="273.625"/>
        <Point Elevation="-6.791" Offset="280.238"/>
        <Point Elevation="-6.674" Offset="286.833"/>
        <Point Elevation="-6.486" Offset="295.474"/>
        <Point Elevation="-6.408" Offset="313.252"/>
        <Point Elevation="-6.365" Offset="316.221"/>
        <Point Elevation="-6.294" Offset="327.463"/>
        <Point Elevation="-6.2" Offset="337.22"/>
        <Point Elevation="-6.207" Offset="338.339"/>
        <Point Elevation="-5.867" Offset="355.513"/>
        <Point Elevation="-5.65" Offset="362.307"/>
        <Point Elevation="-5.567" Offset="375.271"/>
        <Point Elevation="-5.433" Offset="387.259"/>
        <Point Elevation="-5.152" Offset="396.436"/>
        <Point Elevation="-4.378" Offset="413.203"/>
        <Point Elevation="-4.146" Offset="425.427"/>
        <Point Elevation="-4.099" Offset="435.841"/>
        <Point Elevation="-3.993" Offset="439.726"/>
        <Point Elevation="-3.418" Offset="457.353"/>
        <Point Elevation="-2.943" Offset="467.452"/>
        <Point Elevation="-2.548" Offset="480.037"/>
        <Point Elevation="-1.52" Offset="499.033"/>
        <Point Elevation="-1.085" Offset="505.573"/>
        <Point Elevation="-0.707" Offset="509.068"/>
        <Point Elevation="-0.564" Offset="514.17"/>
        <Point Elevation="1.044" Offset="545.131"/>
        <Point Elevation="3.671" Offset="586.351"/>
        <Point Elevation="4.257" Offset="600.0"/>
      </Points>
    </Section>
    <Section Name="0+672">
      <XPositionOnPaper>0.0</XPositionOnPaper>
      <YPositionOnPaper>0.0</YPositionOnPaper>
      <TopGridElev>0.0</TopGridElev>
      <NumPoints>101</NumPoints>
      <Points>
        <Point Elevation="0.751" Offset="-600.0"/>
        <Point Elevation="0.17" Offset="-590.282"/>
        <Point Elevation="-0.185" Offset="-585.509"/>
        <Point Elevation="-1.698" Offset="-564.455"/>
        <Point Elevation="-2.012" Offset="-556.049"/>
        <Point Elevation="-2.541" Offset="-536.428"/>
        <Point Elevation="-2.738" Offset="-526.646"/>
        <Point Elevation="-3.164" Offset="-510.314"/>
        <Point Elevation="-3.581" Offset="-498.217"/>
        <Point Elevation="-3.967" Offset="-482.548"/>
        <Point Elevation="-4.17" Offset="-466.638"/>
        <Point Elevation="-4.63" Offset="-454.111"/>
        <Point Elevation="-4.885" Offset="-437.444"/>
        <Point Elevation="-4.739" Offset="-426.605"/>
        <Point Elevation="-4.755" Offset="-407.163"/>
        <Point Elevation="-4.887" Offset="-399.338"/>
        <Point Elevation="-5.348" Offset="-377.159"/>
        <Point Elevation="-5.455" Offset="-371.865"/>
        <Point Elevation="-6.085" Offset="-345.987"/>
        <Point Elevation="-6.145" Offset="-343.34"/>
        <Point Elevation="-6.428" Offset="-331.877"/>
        <Point Elevation="-6.448" Offset="-330.864"/>
        <Point Elevation="-7.104" Offset="-309.854"/>
        <Point Elevation="-7.356" Offset="-296.783"/>
        <Point Elevation="-7.378" Offset="-295.786"/>
        <Point Elevation="-8.31" Offset="-272.558"/>
        <Point Elevation="-9.344" Offset="-249.668"/>
        <Point Elevation="-9.524" Offset="-246.49"/>
        <Point Elevation="-10.115" Offset="-236.3"/>
        <Point Elevation="-10.351" Offset="-218.394"/>
        <Point Elevation="-10.714" Offset="-213.348"/>
        <Point Elevation="-11.674" Offset="-204.751"/>
        <Point Elevation="-11.699" Offset="-201.381"/>
        <Point Elevation="-11.744" Offset="-193.463"/>
        <Point Elevation="-12.329" Offset="-178.033"/>
        <Point Elevation="-12.592" Offset="-165.284"/>
        <Point Elevation="-12.777" Offset="-155.308"/>
        <Point Elevation="-12.43" Offset="-144.408"/>
        <Point Elevation="-12.528" Offset="-139.081"/>
        <Point Elevation="-12.669" Offset="-133.221"/>
        <Point Elevation="-12.262" Offset="-121.876"/>
        <Point Elevation="-12.13" Offset="-110.999"/>
        <Point Elevation="-12.286" Offset="-98.019"/>
        <Point Elevation="-12.367" Offset="-89.578"/>
        <Point Elevation="-11.654" Offset="-75.025"/>
        <Point Elevation="-11.598" Offset="-71.369"/>
        <Point Elevation="-12.418" Offset="-63.45"/>
        <Point Elevation="-12.586" Offset="-57.395"/>
        <Point Elevation="-12.029" Offset="-40.428"/>
        <Point Elevation="-11.941" Offset="-37.225"/>
        <Point Elevation="-12.05" Offset="-17.903"/>
        <Point Elevation="-11.919" Offset="-14.255"/>
        <Point Elevation="-10.878" Offset="5.213"/>
        <Point Elevation="-10.987" Offset="7.781"/>
        <Point Elevation="-12.241" Offset="17.876"/>
        <Point Elevation="-12.175" Offset="19.902"/>
        <Point Elevation="-12.679" Offset="37.309"/>
        <Point Elevation="-12.779" Offset="41.445"/>
        <Point Elevation="-12.756" Offset="41.967"/>
        <Point Elevation="-12.147" Offset="62.308"/>
        <Point Elevation="-12.189" Offset="63.587"/>
        <Point Elevation="-11.804" Offset="83.447"/>
        <Point Elevation="-11.748" Offset="85.224"/>
        <Point Elevation="-11.68" Offset="105.223"/>
        <Point Elevation="-11.648" Offset="107.415"/>
        <Point Elevation="-11.299" Offset="124.477"/>
        <Point Elevation="-11.183" Offset="129.8"/>
        <Point Elevation="-10.608" Offset="145.77"/>
        <Point Elevation="-10.491" Offset="152.394"/>
        <Point Elevation="-10.528" Offset="156.006"/>
        <Point Elevation="-10.486" Offset="170.955"/>
        <Point Elevation="-10.376" Offset="180.254"/>
        <Point Elevation="-10.183" Offset="192.924"/>
        <Point Elevation="-10.122" Offset="198.333"/>
        <Point Elevation="-9.995" Offset="209.165"/>
        <Point Elevation="-9.803" Offset="220.192"/>
        <Point Elevation="-9.727" Offset="230.156"/>
        <Point Elevation="-9.793" Offset="235.687"/>
        <Point Elevation="-9.444" Offset="249.066"/>
        <Point Elevation="-9.308" Offset="258.031"/>
        <Point Elevation="-9.253" Offset="261.971"/>
        <Point Elevation="-8.511" Offset="283.111"/>
        <Point Elevation="-8.163" Offset="289.464"/>
        <Point Elevation="-7.102" Offset="307.459"/>
        <Point Elevation="-6.902" Offset="312.383"/>
        <Point Elevation="-6.731" Offset="322.229"/>
        <Point Elevation="-6.609" Offset="326.578"/>
        <Point Elevation="-6.011" Offset="346.572"/>
        <Point Elevation="-5.822" Offset="350.33"/>
        <Point Elevation="-4.461" Offset="371.66"/>
        <Point Elevation="-4.318" Offset="373.491"/>
        <Point Elevation="-1.818" Offset="396.911"/>
        <Point Elevation="-1.583" Offset="398.654"/>
        <Point Elevation="1.249" Offset="416.959"/>
        <Point Elevation="1.897" Offset="437.491"/>
        <Point Elevation="3.568" Offset="467.863"/>
        <Point Elevation="6.567" Offset="551.744"/>
        <Point Elevation="6.606" Offset="552.895"/>
        <Point Elevation="6.604" Offset="553.18"/>
        <Point Elevation="6.591" Offset="553.868"/>
        <Point Elevation="5.965" Offset="600.0"/>
      </Points>
    </Section>
  </Sections>
</root>

 

จบตอนที่ 2

  • พบกันตอนหน้า ตอนที่ 3 ครับ

สิ้นสุดการรอคอย 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 ต่อได้ครับ

 

โปรแกรมคำนวณวงรอบ Traverse Pro รุ่น 2.60 (รุ่นล่าสุด) รองรับจอ 4K

ทุกข์ของคนใช้จอ 4K

  • สามเดือนที่แล้วผมไปถอยโน๊ตบุ๊คจอ 4K ขนาด 15.6″ มาใช้ความละเอียด 3840×2160 ลงวินโดส์ 10 และ Ubuntu Gnome ขอพูดตอนลงวินโดส์ต้องเอาแว่นขยายมาส่องหน้าจอเลยครับ เพราะตัวหนังสือเล็กมากจนอ่านไม่ได้ ตรงที่เตรียมพาร์ทิชั่นฮาร์ดดิสค์ต้องระวังเป็นพิเศษกลัวจะคลิกผิด กลายเป็นล้างฮาร์ดดิสค์ทั้งลูก ติดตั้งเสร็จก็ค่อยยังชั่วครับ เพราะวินโดส์ scale ตัวหนังสือให้ 250% และตัววินโดส์เองบางอย่างเช่น File Explorer, Control Panel เตรียมมาสำหรับจอแบบนี้แล้ว แต่ Device manager ก็ยังเดิมๆแต่วินโดส์ก็ scale ให้ใหญ่ขึ้นมาเบลอๆแต่ก็อ่านได้
  • ปัญหาที่หนักหน่วงคือโปรแกรมทั้งหลายที่ใช้งานอยู่ มีน้อยมากที่อัพเดทเพื่อรองรับจอ 4K จากความตื่นเต้นในตอนแรกๆที่ได้ใช้จอภาพละเอียดกลายเป็นความทรมานของผู้สูงอายุอย่างผมไปในทันที ดูตัวอย่างโปรแกรม Microstation V8i ไอคอนเล็กกระจิ๊ดต้องเพ่งหนักมาก

Microstaion V8i

  • อีกหลายๆโปรแกรมเช่น Gimp ก็ทรมานสายตาไม่น้อย

gimp

  • สำหรับ Autocad ไอคอนก็ดูได้แต่ตัวหนังสือไม่ทราบ scale ด้วยอัตราส่วนเท่าไหร่ถึงใหญ่จนล้นกรอบ

autocad

Traverse Pro รุ่นก่อนหน้านี้กับจอ 4K

  • ลองติดตั้ง Traverse Pro รุ่น 2.50 ตัวโปรแกรมก็ถูกวินโดส์สเกลมาประมาณสามเท่าให้เรียบร้อย เบลอๆแต่ยังพออ่านได้ ตอนเขียนโปรแกรมผมตั้งค่าให้วินโส์จัดการเรื่องขนาดตัวหนังสือและไอคอนอัตโนมัติ ตอนนั้นไม่ได้ใส่ใจครับว่าจอภาพในอนาคตจะละเอียดเพิ่มมากขึ้น

tpro_old

  • ในขณะนั้นก็เลยคิดว่าคงจะดีถ้าปรับปรุงโปรแกรมให้รองรับจอ 4K เผื่อไว้ในอนาคต ที่จอแบบนี้จะเป็นกลายเป็นสิ่งธรรมดาที่สุดในไม่กี่ปีข้างหน้านี้ แต่เมื่อไปเปิดเครื่องมือพัฒนาโปรแกรม Lazrus IDE  ก็ต้องปวดตาอีกครั้งครับ เพราะยังไม่รองรับ 4K เหมือนกัน แต่ก็ดีหน่อยเพราะคุ้นกับการกดคีย์ลัดมากกว่าเลยไม่มีปัญหามาก

lazarus_no_4k_supported

ปรับปรุง Traverse Pro เป็นรุ่น 2.60 สำหรับจอ 4K

  • ตอนแรกๆนึกว่าจะใช้เวลาไม่นาน กลับใช้เวลาไปพอสมควร เนื่องจากรองรับจอหลาย resolution เลยต้องเตรียมไอคอนไว้หลายขนาด ไอคอนส่วนใหญ่ก็หา download จากอินเทอร์เน็ตแล้วมาปรับปรุงอีกนิดหน่อย ตอนรันโปรแกรมจะตรวจสอบความละเอียดของจอของผู้ใช้แล้วเลือกขนาดตัวหนังสือและไอคอนให้เหมาะสม ปรับ options ในเครื่องมือพัฒนาโปรแกรมเป็น Enabled DPI awareness หมายถึงอย่ามาขยายตัวหนังสือหรือไอคอน เราจะจัดการเอง สุดท้ายผมก็ถือโอกาสแก้บั๊กหลายอย่างเช่น
    • แก้ปัญหาฟอร์แม็ตค่าพิกัดที่ใช้แยกหลักพันด้วยคอมม่าที่ตอนแรกเพี้ยน
    • แก้ปัญหาลากเส้นตีตารางใน print preview เดิมที่ resolution ไม่มาก ดูแล้วเห็นว่าเส้นตารางตรงกัน พอเจอความละเอียดจอสูงขึ้นเส้นตารางดันไม่ตรงกัน
    • แก้ปัญหาภาษาไทยกลายเป็นอักขระประหลาดใน print preview และตอนออก Excel
    • แก้ปัญหาวาดรูปวงรอบ (Traverse Plot) ไม่วาดในวินโดส์ 10
  • จัดทำโปรแกรมติดตั้งด้วย Inno setup ทั้งรุ่น 32 bit และ 64 bit ผมก็ยังสงสัยว่ายังมีคนใช้วินโดส์ 32 บิตอยู่มากไหมโดยเฉพาะวินโดส์ XP เพราะตอนนี้ผมหาเครื่องคอมพิวเตอร์รุ่นนี้มาทดสอบโปรแกรมไม่ได้แล้ว

หน้าตา Traverse Pro รุ่น 2.60

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

tpro_2.60a

  • ใน  Print preview เปลี่ยนไอคอนใหม่

tpro_printpreview

  • ใน Traverse Plot ก็เปลี่ยนไอคอนไปบ้างยกเว้นตรง Zoom in, Zoom out มุมล่างขวา ยังเหมือนเดิมแต่รันบนจอ 4K ไอคอนจะเล็กไปนิดหน่อยครับ

tpro_plottraverse

  • ส่งผลลัพธ์ออก Microsoft Excel ที่จริงผมไม่ได้ใช้ Microsoft Office นานหลายปีแล้ว ตอนนี้ใช้ Libreoffice อยู่ ผมจึงลง Microsoft Office แบบไม่ได้ Activate แล้วก็ค่อย uninstall หลังจากทดสอบแล้ว ผลลัพธ์ก็อย่างที่เห็น อนาคตผมอาจจะเขียนให้สามารถส่งผลลัพธ์ออก Libreoffice ได้ครับ

tpro_output_excel

  • ใน About ของโปรแกรมลักษณะเป็น 3D animation เหมือนเดิม แต่เปลี่ยนเป็นโมเดล 3D กล้องยี่ห้อหนึ่ง ดาวน์โหลดโมเดลจากอินเทอร์เน็ต อย่ามาฟ้องลิขสิทธิ์ผมเลยนะครับ มองในมุมกลับผมโฆษณาให้ฟรีๆ

tpro_about

  • คู่มือการใช้โปรแกรม ยังไม่ได้ปรับปรุงใหม่ยังใช้คู่มือของรุ่น 2.50 ที่จัดทำโดยน้องตั้ม ซึ่งในไฟล์ setup จะติดตั้งคู่มือการใช้โปรแกรมไปให้อัตโนมัติ และขอขอบคุณ คุณแหลม วิศวกรรถไฟ ที่สละเวลามาทำ Splashbox โชว์โลโก้ตอนเปิดโปรแกรมให้ครับ
  • ถ้าต้องการดาวน์โหลดไปใช้งาน ก็ดูที่ลิ๊งค์ด้านขวามือนะครับ

คู่มือการใช้โปรแกรม Traverse Pro V2.50

ยินดีต้อนรับสู่คู่มือการใช้งานโปรแกรมคำนวณวงรอบ Traverse Pro รุ่น 2.50

  • โปรแกรมคำนวณวงรอบ  Traverse Pro รุ่น V2.50 (ล่าสุด) ร้างลาคู่มือการใช้มาตั้งแต่แรก  และคู่มือการใช้ น้องตั้มเสนอทำให้มานานแล้ว ผมยังไม่ได้เอาออก Blog สักที ก็ขอโทษน้องตั้มไว้ ณ ที่นี้ด้วย  ต้นฉบับเดิมเป็น Microsoft Word ผมนำมาแปลงลง Blog  คู่มือฉบับนี้เน้นความกระทัดรัด ใช้ภาษาง่ายๆ ท้ายๆจะมีตัวอย่างข้อมูลให้ลองป้อนดูตามครับ และขอขอบคุณน้องตั้ม ที่สละแรงกาย แรงใจ จัดทำคู่มือนี้ให้

 ดาวน์โหลดคู่มือในรูปแบบ PDF

 


คู่มือการใช้งานโปรแกรม Traverse Pro V2.50


 

สารบัญเรื่อง

1.เริ่มต้นดาวน์โหลดโปรแกรม

2.การติดตั้งโปรแกรม

3.แถบเครื่องมือของโปรแกรม

4.การตั้งค่าพื้นหลักฐานและ UTM

5.การป้อนข้อมูลจากการรังวัดวงรอบ

6.การคำนวณวงรอบ

7.การแสดงรูปวงรอบ

8.การพิมพ์ตารางผลการคำนวณวงรอบ

9.การส่งผลการคำนวณวงรอบไปยัง Microsoft Excel

10.ตัวอย่างการคำนวณวงรอบโดยโปรแกรม Traverse Pro V2.50

1.เริ่มต้นดาวน์โหลดโปรแกรม

  • โปรแกรม Traverse Pro V2.50 เป็นโปรแกรมที่ใช้สำหรับคำนวณวงรอบ ผู้ใช้สามารถดาวน์โหลดมาใช้งานได้โดยไม่เสียค่าใช้จ่ายผ่านทาง ลิ๊งค์นี้ เวอร์ชั่น 2.50 นี้ถูกพัฒนาให้ใช้งานได้บน Windows 7 หรือ มีการปรับปรุงการทำงานให้เรียบง่ายขึ้นและไม่มีปัญหาการแสดงผลภาษาไทย โดยมีให้เลือกใช้งาน รุ่น คือ รุ่น 32 บิต และ รุ่น 64 บิต ตามรูปที่ 1
  •  วงรอบ (Traverse) คือ การสำรวจรังวัดที่นำมาใช้ในการขยายหมุดควบคุมทางราบ (Horizontal Control Point) เพิ่มเติมจากหมุดควบคุมที่มีอยู่ก่อนแล้ว ลักษณะงานวงรอบจะเป็นการรังวัดมุมราบและระยะทางเป็นเส้นตรงต่อเนื่องกันไป โดยเริ่มรังวัดจากหมุดควบคุมทางราบที่ทราบค่าพิกัดจำนวน 2 หมุด หรือทราบค่าพิกัด 1 หมุดและค่าอะซิมัทอีก 1 ค่าก็ได้ และทำการรังวัดกลับมาบรรจบที่หมุดควบคุมคู่เดิม หรือจะเข้าบรรจบที่หมุดควบคุมคู่อื่นๆ ที่ทราบค่าพิกัดก็ได้ เราจะเรียกวงรอบลักษณะเช่นนี้ว่า วงรอบปิด (Closed Traverse)

download_traversepro

รูปที่ 1 : เริ่มต้นดาวน์โหลดโปรแกรม

2.การติดตั้งโปรแกรม

  • เมื่อดาวน์โหลดโปรแกรมเรียบร้อยแล้ว จะได้ไฟล์ที่มีลักษณะถูกบีบอัด (Zip File) ให้ผู้ใช้ทำการแตกไฟล์และทำการติดตั้งโปรแกรม โดยมีขั้นตอนดังนี้ 
    • ดับเบิ้ลคลิกที่ไฟล์ “TraverseproV250Setup64” จากตัวอย่างเป็นรุ่น 64 บิต ดังแสดงในรูปที่ 2
    • ขณะทำการติดตั้งโปรแกรมจะมีขั้นตอนตามรูปที่ 3 คลิกที่ปุ่ม “Next”
      • คลิกที่ปุ่ม “Next” โปรแกรมจะถูกติดตั้งตามค่าเริ่มต้นที่ C:\ProgramFiles\Survey Suite\Traverse Pro  คลิกที่ปุ่ม Next”
      • คลิกที่ปุ่ม Install” โปรแกรมกำลังถูกติดตั้งลงในเครื่องคอมพิวเตอร์
      • คลิกที่ปุ่ม Finish” เป็นอันเสร็จสิ้นการติดตั้งโปรแกรม

start_to_install

รูปที่ 2 เริ่มติดตั้งโปรแกรม

install_sequence

รูปที่ 3 : ขั้นตอนการติดตั้งโปรแกรม

3.แถบเครื่องมือของโปรแกรม

main_toolbar

รูปที่ 4 แถบเครื่องมือของโปรแกรม

ตารางที่ 1 แถบเครื่องมือของโปรแกรม

แถบเครื่องมือ

รายละเอียด

a. Create new traverse file

สำหรับสร้างไฟล์วงรอบขึ้นใหม่

b. Open traverse file

สำหรับเปิดไฟล์วงรอบที่บันทึกไว้

c. Save traverse file

สำหรับบันทึกไฟล์วงรอบปัจจุบัน

d. Input project information and settings

สำหรับป้อนข้อมูลรายละเอียดของโครงการ

e. UTM setting

สำหรับตั้งค่าพื้นหลักฐานและ UTM

f. Compute traverse

สำหรับทำการคำนวณวงรอบ

g. View result of traverse computation

สำหรับแสดงผลการคำนวณวงรอบ

h. Check result and limit of error

สำหรับแสดงผลความคลาดเคลื่อนของวงรอบ

I. Traverse plot

สำหรับแสดงรูปวงรอบ

j. Print

สำหรับพิมพ์รายการคำนวณวงรอบ

k. Print result

สำหรับดูผลการพิมพ์รายการคำนวณวงรอบเบื้องต้น

l. Export result table to excel

สำหรับส่งรายการคำนวณวงรอบไปยัง Microsoft Excel

 4. การตั้งค่าพื้นหลักฐานและ UTM

  • พื้นหลักฐาน (Datum) คือ ระบบอ้างอิงที่ใช้ในการกำหนดตำแหน่งบนพื้นผิวโลกในทางราบและทางดิ่ง ถ้าอ้างอิงกับทรงรี Everest 1830 เราจะเรียกพื้นหลักฐานนี้ว่า Indian 1975 หรือถ้าอ้างอิงกับทรงรี WGS84 จะเรียกพื้นหลักฐานนี้ว่า WGS84 เป็นต้น
  •  UTM (Universal Transverse Mercator) คือ เส้นโครงแผนที่ (Map Projection) ที่ใช้กันเป็นสากล โดยโลกจะถูกแบ่งออกเป็นโซนตามแนว Longitude ออกเป็น 60 โซน โซนละ องศา และแบ่งตามแนวเหนือใต้ของเส้นศูนย์สูตร (N หรือ S) ทำให้แต่ละประเทศจะมีเลขโซนที่แตกต่างกันไป ดังนั้นการระบุโซน UTM จึงเริ่มจากการระบุเลขโซนแล้วตามด้วยชื่อพื้นหลักฐาน เช่น UTM 47N (WGS84) หรือ UTM 48N (Indian 1975) เป็นต้น
  •  การพิจารณาว่าวงรอบใดๆ จะใช้การคำนวณบน UTM หรือไม่ ให้พิจารณาจากค่าพิกัดของหมุดควบคุมทางราบที่ใช้เริ่มรังวัดและหมุดควบคุมทางราบที่เข้าบรรจบ ว่าเป็นค่าพิกัดที่สมมุติขึ้นมา (หมุดลอยหรือไม่ วงรอบลักษณะนี้ไม่ต้องใช้การคำนวณบน UTM ถ้าหมุดควบคุมที่ใช้เริ่มรังวัดและหมุดควบคุมที่เข้าบรรจบ มีค่าพิกัดบน UTM เช่น หมุดควบคุมที่ได้จากการรังวัดด้วย GPS (Global Positioning System) วงรอบลักษณะนี้ต้องใช้การคำนวณบน UTM ประเทศไทยตั้งอยู่บน UTM จำนวน 2 โซน และตั้งอยู่เหนือเส้นศูนย์สูตร (North Hemisphere) เท่านั้น คือ โซน 47 และ 48 ส่วนทรงรี (Ellipsoid) ที่ใช้เป็นพื้นหลักฐานในประเทศไทยมีอยู่ 2 รูปทรง คือ Everest 1830 และ WGS84
  •  ระยะราบที่ได้จากการรังวัด เป็นระยะราบบนพื้นผิวโลกจริง การคำนวณวงรอบบน UTM นั้นต้องมีการทอนระยะจากการรังวัดให้เป็นระยะกริด (Grid Distance) เสียก่อน โดยใช้ค่า Scale Factor ในการคำนวณตามสมการดังนี้

GridDistance = Scale Factor × Horizontal Distance

  • ผู้ใช้สามารถเลือกใช้พื้นหลักฐานในโปรแกรมเป็น Indian 1975 หรือ WGS84 รวมทั้งสามารถกำหนดทรงรีเองก็ได้ โดยการกำหนดค่าพารามิเตอร์ทรงรี “Semi major axis (a)และ “Flattening (1/f)
  • ผู้ใช้สามารถเลือกให้โปรแกรมคำนวณวงรอบบน UTM ได้ โดยการคลิกที่ช่อง Compute traverse on UTM (Universal Transverse Mercator) Grid
  • ผู้ใช้สามารถให้โปรแกรมคำนวณค่า Scale Factor จากค่าเฉลี่ยระดับน้ำทะเลปานกลางได้ โดยคลิกที่ช่อง Compute
    from Mean Elevation (MSL.)” และระบุค่าเฉลี่ยระดับน้ำทะเลปานกลางบริเวณที่ทำการรังวัดวงรอบ หรือจะกำหนด ค่า Scale Factor เองก็ได้ โดยการคลิกที่ช่อง “Use constant number” และระบุค่า Scale Factor ตามที่ต้องการ

UTM_Settings

 

รูปที่ 5 การตั้งค่าพื้นหลักฐานและ UTM

ตารางที่ 2 หน้าต่าง UTM settings

รายการ

รายละเอียด

a. Datum

ผู้ใช้สามารถเลือกใช้งานพื้นหลักฐานได้ รูปแบบ คือ– Indian 1975 (Thailand), Ellipsoid : Everest 1830-WGS84, Ellipsoid : World Geodetic System 1984-User defined Ellipsoid : กำหนดทรงรีเองโดยผู้ใช้งาน

b. Compute traverse on UTM

คลิกเครื่องหมายถูกลงในช่อง ถ้าต้องการให้ โปรแกรมคำนวณวงรอบบน UTM

c. Scale Factor

– Compute from Mean Elevation (MSL.) : ให้โปรแกรมคำนวณ Scale Factor จากค่าเฉลี่ยระดับน้ำทะเลปานกลาง– Use Constant number : กำหนด Scale Factor เองโดยผู้ใช้งาน

d. Ellipsoid

ถ้าเลือก Datum Name เป็น User defined Ellipsoid ผู้ใช้จะสามารถกำหนดค่าพารามิเตอร์ทรงรี และ 1/f ได้

5.การป้อนข้อมูลจากการรังวัดวงรอบ

ที่แถบเมนู “Input table” จะแสดงตารางสำหรับป้อนข้อมูลจากการรังวัดวงรอบ และข้อมูลรายละเอียด ของโครงการ ตามรูปที่ และรูปที่ ผู้ใช้สามารถบันทึกข้อมูลที่ป้อนลงในตาราง Input table ได้ โดยจะอยู่ในรูปแบบนามสกุล .trv

input_tables

รูปที่ 6 ตารางการป้อนข้อมูลจากการรังวัด

ตารางที่ 3 ตาราง Input table

ช่องข้อมูล

รายละเอียด

a. Station

สำหรับป้อนชื่อหมุดที่ทำการรังวัด

b. Horizontal Angle

สำหรับป้อนค่ามุมราบที่ได้จากการรังวัด

c. Control Azimuth

สำหรับป้อนค่าอะซิมัทควบคุม

d. Horizontal Distance

สำหรับป้อนค่าระยะราบที่ได้จากการรังวัด

e. Northing

สำหรับป้อนค่าพิกัดเหนือของหมุดควบคุมทางราบ

f. Easting

สำหรับป้อนค่าพิกัดตะวันออกของหมุดควบคุมทางราบ

input_projinfo

รูปที่ 7 การป้อนข้อมูลรายละเอียดของโครงการ

ตารางที่ 4 หน้าต่าง Project Information

ช่องข้อมูล

รายละเอียด

a. Project Name

สำหรับป้อนชื่อโครงการ

b. Company/Organization

สำหรับป้อนชื่อบริษัทหรือหน่วยงาน

c. Location

สำหรับป้อนชื่อสถานที่ที่ทำการรังวัด

d. Surveyed Date

สำหรับป้อน วัน เดือนปีที่ทำการรังวัด

e. Loop No.

สำหรับป้อนลำดับวงรอบที่ทำการรังวัด

f. From Station

สำหรับป้อนชื่อหมุดควบคุมทางราบที่เริ่มทำการรังวัด

g. To Station

สำหรับป้อนชื่อหมุดควบคุมทางราบที่ทำการเข้าบรรจบ

h. Angle Setting

สำหรับให้แสดงค่ามุมราบโดยการคั่นตัวเลของศา,ลิปดาและฟิลิปดา ด้วยเครื่องหมายลบ (-)

6.การคำนวณวงรอบ

  • หลังจากป้อนข้อมูลจากการรังวัดวงรอบลงในตารางเรียบร้อยแล้ว เมื่อผู้ใช้คลิกที่แถบเครื่องมือ “Computation
    table” โปรแกรมจะทำการคำนวณผลลัพธ์ในรูปแบบของตารางการคำนวณ โดยมีรายละเอียดดังนี้

result_traverse_computing

รูปที่ 8 ผลการคำนวณวงรอบ

ตารางที่ 5 แถบเครื่องมือการคำนวณวงรอบ

แถบเครื่องมือ

รายละเอียด

a.View result of traverse computation

สำหรับแสดงผลและรายละเอียดการคำนวณวงรอบ

b.Check result and limit of error

สำหรับแสดงผลความคลาดเคลื่อนของวงรอบ

result_limit_of_error

รูปที่ 9 ผลการคำนวณวงรอบเบื้องต้น

ตารางที่ 6 หน้าต่าง Computation information

รายการ

รายละเอียด

a.File Name

แสดงชื่อไฟล์วงรอบและที่จัดเก็บไฟล์

b.Total station

แสดงจำนวนหมุดทั้งหมดที่ทำการรังวัด

c.Assigning horizontal coordinates

แสดงชื่อหมุดควบคุมทางราบที่เริ่มทำการรังวัดและเข้าบรรจบ

d.Control azimuth

แสดงรายละเอียดค่าอะซิมัทควบคุม

e.Correct angle

แสดงค่าปรับแก้มุมราบของวงรอบต่อ หมุด

f.Correcting and Adjusting

แสดงผลว่าปรับแก้ค่ามุมราบและค่าอะซิมัทเรียบร้อยแล้ว

computation_result

รูปที่ 10 ผลการคำนวณวงรอบ

ตารางที่ 7 หน้าต่าง Computation result

รายการ

รายละเอียด

a.Error angle section

แสดงค่าความคลาดเคลื่อนทางมุมราบในการเข้าบรรจบวงรอบ

b.Mean Latitude

แสดงค่า Latitude เฉลี่ยของวงรอบ

c.Sum of Observed distance

แสดงค่าระยะราบทั้งหมดในการรังวัด

d.Error in Northing

แสดงค่าความคลาดเคลื่อนทางค่าพิกัดเหนือในการเข้าบรรจบวงรอบ

e.Misclosure

แสดงค่าความคลาดเคลื่อนทางระยะราบในการเข้าบรรจบวงรอบ

f.Correction angle section

แสดงค่าปรับแก้มุมราบของวงรอบต่อ หมุด

g.Mean Elevation

แสดงค่าเฉลี่ยระดับน้ำทะเลปานกลางของบริเวณที่รังวัด

h.Sum of Grid Distance

แสดงระยะกริดทั้งหมดของวงรอบ

i.Error in Easting

แสดงค่าความคลาดเคลื่อนทางค่าพิกัดตะวันออกในการเข้าบรรจบวงรอบ

j.Closing Ratio

แสดงค่า Accuracy ของวงรอบ

7.การแสดงรูปวงรอบ

  • โปรแกรมจะแสดงรูปวงรอบที่ได้จากการคำนวณ โดยการคลิกที่แถบเครื่องมือ “Traverse plot” ดังแสดงในรูปที่ 11

result_traverse_table

รูปที่ 11 การแสดงรูปวงรอบ

ตารางที่ 8 หน้าต่าง Traverse ploting

รายการ

รายละเอียด

a.Save

สำหรับบันทึกไฟล์วงรอบให้เป็นนามสกุล .dfx สามารถเปิดไฟล์ด้วย โปรแกรม AutoCAD ได้

b.Copy

สำหรับคัดลอกรูปวงรอบ สามารถนำไปวางลงในโปรแกรมต่างๆ เช่น Paint,
Microsoft Word
หรือ Excel ได้

c.Close

สำหรับปิดหน้าต่าง Traverse ploting

d.Coordinates

แสดงค่าพิกัดปัจจุบันที่เคอร์เซอร์ชี้อยู่

e.Scale

แสดงมาตราส่วนปัจจุบันของรูปวงรอบ

f.Zoom

สำหรับดูรูปย่อและขยายของวงรอบ

8.การพิมพ์ตารางผลการคำนวณวงรอบ

computation_table

รูปที่ 12 การพิมพ์ตารางผลการคำนวณ

printing

รูปที่ 13 การแสดงผลการพิมพ์เบื้องต้น

ตารางที่ 9 แถบเครื่องมือแสดงผลการพิมพ์เบื้องต้น

แถบเครื่องมือ

รายละเอียด

a.Page setup

สำหรับตั้งค่าหน้ากระดาษ ผู้ใช้สามารถตั้งระยะขอบกระดาษ สร้าง Header,
Footer
และ Page Number รวมทั้งเลือก Font ของตัวอักษรได้

b.Print setup

สำหรับเลือกเครื่องพิมพ์และขนาดกระดาษ

c.Print dialog

สำหรับสั่งพิมพ์ตารางผลการคำนวณวงรอบ

d.Previous and Next

สำหรับเลือกดูตารางผลการคำนวณวงรอบก่อนหน้าหรือถัดไป

f.View mode

สำหรับดูรูปย่อและขยายของตารางผลการคำนวณวงรอบ

g.Refresh

สำหรับแสดงผลการพิมพ์เบื้องต้นใหม่อีกครั้ง

h.Close

สำหรับปิดหน้าต่างแสดงผลการพิมพ์เบื้องต้น

printing_setup

รูปที่ 14 การตั้งค่าการพิมพ์

ตารางที่ 10 หน้าต่าง Page Setup

รายการ

รายละเอียด

a.Margin

สำหรับตั้งค่าระยะขอบหน้ากระดาษ สามารถเลือกหน่วยการตั้งค่าเป็นเซนติเมตรหรือนิ้วได้

b.Header Title

สำหรับใส่ข้อความที่หัวกระดาษ สามารถเลือก Font และกำหนดตำแหน่งของตัวอักษรได้

c.Footer Title

สำหรับใส่ข้อความที่ท้ายกระดาษ สามารถเลือก Font และกำหนดตำแหน่งของตัวอักษรได้

d.Paper orientation

สำหรับตั้งค่ากระดาษให้วางตัวในแนวตั้งหรือแนวนอน

e.Page number

สำหรับตั้งค่าเลขหน้ากระดาษ สามารถเลือก Font และกำหนดตำแหน่งของตัวอักษรได้

9. การส่งผลการคำนวณวงรอบไปยัง Microsoft Excel

  • ผู้ใช้สามารถส่งผลการคำนวณวงรอบไปยัง Microsoft Excel โดยการคลิกที่แถบเครื่องมือ “Export result table to excel” ตามรูปที่ 15

export_to_msexcel

รูปที่ 15 การส่งผลการคำนวณวงรอบไปยัง Microsoft Excel

10.ตัวอย่างการคำนวณวงรอบโดยโปรแกรม Traverse Pro V2.50

  • เริ่มต้นใช้งานโปรแกรม Traverse Pro V2.50 โดยดับเบิ้ลคลิกที่ไอคอน “Traverse Pro” บนหน้าจอเดสก์ท็อป (ตามรูปที่ 16)

traversepro_shortcut

รูปที่ 16 เริ่มต้นใช้งานโปรแกรม Traverse Pro V2.50

  • ป้อนข้อมูลรายละเอียดของโครงการ (ตามรูปที่ 17)
    • คลิกที่แถบเครื่องมือ “Input project information and setting” จะปรากฎหน้าต่าง “Project Information”
    •  ป้อนข้อมูลรายละเอียดของโครงการ

input_projinfo

รูปที่ 17 หน้าต่าง Project Information

  • ตั้งค่าพื้นหลักฐานและ UTM (ตามรูปที่ 18)
    • คลิกที่แถบเครื่องมือ “UTM setting” จะปรากฎหน้าต่าง “UTM settings”
    •  ที่ Datum Name” เลือก Indian 1975 (Thailand)”
    •  คลิกที่ช่อง “Compute traverse on UTM (Universal Transverse Mercator) Grid”
    •  คลิกที่ช่อง Use constant number” และระบุค่า Scale Factor เท่ากับ 1

input_utm_settings

รูปที่ 18 หน้าต่าง UTM settings

  • ป้อนข้อมูลจากการรังวัดวงรอบ (ตามรูปที่ 19)
    • คลิกที่แถบเมนู Input Table” จะปรากฏตารางสำหรับป้อนข้อมูลจากการรังวัด
    • ป้อนชื่อหมุดจากการรังวัดในช่อง “Station”
    • ป้อนค่ามุมราบจากการรังวัดในช่อง “Horizontal Angle” โดยป้อนในรูปแบบทศนิยม เช่น 180° 15′ 30.03″ ให้ป้อนเป็น 180.153003
    •  ป้อนค่าระยะราบจากการรังวัดในช่อง “Horizontal Distance”
    •  ป้อนค่าพิกัดเหนือของหมุดควบคุมทางราบในการเริ่มรังวัดและเข้าบรรจบในช่อง “Northing”
    •  ป้อนค่าพิกัดตะวันออกของหมุดควบคุมทางราบในการเริ่มรังวัดและเข้าบรรจบในช่อง “Easting”

input_control_coords

รูปที่ 19 ป้อนข้อมูลจากการรังวัดวงรอบในตาราง Input table

ตารางที่ 11 ตัวอย่างการป้อนข้อมูลจากการรังวัดวงรอบลงในตาราง Input table

NO. Station Horizontal Angle Control Azimuth Horizontal Distance Northing Easting
1 OP-1       1516779.01 679889.024
             
2 OP-1R 183.434912     1516818.016 680043.195
        75.7785    
3 P-01 286.244462        
        87.3352    
4 P-02 190.12065        
        101.6826    
5 P-03 220.414537        
        76.2405    
6 P-04 183.49095        
        99.31575    
7 P-05 242.131162        
        69.2196    
8 P-06 226.235062        
        99.316    
9 P-07 176.524112        
        69.22    
10 P-08 273.25385        
        67.141    
11 OP-1 176.13125     1516779.01 679889.024
             
12 OP-1R       1516818.016 680043.195
  • คำนวณวงรอบ (ตามรูปที่ 20)
    • คลิกที่แถบเครื่องมือ “Compute traverse” จะปราฏหน้าต่าง “Information”
    •  คลิกที่ปุ่ม OK” เพื่อยืนยันให้โปรแกรมทำการคำนวณวงรอบ

do_compute_traverse

รูปที่ 20 คำนวณวงรอบ

  • ผลการคำนวณวงรอบ (ตามรูปที่ 21)
    • คลิกที่แถบเมนู “Computation table” โปรแกรมจะแสดงตารางการคำนวณวงรอบ และปรากฏหน้าต่าง “Computation Information” แสดงรายละเอียดต่างๆ ของวงรอบ รวมทั้งข้อมูลรายละเอียดของโครงการ

computation_result_testdata

รูปที่ 21 ผลการคำนวณวงรอบ

  • ตรวจสอบความคลาดเคลื่อนของวงรอบ 
    • คลิกที่แถบเครื่องมือ “Check result and limit of error” จะปรากฏหน้าต่าง Computation result” ตามรูปที่ 22
    • เมื่อผู้ใช้สังเกตค่า “Error angle section” จะเห็นว่ามีค่าเท่ากับ -9.47 second ถ้าอ้างอิงกับงานชั้น 2 Class II ตามรูปที่ 23 ค่าความคลาดเคลื่อนทางมุมราบในการเข้าบรรจบจะต้องมีค่าไม่เกิน 5√N ฟิลิปดา (N คือจำนวนหมุดทั้งหมดที่ทำการรังวัดมุมราบ) จากตัวอย่างนี้จำนวนหมุดที่ทำการรังวัดมุมราบเท่ากับ 10 หมุด ดังนั้น 5√N = 15.81 ฟิลิปดา ดังนั้นการรังวัดวงรอบตามตัวอย่างนี้จึงผ่านข้อกำหนดงานชั้น 2 Class II
    •  เมื่อผู้ใช้สังเกตค่า Closing Ratio” จะเห็นว่ามีค่าเท่ากับ 1 : 29,492 ถ้าอ้างอิงกับงานชั้น 2 Class II ตามรูปที่ 23 ค่า Distance Ratio จะต้องดีกว่า 1 : 20,000 ดังนั้นการรังวัดวงรอบตามตัวอย่างนี้จึงผ่านข้อกำหนดงานชั้น 2 Class II

check_limit_of_error_testdata

รูปที่ 22 ตรวจสอบความคลาดเคลื่อนของวงรอบ

traverse_class

รูปที่ 23 ตัวอย่างข้อกำหนดของงานวงรอบ

  • แสดงรูปวงรอบ (ตามรูปที่ 24)
    • คลิกที่แถบเครื่องมือ “Traverse plot” จะปรากฏหน้าต่าง “Traverse Ploting”
    • ถ้าผู้ใช้ต้องการให้สามารถเปิดรูปวงรอบได้ด้วยโปรแกรม AutoCAD ตามรูปที่ 25 ให้คลิกที่แถบเครื่องมือ “Save” และทำการบันทึกไฟล์ให้เป็นนามสกุล .dfx
    • ถ้าผู้ใช้ต้องการบันทึกรูปวงรอบให้เป็นรูปภาพ เช่น .JPEG ให้คลิกที่แถบเครื่องมือ “Copy” แล้วนำไปวางลงในโปรแกรมต่างๆ เช่น Paint ดังแสดงในรูปที่ 26 หรือนำไปวางในโปรแกรมอื่นๆ เช่น Microsoft Word หรือ Excel ได้เช่นกัน

see_traverse_plot_testdata

รูปที่ 24 รูปวงรอบ

see_traverse_plot_on_autocad_testdata

รูปที่ 25 รูปวงรอบใน AutoCAD

see_traverse_plot_on_paint_testdata

รูปที่ 26 รูปวงรอบในโปรแกรม Paint

  • ตั้งค่าการพิมพ์และดูผลการพิมพ์ (ตามรูปที่ 27)
    • คลิกที่แถบเครื่องมือ “Print result” จะปรากฎหน้าต่าง “Traverse Computation Result” ผู้ใช้สามารถตั้งค่าหน้ากระดาษ และตั้งค่าการพิมพ์ต่างๆ ได้

print_setting_testdata

รูปที่ 27 การสั่งพิมพ์

  • ส่งผลการคำนวณเข้าโปรแกรม (ตามรูปที่ 28)
    • คลิกที่แถบเครื่องมือ Export result table to excel” และคลิกที่ปุ่ม “OK” เพื่อยืนยันให้โปรแกรมทำการส่งผลการคำนวณเข้าสู่โปรแกรม Microsoft Excel

export_to_msexcel_testdata

รูปที่ 28 ส่งผลคำนวณไปยัง Microsoft Excel

traverse_computation_on_msexcel_testdata

รูปที่ 29 ตารางคำนวณใน Microsoft Excel

  • สำหรับตัวอย่างการคำนวณวงรอบอื่นๆ ผู้ใช้สามารถดูเพิ่มเติมได้จาก C:\Program\Files\Survey Suite\Traverse Pro\ExamplesData ซึ่งเป็นตัวอย่างที่มาพร้อมกับการติดตั้งโปรแกรม

ก้าวที่ใกล้กับโปรแกรมเขียนรูปตัดตามขวาง XSection Plot รุ่นใหม่

ก้าวที่ผ่านมา

  • ผ่านมาครึ่งปีกว่าแล้วก็ยังไม่เสร็จตามสัญญา แต่โปรแกรมก็คืบหน้าไปพอสมควรครับ ขอเท้าถึงความหลังหน่อยว่าโปรแกรมรุ่นเดิมเขียนด้วย VB ที่นับอายุอานามแล้วจะใกล้ๆ 20 ปีเข้าไปแล้ว ผมนำโปรแกรมมาพัฒนาใหม่ด้วยของฟรีดีมีคุณภาพ Python3 + Qt5 แรกก็ตะกุกตะกักพอสมควรเนื่องจากยังใหม่กับ Python และเป็นครั้งแรกที่ใช้  Qt สำหรับ Python ที่ว่ากันว่าเรียนง่ายเขียนง่าย แต่สำหรับผมที่เขียนด้วยภาษาอื่นมานมนานก็ต้องบอกว่า Python มีสไตล์ของตัวเอง ที่สั้น กระชับ ฉับไวที่คาดไม่ถึงเลยก็หลายๆอย่าง แต่ด้วยความที่สมองคิดแบบภาษาอื่นมานาน พอมาลอง Python ก็ยอมรับว่าตอนใหม่ๆไปอย่างฝืด Learning Curve  ชันไปนิดสำหรับผม แต่ผ่านไปปีกว่าๆ สไตล์ของ Python เริ่มเข้าหัว ทุกสิ่งทุกอย่างจะลื่นไหลออกมาเอง ลองมาดูว่าโปรแกรมสามารถทำอะไรได้บ้างเมื่อเทียบกับรุ่นเก่าที่พัฒนาด้วย VB 6

XSection_41_showcase

1) ป้อนและแก้ไขข้อมูลโครงการ (Project Information)

  • ก็ยังเหมือนเดิมครับ ที่ข้อมูลของรูปตัดจะต้องมีข้อมูลโครงการเป็นตัวกำกับว่า งานอะไร ใครเป็นเจ้าของงาน ผู้รับจ้างเป็นใคร ช่วงวันและเวลา ข้อมูลนี้จะถูกเขียนเข้าไปในไฟล์ข้อมูลตามปกติ ตอนนี้ในส่วนติดต่อผู้ใช้ ผมออกแบบเป็นภาษาอังกฤษทั้งหมด ภาษาไทยจะมีรุ่นจริงที่ออกมาภายหลัง

XSectionPlot_41_Projinfo

  • บางครั้งผู้ใชอาจต้อง Titleblock เป็นภาษาไทย ในส่วนรูปแบบ Titleblock ที่ออกแบบไว้ในโปรแกรมเป็นภาษาอังกฤษ ถ้าจะใช้ภาษาไทยต้องมาป้อนคำเทียบกับภาษาอังกฤษเอง หรือจะใช้ที่ผมใส่ไว้เป็น default ก็ได้

XSectionPlot_41_Maptb

2) ตั้งขนาดกระดาษ (Page Setup)

  • การเขียนรูปตัดตามขวางเป็นงานจัดทำแผนที่ อันดับแรกต้องกำหนดขนาดกระดาษก่อน บางครั้งขนาดกระดาษขึ้นอยู่กับข้อกำหนดของเจ้าของงาน ในโปรแกรมนี้สามารถตั้งขนาดกระดาษได้ แต่จำกัดเฉพาะขนาดกระดาษที่เป็น ISO และก็เสริมขนาดกระดาษที่กำหนดโดยผู้ใช้

XSectionPlot_PageSetup

3) ตั้งค่ารูปตัดตามขวาง (Section Settings)

  • การตั้งค่ารูปตัดตามขวางเช่นการตั้งมาตราส่วนทางราบ (Horizontal scale) และมาตราส่วนทางดิ่ง (Vertical scale) ให้เหมาะสมหรือตามแต่เจ้าของงานจะกำหนด อย่างอื่นได้แก่ ตั้งจำนวนทศนิยมตัวเลข รูปแบบของเส้นกริด

XSection_41_gensettings

  • รูปแบบตัวเลขค่าระดับ และระยะทาง offset เลือกตั้งได้ 3 รูปแบบ

XSectionPlot_41_elevdisttxt

  • รูปแบบค่าระดับข้างตารางกริด สามารถตั้งตัวอักษรเป็นตัวย่อนำหน้าเพื่อระบุว่าเป็นค่าระดับที่ใช้อ้างอิงกับหลักฐานทางดิ่ง (Datum) อะไรเช่น รทก (MSL) หรือไม่ก็ LAT (Low Astronomical Tide) หรือบางครั้ง CD (Chart Datum)

XSectionPlot_41_gridelevtxt

  • ตั้งค่าระดับของกริดเส้นบนสุด บางครั้งรูปตัดของงานอาจจะสูงๆต่ำๆ ไม่เท่ากัน ตัวเลขนี้สามารถตั้งค่าเหมาะสมให้ได้ เพื่อให้สามารถแสดงเส้น Existing ground และ Typical section ได้พอดีไม่หลุดด้านบนหรือด้านล่าง เพื่อไม่ให้ผู้ใช้ต้องลองผิดลองถูก สามารถให้โปรแกรมทำให้แบบ Auto แล้วค่อยมาปรับด้วยมืออีกเล็กน้อย

XSectionPlot_41_topgridelev

4) การจัดรูปตัดตามขวางบนกระดาษ (Page Layout)

  • โมดูลตัวนี้เพิ่งเขียนเสร็จสดๆร้อนๆ การจัดรูปตัดบนกระดาษ โดยที่ผู้ใช้เพียงแต่บอกว่าต้องการรูปตัดในแนวราบ (คอลัมน์) และในแนวดิ่ง (แถว) เท่าไหร่ โปรแกรมก็จะจัดให้ตามต้องการ แต่ที่สำคัญคือความกว้างของรูปตัดจะขึ้นอยู่กับลักษณะงานด้วย เช่นงานถนนอาจความกว้างรูปตัดอาจจะ 100 เมตร ก็แบ่งไปข้างซ้าย 5o เมตร ข้างขวา 50 เมตร ในทางดิ่งก็เหมือนกันสามารถตั้งความสูงในแนวดิ่งได้เช่นกัน นอกจากนี้ระยะระหว่างเส้นกริดในแนวราบและแนวนอนก็ยังสามารถตั้งได้ เช่นบางงานอาจต้องการระยะความห่างเส้นกริดทางราบ 5 เมตร หรือ 10 เมตร ทั้งนี้ขึ้นอยู่กับมาตราส่วนด้วย และความสวยงาม เส้นกริดไม่ถี่มากดูแล้วสบายตา

XSectionPlot_41_sectionlayout2

  • หรือในบางกรณีรูปตัดไม่เต็มหน้า โปรแกรมก็จัดให้ได้

XSectionPlot_41_sectionlayout3

  • บางครั้งผู้ใช้กำหนดระยะห่างไปข้างซ้ายและข้างขวามากเกินและสุดท้ายรูปตัดทับกัน โปรแกรมก็แจ้งเตือนให้ทราบ

XSectionPlot_41_sectionlayout4

สิ่งที่ต้องทำต่อ

1) แสดงรูปตัด (Section Viewer)

  • การแสดงรูปตัดให้ผู้ใช้ได้ดูก่อนเป็นสิ่งที่สำคัญมาก เพราะผู้ใช้จะได้ทราบว่ารูปตัดที่ออกมานั้นหน้าตาเป็นอย่างไร มีส่วนไหนต้องแก้ไขไหม ในส่วนนี้คาดว่าใช้เวลาเขียนโปรแกรมอีกพอสมควร ด้านล่างเป็น Section Viewer ของโปรแกรมรุ่นเก่า เอามาใส่ให้เห็นว่า ที่ออกมาจะประมาณนี้

XSectionPlot_32_SectionViewer1

XSectionPlot_32_SectionViewer2

2) เขียนไฟล์รูปตัดรูปแบบ DXF

  • ส่วนนี้เป็นส่วนที่สำคัญมาก เพราะผู้ใช้ต้องการผลงานในรูปแผนที่แสดงรูปตัดตามขวาง ที่สามารถนำไปเปิดด้วยโปรแกรมด้าน CAD อื่นๆได้เช่น Autocad, Microstation เพื่อสามารถนำไปแก้ไขจนเป็นแผนที่รูปตัดที่พร้อมจะส่งงาน ในส่วนนี้ผมคาดว่าคงใช้เวลาในการโปรแกรมมิ่งไม่มากนัก

XSectionPlot_42_icon_sectionviewer

ก่อนจากกัน

  • สำหรับ Python + Qt เป็นจัดเป็นคู่หู ที่ทรงประสิทธิภาพมาก เป็น Cross-platform ผมใช้ Eclipse ผ่านปลั๊กอิน Pydev เป็นสภาวะแวดล้อมในการพัฒนาโปรแกรม การดีบักหาข้อผิดพลาดของโปรแกรม เนื่องจากคำสั่ง print  ของ Python เก่งมากก็ใช้คำสั่ง print นี้ครับสะดวก รวดเร็ว
  • เมื่อนำไปพัฒนาบน Ubuntu Gnome ก็ออกมาดังที่เห็น

XSectionPlot_41_ubuntugnome

  • หรือนำไปพัฒนาบนแมค ที่ติดเรื่อง font จากปัญหาสระลอย จนต้องมาบังคับฟอนต์ ตามที่อ.จักรนันท์แนะนำ ก็แก้ปัญหานี้ไปได้

XSectionPlot_41_mac

  • พบกันใหม่ครับ
ติดตาม

Get every new post delivered to your Inbox.

Join 64 other followers