วันศุกร์ที่ 11 พฤศจิกายน พ.ศ. 2559

Revit API แปลง Units


แปลงจาก ฟุต เป็น เมตร 

double asMeter = UnitUtils.Convert(cl.Width, DisplayUnitType.DUT_DECIMAL_FEET, DisplayUnitType.DUT_METERS);

แสดง Unit ปัจจุบันใน Document

Units units = doc.GetUnits();
            string outStr = "";
            IList<UnitType> unitTypes = UnitUtils.GetValidUnitTypes();

          uL= unitTypes.Where(x => x.ToString() == "UT_Length").First();
         FormatOptions fmtOpts = units.GetFormatOptions(ut);
         string du = fmtOpts.DisplayUnits.ToString();

วันศุกร์ที่ 4 พฤศจิกายน พ.ศ. 2559

การอ่านค่าจาก Schedule API ใน Revit

Schedule API เป็น ส่วนที่เพิ่มเติมมาใหม่ใน Revit API 2014 โดยที่ผู้ใช้งาน สามารถ อ่านค่า จาก View มาได้ ทั้งชื่อชอง View และ Table ของ ตาราง

ViewSchedule จะเป็น class ลูกจาก View  โดยตารางจะอยู่ใน TableData ข้อมูล จะอยู่ใน
ชื่ออยู่ใน currentView.Name
SectionType.Body


ตัวอย่างนี้ จะออกเป็น CSV format

 View currentView = uDoc.ActiveView;

string vName = currentView.Name;  // Schedule name
            ViewSchedule vs = currentView as ViewSchedule;
            TableData vd = vs.GetTableData();
            TableSectionData tds = vd.GetSectionData(SectionType.Body);
            int rCount = tds.NumberOfRows;
            int rCol = tds.NumberOfColumns;
            string allSchAll = "";
            for (int i = 0; i < rCount; i++)
            {
                string sLine = "";
                for (int j = 0; j < rCol; j++)
                {
                    sLine += tds.GetCellText(i, j)+",";
                }
                allSchAll += sLine;
            }

            TaskDialog.Show("data", allSchAll);

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

การสร้าง Form ใน DDD ใน Revit

กรณีที่ต้องการ Form ของ c# ใน Revit ของ DDD ทำได้โดยการ Mouse ขวา และ Add Form ใหม่เข้าไปใน Solution

สร้าง Form โดย double click ที่ Form แล้ว Design ตามใจ

แล้วใน โปรแกรม หลัก ของ การเรียกเช่น Class1.cs
เพิ่ม Method ที่จะเรียก (callElemCat เป็นสมมติ)

หลังบรรทัด
using...
ให้เติม ชื่อของ Form ตามนี้ และ ใส่ .Designer.cs ด้วย

//css_import elemCatForm1.cs
//css_import elemCatForm1.Designer.cs

namespace RevitHello
{
    public class Class1
    {

// คำสั่งที่จะเรียกอยู่ที่นี้
        public static void callElemCat(ExternalCommandData commandData)
        {
            elemCatForm1 myform = new elemCatForm1();
            if (myform.ShowDialog == System.Windows.Forms.DialogResult.OK)
            {
                // ..process here
            }

        }
// จบคำสั่ง


เรียก DDD ใน Revit ก็ได้ Form


กรณีที่ จะให้ Form มี คำสั่ง ของ Revit ก็ using Autodesk.Revit... ตามปรกติ