วันศุกร์ที่ 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>



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