วันเสาร์ที่ 30 พฤศจิกายน พ.ศ. 2567

การสร้าง Dynamic Blockแบบปรับขนาดได้ใน AutoCAD

 

การสร้าง Dynamic Blockแบบปรับขนาดได้ใน AutoCAD

Dynamic Block แบบหลายๆ เวอร์ชันใน AutoCAD นั้นมีประโยชน์ เป็นอย่างมาก เนื่องจาก เราสามารถสร้าง บล็อคเพียง ชิ้นเดียว แต่มีหลายขนาด หรือ หลายรูปแบบหรือ หลายสถานะ ให้เลือกใช้งาน โดยเราไม่ต้อง สร้างบล็อค ขึ้นมาจำนวนมาก เพราะจะทำให้ เกิดความยุ่งยาก และเสียเวลา ในการค้นหาและ สิ้นเปลือง เนื้อที่ในการจัดเก็บ หากนำ Dynamic Block เข้ามาใช้งาน จะช่วยให้เรา สามารถค้นหา สอดแทรก ปรับตำแหน่ง ขนาดและทิศทางของ Dynamic Block ให้เหมาะสม กับชิ้นงานอื่นๆ ให้อย่างรวดเร็ว โดยไม่ต้อง เกรงว่าบล็อค ที่จะนำมาสอดแทรกนั้น จะมีขนาด ไม่ฟิตพอดี กับชิ้นงานอื่นๆ ในแบบแปลน เพราะเรา สามารถสร้าง Dynamic Block ที่สามารถปรับขนาด หรือเปลี่ยนรูปร่าง หรืออาจจะมี หลายๆ รูปแบบใน บล็อคเดียวก็ได้ การสร้างDynamic Block แบบหลายเวอร์ชันนั้น นิยมใช้ Visibility Parameter หรือ Lookup Parameter เป็นตัวควบคุม การปรับเปลี่ยนรูปแบบ อย่างไรก็ตาม ในการสร้างบล็อคแบบ หลายเวอร์ชัน ก็จะมีพารามิเตอร์และ แอกชั่นอื่นๆ เป็นส่วนที่กำหนด ขนาดและการใช้คำสั่งกระทำกับบล็อคเช่นเดียวกัน ดังนั้น เราจะศึกษาการ ใช้พารามิเตอร์และ แอกชั่นแบบง่ายๆ เสียก่อน จึงจะศึกษาการใช้ Visibility Parameter หรือ Lookup Parameter ในโอกาสต่อไป โดยในที่นี้ เราจะมาลองสร้าง บล็อคหน้าต่าง ที่สามารถ ปรับขนาดความกว้าง ได้หลายขนาดพร้อม ทั้งสามารถ พลิกกลับด้าน ได้โดยที่หน้าต่าง จะอยู่ในตำแหน่งเดิมไม่มีการ เคลื่อนที่ไม่ว่าจะขนาดความกว้างจะเปลี่ยน เป็นเท่าใดก็ตาม โดยมีขั้นตอนดังต่อไปนี้


รูปที่ 1

รูปที่ 2

ดาวน์โหลดไฟล์ dynamicblock.zip แล้ว Unzip และเปิดไฟล์ dynamicblock.dwg ซึ่งมีบล็อค ธรรมดา รูปบาน หน้าต่างชื่อ Window ออกมาใช้งานใน AutoCAD 2006 (บล็อคนี้สร้างจากคำสั่ง Draw/Block/Make เหมือนกับ การสร้างบล็อค ธรรมดาโดยทั่วไป)จะปรากฏดังรูปที่ 1

ใช้คำสั่ง Tools/Block Editor เมื่อปรากฏ ใดอรอค Edit Block Definition คลิกบล็อค Window ดังรูปที่ 2 คลิกบนปุ่ม OK จะปรากฏดังรูปที่ 3

หมายเหตุ การสร้างบล็อคเพื่อให้ ปรับความกว้างได้ เราจะใช้ Linear Parameter คู่กับ Stretch Action เพื่อบังคับให้บล็อคยืดออกในแนวนอน พารามิเตอร์ Linear Parameter ใช้เป็นตัวกำหนดระยะในการยืดหรือหด ส่วนแอคชัน Stretch Action เป็นคำสั่งในการยืดบล็อคตามที่กำหนดใน Linear Parameter เราสามารถเลือกที่จะใช้ปุ่มไอคอน Linear Parameter บนแถบ Parameters และปุ่มไอคอน Stretch Action บนแถบ Actions บนหน้าต่าง Block Authoring Palettes หรือจะเลือกใช้ปุ่มไอคอน Linear Stretch บนแถบ Parameter Sets เนื่องจากปุ่มไอคอน Linear Stretch นั้นมีการรวบรวม Linear Parameter และ Stretch Action ไว้ให้เราเรียบร้อยแล้ว

รูปที่ 3

จากรูปที่ 3 คลิกแถบ Parameter Sets คลิกปุ่มไอคอน Linear Stretch เมื่อปรากฏข้อความ Specify start point... คลิกจุดที่ 1 เมื่อปรากฏข้อความ Specify endpoint: คลิกจุดที่ 2 เมื่อปรากฏข้อความ Specify label location: คลิกจุดที่ 3 จะปรากฏดังรูปที่ 4

รูปที่ 4

จากรูปที่ 4 ดับเบิลคลิกบนไอคอน Stretch จะปรากฏข้อความ Specify first corner of stretch frame ให้กำหนดขอบเขตของส่วนที่จะยืดโดยคลิกจุดที่ 1 เมื่อปรากฏข้อความ Specify opposite corner: คลิกจุดที่ 2 เมื่อปรากฏข้อความ Specify objects to stretch ให้เลือกวัตถุที่ต้องการยืดแบบ Crossing โดยคลิกจุดที่ 3 เมื่อปรากฏข้อความ Specify opposite corner: คลิกจุดที่ 4 เมื่อปรากฏข้อความ Select objects: ให้คลิกขวา

ทดสอบบล็อคในเบื้องต้นว่าสามารถยืดหรือหดได้หรือไม่ โดยคลิกบนปุ่ม Close Block Editor แล้วคลิกบนบล็อคให้ปรากฏจุดลูกศรดังรูปที่ 5 (ซ้าย) คลิกบนจุดลูกศรตรงจุดที่ 1 แล้วคลิกประมาณจุดที่ 2 บล็อคจะถูกยืดออกได้ ดังรูปที่ 5 (ขวา) แต่สังเกตุว่าขอบบานหน้าต่างที่อยู่ตรงกลาง ไม่อยู่ตรงกลางแล้ว เราสามารถแก้ไขได้ดังนี้

รูปที่ 5

ย้อนกลับไปทำซ้ำข้อ 2 จะปรากฏดังรูปที่ 6

รูปที่ 6

จากรูปที่ 6 คลิกบนแถบ Actions แล้วคลิกปุ่มไอคอน 1 Stretch Action เมื่อปรากฏข้อความ Select parameter: คลิกพารามิเตอร์จุดที่ 2 เมื่อปรากฏข้อความ Specify parameter point to associate with ให้กดปุ่ม Enter เมื่อปรากฏข้อความ Specify first corner of stretch frame ปิด OSNAP แล้วคลิกจุดที่ 3 เมื่อปรากฏข้อความ Specify opposite corner: คลิกจุดที่ 4 เมื่อปรากฏข้อความ Specify objects to stretch ให้เลือกวัตถุที่ต้องการยืดแบบ Crossing โดยคลิกจุดที่ 5 เมื่อปรากฏข้อความ Specify opposite corner: คลิกจุดที่ 6 เมื่อปรากฏข้อความ Select objects: ให้คลิกขวา เมื่อปรากฏข้อความ Specify action location คลิกตรงจุดที่ 7 เพื่อกำหนดตำแหน่งไอคอน Stretch จะปรากฏดังรูปที่ 7 (ซ้าย)

รูปที่ 7

จากรูปที่ 7 (ซ้าย) ใช้คำสั่ง Modify/Properties 1 คลิกไอคอน Stretch ตรงจุดที่ 2 แก้ไขค่า Distance Multiplierเป็น 0.5 ดังรูปที่ 7 (ขวา)

ทดสอบบล็อคต่อไปว่าขอบหน้าต่างอยู่ตรงกลางทุกๆ จุดที่เรายืดหรือหดบานหน้าต่างหรือไม่ โดยคลิกบนปุ่ม Close Block Editor แล้วคลิกบนบล็อคให้ปรากฏจุดลูกศรดังรูปที่ 8 (ซ้าย) 1 คลิกบนจุดลูกศร แล้ว 2 คลิกตำแหน่งใหม่ ขอบหน้าต่างจะปรากฏอยู่ตรงกลาง ไม่ว่าเราจะยืดหรือหดบล็อคไปเท่าใดก็ตาม ดังรูปที่ 8 (กลาง) และ (ขวา)

รูปที่ 8

หมายเหตุ จากตัวอย่างที่ผ่านมานี้ เมื่อเราปรับความกว้าง ของบานหน้าต่าง เราจะได้ขนาดที่เป็น ตัวเลขที่ไม่ลงตัว หากต้องการกำหนดขนาด ความกว้างของบาน หน้าต่าง ให้สามารถ ปรับขนาด ได้เฉพาะที่ต้องการ อาทิ เช่น 0.5, 1.00, 1.50, 2.00, 2.20, 2.50, 3.00 เราสามารถทำได้ดังนี้

รูปที่ 9

ย้อนกลับไปทำซ้ำข้อ 2 เพื่อเข้าสู่ Block Editor แล้วคลิกบนพารามิเตอร์ Distance แล้วใช้คำสั่ง Modify/Properties เลือก List ในแถบรายการ Dist type ในหมวด Value Set คลิกบนอิดิทบอกซ์ Dist Value List แล้วคลิกบนปุ่มจุด 3 จุด (ตรงจุดที่ 1 ของรูปที่ 9) จะปรากฏใดอรอค Add Distance Value แล้วเพิ่ม 0.5, 1.5, 2, 2.2, 2.5, 3 เข้าไปในใดอรอคดังรูปที่ 10 แล้วคลิกบนปุ่ม OK

รูปที่ 10

ทดสอบบล็อคต่อไปว่าระยะที่เรายืดหรือหดบานหน้าต่างตามที่เรากำหนดหรือไม่ โดยคลิกบนปุ่ม Close Block Editor โดยจะแสดงขีดระยะ 0.5, 1.5, 2, 2.2, 2.5, 3 ตามที่เรากำหนด ดังรูปที่ 11

รูปที่ 11

The END.


วันอาทิตย์ที่ 3 พฤศจิกายน พ.ศ. 2567

Pile Caps

Pile Caps.

 

วันอาทิตย์ที่ 20 ตุลาคม พ.ศ. 2567

Quick_Profile_III

 Quick_Profile_III.VLX

ตัวโปรแกรม Longitudinal Profile. จะประกอบด้วย 2 ส่วนด้วยกัน ดังรูปตัวอย่าง

   1. รายละเอียดเกี่ยวกับ การเลือกเส้นที่มีอยู่แล้วในแบบ Select Polyline จะต้องเป็นเส้นต่อเนื่อง Polyline เท่านั้น โปรแกรมจะทำการย้ายค่าความสูง Elevation ของเส้นให้อยู่ในระนาบ 0.0 แล้วสร้างเส้น 3Dpolyline ขึ้นมาใหม่ ณ. จุดตัดที่ลากเส้นผ่าน หรือลากเส้นตัดใหม่  Draw Ployline ให้ทำการลากเส้นต่อเนื่อง Polyline ตามที่ต้องการจนจบแล้ว Enter หรือ Esc เพื่อจบการลากเส้น

     2. รายละเอียดเกี่ยวกับการแสดงขนาดในแนวแกน X และ Y (Scale X,Y) ความสูงตัวอักษรจะสัมพันธ์กับค่า Y เช่นค่ามาตราส่วน Y = 5 ความสูงตัวอักษรจะเป็น 5 x 0.2 = 1.0

ส่วนที่ 1.1 Select Polyline คือการเลือกเส้นแนวตัด Profile ที่กำหนดในแบบ Contour ไว้แล้วต้องเป็นเส้น Polyline

 

ส่วนที่ 1.2 Draw Polyline คือการลากเส้นแนวตัดขึ้นมาใหม่ในแบบ Contour โดยกำหนดจุด P1 เป็นจุดเริ่มต้น และ P2 P3 P4 P5 …. จนจุดสุดท้าย Enter หรือ Esc เพื่อจบการลากเส้น 

วันอาทิตย์ที่ 21 เมษายน พ.ศ. 2567

Split 2 blocks

Split 2 blocks



 

split 2 blocks a

- Select block Fix Rectangle bolck.
- Select polyline split.
- Pick side to extrim.
- Erase the remaining lines.(window select only)









วันจันทร์ที่ 25 มีนาคม พ.ศ. 2567

How to setting Quick layout Multi size

How to setting Quick layout Multi size


ตามตัวอย่างจะมี Blocks A3 Landscape,A4 Landscape,A4 Portrail, scale 1:1 

1.เราจะทำการ Setting Page Setup Manager หน้า Layout1 โดยเลือกขนาดกระดาษ A3 Landscape Plot area เลือก Window window โดยเลือกตำแหน่ง Low Left ล่างซ้าย และ Top Right บนขวา และ Plot offset เลือก Center the plot และ Plot scale and Drawing Orentation กำหนดตามขนาดที่ต้องการ(ที่หน้า Layout ลบออกให้เหลือแค่ Layout1 เท่านั้น)

2.ใช้คำสั่ง Quick Layout เลือกขนาดกระดาษ A3 Landscape ที่ต้องการแล้ว Enter หน้า Viewport จะแสดงขึ้นมาเป็น 01 02 03 ตามลำดับ

3.ต่อไปก็เป็นกระดาษขนาด A4 Landscape ให้เราไปตั้งค่า Page Setup Manager ที่หน้า Layout1 ใหม่โดยเลือกขนาดกระดาษ A4 Landscape ตามข้อที่ 1 แล้วใช้คำสั่ง Quick Layout เลือกขนาดกระดาษ ตามข้อที่ 2 วนไปจนครบขนาดกระดาษที่เรามี


 

วันพุธที่ 20 มีนาคม พ.ศ. 2567

Change text attributes

CHange Text ATTributes 


 ;|

Edit width factor text height 

and rotation of attributes text

Create and Design by AutolispTH March 2024

|;

;;-----radial to dreegee

(defun rtod (x)

       (/ (* x 180) pi)

)

(defun dtor (x)

       (* x (/ pi 180))

)

(defun C:CHTAtt ( / e ent)

(vl-load-com)

(setq old_cmdecho  (getvar "cmdecho"))

(setvar "cmdecho" 0)

;-------------------width factor-----------------------------+

(or wd (setq wd 1.0))

 (setq wdtemp

        (getDist (strcat "\nEnter width factor of text: <"

                           (rtos wd 2 2)

                             ">: "

                ) 

        ) 

)

(and wdtemp (setq wd wdtemp))

;-------------------text height------------------------------+

(or th (setq th 1.0))

 (setq thtemp

        (getDist (strcat "\nEnter text height: <"

                           (rtos th 2 2)

                             ">: "

                ) 

        ) 

)

(and thtemp (setq th thtemp))

;--------------------text rotation---------------------------+

(or ro (setq ro 0.0))

 (setq rotemp

        (getDist (strcat "\nEnter text rotation: <"

                           (rtos ro 2 2)

                             ">: "

                ) 

        ) 

)

(and rotemp (setq ro rotemp))

;--------------------------------------------------------------+

(while (setq e (car (nentsel "\n Select an attribute to change:")))

(setq ent (vlax-ename->vla-object e))

(vla-put-scalefactor ent wd)

(vla-put-height ent th)

(vla-put-Rotation ent (dtor ro))

(princ)

)

(setvar "cmdecho" old_cmdecho)

(princ)

)

(prompt "\n\t\t\t  +------------------------------------------+\n")

(prompt "\n\t\t\t  |      Start with CHTATT to execute        |\n")

(prompt "\n\t\t\t  +------------------------------------------+\n")

วันพุธที่ 13 มีนาคม พ.ศ. 2567

Change Elv by attribute

 

;|

changes a blocks z coordinate to 

the elevation listed in attribute 

|;

(defun c:chbel()

(setq old_cmdecho  (getvar "cmdecho"))

(setvar "cmdecho" 0)

(setq SS (ssget '((0 . "INSERT")(66 . 1)))

  ucsf (getvar "ucsfollow")

)

(if (/= ss nil)

(progn

(setq ssl (sslength ss))

(setvar "ucsfollow" 0)

(if (/= 1 (getvar "worlducs"))(setq wucs 0)(setq wucs 1))

(command "ucs" "")

(setq numchg ssl

  n ssl

  newss (ssadd)

)

(while (> n 0)

(setq n (1- n)

  blk (ssname ss n)

)

(setq ent (vlax-ename->vla-object blk))

(setq atts (vla-getattributes ent))

(setq temp (vlax-variant-value atts))

(setq elem1 (vlax-safearray-get-element temp 0))

(setq el (atof (vla-get-textstring elem1)))

(command "CHANGE" blk "" "P" "E" el "")


);end while

(setq ssl (sslength newss)

  n ssl

)

(setq txt "blocks raised to elevation.")

(if (/= numchg 0)

(progn

(print numchg)

(princ txt)

)

(prompt "No blocks selected.")

)

)

(prompt "Empty selection set.")

)

(if (= 0 wucs)(command "ucs" "p"))

(setvar "ucsfollow" ucsf)

(setvar "cmdecho" old_cmdecho)

(princ)

);end defun

วันอังคารที่ 20 กุมภาพันธ์ พ.ศ. 2567

Quick Layout 2 By Blocks

Quick Layout 2 By Blocks


- ที่หน้า Layout1 สามารถตั้งค่า pagesetup ได้ตามต้องการเช่น Plotter Paper Size Plot Style Plot Area Plot Scale ต่างๆ ได้ตามต้องการโดยให้เป็นหน้ากระดาษเปล่าหรือใส่ Blocks หน้ากระดาษที่ต้องการก็ได้

- ส่วน Blocks ก็สร้างขนาดตาม Paper Size ที่กำหนดตามหน้า Layout1 โปรแรมจะทำการ copy หน้า Layout1 ไปเป็น 01 02 03 ...ไปเรื่อยๆจนครบหน้าที่ต้องการ


 

วันอาทิตย์ที่ 18 กุมภาพันธ์ พ.ศ. 2567

วันพฤหัสบดีที่ 8 กุมภาพันธ์ พ.ศ. 2567

วันพฤหัสบดีที่ 18 มกราคม พ.ศ. 2567