วันอังคารที่ 10 มีนาคม พ.ศ. 2552

Visual LISP: Tips เคล็ดลับ แก้ไขความสูงของ Attributes พร้อมกันหลายตัว

การแก้ไขความสูงตัวอักษรใน Attributes สามารถดับเบิลคลิกเพื่อใช้ไดอะล็อก Enhanced Attribute Editor เพื่อแก้ไขคุณสมบัติและค่าต่างๆ ของ Attribute นั้นๆ ได้ แต่เป็นเพียงคราวละตัวเท่านั้น

ใน Tip นี้ขอเสนอวิธีการแก้ไข Attribute แบบให้เลือกชุดวัตถุ (Selection set) ซึ่งจะเป็นวัตถุชิ้นเดียวหรือหลายตัวก็ได้ และมีพรอมต์ให้กำหนดค่าความสูงใหม่
จากนั้นคำสั่งนี้จะแก้ไขความสูงใหม่ให้พร้อมกันในคราวเดียว

;;; Change Hieght of Attributes.
;;; Developed by S.Chatchawal, schatchawal@gmail.com

(defun c:attH (/ s obj tmp j atts L tag *error*)
(vl-load-com)
(defun *error* (msg)
(if (not
(member msg (list "Function cancelled" "quit / exit abort"))
)
(princ (strcat "ATTH Error: " msg))
)
(princ)
)
(if (setq s (ssget (list (cons 0 "INSERT") (cons 66 1))))
(progn
(if (not #attH)
(setq #attH 25.0)
)
(foreach L (list (strcat "\nNew Text Height : " (chr 60))
#attH
(chr 62)
(chr 32)
)
(princ L)
)
(if (setq tmp (getdist))
(setq #attH tmp)
)
(setq j -1)
(repeat (sslength s)
(setq obj (vlax-ename->vla-object (ssname s (setq j (1+ j)))))
(if
(safearray-value
(setq atts
(vlax-variant-value
(vla-getattributes obj)
)
)
)
(foreach tag (vlax-safearray->list atts)
(vla-put-height tag #attH)
)
(vla-update obj)
)
)
)
(princ "\nNo ATTRIBUTE object found!!!")
)
(princ)
)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น