ใน Code เป็นตัวอย่างการสร้าง พื้น8เหลี่ยม จะมีการสร้าง profile ก่อน แล้วจึงเลือก พื้น
public static void BatchCreateFloor(XYZ pt, Autodesk.Revit.DB.Document doc, Level level)
{ // ค้นเฉพาะพื้น
List<FloorType> fl = listFloor(doc);
int floorsides=8;// แปดเหลี่ยม
CurveArray profile = new CurveArray();
XYZ location=pt;
double floorradius=m2f(5);// รัศมี 5 เมตร
for (int i = 0; i < floorsides; i++)
{
double curAngle = i * Math.PI / floorsides * 2;
double nextAngle = (i < floorsides - 1 ? i + 1 : 0) * Math.PI / floorsides * 2;
XYZ curVertex = new XYZ(location.X + floorradius * Math.Cos(curAngle), location.Y + floorradius * Math.Sin(curAngle), location.Z);
XYZ nextVertex = new XYZ(location.X + floorradius * Math.Cos(nextAngle), location.Y + floorradius * Math.Sin(nextAngle), location.Z);
Line line = Line.CreateBound(curVertex,nextVertex);
profile.Append(line);
}
// เลือก
Autodesk.Revit.Creation.Document creation_doc = doc.Create;
// เอาตัวแรกมาวาด
creation_doc.NewFloor(profile, fl[0],level,true);
}
static List<FloorType> listFloor(Autodesk.Revit.DB.Document doc)
{
List<FloorType> m_FlTypeCollection = new List<FloorType>();
FilteredElementCollector filteredElementCollector = new FilteredElementCollector(doc);
filteredElementCollector.OfClass(typeof(FloorType));// กรองเฉพาะ พื้น
m_FlTypeCollection = filteredElementCollector.Cast<FloorType>().ToList<FloorType>();
return m_FlTypeCollection;
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น