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

Revit API 2016 กับ การเลือก Selection Object และ อ่าน Parameter

Revit API 16 มีการเปลี่ยน 2 จุดที่มีผลกระทบกับโปรแกรมเก่าๆ
ส่วนแรกคือการ Select Object ตอนนี้ จะไม่สามารถ ได้ Element โดยตรง ต้องเป็น ElementId (อันนี้ดี จะได้เป็น ระบบหน่อย)

การเลือกในปัจจุบัน


   ICollection<ElementId> collectionIds = uidoc.Selection.GetElementIds();
    List<Element> founds = new List<Element>();
                foreach (ElementId eid2 in collectionIds)
                {
                    try
                    {
                        Element e2 = doc.GetElement(eid2);
                        founds.Add(e2);
                    }
                    catch { }
                }


founds จะเป็น Array ของ Element อีกที

กรณี ต้องการ แสดง ตัวที่เลือกบนจอ เพื่อให้ Properties ทำงาน แสดงค่า Element นั้น
ต้องใช้เป็น SetElementIds( ..)

   ICollection<ElementId> sIds = uidoc.Selection.GetElementIds();
            sIds.Clear();
           sIds.Add(showElement.Id);
            uidoc.Selection.SetElementIds(sIds);


สำหรับ Parameter การอ่านค่าจะอณุญาติ ให้ 1 Parameter มี มากกว่า 1 ค่า 

  IList    <Parameter>  l4s = (Parameter)e1.GetParameters("Base Level");
ถ้ามีตัวเดียว ให้เลือก l4s.First();


กรณีเลือกทั้งหมด ใช้วิธี Filter
   FilteredElementCollector collector
              = new FilteredElementCollector(doc)
                .WhereElementIsNotElementType();

            foreach (Element e in collector)

            {
     // do something
            }



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

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