วันศุกร์ที่ 30 ธันวาคม พ.ศ. 2554

AutoCAD Tips : Visual LISP Tip เขียนสัญลักษณ์ Slab งานโครงสร้าง

ส่งท้ายปีเก่า 2554 ด้วยคำสั่งเขียนสัญลักษณ์ Slab งานโครงสร้าง ตามที่ท่านหนึ่งได้อีเมลมาถาม อยากได้คำสั่งช่วยลงสัญลักษณ์นี้ที่เป็นเส้นทแยงมุมในพื้นที่ พร้อมกับวงกลมบอกหมายเลขอ้างอิง ตามรูป



ได้พัฒนาเป็น 2 คำสั่งคือ sss และ ssss โดยคำสั่งหนึ่งใช้เขียน และอีกคำสั่งใช้สำหรับกำหนดค่าเริ่มต้น

Command: SSSS
Letter: พิมพ์ข้อความที่ต้องการ เช่น S1
Text Height: พิมพ์ค่าความสูงตัวอักษรที่ต้องการ เช่น 0.25
Bubble Radius: พิมพ์ค่ารัศมีของวงกลมล้อมตัวอักษร เช่น 0.3

Command: SSS
Developed by S.Chatchawal, schatchawal@gmail.com
Point in boundary: เลือกจุดในพื้นที่ที่จะเขียน และคำสั่งจะแสดงพรอมต์ Point in boundary: นี้ให้เลือกจุดเขียนได้อีกเรื่อยๆ จบคำสั่งโดยกด ENTER ต่อพรอมต์นี้



ท่านที่สนใจสามารถอีเมลมารับไปใช้กันได้ครับ
สวัสดีส่งท้ายปี 2554

วันจันทร์ที่ 10 ตุลาคม พ.ศ. 2554

AutoCAD Tips: ถามมา ตอบไป ข้อความบอกความยาวเส้น Closed Polyline


มีอีเมลจากท่านหนึ่งถามถึง กรณีมีผังที่ดินที่ถูกแบ่งสำหรับสร้างบ้านจัดสรร และต้องการให้เขียนข้อความกำกับไว้ที่แต่ละด้านของเส้นรอบรูปของผังหนึ่งๆที่ถูกสร้างไว้ด้วยเส้น Closed Polyline มีวิธีทำเร็วๆได้อย่างไร?
กรณีที่ไม่ได้พึ่งพาการเขียนโปรแกรม AutoLISP/Visual LISP เลย วิธีทางตรงคือ 1. ใช้คำสั่ง Dist หรือ Measuregeom วัดความยาวของ 2 จุดยอดคู่หนึ่งๆและจดบันทึกค่าไว้ 3. เขียนข้อความด้วยคำสั่ง Mtext หรือ Text โดยกำหนดมุมหมุนข้อความตามทิศทางของเส้นนั้นๆ และกรอกค่าด้วยตัวเลขจากข้อ 1
หรืออีกวิธีใช้ DimAlign เขียนเส้นบอกระยะตามแนวความยาว
งานที่มีจำนวนน้อย สิ่งนี้ทำได้ไม่ยากเลย แต่ถ้าเป็นงานประจำวันและมีจำนวนมากๆทางออกหนึ่งที่จะช่วยเพิ่มผลผลิตได้คือการเขียนโปรแกรมเข้าช่วย

จึงได้พัฒนาคำสั่ง BLI ขึ้น ซึ่งมีพรอมต์ดังนี้
Command: BLI
Developed by S.Chatchawal, schatchawal@gmail.com
Offset distance: <0.90> ระยะออฟเซ็ต
Text height: <0.60> ความสูงตัวอักษร
Select closed polyline: คลิกเลือกรูป Closed Polyline

จะให้ผลเขียนข้อความบอกขนาดของแต่ละท่อนของเส้น Closed polyline พร้อมกับแสดงค่าคำนวณขนาดพื้นที่ในหน่วย ไร่-งาน-ตารางวา ให้ด้วย และยังคงวนแสดงพรอมต์ Select closed polyline: ให้คลิกเลือกได้อีก หากครบแล้วให้กด ENTER เพื่อจบคำสั่งนี้ สังเกตว่าคำสั่งนี้จัดแนวข้อความตามแต่ละช่วงของ Closed Polyline ให้ด้วย

นอกจากนี้ยังได้เขียนคำสั่ง BLo สำหรับการเขียนข้อความไว้ที่รอบนอกด้วย

วันอังคารที่ 13 กันยายน พ.ศ. 2554

AutoCAD Tips: ถามมา ตอบไป เขียน RAMP วงกลม

มีอีเมลมาสอบถามถึง LISP ที่ช่วยเขียนเส้นลูกศรบน Ramp ขึ้น-ลงอาคาร

กรณีเป็นแนวตรงสามารถใช้รูปวาดแบบ hatch ได้โดยตรง โดยเลือกกำหนดระยะห่างของเส้นที่เป็น Pattern และมุมตามที่ต้องการ

กรณีเป็นแนวเส้นโค้งของวงกลมนั้น วิธีทางตรง จะประกอบด้วย 1. เขียนวงกลมที่มีจุดศูนย์กลางร่วมกันทั้ง 3 วง 2. หาความยาวเส้นรอบวงของวงกลมที่จะใช้เป็นตัวอ้างอิงในการกำหนดระยะระหว่างขั้น ซึ่งปกติจะใช้ Properties โดยดูที่รายการ Perimeter 3. คำนวณจำนวน โดยใช้ระยะ Perimeter หารด้วย ระยะห่างที่ต้องการ แล้วปัดเศษเป็นจำนวนเต็ม (N) 4. วาดเส้นลูกศรตัวแรก อาจเลือกวาดไว้ที่ตำแหน่ง 3 นาฬิกา 5. ทำซ้ำด้วยคำสั่ง array แบบ Polar และกำหนดจำนวนสำเนาตามข้อ 3 แบบเต็มวง (360 องศา)

สำหรับ LISP ที่ได้พัฒนาขึ้น เพื่อลดขั้นตอนการทำงานนั้น มีพรอมต์ดังนี้

Command: rc
Developed by S.Chatchawal, schatchawal@gmail.com
Direction [CW/CCW]: กำหนดทิศตาม-ทวนเข็มนาฬิกา
Center: กำหนดจุดศูนย์กลาง
Outer Radius: <6> รัศมีวงนอก
Inner Radius: <4>รัศมีวงใน
Outer ladder distance: <0.3> ระยะขั้น
Delete 3 circles? [Yes/No] ลบวงกลมหรือไม่>

วันศุกร์ที่ 2 กันยายน พ.ศ. 2554

AutoCAD Tips: ถามมา ตอบไป เปลี่ยนขนาดบล็อกแบบอัตโนมัติ

มีอีเมลจากท่านหนึ่งเขียนมาถามถึงวิธีการเปลี่ยนขนาด Block Reference ที่มีชื่อเดียวทั้งหมดในคราวเดียว โดยเป็นสัดส่วน เช่น เดิมมีขนาดยาว 2 หน่วย ต่อมาต้องการเปลี่ยนให้เป็น 1 หน่วย วิธีปกติคือใช้คำสั่ง Scale โดยใช้ค่าสเกลเท่ากับ ขนาดใหม่ / ขนาดเก่า ในตัวอย่างนี้คือค่าสเกลเท่ากับ 1/2 = 0.5
สำหรับแบบที่มีบล็อกที่จะต้องแก้ไขเรื่องทำนองนี้จำนวนมากๆทำได้ยากพอสมควรทีเดียว เนื่องจากแต่ละครั้งจะต้องกำหนดจุดอ้างอิง (Base point) ให้กับคำสั่ง Scale นี้ทีละหนึ่งตัวเลือก เพื่อให้งานเช่นนี้ง่ายยิ่งขึ้น จึงได้พัฒนา LISP ที่ใช้จัดการกับบล็อกชื่อเดียวกัน โดยให้กำหนดค่าสเกลที่ต้องการ จากนั้นคำสั่งจะหาจุดอ้างอิงเอง และสเกลปรับขนาดให้ตรงกับที่ต้องการ มีพรอมต์ดังนี้

Command: QSIZE
Developed by S.Chatchawal, schatchawal@gmail.com
Scale: <0.5000> ใส่ค่าสเกล
Select sample: คลิกเลือกรูปวาดเป็นหนึ่งตัวอย่าง
Quick change size 14 objects. (คำสั่งแจ้งจำนวนวัตถุที่ได้ดำเนินการเปลี่ยนขนาดให้)ผู้สนใจอีเมลมารับคำสั่งนี้ไปใช้กันได้
ก่อนปรับขนาด

หลังปรับขนาดด้วยค่าสเกล 0.5

วันจันทร์ที่ 22 สิงหาคม พ.ศ. 2554

AutoCAD TIP: ถามมา ตอบไป คัดลอกเลย์เอาต์จำนวนมากในคราวเดียว



มีอีเมลของท่านหนึ่งเขียนมาถามถึงการทำสำเนาเลย์เอาต์ตัวปัจจุบัน (Current Layout) ที่เลือกไว้ เพิ่มอีกจำนวนหนึ่งแบบเร็วๆ ทำได้อย่างไร?

ทางออกที่เร็วที่สุดของงานนี้คือการเขียนโปรแกรม LISP เข้าช่วย เช่นคำสั่ง CPL ที่ผู้สนใจสามารถอีเมลมารับไปใช้กันได้ครับ มีพรอมต์ดังนี้

Command: cpl
Developed by S.Chatchawal, schatchawal@gmail.com
Number of copies: ป้อนค่าจำนวนสำเนาที่ต้องการ เช่น 20 แล้วกด ENTER

ตัวอย่างผลลัพธ์ดูตามรูปข้างต้น

วันพุธที่ 10 สิงหาคม พ.ศ. 2554

AutoCAD Tips: ถามมา-ตอบไป แบ่งระยะบนวงกลม

มีอีเมลมาถามถึงวิธีสร้างรอยแบ่งบนวงกลมด้วยระยะคงที่หนึ่งใน AutoCAD DWG มีวิธีทำอย่างไรได้บ้าง?

สร้างรอยแบ่งด้วยระยะบนส่วนโค้งของวงกลม คำตอบคือทำได้ด้วยการใช้คำสั่ง Measure ซึ่งรูปย่อของคำสั่งคือ ME



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

Command: pdmode
Enter new value for PDMODE <0>: พิมพ์ 34 กด ENTER

สำหรับการกำหนดรูปแบบของจุดจากคำสั่งในรูปไดอะล็อกให้ใช้คำสั่ง DDPTYPE
จากนั้นใช้คำสั่ง MEASURE โดยทำดังนี้

Command: พิมพ์ ME กด ENTER
Select object to measure: คลิกรูปวาด
Specify length of segment or [Block]: พิมพ์ค่าความยาวของช่วงแบ่งที่ต้องการ

ได้ผลลัพธ์ตามรูปข้างต้นนี้ สังเกตว่า การแบ่งเริ่มต้นช่วงแรกโดยวัดออกจากตำแหน่ง 0 องศา หรือตำแหน่ง 3 นาฬิกา วัดวนออกไปในทิศทวนเข็มนาฬิกา (CCW)

ส่วนการแบ่งด้วยความยาวของคอร์ด (Chord) ทางออกหนึ่งคือเขียนโปรแกรม LISP ซึ่งในการนี้ได้พัฒนาคำสั่งชื่อ DIVC ขึ้น (ผู้สนใจสามารถอีเมลมารับไปได้)


หลังจากโหลดไฟล์ DIVC.VLX แล้วทำดังนี้

Command: พิมพ์ DIVC กด ENTER
Dividing with Chord on Circle.
Developed by S.Chatchawal, schatchawal@gmail.com
Select a circle: คลิกเลือกวงกลม
Chord length: <250> พิมพ์ความยาวคอร์ดที่จะใช้แบ่ง

ผลลัพธ์แจ้งจำนวนคอร์ดที่แบ่งได้ เช่น 7 chords. เป็นต้น
โดยเริ่มต้นแบ่งจากตำแหน่ง 3 นาฬิกาหมุนในทิศทวนเข็มนาฬิกา

วันศุกร์ที่ 22 กรกฎาคม พ.ศ. 2554

AutoCAD TIP: ถามมา ตอบไป MTEXT COLOR

เมื่อสัปดาห์ที่แล้วมีอีเมลถามถึงการเปลี่ยนคุณสมบัติสีของ MTEXT (Multiline Text) ใน AutoCAD ที่ถูกกำหนดค่าโดยตรงจากส่วนของ Mtext Editor โดยตรง ทำให้ไม่สามารถแปลงเป็นสีแบบ ByLayer ได้

DWG ที่มีปัญหา ตรงส่วน MTEXT ถูกกำหนดโดยตรงเป็นสี Magenta

ขณะที่สีของเลเยอร์ L1 ที่วาง Mtext นี้อยู่คือสี Green

วิธีแก้ไขสีใหม่ทางตรงคือดับเบิลคลิกบน MTEXT เลือกข้อความที่ต้องการและเลือกสีเป็น ByLayer

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

จึงได้ลองเขียน LISP เพื่อแทนส่วนแท็กค่าสีของแต่ละ mtext เพื่อให้ทำการเปลี่ยนเป็น ByLayer โดยอัตโนมัติ เพียงแต่พิมพ์คำสั่งชื่อ MTXCOLOR เท่านั้น ตัวอย่างพรอมต์ที่แสดง

Command: MTXColor
Convert MTEXT to Real Color Bylayer.
Developed by S.Chatchawal, schatchawal@gmail.com
Set 97 MTEXT objects to Bylayer color.
Convert individually explicit color 82 objects.

รูปผลลัพธ์หลังใช้คำสั่ง MTXCOLOR ที่แปลงสี Mtext เป็น ByLayer ในรูปนี้คือสีเขียวตามเลเยอร์ L1 หรือเป็นแบบ ByLayer แล้ว สังเกตว่าฟอนต์ของข้อความคงเดิม มีเพียงสีที่เปลี่ยนไป


ผู้สนใจอีเมลมารับไปใช้ได้