วันอังคารที่ 8 มิถุนายน พ.ศ. 2564

AutoCAD - ใช้ VBA ใน EXCEL เพื่อแก้ไข Block Attribute ในไฟล์ CAD

      บทความนี้นำเสนอวิธีการใช้ VBA ใน EXCEL เพื่อแก้ไข Block Attribute ใน AutoCAD ซึ่งมีประโยชน์มากในการตรวจสอบและแก้ไข ชื่อ และเลขที่แบบ  ในที่นี้จะนำเสนอวิธีการใช้ไฟล์ที่เขียน CODE VBA ไว้แล้วเท่านั้น ไม่ได้ลงรายละเอียดถึงวิธีการเขียน CODE VBA

     ก่อนอื่นโหลดไฟล์ EXCEL ตาม Link นี้ >>>      

https://drive.google.com/file/d/1XVdQyHQAc_Es64-siMTf_A13pjYjPt-D/view?usp=sharing

     เมื่อเปิดไฟล์ EXCEL จะเห็นองค์ประกอบตามภาพต่อไปนี้


     ตำแหน่งที่ 1 - ช่อง B1 ใช้สำหรับใส่ Path ของ Folder ที่บรรจุไฟล์ CAD อยู่
     ตำแหน่งที่ 2 - รายการไฟล์ CAD ที่อยู่ใน Folder ที่ระบุในตำแหน่งที่ 1  ใช้ปุ่ม Read File ในการ Update รายการ
     ตำแหน่งที่ 3 - ชื่อ Block Attribute
     ตำแหน่งที่ 4 - รายการค่า Attribute ที่อ่านค่ามาจากไฟล์ CAD

วิธีการใช้งาน

    1. ใส่ที่อยู่ไฟล์

    
    
   2. กด Read File


    
   3. กด Read Attribute โปรแกรมจะเปิดไฟล์แรกในรายการขึ้นมา เพื่อดึง Field ของ Attribute  ให้เราใส่ชื่อ Block Attribute แล้วกด ok  จะแสดงรายการของค่า Attribute ใน sheet2 ของ excel


    
4. กลับมาที่ sheet1 ใน excel แล้วกด CAD to Excel เพื่ออ่านค่าAttribute ของทุกไฟล์ มาใส่ใน Excel  เมื่อโปรแกรมทำงานจบจะมีลักษณะดังภาพ  ( โปรแกรมจะเขียนค่าไว้ใน sheet3 ด้วย เพื่อเปรียบเทียบการเปลี่ยนแปลง )


5. ตอนนี้เราสามารถตรวจสอบและแก้ไขค่าต่างๆได้เลย  ค่าที่ถูกแก้ไขจะแสดงเป็นตัวสีแดง ตามภาพด้านล่าง
6. กดปุ่ม Excel to CAD เพื่อนำค่าไปใส่ใน CAD  เมื่อโปรแกรมทำงานจบ ตัวอักษรจะกลับมาเป็นสีดำเหมือนเดิม ตามภาพต่อไปนี้



     โปรแกรมนี้ถูกเขียนไว้นานปีมากแล้วอาจจะไม่สมบูรณ์มากนัก แต่ก็ใช้การได้ดีในระดับหนึ่ง  หากท่านใดสนใจก็สามารถนำไปพัฒนาต่อให้ดีกว่าเดิมได้  ส่วนที่น่าจะปรับปรุงก็เช่น ตอนที่นำค่าจาก Excel กลับไปใส่ใน CAD ณ ตอนนี้โปรแกรมจะเปิดทุกไฟล์ในรายการ แต่ในความเป็นจริงเราอาจไม่ได้แก้ไขทุกไฟล์  หากเขียนโปรแกรมให้เลือกเปิดเฉพาะไฟล์ที่มีการแก้ไข ก็จะประหยัดเวลาได้มาก     

SAP2000 - Time History Analysis เพื่อจำลองการตกกระแทกพื้นของวัตถุ

      จากบทความที่ผ่านมาเราได้เรียนรู้การใช้งานการวิเคราะห์แบบ Time History Analysis เพื่อวิเคราะห์การเคลื่อนไหว และ การใช้ Gap Element เพื่อจำลองการกระแทกของวัตถุ  ในบทความนี้เราจะเรียนรู้เพิ่มเติมอีกหนึ่งอย่างคือ การใช้ Joint Constrain เข้ามาช่วยแก้ปัญหา  ลองดูวิธีการตามวิดีโอต่อไปนี้




ไฟล์ Model .sdb >>>>>

https://drive.google.com/file/d/1OKqp_M7CKt-3Ip95YPUqPh3n9Njgwfce/view?usp=sharing

SAP2000 - Time History Analysis เพื่อจำลองการกระแทกของโครงสร้างแกว่งอิสระ

      ในบทความที่ผ่านมาเราได้ใช้การวิเคราะห์แบบ Time History Analysis ทำการวิเคราะห์โครงสร้างเพื่อจำลองการเคลื่อนไหวแบบแกว่งอิสระ  ในตัวอย่างนี้จะเพิ่มความซับซ้อนขึ้นมาอีกหน่อย คือเราจะเพิ่มโครงสร้างขึ้นมาอีกหนึ่งอัน และใช้ Gap Element เพื่อจำลองการกระแทกของโครงสร้าง  ติดตามชมได้ตามวิดีโอต่อไปนี้


     

    ไฟล์ model  .sdb>>>> https://drive.google.com/file/d/1u6KIg9EcSEnGRO_QORQJgLPEsRv4XabJ/view?usp=sharing

วันอาทิตย์ที่ 6 มิถุนายน พ.ศ. 2564

SAP2000 - วิเคราะห์โครงสร้างที่แกว่งไกวได้ โดยการวิเคราะห์แบบ Time History Analysis

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

     แต่ตัวอย่างนี้แสดงการวิเคราะห์ที่แตกต่างออกไป คือเป็นการวิเคราะห์โครงสร้างที่ Unstable หมายความว่าโครงสร้างเคลื่อนที่ได้นั่นเอง  วิธีที่ใช้ในการวิเคราะห์เรียกว่าการวิเคราะห์แบบประวัติเวลา หรือ Time History Analysis  ลองดูวิธีการตามวีดีโอต่อไปนี้



     link สำหรับ download ไฟล์ .sdb เผื่อท่านใดสนใจโหลดไปลอง run เล่นดูได้ครับ 


วันพฤหัสบดีที่ 3 มิถุนายน พ.ศ. 2564

การคำนวณ พื้นที่จากค่าพิกัดของเส้นรอบรูป

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



     
     เราจะทำการหาพื้นที่ในส่วนย่อยๆ ทีละคู่ของจุดพิกัด ตามภาพต่อไปนี้


     จากภาพด้านบน พื้นที่ A ที่เราต้องการหาค่า จะมีค่าเท่ากับ A1+A2-A3-A4  ตัวอย่างการคำนวณในโปรแกรม MathCAD แสดงดังต่อไปนี้


     
นอกจากจะหาพื้นที่ได้แล้ว วิธีในลักษณะเดียวกันนี้ยังประยุกต์ใช้หาคุณสมบัติหน้าตัดที่จำเป็นได้ทั้งหมด เช่น centroid และ moment of inertia เป็นต้น




















การคำนวณ inverse matrix โดยใช้วิธี gaussian elimination

      ก่อนอื่นลองใช้ MathCAD ช่วยหา Inverse ของ Matrix 3x3 ดังนี้


     ต่อไปลองใช้วิธี gaussian elimination ในการหา Inverse matrix เริ่มโดยสร้าง Augmented matrix โดยเอา Identity matrix มาต่อกับ matrix สัมประสิทธิ์ ดังนี้

     ต่อไปเราจะใช้วิธีการตามแบบ gaussian elimination เพื่อทำให้ matrix สัมประสิทธิ์กลายเป็น Identity matrix


     เริ่มโดยทำให้ค่า -1 ในตัวแรกของแถวที่ 2 เป็นศูนย์


      ต่อไปทำให้ค่า 2 ในตัวแรกของแถวที่ 3 เป็นศูนย์

     ต่อไปทำให้ค่า -3.5 ในตัวที่ 2 ของแถวที่ 3 เป็นศูนย์

     ต่อไปทำให้ค่า 1 ในตัวที่ 2 ของแถวที่ 1 เป็นศูนย์


     ต่อไปทำให้ค่า 3 ในตัวที่ 3 ของแถวที่ 1 เป็นศูนย์


     ต่อไปทำให้ค่า 7 ในตัวที่ 3 ของแถวที่ 2 เป็นศูนย์


     ต่อไปทำให้ค่า 5.144 ในตัวที่ 1 ของแถวที่ 1 มีค่าเป็น 1


     ต่อไปทำให้ค่า -0.735 ในตัวที่ 2 ของแถวที่ 2 มีค่าเป็น 1

     ต่อไปทำให้ค่า 1.286 ในตัวที่ 3 ของแถวที่ 3 มีค่าเป็น 1


     ตอนนี้เราได้ inverse matrix เรียบร้อยแล้ว







































วันพุธที่ 2 มิถุนายน พ.ศ. 2564

การคำนวณ แก้ระบบสมการเชิงเส้น โดยวิธี Gaussian elimination

     การแก้ระบบสมการเชิงเส้นที่จำนวนตัวแปร 2 หรือ 3 ตัว เราอาจจะสามารถใช้วิธีย้ายสมการและการแทนค่าในสมการ เพื่อหาคำตอบได้ โดยไม่ยุ่งยากนัก แต่หากจำนวนตัวแปรมีหลายตัวมากขึ้นการใช้วิธแทนค่าสมการจะยุ่งยากมาก  เราจึงใช้ระบบ Matrix ในการแก้ปัญหา ซึ่งการแก้ปัญหาโดยระบบ Matrix ก็มีหลายวิธีการ หนึ่งในนั้นคือวิธี Gaussian elimination ซึ่งเป็นวิธีที่เรียบง่าย จะว่าไปก็คล้ายกับการแทนค่าสมการ แต่เราจะทำเป็นระบบ  

     หลักการของวิธี Gaussian elimination คือ ทำให้ Matrix กลายเป็น Upper triangular matrix โดยใช้วิธีการดำเนินการที่ละคู่ของแถว ลองดูตามตัวอย่าง สมการ 3 ตัวแปร ต่อไปนี้



     เขียนในรูป Matrix
     

     สร้าง Augmented Matrix เพื่อเตรียมดำเนินการ โดยนำ vector ค่าคงที่ มาใส่เป็น column สุดท้ายของ matrix สัมประสิทธิ์


     เริ่มดำเนินการโดยทำให้ ค่าแรกของrow ที่ 2 ให้เป็นศูนย์  โดยนำ factor (3/-1)*(-1) คูณกับทั้งแถวของแถวที่ 2 แล้ว นำไปบวกกับแถวที่ 1  (จะเห็นว่าค่า factor ก็คือค่าตัวแรกของแถวที่ 1 หารด้วยค่าตัวแรกของแถวที่ 2 และคูณด้วย -1)
     ผลลัพธ์ของ augmented matrix เมื่อผ่านขั้นที่ 1

     ขั้นที่ 2 ทำค่าแรกของ row ที่ 3 ให้เป็นศูนย์  โดยนำ factor (3/2)*(-1) คูณกับทั้งแถวของแถวที่ 3 แล้ว นำไปบวกกับแถวที่ 1  

     ผลลัพธ์ของ augmented matrix เมื่อผ่านขั้นที่ 2


     ขั้นที่ 3 ทำค่าที่ 2 ของ row ที่ 3 ให้เป็นศูนย์  โดยนำ factor (4/-3.5)*(-1) คูณกับทั้งแถวของแถวที่ 3 แล้ว นำไปบวกกับแถวที่ 2

     ผลลัพธ์ของ augmented matrix เมื่อผ่านขั้นที่ 3  


    แตก augmented matrix กลับไปอยู่ในรูปสมการ จะเห็นว่า matrix สัมประสิทธิ์ กลายเป็น upper triangular matrix เรียบร้อยแล้ว


      ขั้นตอนต่อไปเรียกว่าการแทนค่าย้อนกลับ (Backward substitution)  โดยไล่มากจากแถวล่างสุดซึ่งเหลือตัวแปรเดียว

     หาตัวแปร y จากแถวที่ 2

     หาตัวแปร x จากแถวที่ 1
     เป็นอันว่าเสร็จสิ้นการแก้ระบบสมการเชิงเส้น

     บางตำรานิยามกระบวนการของวิธี Gaussian Elimination ไว้แค่เสร็จสิ้นขั้นตอนทำ upper triangular matrix  แต่เมื่อรวมกระบวนการ Backward substitution เข้าไปด้วยจะเรียกว่า Gauss-Jordan Elimination


     ลองตรวจคำตอบ โดยให้โปรแกรม MathCAD ช่วยหาคำตอบ โดยใช้ inverse ของ matrix สัมประสิทธิ์ คุณกับ vector ของค่าคงที่