![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-DpFYz6-klzyd1Obm1a0T6MrAMHYch6BSVHt6UOWPlpjRxFjRowUCCDKnGK3-z24FzxQ2uo_sTzTP7YAT_3J8vDb3H585hh8-Uh8Tbn9D-UvguIvU1FVQ5VKeVTrdApRGIHZ4_AEq3B0/s400/diva01.png)
สัปดาห์ที่ผ่านมามีอีเมลจากสองท่านมาถามไถ่ถึง LISP สำหรับแบ่งพื้นที่จัดสรร ที่ปกติมักเป็น Irregular shape หรือรูปทรงอิสระ และต้องการจะแบ่งออกเป็นแปลงย่อยที่ขนาดหนึ่งๆ เช่น 2 ไร่ ซึ่งเท่ากับ 2x1,600=3,200 ตารางเมตร เป็นต้น
แนวคิดคือเราต้องสร้างขอบเขต (boundary) รูปปิด (Closed) ขึ้น และใช้ LISP หาพื้นที่ของรูปปิดนี้ และเพื่อให้ได้ขนาดตรงกับที่ต้องการจะแบ่งให้แต่ละแปลง จึงต้องมีการสุ่มค่าวาดเส้นและค่อยเลื่อนตำแหน่งจนกว่าจะได้ตามที่ต้องการ
ในการนี้จึงได้สรุปและพัฒนาขึ้นเป็นชุดคำสั่งขึ้น คือ
1. Diva - สำหรับตีเส้นแบ่ง
2. Txx - สำหรับตัดเส้นที่เลยออกนอกขอบเขต
3. AA - เขียนพื้นที่จากที่วาดไว้ในหน่วยเมตร เป็นข้อความในหน่วย ไร่-งาน-ตารางวา
โดยรวมอยู่ในไฟล์ Diva.VLX
การทำงานของคำสั่ง Diva
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-bLJC0-Y4xxJ94tFQUANvZT2LIbW4P_OKA7d-6veiuvj39BSBq2WEcMEcqbN1-LE7yTA1e-T9jVoDpwn_ScvygxxX8pVsWKzI5aS-_BzfJzc8s-XpGkMrz2aq_JOGopnoi3p96J0gwG4/s400/diva06.png)
Command: diva
Developed by schatchawal@gmail.com
Specify Desired area:< 24000.0> พิมพ์ขนาดพื้นที่ที่ต้องการในหน่วยตารางเมตร
Specify first point of boundary: กำหนดแนวของเส้นแบ่งเริ่มต้น ที่จุดแรก
Specify second point of boundary: กำหนดแนวของเส้นแบ่งเริ่มต้น ที่จุดสอง
Specify point in Desired boundary: คลิกจุดด้านที่จะหาพื้นที่
Different: Desired(24000.0) - Current area(27867.8) = -3867.83
Specify New boundary? [Yes/No]
ถ้าต้องการวาดเส้นเริ่มต้นใหม่ ให้ใช้ตัวเลือก Yes
แต่ถ้าจะให้คำสั่งเริ่มทำงานค้นหาตำแหน่งที่ถูกต้องของเส้นแบ่งให้เลย ให้คลิก No
แล้วคำสั่งจะเริ่มทำงาน โดยแสดงเป็นรายการดังนี้
1.Inc=0.4 Diff: Desired(24000.0) - Current Area(27768.0) = -3767.98
2.Inc=0.4 Diff: Desired(24000.0) - Current Area(27668.0) = -3668.0
3.Inc=0.4 Diff: Desired(24000.0) - Current Area(27567.9) = -3567.92
..................................................................
66.Inc=0.00015625 Diff: Desired(24000.0) - Current Area(24000.0) = -0.0104122
67.Inc=7.8125e-005 Diff: Desired(24000.0) - Current Area(24000.0) = 0.0099243
คำสั่งจะดำเนินการจนค้นพบตำแหน่งที่ให้ค่าพื้นที่ตรงตามค่ากำหนด
จำนวนครั้งสูงสุดที่ตั้งไว้คือ มากที่สุดที่ 500 ครั้ง
และให้ค่าละเอียดถึง 0.01 ตารางเมตร ตามนัยสำคัญของการวาดแปลนในหน่วยเมตร
เส้นเริ่มต้นจะถูกวาดบนเลเยอร์ชื่อ NewBoundary ด้วยเส้น XLine สีแดง
การทำงานของคำสั่ง TXX
เพื่อที่จะขลิบหรือตัดเส้นที่เลยออกนอกขอบเขต ปกติจะใช้คำสั่ง Trim ใน AutoCAD
แต่ในที่นี้เพิ่มให้อีกคำสั่งหนึ่งคือ TXX ให้คลิกที่ขอบเขตพื้นที่
จะให้ผลตัดเส้นที่เลยนอกขอบเขตนี้ออกไปทั้งหมด
หากยังหลงเหลือเส้นอื่นอีก ให้ใช้คำสั่ง Trim หรือ Erase ตัดเส้นที่ไม่เหลือออกไป
การทำงานของคำสั่ง AA
ก่อนใช้เราจะต้องสร้าง Text Style ที่ใช้ฟอนต์ภาษาไทยเอาไว้ก่อน
และกำหนดเป็นตัวปัจจุบัน (Current style) เอาไว้ก่อนแล้ว
Command: aa
Specify Text Height: <5.0> กำหนดขนาดความสูงอักษร
Specify Text Rotation: <45.0> กำหนดมุมหมุนในหน่วยองศา
Specify point in closed boundary: คลิกหนึ่งจุดในแปลงที่จะเขียนขนาด
Area=15 ไร่ 0 งาน 0 ตารางวา ผลลัพธ์ขนาดในหน่วน ไร่ งาน ตารางวา ที่คำนวณได้
Specify point in closed boundary: เลือกจุดในแปลงอื่นได้อีก จนครบแล้วกด Enter เพื่อจบคำสั่ง