วันศุกร์ที่ 19 มีนาคม พ.ศ. 2553

AutoCAD Tips : Visual LISP Tips หาผลรวมระยะเชิงเส้นจากเส้นบอกระยะและข้อความ



ในงานเขียนแบบบางครั้งเราต้องการหาผลรวมของระยะที่กำหนดไว้ในแบบ ซึ่งอาจถูกเขียนไว้ด้วยรูปวาดแบบ Dimension, Text หรือ Multiline Text

ในหัวข้อนี้เสนอคำสั่ง Sum ที่ใช้หาผลรวมของค่าในรูปวาดเหล่านี้ มีโค้ดดังนี้

;;; Sum Length from Text, Mtext and Dimension.
;;; Developed by S.Chatchawal.
(vl-load-com)
(defun c:sum (/ s j obj result *error*)
(defun *error* (msg)
(if (not (member msg (list "Function cancelled")))
(princ (strcat "\nSUM Error: " msg))
)
(princ)
)
(if (setq s (ssget (list (cons 0 "TEXT,MTEXT,DIMENSION"))))
(progn
(setq result 0.0
j -1
)
(repeat (sslength s)
(setq obj (vlax-ename->vla-object (ssname s (setq j (1+ j)))))
(cond
((member (vla-get-ObjectName obj)
(list "AcDbText" "AcDbMText")
)
(setq result (+ result (atof (vla-get-TextString obj))))
)
(T
(setq result (+ result
(vla-get-Measurement obj)
)
)
)
)
)
(princ " Sum of Length: ")
(princ result)
)
(princ "\nNo object found!!!")
)
(princ)
)

วันจันทร์ที่ 8 มีนาคม พ.ศ. 2553

Hardware tips: อากาศหน้าร้อน มาจัดสายในเครื่องกัน



อุปกรณ์ภายในเคส (Case) ส่วนที่เป็น CPU, RAM, Harddisk และ VGA card ล้วนแต่เป็นอุปกรณ์ให้ความร้อนออกมาจากการทำงานทั้งสิ้น

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

ส่วนทิศทางลมออกจะเอาไว้ที่ด้านหลังและด้านบน

การจัดทิศทางเช่นนี้ มีผลทำให้ลมไหลไปในทิศทางเดียวกัน ช่วยให้อัตราไหล (Flow) ของอากาศเป็นไปได้อย่างดี หากจัดทิศทางที่สลับไปมา ก็จะมีโอกาสที่แรงดันอากาศหักล้างกันเอง ทำให้อัตราไหลของลมลดต่ำลง

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

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

นอกจากนี้การเลือกใช้เคสที่ขนาดค่อนข้างใหญ่ ที่ในปัจจุบันมักออกแบบให้สามารถเก็บสายไว้ที่ด้านข้าง ส่วนที่อยู่ด้านหลังของแผงจับยึดเมนบอร์ด ก็มีส่วนช่วยให้ไม่มีสายมาขวางทางลม ช่วยให้อากาศไหลผ่านได้เป็นอย่างดีอีกด้วย

ในรูปนี้ ที่ถูกควรจะกลับทิศทางพัดลมของ Power supply unit ให้ลงด้านล่าง เพื่อให้อากาศใหม่จากภายนอกไหลผ่าน Power supply unit ได้โดยตรง ไม่ต้องใช้ลมร้อนในเครื่องนี้วนเข้าไปอีก แต่เนื่องจากสายจ่าย 24 pin มีขนาดสั้นเกินไป เลยแก้ปัญหาโดยกลับด้าน ให้สายนี้อยู่ชิดด้านในมากขึ้น

วันอาทิตย์ที่ 7 มีนาคม พ.ศ. 2553

Windows General Information: เว็บไซต์ Nvidia เตือนอย่าเพิ่งลงไดรเวอร์ 196.75

ลิงก์จากเว็บ Nvidia

http://www.nvidia.com/Download/index5.aspx?lang=en-us

196.75 Alert!
We are aware that some customers have reported fan speed issues with the latest 196.75 WHQL drivers on NVIDIA.com. Until we can verify and root cause this issue, we recommend that customers do not download this driver. Instead, please stay with, or return to 196.21 WHQL drivers. Release 196.75 drivers have been temporarily removed from our website and we also are asking our partners and others to remove temporarily this 196.75 WHQL driver as well.

เนื้อความหมายถึง
ให้ชะลออย่าเพิ่งอัปเดตไดรเวอร์ไปที่ 196.75 เพราะมีรายงานจากผู้ใช้ส่วนหนึ่งว่ามีปัญหากับความเร็วพัดลม ดังนั้นให้ใช้ 196.21 ก่อน

สำหรับท่านที่ลงไปแล้ว สามารถย้อนกลับ (rollback) ไปได้ ดูวิธีจากลิงก์นี้
Driver roll back help
http://www.nvidia.com/object/driver_rollback.html

วันจันทร์ที่ 1 มีนาคม พ.ศ. 2553

AutoCAD Tips: Visual LISP ตอน จัดแนวข้อความให้เสมอกัน - Alignment Text

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

หัวข้อนี้มาดูกันถึงรูทีน LISP ที่ใช้จัดแนวให้เสมอกัน

TLL - จัดชิดซ้าย
TRR - จัดชิดขวา
THM - จัดเสมอกันได้กึ่งกลางแนวนอน (เสมอกันที่เส้นแนวตั้งหนึ่งๆ)
TLH - จัดชิดแนวนอน

ตัวอย่างพรอมต์ของคำสั่ง TLL

Command: trr
Select Reference text: คลิกเลือกข้อความ (TEXT/MTEXT) ที่จะใช้เป็นแนวอ้างอิง
Select objects: เลือกข้อความ TEXT/MTEXT ที่จะจัดแนว
Select objects: เลือกจนครบ กด Enter

ตอนเลือกสามารถใช้กรอบ Window หรือ Crossing เลือกครอบหรือตัดผ่านวัตถุอื่นก็ได้ คำสั่งนี้จะกรองเอาเฉพาะรูปวาดแบบ TEXT/MTEXT ให้เอง

ผลก่อนใช้ TLL


ผลหลังใช้ TLL



โค้ดมีดังนี้

;;; Align group of texts or mtexts.
;;; TLL, TRR, TVM and THH (Left, Right, Middle-Vertical and Horizontal).
;;; Developed by S.Chatchawal, schatchawal@gmail.com
(vl-load-com)
;;; Left Align
(defun c:TLL (/ stop eRef oRef s LLref URref
j obj LL UR newpt oldpt *acaddoc*
*error*
)
(defun *error* (msg)
(if (not (member msg (list "Function cancelled")))
(princ (strcat "Text Align Error: " msg))
)
(vla-endundomark *acaddoc*)
(princ)
)
(setq *acaddoc*
(vla-get-activedocument
(vlax-get-acad-object)
)
)
(vla-startundomark *acaddoc*)
(while (not stop)
(setq eRef (entsel "\nSelect Reference text: ")
oRef (vlax-ename->vla-object (car eRef))
)
(if (member (vlax-get oRef 'ObjectName)
(list "AcDbText" "AcDbMtext")
)
(progn
(setq stop T)
(vla-highlight oRef :vlax-true)
)
(princ "\nNot Text object, TRY AGAIN!!!")
)
)
(if (setq s (ssget (list (cons 0 "TEXT,MTEXT"))))
(progn
(vlax-invoke-method oRef 'getboundingbox 'minpt 'maxpt)
(setq LLref (vlax-safearray->list minpt)
URref (vlax-safearray->list maxpt)
j -1
)
(repeat (sslength s)
(setq obj (vlax-ename->vla-object (ssname s (setq j (1+ j)))))
(vlax-invoke-method obj 'getboundingbox 'minpt 'maxpt)
(setq LL (vlax-safearray->list minpt)
UR (vlax-safearray->list maxpt)
)
(setq newpt (cons (car LLref) (cdr LL))
oldpt LL
)
(vla-move obj (vlax-3d-point oldpt) (vlax-3d-point newpt))
)
(vla-highlight oRef :vlax-false)
)
(princ "\nNo TEXT found!!!")
)
(vla-endundomark *acaddoc*)
(princ)
)
;;; Right Align
(defun c:TRR (/ stop eRef oRef s LLref URref
j obj LL UR newpt oldpt *acaddoc*
*error*
)
(defun *error* (msg)
(if (not (member msg (list "Function cancelled")))
(princ (strcat "Text Align Error: " msg))
)
(vla-endundomark *acaddoc*)
(princ)
)
(setq *acaddoc*
(vla-get-activedocument
(vlax-get-acad-object)
)
)
(vla-startundomark *acaddoc*)
(while (not stop)
(setq eRef (entsel "\nSelect Reference text: ")
oRef (vlax-ename->vla-object (car eRef))
)
(if (member (vlax-get oRef 'ObjectName)
(list "AcDbText" "AcDbMtext")
)
(progn
(setq stop T)
(vla-highlight oRef :vlax-true)
)
(princ "\nNot Text object, TRY AGAIN!!!")
)
)
(if (setq s (ssget (list (cons 0 "TEXT,MTEXT"))))
(progn
(vlax-invoke-method oRef 'getboundingbox 'minpt 'maxpt)
(setq LLref (vlax-safearray->list minpt)
URref (vlax-safearray->list maxpt)
j -1
)
(repeat (sslength s)
(setq obj (vlax-ename->vla-object (ssname s (setq j (1+ j)))))
(vlax-invoke-method obj 'getboundingbox 'minpt 'maxpt)
(setq LL (vlax-safearray->list minpt)
UR (vlax-safearray->list maxpt)
)
(setq newpt (cons (car URref) (cdr UR))
oldpt UR
)
(vla-move obj (vlax-3d-point oldpt) (vlax-3d-point newpt))
)
(vla-highlight oRef :vlax-false)
)
(princ "\nNo TEXT found!!!")
)
(vla-endundomark *acaddoc*)
(princ)
)
;;; Horizontal-Middle Align
(defun c:THM (/ stop eRef oRef s LLref URref
j obj LL UR newpt oldpt *acaddoc*
*error*
)
(defun *error* (msg)
(if (not (member msg (list "Function cancelled")))
(princ (strcat "Text Align Error: " msg))
)
(vla-endundomark *acaddoc*)
(princ)
)
(setq *acaddoc*
(vla-get-activedocument
(vlax-get-acad-object)
)
)
(vla-startundomark *acaddoc*)
(while (not stop)
(setq eRef (entsel "\nSelect Reference text: ")
oRef (vlax-ename->vla-object (car eRef))
)
(if (member (vlax-get oRef 'ObjectName)
(list "AcDbText" "AcDbMtext")
)
(progn
(setq stop T)
(vla-highlight oRef :vlax-true)
)
(princ "\nNot Text object, TRY AGAIN!!!")
)
)
(if (setq s (ssget (list (cons 0 "TEXT,MTEXT"))))
(progn
(vlax-invoke-method oRef 'getboundingbox 'minpt 'maxpt)
(setq LLref (vlax-safearray->list minpt)
URref (vlax-safearray->list maxpt)
MMref (mapcar '(lambda (x y) (/ (+ x y) 2.0)) LLref URref)
j -1
)
(repeat (sslength s)
(setq obj (vlax-ename->vla-object (ssname s (setq j (1+ j)))))
(vlax-invoke-method obj 'getboundingbox 'minpt 'maxpt)
(setq LL (vlax-safearray->list minpt)
UR (vlax-safearray->list maxpt)
MM (mapcar '(lambda (x y) (/ (+ x y) 2.0)) LL UR)
)
(setq newpt (cons (car MMref) (cdr MM))
oldpt MM
)
(vla-move obj (vlax-3d-point oldpt) (vlax-3d-point newpt))
)
(vla-highlight oRef :vlax-false)
)
(princ "\nNo TEXT found!!!")
)
(vla-endundomark *acaddoc*)
(princ)
)
;;; Lower corner - Horizontal Align
(defun c:TLH (/ stop eRef oRef s LLref URref
j obj LL UR newpt oldpt *acaddoc*
*error*
)
(defun *error* (msg)
(if (not (member msg (list "Function cancelled")))
(princ (strcat "Text Align Error: " msg))
)
(vla-endundomark *acaddoc*)
(princ)
)
(setq *acaddoc*
(vla-get-activedocument
(vlax-get-acad-object)
)
)
(vla-startundomark *acaddoc*)
(while (not stop)
(setq eRef (entsel "\nSelect Reference text: ")
oRef (vlax-ename->vla-object (car eRef))
)
(if (member (vlax-get oRef 'ObjectName)
(list "AcDbText" "AcDbMtext")
)
(progn
(setq stop T)
(vla-highlight oRef :vlax-true)
)
(princ "\nNot Text object, TRY AGAIN!!!")
)
)
(if (setq s (ssget (list (cons 0 "TEXT,MTEXT"))))
(progn
(vlax-invoke-method oRef 'getboundingbox 'minpt 'maxpt)
(setq LLref (vlax-safearray->list minpt)
URref (vlax-safearray->list maxpt)
j -1
)
(repeat (sslength s)
(setq obj (vlax-ename->vla-object (ssname s (setq j (1+ j)))))
(vlax-invoke-method obj 'getboundingbox 'minpt 'maxpt)
(setq LL (vlax-safearray->list minpt)
UR (vlax-safearray->list maxpt)
)
(setq newpt (cons (car LL) (cdr LLref))
oldpt LL
)
(vla-move obj (vlax-3d-point oldpt) (vlax-3d-point newpt))
)
(vla-highlight oRef :vlax-false)
)
(princ "\nNo TEXT found!!!")
)
(vla-endundomark *acaddoc*)
(princ)
)

วันเสาร์ที่ 27 กุมภาพันธ์ พ.ศ. 2553

AutoCAD Tips: Visual LISP ใส่ Hatch ในผนัง เพิ่มเติมจากตอนที่แล้ว



จากตอน AutoCAD Tips: Visual LISP ใส่ Hatch ในผนัง
http://chatchawalsupakasem.blogspot.com/2010/02/autocad-tips-visual-lisp-hatch.html

ได้รับอีเมลจากหลายท่าน ถามไถ่ถึงอยากให้

1.ปรับค่ามุมได้
2.ลงเส้นแบบสองแนว (Double) ที่เคยกระทำได้ในคำสั่ง Hatch ปกติ
3.การปรับชื่อเลเยอร์ ที่คำสั่งจะตรวจจับ
เช่น เดิมคำสั่งกรองเอาเฉพาะเส้นบนเลเยอร์ชื่อ A-Wall อยากแก้เป็นเลเยอร์ชื่อ Wall
4.กำหนดชื่อเลเยอร์วาง Hatch ใหม่ได้ เช่น
เดิมคำสั่งนี้ให้วางที่ A-Hatch อยากให้ย้ายไปอยู่ที่ Wall-Pattern

จริงๆ แล้ว คำสั่งเดิม HW นั้น
รองรับสิ่งเหล่านี้ทั้งหมด
โดยแฝงอยู่ในตัวแปร

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

1. เปิด Notepad ใน Windows
แล้วคัดลอกโค้ดต่อไปนี้เข้าไปวาง

;; Hatch แบบดับเบิลสองแนว ที่เส้นเอียง 45 องศา
(defun c:h2 ()
(setq #hatchdouble 1); ลงสองแนวใช้ค่า 1 ลงแนวเดียวใช้ค่า 0
(setq #hatchang 45.0); ใส่ค่ามุมหน่วยองศา
(c:hw)
(princ)
)
;; Hatch แบบแนวเดียว ที่เส้นเอียง 45 องศา
(defun c:hh ()
(setq #hatchdouble 0)
(setq #hatchang 45.0)
(c:hw)
(princ)
)
;; Hatch แบบแนวเดียว ที่เส้นทำมุม 90 องศา
(defun c:hp ()
(setq #hatchdouble 0)
(setq #hatchang 90.0)
(c:hw)
(princ)
)
;; Hatch แบบแนวเดียวที่เส้นทำมุม 180 องศา
(defun c:hl ()
(setq #hatchdouble 0)
(setq #hatchang 180.0)
(c:hw)
(princ)
)
;; Hatch แบบแนวเดียวที่เส้นทำมุม 30 องศา
(defun c:h3 ()
(setq #hatchdouble 0)
(setq #hatchang 30.0)
(c:hw)
(princ)
)

2. บันทึกไฟล์ Ctrl+S
3. ใช้คำสั่ง APPLOAD
โหลดไฟล์นี้ และใช้คำสั่งตามชื่อหลัง C:
ที่กำหนดไว้ คือ
h2, hh, hp, hl, h3

*** ส่วนการให้โหลดเมื่อเปิดไฟล์ใหม่ทุกครั้ง
*** ให้เพิ่มไว้ใน Startup Suite ใน Appload

4. ตัวอย่างการตั้งชื่อเลเยอร์ใหม่
ให้เพิ่มบรรทัด (setq #walllayer "Wall")
สำหรับแก้ชื่อเลเยอร์ผนังที่จะให้กรองเลือกไปที่ Wall

;; Hatch แบบดับเบิลสองแนว ที่เส้นเอียง 45 องศา
(defun c:hw2 ()
(setq #walllayer "Wall")
(setq #hatchdouble 1)
(setq #hatchang 45.0)
(c:hw)
(princ)
)

ให้เพิ่มบรรทัด (setq #hatchllayer "Wall-Pattern")
สำหรับแก้ชื่อเลเยอร์ของ Hatch ไปที่ Wall-Pattern

;; Hatch แบบดับเบิลสองแนว ที่เส้นเอียง 45 องศา
(defun c:hw2 ()
(setq #walllayer "Wall")
(setq #hatchllayer "Wall-Pattern")
(setq #hatchdouble 1)
(setq #hatchang 45.0)
(c:hw)
(princ)
)

ช่วงนี้มีอีเมลเข้ามาสอบถามปัญหาเป็นจำนวนมาก
บางท่านก็แจ้งว่าทราบมาจากเว็บต่างๆ
รวมถึงคนไทยทั้งในและนอก
ที่ติดตาม LISP จาก Autodesk | Support

ยินดีครับที่ได้เผยแพร่แนวทางที่ช่วยให้ใช้งาน
AutoCAD ได้อย่างรวดเร็วยิ่งขึ้น

วันพุธที่ 24 กุมภาพันธ์ พ.ศ. 2553

AutoCAD Tips: Visual LISP Tips ตอน Non-uniform X-Y Grid on 2D Plan.

เช้านี้เช็ค email
มีคุณ konothai@yahoo.com สอบถามถึงแนวทางสร้างเส้นกริดบนแปลน
ที่ Non-uniform X-Y หรือระยะห่างไม่ได้สม่ำเสมอ เท่ากันบางช่วง บางช่วงเป็นค่าอื่น
เห็นว่าน่าจะเป็นประโยชน์กับท่านอื่นๆ ที่ทำงานในสายนี้ด้วย
เลยขอนำมาโพสต์ตอบรวมไว้ตรงนี้เลยแล้วกัน

ท่านที่สนใจการพัฒนาสร้างคำสั่งใหม่ด้วย Visual LISP
ติดขัดตรงจุดไหน อีเมลมาคุยกันได้นะครับ



และนำเสนอให้ใช้ค่าป้อนในคำสั่งเป็นนิพจน์ในรูป

A1+ A2*X2 + A3*X3 + ... + Am*Xm
B1+ B2*Y2 + B3*Y3 + ... + Bn*Xn


พร้อมกับวางเสาที่มีหน้าตัดรูปสี่เหลี่ยมผืนผ้าที่ขนาดหนึ่งในทุกจุดตัดของเส้นกริดด้วย
แล้วค่อยอัปเดตด้วยอีกคำสั่งภายหลัง สำหรับต้นที่มีขนาดพิเศษ



แนวทางใน Visual LISP coding คงต้องจัดการจาก
นิพจน์สตริง A1+ A2*X2 + A3*X3 + ... + Am*Xm
ตรวจดักความผิดพลาดที่จะถูกป้อนเข้ามา
เมื่อถูกต้องแล้ว ก็แยกเป็น List ในรูป

( (A1) (A2 X2) (A3 X3) ... (Am Xm))

และสุดท้ายอาจแตกค่าย่อยเป็น

( x1 x2 x3 .... xm )

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

โค้ดที่ได้ลองเขียนขึ้น เป็นไฟล์ให้ดาวน์โหลดได้ที่
(New Revision: 24-02-2010 16:00PM)
http://www.mediafire.com/file/ekhznziijzz/GRID.VLX

ก่อนใช้งาน ให้โหลดด้วย APPLOAD เหมือนกับ .LSP ทั่วไป

ลำดับการทำงานของคำสั่งนี้

Command: gs
Developed by S.chatchawal.
X expression A1+ A2*X2 + A3*X3 + ...: เช่น 5+12*4.5+6+5
Y expression B1+ B2*Y2 + B3*Y3 + ...: เช่น 4+7+3*4+5+4
Column x size: <0.25> ขนาดเสาแนว X เช่น .3
Column y size: <0.25> ขนาดเสาแนว Y เช่น .4

ผลลัพธ์ที่ได้จะวาดรูปชุดเส้นกริดและใส่เสาที่ขนาดเท่ากันทุกต้น
พร้อมกับแจ้งนิพจน์ที่ใช้วาดอีกครั้ง บน Command: เช่น

X: 5+12*4.5+6+5
Y: 4+7+3*4+5+4

คำสั่งนี้กำหนดเลเยอร์ให้กับเสาและเส้นกริดที่
A-Column และ A-Grid ตามลำดับ

ดูไดอะล็อก Layer Properties

ส่วนการอัปเดตขนาดเสาใหม่ ให้ใช้คำสั่ง CU
ที่มาพร้อมกับคำสั่ง GS ในไฟล์ GRID.VLX

ลำดับการทำงานของคำสั่ง CU เป็นดังนี้

Command: cu
Developed by S.chatchawal.
New Column x size: <0.3> ขนาดเสาใหม่ในแนว x เช่น .6
New Column y size: <0.4> ขนาดเสาใหม่ในแนว y เช่น .4
Select objects: เลือกกลุ่มเสาที่จะเปลี่ยนขนาดใหม่
Select objects: ที่พรอมต์นี้หากเราเลือกครอบ จะกรองเอาเฉพาะ Polyline 4 จุดยอดให้

เมื่อกล่าวถึงในจุดนี้
งานสุดท้ายจะจบลงด้วยการใส่ Grid Iden Bubbles
ที่เป็นวงกลมและหมายเลข หรืออักษรกำกับ
ซึ่งใน PA2010-AEC ที่มีกล่าวถึงในหนังสือ
AutoCAD 2010 เขียนแบบงานวิศวกรรมและสถาปัตย์
ที่ได้จัดทำไปนั้น มีคำสั่ง inctext ที่่ช่วยจัดการเขียน
ชุดตัวเลขหรือชุดตัวอักษรเรียงให้
ซึ่งใช้ได้สะดวกมาก ไม่ต้องใส่ค่าใหม่ทีละค่าเอง
จาก Text หรือ Mtext เองอีก

ดูรูปไดอะล็อก Increment Text


หลังจากคลิก Draw ไดอะล็อกจะปิดลง
เมื่อเลือกในแบบ Each Point
และมีพรอมต์ดังนี้

Command: inctext
Specify point for Text:

ให้เลือกจุดที่จะเขียน ในกรณีนี้คือ Object Snap: Center
ของรูปวงกลมที่แทน Bubble หนึ่งๆ

กรณีระยะเส้นกริดเป็นแบบ Uniform
ก็สามารถใช้ตัวเลือก Uniform บนไดอะล็อก IncText
เพื่อกำหนดแบบอัตโนมัติเลย ไม่ต้องคลิกทีละจุดอีก

วันจันทร์ที่ 15 กุมภาพันธ์ พ.ศ. 2553

AutoCAD Tips: Visual LISP ใส่ Hatch ในผนัง




บทความนี้น่าจะตรงใจคนที่ทำงานเขียนแบบแปลนอาคาร
ที่มีการใส่ Hatch แบบเส้นเฉียง 45 องศาระหว่างเส้นตรง
ที่เป็นเส้นคู่ที่แทนถึงผนังในแบบแปลน

พรอมต์ของคำสั่งมีดังนี้

Command: HW
Hatch in wall, developed by S.Chatchawal, schatchawal@gmail.com
Select objects: เพื่อความสะดวกให้เลือกแบบ Crossing ลากกรอบจากทางขวาไปซ้าย
หรือจะคลิกเลือกทีละเส้นก็ได้
Select objects: กด Enter

เงื่อนไข
1.เส้นตรงที่แทนผนังต้องอยู่บนเลเยอร์ A-Wall
2.hatch ที่ได้จะถูกวางบนเลเยอร์ A-hatch
3. เส้นภายในห่างจากเส้นผนัง 0.02
4. hatch เส้นห่างกัน 0.03
5. hatch ทำมุม 45 องศา

ข้อสังเกต
1. ตอนลากกรอบแม้ว่าจะใช้ Crossing ตัดผ่าน
ซึ่งให้ผลรวมทุกเส้นที่กรอบเลือกตัดผ่าน
แต่คำสั่งนี้จะกรองเอาเฉพาะรูปวาดบนเลเยอร์ A-Wall เท่านั้น
จึงสะดวกอย่างมาก ไม่ต้องกังวลว่าจะได้รูปอื่นเข้ามา

ปกติแนวเส้นผนังนี้จะมีเส้น Grid รวมอยู่ด้วย ซึ่งจะถูกคำสั่งนี้
กรองออกไปให้เอง

2.ไฟล์ที่ให้โหลดนี้เป็น .VLX ซึ่งคือ .LSP
ที่คอมไพล์แล้ว และมีอายุใช้ได้ถึงสิ้นเดือน กพ 2010
นี้ เพื่อให้ผู้ใช้แจ้งปัญหาใช้งาน และจะส่งฉบับแก้ไขให้ใหม่
แบบไม่หมดอายุ
3. หลังจากโหลดตาม Link ข้างนี้แล้ว
เลือกเอาเฉพาะตัวใดตัวหนึ่ง เพราะเป็นไฟล์เดียวกัน
ให้แตกออก จะได้ไฟล์ Hatchinwall.vlx
4. โหลดใช้งานด้วยคำสั่ง Appload

Link โหลดไฟล์
http://www.tempf.com/getfile.php?id=384237&key=4b78dfaf81b4d

หรือ

http://www.mediafire.com/file/nmfynzkgivh/Hatchinwall.zip