วันอังคารที่ 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 แล้ว สังเกตว่าฟอนต์ของข้อความคงเดิม มีเพียงสีที่เปลี่ยนไป


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

AutoCAD TIP: ถามมา ตอบไป : เส้นโพลีไลน์บนระนาบ ISOMETRIC

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

ทางออกของเรื่องนี้วิธีหนึ่งคือ เขียนเส้นโพลีไลน์ที่มีความหนาเป็นศูนย์ แทนถึงขอบเขตของเส้นแบบมีความหนาก่อน โดยให้เส้นทั้งสี่นี้ทำมุมให้ถูกต้อง แล้วจึงค่อยลง Hatch ที่ pattern=SOLID ลงไป



การป้อนจุดยอดของ Polyline ที่เป็นกรอบนี้ เป็นเรื่องยุ่งยากพอสมควรทีเดียว

คลิกจุดแรก | @Lมุม30 | @Wมุม150 | @Lมุม210 | Close

เพื่อลดขั้นตอนงานเช่นนี้จึงได้พัฒนา LISP ชื่อ LISO ช่วยเขียนเส้นลักษณะนี้ โดยคำสั่งจะตรวจจับระนาบ ISOMETRIC ขณะนั้น และคำนวณค่ามุมป้อนให้เอง มีพรอมต์เป็น

Command: LISO
Developed by S.Chatchawal, schatchawal@gmail.com
Line width: <0.3> <ความกว้างเส้น>
First point: <จุดแรก>
Second point: <จุดสอง>
First point: <วนถามจุดแรกของเส้นถัดไป ถ้าต้องการจบกด ENTER>



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

วันศุกร์ที่ 17 มิถุนายน พ.ศ. 2554

AutoCAD Tips: ตัวแปรระบบ (System variables)

มีผู้ใช้ AutoCAD หลายรายที่ได้อีเมลมาถามปัญหา เช่น

1.ตอนนี้คลิกเลือกรูปวาดได้เพียงทีละรูป ทั้งที่เคยคลิกเลือกเพิ่มได้ แต่ตอนนี้ทำไม่ได้แล้ว
2.เส้นโพลีไลน์แบบมีความหนา ที่เป็นเส้นระบายทึบ ตอนนี้แสดงเฉพาะขอบด้านนอกไม่มีระบายทึบ
3.เคยเลือกรูปวาดก่อนใช้คำสั่ง Move, Copy, Rotate ได้แต่ตอนนี้ทำไม่ได้แล้ว
4.ใช้คำสั่ง Mirror เพื่อทำสำเนารูปวาดแบบสะท้อนตามแนวแกนสมมาตร ปกติตัวหนังสือไม่กลับด้าน แต่คราวนี้กลับด้านไปหมดเลย
5.อื่นๆอีกมากมาย

ประเด็นเหล่านี้ใน AutoCAD ควบคุมด้วยสิ่งที่เรียกว่า ตัวแปรระบบ (System Variables) จากปัญหาข้างต้น มาดูคำตอบว่าจะทำได้อย่างไร?

1. พิมพ์ PICKADD {ENTER} ตอบค่า 1 {ENTER}
2. พิมพ์ FILLMODE {ENTER} ตอบค่า 1 {ENTER}
3. พิมพ์ PICKFIRST {ENTER} ตอบค่า 1 {ENTER}
4. พิมพ์ MIRRTEXT {ENTER} ตอบค่า 0 {ENTER}

บางตัวแปรระบบเหล่านี้มีแสดงเป็นตัวเลือกอยู่ในไดอะล็อก Options ซึ่งเปิดไดอะล็อกนี้ได้โดยคลิกขวาบนพื้นที่วาดรูปและเลือก Options จากปัญหาข้างต้น ตำแหน่งกำหนดค่าบนไดอะล็อก Options เป็นดังนี้

1. แท็บ Selection เอาเครื่องหมายถูกออกจากรายการ Use Shift to add the selection
2. แท็บ Display คลิกกาถูกรายการ Apply solid fill
3. แท็บ Selection คลิกกาถูกรายการ Noun / Verb selection
4. ไม่มีตัวเลือกบน Options

ตัวอย่างตัวแปรระบบเพิ่มเติม
- PDMODE กำหนดรูปร่างของจุดจากคำสั่ง Point เช่น ค่า 3 เป็นรูปกากบาท
- SAVETIME กำหนดช่วงระยะเวลาที่จะดำเนินการบันทึกอัตโนมัติ (หน่วยนาที)
- MBUTTONPAN ค่า 1 เพื่อใช้ล้อของเมาส์สำหรับ Pan และ Zoom

รายละเอียดความหมายทั้งหมดของตัวแปรระบบดูได้จาก AutoCAD Help ที่หัวข้อ Command Reference รายการ System Variables