Trung Tâm Revit Thực Hành NPD 4.4.2-Sửa đối tượng 601/1 Lô A, CMT8, P15, Q10, TP.HCM 6,000,000VND/Khóa +84-913-875-375 Trung Tâm Revit Thực Hành NPD

Ths.KTS NGUYỄN PHƯỚC DỰ

Tài liệu học Revit, Tác giả : ThS.KTS.Nguyễn Phước Dự


SỬA MỘT ĐỐI TƯỢNG TRONG FILE REVIT

 

 Chúng ta bắt đầu làm quen với cách chỉnh sửa một đối tượng. Muốn sửa một đối tượng thì cần phải chọn đối tượng, đọc thông tin đối tượng và cập nhật lại thông tin đó với giá trị mới. Một bản vẽ trong ngành xây dựng thì ai cung biết rằng thời gian sửa nhiều hơn thời gian tạo, bên cạnh đó việc chỉnh sửa dễ gây ra sai sót khi sửa nơi này quên nơi khác. Vì thế việc chỉnh sửa bằng Code gọi là sửa tự động luôn Code độ chính xác cao hơn.
 
Quá trình chỉnh sửa một đối tượng thật sự hữu ích sẽ mất rất nhiều thời gian, vì thế chúng tôi chọn một bài tập cắt tường có vẻ như không hữu ích lắm vì đã có lệnh Split của Revit cắt tường dễ dàng. Tuy nhiên bài tập này ngắn gọn và đơn giản phù hợp trong lúc chúng ta mới làm quen hơn.
 
Tất nhiên làm việc gì hữu ích thì cũng hứng thú hơn, vì thế chúng ta nhận ra rằng lệnh Split của Revit sau khi cắt tường ra làm đôi là một phần còn giữ nguyên thuộc tính ban đầu, phần thứ hai một số thuộc tính bị thay đổi. Nhân tiện làm bài tập chúng ta làm cho thuộc tính của hai tường sau khi tách làm đôi vẫn còn mang thuộc tính cũ.
 
[Code]
public Wall CatKieuTuong(Autodesk.Revit.DB.Document doc)
        {
            try
            {
                // Chọn 1 đối tượng tường                
                Reference elem =  uiApp.ActiveUIDocument.Selection.PickObject( ObjectType.Element, "Select a Wall");
                Wall wall = (Wall)doc.GetElement(elem.ElementId);
                // Chọn 1 điểm chỉ vị trí cần cắt
                ObjectSnapTypes snapTypes =  ObjectSnapTypes.Nearest;
                XYZ DiemCat =  uiApp.ActiveUIDocument.Selection. PickPoint(snapTypes, "Chọn điểm thứ hai");                
                 //Tự đọc thông tin Level và Kiểu tường
                ElementId level_Id = doc.ActiveView.GenLevel.Id;
                ElementId wallType_Id = wall.WallType.Id;
                // Đọc chiều cao đỉnh tường
                double height =  wall.LookupParameter( "Unconnected Height").AsDouble();
                // Đọc chiều cao chân tường
                double offset =  wall.LookupParameter( "Base Offset").AsDouble();
                // Đọc đường thẳng định vị tường
                LocationCurve DuongChuanTuong =  wall.Location as LocationCurve;
                // Đọc điểm đầu và cuối tường 
                XYZ start =  DuongChuanTuong.Curve.GetEndPoint(0);
                XYZ end = DuongChuanTuong.Curve.GetEndPoint(1);
               
                // Tạo đường thằng để nhận điểm chiếu
                Line DoanThangTong =  Line.CreateBound(start, end);
                // tìm hình chiếu điểm chọn trên đường thẳng
                IntersectionResult mid =  DoanThangTong.Project(DiemCat);
 
                // Bắt đàu tái tạo lại tường
                // Tạo đoạn thẳng curver để tạo lại đoạn                
                Line DoanThangDau =  Line.CreateBound(start, mid.XYZPoint);
                Line DoanThangCuoi =  Line.CreateBound(mid.XYZPoint, end);
                // thay đồi đường chuẩn tường hiện hữu
                DuongChuanTuong.Curve = DoanThangDau;
                // Vẽ một tường mới cho đoạn còn lại
                Wall.Create(doc, DoanThangCuoi,  wallType_Id, level_Id, height, offset, true, false);
                //Mở Form nhập dữ liệu
 
            }
            catch (Exception e)
            {
                TaskDialog.Show("Thông báo", e.Message);
            }
            //
            return null;
        }
[/Code]

 

 


Sách học Revit, Tác giả : ThS.KTS.Nguyễn Phước Dự

(Nhấn Ctrl+V để Paste ảnh từ Clipboard)
Khách Đăng nhập