Thai3Dviz  

Go Back   Thai3Dviz > AutoCad > ห้องดราฟ (AutoCad)

ห้องดราฟ (AutoCad) ข่าวน่าสนใจ ,ถาม ตอบปัญหา เกี่ยวกับโปรแกรม AutoCad

 
 
Share Thread Tools Display Modes
Prev Previous Post   Next Post Next
Old 22-02-2010, 06:43 PM   #1
konothai
สมาชิกไทยวิซ
 
konothai's Avatar
 
Join Date: Jan 2010
Posts: 97
konothai is on a distinguished road
Default Cad productivities กับ lisp: วาดเสาหน้าตัดสี่เหลี่ยมผืนผ้า

จั่วหัวไว้ว่า CAD Productivities เพื่อให้ทราบจุดมุ่งหมายกันก่อนว่า
ทำไปทำไม ไม่ต้องมี LISP ก็เขียนได้อยู่แล้ว เสาต้นเดียว เขียนง่ายมากๆ

ขออนุญาตเอามะพร้าวห้าวมาขายสวนก่อนแล้วกัน

Step-by-Step สำหรับเขียนเสาหน้าตัดสี่เหลี่ยมบนแปลน มีดังนี้
(มีหลายวิธีเขียน แต่ยกตัวอย่างเป็นวิธีนี้ วิธีหนึ่งแล้วกัน)

1. บน Model space ซูมพื้นที่ใกล้จุดตัดของ Grid line ที่จะวาดเสา
2. กำหนด Current Layer ให้ตรงกับที่ใช้ เช่น A-Column
3. พิมพ์ ID กด Enter เลือกจุดตัด Grid Line ที่จะวางเสา
4. คลิกทูล Rectangle เพื่อวาดสี่เหลี่ยม
5. ใส่ค่ามุมล่าง = @-X/2 , -Y/2
6. ใส่ค่ามุมบน = @X,Y

เมื่อ X,Y เป็นความยาวของด้านสี่เหลี่ยมผืนผ้า

ดีไหม?
ถ้าเราสามารถลดขั้นตอนสิ่งที่จะทำตามข้างต้นได้

สิ่งที่ได้ ถ้าสร้าง LISP คำสั่งใหม่ คือ
1. ลดขั้นตอน ลดจำนวนคลิก
2. ลดข้อผิดพลาด ไม่ต้องกำหนดเลเยอร์ผิด
ไม่ต้องพลาดใส่ขนาดหารสองผิด ไม่ต้องพิมพ์เยอะแยะ
ไม่ต้องกด Shift เพื่อจะพิมพ์ @

ลดงาน ลดข้อผิดพลาด แล้วได้อะไร?
ก็ได้เวลาคืนมา ไม่ต้องเสียเวลาแก้ไขงานที่ผิดพลาด
ได้งานที่ Consistency ตรงกันหมด จะเขียนกี่ที ก็ถูกเลเยอร์

มีเวลาจิบกาแฟได้ละเมียดขึ้นอีกนิด

ส่งคำสั่งนี้ให้คนอื่นเขียน ก็ได้เสาที่มาจากเส้น Polyline รูปสี่เหลี่ยม
จาก Rectang ไม่ผิดเพี้ยน และที่สำคัญชื่อเลเยอร์เหมือนกันหมดทุกคน

ลดจำนวนคลิกแล้วได้อะไรอีก คำตอบคือ ลดโอกาสเกิด RSI

แล้ว RSI คืออะไร?
อาการสะสมจากการเกร็งทำงานซ้ำแบบเดิมบ่อยๆ
อย่างการเกร็งคลิกเมาส์หรือพิมพ์คีย์บอร์ดมากๆ
จะเกิดพังผืดรัดรอบ สุดท้ายกลายเป็นนิ้วล๊อค หรืองอไม่ได้
แต่ก็ไม่ได้จะเป็นปุ๊บปั๊บ กินเวลานานๆ

ดูพวกเลขาฯ พวกพลพิมพ์ ทำงานเอกสารประมูลก็ได้
อาจจะเป็นนิ้วเกร็ง นิ้วล๊อค กระดูกข้อมือปูด
ไปอ่านต่อเองที่ตรงนี้ ครับผม
http://en.wikipedia.org/wiki/Repetitive_strain_injury

งาน CAD อาจไม่ถึง RSI แต่ก็จบวันแบบสบายนิ้ว สบายมือ!!!

ทีนี้มาถึงโค้ดตัวคำสั่งนี้บ้าง
ให้เป็นตัวอย่างนะครับ
ไม่อธิบาย Coding แต่มา Discuss กันได้ครับผม

;;; Column
(defun c:rr (/ p tmp oldosmode c1 c2 *error*)
(graphscr)
(setq oldosmode (getvar "osmode"))
(defun *error* (msg)
(command "undo" "end")
(setvar "osmode" oldosmode)
(setvar "cmdecho" 1)
(princ)
)
(if (not #ColumnLayer)
(setq #ColumnLayer "A-Column") ; Specify your layer HERE!!!
)
(if (not #Columnx)
(setq #Columnx 0.25)
)
(if (not #Columny)
(setq #Columny 0.25)
)
(foreach msg (list "\nColumn x size: <" #Columnx "> ")
(princ msg)
)
(if (setq tmp (getdist))
(setq #Columnx tmp)
)
(foreach msg (list "\nColumn y size: <" #Columny "> ")
(princ msg)
)
(if (setq tmp (getdist))
(setq #Columny tmp)
)
(setvar "cmdecho" 0)
(command "undo" "begin")
(command "layer" "m" #ColumnLayer "")
(setq c1 (strcat "@"
(rtos (/ #Columnx -2.0) 2)
","
(rtos (/ #Columny -2.0) 2)
)
c2 (strcat "@" (rtos #Columnx 2) "," (rtos #Columny 2))
)
(while (setq p (getpoint "\nCenter of column: "))
(setvar "lastpoint" p)
(setvar "osmode" 0)
(command "rectang" c1 c2)
(setvar "osmode" oldosmode)
)
(command "undo" "end")
(setvar "cmdecho" 1)
(princ)
)

ถ้าสร้างไฟล์ .LSP ไม่เป็น
มีแนบให้โหลดที่นี้ครับ



http://www.tempf.com/getfile.php?id=398116&key=4b826b83f0173


วิธีโหลดเพื่อใช้ก็เหมือนกับกระทู้ที่ผ่านมา

ตอนนี้จะเขียนเสาพิมพ์แค่ RR กด Enter ในคำสั่งเดียวนี้
จะจัดการงานข้างบนทั้งหมดให้เลย มีพรอมต์ดังนี้

Command: RR
Column x size: <0.25>
Column y size: <0.25>
Center of column: เลือกจุดเขียนเสา ปกติคือจุดตัดของ Grid Line
Center of column: คำสั่งยังวนให้เลือกตำแหน่งอื่นได้อีก จบคำสั่งโดยกด ENTER

สังเกตว่าขั้นตอนทำงานทั้งหมด
อยู่ในคำสั่งเดียว และลดจำนวนครั้งที่ป้อนค่าลงไปมาก
ที่ต้องกำหนดเลเยอร์ปัจจุบันก็ไม่ต้องทำเอง
ที่ต้องคำนวณหารสองก็ไม่ต้องทำเอง

Note:
1.โค้ดนี้กด ESC ยกเลิกได้ และ Undo ย้อนกลับได้ตามปกติ
บางโค้ด LISP จะเขียนให้สั้นลง ตัดส่วนควบคุมเหล่านี้ออกไป
2. แก้ชื่อเลเยอร์เริ่มต้นในโค้ดที่
(setq #ColumnLayer "A-Column") ; Specify your layer HERE!!!

เช่นแก้เป็น
(setq #ColumnLayer "Column") ; Specify your layer HERE!!!

3. แก้ขนาดเริ่มต้น (default value) ของเสาที่
(setq #Columnx 0.25)
(setq #Columny 0.25)

เช่นแก้เป็น
(setq #Columnx 0.3)
(setq #Columny 0.3)

PRODUCTIVITIES ครับ คือสิ่งที่ผลักดันให้เราศึกษา LISP
+ สิ่งอื่นๆ ที่ตามมาอีกมากมาย


ปราชญ์กรีก พาเร็ตโต้ สมัยดึกดำบรรพ์ยังบัญญัติกฎ 20/80
เอาไว้เลย ว่า ถ้ากุม 20% ของส่วนสำคัญได้ ก็ถือว่า
กุมส่วนหลักของงานไปแล้วกว่า 80%

ลองดูนะครับ ออกแรงกันอีกนิด
เขียนผนัง เสา เปิดช่อง (ไว้รอวางบล๊อคประตู)

ดูแล้วมีแค่นิดเดียว แต่คนขึ้นแปลนน่าจะรู้ดีว่า
เป็นด่านแรกที่จะขึ้นงานทั้งหมดเลยทีเดียว!!!


konothai is offline  

Reply With Quote
 

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
lisp edit text dimension num100 ห้องดราฟ (AutoCad) 3 08-08-2010 11:57 PM
ใครพอจะมี Lisp ที่ใช้บวก Text บ้างครับ aonhope ห้องดราฟ (AutoCad) 15 11-05-2010 09:45 AM
อย่ากได้ Lisp JK1981 ห้องดราฟ (AutoCad) 0 03-11-2009 01:39 PM
Lisp สำหรับ Copy Text และ Copy Block aonhope ห้องดราฟ (AutoCad) 4 20-11-2007 04:19 PM
นำเอา LISP ไปใช้ยังไงดีครับ tt&n ห้องดราฟ (AutoCad) 1 26-10-2007 03:43 PM


All times are GMT +7. The time now is 04:16 PM.

Design Developed by CompleteGFX
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright ©2002-2010 Thai3dViz Co.,Ltd.
Hosting by THAISITE.net