วันพฤหัสบดีที่ 17 กันยายน พ.ศ. 2558

การอ่านค่า Parameter จาก Object และ Type

Parameter ใน Revit มี 2 แบบ แบบที่อยู่ใน Family เรียกว่า ใน Type ยกตัวอย่างเช่นคาน จะมีความกว้าง(b) ลึก (h) เป็นต้น แต่ จะมี Parameter ที่เป็นเฉพาะของ คาน เช่น ความยาว หรือ Length
การอ่านค่า จะต้องแยก กัน

การอ่านค่า ของ Element หรือ Object

 // เริ่ม transaction
            trans.Start();
            // open entity
            Element ent = CachedDoc.GetElement(elementId);

            foreach (Parameter param in ent.Parameters)
            {
                   sParam += param.Definition.Name + "=" + param.AsString() + ",";
            }

            trans.Commit(); // Ok

สำหรับการอ่านค่า Parameter ของ Family (type) ต้อง อ่าน Type มาจาก Element
ent.GetTypeId()

 // เริ่ม transaction
            trans.Start();
            // open entity
            Element ent = CachedDoc.GetElement(elementId);
            Element eltype = CachedDoc.GetElement(ent.GetTypeId());
            foreach (Parameter param in eltype.Parameters)
            {
                     string valueStr =  param.AsString() ;
                    sParam += param.Definition.Name + "=" + valueStr + "\n";
             }
            trans.Commit(); // Ok

สำหรับใช้ Linq จะเหลือบรรทัดเดียว


         Element e = doc.GetElement( r );
          Parameter par1 = e.Parameters.Cast<Parameter>().Where(o => o.Definition.Name == "PE_CODE").First();


ในกรณีของ Family type Parameter ก็คือ Type
  Element eltype = doc.GetElement(el.GetTypeId());
        IList<Parameter> pparam = eltype.GetParameters("abcd); // ใช้ Search ตามชื่อ

            // ถ้ามีตัวเดียว ใช้ pparam[0];

                foreach (Parameter param in eltype.Parameters)
                { // ดูทุกตัว
                ..
            }
 



วันพุธที่ 16 กันยายน พ.ศ. 2558