วันพุธที่ 30 พฤษภาคม พ.ศ. 2555

อ่านค่าตัวแปรจาก Dynamic Block ใน Autocad ด้วยC#

Autocad ตั้งแต่ 2007 เป็นต้นมาการใช้ Dynamic Block เป็นเรื่องปรกติและมีประโยชน์มาก
ในการเปลี่ยนค่า และ การแสดงผล ตามค่าที่ต้องการ เช่นหน้าต่าง ประตู
แต่เดิม ในการวางหน้าต่าง ประตู จะใช้ Block ตามชื่อของ หน้าต่าง เช่น หน้าต่าง 70cm ก็จะใช้
Block  WIN70 ก็จะรู้ว่ามีการวาง หน้าต่าง 70 cm กี่บาน จากการนับ Block แต่ตอนนี้ จะใช้ Block
เดียวที่เป็น Dynamic block และปรับค่าความกว้างของBlock แทน เมื่อนับ Block จะได้ Block เดียวกัน
หมด ไม่ต่างกัน จึงมี โจทย์ ว่าต้องการอ่านค่า ของ Dynamic Block ได้อย่างไร
ใน C# จะต้องใช้ Class DynamicBlockReferencePropertyCollection จัดเก็บเป็น Array ของ ตัวแปร Parameter ที่อยู่ใน Dynamic Block ตามโปรแกรมตัวอย่างนี้ จะเป็นการอ่าน ชื่อค่าแปร และ ค่าตัวแปร ออกมาใน Array ทั้ง 2  คือ paramName และ paraOut (ค่า) โดย Block ที่ส่งเข้าไปคือ br เมื่อเอา paraOut ไปใช้อย่าลืม .ToString() เพื่อเปลี่ยนเป็นตัวหนังสือก่อน







     public static int getDynBlockProperties(ref ArrayList paraName,ref ArrayList paraOut, BlockReference br)
        {
            // Only continue is we have a valid dynamic block
            int count = 0;
            if (br != null && br.IsDynamicBlock)
            {
                // Get the dynamic block's property collection
                DynamicBlockReferencePropertyCollection pc =
                  br.DynamicBlockReferencePropertyCollection;
                // Loop through, getting the info for each property
                foreach (DynamicBlockReferenceProperty prop in pc)
                {
                    // Start with the property name, type and description
                    count++;
                    paraName.Add(prop.PropertyName);
                    paraOut.Add(prop.Value);
                 
                }
            }
            return count;
        }

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

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