วันศุกร์ที่ 28 สิงหาคม พ.ศ. 2558

การใช้ Revit Project Parameter สำหรับTrack Object ใน โครงการ

ในการทำงาน โครงการ ในหลายกรณี จำเป็นต้องมีการใส่ Track ลงในวัตถุ ของ Revit  เพื่อ ใช้ในการประมาณราคา การ Track time-line ก่อสร้าง เช่น เสา คาน พื้นเป็นต้น
การสร้าง Parameter ทำได้ไม่ยาก ไปที่

Manage->Project Parameters


โดยที่ Parameter จะมี2 ชนิด คือ Project Parameter กับ Share Parameter  , Project Param. จะอยู่เฉพาะ โครงการ, Share Param. จะ Save และส่งไปยังโครงการหรือ เครื่องอื่นได้
Parameter จะแสดง ใน 2 แบบ คือ Type กับ Instance , Type จะแสดงที่ตัว Family เอง เช่นเลือก เสา จะมี Parameter แสดงที่ Family นั้นๆ ทุกตัวที่ Family นี้วางไปมีค่า common เดียวกัน, Instance จะเป็นค่าที่เฉพาะตัวแต่ละ Element ที่วางไป จะแสดงใน Property

ในภาพแสดง Data ที่เป็น Project Parameter แบบ instance ที่จะใส่ได้ตาม แต่ละ Element เช่น ในเสา
ในบทความต่อไปจะเป็น การนำมาใช้งาน ในโดยการเรียกค่า Param  ในแต่ละ Element มาแสดงผล


การเปิด Element ใน Revit 2016 Api เปลี่ยนแปลง จาก 2014

ใน Revit2016 Api มีการเปลี่ยน การ access ไปยัง Element โดยจะไม่มีการให้การ Access ไปยัง Element ใด โดยตรง เช่น จาก Document จะเรียก Level ก็จะไม่ได้ แต่จะได้ Level element id แทน และ การ Pick Object ก็จะได้ Element Id จากเดิม สามารถเรียก Element ได้โดยตรง
โดย API เดิม ยกเลิก โดยสมบูรณ์ ใน 2016  ข้อดีคือ เขียนโปรแกรมเป็นระบบเดียวกันทั้งหมด
การ ปิด Element จึงต้องเปิดจาก Element Id

     Reference pickedObj = commandData.Application.ActiveUIDocument.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element, "Please select an element to move.");


     using (Transaction trans = new Transaction(doc, "ERead"))
            {
                // เริ่ม transaction
                trans.Start();
               // open entity
                Element ent = doc.GetElement(pickedObj.ElementId);
        // code here        
              
                trans.Commit(); // Ok
            }

กรณีที่เป็น Level  หรือ อื่นๆ จะใช้ Cast  (as  xxx) เพื่อเปลี่ยนเป็น Class Object ที่ต้องการ



 Level emlv =  doc.GetElement(e1.LevelId) as Level;